)]}'
{"nova/tests/unit/compute/test_claims.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0f4eb885bda9b5472af9188dad1afdd3729ffdb6","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            \u0027numa_topology\u0027: None"},{"line_number":103,"context_line":"        }"},{"line_number":104,"context_line":"        instance.update(**kwargs)"},{"line_number":105,"context_line":"        return fake_instance.fake_instance_obj(self.context, **instance)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _fake_instance_type(self, **kwargs):"},{"line_number":108,"context_line":"        instance_type \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_7583ff04","line":105,"updated":"2015-08-28 11:01:56.000000000","message":"I don\u0027t usually like to hydrate that way because of **kwargs above, it just hides an attribute as if it was looking like an object field. Could you just at least ensure that what\u0027s passed in the kwargs is an Instance field ? (just looping over the kwargs and verifying instance.fields) before calling instance.update() I guess...","commit_id":"e29fda673537f535787365d9971ac96257a33063"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"70d0dbeda533375e003b0baceec276468518d98f","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            \u0027numa_topology\u0027: None"},{"line_number":103,"context_line":"        }"},{"line_number":104,"context_line":"        instance.update(**kwargs)"},{"line_number":105,"context_line":"        return fake_instance.fake_instance_obj(self.context, **instance)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _fake_instance_type(self, **kwargs):"},{"line_number":108,"context_line":"        instance_type \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_b038c5a1","line":105,"in_reply_to":"da20952f_7583ff04","updated":"2015-08-28 11:12:38.000000000","message":"you seem to be confused - if you look at fake_instance.fake_instance_obj it does all the validation so this should be cool.","commit_id":"e29fda673537f535787365d9971ac96257a33063"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"315ac35b2eccd801526508088744907a3f894f11","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            \u0027numa_topology\u0027: None"},{"line_number":103,"context_line":"        }"},{"line_number":104,"context_line":"        instance.update(**kwargs)"},{"line_number":105,"context_line":"        return fake_instance.fake_instance_obj(self.context, **instance)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _fake_instance_type(self, **kwargs):"},{"line_number":108,"context_line":"        instance_type \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_10c5f159","line":105,"in_reply_to":"da20952f_b038c5a1","updated":"2015-08-28 11:17:23.000000000","message":"Yeah, it calls _from_db_object() and does not hydrate directly the fields so we\u0027re good here. Sorry about the miss.","commit_id":"e29fda673537f535787365d9971ac96257a33063"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a6abac2006e054c0acf6a2701822a61cabe811d7","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            spec\u003d[{\u0027vendor_id\u0027: \u0027v\u0027, \u0027product_id\u0027: \u0027p\u0027}])"},{"line_number":210,"context_line":"        requests \u003d objects.InstancePCIRequests(requests\u003d[request])"},{"line_number":211,"context_line":"        mock_get.return_value \u003d requests"},{"line_number":212,"context_line":"        mock_get_by_instance.return_value \u003d requests"},{"line_number":213,"context_line":"        self.assertIsNone(claim._test_pci())"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    @pci_fakes.patch_pci_whitelist"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_bf308d02","line":212,"updated":"2015-08-28 13:28:41.000000000","message":"hmm, I can\u0027t see the use of get_by_instance, I guess this is to ease the transition? Can\u0027t we add this after we change the code?","commit_id":"e29fda673537f535787365d9971ac96257a33063"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"50ce38bd8e91efd1e4091e9c88d5edf87d95a3b3","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            spec\u003d[{\u0027vendor_id\u0027: \u0027v\u0027, \u0027product_id\u0027: \u0027p\u0027}])"},{"line_number":210,"context_line":"        requests \u003d objects.InstancePCIRequests(requests\u003d[request])"},{"line_number":211,"context_line":"        mock_get.return_value \u003d requests"},{"line_number":212,"context_line":"        mock_get_by_instance.return_value \u003d requests"},{"line_number":213,"context_line":"        self.assertIsNone(claim._test_pci())"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    @pci_fakes.patch_pci_whitelist"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_a6062f1b","line":212,"in_reply_to":"da20952f_a8911ef3","updated":"2015-08-28 21:28:19.000000000","message":"Ah, yeah. Sometimes mocking out obj_load_attr() is clearer.","commit_id":"e29fda673537f535787365d9971ac96257a33063"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"5795b113f140fc03d4d978417df7d930922f88f3","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            spec\u003d[{\u0027vendor_id\u0027: \u0027v\u0027, \u0027product_id\u0027: \u0027p\u0027}])"},{"line_number":210,"context_line":"        requests \u003d objects.InstancePCIRequests(requests\u003d[request])"},{"line_number":211,"context_line":"        mock_get.return_value \u003d requests"},{"line_number":212,"context_line":"        mock_get_by_instance.return_value \u003d requests"},{"line_number":213,"context_line":"        self.assertIsNone(claim._test_pci())"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    @pci_fakes.patch_pci_whitelist"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_a8911ef3","line":212,"in_reply_to":"da20952f_bf308d02","updated":"2015-08-28 21:21:42.000000000","message":"So the problem is that now that this is an instance object - it will attempt to lazy_load instance system_metadata inside the get_by_instance method which is called in the PCI tracker claim_instance method. (when it was a dict it just fell through since it wasn\u0027t there. We can mock it out or do this - this seemed easier.\n\nActually the way we load PCI requests in the pci tracker is super suboptimal and shoudl be fixed but not really related to this series.","commit_id":"e29fda673537f535787365d9971ac96257a33063"}]}
