)]}'
{"tempest/api/compute/servers/test_attach_interfaces.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"20f1ef1b68e4a42b7acae11d8da680d7299bf7e6","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            server[\u0027id\u0027], net_id\u003dnetwork_id)[\u0027interfaceAttachment\u0027]"},{"line_number":112,"context_line":"        iface \u003d waiters.wait_for_interface_status("},{"line_number":113,"context_line":"            self.interfaces_client, server[\u0027id\u0027], iface[\u0027port_id\u0027], \u0027ACTIVE\u0027)"},{"line_number":114,"context_line":"        self._check_interface(iface, network_id\u003dnetwork_id)"},{"line_number":115,"context_line":"        return iface"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def _test_create_interface_by_port_id(self, server, ifs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_96711147","line":114,"updated":"2017-11-28 19:16:53.000000000","message":"here","commit_id":"6903e9a9879662b64949b781fffeb19a65e580f6"},{"author":{"_account_id":21897,"name":"lianghao","email":"lianghao@cmss.chinamobile.com","username":"cloud-liang"},"change_message_id":"2e41eeba9153d236a4dd0a728181ea551fc45985","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            server[\u0027id\u0027], net_id\u003dnetwork_id)[\u0027interfaceAttachment\u0027]"},{"line_number":112,"context_line":"        iface \u003d waiters.wait_for_interface_status("},{"line_number":113,"context_line":"            self.interfaces_client, server[\u0027id\u0027], iface[\u0027port_id\u0027], \u0027ACTIVE\u0027)"},{"line_number":114,"context_line":"        self._check_interface(iface, network_id\u003dnetwork_id)"},{"line_number":115,"context_line":"        return iface"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def _test_create_interface_by_port_id(self, server, ifs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_42fc193d","line":114,"in_reply_to":"ff82abbf_96711147","updated":"2017-11-29 02:09:54.000000000","message":"Done","commit_id":"6903e9a9879662b64949b781fffeb19a65e580f6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"20f1ef1b68e4a42b7acae11d8da680d7299bf7e6","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":124,"context_line":"        iface \u003d waiters.wait_for_interface_status("},{"line_number":125,"context_line":"            self.interfaces_client, server[\u0027id\u0027], iface[\u0027port_id\u0027], \u0027ACTIVE\u0027)"},{"line_number":126,"context_line":"        self._check_interface(iface, port_id\u003dport_id, network_id\u003dnetwork_id)"},{"line_number":127,"context_line":"        return iface"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _test_create_interface_by_fixed_ips(self, server, ifs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_169bc165","line":126,"updated":"2017-11-28 19:16:53.000000000","message":"here","commit_id":"6903e9a9879662b64949b781fffeb19a65e580f6"},{"author":{"_account_id":21897,"name":"lianghao","email":"lianghao@cmss.chinamobile.com","username":"cloud-liang"},"change_message_id":"2e41eeba9153d236a4dd0a728181ea551fc45985","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":124,"context_line":"        iface \u003d waiters.wait_for_interface_status("},{"line_number":125,"context_line":"            self.interfaces_client, server[\u0027id\u0027], iface[\u0027port_id\u0027], \u0027ACTIVE\u0027)"},{"line_number":126,"context_line":"        self._check_interface(iface, port_id\u003dport_id, network_id\u003dnetwork_id)"},{"line_number":127,"context_line":"        return iface"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _test_create_interface_by_fixed_ips(self, server, ifs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_e2ebed74","line":126,"in_reply_to":"ff82abbf_169bc165","updated":"2017-11-29 02:09:54.000000000","message":"Done","commit_id":"6903e9a9879662b64949b781fffeb19a65e580f6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"20f1ef1b68e4a42b7acae11d8da680d7299bf7e6","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        self.addCleanup(self.ports_client.delete_port, iface[\u0027port_id\u0027])"},{"line_number":143,"context_line":"        iface \u003d waiters.wait_for_interface_status("},{"line_number":144,"context_line":"            self.interfaces_client, server[\u0027id\u0027], iface[\u0027port_id\u0027], \u0027ACTIVE\u0027)"},{"line_number":145,"context_line":"        self._check_interface(iface, fixed_ip\u003dip_list[0])"},{"line_number":146,"context_line":"        return iface"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _test_show_interface(self, server, ifs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_7676cd40","line":145,"updated":"2017-11-28 19:16:53.000000000","message":"here","commit_id":"6903e9a9879662b64949b781fffeb19a65e580f6"},{"author":{"_account_id":21897,"name":"lianghao","email":"lianghao@cmss.chinamobile.com","username":"cloud-liang"},"change_message_id":"2e41eeba9153d236a4dd0a728181ea551fc45985","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        self.addCleanup(self.ports_client.delete_port, iface[\u0027port_id\u0027])"},{"line_number":143,"context_line":"        iface \u003d waiters.wait_for_interface_status("},{"line_number":144,"context_line":"            self.interfaces_client, server[\u0027id\u0027], iface[\u0027port_id\u0027], \u0027ACTIVE\u0027)"},{"line_number":145,"context_line":"        self._check_interface(iface, fixed_ip\u003dip_list[0])"},{"line_number":146,"context_line":"        return iface"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _test_show_interface(self, server, ifs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_a201653a","line":145,"in_reply_to":"ff82abbf_7676cd40","updated":"2017-11-29 02:09:54.000000000","message":"Done","commit_id":"6903e9a9879662b64949b781fffeb19a65e580f6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"20f1ef1b68e4a42b7acae11d8da680d7299bf7e6","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            iface \u003d self.interfaces_client.create_interface("},{"line_number":273,"context_line":"                server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":274,"context_line":"            waiters.wait_for_interface_status(self.interfaces_client,"},{"line_number":275,"context_line":"                                              server[\u0027id\u0027], port_id, \u0027ACTIVE\u0027)"},{"line_number":276,"context_line":"            self._check_interface(iface, port_id\u003dport_id)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"            # detach the port from the server; this is a cast in the compute"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_96a6f1aa","line":275,"updated":"2017-11-28 19:16:53.000000000","message":"Most callers of _check_interface() wait for interface status like this. So I am fine to do that here also.\nMaybe it would be fine to move this waiter into _check_interface(), but it is out of scope from this patch.","commit_id":"6903e9a9879662b64949b781fffeb19a65e580f6"},{"author":{"_account_id":21897,"name":"lianghao","email":"lianghao@cmss.chinamobile.com","username":"cloud-liang"},"change_message_id":"2e41eeba9153d236a4dd0a728181ea551fc45985","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            iface \u003d self.interfaces_client.create_interface("},{"line_number":273,"context_line":"                server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":274,"context_line":"            waiters.wait_for_interface_status(self.interfaces_client,"},{"line_number":275,"context_line":"                                              server[\u0027id\u0027], port_id, \u0027ACTIVE\u0027)"},{"line_number":276,"context_line":"            self._check_interface(iface, port_id\u003dport_id)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"            # detach the port from the server; this is a cast in the compute"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_02985119","line":275,"in_reply_to":"ff82abbf_96a6f1aa","updated":"2017-11-29 02:09:54.000000000","message":"Done","commit_id":"6903e9a9879662b64949b781fffeb19a65e580f6"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"68d4888cde680f09801a9fe491bc952e13f57f1f","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        return port"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _check_interface(self, iface, server\u003dNone, port_id\u003dNone,"},{"line_number":82,"context_line":"                         network_id\u003dNone, fixed_ip\u003dNone, mac_addr\u003dNone):"},{"line_number":83,"context_line":"        if server:"},{"line_number":84,"context_line":"            iface \u003d waiters.wait_for_interface_status("}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_84954989","line":81,"range":{"start_line":81,"start_character":38,"end_line":81,"end_character":44},"updated":"2017-11-29 07:45:31.000000000","message":"better to name \"server_id\"?","commit_id":"cdfaf40d55e1a314250829836d7c0a87d3f2203c"},{"author":{"_account_id":21897,"name":"lianghao","email":"lianghao@cmss.chinamobile.com","username":"cloud-liang"},"change_message_id":"2cc082d3b52e92f1fd1eb7d5043fffaabfa085e1","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        return port"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _check_interface(self, iface, server\u003dNone, port_id\u003dNone,"},{"line_number":82,"context_line":"                         network_id\u003dNone, fixed_ip\u003dNone, mac_addr\u003dNone):"},{"line_number":83,"context_line":"        if server:"},{"line_number":84,"context_line":"            iface \u003d waiters.wait_for_interface_status("}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_c401116c","line":81,"range":{"start_line":81,"start_character":38,"end_line":81,"end_character":44},"in_reply_to":"ff82abbf_84954989","updated":"2017-11-29 08:21:40.000000000","message":"Done","commit_id":"cdfaf40d55e1a314250829836d7c0a87d3f2203c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"68d4888cde680f09801a9fe491bc952e13f57f1f","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            # attach the port to the server"},{"line_number":271,"context_line":"            iface \u003d self.interfaces_client.create_interface("},{"line_number":272,"context_line":"                server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":273,"context_line":"            self._check_interface(iface, server\u003dserver[\u0027id\u0027], port_id\u003dport_id)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"            # detach the port from the server; this is a cast in the compute"},{"line_number":276,"context_line":"            # API so we have to poll the port until the device_id is unset."}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_24e55d38","line":273,"range":{"start_line":273,"start_character":41,"end_line":273,"end_character":60},"updated":"2017-11-29 07:45:31.000000000","message":"What should we expect when we delete a port that is not active?\nIf an error occurs can we deem it a bug?","commit_id":"cdfaf40d55e1a314250829836d7c0a87d3f2203c"},{"author":{"_account_id":21897,"name":"lianghao","email":"lianghao@cmss.chinamobile.com","username":"cloud-liang"},"change_message_id":"2cc082d3b52e92f1fd1eb7d5043fffaabfa085e1","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            # attach the port to the server"},{"line_number":271,"context_line":"            iface \u003d self.interfaces_client.create_interface("},{"line_number":272,"context_line":"                server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":273,"context_line":"            self._check_interface(iface, server\u003dserver[\u0027id\u0027], port_id\u003dport_id)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"            # detach the port from the server; this is a cast in the compute"},{"line_number":276,"context_line":"            # API so we have to poll the port until the device_id is unset."}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_c4d271d1","line":273,"range":{"start_line":273,"start_character":41,"end_line":273,"end_character":60},"in_reply_to":"ff82abbf_24e55d38","updated":"2017-11-29 08:21:40.000000000","message":"At first,before _check_interface and delete_interface,we not wait port reach to active.If the port status is binding and then we try to delete_interface,it will popup ERROR.Ithink it is due to test step.So,I add the description \"before check\niface[\u0027port_id\u0027] and delete_interface, it is better to wait for the status of port reach to active\".","commit_id":"cdfaf40d55e1a314250829836d7c0a87d3f2203c"},{"author":{"_account_id":21897,"name":"lianghao","email":"lianghao@cmss.chinamobile.com","username":"cloud-liang"},"change_message_id":"84525ab7287ea6f7382f1f306475be5617659ae5","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            # attach the port to the server"},{"line_number":271,"context_line":"            iface \u003d self.interfaces_client.create_interface("},{"line_number":272,"context_line":"                server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":273,"context_line":"            self._check_interface(iface, server\u003dserver[\u0027id\u0027], port_id\u003dport_id)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"            # detach the port from the server; this is a cast in the compute"},{"line_number":276,"context_line":"            # API so we have to poll the port until the device_id is unset."}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_4922f9ba","line":273,"range":{"start_line":273,"start_character":41,"end_line":273,"end_character":60},"in_reply_to":"ff82abbf_2941b5a9","updated":"2017-11-29 09:27:38.000000000","message":"Hi zhufl,I think it should be add.Because before delete_interface,there is a step \"check_interface\".\nIf port is binding,check_interface may be fail.","commit_id":"cdfaf40d55e1a314250829836d7c0a87d3f2203c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"8f5711ade47b5766db3cc27602261913064ebac2","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            # attach the port to the server"},{"line_number":271,"context_line":"            iface \u003d self.interfaces_client.create_interface("},{"line_number":272,"context_line":"                server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":273,"context_line":"            self._check_interface(iface, server\u003dserver[\u0027id\u0027], port_id\u003dport_id)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"            # detach the port from the server; this is a cast in the compute"},{"line_number":276,"context_line":"            # API so we have to poll the port until the device_id is unset."}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_2941b5a9","line":273,"range":{"start_line":273,"start_character":41,"end_line":273,"end_character":60},"in_reply_to":"ff82abbf_8942410e","updated":"2017-11-29 09:19:14.000000000","message":"If it SHOULD accept the delete request when port is not active, then we shouldn\u0027t add server\u003dserver[\u0027id\u0027] here.","commit_id":"cdfaf40d55e1a314250829836d7c0a87d3f2203c"},{"author":{"_account_id":21897,"name":"lianghao","email":"lianghao@cmss.chinamobile.com","username":"cloud-liang"},"change_message_id":"84525ab7287ea6f7382f1f306475be5617659ae5","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            # attach the port to the server"},{"line_number":271,"context_line":"            iface \u003d self.interfaces_client.create_interface("},{"line_number":272,"context_line":"                server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":273,"context_line":"            self._check_interface(iface, server\u003dserver[\u0027id\u0027], port_id\u003dport_id)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"            # detach the port from the server; this is a cast in the compute"},{"line_number":276,"context_line":"            # API so we have to poll the port until the device_id is unset."}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_c91fe969","line":273,"range":{"start_line":273,"start_character":41,"end_line":273,"end_character":60},"in_reply_to":"ff82abbf_8942410e","updated":"2017-11-29 09:27:38.000000000","message":"Thanks,get.","commit_id":"cdfaf40d55e1a314250829836d7c0a87d3f2203c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0885ca44fa370a21a6be47de9f4abb5045495793","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            # attach the port to the server"},{"line_number":271,"context_line":"            iface \u003d self.interfaces_client.create_interface("},{"line_number":272,"context_line":"                server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":273,"context_line":"            self._check_interface(iface, server\u003dserver[\u0027id\u0027], port_id\u003dport_id)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"            # detach the port from the server; this is a cast in the compute"},{"line_number":276,"context_line":"            # API so we have to poll the port until the device_id is unset."}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_8942410e","line":273,"range":{"start_line":273,"start_character":41,"end_line":273,"end_character":60},"in_reply_to":"ff82abbf_c4d271d1","updated":"2017-11-29 09:09:09.000000000","message":"humm, it should accept the delete request and delete it like nova does for VM.","commit_id":"cdfaf40d55e1a314250829836d7c0a87d3f2203c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5b8bde8676ae6e50d0d9a31feb9a934f90c45b55","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            # attach the port to the server"},{"line_number":271,"context_line":"            iface \u003d self.interfaces_client.create_interface("},{"line_number":272,"context_line":"                server[\u0027id\u0027], port_id\u003dport_id)[\u0027interfaceAttachment\u0027]"},{"line_number":273,"context_line":"            self._check_interface(iface, server\u003dserver[\u0027id\u0027], port_id\u003dport_id)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"            # detach the port from the server; this is a cast in the compute"},{"line_number":276,"context_line":"            # API so we have to poll the port until the device_id is unset."}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_7b0a0ed2","line":273,"range":{"start_line":273,"start_character":41,"end_line":273,"end_character":60},"in_reply_to":"ff82abbf_c91fe969","updated":"2017-11-30 01:22:42.000000000","message":"I mean i expect that behaviour but i do not know if delete fail when port is not active. \n\nEven if it give error and that is the behaviour from neutron side then also I am ok to wait till port active before we process anything on that.","commit_id":"cdfaf40d55e1a314250829836d7c0a87d3f2203c"}]}
