econd lb delete and observed session on first lb does not get elete
Change-Id: I64a824ce7963370a04504293f8bb230a39b2d860
This commit is contained in:
parent
0ed26510e3
commit
6d1df1be72
@ -123,6 +123,30 @@ class VSMClient(object):
|
|||||||
data=jsonutils.dumps(body))
|
data=jsonutils.dumps(body))
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
def put(self, endpoint=None, body=None):
|
||||||
|
self.__set_url(endpoint=self.endpoint)
|
||||||
|
response = requests.put(self.url, headers=self.headers,
|
||||||
|
verify=self.verify,
|
||||||
|
data=jsonutils.dumps(body))
|
||||||
|
return response
|
||||||
|
|
||||||
|
def enable_ssh_on_edge(self, edge_name, edge_id):
|
||||||
|
edge_detail = self.get_edge(edge_name + '-' + edge_id)
|
||||||
|
self.__set_api_version('4.0')
|
||||||
|
data = {}
|
||||||
|
data['enabled'] = 'true'
|
||||||
|
data['rulePriority'] = 'high'
|
||||||
|
endpoint = "/edges/%s/autoconfiguration" % (edge_detail['id'])
|
||||||
|
self.__set_endpoint(endpoint)
|
||||||
|
self.put(body=data)
|
||||||
|
payload = {}
|
||||||
|
payload['userName'] = 'admin'
|
||||||
|
payload['password'] = 'Admin!23Admin'
|
||||||
|
payload['remoteAccess'] = 'true'
|
||||||
|
endpoint = "/edges/%s/clisettings" % (edge_detail['id'])
|
||||||
|
self.__set_endpoint(endpoint)
|
||||||
|
self.put(body=payload)
|
||||||
|
|
||||||
def get_all_vdn_scopes(self):
|
def get_all_vdn_scopes(self):
|
||||||
"""Retrieve existing network scopes"""
|
"""Retrieve existing network scopes"""
|
||||||
self.__set_api_version('2.0')
|
self.__set_api_version('2.0')
|
||||||
|
@ -349,8 +349,10 @@ class TopoDeployScenarioManager(manager.NetworkScenarioTest):
|
|||||||
client_mgr=client_mgr, tenant_id=tenant_id,
|
client_mgr=client_mgr, tenant_id=tenant_id,
|
||||||
namestart=name,
|
namestart=name,
|
||||||
distributed=distributed, router_type=router_type)
|
distributed=distributed, router_type=router_type)
|
||||||
self._router_set_gateway(net_router['id'], external_network_id,
|
gw = self._router_set_gateway(net_router['id'], external_network_id,
|
||||||
client=client_mgr.routers_client)
|
client=client_mgr.routers_client)
|
||||||
|
net_router['_ext_ip'] = \
|
||||||
|
gw['external_gateway_info']['external_fixed_ips'][0]['ip_address']
|
||||||
net_network, net_subnet = self.create_network_subnet(
|
net_network, net_subnet = self.create_network_subnet(
|
||||||
client_mgr=client_mgr, name=net_router['name'],
|
client_mgr=client_mgr, name=net_router['name'],
|
||||||
tenant_id=tenant_id, cidr_offset=cidr_offset)
|
tenant_id=tenant_id, cidr_offset=cidr_offset)
|
||||||
|
@ -9,10 +9,12 @@
|
|||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
import re
|
||||||
import tempfile
|
import tempfile
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from tempest.common import utils
|
from tempest.common import utils
|
||||||
|
from tempest.common.utils.linux import remote_client
|
||||||
from tempest.common import waiters
|
from tempest.common import waiters
|
||||||
from tempest import config
|
from tempest import config
|
||||||
from tempest.lib.common.utils import data_utils
|
from tempest.lib.common.utils import data_utils
|
||||||
@ -25,6 +27,7 @@ from vmware_nsx_tempest_plugin.services.lbaas import listeners_client
|
|||||||
from vmware_nsx_tempest_plugin.services.lbaas import load_balancers_client
|
from vmware_nsx_tempest_plugin.services.lbaas import load_balancers_client
|
||||||
from vmware_nsx_tempest_plugin.services.lbaas import members_client
|
from vmware_nsx_tempest_plugin.services.lbaas import members_client
|
||||||
from vmware_nsx_tempest_plugin.services.lbaas import pools_client
|
from vmware_nsx_tempest_plugin.services.lbaas import pools_client
|
||||||
|
from vmware_nsx_tempest_plugin.services import nsxv_client
|
||||||
from vmware_nsx_tempest_plugin.tests.nsxv.scenario import (
|
from vmware_nsx_tempest_plugin.tests.nsxv.scenario import (
|
||||||
manager_topo_deployment as dmgr)
|
manager_topo_deployment as dmgr)
|
||||||
|
|
||||||
@ -60,6 +63,11 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
|||||||
def resource_setup(cls):
|
def resource_setup(cls):
|
||||||
super(LBaasRoundRobinBaseTest, cls).resource_setup()
|
super(LBaasRoundRobinBaseTest, cls).resource_setup()
|
||||||
cls.create_lbaas_clients(cls.manager)
|
cls.create_lbaas_clients(cls.manager)
|
||||||
|
if CONF.network.backend == "nsxv":
|
||||||
|
manager_ip = re.search(r"(\d{1,3}\.){3}\d{1,3}",
|
||||||
|
CONF.nsxv.manager_uri).group(0)
|
||||||
|
cls.vsm = nsxv_client.VSMClient(
|
||||||
|
manager_ip, CONF.nsxv.user, CONF.nsxv.password)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_lbaas_clients(cls, mgr):
|
def create_lbaas_clients(cls, mgr):
|
||||||
@ -211,6 +219,18 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
|||||||
secgroup=self.security_group,
|
secgroup=self.security_group,
|
||||||
**rule)
|
**rule)
|
||||||
|
|
||||||
|
def start_netcat_session(self, protocol_port=1212):
|
||||||
|
private_key = self.keypair['private_key']
|
||||||
|
ssh_client1 = self.get_remote_client(self.server1_fip,
|
||||||
|
private_key=private_key)
|
||||||
|
ssh_client2 = self.get_remote_client(self.server2_fip,
|
||||||
|
private_key=private_key)
|
||||||
|
vip = self.loadbalancer['vip_address']
|
||||||
|
cmd = ('nc -l -p %s &' % (protocol_port))
|
||||||
|
ssh_client1.exec_command(cmd)
|
||||||
|
cmd = ('nc %s %s &' % (vip, protocol_port))
|
||||||
|
ssh_client2.exec_command(cmd)
|
||||||
|
|
||||||
def start_web_servers(self, server_list=None):
|
def start_web_servers(self, server_list=None):
|
||||||
"""Start predefined servers:
|
"""Start predefined servers:
|
||||||
|
|
||||||
@ -280,7 +300,9 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
|||||||
except Exception:
|
except Exception:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def create_project_lbaas(self):
|
def create_project_lbaas(self, member_count=2,
|
||||||
|
protocol_type='HTTP',
|
||||||
|
protocol_port=80):
|
||||||
vip_subnet_id = self.subnet['id']
|
vip_subnet_id = self.subnet['id']
|
||||||
lb_name = data_utils.rand_name(self.namestart)
|
lb_name = data_utils.rand_name(self.namestart)
|
||||||
self.loadbalancer = self.load_balancers_client.create_load_balancer(
|
self.loadbalancer = self.load_balancers_client.create_load_balancer(
|
||||||
@ -289,13 +311,13 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
|||||||
self.wait_for_load_balancer_status(lb_id)
|
self.wait_for_load_balancer_status(lb_id)
|
||||||
|
|
||||||
self.listener = self.listeners_client.create_listener(
|
self.listener = self.listeners_client.create_listener(
|
||||||
loadbalancer_id=lb_id, protocol=self.protocol_type,
|
loadbalancer_id=lb_id, protocol=protocol_type,
|
||||||
protocol_port=self.protocol_port, name=lb_name)['listener']
|
protocol_port=protocol_port, name=lb_name)['listener']
|
||||||
self.wait_for_load_balancer_status(lb_id)
|
self.wait_for_load_balancer_status(lb_id)
|
||||||
|
|
||||||
self.pool = self.pools_client .create_pool(
|
self.pool = self.pools_client .create_pool(
|
||||||
listener_id=self.listener['id'],
|
listener_id=self.listener['id'],
|
||||||
lb_algorithm=self.lb_algorithm, protocol=self.protocol_type,
|
lb_algorithm=self.lb_algorithm, protocol=protocol_type,
|
||||||
name=lb_name)['pool']
|
name=lb_name)['pool']
|
||||||
self.wait_for_load_balancer_status(lb_id)
|
self.wait_for_load_balancer_status(lb_id)
|
||||||
pool_id = self.pool['id']
|
pool_id = self.pool['id']
|
||||||
@ -308,15 +330,27 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
|||||||
self.wait_for_load_balancer_status(lb_id)
|
self.wait_for_load_balancer_status(lb_id)
|
||||||
|
|
||||||
self.members = []
|
self.members = []
|
||||||
for server in [self.server1, self.server2]:
|
if member_count == 2:
|
||||||
fip = server['_floating_ip']
|
for server in [self.server1, self.server2]:
|
||||||
fixed_ip_address = fip['fixed_ip_address']
|
fip = server['_floating_ip']
|
||||||
member = self.members_client.create_member(
|
fixed_ip_address = fip['fixed_ip_address']
|
||||||
pool_id, subnet_id=vip_subnet_id,
|
member = self.members_client.create_member(
|
||||||
address=fixed_ip_address,
|
pool_id, subnet_id=vip_subnet_id,
|
||||||
protocol_port=self.protocol_port)
|
address=fixed_ip_address,
|
||||||
self.wait_for_load_balancer_status(lb_id)
|
protocol_port=protocol_port,
|
||||||
self.members.append(member)
|
protocol=protocol_type)
|
||||||
|
self.wait_for_load_balancer_status(lb_id)
|
||||||
|
self.members.append(member)
|
||||||
|
else:
|
||||||
|
for server in [self.server1]:
|
||||||
|
fip = server['_floating_ip']
|
||||||
|
fixed_ip_address = fip['fixed_ip_address']
|
||||||
|
member = self.members_client.create_member(
|
||||||
|
pool_id, subnet_id=vip_subnet_id,
|
||||||
|
address=fixed_ip_address,
|
||||||
|
protocol_port=protocol_port)
|
||||||
|
self.wait_for_load_balancer_status(lb_id)
|
||||||
|
self.members.append(member)
|
||||||
|
|
||||||
# Currently the ovs-agent is not enforcing security groups on the
|
# Currently the ovs-agent is not enforcing security groups on the
|
||||||
# vip port - see https://bugs.launchpad.net/neutron/+bug/1163569
|
# vip port - see https://bugs.launchpad.net/neutron/+bug/1163569
|
||||||
@ -374,6 +408,14 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
|||||||
else:
|
else:
|
||||||
self.http_cnt[response] = 1
|
self.http_cnt[response] = 1
|
||||||
|
|
||||||
|
def verify_session_edge(self, vip):
|
||||||
|
remote_ip = self.router['_ext_ip']
|
||||||
|
ssh_client = remote_client.RemoteClient(remote_ip, 'admin',
|
||||||
|
'Admin!23Admin')
|
||||||
|
cmd = 'show flowtable topN 20 '
|
||||||
|
output = ssh_client.exec_command(cmd)
|
||||||
|
self.assertTrue(vip in output)
|
||||||
|
|
||||||
|
|
||||||
class TestLBaasRoundRobinOps(LBaasRoundRobinBaseTest):
|
class TestLBaasRoundRobinOps(LBaasRoundRobinBaseTest):
|
||||||
|
|
||||||
@ -396,3 +438,34 @@ class TestLBaasRoundRobinOps(LBaasRoundRobinBaseTest):
|
|||||||
self.start_web_servers(self.rr_server_list)
|
self.start_web_servers(self.rr_server_list)
|
||||||
self.create_project_lbaas()
|
self.create_project_lbaas()
|
||||||
self.check_project_lbaas()
|
self.check_project_lbaas()
|
||||||
|
|
||||||
|
@decorators.idempotent_id('188d2a5c-4938-448f-a80f-8e65f5cc49d7')
|
||||||
|
@utils.services('compute', 'network')
|
||||||
|
def test_lbaas_round_robin_ops_create_delete_second_lb(self):
|
||||||
|
self.create_lbaas_networks()
|
||||||
|
server_list = self.rr_server_list
|
||||||
|
fip1 = self.create_floatingip_for_server(
|
||||||
|
server_list[0], self.public_network_id,
|
||||||
|
client_mgr=self.manager)
|
||||||
|
server_list[0]['_floating_ip'] = fip1
|
||||||
|
self.server1 = server_list[0]
|
||||||
|
fip2 = self.create_floatingip_for_server(
|
||||||
|
server_list[1], self.public_network_id,
|
||||||
|
client_mgr=self.manager)
|
||||||
|
server_list[1]['_floating_ip'] = fip2
|
||||||
|
self.server2 = server_list[1]
|
||||||
|
self.server1_fip = fip1['floating_ip_address']
|
||||||
|
self.server2_fip = fip2['floating_ip_address']
|
||||||
|
self.create_project_lbaas(member_count=1, protocol_port=1212,
|
||||||
|
protocol_type='TCP')
|
||||||
|
self.start_netcat_session(protocol_port=1212)
|
||||||
|
vip = self.loadbalancer['vip_address']
|
||||||
|
self.vsm.enable_ssh_on_edge(self.router['name'], self.router['id'])
|
||||||
|
self.verify_session_edge(vip)
|
||||||
|
vip_subnet_id = self.subnet['id']
|
||||||
|
lb_name2 = data_utils.rand_name(self.namestart)
|
||||||
|
self.loadbalancer1 = self.load_balancers_client.create_load_balancer(
|
||||||
|
name=lb_name2, vip_subnet_id=vip_subnet_id)['loadbalancer']
|
||||||
|
lb2_id = self.loadbalancer1['id']
|
||||||
|
self.load_balancers_client.delete_load_balancer(lb2_id)
|
||||||
|
self.verify_session_edge(vip)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user