)]}'
{"nova/objects/request_spec.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f177d802e5d9f1ca709ef42d187f8f771e33533","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        if \u0027project_id\u0027 not in self or self.project_id is None:"},{"line_number":453,"context_line":"            self.project_id \u003d instance.project_id"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    def ensure_user_id(self, instance):"},{"line_number":456,"context_line":"        if \u0027user_id\u0027 not in self or self.user_id is None:"},{"line_number":457,"context_line":"            self.user_id \u003d instance.user_id"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_14e10a2b","line":455,"range":{"start_line":455,"start_character":8,"end_line":455,"end_character":22},"updated":"2018-04-30 21:10:58.000000000","message":"I\u0027m on the fence about calling this out specifically versus just putting it into ensure_project_id. If we put it in ensure_project_id then the existing callers get it for free, although having it separate is more clear.","commit_id":"5806d84257b99910fe3df602c334181a2c5b2795"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"20153adbe2760eceb73b3e7e3f113b5caf71f42c","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        if \u0027project_id\u0027 not in self or self.project_id is None:"},{"line_number":453,"context_line":"            self.project_id \u003d instance.project_id"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    def ensure_user_id(self, instance):"},{"line_number":456,"context_line":"        if \u0027user_id\u0027 not in self or self.user_id is None:"},{"line_number":457,"context_line":"            self.user_id \u003d instance.user_id"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_745966fc","line":455,"range":{"start_line":455,"start_character":8,"end_line":455,"end_character":22},"in_reply_to":"9f6a8fd7_14e10a2b","updated":"2018-04-30 21:12:37.000000000","message":"For example, you missed cold migrate:\n\nhttps://github.com/openstack/nova/blob/19dd4eb883b557b9482b4467c074210591c6413c/nova/conductor/tasks/migrate.py#L222\n\nSo I\u0027d say let\u0027s just include it in ensure_project_id, and if you don\u0027t like that, rename ensure_project_id to ensure_project_and_user_id.","commit_id":"5806d84257b99910fe3df602c334181a2c5b2795"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"d84c84682ecec5e5ade5642ec09a4b7f65e293f0","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        if \u0027project_id\u0027 not in self or self.project_id is None:"},{"line_number":453,"context_line":"            self.project_id \u003d instance.project_id"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    def ensure_user_id(self, instance):"},{"line_number":456,"context_line":"        if \u0027user_id\u0027 not in self or self.user_id is None:"},{"line_number":457,"context_line":"            self.user_id \u003d instance.user_id"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_7483a605","line":455,"range":{"start_line":455,"start_character":8,"end_line":455,"end_character":22},"in_reply_to":"9f6a8fd7_745966fc","updated":"2018-04-30 21:23:46.000000000","message":"I will use ensure_project_and_user_id which is more explicit.","commit_id":"5806d84257b99910fe3df602c334181a2c5b2795"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f177d802e5d9f1ca709ef42d187f8f771e33533","unresolved":false,"context_lines":[{"line_number":642,"context_line":"        instance.flavor, instance.numa_topology,"},{"line_number":643,"context_line":"        instance.pci_requests,"},{"line_number":644,"context_line":"        {}, None, instance.availability_zone,"},{"line_number":645,"context_line":"        project_id\u003dinstance.project_id"},{"line_number":646,"context_line":"    )"},{"line_number":647,"context_line":"    scheduler_utils.setup_instance_group(context, request_spec)"},{"line_number":648,"context_line":"    request_spec.create()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_9443da13","line":645,"range":{"start_line":645,"start_character":8,"end_line":645,"end_character":38},"updated":"2018-04-30 21:10:58.000000000","message":"You need to also pass user_id\u003dinstance.user_id here.","commit_id":"5806d84257b99910fe3df602c334181a2c5b2795"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"d84c84682ecec5e5ade5642ec09a4b7f65e293f0","unresolved":false,"context_lines":[{"line_number":642,"context_line":"        instance.flavor, instance.numa_topology,"},{"line_number":643,"context_line":"        instance.pci_requests,"},{"line_number":644,"context_line":"        {}, None, instance.availability_zone,"},{"line_number":645,"context_line":"        project_id\u003dinstance.project_id"},{"line_number":646,"context_line":"    )"},{"line_number":647,"context_line":"    scheduler_utils.setup_instance_group(context, request_spec)"},{"line_number":648,"context_line":"    request_spec.create()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_54ca226e","line":645,"range":{"start_line":645,"start_character":8,"end_line":645,"end_character":38},"in_reply_to":"9f6a8fd7_9443da13","updated":"2018-04-30 21:23:46.000000000","message":"Good catch. Will fix.","commit_id":"5806d84257b99910fe3df602c334181a2c5b2795"}],"nova/tests/unit/objects/test_request_spec.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f177d802e5d9f1ca709ef42d187f8f771e33533","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        self.assertNotIn(\u0027security_groups\u0027, primitive)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def test_compat_user_id(self):"},{"line_number":631,"context_line":"        req_obj \u003d objects.RequestSpec(user_id\u003dfakes.FAKE_PROJECT_ID)"},{"line_number":632,"context_line":"        versions \u003d ovo_base.obj_tree_get_versions(\u0027RequestSpec\u0027)"},{"line_number":633,"context_line":"        primitive \u003d req_obj.obj_to_primitive(target_version\u003d\u00271.8\u0027,"},{"line_number":634,"context_line":"                                             version_manifest\u003dversions)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_14ba6a09","line":631,"updated":"2018-04-30 21:10:58.000000000","message":"Put a project_id in the object and then below assert project_id is in the primitive in addition to asserting that user_id is not in the primitive.","commit_id":"5806d84257b99910fe3df602c334181a2c5b2795"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"d84c84682ecec5e5ade5642ec09a4b7f65e293f0","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        self.assertNotIn(\u0027security_groups\u0027, primitive)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def test_compat_user_id(self):"},{"line_number":631,"context_line":"        req_obj \u003d objects.RequestSpec(user_id\u003dfakes.FAKE_PROJECT_ID)"},{"line_number":632,"context_line":"        versions \u003d ovo_base.obj_tree_get_versions(\u0027RequestSpec\u0027)"},{"line_number":633,"context_line":"        primitive \u003d req_obj.obj_to_primitive(target_version\u003d\u00271.8\u0027,"},{"line_number":634,"context_line":"                                             version_manifest\u003dversions)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_34a20e9c","line":631,"in_reply_to":"9f6a8fd7_14ba6a09","updated":"2018-04-30 21:23:46.000000000","message":"This is a typo and should read FAKE_USER_ID. What\u0027s the purpose of testing project_id? Shouldn\u0027t I test more fields in that case?","commit_id":"5806d84257b99910fe3df602c334181a2c5b2795"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fb8b25e3254ad289e971d6c088df375f21ffa6b6","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        self.assertNotIn(\u0027security_groups\u0027, primitive)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def test_compat_user_id(self):"},{"line_number":631,"context_line":"        req_obj \u003d objects.RequestSpec(user_id\u003dfakes.FAKE_PROJECT_ID)"},{"line_number":632,"context_line":"        versions \u003d ovo_base.obj_tree_get_versions(\u0027RequestSpec\u0027)"},{"line_number":633,"context_line":"        primitive \u003d req_obj.obj_to_primitive(target_version\u003d\u00271.8\u0027,"},{"line_number":634,"context_line":"                                             version_manifest\u003dversions)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_54678252","line":631,"in_reply_to":"9f6a8fd7_34a20e9c","updated":"2018-04-30 21:29:46.000000000","message":"\u003e What\u0027s the purpose of testing project_id? Shouldn\u0027t I test more fields in that case?\n\nJust to make sure the primitive is what we\u0027d expect and not something like {} or {\u0027nova.object_data\u0027: {}}.","commit_id":"5806d84257b99910fe3df602c334181a2c5b2795"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"df03fdd7eff8eecaf6156de71e6995e1d5c84274","unresolved":false,"context_lines":[{"line_number":633,"context_line":"        primitive \u003d req_obj.obj_to_primitive(target_version\u003d\u00271.8\u0027,"},{"line_number":634,"context_line":"                                             version_manifest\u003dversions)"},{"line_number":635,"context_line":"        self.assertNotIn(\u0027user_id\u0027, primitive)"},{"line_number":636,"context_line":"        self.assertIn(\u0027project_id\u0027, primitive)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    def test_default_requested_destination(self):"},{"line_number":639,"context_line":"        req_obj \u003d objects.RequestSpec()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f6a8fd7_487da61a","line":636,"updated":"2018-04-30 22:16:36.000000000","message":"This won\u0027t work if project_id isn\u0027t set in req_obj above, or does it default to None?","commit_id":"ddc2fced27e82d427b06601926c46318a5fcab7d"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"6844e1b110172056c3ca62eab026733999985199","unresolved":false,"context_lines":[{"line_number":633,"context_line":"        primitive \u003d req_obj.obj_to_primitive(target_version\u003d\u00271.8\u0027,"},{"line_number":634,"context_line":"                                             version_manifest\u003dversions)"},{"line_number":635,"context_line":"        self.assertNotIn(\u0027user_id\u0027, primitive)"},{"line_number":636,"context_line":"        self.assertIn(\u0027project_id\u0027, primitive)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    def test_default_requested_destination(self):"},{"line_number":639,"context_line":"        req_obj \u003d objects.RequestSpec()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f6a8fd7_88e97e81","line":636,"in_reply_to":"9f6a8fd7_487da61a","updated":"2018-04-30 22:29:56.000000000","message":"AFAIK, it should default to None. But I don\u0027t know if obj_to_primitive strip keys with None values. I will update and explicitly pass project_id to above RequestSpec instance.","commit_id":"ddc2fced27e82d427b06601926c46318a5fcab7d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"529d644fb3664e868b2e6157d6f22f74bf198b6e","unresolved":false,"context_lines":[{"line_number":634,"context_line":"        primitive \u003d req_obj.obj_to_primitive(target_version\u003d\u00271.8\u0027,"},{"line_number":635,"context_line":"                                             version_manifest\u003dversions)"},{"line_number":636,"context_line":"        self.assertNotIn(\u0027user_id\u0027, primitive)"},{"line_number":637,"context_line":"        self.assertIn(\u0027project_id\u0027, primitive)"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"    def test_default_requested_destination(self):"},{"line_number":640,"context_line":"        req_obj \u003d objects.RequestSpec()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_7eff0067","line":637,"updated":"2018-05-01 01:48:08.000000000","message":"This is exactly why I asked for this:\n\ntesttools.matchers._impl.MismatchError: \u0027project_id\u0027 not in {\u0027nova_object.changes\u0027: [\u0027project_id\u0027], \u0027nova_object.namespace\u0027: \u0027nova\u0027, \u0027nova_object.name\u0027: \u0027RequestSpec\u0027, \u0027nova_object.version\u0027: \u00271.8\u0027, \u0027nova_object.data\u0027: {\u0027project_id\u0027: u\u00276a6a9c9eee154e9cb8cec487b98d36ab\u0027}}","commit_id":"adffec37b9d2df4d1fc68e3ef30e1e246de4d986"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"12901555762e54fa231761e7aeb05835c9b5851c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            memory_mb\u003d10,"},{"line_number":126,"context_line":"            vcpus\u003d1,"},{"line_number":127,"context_line":"            numa_topology\u003dNone,"},{"line_number":128,"context_line":"            project_id\u003dfakes.FAKE_PROJECT_ID,"},{"line_number":129,"context_line":"            availability_zone\u003d\u0027nova\u0027,"},{"line_number":130,"context_line":"            pci_requests\u003d{"},{"line_number":131,"context_line":"                \u0027instance_uuid\u0027: \u0027fakeid\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_74c63c19","line":128,"updated":"2018-05-01 13:18:18.000000000","message":"Do we care to add user_id here?","commit_id":"c3b69fdb37a9a3d3adf7cc597d74af3f86cbbbe9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a4a18cff250570980617a5c4316de884a848b06","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            memory_mb\u003d10,"},{"line_number":126,"context_line":"            vcpus\u003d1,"},{"line_number":127,"context_line":"            numa_topology\u003dNone,"},{"line_number":128,"context_line":"            project_id\u003dfakes.FAKE_PROJECT_ID,"},{"line_number":129,"context_line":"            availability_zone\u003d\u0027nova\u0027,"},{"line_number":130,"context_line":"            pci_requests\u003d{"},{"line_number":131,"context_line":"                \u0027instance_uuid\u0027: \u0027fakeid\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_1af4c786","line":128,"in_reply_to":"9f6a8fd7_74c63c19","updated":"2018-05-01 14:50:19.000000000","message":"\u003e Do we care to add user_id here?\n\nWhy? It\u0027s already covered in test_from_instance_as_object.","commit_id":"c3b69fdb37a9a3d3adf7cc597d74af3f86cbbbe9"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0ff5d3d4ceaf8e220ba6c951d780080f27e91188","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            memory_mb\u003d10,"},{"line_number":126,"context_line":"            vcpus\u003d1,"},{"line_number":127,"context_line":"            numa_topology\u003dNone,"},{"line_number":128,"context_line":"            project_id\u003dfakes.FAKE_PROJECT_ID,"},{"line_number":129,"context_line":"            availability_zone\u003d\u0027nova\u0027,"},{"line_number":130,"context_line":"            pci_requests\u003d{"},{"line_number":131,"context_line":"                \u0027instance_uuid\u0027: \u0027fakeid\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_dad40fec","line":128,"in_reply_to":"9f6a8fd7_74c63c19","updated":"2018-05-01 14:48:11.000000000","message":"Thanks for catching those. I\u0027m not familiar with this part of the code and need all the help I can get. I will update soon.","commit_id":"c3b69fdb37a9a3d3adf7cc597d74af3f86cbbbe9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9cd63a3038e6618ad44a1572585ad26913fd07c7","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            memory_mb\u003d10,"},{"line_number":126,"context_line":"            vcpus\u003d1,"},{"line_number":127,"context_line":"            numa_topology\u003dNone,"},{"line_number":128,"context_line":"            project_id\u003dfakes.FAKE_PROJECT_ID,"},{"line_number":129,"context_line":"            availability_zone\u003d\u0027nova\u0027,"},{"line_number":130,"context_line":"            pci_requests\u003d{"},{"line_number":131,"context_line":"                \u0027instance_uuid\u0027: \u0027fakeid\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_faf8f37c","line":128,"in_reply_to":"9f6a8fd7_dad40fec","updated":"2018-05-01 14:50:03.000000000","message":"Heh, I\u0027m not especially familiar either, just looked for project_id :)\n\nIt probably wasn\u0027t necessary for *all* of these (hence all the question marks) but certainly doesn\u0027t hurt.  Thanks for updating.","commit_id":"c3b69fdb37a9a3d3adf7cc597d74af3f86cbbbe9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"12901555762e54fa231761e7aeb05835c9b5851c","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            ephemeral_gb\u003d0,"},{"line_number":144,"context_line":"            memory_mb\u003d10,"},{"line_number":145,"context_line":"            vcpus\u003d1,"},{"line_number":146,"context_line":"            project_id\u003dfakes.FAKE_PROJECT_ID,"},{"line_number":147,"context_line":"            availability_zone\u003d\u0027nova\u0027,"},{"line_number":148,"context_line":"            pci_requests\u003dNone,"},{"line_number":149,"context_line":"            numa_topology\u003d{\u0027cells\u0027: [{\u0027id\u0027: 1, \u0027cpuset\u0027: [\u00271\u0027], \u0027memory\u0027: 8192,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_94c99026","line":146,"updated":"2018-05-01 13:18:18.000000000","message":"...and/or here?","commit_id":"c3b69fdb37a9a3d3adf7cc597d74af3f86cbbbe9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a4a18cff250570980617a5c4316de884a848b06","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            ephemeral_gb\u003d0,"},{"line_number":144,"context_line":"            memory_mb\u003d10,"},{"line_number":145,"context_line":"            vcpus\u003d1,"},{"line_number":146,"context_line":"            project_id\u003dfakes.FAKE_PROJECT_ID,"},{"line_number":147,"context_line":"            availability_zone\u003d\u0027nova\u0027,"},{"line_number":148,"context_line":"            pci_requests\u003dNone,"},{"line_number":149,"context_line":"            numa_topology\u003d{\u0027cells\u0027: [{\u0027id\u0027: 1, \u0027cpuset\u0027: [\u00271\u0027], \u0027memory\u0027: 8192,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_7a2aa3e7","line":146,"in_reply_to":"9f6a8fd7_94c99026","updated":"2018-05-01 14:50:19.000000000","message":"same","commit_id":"c3b69fdb37a9a3d3adf7cc597d74af3f86cbbbe9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"12901555762e54fa231761e7aeb05835c9b5851c","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                                     vcpus\u003d1)"},{"line_number":182,"context_line":"        spec.numa_topology \u003d None"},{"line_number":183,"context_line":"        spec.pci_requests \u003d None"},{"line_number":184,"context_line":"        spec.project_id \u003d fakes.FAKE_PROJECT_ID"},{"line_number":185,"context_line":"        spec.availability_zone \u003d \u0027nova\u0027"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        instance \u003d spec._to_legacy_instance()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_54d3f8d5","line":184,"updated":"2018-05-01 13:18:18.000000000","message":"...and/or here?  This one seems like we should...","commit_id":"c3b69fdb37a9a3d3adf7cc597d74af3f86cbbbe9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"42a29a208cd80453aa4b0268467b3e0b5405880c","unresolved":false,"context_lines":[{"line_number":633,"context_line":"        versions \u003d ovo_base.obj_tree_get_versions(\u0027RequestSpec\u0027)"},{"line_number":634,"context_line":"        primitive \u003d req_obj.obj_to_primitive(target_version\u003d\u00271.8\u0027,"},{"line_number":635,"context_line":"                                             version_manifest\u003dversions)"},{"line_number":636,"context_line":"        primitive \u003d primitive[\u0027nova_object.data\u0027]"},{"line_number":637,"context_line":"        self.assertNotIn(\u0027user_id\u0027, primitive)"},{"line_number":638,"context_line":"        self.assertIn(\u0027project_id\u0027, primitive)"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_c55d1416","line":636,"updated":"2018-05-01 15:06:34.000000000","message":"You dropped this and now it\u0027s failing again.","commit_id":"c3b69fdb37a9a3d3adf7cc597d74af3f86cbbbe9"}]}
