)]}'
{"nova/scheduler/filter_scheduler.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1236dcd0e52728bb04decd8930a6e13ace960e6c","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            # TODO(sbauza): Temporary use of the old legacy dict until we"},{"line_number":173,"context_line":"            # modify HostManager to use the RequestSpec object"},{"line_number":174,"context_line":"            instance_properties \u003d spec_obj.to_legacy_request_spec_dict()["},{"line_number":175,"context_line":"                \u0027instance_properties\u0027]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"            chosen_host.obj.consume_from_instance(instance_properties)"},{"line_number":178,"context_line":"            if filter_properties.get(\u0027group_updated\u0027) is True:"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a26ad4f_3f7ecb19","side":"PARENT","line":175,"updated":"2015-10-30 00:55:00.000000000","message":"Ah, okay, you\u0027re removing this in this patch anyway, so nevermind :)","commit_id":"19dec06a7087d5a37ae1367f15017a68e0ef8e8a"}],"nova/scheduler/host_manager.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b600c753c5ab941083b694dba0e3313d55488d04","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        # NOTE(sbauza): Since now we are using an InstanceNUMATopology object,"},{"line_number":284,"context_line":"        # we can directly call the right method and not use the helpers and"},{"line_number":285,"context_line":"        # just provide a conditional until the host NUMA topology is correctly"},{"line_number":286,"context_line":"        # set."},{"line_number":287,"context_line":"        updated_numa_topology \u003d hardware.numa_usage_from_instances("},{"line_number":288,"context_line":"            host_numa_topology,"},{"line_number":289,"context_line":"            [instance_numa_topology] if instance_numa_topology else [])"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_34d89952","line":286,"updated":"2015-07-29 17:00:25.000000000","message":"can you either remove the helper here, or leave it so that this kind of hackage is only in one place. This is the opposite of where we want to be going!\n\nWe should really be using the proper NumaTopology objects in the host_state anyway.","commit_id":"087466dfef2799b2bda8f5f1b885adf986728e27"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"27b353d7b267d248ba05ca86ddaeb4cf3c699072","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                instance_cells \u003d spec_obj.numa_topology.cells"},{"line_number":292,"context_line":"            self.pci_stats.apply_requests(pci_requests, instance_cells)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        # NOTE(sbauza): Yeah, that\u0027s crap. We should get rid of all of those"},{"line_number":295,"context_line":"        # NUMA helpers because now we\u0027re 100% sure that spec_obj.numa_topology"},{"line_number":296,"context_line":"        # is an InstanceNUMATopology object. Unfortunately, since"},{"line_number":297,"context_line":"        # host_numa_topology is still limbo between an NUMATopology object, a"}],"source_content_type":"text/x-python","patch_set":30,"id":"da20952f_11e76513","line":294,"updated":"2015-09-02 15:01:57.000000000","message":"Aw, c\u0027mon, tell us how you *really* feel!  :)","commit_id":"fa373dd47996c544c903696d90489e37b0fcd160"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d1700b0f0bbf77efb4160a826f8ffb65c2280d1d","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        # NOTE(sbauza): Yeah, that\u0027s crap. We should get rid of all of those"},{"line_number":290,"context_line":"        # NUMA helpers because now we\u0027re 100% sure that spec_obj.numa_topology"},{"line_number":291,"context_line":"        # is an InstanceNUMATopology object. Unfortunately, since"},{"line_number":292,"context_line":"        # host_numa_topology is still limbo between an NUMATopology object, a"},{"line_number":293,"context_line":"        # ComputeNode object and a dictionary, we need to keep the call to"},{"line_number":294,"context_line":"        # get_host_numa_usage_from_instance until it\u0027s fixed (and use a"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a2fa921_9fb8d12b","line":291,"updated":"2015-10-09 11:44:13.000000000","message":"This is incorrect - we are sure about it - if we are sure about the hoststate too - we can just drop this and use objects.","commit_id":"0c944d0c76f39599257b92065e262ceb7889ce39"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9059489463ca54887c820a7e0c759a36c3e8c888","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        # NOTE(sbauza): Yeah, that\u0027s crap. We should get rid of all of those"},{"line_number":290,"context_line":"        # NUMA helpers because now we\u0027re 100% sure that spec_obj.numa_topology"},{"line_number":291,"context_line":"        # is an InstanceNUMATopology object. Unfortunately, since"},{"line_number":292,"context_line":"        # host_numa_topology is still limbo between an NUMATopology object, a"},{"line_number":293,"context_line":"        # ComputeNode object and a dictionary, we need to keep the call to"},{"line_number":294,"context_line":"        # get_host_numa_usage_from_instance until it\u0027s fixed (and use a"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a26ad4f_a7553b1e","line":291,"in_reply_to":"7a2fa921_9fb8d12b","updated":"2015-10-28 01:30:58.000000000","message":"Unless I misunderstood something (which is highly possible), the problem comes from the HostState.numa_topology attribute which is first pulled from the ComputeNode object (in update_from_compute_node) as a StringField so we still need the compat helper you provided.\n\nThat said, for sure, the spec_obj.numa_topology is now 100% an InstanceNUMATopology so I will update the comment to make clear that the issue comes from the HostState.numa_topology, not from this.","commit_id":"0c944d0c76f39599257b92065e262ceb7889ce39"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fb4b4316b46766c6cc53d8e2f556c14fdd2cd4f3","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        self.ram_allocation_ratio \u003d compute.ram_allocation_ratio"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @set_update_time_on_success"},{"line_number":255,"context_line":"    def consume_from_instance(self, spec_obj):"},{"line_number":256,"context_line":"        \"\"\"Incrementally update host state from an RequestSpec object.\"\"\""},{"line_number":257,"context_line":"        disk_mb \u003d (spec_obj.root_gb +"},{"line_number":258,"context_line":"                   spec_obj.ephemeral_gb) * 1024"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a26ad4f_c2b7c0d6","line":255,"updated":"2015-10-30 01:03:41.000000000","message":"Can we change the name of this method to consume_from_request_spec() now that the parameter has changed from an Instance object?","commit_id":"45ec37c91bf5d777603a70e37985ffd140576dc8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"88adfcabbd95729cff0377575b1170cf00e3d2eb","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        self.ram_allocation_ratio \u003d compute.ram_allocation_ratio"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @set_update_time_on_success"},{"line_number":255,"context_line":"    def consume_from_instance(self, spec_obj):"},{"line_number":256,"context_line":"        \"\"\"Incrementally update host state from an RequestSpec object.\"\"\""},{"line_number":257,"context_line":"        disk_mb \u003d (spec_obj.root_gb +"},{"line_number":258,"context_line":"                   spec_obj.ephemeral_gb) * 1024"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a26ad4f_88cec2b2","line":255,"in_reply_to":"1a26ad4f_c2b7c0d6","updated":"2015-10-30 05:29:12.000000000","message":"Ah, yeah, good point.","commit_id":"45ec37c91bf5d777603a70e37985ffd140576dc8"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2de738e7e7463721df859bfedfb6f0941a3127a4","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            # booting instance would fail in the resource claim of compute"},{"line_number":120,"context_line":"            # node, other suitable node may be chosen during scheduling retry."},{"line_number":121,"context_line":"            LOG.warning(_LW(\"Selected host: %(host)s failed to consume from \""},{"line_number":122,"context_line":"                            \"instance. Error: %(error)s\"),"},{"line_number":123,"context_line":"                        {\u0027host\u0027: self.host, \u0027error\u0027: e})"},{"line_number":124,"context_line":"        else:"},{"line_number":125,"context_line":"            now \u003d timeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a26ad4f_27c3c7ee","line":122,"updated":"2015-11-03 09:18:47.000000000","message":"nit, s/failed to consume from instance/failed to consume from request/","commit_id":"fd8c8138c22d06a40ce11017aa2ed4310035a39f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"28081a6d02c502fdab5b78ca3ecfbd9be4e1fb4a","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                                self)"},{"line_number":277,"context_line":"        instance_numa_topology \u003d spec_obj.numa_topology"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        spec_obj.numa_topology \u003d hardware.numa_fit_instance_to_host("},{"line_number":280,"context_line":"            host_numa_topology, instance_numa_topology,"},{"line_number":281,"context_line":"            limits\u003dself.limits.get(\u0027numa_topology\u0027),"},{"line_number":282,"context_line":"            pci_requests\u003dpci_requests, pci_stats\u003dself.pci_stats)"}],"source_content_type":"text/x-python","patch_set":37,"id":"fa80f949_d2e84419","line":279,"updated":"2015-11-03 09:38:06.000000000","message":"When I review the code at line 163 of https://review.openstack.org/#/c/197912/35/nova/scheduler/filter_scheduler.py\n\nI found numa_topology shouldn\u0027t to be saved also. Not sure this whether need to be handled at here.","commit_id":"fd8c8138c22d06a40ce11017aa2ed4310035a39f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"490b107b8b184960379ab0b6e56aba10709583b7","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                                self)"},{"line_number":277,"context_line":"        instance_numa_topology \u003d spec_obj.numa_topology"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        spec_obj.numa_topology \u003d hardware.numa_fit_instance_to_host("},{"line_number":280,"context_line":"            host_numa_topology, instance_numa_topology,"},{"line_number":281,"context_line":"            limits\u003dself.limits.get(\u0027numa_topology\u0027),"},{"line_number":282,"context_line":"            pci_requests\u003dpci_requests, pci_stats\u003dself.pci_stats)"}],"source_content_type":"text/x-python","patch_set":37,"id":"fa80f949_32c8a574","line":279,"in_reply_to":"fa80f949_afa42e08","updated":"2015-11-03 14:26:35.000000000","message":"Okay, after a bit of chatting in IRC, Alex\u0027s point is that the NUMA helper method (hardware.numa_fit_instance_to_host) just wedges any other parallel request like large pages in the same user request because it writes back only what was fitted for the instance, not the other stuff.\n\nGiven that, it sounds not related to my change (I\u0027m just changing the attribute, but both are mutable) but I wonder if I should rename the assigment to a temporary variable, like fitted_numa_topology that would be called below.","commit_id":"fd8c8138c22d06a40ce11017aa2ed4310035a39f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4800177db4964652251bc9e901630cf3e9f90efd","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                                self)"},{"line_number":277,"context_line":"        instance_numa_topology \u003d spec_obj.numa_topology"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        spec_obj.numa_topology \u003d hardware.numa_fit_instance_to_host("},{"line_number":280,"context_line":"            host_numa_topology, instance_numa_topology,"},{"line_number":281,"context_line":"            limits\u003dself.limits.get(\u0027numa_topology\u0027),"},{"line_number":282,"context_line":"            pci_requests\u003dpci_requests, pci_stats\u003dself.pci_stats)"}],"source_content_type":"text/x-python","patch_set":37,"id":"fa80f949_afa42e08","line":279,"in_reply_to":"fa80f949_d2e84419","updated":"2015-11-03 14:01:33.000000000","message":"Not sure I understand your point Alex, could you please clarify ?","commit_id":"fd8c8138c22d06a40ce11017aa2ed4310035a39f"}],"nova/tests/unit/scheduler/test_host_manager.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fb4b4316b46766c6cc53d8e2f556c14fdd2cd4f3","unresolved":false,"context_lines":[{"line_number":912,"context_line":"            pci_requests\u003dobjects.InstancePCIRequests(requests\u003d[]))"},{"line_number":913,"context_line":"        second_host_numa_topology \u003d mock.Mock()"},{"line_number":914,"context_line":"        numa_usage_mock.return_value \u003d second_host_numa_topology"},{"line_number":915,"context_line":"        numa_fit_mock.return_value \u003d second_numa_topology"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"        host.consume_from_instance(spec_obj)"},{"line_number":918,"context_line":"        self.assertEqual(2, host.num_instances)"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a26ad4f_c22ca004","line":915,"updated":"2015-10-30 01:03:41.000000000","message":"Might be nice to move the repeated code above into a helper _create_request_spec() function.","commit_id":"45ec37c91bf5d777603a70e37985ffd140576dc8"}]}
