Source code for octavia_tempest_plugin.tests.scenario.v2.test_pool

# Copyright 2018 GoDaddy
#
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
#    not use this file except in compliance with the License. You may obtain
#    a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#    License for the specific language governing permissions and limitations
#    under the License.

import testtools
from uuid import UUID

from dateutil import parser
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions

from octavia_tempest_plugin.common import constants as const
from octavia_tempest_plugin.tests import test_base
from octavia_tempest_plugin.tests import waiters

CONF = config.CONF


[docs] class PoolScenarioTest(test_base.LoadBalancerBaseTest):
[docs] @classmethod def resource_setup(cls): """Setup resources needed by the tests.""" super(PoolScenarioTest, cls).resource_setup() lb_name = data_utils.rand_name("lb_member_lb1_pool") lb_kwargs = {const.PROVIDER: CONF.load_balancer.provider, const.NAME: lb_name} cls._setup_lb_network_kwargs(lb_kwargs) lb = cls.mem_lb_client.create_loadbalancer(**lb_kwargs) cls.lb_id = lb[const.ID] cls.addClassResourceCleanup( cls.mem_lb_client.cleanup_loadbalancer, cls.lb_id, cascade=True) waiters.wait_for_status(cls.mem_lb_client.show_loadbalancer, cls.lb_id, const.PROVISIONING_STATUS, const.ACTIVE, CONF.load_balancer.lb_build_interval, CONF.load_balancer.lb_build_timeout)
# Pool with Least Connections algorithm
[docs] @decorators.idempotent_id('f30bd185-ca13-45c1-8a2f-f4179e7f0c3a') def test_HTTP_LC_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.HTTP, protocol_port=10, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
[docs] @decorators.idempotent_id('d8c428b0-dee4-4374-8286-31e52aeb7fe5') def test_HTTP_LC_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.HTTP, pool_protocol=const.HTTP, protocol_port=11, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
[docs] @decorators.idempotent_id('82d8e035-4068-4bad-a87b-e4907bf6d464') def test_HTTPS_LC_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.HTTPS, protocol_port=12, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
[docs] @decorators.idempotent_id('726beb03-de8c-43cd-ba5f-e7d6faf627a3') def test_HTTPS_LC_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.HTTPS, pool_protocol=const.HTTPS, protocol_port=13, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
[docs] @decorators.idempotent_id('b3cef24e-343a-4e77-833b-422158d54673') def test_PROXY_LC_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.PROXY, protocol_port=14, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
[docs] @decorators.idempotent_id('f1edfb45-a9d3-4150-8bc9-4fc3427c6346') def test_PROXY_LC_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.TCP, pool_protocol=const.PROXY, protocol_port=15, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
[docs] @decorators.idempotent_id('d6d067c3-ec63-4b5d-a364-acc7493ae3b8') def test_TCP_LC_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.TCP, protocol_port=16, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
[docs] @decorators.idempotent_id('a159c345-9463-4c01-b571-086c789bd7d5') def test_TCP_LC_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.TCP, pool_protocol=const.TCP, protocol_port=17, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
[docs] @decorators.idempotent_id('6fea6a39-19eb-4a0e-b507-82ecc57c1dc5') def test_UDP_LC_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.UDP, protocol_port=18, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
[docs] @decorators.idempotent_id('6ce12d8c-ad59-4e48-8de1-d26926735457') def test_UDP_LC_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.UDP, pool_protocol=const.UDP, protocol_port=19, algorithm=const.LB_ALGORITHM_LEAST_CONNECTIONS)
# Pool with Round Robin algorithm
[docs] @decorators.idempotent_id('dfa120bf-81b9-4f22-bb5e-7df660c18173') def test_HTTP_RR_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.HTTP, protocol_port=20, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
[docs] @decorators.idempotent_id('087da8ab-79c7-48ba-871c-5769185cea3e') def test_HTTP_RR_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.HTTP, pool_protocol=const.HTTP, protocol_port=21, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
[docs] @decorators.idempotent_id('6179a5d1-6425-4144-a437-b0d260b7b883') def test_HTTPS_RR_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.HTTPS, protocol_port=22, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
[docs] @decorators.idempotent_id('1b4585b4-c521-48e8-a69a-8a1d729a2949') def test_HTTPS_RR_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.HTTPS, pool_protocol=const.HTTPS, protocol_port=23, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
[docs] @decorators.idempotent_id('6b9f4f01-cb78-409a-b9fe-cbbeb27d0c5f') def test_PROXY_RR_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.PROXY, protocol_port=24, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
[docs] @decorators.idempotent_id('0228ea63-dff5-4dfb-b48a-193e8509caa8') def test_PROXY_RR_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.TCP, pool_protocol=const.PROXY, protocol_port=25, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
[docs] @decorators.idempotent_id('71088923-cfdf-4821-a6a8-c7c9045b624d') def test_TCP_RR_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.TCP, protocol_port=26, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
[docs] @decorators.idempotent_id('4b663772-5c6b-49a3-b592-49d91bd71ff1') def test_TCP_RR_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.TCP, pool_protocol=const.TCP, protocol_port=27, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
[docs] @decorators.idempotent_id('45aefaa0-c909-4861-91c6-517ea10285a5') def test_UDP_RR_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.UDP, protocol_port=28, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
[docs] @decorators.idempotent_id('cff21560-52be-439f-a41f-789d365db567') def test_UDP_RR_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.UDP, pool_protocol=const.UDP, protocol_port=29, algorithm=const.LB_ALGORITHM_ROUND_ROBIN)
# Pool with Source IP algorithm
[docs] @decorators.idempotent_id('4ef47185-ef22-4396-8c9c-b98b9b476605') def test_HTTP_SI_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.HTTP, protocol_port=30, algorithm=const.LB_ALGORITHM_SOURCE_IP)
[docs] @decorators.idempotent_id('13a5caba-42a5-4b8c-a389-74d630a91687') def test_HTTP_SI_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.HTTP, pool_protocol=const.HTTP, protocol_port=31, algorithm=const.LB_ALGORITHM_SOURCE_IP)
[docs] @decorators.idempotent_id('5ff7732a-7481-4c03-8efc-5ee794feb11a') def test_HTTPS_SI_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.HTTPS, protocol_port=32, algorithm=const.LB_ALGORITHM_SOURCE_IP)
[docs] @decorators.idempotent_id('30f3d93c-cc22-4821-8805-d5c41023eccd') def test_HTTPS_SI_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.HTTPS, pool_protocol=const.HTTPS, protocol_port=33, algorithm=const.LB_ALGORITHM_SOURCE_IP)
[docs] @decorators.idempotent_id('7cbb01b8-196b-4ac3-9fec-a41abf867850') def test_PROXY_SI_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.PROXY, protocol_port=34, algorithm=const.LB_ALGORITHM_SOURCE_IP)
[docs] @decorators.idempotent_id('29327103-4949-4a77-a748-87ab725237b7') def test_PROXY_SI_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.TCP, pool_protocol=const.PROXY, protocol_port=35, algorithm=const.LB_ALGORITHM_SOURCE_IP)
[docs] @decorators.idempotent_id('6a4dd425-d7d9-40dd-b451-feb4b3c551cc') def test_TCP_SI_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.TCP, protocol_port=36, algorithm=const.LB_ALGORITHM_SOURCE_IP)
[docs] @decorators.idempotent_id('4391d6a5-bb1c-4ff0-9f74-7b8c43a0b150') def test_TCP_SI_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.TCP, pool_protocol=const.TCP, protocol_port=37, algorithm=const.LB_ALGORITHM_SOURCE_IP)
[docs] @decorators.idempotent_id('211a688c-f495-4f32-a297-c64d240b5de0') def test_UDP_SI_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.UDP, protocol_port=38, algorithm=const.LB_ALGORITHM_SOURCE_IP)
[docs] @decorators.idempotent_id('b19f1285-dbf2-4ac9-9199-3c3693148133') def test_UDP_SI_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.UDP, pool_protocol=const.UDP, protocol_port=39, algorithm=const.LB_ALGORITHM_SOURCE_IP)
# Pool with Source IP Port algorithm
[docs] @decorators.idempotent_id('fee61d34-e272-42f5-92e2-69b515c6cded') def test_HTTP_SIP_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.HTTP, protocol_port=40, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
[docs] @decorators.idempotent_id('d99948da-649d-493c-a74d-72e532df0605') def test_HTTP_SIP_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.HTTP, pool_protocol=const.HTTP, protocol_port=41, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
[docs] @decorators.idempotent_id('b3c68f89-634e-4279-9546-9f2d2eac4bfa') def test_HTTPS_SIP_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.HTTPS, protocol_port=42, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
[docs] @decorators.idempotent_id('4327f636-50c3-411c-b90e-0b907bdaffc5') def test_HTTPS_SIP_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.HTTPS, pool_protocol=const.HTTPS, protocol_port=43, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
[docs] @decorators.idempotent_id('95a93e91-6ac0-40d5-999c-84a8b68c14f4') def test_PROXY_SIP_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.PROXY, protocol_port=44, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
[docs] @decorators.idempotent_id('13893ac9-150f-4605-be68-6bdf65e2bb12') def test_PROXY_SIP_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.TCP, pool_protocol=const.PROXY, protocol_port=45, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
[docs] @decorators.idempotent_id('d045ea39-b6dd-4171-bb90-2b9970e25303') def test_TCP_SIP_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.TCP, protocol_port=46, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
[docs] @decorators.idempotent_id('ec22ab54-8e0a-4472-8f70-78c34f28dc36') def test_TCP_SIP_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.TCP, pool_protocol=const.TCP, protocol_port=47, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
[docs] @decorators.idempotent_id('0e0f0299-8c5e-4d7c-a99e-85db43b45446') def test_UDP_SIP_pool_standalone_CRUD(self): self._test_pool_CRUD(listener_protocol=None, pool_protocol=const.UDP, protocol_port=48, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
[docs] @decorators.idempotent_id('66d50010-13ca-4588-ae36-61bb783d556e') def test_UDP_SIP_pool_with_listener_CRUD(self): self._test_pool_CRUD(listener_protocol=const.UDP, pool_protocol=const.UDP, protocol_port=49, algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
# Test with session persistence
[docs] @decorators.idempotent_id('c248e3d8-43d9-4fd4-93af-845747c9b939') def test_HTTP_RR_source_IP_pool_with_listener_CRUD(self): self._test_pool_CRUD( listener_protocol=const.HTTP, pool_protocol=const.HTTP, protocol_port=52, algorithm=const.LB_ALGORITHM_ROUND_ROBIN, session_persistence=const.SESSION_PERSISTENCE_SOURCE_IP)
[docs] @decorators.idempotent_id('dc7f0ed5-f94c-4498-9dca-5dbc08e7162f') def test_UDP_RR_source_ip_pool_with_listener_CRUD(self): self._test_pool_CRUD( listener_protocol=const.UDP, pool_protocol=const.UDP, protocol_port=53, algorithm=const.LB_ALGORITHM_ROUND_ROBIN, session_persistence=const.SESSION_PERSISTENCE_SOURCE_IP)
def _test_pool_CRUD(self, listener_protocol, pool_protocol, protocol_port, algorithm, session_persistence=None): """Tests pool create, read, update, delete * Create a fully populated pool. * Show pool details. * Update the pool. * Delete the pool. """ if (algorithm == const.LB_ALGORITHM_SOURCE_IP_PORT and not self.mem_listener_client.is_version_supported( self.api_version, '2.13')): raise testtools.TestCase.skipException( 'Skipping this test as load balancing algorithm ' 'SOURCE_IP_PORT requires API version 2.13 or newer.') # Listener create if listener_protocol is not None: listener_name = data_utils.rand_name("lb_member_listener1_pool") listener_kwargs = { const.NAME: listener_name, const.PROTOCOL: listener_protocol, const.PROTOCOL_PORT: protocol_port, const.LOADBALANCER_ID: self.lb_id, } listener = self.mem_listener_client.create_listener( **listener_kwargs) listener_id = listener[const.ID] self.addCleanup( self.mem_listener_client.cleanup_listener, listener_id, lb_client=self.mem_lb_client, lb_id=self.lb_id) waiters.wait_for_status(self.mem_lb_client.show_loadbalancer, self.lb_id, const.PROVISIONING_STATUS, const.ACTIVE, CONF.load_balancer.build_interval, CONF.load_balancer.build_timeout) # Pool create pool_name = data_utils.rand_name("lb_member_pool1-CRUD") pool_description = data_utils.arbitrary_string(size=255) pool_sp_cookie_name = 'my_cookie' pool_kwargs = { const.NAME: pool_name, const.DESCRIPTION: pool_description, const.ADMIN_STATE_UP: False, const.PROTOCOL: pool_protocol, const.LB_ALGORITHM: algorithm, } if session_persistence == const.SESSION_PERSISTENCE_APP_COOKIE: pool_kwargs[const.SESSION_PERSISTENCE] = { const.TYPE: const.SESSION_PERSISTENCE_APP_COOKIE, const.COOKIE_NAME: pool_sp_cookie_name } elif session_persistence == const.SESSION_PERSISTENCE_HTTP_COOKIE: pool_kwargs[const.SESSION_PERSISTENCE] = { const.TYPE: const.SESSION_PERSISTENCE_HTTP_COOKIE } elif session_persistence == const.SESSION_PERSISTENCE_SOURCE_IP: pool_kwargs[const.SESSION_PERSISTENCE] = { const.TYPE: const.SESSION_PERSISTENCE_SOURCE_IP } if listener_protocol is not None: pool_kwargs[const.LISTENER_ID] = listener_id else: pool_kwargs[const.LOADBALANCER_ID] = self.lb_id # This is a special case as the reference driver does not support # SOURCE-IP-PORT. Since it runs with not_implemented_is_error, we must # handle this test case special. try: pool = self.mem_pool_client.create_pool(**pool_kwargs) except exceptions.NotImplemented as e: if algorithm != const.LB_ALGORITHM_SOURCE_IP_PORT: raise message = ("The configured provider driver '{driver}' " "does not support a feature required for this " "test.".format(driver=CONF.load_balancer.provider)) if hasattr(e, 'resp_body'): message = e.resp_body.get('faultstring', message) raise testtools.TestCase.skipException(message) self.addCleanup( self.mem_pool_client.cleanup_pool, pool[const.ID], lb_client=self.mem_lb_client, lb_id=self.lb_id) waiters.wait_for_status( self.mem_lb_client.show_loadbalancer, self.lb_id, const.PROVISIONING_STATUS, const.ACTIVE, CONF.load_balancer.build_interval, CONF.load_balancer.build_timeout) pool = waiters.wait_for_status( self.mem_pool_client.show_pool, pool[const.ID], const.PROVISIONING_STATUS, const.ACTIVE, CONF.load_balancer.build_interval, CONF.load_balancer.build_timeout) self.assertEqual(pool_name, pool[const.NAME]) self.assertEqual(pool_description, pool[const.DESCRIPTION]) self.assertFalse(pool[const.ADMIN_STATE_UP]) parser.parse(pool[const.CREATED_AT]) parser.parse(pool[const.UPDATED_AT]) UUID(pool[const.ID]) self.assertEqual(pool_protocol, pool[const.PROTOCOL]) self.assertEqual(1, len(pool[const.LOADBALANCERS])) self.assertEqual(self.lb_id, pool[const.LOADBALANCERS][0][const.ID]) if listener_protocol is not None: self.assertEqual(1, len(pool[const.LISTENERS])) self.assertEqual(listener_id, pool[const.LISTENERS][0][const.ID]) else: self.assertEmpty(pool[const.LISTENERS]) self.assertEqual(const.OFFLINE, pool[const.OPERATING_STATUS]) self.assertEqual(algorithm, pool[const.LB_ALGORITHM]) if session_persistence == const.SESSION_PERSISTENCE_APP_COOKIE: self.assertIsNotNone(pool.get(const.SESSION_PERSISTENCE)) self.assertEqual(const.SESSION_PERSISTENCE_APP_COOKIE, pool[const.SESSION_PERSISTENCE][const.TYPE]) self.assertEqual(pool_sp_cookie_name, pool[const.SESSION_PERSISTENCE][ const.COOKIE_NAME]) elif session_persistence == const.SESSION_PERSISTENCE_HTTP_COOKIE: self.assertIsNotNone(pool.get(const.SESSION_PERSISTENCE)) self.assertEqual(const.SESSION_PERSISTENCE_HTTP_COOKIE, pool[const.SESSION_PERSISTENCE][const.TYPE]) elif session_persistence == const.SESSION_PERSISTENCE_SOURCE_IP: self.assertIsNotNone(pool.get(const.SESSION_PERSISTENCE)) self.assertEqual(const.SESSION_PERSISTENCE_SOURCE_IP, pool[const.SESSION_PERSISTENCE][const.TYPE]) # Pool update new_name = data_utils.rand_name("lb_member_pool1-update") new_description = data_utils.arbitrary_string(size=255, base_text='new') pool_update_kwargs = { const.NAME: new_name, const.DESCRIPTION: new_description, const.ADMIN_STATE_UP: True, } # We have to set it to the same protocol as not all # drivers support more than one pool algorithm pool_update_kwargs[const.LB_ALGORITHM] = algorithm if session_persistence == const.SESSION_PERSISTENCE_APP_COOKIE: pool_update_kwargs[const.SESSION_PERSISTENCE] = { const.TYPE: const.SESSION_PERSISTENCE_HTTP_COOKIE } elif session_persistence == const.SESSION_PERSISTENCE_HTTP_COOKIE: pool_update_kwargs[const.SESSION_PERSISTENCE] = { const.TYPE: const.SESSION_PERSISTENCE_APP_COOKIE, const.COOKIE_NAME: pool_sp_cookie_name } elif session_persistence == const.SESSION_PERSISTENCE_SOURCE_IP: # Some protocols only support source IP session persistence # so set this to the same. pool_update_kwargs[const.SESSION_PERSISTENCE] = { const.TYPE: const.SESSION_PERSISTENCE_SOURCE_IP } pool = self.mem_pool_client.update_pool( pool[const.ID], **pool_update_kwargs) waiters.wait_for_status( self.mem_lb_client.show_loadbalancer, self.lb_id, const.PROVISIONING_STATUS, const.ACTIVE, CONF.load_balancer.build_interval, CONF.load_balancer.build_timeout) pool = waiters.wait_for_status( self.mem_pool_client.show_pool, pool[const.ID], const.PROVISIONING_STATUS, const.ACTIVE, CONF.load_balancer.build_interval, CONF.load_balancer.build_timeout) self.assertEqual(new_name, pool[const.NAME]) self.assertEqual(new_description, pool[const.DESCRIPTION]) self.assertTrue(pool[const.ADMIN_STATE_UP]) self.assertEqual(algorithm, pool[const.LB_ALGORITHM]) if listener_protocol is not None: pool = waiters.wait_for_status( self.mem_pool_client.show_pool, pool[const.ID], const.OPERATING_STATUS, const.ONLINE, CONF.load_balancer.build_interval, CONF.load_balancer.build_timeout) if session_persistence == const.SESSION_PERSISTENCE_APP_COOKIE: self.assertIsNotNone(pool.get(const.SESSION_PERSISTENCE)) self.assertEqual(const.SESSION_PERSISTENCE_HTTP_COOKIE, pool[const.SESSION_PERSISTENCE][const.TYPE]) self.assertIsNone( pool[const.SESSION_PERSISTENCE].get(const.COOKIE_NAME)) elif session_persistence == const.SESSION_PERSISTENCE_HTTP_COOKIE: self.assertIsNotNone(pool.get(const.SESSION_PERSISTENCE)) self.assertEqual(const.SESSION_PERSISTENCE_APP_COOKIE, pool[const.SESSION_PERSISTENCE][const.TYPE]) self.assertEqual(pool_sp_cookie_name, pool[const.SESSION_PERSISTENCE][ const.COOKIE_NAME]) elif session_persistence == const.SESSION_PERSISTENCE_SOURCE_IP: self.assertIsNotNone(pool.get(const.SESSION_PERSISTENCE)) self.assertEqual(const.SESSION_PERSISTENCE_SOURCE_IP, pool[const.SESSION_PERSISTENCE][const.TYPE]) self.assertIsNone( pool[const.SESSION_PERSISTENCE].get(const.COOKIE_NAME)) # Pool delete waiters.wait_for_status( self.mem_lb_client.show_loadbalancer, self.lb_id, const.PROVISIONING_STATUS, const.ACTIVE, CONF.load_balancer.check_interval, CONF.load_balancer.check_timeout) self.mem_pool_client.delete_pool(pool[const.ID]) waiters.wait_for_deleted_status_or_not_found( self.mem_pool_client.show_pool, pool[const.ID], const.PROVISIONING_STATUS, CONF.load_balancer.check_interval, CONF.load_balancer.check_timeout) waiters.wait_for_status( self.mem_lb_client.show_loadbalancer, self.lb_id, const.PROVISIONING_STATUS, const.ACTIVE, CONF.load_balancer.check_interval, CONF.load_balancer.check_timeout)