)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"ccf37c1520364d963e22bd693908d25edbaa6395","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     istolber \u003cinbar.stolberg@nokia.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-01-09 13:55:27 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Author: Inbar Stolberg"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes server rebuild if NumaTopologyFilter is used with CPU pinning"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dfd5e7cf_1ab85374","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":22},"updated":"2019-01-09 22:50:44.000000000","message":"The first line should be a brief description of the change in this patch.","commit_id":"9a05a0d43ab9a30d2566ceb082ae2575d4f8e484"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"ccf37c1520364d963e22bd693908d25edbaa6395","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes server rebuild if NumaTopologyFilter is used with CPU pinning"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"details in: https://bugs.launchpad.net/nova/+bug/1804502"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug #1804502"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dfd5e7cf_faac6f36","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":56},"updated":"2019-01-09 22:50:44.000000000","message":"IMO, it is not necessary because of the \u0027Closes-Bug\u0027.","commit_id":"9a05a0d43ab9a30d2566ceb082ae2575d4f8e484"}],"nova/scheduler/filters/numa_topology_filter.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"ccf37c1520364d963e22bd693908d25edbaa6395","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            # during rebuild operation there is always a place"},{"line_number":97,"context_line":"            # to fit the vm on the host where the instance is currently residing"},{"line_number":98,"context_line":"            if utils.request_is_rebuild(spec_obj):"},{"line_number":99,"context_line":"                LOG.debug(\"Skipping numa topology placement on host {} \""},{"line_number":100,"context_line":"                          \"due to rebuild operation\""},{"line_number":101,"context_line":"                          .format(host_state.host),"},{"line_number":102,"context_line":"                          instance_uuid\u003dspec_obj.instance_uuid)"},{"line_number":103,"context_line":"                return True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            if network_metadata:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfd5e7cf_9ae443ae","line":102,"range":{"start_line":99,"start_character":0,"end_line":102,"end_character":63},"updated":"2019-01-09 22:50:44.000000000","message":"String interpolation should be delayed to be handled by the logging code, rather than being done at the point of the logging call. So it should be as follows.\n\n  LOG.debug(\"Skipping numa topology placement on host %(host)s \"\n            \"due to rebuild operation\",\n            {\u0027host\u0027: host_state.host}\n            instance_uuid\u003dspec_obj.instance_uuid)","commit_id":"9a05a0d43ab9a30d2566ceb082ae2575d4f8e484"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"81a6637a374b3f5fad216030ebcefddc77dd679c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                cpu_allocation_ratio\u003dcpu_ratio,"},{"line_number":94,"context_line":"                ram_allocation_ratio\u003dram_ratio)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            # during rebuild operation there is always a place"},{"line_number":97,"context_line":"            # to fit the vm on the host where the instance is currently residing"},{"line_number":98,"context_line":"            if utils.request_is_rebuild(spec_obj):"},{"line_number":99,"context_line":"                LOG.debug(\"Skipping numa topology placement on host %(host)s \""},{"line_number":100,"context_line":"                          \"due to rebuild operation\","},{"line_number":101,"context_line":"                          {\u0027host\u0027: host_state.host},"},{"line_number":102,"context_line":"                          instance_uuid\u003dspec_obj.instance_uuid)"},{"line_number":103,"context_line":"                return True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            if network_metadata:"},{"line_number":106,"context_line":"                limits.network_metadata \u003d network_metadata"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_f9204bb3","line":103,"range":{"start_line":96,"start_character":10,"end_line":103,"end_character":27},"updated":"2019-01-10 22:12:32.000000000","message":"this is not true if the image changed and the image specifcys a different numa toplogy or cpu tread policy.\n\nif the image did not change we do not go back to the scheduler and dont hit this code.","commit_id":"ee9836e27df630d962e935af3cc065ffcbddc71e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a58b965e4f42de9fa797ffa1601a17dbd16488a6","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                cpu_allocation_ratio\u003dcpu_ratio,"},{"line_number":94,"context_line":"                ram_allocation_ratio\u003dram_ratio)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            # during rebuild operation there is always a place"},{"line_number":97,"context_line":"            # to fit the vm on the host where the instance is currently residing"},{"line_number":98,"context_line":"            if utils.request_is_rebuild(spec_obj):"},{"line_number":99,"context_line":"                LOG.debug(\"Skipping numa topology placement on host %(host)s \""},{"line_number":100,"context_line":"                          \"due to rebuild operation\","},{"line_number":101,"context_line":"                          {\u0027host\u0027: host_state.host},"},{"line_number":102,"context_line":"                          instance_uuid\u003dspec_obj.instance_uuid)"},{"line_number":103,"context_line":"                return True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            if network_metadata:"},{"line_number":106,"context_line":"                limits.network_metadata \u003d network_metadata"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_445e4ee7","line":103,"range":{"start_line":96,"start_character":10,"end_line":103,"end_character":27},"in_reply_to":"bfdaf3ff_046606ef","updated":"2019-01-10 22:42:44.000000000","message":"@inbar if you look at the code i linked\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/hardware.py#n1120\n\nif the image metadata conflicts with the flavor we raise exceptions.\n\nnova does not treat image metadata requests as  hints for the most part.\n\ni the past i.e. over 3 years ago we used to prefer to allow flavor extra spec to take presadence over image metadata for a limited set but we activly chose to change that arount the kilo release.\n\neven with the old model if ther ewas a request in the flavor or image and we coudl not fufill that request we woudl actively reject booting the instance. if you know of a specific instance where that is not ture today it is a bug.","commit_id":"ee9836e27df630d962e935af3cc065ffcbddc71e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"53048d8d7b400cc661d132083eea4933fb6728a0","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                cpu_allocation_ratio\u003dcpu_ratio,"},{"line_number":94,"context_line":"                ram_allocation_ratio\u003dram_ratio)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            # during rebuild operation there is always a place"},{"line_number":97,"context_line":"            # to fit the vm on the host where the instance is currently residing"},{"line_number":98,"context_line":"            if utils.request_is_rebuild(spec_obj):"},{"line_number":99,"context_line":"                LOG.debug(\"Skipping numa topology placement on host %(host)s \""},{"line_number":100,"context_line":"                          \"due to rebuild operation\","},{"line_number":101,"context_line":"                          {\u0027host\u0027: host_state.host},"},{"line_number":102,"context_line":"                          instance_uuid\u003dspec_obj.instance_uuid)"},{"line_number":103,"context_line":"                return True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            if network_metadata:"},{"line_number":106,"context_line":"                limits.network_metadata \u003d network_metadata"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_046606ef","line":103,"range":{"start_line":96,"start_character":10,"end_line":103,"end_character":27},"in_reply_to":"bfdaf3ff_f9204bb3","updated":"2019-01-10 22:25:36.000000000","message":"Sean\u0027s right - we can\u0027t just essentially skip this filter for a rebuild. We had a whole CVE saga ([1] [2] and [3]) that resulted in L27 being added, specifically to run rebuild requests through the scheduler to avoid someone rebuilding with a new image on the same compute host to circumvent restrictions on that host/image combo. So we definitely need to run rebuild requests through the NUMATopologyFilter.\n\n[1] https://bugs.launchpad.net/nova/+bug/1664931\n[2] https://bugs.launchpad.net/nova/+bug/1744325\n[3] https://bugs.launchpad.net/nova/+bug/1746032","commit_id":"ee9836e27df630d962e935af3cc065ffcbddc71e"},{"author":{"_account_id":29781,"name":"Inbar Stolberg","email":"inbar.stolberg@nokia.com","username":"istolber"},"change_message_id":"b2541248bccc41b70805f58c85ec7f05e861a4c2","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                cpu_allocation_ratio\u003dcpu_ratio,"},{"line_number":94,"context_line":"                ram_allocation_ratio\u003dram_ratio)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            # during rebuild operation there is always a place"},{"line_number":97,"context_line":"            # to fit the vm on the host where the instance is currently residing"},{"line_number":98,"context_line":"            if utils.request_is_rebuild(spec_obj):"},{"line_number":99,"context_line":"                LOG.debug(\"Skipping numa topology placement on host %(host)s \""},{"line_number":100,"context_line":"                          \"due to rebuild operation\","},{"line_number":101,"context_line":"                          {\u0027host\u0027: host_state.host},"},{"line_number":102,"context_line":"                          instance_uuid\u003dspec_obj.instance_uuid)"},{"line_number":103,"context_line":"                return True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            if network_metadata:"},{"line_number":106,"context_line":"                limits.network_metadata \u003d network_metadata"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_043da6ba","line":103,"range":{"start_line":96,"start_character":10,"end_line":103,"end_character":27},"in_reply_to":"bfdaf3ff_f9204bb3","updated":"2019-01-10 22:24:34.000000000","message":"if the image was not changed then we don\u0027t go to scheduler which is great since it would  have failed without this code.\n\nif we changed the topology in the image note that the image hints are recommendation not enforcement to my knowledge.\n\nregardless it would fail if needed in the compute in that scenario due to placement.\n\nto implement what you are suggesting will require omitting the vm (with previous topology) from the host and reapply it which is information that is currently not available to the scheduler.","commit_id":"ee9836e27df630d962e935af3cc065ffcbddc71e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53eb0efb7973387bf9b1751a38683d313faed56c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                cpu_allocation_ratio\u003dcpu_ratio,"},{"line_number":94,"context_line":"                ram_allocation_ratio\u003dram_ratio)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            # during rebuild operation there is always a place"},{"line_number":97,"context_line":"            # to fit the vm on the host where the instance is currently residing"},{"line_number":98,"context_line":"            if utils.request_is_rebuild(spec_obj):"},{"line_number":99,"context_line":"                LOG.debug(\"Skipping numa topology placement on host %(host)s \""},{"line_number":100,"context_line":"                          \"due to rebuild operation\","},{"line_number":101,"context_line":"                          {\u0027host\u0027: host_state.host},"},{"line_number":102,"context_line":"                          instance_uuid\u003dspec_obj.instance_uuid)"},{"line_number":103,"context_line":"                return True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            if network_metadata:"},{"line_number":106,"context_line":"                limits.network_metadata \u003d network_metadata"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_a4629ad7","line":103,"range":{"start_line":96,"start_character":10,"end_line":103,"end_character":27},"in_reply_to":"bfdaf3ff_f9204bb3","updated":"2019-01-10 22:25:21.000000000","message":"to be more specific the image can change teh thread pinning policy be setting the metadata valude defiened here.\nhttps://github.com/openstack/glance/blob/master/etc/metadefs/compute-cpu-pinning.json#L32-L41\n\nit can also set the number of numa nodes via the image here\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/hardware.py#n1251\n\nthe hw_numa_mem and hw_numa_cpus values can also be set\nwhich correspond to the hw:numa_mem* and hw:numa_cpus* extrapaces\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/hardware.py#n1221 and http://git.openstack.org/cgit/openstack/nova/tree/nova/virt/hardware.py#n1191\n\nwe also support setting the gusest hw:mem_page_size or hw_mem_page_size\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/hardware.py#n1120\n\nall of the above need to be revaluated on rebuild.\n\nunfortunetly the hw_numa* are not documented in the glance metadefs as they should be but the mem page size is\n\nhttps://github.com/openstack/glance/blob/master/etc/metadefs/compute-guest-memory-backing.json#L22-L28","commit_id":"ee9836e27df630d962e935af3cc065ffcbddc71e"}]}
