def test_load_from_cache(impl): openstack.kv().get.return_value = cached_info = { "app_name": "app", "port": "80", "subnet": "subnet", "algorithm": "alg", "fip_net": "net", "manage_secgrps": False, "sg_id": None, "fip": "4.4.4.4", "address": "1.1.1.1", "members": [] } lb = openstack.LoadBalancer.load_from_cached(cached_info) assert lb.name == "openstack-integrator-1234-app" assert lb.key == "created_lbs.openstack-integrator-1234-app" assert lb.app_name == "app" assert lb.port == "80" assert lb.subnet == "subnet" assert lb.algorithm == "alg" assert lb.fip_net == "net" assert lb.manage_secgrps is False assert lb.sg_id is None assert lb.fip == "4.4.4.4" assert lb.address == "1.1.1.1" assert lb.members == set() assert lb.is_created impl.get_port_sec_enabled.assert_called_once() impl.find_secgrp.assert_called_with( "openstack-integrator-1234-app-members") openstack.kv().get.reset_mock()
def test_delete_loadbalancer(impl, kv): kv().get.return_value = None lb = openstack.LoadBalancer('app', '80', 'subnet', 'alg', 'net', True) lb.delete() impl.get_port_sec_enabled.assert_called_once() impl.delete_loadbalancer.assert_called_once() openstack.kv().unset.assert_called_with( "created_lbs.openstack-integrator-1234-app")
def test_create_recover(impl): openstack.kv().get.return_value = None lb = openstack.LoadBalancer('app', '80', 'subnet', 'alg', 'net', True) impl.list_loadbalancers.return_value = [ {'name': 'openstack-integrator-1234-app'}] impl.show_loadbalancer.return_value = {'id': '2345', 'provisioning_status': 'ACTIVE', 'vip_address': '1.1.1.1', 'vip_port_id': '4321'} impl.find_secgrp.return_value = 'sg_id' impl.list_sg_rules.return_value = [{'Port Range': '', 'IP Range': ''}] impl.get_port_sec_enabled.return_value = False impl.list_listeners.return_value = [ {'name': 'openstack-integrator-1234-app'}] impl.list_pools.return_value = [ {'name': 'openstack-integrator-1234-app'}] impl.list_fips.return_value = [ {'Fixed IP Address': '2.2.2.2', 'Floating IP Address': '3.3.3.3'}, {'Fixed IP Address': '1.1.1.1', 'Floating IP Address': '4.4.4.4'}, ] impl.list_members.return_value = ['members'] lb.create() assert lb.sg_id is None assert lb.fip == '4.4.4.4' assert lb.address == '1.1.1.1' assert lb.members == ['members'] assert lb.is_created assert not impl.create_loadbalancer.called assert not impl.create_secgrp.called assert not impl.create_listener.called assert not impl.create_pool.called assert not impl.create_fip.called
def test_create_new(impl, log_err): openstack.kv().get.return_value = None lb = openstack.LoadBalancer('app', '80', 'subnet', 'alg', None, False) assert not lb.is_created lb.name = 'name' impl.list_loadbalancers.return_value = [] impl.create_loadbalancer.return_value = { 'id': '1234', 'vip_address': '1.1.1.1', 'vip_port_id': '4321' } impl.show_loadbalancer.return_value = {'provisioning_status': 'ACTIVE'} impl.show_pool.return_value = {'provisioning_status': 'ACTIVE'} impl.find_secgrp.side_effect = ['sg_id', 'member_sg_id'] impl.list_listeners.return_value = [] impl.list_pools.return_value = [] impl.list_members.return_value = [('member', '6443')] impl.list_sg_rules.return_value = [] impl.get_port_sec_enabled.return_value = True impl.get_subnet_cidr.return_value = '1.1.1.1/32' impl.create_secgrp.return_value = 'member_sg_id' lb.create() assert lb.sg_id is None assert lb.member_sg_id == 'member_sg_id' assert lb.fip is None assert lb.address == '1.1.1.1' assert lb.members == [('member', '6443')] assert lb.is_created assert impl.create_loadbalancer.called assert not impl.create_secgrp.called assert not impl.set_port_secgrp.called assert impl.create_listener.called assert impl.create_pool.called assert not impl.list_fips.called assert not impl.create_fip.called impl.find_secgrp.side_effect = ['sg_id', None] lb.create() impl.create_secgrp.assert_called_with('name-members') impl.find_secgrp.side_effect = None impl.find_secgrp.return_value = None with pytest.raises(openstack.OpenStackLBError): lb.create() openstack.log_err.assert_called_with('Unable to find default ' 'security group') lb.fip_net = 'net' lb.manage_secgrps = True impl.create_secgrp.return_value = 'sg_id' impl.list_fips.return_value = [] lb.create() assert lb.sg_id == 'sg_id' impl.create_secgrp.assert_has_calls( [mock.call('name'), mock.call('name-members')]) impl.set_port_secgrp.assert_called_with('4321', 'sg_id') impl.create_fip.assert_called_with('1.1.1.1', '4321')