)]}'
{"neutron_tempest_plugin/api/base.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"47f169ec46a7aaa2aab8ef20884da1f1bf9f2fca","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        client \u003d client or cls.client"},{"line_number":623,"context_line":"        external_network_id \u003d (external_network_id or"},{"line_number":624,"context_line":"                               cls.external_network_id)"},{"line_number":625,"context_line":"        wait_fip_up \u003d kwargs.pop(\"wait_fip_up\", True)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        if port:"},{"line_number":628,"context_line":"            port_id \u003d kwargs.setdefault(\u0027port_id\u0027, port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_35e060cd","line":625,"range":{"start_line":625,"start_character":22,"end_line":625,"end_character":28},"updated":"2019-05-15 09:52:45.000000000","message":"Why not defining wait_fip_up parameter on L602? kwargs here are used mostly as parameters for floating ip creation.","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"fd4ca3505488662fc423c5627d398ed3b91c91df","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        client \u003d client or cls.client"},{"line_number":623,"context_line":"        external_network_id \u003d (external_network_id or"},{"line_number":624,"context_line":"                               cls.external_network_id)"},{"line_number":625,"context_line":"        wait_fip_up \u003d kwargs.pop(\"wait_fip_up\", True)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        if port:"},{"line_number":628,"context_line":"            port_id \u003d kwargs.setdefault(\u0027port_id\u0027, port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_706ca69b","line":625,"range":{"start_line":625,"start_character":22,"end_line":625,"end_character":28},"in_reply_to":"dfbec78f_35e060cd","updated":"2019-05-15 10:49:46.000000000","message":"Just do not want to influence the current parameters list, and we pop the key here.","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a3182f90abb61ea75c950a3528490eae7989b79e","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        client \u003d client or cls.client"},{"line_number":623,"context_line":"        external_network_id \u003d (external_network_id or"},{"line_number":624,"context_line":"                               cls.external_network_id)"},{"line_number":625,"context_line":"        wait_fip_up \u003d kwargs.pop(\"wait_fip_up\", True)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        if port:"},{"line_number":628,"context_line":"            port_id \u003d kwargs.setdefault(\u0027port_id\u0027, port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_7691fef0","line":625,"range":{"start_line":625,"start_character":22,"end_line":625,"end_character":28},"in_reply_to":"dfbec78f_701a6617","updated":"2019-05-15 13:39:38.000000000","message":"Make sense.\nMy original thoughts is that do not influence the explicit parameter list. Because here accepts kwargs, in some calling functions, they may already have some explicit parameter list and k-w args. In order to make the the parameter order (disorder is okay, but reduced readability) align with the definition here, then we may need more work for achieving that.","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bf3b5ab6183cec5113f641d2570309d4d61e0cba","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        client \u003d client or cls.client"},{"line_number":623,"context_line":"        external_network_id \u003d (external_network_id or"},{"line_number":624,"context_line":"                               cls.external_network_id)"},{"line_number":625,"context_line":"        wait_fip_up \u003d kwargs.pop(\"wait_fip_up\", True)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        if port:"},{"line_number":628,"context_line":"            port_id \u003d kwargs.setdefault(\u0027port_id\u0027, port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_701a6617","line":625,"range":{"start_line":625,"start_character":22,"end_line":625,"end_character":28},"in_reply_to":"dfbec78f_706ca69b","updated":"2019-05-15 12:37:18.000000000","message":"But why? If you add a new parameter to a method, it\u0027s natural you need to change the definition of the function. I find this confusing a bit. The reason why this method has **kwargs is because it wraps around create_floatingip.","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"47f169ec46a7aaa2aab8ef20884da1f1bf9f2fca","unresolved":false,"context_lines":[{"line_number":655,"context_line":"        utils.wait_until_true(lambda: cls._check_fip_status("},{"line_number":656,"context_line":"            client, fip[\u0027id\u0027], status),"},{"line_number":657,"context_line":"            timeout\u003d120,"},{"line_number":658,"context_line":"            sleep\u003d1)"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    @classmethod"},{"line_number":661,"context_line":"    def delete_floatingip(cls, floating_ip, client\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_95a6ecaa","line":658,"updated":"2019-05-15 09:52:45.000000000","message":"Would be good to provide a custom exception with a meaningful message. It helps troubleshooting in case the fip doesn\u0027t come up. Currently, you just get TimeoutException with no explanation and you need to go to the code and have a look, what actually happened.","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"88d88a94a49e7b9ab24572b3189e8c2c99abe22d","unresolved":false,"context_lines":[{"line_number":655,"context_line":"        utils.wait_until_true(lambda: cls._check_fip_status("},{"line_number":656,"context_line":"            client, fip[\u0027id\u0027], status),"},{"line_number":657,"context_line":"            timeout\u003d120,"},{"line_number":658,"context_line":"            sleep\u003d1)"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    @classmethod"},{"line_number":661,"context_line":"    def delete_floatingip(cls, floating_ip, client\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_2a431615","line":658,"in_reply_to":"dfbec78f_95a6ecaa","updated":"2019-05-15 13:51:47.000000000","message":"Done","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0722bc80d5a675bc9f353d17295b49e2807a3566","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        client \u003d client or cls.client"},{"line_number":623,"context_line":"        external_network_id \u003d (external_network_id or"},{"line_number":624,"context_line":"                               cls.external_network_id)"},{"line_number":625,"context_line":"        wait_fip_up \u003d kwargs.pop(\"wait_fip_up\", True)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        if port:"},{"line_number":628,"context_line":"            port_id \u003d kwargs.setdefault(\u0027port_id\u0027, port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_6dc2885b","line":625,"range":{"start_line":625,"start_character":8,"end_line":625,"end_character":19},"updated":"2019-05-15 15:03:50.000000000","message":"nit: wait_until_up ?\n\nAnd as Jakub mentioned, having this a parameter instead of in kwargs would probably be cleaner.","commit_id":"3c5c2cc142a6e467455db42d96834f727ba40dae"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a38671572fe64e6c60eb2d23b5ad2f33ef5fe290","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        client \u003d client or cls.client"},{"line_number":623,"context_line":"        external_network_id \u003d (external_network_id or"},{"line_number":624,"context_line":"                               cls.external_network_id)"},{"line_number":625,"context_line":"        wait_fip_up \u003d kwargs.pop(\"wait_fip_up\", True)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        if port:"},{"line_number":628,"context_line":"            port_id \u003d kwargs.setdefault(\u0027port_id\u0027, port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_9d74b8d0","line":625,"range":{"start_line":625,"start_character":8,"end_line":625,"end_character":19},"in_reply_to":"dfbec78f_6dc2885b","updated":"2019-05-16 15:31:43.000000000","message":"Done","commit_id":"3c5c2cc142a6e467455db42d96834f727ba40dae"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0722bc80d5a675bc9f353d17295b49e2807a3566","unresolved":false,"context_lines":[{"line_number":650,"context_line":"        return fip[\u0027status\u0027] \u003d\u003d except_status"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    @classmethod"},{"line_number":653,"context_line":"    def wait_for_fip_active(cls, client, fip, status\u003d\u0027ACTIVE\u0027):"},{"line_number":654,"context_line":"        \"\"\"Waits for a floating IP to reach active status.\"\"\""},{"line_number":655,"context_line":"        utils.wait_until_true(lambda: cls._check_fip_status("},{"line_number":656,"context_line":"            client, fip[\u0027id\u0027], status),"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_adf72059","line":653,"updated":"2019-05-15 15:03:50.000000000","message":"For consistency should use const.FLOATINGIP_STATUS_ACTIVE","commit_id":"3c5c2cc142a6e467455db42d96834f727ba40dae"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a38671572fe64e6c60eb2d23b5ad2f33ef5fe290","unresolved":false,"context_lines":[{"line_number":650,"context_line":"        return fip[\u0027status\u0027] \u003d\u003d except_status"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    @classmethod"},{"line_number":653,"context_line":"    def wait_for_fip_active(cls, client, fip, status\u003d\u0027ACTIVE\u0027):"},{"line_number":654,"context_line":"        \"\"\"Waits for a floating IP to reach active status.\"\"\""},{"line_number":655,"context_line":"        utils.wait_until_true(lambda: cls._check_fip_status("},{"line_number":656,"context_line":"            client, fip[\u0027id\u0027], status),"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_3d7fccab","line":653,"in_reply_to":"dfbec78f_adf72059","updated":"2019-05-16 15:31:43.000000000","message":"Done","commit_id":"3c5c2cc142a6e467455db42d96834f727ba40dae"}],"neutron_tempest_plugin/scenario/base.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"47f169ec46a7aaa2aab8ef20884da1f1bf9f2fca","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                                           device_id\u003dself.server["},{"line_number":212,"context_line":"                                               \u0027server\u0027][\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":213,"context_line":"        fixed_ip \u003d self.port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":214,"context_line":"        namespace \u003d \u0027qrouter-%s\u0027 % router[\u0027id\u0027]"},{"line_number":215,"context_line":"        # We will ping fixed IP until True."},{"line_number":216,"context_line":"        self.wait_for_server_status_by_ping_fixed_ip(fixed_ip, namespace)"},{"line_number":217,"context_line":"        self.fip \u003d self.create_floatingip(port\u003dself.port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_f5972839","line":214,"range":{"start_line":214,"start_character":8,"end_line":214,"end_character":47},"updated":"2019-05-15 09:52:45.000000000","message":"What if the tempest test is not running on a node with l3 agent?","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4aab4545e43bdc857702eb81d4d69755ed0404e8","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                                           device_id\u003dself.server["},{"line_number":212,"context_line":"                                               \u0027server\u0027][\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":213,"context_line":"        fixed_ip \u003d self.port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":214,"context_line":"        namespace \u003d \u0027qrouter-%s\u0027 % router[\u0027id\u0027]"},{"line_number":215,"context_line":"        # We will ping fixed IP until True."},{"line_number":216,"context_line":"        self.wait_for_server_status_by_ping_fixed_ip(fixed_ip, namespace)"},{"line_number":217,"context_line":"        self.fip \u003d self.create_floatingip(port\u003dself.port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_2a2476ae","line":214,"range":{"start_line":214,"start_character":8,"end_line":214,"end_character":47},"in_reply_to":"dfbec78f_16168256","updated":"2019-05-15 13:42:37.000000000","message":"The problem is that tempest has no access to any host in the cloud. If you want to have a test that is more white box, you can use fullstack framework [1] that allows you to check how the network is wired.\n\n[1] https://opendev.org/openstack/neutron/src/branch/master/TESTING.rst#fullstack-tests","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a3182f90abb61ea75c950a3528490eae7989b79e","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                                           device_id\u003dself.server["},{"line_number":212,"context_line":"                                               \u0027server\u0027][\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":213,"context_line":"        fixed_ip \u003d self.port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":214,"context_line":"        namespace \u003d \u0027qrouter-%s\u0027 % router[\u0027id\u0027]"},{"line_number":215,"context_line":"        # We will ping fixed IP until True."},{"line_number":216,"context_line":"        self.wait_for_server_status_by_ping_fixed_ip(fixed_ip, namespace)"},{"line_number":217,"context_line":"        self.fip \u003d self.create_floatingip(port\u003dself.port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_16168256","line":214,"range":{"start_line":214,"start_character":8,"end_line":214,"end_character":47},"in_reply_to":"dfbec78f_1ba1cb46","updated":"2019-05-15 13:39:38.000000000","message":"Thanks for the information.\nOr something like \"probe\" can achieve this? Use the neutron command to create the probe to the real host, then ping the fixed IP?\nAnyway I will revert this back to only have the waiting_floating_ip.","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bf3b5ab6183cec5113f641d2570309d4d61e0cba","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                                           device_id\u003dself.server["},{"line_number":212,"context_line":"                                               \u0027server\u0027][\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":213,"context_line":"        fixed_ip \u003d self.port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":214,"context_line":"        namespace \u003d \u0027qrouter-%s\u0027 % router[\u0027id\u0027]"},{"line_number":215,"context_line":"        # We will ping fixed IP until True."},{"line_number":216,"context_line":"        self.wait_for_server_status_by_ping_fixed_ip(fixed_ip, namespace)"},{"line_number":217,"context_line":"        self.fip \u003d self.create_floatingip(port\u003dself.port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_1ba1cb46","line":214,"range":{"start_line":214,"start_character":8,"end_line":214,"end_character":47},"in_reply_to":"dfbec78f_f05896fa","updated":"2019-05-15 12:37:18.000000000","message":"I understand what you\u0027re trying to achieve, unfortunately, I don\u0027t think tempest is a good fit for this :( Tempest is supposed to run on any machine against a cloud and we don\u0027t have a concept of a node/host in tempest, because that\u0027s not cloudy.\n\nThat said, I don\u0027t think you\u0027ll be able to ping fixed IP with tempest.","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"fd4ca3505488662fc423c5627d398ed3b91c91df","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                                           device_id\u003dself.server["},{"line_number":212,"context_line":"                                               \u0027server\u0027][\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":213,"context_line":"        fixed_ip \u003d self.port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":214,"context_line":"        namespace \u003d \u0027qrouter-%s\u0027 % router[\u0027id\u0027]"},{"line_number":215,"context_line":"        # We will ping fixed IP until True."},{"line_number":216,"context_line":"        self.wait_for_server_status_by_ping_fixed_ip(fixed_ip, namespace)"},{"line_number":217,"context_line":"        self.fip \u003d self.create_floatingip(port\u003dself.port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_f05896fa","line":214,"range":{"start_line":214,"start_character":8,"end_line":214,"end_character":47},"in_reply_to":"dfbec78f_f5972839","updated":"2019-05-15 10:49:46.000000000","message":"Yep, router can schedule to another node too, then no namespace either. This is just for current zuul test. It should login to the router scheduled host first. And dhcp-namespace is another candidate.\n\nThis patch is still on not stable, I\u0027m still working on it. So you have any idea for this?","commit_id":"ede64df4804d337369f933239ca3bc44ef5e2aa9"}]}
