)]}'
{"tempest/common/waiters.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f22b498fdd23530be24c3a191ece2d288b41da61","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        time.sleep(client.build_interval)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"def wait_for_port_status(client, port_id, status, raise_on_error\u003dFalse,"},{"line_number":296,"context_line":"                         raise_on_timeout\u003dFalse):"},{"line_number":297,"context_line":"    \"\"\"Waits for a port to reach a given status.\"\"\""},{"line_number":298,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_a42a947c","line":295,"updated":"2016-11-09 02:16:48.000000000","message":"FYI, we have some similar existing code in a compute API test here:\n\nhttps://github.com/openstack/tempest/blob/master/tempest/api/compute/servers/test_attach_interfaces.py#L77","commit_id":"16e0558e293909bda80325012ecde98ae53d7127"},{"author":{"_account_id":27078,"name":"Manik Bindlish","email":"manikbindlish19@gmail.com","username":"manik"},"change_message_id":"7d41a2fd7d241c2ce73332c941c681524f55dcb3","unresolved":false,"context_lines":[{"line_number":351,"context_line":"                message \u003d \u0027(%s) %s\u0027 % (caller, message)"},{"line_number":352,"context_line":"            if raise_on_timeout:"},{"line_number":353,"context_line":"                raise exceptions.TimeoutException(message)"},{"line_number":354,"context_line":"            else:"},{"line_number":355,"context_line":"                LOG.warning(message)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        old_status \u003d port_status"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_37e7bcae","line":355,"range":{"start_line":354,"start_character":12,"end_line":355,"end_character":36},"updated":"2018-08-28 06:31:19.000000000","message":"What about when \"raise_on_timeout\" and \"raise_on_error\" is false. We are expecting some status other than Error.\n\ntimed_out is more than timeout and status has not changed to expected status till timeout. Again the loop will run for infinite time as there is no return here.\n\nSo while loop should only run when timeout is not completed.","commit_id":"1336b3c29ffee465081793e5d575ad7ef38818f8"}],"tempest/scenario/manager.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d2af44cd0d632ac04aeeb2cf0dab373cc40b22ad","unresolved":false,"context_lines":[{"line_number":699,"context_line":"            *args, **kwargs)"},{"line_number":700,"context_line":"        return routers_list[\u0027routers\u0027]"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def _list_ports(self, *args, **kwargs):"},{"line_number":703,"context_line":"        \"\"\"List ports using admin creds \"\"\""},{"line_number":704,"context_line":"        wait_until \u003d kwargs.pop(\u0027wait_until\u0027, None)"},{"line_number":705,"context_line":"        ports_list \u003d self.admin_manager.ports_client.list_ports("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_65f8bfe6","line":702,"updated":"2016-10-11 10:08:19.000000000","message":"A method called \"list_port\" shouldn\u0027t wait for anything. It seems a bit wrong. \n\nI suggest you move the call to wait_for_port_status to another method or inside the _get_server_port_id_and_ip4 method","commit_id":"cca31bcb98c9b8d68756c69b039d5479fac821e9"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"2f3ae8a5c0653ff00759102cab49cbf31b811a5d","unresolved":false,"context_lines":[{"line_number":699,"context_line":"            *args, **kwargs)"},{"line_number":700,"context_line":"        return routers_list[\u0027routers\u0027]"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def _list_ports(self, *args, **kwargs):"},{"line_number":703,"context_line":"        \"\"\"List ports using admin creds \"\"\""},{"line_number":704,"context_line":"        wait_until \u003d kwargs.pop(\u0027wait_until\u0027, None)"},{"line_number":705,"context_line":"        ports_list \u003d self.admin_manager.ports_client.list_ports("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_688896e8","line":702,"in_reply_to":"fa6399be_65f8bfe6","updated":"2016-10-11 10:39:16.000000000","message":"Done","commit_id":"cca31bcb98c9b8d68756c69b039d5479fac821e9"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"73e38c361fc755336ecaba935160bee5a7e6943d","unresolved":false,"context_lines":[{"line_number":807,"context_line":"                    for fxip in p[\"fixed_ips\"]"},{"line_number":808,"context_line":"                    if netutils.is_valid_ipv4(fxip[\"ip_address\"])"},{"line_number":809,"context_line":"                    and p[\u0027status\u0027] in p_status]"},{"line_number":810,"context_line":"        inactive \u003d [p for p in ports if p[\u0027status\u0027] !\u003d \u0027ACTIVE\u0027]"},{"line_number":811,"context_line":"        if inactive:"},{"line_number":812,"context_line":"            LOG.warning(\"Instance has ports that are not ACTIVE: %s\", inactive)"},{"line_number":813,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_527c6372","line":810,"updated":"2016-10-11 09:43:33.000000000","message":"What is this line for then ? Is it redundant now ? Can we remove it ?","commit_id":"cca31bcb98c9b8d68756c69b039d5479fac821e9"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d2af44cd0d632ac04aeeb2cf0dab373cc40b22ad","unresolved":false,"context_lines":[{"line_number":807,"context_line":"                    for fxip in p[\"fixed_ips\"]"},{"line_number":808,"context_line":"                    if netutils.is_valid_ipv4(fxip[\"ip_address\"])"},{"line_number":809,"context_line":"                    and p[\u0027status\u0027] in p_status]"},{"line_number":810,"context_line":"        inactive \u003d [p for p in ports if p[\u0027status\u0027] !\u003d \u0027ACTIVE\u0027]"},{"line_number":811,"context_line":"        if inactive:"},{"line_number":812,"context_line":"            LOG.warning(\"Instance has ports that are not ACTIVE: %s\", inactive)"},{"line_number":813,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_25524714","line":810,"in_reply_to":"fa6399be_327e0fe5","updated":"2016-10-11 10:08:19.000000000","message":"Ok, thanks for the explanation.","commit_id":"cca31bcb98c9b8d68756c69b039d5479fac821e9"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"e42dd2b6896eff2abd32fc385037edb90d68f9c5","unresolved":false,"context_lines":[{"line_number":807,"context_line":"                    for fxip in p[\"fixed_ips\"]"},{"line_number":808,"context_line":"                    if netutils.is_valid_ipv4(fxip[\"ip_address\"])"},{"line_number":809,"context_line":"                    and p[\u0027status\u0027] in p_status]"},{"line_number":810,"context_line":"        inactive \u003d [p for p in ports if p[\u0027status\u0027] !\u003d \u0027ACTIVE\u0027]"},{"line_number":811,"context_line":"        if inactive:"},{"line_number":812,"context_line":"            LOG.warning(\"Instance has ports that are not ACTIVE: %s\", inactive)"},{"line_number":813,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_327e0fe5","line":810,"in_reply_to":"fa6399be_527c6372","updated":"2016-10-11 09:57:06.000000000","message":"this line filters inactive ports, and it is for logging purposes. It can still be useful to see what ports are still inactive.\n\nat the moment, the new port waiter is not fatal. after it times out, execution continues as normal.","commit_id":"cca31bcb98c9b8d68756c69b039d5479fac821e9"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"7ac3f517de2f902e3dcfe7299c00cfb5f8b9c41a","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                    port[\u0027id\u0027], status\u003dactive_status)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"            # getting a fresh, updated list of ports."},{"line_number":791,"context_line":"            ports \u003d self._list_ports(device_id\u003dserver[\u0027id\u0027], fixed_ip\u003dip_addr)"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        # A port can have more then one IP address in some cases."},{"line_number":794,"context_line":"        # If the network is dual-stack (IPv4 + IPv6), this port is associated"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_4bee618c","line":791,"updated":"2016-10-11 14:29:59.000000000","message":"That line shouldn\"t be in the for loop but outside.","commit_id":"07e5b02035df9b2ce90175c283a8395890912d0e"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"fd7b2e81b45fec6526eabc33af8736959f23066c","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                    port[\u0027id\u0027], status\u003dactive_status)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"            # getting a fresh, updated list of ports."},{"line_number":791,"context_line":"            ports \u003d self._list_ports(device_id\u003dserver[\u0027id\u0027], fixed_ip\u003dip_addr)"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        # A port can have more then one IP address in some cases."},{"line_number":794,"context_line":"        # If the network is dual-stack (IPv4 + IPv6), this port is associated"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_d6dbf519","line":791,"in_reply_to":"fa6399be_4bee618c","updated":"2016-10-11 15:44:36.000000000","message":"Done","commit_id":"07e5b02035df9b2ce90175c283a8395890912d0e"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"c06a5cf134c4dacea48a67ebc981f610bbdf0874","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        ports \u003d self._list_ports(device_id\u003dserver[\u0027id\u0027], fixed_ip\u003dip_addr)"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        # wait for ports to become active before proceeding."},{"line_number":783,"context_line":"        active_status \u003d \u0027ACTIVE\u0027"},{"line_number":784,"context_line":"        for port in ports:"},{"line_number":785,"context_line":"            if active_status !\u003d port[\u0027status\u0027]:"},{"line_number":786,"context_line":"                waiters.wait_for_port_status("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_73e15bfe","line":783,"updated":"2016-10-18 11:27:54.000000000","message":"I have doubts about we really want to run this with ironic.","commit_id":"e66e15d5afc0e6d09c8025e41cbd8e38cb7c13eb"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"29eb9be75c034b806795618665f90a1e1df6bd2b","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        ports \u003d self._list_ports(device_id\u003dserver[\u0027id\u0027], fixed_ip\u003dip_addr)"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"        # wait for ports to become active before proceeding."},{"line_number":783,"context_line":"        active_status \u003d \u0027ACTIVE\u0027"},{"line_number":784,"context_line":"        for port in ports:"},{"line_number":785,"context_line":"            if active_status !\u003d port[\u0027status\u0027]:"},{"line_number":786,"context_line":"                waiters.wait_for_port_status("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_b3cdb35f","line":783,"in_reply_to":"fa6399be_73e15bfe","updated":"2016-10-18 11:29:25.000000000","message":"ah, I see. makes sense.","commit_id":"e66e15d5afc0e6d09c8025e41cbd8e38cb7c13eb"},{"author":{"_account_id":16437,"name":"Anna Babich","email":"anna.v.babich@gmail.com","username":"ababich"},"change_message_id":"67e04fd49017e75d85ec2110c2ce7a7696012752","unresolved":false,"context_lines":[{"line_number":803,"context_line":""},{"line_number":804,"context_line":"    def _get_server_port_id_and_ip4(self, server, ip_addr\u003dNone):"},{"line_number":805,"context_line":"        ports \u003d self._list_ports(device_id\u003dserver[\u0027id\u0027], fixed_ip\u003dip_addr)"},{"line_number":806,"context_line":"        active_status \u003d \u0027ACTIVE\u0027"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        # A port can have more then one IP address in some cases."},{"line_number":809,"context_line":"        # If the network is dual-stack (IPv4 + IPv6), this port is associated"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_71ea8875","line":806,"updated":"2016-11-03 09:19:28.000000000","message":"Why do we need this extra variable? The code was already clear without adding it","commit_id":"3fe60f9654e641d9b091f23700c6c65f9b731df9"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"15c5fa4f35bc1ee5a9a5a33a8bf8868d9cdb3774","unresolved":false,"context_lines":[{"line_number":803,"context_line":""},{"line_number":804,"context_line":"    def _get_server_port_id_and_ip4(self, server, ip_addr\u003dNone):"},{"line_number":805,"context_line":"        ports \u003d self._list_ports(device_id\u003dserver[\u0027id\u0027], fixed_ip\u003dip_addr)"},{"line_number":806,"context_line":"        active_status \u003d \u0027ACTIVE\u0027"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        # A port can have more then one IP address in some cases."},{"line_number":809,"context_line":"        # If the network is dual-stack (IPv4 + IPv6), this port is associated"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_d22ee88a","line":806,"in_reply_to":"ba5da102_71ea8875","updated":"2016-11-03 13:32:41.000000000","message":"I would say it\u0027s cleaner this way, not a fan of hardcoding.","commit_id":"3fe60f9654e641d9b091f23700c6c65f9b731df9"},{"author":{"_account_id":16437,"name":"Anna Babich","email":"anna.v.babich@gmail.com","username":"ababich"},"change_message_id":"67e04fd49017e75d85ec2110c2ce7a7696012752","unresolved":false,"context_lines":[{"line_number":805,"context_line":"        ports \u003d self._list_ports(device_id\u003dserver[\u0027id\u0027], fixed_ip\u003dip_addr)"},{"line_number":806,"context_line":"        active_status \u003d \u0027ACTIVE\u0027"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        # A port can have more then one IP address in some cases."},{"line_number":809,"context_line":"        # If the network is dual-stack (IPv4 + IPv6), this port is associated"},{"line_number":810,"context_line":"        # with 2 subnets"},{"line_number":811,"context_line":"        p_status \u003d [active_status]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_31c2d0e9","line":808,"range":{"start_line":808,"start_character":31,"end_line":808,"end_character":35},"updated":"2016-11-03 09:19:28.000000000","message":"Please, fix it backward to \"than\"","commit_id":"3fe60f9654e641d9b091f23700c6c65f9b731df9"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"15c5fa4f35bc1ee5a9a5a33a8bf8868d9cdb3774","unresolved":false,"context_lines":[{"line_number":805,"context_line":"        ports \u003d self._list_ports(device_id\u003dserver[\u0027id\u0027], fixed_ip\u003dip_addr)"},{"line_number":806,"context_line":"        active_status \u003d \u0027ACTIVE\u0027"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        # A port can have more then one IP address in some cases."},{"line_number":809,"context_line":"        # If the network is dual-stack (IPv4 + IPv6), this port is associated"},{"line_number":810,"context_line":"        # with 2 subnets"},{"line_number":811,"context_line":"        p_status \u003d [active_status]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_32080428","line":808,"range":{"start_line":808,"start_character":31,"end_line":808,"end_character":35},"in_reply_to":"ba5da102_31c2d0e9","updated":"2016-11-03 13:32:41.000000000","message":"Done. Slipped while rebasing.","commit_id":"3fe60f9654e641d9b091f23700c6c65f9b731df9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f22b498fdd23530be24c3a191ece2d288b41da61","unresolved":false,"context_lines":[{"line_number":860,"context_line":"            port_id, ip4 \u003d self._get_server_port_id_and_ip4(thing)"},{"line_number":861,"context_line":"        else:"},{"line_number":862,"context_line":"            ip4 \u003d None"},{"line_number":863,"context_line":"        result \u003d client.create_floatingip("},{"line_number":864,"context_line":"            floating_network_id\u003dexternal_network_id,"},{"line_number":865,"context_line":"            port_id\u003dport_id,"},{"line_number":866,"context_line":"            tenant_id\u003dthing[\u0027tenant_id\u0027],"},{"line_number":867,"context_line":"            fixed_ip_address\u003dip4"},{"line_number":868,"context_line":"        )"},{"line_number":869,"context_line":"        floating_ip \u003d result[\u0027floatingip\u0027]"},{"line_number":870,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":871,"context_line":"                        self.floating_ips_client.delete_floatingip,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_61030e10","line":868,"range":{"start_line":863,"start_character":8,"end_line":868,"end_character":9},"updated":"2016-11-09 02:16:48.000000000","message":"Will this fail if the port is not active?","commit_id":"16e0558e293909bda80325012ecde98ae53d7127"}]}
