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))
|
||||
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):
|
||||
"""Retrieve existing network scopes"""
|
||||
self.__set_api_version('2.0')
|
||||
|
@ -349,8 +349,10 @@ class TopoDeployScenarioManager(manager.NetworkScenarioTest):
|
||||
client_mgr=client_mgr, tenant_id=tenant_id,
|
||||
namestart=name,
|
||||
distributed=distributed, router_type=router_type)
|
||||
self._router_set_gateway(net_router['id'], external_network_id,
|
||||
client=client_mgr.routers_client)
|
||||
gw = self._router_set_gateway(net_router['id'], external_network_id,
|
||||
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(
|
||||
client_mgr=client_mgr, name=net_router['name'],
|
||||
tenant_id=tenant_id, cidr_offset=cidr_offset)
|
||||
|
@ -9,10 +9,12 @@
|
||||
# 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 re
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
from tempest.common import utils
|
||||
from tempest.common.utils.linux import remote_client
|
||||
from tempest.common import waiters
|
||||
from tempest import config
|
||||
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 members_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 (
|
||||
manager_topo_deployment as dmgr)
|
||||
|
||||
@ -60,6 +63,11 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
||||
def resource_setup(cls):
|
||||
super(LBaasRoundRobinBaseTest, cls).resource_setup()
|
||||
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
|
||||
def create_lbaas_clients(cls, mgr):
|
||||
@ -211,6 +219,18 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
||||
secgroup=self.security_group,
|
||||
**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):
|
||||
"""Start predefined servers:
|
||||
|
||||
@ -280,7 +300,9 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
||||
except Exception:
|
||||
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']
|
||||
lb_name = data_utils.rand_name(self.namestart)
|
||||
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.listener = self.listeners_client.create_listener(
|
||||
loadbalancer_id=lb_id, protocol=self.protocol_type,
|
||||
protocol_port=self.protocol_port, name=lb_name)['listener']
|
||||
loadbalancer_id=lb_id, protocol=protocol_type,
|
||||
protocol_port=protocol_port, name=lb_name)['listener']
|
||||
self.wait_for_load_balancer_status(lb_id)
|
||||
|
||||
self.pool = self.pools_client .create_pool(
|
||||
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']
|
||||
self.wait_for_load_balancer_status(lb_id)
|
||||
pool_id = self.pool['id']
|
||||
@ -308,15 +330,27 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
||||
self.wait_for_load_balancer_status(lb_id)
|
||||
|
||||
self.members = []
|
||||
for server in [self.server1, self.server2]:
|
||||
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=self.protocol_port)
|
||||
self.wait_for_load_balancer_status(lb_id)
|
||||
self.members.append(member)
|
||||
if member_count == 2:
|
||||
for server in [self.server1, self.server2]:
|
||||
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,
|
||||
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
|
||||
# vip port - see https://bugs.launchpad.net/neutron/+bug/1163569
|
||||
@ -374,6 +408,14 @@ class LBaasRoundRobinBaseTest(dmgr.TopoDeployScenarioManager):
|
||||
else:
|
||||
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):
|
||||
|
||||
@ -396,3 +438,34 @@ class TestLBaasRoundRobinOps(LBaasRoundRobinBaseTest):
|
||||
self.start_web_servers(self.rr_server_list)
|
||||
self.create_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