)]}'
{"doc/notification_samples/instance-add_fixed_ip-end.json":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1d5ea7b83cd22c381b143e04aacc77efc4a9b3d5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"            \"fault\":null,"},{"line_number":11,"context_line":"            \"host\":\"compute\","},{"line_number":12,"context_line":"            \"host_name\":\"some-server\","},{"line_number":13,"context_line":"            \"ip_addresses\": [{"},{"line_number":14,"context_line":"                \"nova_object.name\": \"IpPayload\","},{"line_number":15,"context_line":"                \"nova_object.namespace\": \"nova\","},{"line_number":16,"context_line":"                \"nova_object.version\": \"1.0\","}],"source_content_type":"application/json","patch_set":9,"id":"1aa78d24_95631a41","line":13,"updated":"2016-07-05 07:35:53.000000000","message":"If add a new ip to the instance would this be different? I mean we add an ip and that does not increase the number of ips?","commit_id":"96a85f28d752dd017d3f944c639d2e5e1baad800"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"80ad700c5cd3d8aad10544d749bab98b1b8ca60a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"            \"fault\":null,"},{"line_number":11,"context_line":"            \"host\":\"compute\","},{"line_number":12,"context_line":"            \"host_name\":\"some-server\","},{"line_number":13,"context_line":"            \"ip_addresses\": [{"},{"line_number":14,"context_line":"                \"nova_object.name\": \"IpPayload\","},{"line_number":15,"context_line":"                \"nova_object.namespace\": \"nova\","},{"line_number":16,"context_line":"                \"nova_object.version\": \"1.0\","}],"source_content_type":"application/json","patch_set":9,"id":"1aa78d24_0b24d45d","line":13,"in_reply_to":"1aa78d24_95631a41","updated":"2016-07-06 15:00:03.000000000","message":"+1","commit_id":"96a85f28d752dd017d3f944c639d2e5e1baad800"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b36f8b8e5b5391f3ef4e9b371ae6396cd73ff3b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"                \"nova_object.version\": \"1.0\","},{"line_number":17,"context_line":"                \"nova_object.data\": {"},{"line_number":18,"context_line":"                    \"mac\": \"fa:16:3e:4c:2c:30\","},{"line_number":19,"context_line":"                    \"address\": \"192.168.1.3\","},{"line_number":20,"context_line":"                    \"port_uuid\": \"ce531f90-199f-48c0-816c-13e38010b442\","},{"line_number":21,"context_line":"                    \"meta\": {},"},{"line_number":22,"context_line":"                    \"version\": 4,"}],"source_content_type":"application/json","patch_set":14,"id":"3a71b18c_6973f115","line":19,"updated":"2016-12-09 08:57:35.000000000","message":"This is the same ip that is already added to the instance during boot. It would be better to create such a sample that really adds an extra ip to the instance.","commit_id":"dbb7b89fea2fa7407178a25abaff791ee19aa068"},{"author":{"_account_id":20217,"name":"Anusha Unnam","email":"anusha.unnam25@gmail.com","username":"aunnam"},"change_message_id":"d71e1d72ec2defa540c8259b558ceb466d476c4d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        },"},{"line_number":56,"context_line":"        \"nova_object.name\":\"InstanceActionPayload\","},{"line_number":57,"context_line":"        \"nova_object.namespace\":\"nova\","},{"line_number":58,"context_line":"        \"nova_object.version\":\"1.1\""},{"line_number":59,"context_line":"    },"},{"line_number":60,"context_line":"    \"priority\":\"INFO\","},{"line_number":61,"context_line":"    \"publisher_id\":\"nova-compute:compute\""}],"source_content_type":"application/json","patch_set":19,"id":"ba5201f7_237772d5","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":35},"updated":"2017-01-10 18:45:05.000000000","message":"Here the version is changed, but display_description and locked fields are not actually added. Please add those fields as well.","commit_id":"d7146f6f3aa6cbbd3f571c1eb24d8ee54dd14e23"}],"nova/compute/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1d3a6922585c6ee98f498c750cbbb0c0b75756ff","unresolved":false,"context_lines":[{"line_number":3905,"context_line":""},{"line_number":3906,"context_line":"    @wrap_exception()"},{"line_number":3907,"context_line":"    @wrap_instance_fault"},{"line_number":3908,"context_line":"    def add_fixed_ip_to_instance(self, context, network_id, instance):"},{"line_number":3909,"context_line":"        \"\"\"Calls network_api to add new fixed_ip to instance"},{"line_number":3910,"context_line":"        then injects the new network info and resets instance networking."},{"line_number":3911,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_443de029","line":3908,"range":{"start_line":3908,"start_character":8,"end_line":3908,"end_character":32},"updated":"2016-06-27 09:06:41.000000000","message":"I think add_fixed_ip would be a better name for this action, rather than \"create_ip\".","commit_id":"8594c326bbd3d5f592a0c544fc8e65a08ab170a5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1ded27454af82c27e3f4a00fc8237e2e74490b4","unresolved":false,"context_lines":[{"line_number":3905,"context_line":""},{"line_number":3906,"context_line":"    @wrap_exception()"},{"line_number":3907,"context_line":"    @wrap_instance_fault"},{"line_number":3908,"context_line":"    def add_fixed_ip_to_instance(self, context, network_id, instance):"},{"line_number":3909,"context_line":"        \"\"\"Calls network_api to add new fixed_ip to instance"},{"line_number":3910,"context_line":"        then injects the new network info and resets instance networking."},{"line_number":3911,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_7df8584a","line":3908,"range":{"start_line":3908,"start_character":8,"end_line":3908,"end_character":32},"in_reply_to":"3aaa91ec_0c348c48","updated":"2016-06-27 15:37:30.000000000","message":"I did the rename on the wiki as well to keep everything in sync.","commit_id":"8594c326bbd3d5f592a0c544fc8e65a08ab170a5"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"c6639ab30350ad2b1bfea0deb45a3b72f5ad3b5c","unresolved":false,"context_lines":[{"line_number":3905,"context_line":""},{"line_number":3906,"context_line":"    @wrap_exception()"},{"line_number":3907,"context_line":"    @wrap_instance_fault"},{"line_number":3908,"context_line":"    def add_fixed_ip_to_instance(self, context, network_id, instance):"},{"line_number":3909,"context_line":"        \"\"\"Calls network_api to add new fixed_ip to instance"},{"line_number":3910,"context_line":"        then injects the new network info and resets instance networking."},{"line_number":3911,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_0c348c48","line":3908,"range":{"start_line":3908,"start_character":8,"end_line":3908,"end_character":32},"in_reply_to":"3aaa91ec_443de029","updated":"2016-06-27 14:48:44.000000000","message":"Dear John, \n\nI followed the naming conventions declared at [1]. So if we want to change \"create_ip\" to \"add_fixed_ip\", we should update the table at [1] too.\n\n[1]: https://wiki.openstack.org/wiki/Nova/VersionedNotificationTransformation","commit_id":"8594c326bbd3d5f592a0c544fc8e65a08ab170a5"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"ae8267c1013791701a0ee2e16bbc8ee244713f1d","unresolved":false,"context_lines":[{"line_number":1356,"context_line":"                fixed_ips \u003d p[\u0027fixed_ips\u0027]"},{"line_number":1357,"context_line":"                fixed_ips.append({\u0027subnet_id\u0027: subnet[\u0027id\u0027]})"},{"line_number":1358,"context_line":"                port_req_body \u003d {\u0027port\u0027: {\u0027fixed_ips\u0027: fixed_ips}}"},{"line_number":1359,"context_line":"                print(\u0027port_req_body \u0027)"},{"line_number":1360,"context_line":"                print(port_req_body)"},{"line_number":1361,"context_line":"                try:"},{"line_number":1362,"context_line":"                    neutron.update_port(p[\u0027id\u0027], port_req_body)"},{"line_number":1363,"context_line":"                    return self._get_instance_nw_info(context, instance)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a74a57a_0689a326","line":1360,"range":{"start_line":1359,"start_character":0,"end_line":1360,"end_character":36},"updated":"2016-11-24 08:19:40.000000000","message":"These lines should be removed.","commit_id":"1296f01c6881e16d97a9d07340a4a42b15a4105e"}],"nova/tests/fixtures.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1891e6f9bbf847265938b2a567fc150ac34901ca","unresolved":false,"context_lines":[{"line_number":713,"context_line":"        for current_port in self._ports:"},{"line_number":714,"context_line":"            if current_port[\u0027id\u0027] \u003d\u003d port:"},{"line_number":715,"context_line":"                return {\u0027port\u0027: current_port}"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"    def list_networks(self, retrieve_all\u003dTrue, **_params):"},{"line_number":718,"context_line":"        for k, v in _params.items():"},{"line_number":719,"context_line":"            print(\u0027list_networks : \u0027 + str(type(v)))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a95cdbc_d32ef341","line":716,"updated":"2016-10-10 13:40:34.000000000","message":"Your testing problem is caused by the assumption in the neutonv2/api that the data structure returned by the neutron client is something that can be modified freely. In this fixture you store a dict for a port and then return that dict to the neutronv2/api then netruonv2/api modifies the content of that port dict. This is harmless as the real neturonclient always returns a new port dict based on the REST response of the neutron server. But here in the test you try to return the same port dict for every request. If the port dict is modified along the way then later request will get the modified port dict from your fixture. I think this is causing the \n\nNetworkNotFoundForInstance: Network could not be found for instance 66594118-d0b7-429c-a638-46cfab8a48c2.\n\nexceptions during your test.\n\nI suggest to make sure that even if nova changes what you returned that does not change the internal state of the fixture.","commit_id":"4e08670e1a3f406d9bdbe24d46b4d73310ccbcbb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b36f8b8e5b5391f3ef4e9b371ae6396cd73ff3b","unresolved":false,"context_lines":[{"line_number":907,"context_line":"        return service_obj.SERVICE_VERSION"},{"line_number":908,"context_line":""},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"class NeutronClientFixture(fixtures.Fixture):"},{"line_number":911,"context_line":""},{"line_number":912,"context_line":"    def __init__(self, test):"},{"line_number":913,"context_line":"        super(NeutronClientFixture, self).__init__()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_49fd5539","line":910,"updated":"2016-12-09 08:57:35.000000000","message":"I feel that we can combine NeutronFixture and the NeutronClientFixture","commit_id":"dbb7b89fea2fa7407178a25abaff791ee19aa068"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b36f8b8e5b5391f3ef4e9b371ae6396cd73ff3b","unresolved":false,"context_lines":[{"line_number":912,"context_line":"    def __init__(self, test):"},{"line_number":913,"context_line":"        super(NeutronClientFixture, self).__init__()"},{"line_number":914,"context_line":"        self.test \u003d test"},{"line_number":915,"context_line":"        self._ports \u003d [copy.deepcopy(NeutronFixture.port_1)]"},{"line_number":916,"context_line":"        self._extensions \u003d []"},{"line_number":917,"context_line":"        self._networks \u003d [NeutronFixture.network_1]"},{"line_number":918,"context_line":"        self._subnets \u003d [NeutronFixture.subnet_1]"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_89bccd6d","line":915,"range":{"start_line":915,"start_character":36,"end_line":915,"end_character":58},"updated":"2016-12-09 08:57:35.000000000","message":"This dependency can be avoided if we combine the two fixture","commit_id":"dbb7b89fea2fa7407178a25abaff791ee19aa068"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b36f8b8e5b5391f3ef4e9b371ae6396cd73ff3b","unresolved":false,"context_lines":[{"line_number":922,"context_line":"        super(NeutronClientFixture, self).setUp()"},{"line_number":923,"context_line":""},{"line_number":924,"context_line":"    def create_port(self, body\u003dNone):"},{"line_number":925,"context_line":"        print(\u0027create_port \u0027 + \u0027 b: \u0027 + str(body) + \u0027]\u0027)"},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"    def delete_port(self, port):"},{"line_number":928,"context_line":"        print(\u0027delete_port: \u0027 + port)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_49e635b5","line":925,"updated":"2016-12-09 08:57:35.000000000","message":"let\u0027s remove the print statements","commit_id":"dbb7b89fea2fa7407178a25abaff791ee19aa068"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"7cdc9496e0ea304098243ab4a666a5fa5d81c4a0","unresolved":false,"context_lines":[{"line_number":985,"context_line":""},{"line_number":986,"context_line":"        self.test.stub_out(\u0027nova.network.neutronv2.api.get_client\u0027, k)"},{"line_number":987,"context_line":""},{"line_number":988,"context_line":"#    def create_port(self, body\u003dNone):"},{"line_number":989,"context_line":"#        print(\u0027create_port \u0027 + \u0027 b: \u0027 + str(body) + \u0027]\u0027)"},{"line_number":990,"context_line":""},{"line_number":991,"context_line":"#    def delete_port(self, port):"},{"line_number":992,"context_line":"#        print(\u0027delete_port: \u0027 + port)"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":995,"context_line":"        return copy.deepcopy({\u0027extensions\u0027: self._extensions})"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_1f8ff023","line":992,"range":{"start_line":988,"start_character":0,"end_line":992,"end_character":38},"updated":"2016-12-21 02:48:39.000000000","message":"These lines should be removed.","commit_id":"75d27a796b5feba6bc0b6e0b9423d1868d0dfd5c"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"7cdc9496e0ea304098243ab4a666a5fa5d81c4a0","unresolved":false,"context_lines":[{"line_number":1000,"context_line":"                return copy.deepcopy({\u0027port\u0027: current_port})"},{"line_number":1001,"context_line":""},{"line_number":1002,"context_line":"    def list_networks(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1003,"context_line":"        for k, v in _params.items():"},{"line_number":1004,"context_line":"            print(\u0027list_networks : \u0027 + str(type(v)))"},{"line_number":1005,"context_line":"        return copy.deepcopy({\u0027networks\u0027: self._networks})"},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def list_ports(self, retrieve_all\u003dTrue, **_params):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_1f2b70ec","line":1004,"range":{"start_line":1003,"start_character":0,"end_line":1004,"end_character":52},"updated":"2016-12-21 02:48:39.000000000","message":"ditto","commit_id":"75d27a796b5feba6bc0b6e0b9423d1868d0dfd5c"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"7cdc9496e0ea304098243ab4a666a5fa5d81c4a0","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"        return copy.deepcopy({\u0027networks\u0027: self._networks})"},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def list_ports(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1008,"context_line":"        # for k, v in _params.items():"},{"line_number":1009,"context_line":"        #     print(\u0027list_ports \u0027 + k + \u0027 : [\u0027 + \u0027 \u0027.join(v) + \u0027]\u0027)"},{"line_number":1010,"context_line":"        return copy.deepcopy({\u0027ports\u0027: self._ports})"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"    def list_subnets(self, retrieve_all\u003dTrue, **_params):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_5f99686d","line":1009,"range":{"start_line":1008,"start_character":0,"end_line":1009,"end_character":67},"updated":"2016-12-21 02:48:39.000000000","message":"ditto","commit_id":"75d27a796b5feba6bc0b6e0b9423d1868d0dfd5c"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"7cdc9496e0ea304098243ab4a666a5fa5d81c4a0","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"        return copy.deepcopy({\u0027ports\u0027: self._ports})"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"    def list_subnets(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1013,"context_line":"        for k, v in _params.items():"},{"line_number":1014,"context_line":"            print(\u0027list_subnets \u0027 + k + \u0027 : [\u0027 + str(v) + \u0027]\u0027)"},{"line_number":1015,"context_line":"        return copy.deepcopy({\u0027subnets\u0027: self._subnets})"},{"line_number":1016,"context_line":""},{"line_number":1017,"context_line":"    def list_floatingips(self, retrieve_all\u003dTrue, **_params):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_5fe7a8e3","line":1014,"range":{"start_line":1013,"start_character":0,"end_line":1014,"end_character":62},"updated":"2016-12-21 02:48:39.000000000","message":"ditto","commit_id":"75d27a796b5feba6bc0b6e0b9423d1868d0dfd5c"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"7cdc9496e0ea304098243ab4a666a5fa5d81c4a0","unresolved":false,"context_lines":[{"line_number":1015,"context_line":"        return copy.deepcopy({\u0027subnets\u0027: self._subnets})"},{"line_number":1016,"context_line":""},{"line_number":1017,"context_line":"    def list_floatingips(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1018,"context_line":"        for k, v in _params.items():"},{"line_number":1019,"context_line":"            print(\u0027list_floatingips \u0027 + k + \u0027 : [\u0027 + str(v) + \u0027]\u0027)"},{"line_number":1020,"context_line":"        return copy.deepcopy({\u0027floatingips\u0027: self._floatingips})"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    def update_port(self, port, body\u003dNone):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_5ffec86b","line":1019,"range":{"start_line":1018,"start_character":0,"end_line":1019,"end_character":66},"updated":"2016-12-21 02:48:39.000000000","message":"ditto","commit_id":"75d27a796b5feba6bc0b6e0b9423d1868d0dfd5c"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"7cdc9496e0ea304098243ab4a666a5fa5d81c4a0","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"            }"},{"line_number":1034,"context_line":"        )"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        print(\u0027!! update_port: \u0027 + port + \u0027 b: \u0027 + str(body) + \u0027]\u0027)"},{"line_number":1037,"context_line":"        return {\u0027port\u0027: new_port}"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_7f01c469","line":1036,"range":{"start_line":1036,"start_character":0,"end_line":1036,"end_character":67},"updated":"2016-12-21 02:48:39.000000000","message":"ditto","commit_id":"75d27a796b5feba6bc0b6e0b9423d1868d0dfd5c"}],"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":"ea71e3ffab6e2549aa7ddaa619ab343c5a5618c0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                extra_params\u003d{\u0027networks\u0027:"},{"line_number":142,"context_line":"                                  [{\u0027port\u0027: NeutronFixture.port_1[\u0027id\u0027]}]})"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027addFixedIp\u0027: {\u0027networkId\u0027: NeutronFixture.network_1[\u0027id\u0027]}})"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        time.sleep(3)"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_63785d90","line":144,"updated":"2016-06-23 09:32:58.000000000","message":"this REST call will end up calling add_fixed_ip_to_instance in the neutron api[1]. Neutron API is simulated with the NeutronFixture in this test environment, see Line 21 in this file. Most probably your test fails as the fixture is not prepared to handle the neutron interaction needed for the addFixedIp REST call. \nYou have to look at the sequence of [1] and adapt the fixture for your need based on the neutron client calls on [1].\n\n\n[1] https://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L994","commit_id":"8594c326bbd3d5f592a0c544fc8e65a08ab170a5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ea71e3ffab6e2549aa7ddaa619ab343c5a5618c0","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027addFixedIp\u0027: {\u0027networkId\u0027: NeutronFixture.network_1[\u0027id\u0027]}})"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        time.sleep(3)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        self.assertEqual(2, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":149,"context_line":"        self._verify_notification("}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_03fb59c2","line":146,"updated":"2016-06-23 09:32:58.000000000","message":"sleeps looks ugly. Do we have a way to check from the nova REST API that the ip is added to the instance?","commit_id":"8594c326bbd3d5f592a0c544fc8e65a08ab170a5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1d5ea7b83cd22c381b143e04aacc77efc4a9b3d5","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                  [{\u0027port\u0027:"},{"line_number":226,"context_line":"                                      fixtures.NeutronFixture.port_1[\u0027id\u0027]}]})"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {"},{"line_number":229,"context_line":"            \u0027addFixedIp\u0027: {"},{"line_number":230,"context_line":"                \u0027networkId\u0027:"},{"line_number":231,"context_line":"                    fixtures.NeutronFixture.network_1[\u0027id\u0027]}})"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        time.sleep(0.5)"},{"line_number":234,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_d5d482be","line":231,"range":{"start_line":228,"start_character":0,"end_line":231,"end_character":62},"updated":"2016-07-05 07:35:53.000000000","message":"Now I see why the number of ip addresses is not increased in the notification. The NeutronFixture only returns a single ip in the network you are providing to the addFixedIp action and that ip is already attached to the instance at boot. See L 225.\n\nI think it would be better to extend the NeutronFixture in a way that you can say to the fixture to return more than one ip addresses after your action for the given instance (or add inteligence to it to remember what ips are allocated to what instance)\nand then make sure that the new ip is showing up in the notification also.","commit_id":"96a85f28d752dd017d3f944c639d2e5e1baad800"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1d5ea7b83cd22c381b143e04aacc77efc4a9b3d5","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                \u0027networkId\u0027:"},{"line_number":231,"context_line":"                    fixtures.NeutronFixture.network_1[\u0027id\u0027]}})"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        time.sleep(0.5)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        self.assertEqual(2, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":236,"context_line":"        self._verify_notification("}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_d87157aa","line":233,"updated":"2016-07-05 07:35:53.000000000","message":"There is http://developer.openstack.org/api-ref/compute/?expanded\u003dlist-port-interfaces-detail#list-port-interfaces REST API that shows the attached interfaces, theoretically it can be used to detect if the addFixedIp call was successful and the new fixed ip is attached. So the sleep can be transformed out.","commit_id":"96a85f28d752dd017d3f944c639d2e5e1baad800"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b36f8b8e5b5391f3ef4e9b371ae6396cd73ff3b","unresolved":false,"context_lines":[{"line_number":612,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":613,"context_line":"        print(\u0027self.api.post_server_action returned\u0027)"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        self.assertTrue(\u0027okes\u0027)"},{"line_number":616,"context_line":"        print(\u0027finished\u0027)"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":619,"context_line":"        time.sleep(5)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_8963ed19","line":616,"range":{"start_line":615,"start_character":0,"end_line":616,"end_character":25},"updated":"2016-12-09 08:57:35.000000000","message":"This needs to be cleaned up","commit_id":"dbb7b89fea2fa7407178a25abaff791ee19aa068"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"7cdc9496e0ea304098243ab4a666a5fa5d81c4a0","unresolved":false,"context_lines":[{"line_number":646,"context_line":"            replacements\u003d{"},{"line_number":647,"context_line":"                \u0027reservation_id\u0027: server[\u0027reservation_id\u0027],"},{"line_number":648,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"},{"line_number":649,"context_line":"                    actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[0])"},{"line_number":650,"context_line":"        self._verify_notification("},{"line_number":651,"context_line":"            \u0027instance-add_fixed_ip-end\u0027,"},{"line_number":652,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_5f5a4884","line":649,"range":{"start_line":649,"start_character":20,"end_line":649,"end_character":68},"updated":"2016-12-21 02:48:39.000000000","message":"nit: Indent","commit_id":"75d27a796b5feba6bc0b6e0b9423d1868d0dfd5c"}]}
