)]}'
{"tempest/scenario/manager.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"cb1c634aec1a8b4b4297c54226167b18eb1511d8","unresolved":false,"context_lines":[{"line_number":847,"context_line":"            waiters.wait_for_interface_status(self.manager.interfaces_client,"},{"line_number":848,"context_line":"                                              server[\u0027id\u0027], port_id, \u0027ACTIVE\u0027)"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"        # Since waiting for anything to become active that needs to be active"},{"line_number":851,"context_line":"        # will raise on failure, we no longer have to check p[\u0027status\u0027]"},{"line_number":852,"context_line":"        port_map \u003d [(p[\"id\"], fxip[\"ip_address\"])"},{"line_number":853,"context_line":"                    for p in ports"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_195f04df","line":850,"updated":"2018-12-14 15:50:18.000000000","message":"It occurs to me that this isn\u0027t necessarily true for the \u0027ironic\u0027 case. We still would want to make sure that it is at least DOWN and not an ERROR of some kind.","commit_id":"9b66e24e4139ff2eae876a7bdab33282bea0b029"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d28f0146a82cfb0e5c4cb3f500293b06e2567cc","unresolved":false,"context_lines":[{"line_number":836,"context_line":"        # servers. Neutron does not bind ports for Ironic instances, as a"},{"line_number":837,"context_line":"        # result the port remains in the DOWN state."},{"line_number":838,"context_line":"        # TODO(vsaienko) remove once bug: #1599836 is resolved."},{"line_number":839,"context_line":"        ironic \u003d getattr(CONF.service_available, \u0027ironic\u0027, False)"},{"line_number":840,"context_line":"        if ironic:"},{"line_number":841,"context_line":"            p_status.append(\u0027DOWN\u0027)"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        wait_port_id \u003d ["},{"line_number":844,"context_line":"            p[\"id\"] for p in ports for fxip in p[\"fixed_ips\"]"},{"line_number":845,"context_line":"            if (netutils.is_valid_ipv4(fxip[\"ip_address\"]) and"},{"line_number":846,"context_line":"                p[\u0027status\u0027] not in p_status)]"},{"line_number":847,"context_line":"        for port_id in wait_port_id:"},{"line_number":848,"context_line":"            waiters.wait_for_interface_status(self.manager.interfaces_client,"},{"line_number":849,"context_line":"                                              server[\u0027id\u0027], port_id, \u0027ACTIVE\u0027)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"        # Since waiting for anything to become active that needs to be active"},{"line_number":852,"context_line":"        # will raise on failure, we no longer have to check non-ironic status"},{"line_number":853,"context_line":"        port_map \u003d [(p[\"id\"], fxip[\"ip_address\"])"},{"line_number":854,"context_line":"                    for p in ports"},{"line_number":855,"context_line":"                    for fxip in p[\"fixed_ips\"]"},{"line_number":856,"context_line":"                    if (netutils.is_valid_ipv4(fxip[\"ip_address\"]) and (not"},{"line_number":857,"context_line":"                        ironic or p[\u0027status\u0027] in p_status))]"},{"line_number":858,"context_line":"        inactive \u003d [p for p in ports if p[\u0027status\u0027] !\u003d \u0027ACTIVE\u0027]"},{"line_number":859,"context_line":"        if inactive:"},{"line_number":860,"context_line":"            LOG.warning(\"Instance has ports that are not ACTIVE: %s\", inactive)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_a500e668","line":857,"range":{"start_line":839,"start_character":8,"end_line":857,"end_character":60},"updated":"2019-01-17 02:08:45.000000000","message":"one general comment on this function un related to the os-vif chagne.\n\neven if you wait for the port to become active\nit is not safe for any test to used this this allow to know if it can proceed to connect to the guest.\n\nthere can be quite a long delay in some cases between the port becoming active in neutron and the ip becoming reachable on the instance. there can be an even longer delay in the instnace ssh deamon starting up.\n\nfunctions tests that use this function allow to wait\nfor and ip to become actvies then to break if you run tempest against ironic nodes and it you are using qemu second level guest i can also be problematic in the gate.\n\nhttps://review.openstack.org/#/c/600046/9\nis an example of such a case where an extra validation step was required.\n\nas such i would suggest that approch is a much better solution then waiting for the port to become active to adre bug 1728600","commit_id":"ec00b27b759ed962e8ae0b3ea88af295a3f2e934"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e1608518d93301105f32311e50f17385519097af","unresolved":false,"context_lines":[{"line_number":836,"context_line":"        # servers. Neutron does not bind ports for Ironic instances, as a"},{"line_number":837,"context_line":"        # result the port remains in the DOWN state."},{"line_number":838,"context_line":"        # TODO(vsaienko) remove once bug: #1599836 is resolved."},{"line_number":839,"context_line":"        ironic \u003d getattr(CONF.service_available, \u0027ironic\u0027, False)"},{"line_number":840,"context_line":"        if ironic:"},{"line_number":841,"context_line":"            p_status.append(\u0027DOWN\u0027)"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        wait_port_id \u003d ["},{"line_number":844,"context_line":"            p[\"id\"] for p in ports for fxip in p[\"fixed_ips\"]"},{"line_number":845,"context_line":"            if (netutils.is_valid_ipv4(fxip[\"ip_address\"]) and"},{"line_number":846,"context_line":"                p[\u0027status\u0027] not in p_status)]"},{"line_number":847,"context_line":"        for port_id in wait_port_id:"},{"line_number":848,"context_line":"            waiters.wait_for_interface_status(self.manager.interfaces_client,"},{"line_number":849,"context_line":"                                              server[\u0027id\u0027], port_id, \u0027ACTIVE\u0027)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"        # Since waiting for anything to become active that needs to be active"},{"line_number":852,"context_line":"        # will raise on failure, we no longer have to check non-ironic status"},{"line_number":853,"context_line":"        port_map \u003d [(p[\"id\"], fxip[\"ip_address\"])"},{"line_number":854,"context_line":"                    for p in ports"},{"line_number":855,"context_line":"                    for fxip in p[\"fixed_ips\"]"},{"line_number":856,"context_line":"                    if (netutils.is_valid_ipv4(fxip[\"ip_address\"]) and (not"},{"line_number":857,"context_line":"                        ironic or p[\u0027status\u0027] in p_status))]"},{"line_number":858,"context_line":"        inactive \u003d [p for p in ports if p[\u0027status\u0027] !\u003d \u0027ACTIVE\u0027]"},{"line_number":859,"context_line":"        if inactive:"},{"line_number":860,"context_line":"            LOG.warning(\"Instance has ports that are not ACTIVE: %s\", inactive)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_cf99946e","line":857,"range":{"start_line":839,"start_character":8,"end_line":857,"end_character":60},"in_reply_to":"9fdfeff1_1ca379a0","updated":"2019-01-25 01:17:29.000000000","message":"I agree with Sean on this. Checking the interface availability before we give the server to test is a better approach than trying to wait for the bound interface to become Active again.","commit_id":"ec00b27b759ed962e8ae0b3ea88af295a3f2e934"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"725991e3d84cf96e30c2bd28604f02557535be8c","unresolved":false,"context_lines":[{"line_number":836,"context_line":"        # servers. Neutron does not bind ports for Ironic instances, as a"},{"line_number":837,"context_line":"        # result the port remains in the DOWN state."},{"line_number":838,"context_line":"        # TODO(vsaienko) remove once bug: #1599836 is resolved."},{"line_number":839,"context_line":"        ironic \u003d getattr(CONF.service_available, \u0027ironic\u0027, False)"},{"line_number":840,"context_line":"        if ironic:"},{"line_number":841,"context_line":"            p_status.append(\u0027DOWN\u0027)"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        wait_port_id \u003d ["},{"line_number":844,"context_line":"            p[\"id\"] for p in ports for fxip in p[\"fixed_ips\"]"},{"line_number":845,"context_line":"            if (netutils.is_valid_ipv4(fxip[\"ip_address\"]) and"},{"line_number":846,"context_line":"                p[\u0027status\u0027] not in p_status)]"},{"line_number":847,"context_line":"        for port_id in wait_port_id:"},{"line_number":848,"context_line":"            waiters.wait_for_interface_status(self.manager.interfaces_client,"},{"line_number":849,"context_line":"                                              server[\u0027id\u0027], port_id, \u0027ACTIVE\u0027)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"        # Since waiting for anything to become active that needs to be active"},{"line_number":852,"context_line":"        # will raise on failure, we no longer have to check non-ironic status"},{"line_number":853,"context_line":"        port_map \u003d [(p[\"id\"], fxip[\"ip_address\"])"},{"line_number":854,"context_line":"                    for p in ports"},{"line_number":855,"context_line":"                    for fxip in p[\"fixed_ips\"]"},{"line_number":856,"context_line":"                    if (netutils.is_valid_ipv4(fxip[\"ip_address\"]) and (not"},{"line_number":857,"context_line":"                        ironic or p[\u0027status\u0027] in p_status))]"},{"line_number":858,"context_line":"        inactive \u003d [p for p in ports if p[\u0027status\u0027] !\u003d \u0027ACTIVE\u0027]"},{"line_number":859,"context_line":"        if inactive:"},{"line_number":860,"context_line":"            LOG.warning(\"Instance has ports that are not ACTIVE: %s\", inactive)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_1ca379a0","line":857,"range":{"start_line":839,"start_character":8,"end_line":857,"end_character":60},"in_reply_to":"bfdaf3ff_a500e668","updated":"2019-01-23 14:24:29.000000000","message":"All tempest tests have retries for a reasonable amount of time. That should be covered.\n\nThe problem is trying to check the IPv4 address on the port I believe.","commit_id":"ec00b27b759ed962e8ae0b3ea88af295a3f2e934"}]}
