)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cbc03d8a7a8c4195134a44b5244ac6cfb604e699","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"addFixedIp action is deprecated, so instead of transforming the"},{"line_number":13,"context_line":"instance.add_fixed_ip notification (https://review.openstack.org/#/c/332876),"},{"line_number":14,"context_line":"instance.interface_attach versioned notifiaction is introduced."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id8d2c48c9c864554a917596e377d30515465fec1"},{"line_number":17,"context_line":"Implements: bp versioned-notification-transformation-queens"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f2577a7_4018ee73","line":14,"range":{"start_line":14,"start_character":36,"end_line":14,"end_character":48},"updated":"2017-09-13 22:18:41.000000000","message":"nit: notification","commit_id":"661affc4e15eb473c0748974165ea348554addff"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"93f05311aa206b14c50a44370fad69db1b39b0bd","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"addFixedIp action is deprecated, so instead of transforming the"},{"line_number":13,"context_line":"instance.add_fixed_ip notification (https://review.openstack.org/#/c/332876),"},{"line_number":14,"context_line":"instance.interface_attach versioned notifiaction is introduced."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id8d2c48c9c864554a917596e377d30515465fec1"},{"line_number":17,"context_line":"Implements: bp versioned-notification-transformation-queens"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f2577a7_05ef8bb0","line":14,"range":{"start_line":14,"start_character":36,"end_line":14,"end_character":48},"in_reply_to":"5f2577a7_4018ee73","updated":"2017-09-14 10:03:58.000000000","message":"Done","commit_id":"661affc4e15eb473c0748974165ea348554addff"}],"doc/notification_samples/instance-interface-attach-end.json":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cbc03d8a7a8c4195134a44b5244ac6cfb604e699","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                    \"nova_object.name\": \"IpPayload\","},{"line_number":33,"context_line":"                    \"nova_object.namespace\": \"nova\","},{"line_number":34,"context_line":"                    \"nova_object.version\": \"1.0\""},{"line_number":35,"context_line":"                }"},{"line_number":36,"context_line":"            ],"},{"line_number":37,"context_line":"            \"architecture\": \"x86_64\","},{"line_number":38,"context_line":"            \"display_name\": \"some-server\","}],"source_content_type":"application/json","patch_set":2,"id":"5f2577a7_bd121d08","line":35,"updated":"2017-09-13 22:18:41.000000000","message":"At the end of interface attach I think there should be one more IP in this list.","commit_id":"661affc4e15eb473c0748974165ea348554addff"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"93f05311aa206b14c50a44370fad69db1b39b0bd","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                    \"nova_object.name\": \"IpPayload\","},{"line_number":33,"context_line":"                    \"nova_object.namespace\": \"nova\","},{"line_number":34,"context_line":"                    \"nova_object.version\": \"1.0\""},{"line_number":35,"context_line":"                }"},{"line_number":36,"context_line":"            ],"},{"line_number":37,"context_line":"            \"architecture\": \"x86_64\","},{"line_number":38,"context_line":"            \"display_name\": \"some-server\","}],"source_content_type":"application/json","patch_set":2,"id":"5f2577a7_e52b5fe8","line":35,"in_reply_to":"5f2577a7_bd121d08","updated":"2017-09-14 10:03:58.000000000","message":"Done","commit_id":"661affc4e15eb473c0748974165ea348554addff"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cbc03d8a7a8c4195134a44b5244ac6cfb604e699","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        },"},{"line_number":71,"context_line":"        \"nova_object.name\": \"InstanceActionPayload\","},{"line_number":72,"context_line":"        \"nova_object.namespace\": \"nova\","},{"line_number":73,"context_line":"        \"nova_object.version\": \"1.1\""},{"line_number":74,"context_line":"    }"},{"line_number":75,"context_line":"}"}],"source_content_type":"application/json","patch_set":2,"id":"5f2577a7_9d4be129","line":73,"updated":"2017-09-13 22:18:41.000000000","message":"InstanceActionPayload is already on version 1.5","commit_id":"661affc4e15eb473c0748974165ea348554addff"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"93f05311aa206b14c50a44370fad69db1b39b0bd","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        },"},{"line_number":71,"context_line":"        \"nova_object.name\": \"InstanceActionPayload\","},{"line_number":72,"context_line":"        \"nova_object.namespace\": \"nova\","},{"line_number":73,"context_line":"        \"nova_object.version\": \"1.1\""},{"line_number":74,"context_line":"    }"},{"line_number":75,"context_line":"}"}],"source_content_type":"application/json","patch_set":2,"id":"5f2577a7_c52e23f9","line":73,"in_reply_to":"5f2577a7_9d4be129","updated":"2017-09-14 10:03:58.000000000","message":"Done","commit_id":"661affc4e15eb473c0748974165ea348554addff"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1781dd56acc5ae807094798fd021e532c7f2debd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5f2577a7_1ef67964","updated":"2017-09-18 13:20:58.000000000","message":"file should be named like instance-interface_attach-end.json to follow the convention. (The dash is the field separator, so you have to use underscore as a word separator in the action name)","commit_id":"71a7dec03838c187f7a307adcada638a1eabbd50"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"e2c98efd96c1fb3228242f6c0b64bea6e471d5c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ff5d4b2f_cc446dba","in_reply_to":"5f2577a7_1ef67964","updated":"2017-09-19 16:37:53.000000000","message":"Done","commit_id":"71a7dec03838c187f7a307adcada638a1eabbd50"}],"doc/notification_samples/instance-interface-attach-start.json":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1781dd56acc5ae807094798fd021e532c7f2debd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5f2577a7_beb40581","updated":"2017-09-18 13:20:58.000000000","message":"the file should be named like: instance-interface_attach-start.json","commit_id":"71a7dec03838c187f7a307adcada638a1eabbd50"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"e2c98efd96c1fb3228242f6c0b64bea6e471d5c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ff5d4b2f_8c18b5d3","in_reply_to":"5f2577a7_beb40581","updated":"2017-09-19 16:37:53.000000000","message":"Done","commit_id":"71a7dec03838c187f7a307adcada638a1eabbd50"}],"nova/compute/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cbc03d8a7a8c4195134a44b5244ac6cfb604e699","unresolved":false,"context_lines":[{"line_number":5231,"context_line":"            except Exception:"},{"line_number":5232,"context_line":"                LOG.warning(\"deallocate port %(port_id)s failed\","},{"line_number":5233,"context_line":"                            {\u0027port_id\u0027: port_id}, instance\u003dinstance)"},{"line_number":5234,"context_line":"            raise exception.InterfaceAttachFailed("},{"line_number":5235,"context_line":"                instance_uuid\u003dinstance.uuid)"},{"line_number":5236,"context_line":""},{"line_number":5237,"context_line":"        compute_utils.notify_about_instance_action("}],"source_content_type":"text/x-python","patch_set":2,"id":"5f2577a7_5de7b941","line":5234,"updated":"2017-09-13 22:18:41.000000000","message":"As a follow up patch, could you add an instance.interface_attach.error notification right before this exception is raised?","commit_id":"661affc4e15eb473c0748974165ea348554addff"}],"nova/tests/fixtures.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"575e4ee2f534c598aa4bc90ccd10c42902885ce8","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"            \u0027get_instances_security_groups_bindings\u0027,"},{"line_number":1207,"context_line":"            lambda *args, **kwargs: {})"},{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"        def k(*args, **kwargs):"},{"line_number":1210,"context_line":"            return NeutronFixture(self)"},{"line_number":1211,"context_line":""},{"line_number":1212,"context_line":"        self.test.stub_out(\u0027nova.network.neutronv2.api.get_client\u0027, k)"},{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":1215,"context_line":"        return copy.deepcopy({\u0027extensions\u0027: self._extensions})"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f2577a7_eba1df47","line":1212,"range":{"start_line":1209,"start_character":0,"end_line":1212,"end_character":70},"updated":"2017-09-14 21:25:55.000000000","message":"This means every get_client call will create and return a _new_ fixture. This leads to the situation that the port is created in one fixture but then tried to be updated in another fixture instance and there that port does not exists. \n\nInstead, you should just return the current fixture instance for every get_client call.\nSomething like:\n\n        self.test.stub_out(\u0027nova.network.neutronv2.api.get_client\u0027, lambda *args, **kwargs: self)","commit_id":"71a7dec03838c187f7a307adcada638a1eabbd50"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"e2c98efd96c1fb3228242f6c0b64bea6e471d5c4","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"            \u0027get_instances_security_groups_bindings\u0027,"},{"line_number":1207,"context_line":"            lambda *args, **kwargs: {})"},{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"        def k(*args, **kwargs):"},{"line_number":1210,"context_line":"            return NeutronFixture(self)"},{"line_number":1211,"context_line":""},{"line_number":1212,"context_line":"        self.test.stub_out(\u0027nova.network.neutronv2.api.get_client\u0027, k)"},{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":1215,"context_line":"        return copy.deepcopy({\u0027extensions\u0027: self._extensions})"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_ccefcdae","line":1212,"range":{"start_line":1209,"start_character":0,"end_line":1212,"end_character":70},"in_reply_to":"5f2577a7_eba1df47","updated":"2017-09-19 16:37:53.000000000","message":"Done","commit_id":"71a7dec03838c187f7a307adcada638a1eabbd50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13183b893ad78edb636977c0380cd5725ca15898","unresolved":false,"context_lines":[{"line_number":1098,"context_line":"        \u0027tenant_id\u0027: tenant_id"},{"line_number":1099,"context_line":"    }"},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"    # This port is only used if the fixture is created with multiple_ports\u003dTrue"},{"line_number":1102,"context_line":"    port_2 \u003d {"},{"line_number":1103,"context_line":"        \u0027id\u0027: \u002788dae9fa-0dc6-49e3-8c29-3abc41e99ac9\u0027,"},{"line_number":1104,"context_line":"        \u0027network_id\u0027: network_1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_390d9037","line":1101,"updated":"2017-09-20 09:40:41.000000000","message":"I\u0027m not sure that this is still valid.","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"aba319551f494c3b0c7ada9cb6e7e076356f61fb","unresolved":false,"context_lines":[{"line_number":1098,"context_line":"        \u0027tenant_id\u0027: tenant_id"},{"line_number":1099,"context_line":"    }"},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"    # This port is only used if the fixture is created with multiple_ports\u003dTrue"},{"line_number":1102,"context_line":"    port_2 \u003d {"},{"line_number":1103,"context_line":"        \u0027id\u0027: \u002788dae9fa-0dc6-49e3-8c29-3abc41e99ac9\u0027,"},{"line_number":1104,"context_line":"        \u0027network_id\u0027: network_1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_9d510512","line":1101,"in_reply_to":"bf57530f_390d9037","updated":"2017-09-20 11:55:16.000000000","message":"It\u0027s not valid any more, so removed.","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13183b893ad78edb636977c0380cd5725ca15898","unresolved":false,"context_lines":[{"line_number":1163,"context_line":"        \"qbg_params\": None"},{"line_number":1164,"context_line":"    }]"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"    def __init__(self, test, multiple_ports\u003dFalse):"},{"line_number":1167,"context_line":"        super(NeutronFixture, self).__init__()"},{"line_number":1168,"context_line":"        self.test \u003d test"},{"line_number":1169,"context_line":"        self.multiple_ports \u003d multiple_ports"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_395b502f","line":1166,"range":{"start_line":1166,"start_character":29,"end_line":1166,"end_character":43},"updated":"2017-09-20 09:40:41.000000000","message":"Actually this is unused now","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"aba319551f494c3b0c7ada9cb6e7e076356f61fb","unresolved":false,"context_lines":[{"line_number":1163,"context_line":"        \"qbg_params\": None"},{"line_number":1164,"context_line":"    }]"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"    def __init__(self, test, multiple_ports\u003dFalse):"},{"line_number":1167,"context_line":"        super(NeutronFixture, self).__init__()"},{"line_number":1168,"context_line":"        self.test \u003d test"},{"line_number":1169,"context_line":"        self.multiple_ports \u003d multiple_ports"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_7d565109","line":1166,"range":{"start_line":1166,"start_character":29,"end_line":1166,"end_character":43},"in_reply_to":"bf57530f_395b502f","updated":"2017-09-20 11:55:16.000000000","message":"Removed.","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13183b893ad78edb636977c0380cd5725ca15898","unresolved":false,"context_lines":[{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":"    def show_port(self, port_id, **_params):"},{"line_number":1223,"context_line":"        port \u003d self._get_first_id_match(port_id,"},{"line_number":1224,"context_line":"            self._ports + [NeutronFixture.port_1, NeutronFixture.port_2])"},{"line_number":1225,"context_line":"        if port is None:"},{"line_number":1226,"context_line":"            raise exception.PortNotFound(port_id\u003dport_id)"},{"line_number":1227,"context_line":"        return {\u0027port\u0027: port}"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_f9aa58d0","line":1224,"range":{"start_line":1224,"start_character":26,"end_line":1224,"end_character":72},"updated":"2017-09-20 09:40:41.000000000","message":"This looks strange. port_1 is already in the ports list due to setUp() L1170. And port_2 should be there is somebody called create_port (L1247). So I think here we only need to search in self._ports","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ff877d9d49957787213256c4cf90f56657ba9cc6","unresolved":false,"context_lines":[{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":"    def show_port(self, port_id, **_params):"},{"line_number":1223,"context_line":"        port \u003d self._get_first_id_match(port_id,"},{"line_number":1224,"context_line":"            self._ports + [NeutronFixture.port_1, NeutronFixture.port_2])"},{"line_number":1225,"context_line":"        if port is None:"},{"line_number":1226,"context_line":"            raise exception.PortNotFound(port_id\u003dport_id)"},{"line_number":1227,"context_line":"        return {\u0027port\u0027: port}"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_ae27f1b6","line":1224,"range":{"start_line":1224,"start_character":26,"end_line":1224,"end_character":72},"in_reply_to":"bf57530f_1d6635ef","updated":"2017-09-20 13:49:54.000000000","message":"I think I understand it better now. So there was this multiple_port flag for the fixture to request that the fixture should pre-create both hardcode ports. The test you mentioned used that flag. Now we removed the flag as it was not used anywhere after your fixture update. \nSo I think we either fix that test or fix the fixture to pre_create two ports if requested.\n\nIf you add the following line to the setup of that test case then you can remove this hack from the fixture.\n\n        self.neutron.create_port(self.neutron.port_2)\n\nOr we can bring back the multiple_port flag to the fixture init and if it is set to true then pre-create both port_1 and port_2 at L1170","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"dee4fcd500786e1fd42f12674e8caa33e82c5199","unresolved":false,"context_lines":[{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":"    def show_port(self, port_id, **_params):"},{"line_number":1223,"context_line":"        port \u003d self._get_first_id_match(port_id,"},{"line_number":1224,"context_line":"            self._ports + [NeutronFixture.port_1, NeutronFixture.port_2])"},{"line_number":1225,"context_line":"        if port is None:"},{"line_number":1226,"context_line":"            raise exception.PortNotFound(port_id\u003dport_id)"},{"line_number":1227,"context_line":"        return {\u0027port\u0027: port}"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_e13617b5","line":1224,"range":{"start_line":1224,"start_character":26,"end_line":1224,"end_character":72},"in_reply_to":"bf57530f_ae27f1b6","updated":"2017-09-20 14:49:44.000000000","message":"You are right, it\u0027s much nicer to put the create_port in TestListServersIpFilter. Done.","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"aba319551f494c3b0c7ada9cb6e7e076356f61fb","unresolved":false,"context_lines":[{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":"    def show_port(self, port_id, **_params):"},{"line_number":1223,"context_line":"        port \u003d self._get_first_id_match(port_id,"},{"line_number":1224,"context_line":"            self._ports + [NeutronFixture.port_1, NeutronFixture.port_2])"},{"line_number":1225,"context_line":"        if port is None:"},{"line_number":1226,"context_line":"            raise exception.PortNotFound(port_id\u003dport_id)"},{"line_number":1227,"context_line":"        return {\u0027port\u0027: port}"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_1d6635ef","line":1224,"range":{"start_line":1224,"start_character":26,"end_line":1224,"end_character":72},"in_reply_to":"bf57530f_f9aa58d0","updated":"2017-09-20 11:55:16.000000000","message":"This is needed because we removed the multiple_ports flag, and functional test test_list_servers_with_ip_filters_regex fails otherwise.\n\n(nova.tests.functional.test_list_servers_ip_filter.TestListServersIpFilter.test_list_servers_with_ip_filters_regex)","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13183b893ad78edb636977c0380cd5725ca15898","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"                [NeutronFixture.port_1, NeutronFixture.port_2])"},{"line_number":1255,"context_line":"            self._ports.append(new_port)"},{"line_number":1256,"context_line":""},{"line_number":1257,"context_line":"        if body is not None and port_id \u003d\u003d new_port[\u0027id\u0027]:"},{"line_number":1258,"context_line":"            for k, v in body[\u0027port\u0027].items():"},{"line_number":1259,"context_line":"                new_port[k] \u003d v"},{"line_number":1260,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_d95314e2","line":1257,"range":{"start_line":1257,"start_character":32,"end_line":1257,"end_character":58},"updated":"2017-09-20 09:40:41.000000000","message":"I think this is always true because of the above code. I both case above the new_port is returned by _get_first_id_match that only retuns ports where the port_id matches the return port\u0027s id.","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"aba319551f494c3b0c7ada9cb6e7e076356f61fb","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"                [NeutronFixture.port_1, NeutronFixture.port_2])"},{"line_number":1255,"context_line":"            self._ports.append(new_port)"},{"line_number":1256,"context_line":""},{"line_number":1257,"context_line":"        if body is not None and port_id \u003d\u003d new_port[\u0027id\u0027]:"},{"line_number":1258,"context_line":"            for k, v in body[\u0027port\u0027].items():"},{"line_number":1259,"context_line":"                new_port[k] \u003d v"},{"line_number":1260,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_fd6241d8","line":1257,"range":{"start_line":1257,"start_character":32,"end_line":1257,"end_character":58},"in_reply_to":"bf57530f_d95314e2","updated":"2017-09-20 11:55:16.000000000","message":"Done","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"}],"nova/tests/functional/notification_sample_tests/test_instance.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13183b893ad78edb636977c0380cd5725ca15898","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            self._test_unrescue_server,"},{"line_number":150,"context_line":"            self._test_soft_delete_server,"},{"line_number":151,"context_line":"            self._test_attach_volume_error,"},{"line_number":152,"context_line":"            self._test_interface_attach,"},{"line_number":153,"context_line":"        ]"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        for action in actions:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf57530f_f96ff88f","line":152,"updated":"2017-09-20 09:40:41.000000000","message":"This temporarily need to be the last item in this list as it does not revert the instance state. But when the interface_detach will be added to it it will not need to be the last item any more.  (I just note this here for the other readers of the patch)","commit_id":"0933d21164d8f3d275db5a4b582b02673b0d92d3"}]}
