)]}'
{"nova/api/metadata/base.py":[{"author":{"_account_id":16282,"name":"YaZug","email":"jschluet@redhat.com","username":"yazug"},"change_message_id":"180ece08722cccc0303e950cc43bf7495de1ee64","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        # inside that may not pickle well (i.e. context). We also touch"},{"line_number":129,"context_line":"        # some of the things we\u0027ll lazy load later to make sure we keep their"},{"line_number":130,"context_line":"        # values in what we cache."},{"line_number":131,"context_line":"        instance.ec2_ids"},{"line_number":132,"context_line":"        instance.keypairs"},{"line_number":133,"context_line":"        instance \u003d objects.Instance.obj_from_primitive("},{"line_number":134,"context_line":"            instance.obj_to_primitive())"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_ad6ca008","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":25},"updated":"2017-06-29 17:51:05.000000000","message":"were you trying to set these to some value? to avoid caching them? otherwise what is purpose of these 2 variables that are not set/read/used","commit_id":"3146cdaebdaee946dbee5393d188f7123e760f87"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"505309ee8da9da57ad3bbfb1ff1d38de0a4339fe","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        # inside that may not pickle well (i.e. context). We also touch"},{"line_number":129,"context_line":"        # some of the things we\u0027ll lazy load later to make sure we keep their"},{"line_number":130,"context_line":"        # values in what we cache."},{"line_number":131,"context_line":"        instance.ec2_ids"},{"line_number":132,"context_line":"        instance.keypairs"},{"line_number":133,"context_line":"        instance \u003d objects.Instance.obj_from_primitive("},{"line_number":134,"context_line":"            instance.obj_to_primitive())"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_1073a717","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":25},"in_reply_to":"3f1d235d_ad6ca008","updated":"2017-06-29 18:20:58.000000000","message":"Nope, these lines touch those fields on the object causing them to be lazy-loaded if they\u0027re not already set. The metadata bit will touch these, but if we orphan the instance for caching (which is what L133 does) then that won\u0027t be able to happen later and we\u0027ll be missing that chunk of metadata.","commit_id":"3146cdaebdaee946dbee5393d188f7123e760f87"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0555df7d605585642e77161dfbcc5cb5b7133e88","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        # inside that may not pickle well (i.e. context). We also touch"},{"line_number":129,"context_line":"        # some of the things we\u0027ll lazy load later to make sure we keep their"},{"line_number":130,"context_line":"        # values in what we cache."},{"line_number":131,"context_line":"        instance.ec2_ids"},{"line_number":132,"context_line":"        instance.keypairs"},{"line_number":133,"context_line":"        instance \u003d objects.Instance.obj_from_primitive("},{"line_number":134,"context_line":"            instance.obj_to_primitive())"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_514e6f6f","line":132,"range":{"start_line":131,"start_character":8,"end_line":132,"end_character":25},"updated":"2017-07-03 17:22:18.000000000","message":"Are you missing device_metadata here? That\u0027s needed for building the config drive (and serving a metadata API request) and providing the device tags for NICs and BDMs.","commit_id":"2fee972bde4a04d398d32aa6c8b6d27819db697b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb5b8366627a20b8be46e08ea846e750bb1a4b53","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        # inside that may not pickle well (i.e. context). We also touch"},{"line_number":129,"context_line":"        # some of the things we\u0027ll lazy load later to make sure we keep their"},{"line_number":130,"context_line":"        # values in what we cache."},{"line_number":131,"context_line":"        instance.ec2_ids"},{"line_number":132,"context_line":"        instance.keypairs"},{"line_number":133,"context_line":"        instance \u003d objects.Instance.obj_from_primitive("},{"line_number":134,"context_line":"            instance.obj_to_primitive())"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_117fd767","line":132,"range":{"start_line":131,"start_character":8,"end_line":132,"end_character":25},"in_reply_to":"3f1d235d_514e6f6f","updated":"2017-07-03 17:26:45.000000000","message":"Would have been nice to optimize these in a single call to the DB to load the instance with expected_attrs rather than do that round trip once per attribute. Especially if we also need to add device_metadata in here too (claudiub reported this broke that for device tags with hyperv).","commit_id":"2fee972bde4a04d398d32aa6c8b6d27819db697b"}],"nova/tests/unit/test_metadata.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5ea9818a72cd6b6a4b2f67a675691921cef056b6","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    )"},{"line_number":197,"context_line":"    fake_device_obj \u003d metadata_obj.DeviceMetadata()"},{"line_number":198,"context_line":"    device_with_fake_bus_obj \u003d metadata_obj.NetworkInterfaceMetadata("},{"line_number":199,"context_line":"        bus\u003dmetadata_obj.DeviceBus(),"},{"line_number":200,"context_line":"        mac\u003d\u002700:00:00:00:00:00\u0027,"},{"line_number":201,"context_line":"        tags\u003d[\u0027foo\u0027]"},{"line_number":202,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_1047274e","line":199,"updated":"2017-06-29 17:57:40.000000000","message":"What does this test change do? The test still passes with the unfixed code. Can we can test this in a way that would catch a regression?","commit_id":"3146cdaebdaee946dbee5393d188f7123e760f87"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"505309ee8da9da57ad3bbfb1ff1d38de0a4339fe","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    )"},{"line_number":197,"context_line":"    fake_device_obj \u003d metadata_obj.DeviceMetadata()"},{"line_number":198,"context_line":"    device_with_fake_bus_obj \u003d metadata_obj.NetworkInterfaceMetadata("},{"line_number":199,"context_line":"        bus\u003dmetadata_obj.DeviceBus(),"},{"line_number":200,"context_line":"        mac\u003d\u002700:00:00:00:00:00\u0027,"},{"line_number":201,"context_line":"        tags\u003d[\u0027foo\u0027]"},{"line_number":202,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_10fa8741","line":199,"in_reply_to":"3f1d235d_1047274e","updated":"2017-06-29 18:20:58.000000000","message":"I don\u0027t know why Artom subclassed these in his original change (L168, L172). However, the subclasses aren\u0027t registered, which means we can\u0027t deserialize them. Before that didn\u0027t matter, but now it does since we serialize/deserialize the instance in the constructor.\n\nI see no reason for him to have done that, so I just changed this to use the base classes and remove the subs above. As you note, that change has no effect on the test, but is required for the change we made to base.py.","commit_id":"3146cdaebdaee946dbee5393d188f7123e760f87"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"adb357e3ecfb48c53a417eebcdc4cc7bbe427433","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    )"},{"line_number":197,"context_line":"    fake_device_obj \u003d metadata_obj.DeviceMetadata()"},{"line_number":198,"context_line":"    device_with_fake_bus_obj \u003d metadata_obj.NetworkInterfaceMetadata("},{"line_number":199,"context_line":"        bus\u003dmetadata_obj.DeviceBus(),"},{"line_number":200,"context_line":"        mac\u003d\u002700:00:00:00:00:00\u0027,"},{"line_number":201,"context_line":"        tags\u003d[\u0027foo\u0027]"},{"line_number":202,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_cc1233b2","line":199,"in_reply_to":"3f1d235d_10fa8741","updated":"2017-06-30 02:01:38.000000000","message":"\u003e I don\u0027t know why Artom subclassed these in his original change\n\nIt was to test https://github.com/openstack/nova/blob/0c0361e8bf1ab85812b9b84a3d00ce6eca1b57c1/nova/api/metadata/base.py#L438-L440","commit_id":"3146cdaebdaee946dbee5393d188f7123e760f87"}]}
