)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23512,"name":"Alexander Pugachev","email":"alexander.pugachev@workday.com","username":"alexander.pugachev"},"change_message_id":"5c9622c4eb8a14f56887b55e8ed5a7e9f055d3a5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: return overhead if isolate emulator threads requested"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Makes libvirt to determines whether or not a vCPU"},{"line_number":10,"context_line":"overhead should be take into account."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"implements blueprint libvirt-emulator-threads-policy"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da6895a0_be47181c","line":9,"range":{"start_line":9,"start_character":14,"end_line":9,"end_character":29},"updated":"2016-10-24 10:50:02.000000000","message":"to determine","commit_id":"3ef56f81d95a295a8ada6dd8a8f31d77c6c64fc7"},{"author":{"_account_id":23512,"name":"Alexander Pugachev","email":"alexander.pugachev@workday.com","username":"alexander.pugachev"},"change_message_id":"5c9622c4eb8a14f56887b55e8ed5a7e9f055d3a5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"libvirt: return overhead if isolate emulator threads requested"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Makes libvirt to determines whether or not a vCPU"},{"line_number":10,"context_line":"overhead should be take into account."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"implements blueprint libvirt-emulator-threads-policy"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da6895a0_1e5f24e6","line":10,"range":{"start_line":10,"start_character":16,"end_line":10,"end_character":24},"updated":"2016-10-24 10:50:02.000000000","message":"be taken","commit_id":"3ef56f81d95a295a8ada6dd8a8f31d77c6c64fc7"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5544c19fede3dc2bb7c393afcc71d43b15bb90c1","unresolved":false,"context_lines":[{"line_number":5912,"context_line":"        overhead \u003d drvr.estimate_instance_overhead(instance_info)"},{"line_number":5913,"context_line":"        self.assertEqual(1, overhead[\u0027vcpus\u0027])"},{"line_number":5914,"context_line":""},{"line_number":5915,"context_line":"    def test_estimate_instance_overhead_migrate(self):"},{"line_number":5916,"context_line":"        instance_info \u003d objects.Flavor(extra_specs\u003d{"},{"line_number":5917,"context_line":"            \u0027hw:cpu_emulator_threads_policy\u0027: ("},{"line_number":5918,"context_line":"                fields.CPUEmulatorThreadsPolicy.ISOLATE),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_a28800e9","line":5915,"range":{"start_line":5915,"start_character":4,"end_line":5915,"end_character":54},"updated":"2016-11-23 15:03:03.000000000","message":"I don\u0027t get what this test is doing, so I\u0027m getting \u0027estimate_instance_overhead\u0027 takes a flavor object for use in calculating usage when migrating? In any case, would a docstring briefly explaining the purpose of this test be possible?","commit_id":"f2ad27af0f16467fa182ddef81f6aad3a684b8e8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ec7cefd46a7544c1c69c70132aecd8aca934ea4d","unresolved":false,"context_lines":[{"line_number":5912,"context_line":"        overhead \u003d drvr.estimate_instance_overhead(instance_info)"},{"line_number":5913,"context_line":"        self.assertEqual(1, overhead[\u0027vcpus\u0027])"},{"line_number":5914,"context_line":""},{"line_number":5915,"context_line":"    def test_estimate_instance_overhead_migrate(self):"},{"line_number":5916,"context_line":"        instance_info \u003d objects.Flavor(extra_specs\u003d{"},{"line_number":5917,"context_line":"            \u0027hw:cpu_emulator_threads_policy\u0027: ("},{"line_number":5918,"context_line":"                fields.CPUEmulatorThreadsPolicy.ISOLATE),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_c5fbd6bf","line":5915,"in_reply_to":"5a74a57a_a28800e9","updated":"2016-12-05 12:28:51.000000000","message":"Basically, that method is going to be called by the resource_tracker in two different ways. claiming for a boot or claiming for a migration.\nWhen claiming resource for a boot we pass in estimate_instance_overhead a reference of an instance whereas for migration we pass an instance for flavor.\n\n...well actually this method is also call in other way to compute resource usages, in that case we pass a dict which provides the same keys than a flavor but I should probably add a test.","commit_id":"f2ad27af0f16467fa182ddef81f6aad3a684b8e8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5544c19fede3dc2bb7c393afcc71d43b15bb90c1","unresolved":false,"context_lines":[{"line_number":5914,"context_line":""},{"line_number":5915,"context_line":"    def test_estimate_instance_overhead_migrate(self):"},{"line_number":5916,"context_line":"        instance_info \u003d objects.Flavor(extra_specs\u003d{"},{"line_number":5917,"context_line":"            \u0027hw:cpu_emulator_threads_policy\u0027: ("},{"line_number":5918,"context_line":"                fields.CPUEmulatorThreadsPolicy.ISOLATE),"},{"line_number":5919,"context_line":"            \u0027hw:cpu_policy\u0027: fields.CPUAllocationPolicy.DEDICATED,"},{"line_number":5920,"context_line":"        })"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_a23ac034","line":5917,"range":{"start_line":5917,"start_character":46,"end_line":5917,"end_character":47},"updated":"2016-11-23 15:03:03.000000000","message":"nit: You don\u0027t need these brackets","commit_id":"f2ad27af0f16467fa182ddef81f6aad3a684b8e8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e9ee9d8dfba93b14ffb04fbe58a2448251580cd1","unresolved":false,"context_lines":[{"line_number":5957,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":5958,"context_line":"        overhead \u003d drvr.estimate_instance_overhead(instance_info)"},{"line_number":5959,"context_line":"        self.assertEqual(1, overhead[\u0027vcpus\u0027])"},{"line_number":5960,"context_line":""},{"line_number":5961,"context_line":"    @mock.patch.object(host.Host, \"list_instance_domains\")"},{"line_number":5962,"context_line":"    def test_list_instances(self, mock_list):"},{"line_number":5963,"context_line":"        vm1 \u003d FakeVirtDomain(id\u003d3, name\u003d\"instance00000001\")"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a30ddce_470fb387","line":5960,"updated":"2017-03-10 14:18:13.000000000","message":"Actually, could we get a negative test too? (CPUEmulatorThreadsPolicy.SHARE)","commit_id":"7985283e598b9555147ba7b90f3e0fab5c74350c"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":23512,"name":"Alexander Pugachev","email":"alexander.pugachev@workday.com","username":"alexander.pugachev"},"change_message_id":"5c9622c4eb8a14f56887b55e8ed5a7e9f055d3a5","unresolved":false,"context_lines":[{"line_number":675,"context_line":"            numa_topology \u003d hardware.instance_topology_from_instance("},{"line_number":676,"context_line":"                instance_info)"},{"line_number":677,"context_line":"            if numa_topology and numa_topology.is_emulator_threads_isolate():"},{"line_number":678,"context_line":"                overhead[\u0027vcpus\u0027] \u003d overhead[\u0027vcpus\u0027] + 1"},{"line_number":679,"context_line":"        else:"},{"line_number":680,"context_line":"            # A flavor object is passed during case of migrate"},{"line_number":681,"context_line":"            if (hardware.get_emulator_threads_constraint_from_flavor("}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_7e5ca0ed","line":678,"range":{"start_line":678,"start_character":34,"end_line":678,"end_character":57},"updated":"2016-10-24 10:50:02.000000000","message":"+\u003d 1","commit_id":"3ef56f81d95a295a8ada6dd8a8f31d77c6c64fc7"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5a9049f15ec5df112bd4441ea72fe4055dfaa4f7","unresolved":false,"context_lines":[{"line_number":675,"context_line":"            numa_topology \u003d hardware.instance_topology_from_instance("},{"line_number":676,"context_line":"                instance_info)"},{"line_number":677,"context_line":"            if numa_topology and numa_topology.is_emulator_threads_isolate():"},{"line_number":678,"context_line":"                overhead[\u0027vcpus\u0027] \u003d overhead[\u0027vcpus\u0027] + 1"},{"line_number":679,"context_line":"        else:"},{"line_number":680,"context_line":"            # A flavor object is passed during case of migrate"},{"line_number":681,"context_line":"            if (hardware.get_emulator_threads_constraint_from_flavor("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5da102_2993ef5c","line":678,"in_reply_to":"da6895a0_7e5ca0ed","updated":"2016-10-27 21:00:06.000000000","message":"I\u0027d say it\u0027s developer preferences, but yes I can update that point.","commit_id":"3ef56f81d95a295a8ada6dd8a8f31d77c6c64fc7"},{"author":{"_account_id":23512,"name":"Alexander Pugachev","email":"alexander.pugachev@workday.com","username":"alexander.pugachev"},"change_message_id":"5c9622c4eb8a14f56887b55e8ed5a7e9f055d3a5","unresolved":false,"context_lines":[{"line_number":681,"context_line":"            if (hardware.get_emulator_threads_constraint_from_flavor("},{"line_number":682,"context_line":"                    instance_info)"},{"line_number":683,"context_line":"                \u003d\u003d fields.CPUEmulatorThreadsPolicy.ISOLATE):"},{"line_number":684,"context_line":"                overhead[\u0027vcpus\u0027] \u003d overhead[\u0027vcpus\u0027] + 1"},{"line_number":685,"context_line":"        return overhead"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    def list_instances(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_3e0948de","line":684,"range":{"start_line":684,"start_character":34,"end_line":684,"end_character":57},"updated":"2016-10-24 10:50:02.000000000","message":"the same +\u003d 1","commit_id":"3ef56f81d95a295a8ada6dd8a8f31d77c6c64fc7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5544c19fede3dc2bb7c393afcc71d43b15bb90c1","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        except exception.NovaException:"},{"line_number":694,"context_line":"            return False"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"    def estimate_instance_overhead(self, instance_info):"},{"line_number":697,"context_line":"        overhead \u003d super(LibvirtDriver, self).estimate_instance_overhead("},{"line_number":698,"context_line":"            instance_info)"},{"line_number":699,"context_line":"        if isinstance(instance_info, objects.Instance):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_a2d640c3","line":696,"range":{"start_line":696,"start_character":0,"end_line":696,"end_character":56},"updated":"2016-11-23 15:03:03.000000000","message":"I don\u0027t know about how we handle these contracts, but isn\u0027t this something that we should expose in \u0027nova/virt/driver\u0027 as an interface (currently only implemented by libvirt)?","commit_id":"f2ad27af0f16467fa182ddef81f6aad3a684b8e8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5544c19fede3dc2bb7c393afcc71d43b15bb90c1","unresolved":false,"context_lines":[{"line_number":704,"context_line":"                overhead[\u0027vcpus\u0027] +\u003d 1"},{"line_number":705,"context_line":"        else:"},{"line_number":706,"context_line":"            # A flavor object is passed during case of migrate"},{"line_number":707,"context_line":"            if (hardware.get_emulator_threads_constraint_from_flavor("},{"line_number":708,"context_line":"                    instance_info)"},{"line_number":709,"context_line":"                \u003d\u003d fields.CPUEmulatorThreadsPolicy.ISOLATE):"},{"line_number":710,"context_line":"                overhead[\u0027vcpus\u0027] +\u003d 1"},{"line_number":711,"context_line":"        return overhead"},{"line_number":712,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_c2897ccc","line":709,"range":{"start_line":707,"start_character":0,"end_line":709,"end_character":60},"updated":"2016-11-23 15:03:03.000000000","message":"This looks incredibly hacky. Could we add a boolean function that does this check for us?","commit_id":"f2ad27af0f16467fa182ddef81f6aad3a684b8e8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ddc2292120a6905ff40bd852488afad0fc5c090","unresolved":false,"context_lines":[{"line_number":715,"context_line":"            instance_info)"},{"line_number":716,"context_line":"        if isinstance(instance_info, objects.Flavor):"},{"line_number":717,"context_line":"            # A flavor object is passed during case of migrate"},{"line_number":718,"context_line":"            # TODO(sahid): We do not have any way to retrieve the"},{"line_number":719,"context_line":"            # image meta related to the instance so if the cpu_policy"},{"line_number":720,"context_line":"            # has been set in image_meta we will get an"},{"line_number":721,"context_line":"            # exception. Until we fix it we specifically set the"},{"line_number":722,"context_line":"            # cpu_policy in dedicated in an ImageMeta object so if the"},{"line_number":723,"context_line":"            # emulator threads has been requested nothing is going to"},{"line_number":724,"context_line":"            # fail."},{"line_number":725,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict({\"properties\": {"},{"line_number":726,"context_line":"                \"hw_cpu_policy\": fields.CPUAllocationPolicy.DEDICATED,"},{"line_number":727,"context_line":"            }})"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a30ddce_27971f3b","line":724,"range":{"start_line":718,"start_character":0,"end_line":724,"end_character":19},"updated":"2017-03-10 14:16:33.000000000","message":"You\u0027d have avoided this problem had you kept the validity check out of the \u0027get_emulator_threads_constraint\u0027 function","commit_id":"7985283e598b9555147ba7b90f3e0fab5c74350c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ddc2292120a6905ff40bd852488afad0fc5c090","unresolved":false,"context_lines":[{"line_number":730,"context_line":"                \u003d\u003d fields.CPUEmulatorThreadsPolicy.ISOLATE):"},{"line_number":731,"context_line":"                overhead[\u0027vcpus\u0027] +\u003d 1"},{"line_number":732,"context_line":"        else:"},{"line_number":733,"context_line":"            # An instance object is passed during case of spawing or a"},{"line_number":734,"context_line":"            # dict is passed when computing resource for an instance"},{"line_number":735,"context_line":"            numa_topology \u003d hardware.instance_topology_from_instance("},{"line_number":736,"context_line":"                instance_info)"},{"line_number":737,"context_line":"            if numa_topology and numa_topology.emulator_threads_isolated:"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a30ddce_a7d94f24","line":734,"range":{"start_line":733,"start_character":0,"end_line":734,"end_character":68},"updated":"2017-03-10 14:16:33.000000000","message":"I wonder does this warrant a TODO to clean up that code path? Sounds like something we shouldn\u0027t be doing","commit_id":"7985283e598b9555147ba7b90f3e0fab5c74350c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5f14f8714ebcbbb0928f69a2719c44941d490b99","unresolved":false,"context_lines":[{"line_number":719,"context_line":"            # image meta related to the instance so if the cpu_policy"},{"line_number":720,"context_line":"            # has been set in image_meta we will get an"},{"line_number":721,"context_line":"            # exception. Until we fix it we specifically set the"},{"line_number":722,"context_line":"            # cpu_policy in dedicated in an ImageMeta object so if the"},{"line_number":723,"context_line":"            # emulator threads has been requested nothing is going to"},{"line_number":724,"context_line":"            # fail."},{"line_number":725,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict({\"properties\": {"}],"source_content_type":"text/x-python","patch_set":36,"id":"ffe62b97_d30308be","line":722,"updated":"2017-03-30 14:30:07.000000000","message":"s/in dedicated/to DEDICATED/","commit_id":"a1f87302afc963dbd3f4d16200a4c8f493cc167c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5f14f8714ebcbbb0928f69a2719c44941d490b99","unresolved":false,"context_lines":[{"line_number":727,"context_line":"            }})"},{"line_number":728,"context_line":"            if (hardware.get_emulator_threads_constraint("},{"line_number":729,"context_line":"                    instance_info, image_meta)"},{"line_number":730,"context_line":"                \u003d\u003d fields.CPUEmulatorThreadsPolicy.ISOLATE):"},{"line_number":731,"context_line":"                overhead[\u0027vcpus\u0027] +\u003d 1"},{"line_number":732,"context_line":"        else:"},{"line_number":733,"context_line":"            # An instance object is passed during case of spawing or a"}],"source_content_type":"text/x-python","patch_set":36,"id":"ffe62b97_b331a4a5","line":730,"updated":"2017-03-30 14:30:07.000000000","message":"nit: the above line should be indented one level further.","commit_id":"a1f87302afc963dbd3f4d16200a4c8f493cc167c"}]}
