)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f6c1e06c4f6a960c03254af1a9e412a711300bf7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"objects: Add PCI NUMA policy fields"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add the requisite policy field to \u0027InstacePCIRequests\u0027 for the"},{"line_number":10,"context_line":"aforementioned feature. We also add a missing \u0027super\u0027 call for the"},{"line_number":11,"context_line":"\u0027obj_make_compatible\u0027 function of this object and add the missing unit"},{"line_number":12,"context_line":"tests for same."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf8cb3f7_74c69019","line":9,"range":{"start_line":9,"start_character":35,"end_line":9,"end_character":53},"updated":"2017-12-20 15:59:20.000000000","message":"InstancePCIRequest","commit_id":"0cd858b4ab6a500cb6c20447bd7bc1c7136e1bc5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3b46c3b91b128ee13de8bb3e63a4cbff3f3ef96b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"objects: Add PCI NUMA policy fields"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add the requisite policy field to \u0027InstacePCIRequests\u0027 for the"},{"line_number":10,"context_line":"aforementioned feature. We also add a missing \u0027super\u0027 call for the"},{"line_number":11,"context_line":"\u0027obj_make_compatible\u0027 function of this object and add the missing unit"},{"line_number":12,"context_line":"tests for same."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf8cb3f7_8fd78124","line":9,"range":{"start_line":9,"start_character":35,"end_line":9,"end_character":53},"in_reply_to":"bf8cb3f7_74c69019","updated":"2017-12-20 16:15:39.000000000","message":"Grr. Foiled again","commit_id":"0cd858b4ab6a500cb6c20447bd7bc1c7136e1bc5"}],"nova/objects/fields.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0bac5e102ac6ec7add9269623eec273e9fe18a5f","unresolved":false,"context_lines":[{"line_number":737,"context_line":"class PCINUMAAffinityPolicy(BaseNovaEnum):"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"    REQUIRED \u003d \"required\""},{"line_number":740,"context_line":"    LEGACY \u003d \"legacy\""},{"line_number":741,"context_line":"    PREFERRED \u003d \"preferred\""},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"    ALL \u003d (REQUIRED, LEGACY, PREFERRED)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_22e2dc04","line":740,"range":{"start_line":740,"start_character":4,"end_line":740,"end_character":21},"updated":"2017-12-22 14:17:21.000000000","message":"Say we wanna remove that option from the Enum in a later cycle, how do you see the impact for the object ? I guess we could say to just deprecate that choice so the existing instances using that policy wouldn\u0027t need to be either destroyed or modified, but meh, maybe it\u0027s just a nit.","commit_id":"0cd858b4ab6a500cb6c20447bd7bc1c7136e1bc5"}],"nova/objects/instance_numa_topology.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5db52c96a0ec665e59c9c558db6634234c608850","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":168,"context_line":"        \u0027emulator_threads_policy\u0027: ("},{"line_number":169,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField(nullable\u003dTrue)),"},{"line_number":170,"context_line":"        \u0027pci_numa_policy\u0027: obj_fields.PCINUMAAffinityPolicyField("},{"line_number":171,"context_line":"            nullable\u003dTrue),"},{"line_number":172,"context_line":"        }"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_dc498960","line":171,"range":{"start_line":170,"start_character":0,"end_line":171,"end_character":27},"updated":"2017-12-14 20:15:34.000000000","message":"I mentioned this on the other patch, but this is not IMHO the correct place to put this attribute. The PCI NUMA policy isn\u0027t an attribute of the InstanceNUMATopology. Rather, it\u0027s an attribute of the *request* and therefore belongs on the InstancePCIRequest or RequestSpec object.\n\nI\u0027m not actually sure why the emulator_threads_policy attribute is on the InstanceNUMATopology object either. IMHO, both of those attributes belong on the RequestSpec object. They are only used when determining scheduler/placement activities and are not actually attributes of the NUMATopology object itself.","commit_id":"232fb5215357e4fd26e4a14f01101dd36f7019a3"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7dfce6fc5c2d654cd01bc6b57778228dfd63d167","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":168,"context_line":"        \u0027emulator_threads_policy\u0027: ("},{"line_number":169,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField(nullable\u003dTrue)),"},{"line_number":170,"context_line":"        \u0027pci_numa_policy\u0027: obj_fields.PCINUMAAffinityPolicyField("},{"line_number":171,"context_line":"            nullable\u003dTrue),"},{"line_number":172,"context_line":"        }"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_fc280d98","line":171,"range":{"start_line":170,"start_character":0,"end_line":171,"end_character":27},"in_reply_to":"df87a7cf_dc498960","updated":"2017-12-14 20:40:22.000000000","message":"If we go that route, arguably the cpu policy and cpu thread policy could go in the RequestSpec object as well, for the same reason.\n\nI suspect that the emulator_threads_policy was placed on the InstanceNUMATopology object because the cpu and cpu thread policy were already there.  Also, down in numa_fit_instance_to_host() we don\u0027t have the RequestSpec object but we do have the instance_topology object.\n\nAs for PCI...I was in favor of making the numa-affinity per-requested-device (and thus on InstancePCIRequest I think) but was shot down.","commit_id":"232fb5215357e4fd26e4a14f01101dd36f7019a3"}],"nova/objects/instance_pci_requests.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f6c1e06c4f6a960c03254af1a9e412a711300bf7","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        # on major version bump"},{"line_number":36,"context_line":"        \u0027is_new\u0027: fields.BooleanField(default\u003dFalse),"},{"line_number":37,"context_line":"        \u0027request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":38,"context_line":"        \u0027numa_policy\u0027: fields.PCINUMAAffinityPolicyField(nullable\u003dTrue),"},{"line_number":39,"context_line":"    }"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def obj_load_attr(self, attr):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_f4b0608e","line":38,"range":{"start_line":38,"start_character":9,"end_line":38,"end_character":20},"updated":"2017-12-20 15:59:20.000000000","message":"numa_affinity_policy maybe? though I can\u0027t think of any other NUMA-related policy than \"affinity\" so I suppose it\u0027s fine to leave this as just numa_policy.","commit_id":"0cd858b4ab6a500cb6c20447bd7bc1c7136e1bc5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3b46c3b91b128ee13de8bb3e63a4cbff3f3ef96b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        # on major version bump"},{"line_number":36,"context_line":"        \u0027is_new\u0027: fields.BooleanField(default\u003dFalse),"},{"line_number":37,"context_line":"        \u0027request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":38,"context_line":"        \u0027numa_policy\u0027: fields.PCINUMAAffinityPolicyField(nullable\u003dTrue),"},{"line_number":39,"context_line":"    }"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def obj_load_attr(self, attr):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_af1a8514","line":38,"range":{"start_line":38,"start_character":9,"end_line":38,"end_character":20},"in_reply_to":"bf8cb3f7_f4b0608e","updated":"2017-12-20 16:15:39.000000000","message":"My thoughts exactly. No point being too long-winded about this","commit_id":"0cd858b4ab6a500cb6c20447bd7bc1c7136e1bc5"}],"nova/tests/unit/objects/test_instance_numa_topology.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"6c994519c77abd23d5d2fad062f3976fb60176b5","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        primitive \u003d topo_obj.obj_to_primitive(target_version\u003d\u00271.3\u0027,"},{"line_number":196,"context_line":"                                              version_manifest\u003dversions)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        self.assertNotIn(\u0027pci_numa_policy\u0027, primitive)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def test_cpuset_reserved(self):"},{"line_number":201,"context_line":"        topology \u003d objects.InstanceNUMATopology("}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_ea8cf680","line":198,"range":{"start_line":198,"start_character":8,"end_line":198,"end_character":54},"updated":"2017-12-13 02:34:21.000000000","message":"This test also passes when the `target_version` is changed to \u00271.4\u0027, which means we are checking nothing. We should use `primitive[\u0027nova_object.data\u0027]` instead of just `primitive`. It is good checking not only primitive but also object using obj_from_primitive() just as well as above pre 1.3 checking function?","commit_id":"e07430623c38f179917ba5648e03881820d15253"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"498426c7a11c9fa945a81fa9551c35360e5f5fcc","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        primitive \u003d topo_obj.obj_to_primitive(target_version\u003d\u00271.3\u0027,"},{"line_number":196,"context_line":"                                              version_manifest\u003dversions)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        self.assertNotIn(\u0027pci_numa_policy\u0027, primitive)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def test_cpuset_reserved(self):"},{"line_number":201,"context_line":"        topology \u003d objects.InstanceNUMATopology("}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_cf66db2a","line":198,"range":{"start_line":198,"start_character":8,"end_line":198,"end_character":54},"in_reply_to":"df87a7cf_ea8cf680","updated":"2017-12-13 09:28:48.000000000","message":"Ha! I actually fixed this in https://review.openstack.org/#/c/426261/ and forgot about it here. Good spot.","commit_id":"e07430623c38f179917ba5648e03881820d15253"}]}
