)]}'
{"nova/compute/resource_tracker.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"bb8fa03906cb518256b95a6dddb3c9df0bdbe50a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                help\u003d\u0027The names of the extra resources to track.\u0027),"},{"line_number":56,"context_line":"    cfg.BoolOpt(\u0027use_reported_resources\u0027,"},{"line_number":57,"context_line":"                default\u003dFalse,"},{"line_number":58,"context_line":"                help\u003d\u0027The host will report the actual utilization of the resources. \u0027"},{"line_number":59,"context_line":"                     \u0027If this is enabled then use the actual host resources.\u0027)"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_dc931959","line":58,"updated":"2014-10-06 11:03:58.000000000","message":"E501 line too long (85 \u003e 79 characters)","commit_id":"a752d4da047a3a05c8bd865a135a9d4f592e0259"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c53244bd98084a8999749bd8dba3ed22b8995840","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                help\u003d\u0027The names of the extra resources to track.\u0027),"},{"line_number":56,"context_line":"    cfg.BoolOpt(\u0027use_reported_resources\u0027,"},{"line_number":57,"context_line":"                default\u003dFalse,"},{"line_number":58,"context_line":"                help\u003d\u0027The host will report the actual utilization of the resources. \u0027"},{"line_number":59,"context_line":"                     \u0027If this is enabled then use the actual host resources.\u0027)"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_df94eb8c","line":58,"in_reply_to":"baa201ad_dc931959","updated":"2014-10-06 11:31:33.000000000","message":"Done","commit_id":"a752d4da047a3a05c8bd865a135a9d4f592e0259"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"24072cba6f66f7648b608e0cfb0d9213f42482e7","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if not CONF.use_reported_resources:"},{"line_number":95,"context_line":"            self._update_resources \u003d self._update_available_resource"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self._update_resources \u003d self._update_available_from_host"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":100,"context_line":"    def instance_claim(self, context, instance_ref, limits\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_df6b0b1c","line":97,"updated":"2014-10-06 11:52:11.000000000","message":"I\u0027m not really convinced that having two separate code paths toggled via a global config parameter is a good idea, because I don\u0027t think the end admin user is in a good position to decide which setting for the config parameter is appropriate for them.\n\nI\u0027m curious why we are ignoring the reported resources in the first place ? What is the resource tracker doing here, that the virt drivers were not satisfying. Can we just fix the virt drivers and delete the code in the resource tracker, so we keep a single codepath for this.","commit_id":"8cb7c6c94a3149213873bfc5ae880be470d49e68"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f29c44d9051343427038f80e6e51928f8b0091ce","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if not CONF.use_reported_resources:"},{"line_number":95,"context_line":"            self._update_resources \u003d self._update_available_resource"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self._update_resources \u003d self._update_available_from_host"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":100,"context_line":"    def instance_claim(self, context, instance_ref, limits\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_10ef40ea","line":97,"in_reply_to":"baa201ad_82104a5a","updated":"2014-10-06 13:25:40.000000000","message":"OK Daniel, thanks for the explanations. Well, either we do one way or another, but I really want to not have 2 different methods for calculating the resources which complicates the problem instead of reudcing it.","commit_id":"8cb7c6c94a3149213873bfc5ae880be470d49e68"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"83bf5091947df645518b88fdd649b12ea6ba2edc","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if not CONF.use_reported_resources:"},{"line_number":95,"context_line":"            self._update_resources \u003d self._update_available_resource"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self._update_resources \u003d self._update_available_from_host"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":100,"context_line":"    def instance_claim(self, context, instance_ref, limits\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_82104a5a","line":97,"in_reply_to":"baa201ad_a25d4e7b","updated":"2014-10-06 12:37:53.000000000","message":"@sylvain: Actually I said the opposite to that. IMHO the resource tracker should just always honour what the virt drivers report, otherwise what\u0027s the point in them reporting this at all in the first place ?  So I\u0027m saying delete the existing _update_available_from_host method entirely and just use the virt driver info. If one of the virt drivers had a problem that required the resource tracker to ignore the info it reported, then lets fix that virt driver, not make the resource tracker ignore what the virt drivers report.","commit_id":"8cb7c6c94a3149213873bfc5ae880be470d49e68"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"826a4862e5f43998c98f2af526c0f8ec05d901f9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if not CONF.use_reported_resources:"},{"line_number":95,"context_line":"            self._update_resources \u003d self._update_available_resource"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self._update_resources \u003d self._update_available_from_host"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":100,"context_line":"    def instance_claim(self, context, instance_ref, limits\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_6506101f","line":97,"in_reply_to":"baa201ad_a25d4e7b","updated":"2014-10-06 12:39:10.000000000","message":"Sylvia, this is not a specific VMware issue. It is an OpenStack issue.\nThe fact that VMware enables the user to actually see the used resource accentuated the problem. If you look at libvirt or hyperv or any other driver you will see that it is the same\n\n We have a resource tracker that ignores values that are returned by the hypervisor.\n\nThis is really problematic and will lead to false positive scheduling. In actual fact we will be using hosts that are not fully utilized \u003d\u003e was of useful resources and in turn having a cloud that is not cost affective to run. In the worst case encouraging people to use Amazon as it will be cheaper.....","commit_id":"8cb7c6c94a3149213873bfc5ae880be470d49e68"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f587c353288bdc49c64ab776e1a32ec326fb6e8d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if not CONF.use_reported_resources:"},{"line_number":95,"context_line":"            self._update_resources \u003d self._update_available_resource"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self._update_resources \u003d self._update_available_from_host"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":100,"context_line":"    def instance_claim(self, context, instance_ref, limits\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_a25d4e7b","line":97,"in_reply_to":"baa201ad_df006b36","updated":"2014-10-06 12:29:28.000000000","message":"I really dislike injecting code path using a global var because it obfuscates the code and generates possible mistakes by omissions.\n\nAs Dan said, if it\u0027s a VMWare driver issue (as per the bug mentioned), we need to figure out why this is not correctly reported instead of bypassing the existing code.","commit_id":"8cb7c6c94a3149213873bfc5ae880be470d49e68"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5de0df54c6961d95a2bec0b0e3a40f45ddcbd281","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if not CONF.use_reported_resources:"},{"line_number":95,"context_line":"            self._update_resources \u003d self._update_available_resource"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self._update_resources \u003d self._update_available_from_host"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":100,"context_line":"    def instance_claim(self, context, instance_ref, limits\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_df006b36","line":97,"in_reply_to":"baa201ad_df6b0b1c","updated":"2014-10-06 11:56:49.000000000","message":"i have no idea why we are ignoring the values. honestly it is backward for the resource tracker to calculate these. not only is this incorrect, it also leads to many false positives.  if I recall correctly there was a flag on xen that was not enabled (but I am not sure)\nwhen we spoke about this at the HK summit this was the direction that the guys suggested that we take.\ni think that this is a sufficient stop gap to enable one to be able to make use of the actual hypervisor stats.\nnot only are the value reported not in line with those of the hypervisor, it is also very costly to calculate.","commit_id":"8cb7c6c94a3149213873bfc5ae880be470d49e68"}],"nova/tests/compute/test_resource_tracker.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"bb8fa03906cb518256b95a6dddb3c9df0bdbe50a","unresolved":false,"context_lines":[{"line_number":708,"context_line":"        expected \u003d {\"resA\": \"123\", \"resB\": 12}"},{"line_number":709,"context_line":"        self.assertEqual(sorted(expected),"},{"line_number":710,"context_line":"                         sorted(resources[\u0027stats\u0027]))"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"class TrackerUseHostResourcesTestCase(BaseTrackerTestCase):"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_3ca345b3","line":711,"updated":"2014-10-06 11:03:58.000000000","message":"E302 expected 2 blank lines, found 1","commit_id":"a752d4da047a3a05c8bd865a135a9d4f592e0259"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c53244bd98084a8999749bd8dba3ed22b8995840","unresolved":false,"context_lines":[{"line_number":708,"context_line":"        expected \u003d {\"resA\": \"123\", \"resB\": 12}"},{"line_number":709,"context_line":"        self.assertEqual(sorted(expected),"},{"line_number":710,"context_line":"                         sorted(resources[\u0027stats\u0027]))"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"class TrackerUseHostResourcesTestCase(BaseTrackerTestCase):"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_7ff13f00","line":711,"in_reply_to":"baa201ad_3ca345b3","updated":"2014-10-06 11:31:33.000000000","message":"Done","commit_id":"a752d4da047a3a05c8bd865a135a9d4f592e0259"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"bb8fa03906cb518256b95a6dddb3c9df0bdbe50a","unresolved":false,"context_lines":[{"line_number":712,"context_line":"class TrackerUseHostResourcesTestCase(BaseTrackerTestCase):"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"    def setUp(self):"},{"line_number":715,"context_line":"        self.flags(use_reported_resources\u003dTrue)        "},{"line_number":716,"context_line":"        super(TrackerUseHostResourcesTestCase, self).setUp()"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"    def test_update_compute_node(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_9cb7d1f4","line":715,"range":{"start_line":715,"start_character":47,"end_line":715,"end_character":55},"updated":"2014-10-06 11:03:58.000000000","message":"Please remove redundant whitespace at the end of line.","commit_id":"a752d4da047a3a05c8bd865a135a9d4f592e0259"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c53244bd98084a8999749bd8dba3ed22b8995840","unresolved":false,"context_lines":[{"line_number":712,"context_line":"class TrackerUseHostResourcesTestCase(BaseTrackerTestCase):"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"    def setUp(self):"},{"line_number":715,"context_line":"        self.flags(use_reported_resources\u003dTrue)        "},{"line_number":716,"context_line":"        super(TrackerUseHostResourcesTestCase, self).setUp()"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"    def test_update_compute_node(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_bfde476b","line":715,"in_reply_to":"baa201ad_9cb7d1f4","updated":"2014-10-06 11:31:33.000000000","message":"Done","commit_id":"a752d4da047a3a05c8bd865a135a9d4f592e0259"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"bb8fa03906cb518256b95a6dddb3c9df0bdbe50a","unresolved":false,"context_lines":[{"line_number":720,"context_line":"        self.assertTrue(self.updated)"},{"line_number":721,"context_line":""},{"line_number":722,"context_line":"    def test_init(self):"},{"line_number":723,"context_line":"        driver \u003d self._driver()"},{"line_number":724,"context_line":"        self._assert(FAKE_VIRT_MEMORY_MB, \u0027memory_mb\u0027)"},{"line_number":725,"context_line":"        self._assert(FAKE_VIRT_LOCAL_GB, \u0027local_gb\u0027)"},{"line_number":726,"context_line":"        self._assert(0, \u0027vcpus\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_5ca8098d","line":723,"range":{"start_line":723,"start_character":8,"end_line":723,"end_character":14},"updated":"2014-10-06 11:03:58.000000000","message":"F841 local variable \u0027driver\u0027 is assigned to but never used","commit_id":"a752d4da047a3a05c8bd865a135a9d4f592e0259"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c53244bd98084a8999749bd8dba3ed22b8995840","unresolved":false,"context_lines":[{"line_number":720,"context_line":"        self.assertTrue(self.updated)"},{"line_number":721,"context_line":""},{"line_number":722,"context_line":"    def test_init(self):"},{"line_number":723,"context_line":"        driver \u003d self._driver()"},{"line_number":724,"context_line":"        self._assert(FAKE_VIRT_MEMORY_MB, \u0027memory_mb\u0027)"},{"line_number":725,"context_line":"        self._assert(FAKE_VIRT_LOCAL_GB, \u0027local_gb\u0027)"},{"line_number":726,"context_line":"        self._assert(0, \u0027vcpus\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_ffe44f3d","line":723,"in_reply_to":"baa201ad_5ca8098d","updated":"2014-10-06 11:31:33.000000000","message":"Done","commit_id":"a752d4da047a3a05c8bd865a135a9d4f592e0259"}]}
