F5Networks / f5-openstack-agent

The F5 Agent for OpenStack Neutron allows you to deploy BIG-IP services in an OpenStack environment.
http://clouddocs.f5.com/products/openstack/agent/latest
Apache License 2.0
14 stars 38 forks source link

test_single_member_weight_updates failed to retrieve next member #884

Closed ssorenso closed 7 years ago

ssorenso commented 7 years ago
Suggested Bug Type:

Bug

We're expecting the known member listing to have another member, when it doe not off of the BIG-IP.

Traceback
bigip = <neutronless.testlib.bigip_client.BigIpClient object at 0x7fdf773b88d0>
services = [{'healthmonitors': [], 'l7policies': [], 'l7policy_rules': [], 'listeners': [{'admin_state_up': True, 'connection_lim...it': -1, 'default_pool_id': '47d89d6e-4bec-47b9-a4cf-9ca86297e93f', 'default_tls_container_id': None, ...}], ...}, ...]
icd_config = {'AGENT': '<oslo_config.cfg.GroupAttr object at 0x3b137d0>', 'OVS': '<oslo_config.cfg.GroupAttr object at 0x3ae9410>', 'advertise_mtu': False, 'advertised_tunnel_types': ['vxlan'], ...}
icontrol_driver = <f5_openstack_agent.lbaasv2.drivers.bigip.icontrol_driver.iControlDriver object at 0x7fdf773b0b90>

    def test_single_member_weight_updates(
            bigip,
            services,
            icd_config,
            icontrol_driver):

        env_prefix = icd_config['environment_prefix']
        service_iter = iter(services)

        # create loadbalancer with pool
        service = service_iter.next()
        icontrol_driver._common_service_handler(service)

        # Create a member
>       m = get_next_member(service_iter, icontrol_driver, bigip, env_prefix)

../neutronless/member/test_single_member_weight_updates.py:125:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../neutronless/member/test_single_member_weight_updates.py:92: in get_next_member
    p = bigip.get_resource(ResourceType.pool, pool_name, partition=folder)
../neutronless/testlib/bigip_client.py:67: in get_resource
    obj = helper.load(self.bigip, name=resource_name, partition=partition)
../../../.tox/singlebigip/local/lib/python2.7/site-packages/f5_openstack_agent/lbaasv2/drivers/bigip/resource_helper.py:130: in load
    return resource.load(name=name, partition=partition)
../../../.tox/singlebigip/local/lib/python2.7/site-packages/f5/bigip/resource.py:1026: in load
    return self._load(**kwargs)
../../../.tox/singlebigip/local/lib/python2.7/site-packages/f5/bigip/resource.py:1005: in _load
    response = refresh_session.get(base_uri, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <icontrol.session.iControlRESTSession object at 0x7fdf773b8a50>
RIC_base_uri = 'https://10.190.25.98:443/mgmt/tm/ltm/pool/', kwargs = {}
partition = 'TEST_dfd83103ce2047d5b20ccd6ef272f3cc', sub_path = '', suffix = ''
identifier = 'TEST_47d89d6e-4bec-47b9-a4cf-9ca86297e93f', uri_as_parts = True
transform_name = False
REST_uri = 'https://10.190.25.98:443/mgmt/tm/ltm/pool/~TEST_dfd83103ce2047d5b20ccd6ef272f3cc~TEST_47d89d6e-4bec-47b9-a4cf-9ca86297e93f'

    @functools.wraps(method)
    def wrapper(self, RIC_base_uri, **kwargs):
        partition = kwargs.pop('partition', '')
        sub_path = kwargs.pop('subPath', '')
        suffix = kwargs.pop('suffix', '')
        identifier, kwargs = _unique_resource_identifier_from_kwargs(**kwargs)
        uri_as_parts = kwargs.pop('uri_as_parts', False)
        transform_name = kwargs.pop('transform_name', False)
        if uri_as_parts:
            REST_uri = generate_bigip_uri(RIC_base_uri, partition, identifier,
                                          sub_path, suffix,
                                          transform_name=transform_name,
                                          **kwargs)
        else:
            REST_uri = RIC_base_uri
        pre_message = "%s WITH uri: %s AND suffix: %s AND kwargs: %s" %\
            (method.__name__, REST_uri, suffix, kwargs)
        logging.debug(pre_message)
        response = method(self, REST_uri, **kwargs)
        post_message =\
            "RESPONSE::STATUS: %s Content-Type: %s Content-Encoding:"\
            " %s\nText: %r" % (response.status_code,
                               response.headers.get('Content-Type', None),
                               response.headers.get('Content-Encoding', None),
                               response.text)
        logging.debug(post_message)
        if response.status_code not in range(200, 207):
            error_message = '%s Unexpected Error: %s for uri: %s\nText: %r' %\
                            (response.status_code,
                             response.reason,
                             response.url,
                             response.text)
>           raise iControlUnexpectedHTTPError(error_message, response=response)
E           iControlUnexpectedHTTPError: 404 Unexpected Error: Not Found for uri: https://10.190.25.98:443/mgmt/tm/ltm/pool/~TEST_dfd83103ce2047d5b20ccd6ef272f3cc~TEST_47d89d6e-4bec-47b9-a4cf-9ca86297e93f
E           Text: u'{"code":404,"message":"01020036:3: The requested Pool (/TEST_dfd83103ce2047d5b20ccd6ef272f3cc/TEST_47d89d6e-4bec-47b9-a4cf-9ca86297e93f) was not found.","errorStack":[],"apiError":3}'

/usr/local/lib/python2.7/dist-packages/icontrol/session.py:272: iControlUnexpectedHTTPError
Impacted test instances:

OpenStack Release

Mitaka

Agent Version

mitaka - e46a3c98070772ff27da829e91c8f5decb822056

Operating System

Nightly

mattgreene commented 7 years ago

Regression introduced with #882 and fixed with #894.