Add multitenancy hybrid tests for snat
Change-Id: I5702fbe81740d7950e7ed8a0aca9943a586ea5e1
Related-Prod: https://mirantis.jira.com/browse/PRODX-51693
diff --git a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
index 9b611a6..5418ef9 100644
--- a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
+++ b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
@@ -20,6 +20,7 @@
from tempest.common import waiters
from tempest import config
from tempest.lib.common import api_version_utils
+from tempest.lib.common import ssh
from tempest.lib.common.utils.linux import remote_client
from tempest.lib.common.utils import test_utils
from tempest.lib import exceptions as lib_exc
@@ -196,9 +197,23 @@
dest.validate_authentication()
def verify_l3_connectivity(self, source_ip, private_key,
- destination_ip, conn_expected=True, timeout=15):
- remote = self.get_remote_client(source_ip, private_key=private_key)
- remote.validate_authentication()
+ destination_ip, conn_expected=True, timeout=15,
+ jump_host_ip=None, jump_host_key=None):
+ if jump_host_ip:
+ jump_host_key = jump_host_key or private_key
+ jump_client = self.get_remote_client(jump_host_ip,
+ private_key=jump_host_key)
+ # TODO(mkarpin): add ability to pass proxy client to
+ # get_remote_client
+ remote = ssh.Client(source_ip, "cirros",
+ ssh_key_type="ecdsa",
+ pkey=private_key,
+ proxy_client=jump_client.ssh_client)
+ remote.test_connection_auth()
+ else:
+ remote = self.get_remote_client(source_ip,
+ private_key=private_key)
+ remote.validate_authentication()
output = remote.exec_command('ip route')
LOG.debug("Routing table on %s is %s", source_ip, output)
diff --git a/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy_hybrid.py b/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy_hybrid.py
index 5e07f7c..db95ff0 100644
--- a/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy_hybrid.py
+++ b/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy_hybrid.py
@@ -200,6 +200,8 @@
cls.r1['id'], subnet_id=cls.subnetB['id'])
cls.keypair = cls.create_keypair()
+ cls.snat_check_ip = (cls.r1["external_gateway_info"]
+ ["external_fixed_ips"][0]["ip_address"])
cls.bmA1, cls.bmA1_ip, cls.bmA1_fip = cls.create_server(
key_name=cls.keypair['name'],
@@ -312,6 +314,18 @@
self.vmB1_fip, self.keypair['private_key'],
self.vmB2_ip, conn_expected=True, timeout=self.ping_timeout)
+ def _test_connectivity_vma2_snat(self):
+ self.verify_l3_connectivity(
+ self.vmA2_ip, self.keypair['private_key'],
+ self.snat_check_ip, conn_expected=True, timeout=self.ping_timeout,
+ jump_host_ip=self.vmA1_fip)
+
+ def _test_connectivity_vmb2_snat(self):
+ self.verify_l3_connectivity(
+ self.vmB2_ip, self.keypair['private_key'],
+ self.snat_check_ip, conn_expected=True, timeout=self.ping_timeout,
+ jump_host_ip=self.vmB1_fip)
+
class BaremetalMultitenancyHybridGeneveGeneve(
BaremetalMultitenancyHybridBase):
@@ -375,6 +389,14 @@
def test_connectivity_vmb1_vmb2(self):
self._test_connectivity_vmb1_vmb2()
+ @decorators.idempotent_id('b1e2df03-cc7a-4c2d-a8f7-ab18b4b441c9')
+ def test_connectivity_vma2_snat(self):
+ self._test_connectivity_vma2_snat()
+
+ @decorators.idempotent_id('f9c68b0c-09d2-4e9a-8a7d-0b26adad6426')
+ def test_connectivity_vmb2_snat(self):
+ self._test_connectivity_vmb2_snat()
+
class BaremetalMultitenancyHybridVxlanVxlan(
BaremetalMultitenancyHybridBase):
@@ -438,6 +460,14 @@
def test_connectivity_vmb1_vmb2(self):
self._test_connectivity_vmb1_vmb2()
+ @decorators.idempotent_id('3a99c17b-8007-494a-b834-17f9a498abf8')
+ def test_connectivity_vma2_snat(self):
+ self._test_connectivity_vma2_snat()
+
+ @decorators.idempotent_id('ae196bec-7560-4c61-b895-89741ea39ce3')
+ def test_connectivity_vmb2_snat(self):
+ self._test_connectivity_vmb2_snat()
+
class BaremetalMultitenancyHybridVlanVlan(
BaremetalMultitenancyHybridBase):
@@ -501,6 +531,14 @@
def test_connectivity_vmb1_vmb2(self):
self._test_connectivity_vmb1_vmb2()
+ @decorators.idempotent_id('44a110ce-266e-4f15-8aea-9468d0007cbb')
+ def test_connectivity_vma2_snat(self):
+ self._test_connectivity_vma2_snat()
+
+ @decorators.idempotent_id('94ed2725-7d75-4066-b985-a489414bc318')
+ def test_connectivity_vmb2_snat(self):
+ self._test_connectivity_vmb2_snat()
+
class BaremetalMultitenancyHybridVlanGeneve(
BaremetalMultitenancyHybridBase):
@@ -564,6 +602,14 @@
def test_connectivity_vmb1_vmb2(self):
self._test_connectivity_vmb1_vmb2()
+ @decorators.idempotent_id('2c4fa154-b407-4cfa-b007-7668bd8436ac')
+ def test_connectivity_vma2_snat(self):
+ self._test_connectivity_vma2_snat()
+
+ @decorators.idempotent_id('dd09381b-452a-4979-9e77-4017155bf080')
+ def test_connectivity_vmb2_snat(self):
+ self._test_connectivity_vmb2_snat()
+
class BaremetalMultitenancyHybridGeneveVlan(
BaremetalMultitenancyHybridBase):
@@ -627,6 +673,14 @@
def test_connectivity_vmb1_vmb2(self):
self._test_connectivity_vmb1_vmb2()
+ @decorators.idempotent_id('5e6a0cbe-180d-4df9-b7b2-af20742c41ad')
+ def test_connectivity_vma2_snat(self):
+ self._test_connectivity_vma2_snat()
+
+ @decorators.idempotent_id('a64b1f48-c009-47c5-a907-8923d9d7952f')
+ def test_connectivity_vmb2_snat(self):
+ self._test_connectivity_vmb2_snat()
+
class BaremetalMultitenancyHybridGeneveVxlan(
BaremetalMultitenancyHybridBase):
@@ -690,6 +744,14 @@
def test_connectivity_vmb1_vmb2(self):
self._test_connectivity_vmb1_vmb2()
+ @decorators.idempotent_id('444794a7-dd67-4693-ab7e-7b3b6e95fa32')
+ def test_connectivity_vma2_snat(self):
+ self._test_connectivity_vma2_snat()
+
+ @decorators.idempotent_id('4e8828ba-d0e9-4b24-a170-90824581c12a')
+ def test_connectivity_vmb2_snat(self):
+ self._test_connectivity_vmb2_snat()
+
class BaremetalMultitenancyHybridVxlanGeneve(
BaremetalMultitenancyHybridBase):
@@ -753,6 +815,14 @@
def test_connectivity_vmb1_vmb2(self):
self._test_connectivity_vmb1_vmb2()
+ @decorators.idempotent_id('b13665b2-1fe4-417a-8e0c-1af523e62aea')
+ def test_connectivity_vma2_snat(self):
+ self._test_connectivity_vma2_snat()
+
+ @decorators.idempotent_id('0e0d4592-dc77-4026-8b46-46f4040bf7ee')
+ def test_connectivity_vmb2_snat(self):
+ self._test_connectivity_vmb2_snat()
+
class BaremetalMultitenancyHybridVxlanVlan(
BaremetalMultitenancyHybridBase):
@@ -816,6 +886,14 @@
def test_connectivity_vmb1_vmb2(self):
self._test_connectivity_vmb1_vmb2()
+ @decorators.idempotent_id('eba44471-36b4-408e-af61-6e365674b868')
+ def test_connectivity_vma2_snat(self):
+ self._test_connectivity_vma2_snat()
+
+ @decorators.idempotent_id('e759ed80-5137-44c5-86e8-e49191afbe62')
+ def test_connectivity_vmb2_snat(self):
+ self._test_connectivity_vmb2_snat()
+
class BaremetalMultitenancyHybridVlanVxlan(
BaremetalMultitenancyHybridBase):
@@ -879,6 +957,14 @@
def test_connectivity_vmb1_vmb2(self):
self._test_connectivity_vmb1_vmb2()
+ @decorators.idempotent_id('4fa0b40f-5048-4720-9019-c269a127f918')
+ def test_connectivity_vma2_snat(self):
+ self._test_connectivity_vma2_snat()
+
+ @decorators.idempotent_id('8e865d32-a831-4c3d-87b0-2fc2a9c445ed')
+ def test_connectivity_vmb2_snat(self):
+ self._test_connectivity_vmb2_snat()
+
class BaremetalMultitenancyHybridBaseBM(
BaremetalMultitenancyHybridBase):
@@ -889,9 +975,9 @@
( r1 ) ------- netB --------
| | |
--------- netA ------------ (bmB1) (bmB2)
- | | fipB1
+ | | fipbmB1
(bmA1) (bmA2)
- fipbmA
+ fipbmA1
* Test can ping fips fipbmA, fipA1, fipB1
* Test each VM can reach other VMs via FIPs
@@ -942,6 +1028,8 @@
cls.r1['id'], subnet_id=cls.subnetB['id'])
cls.keypair = cls.create_keypair()
+ cls.snat_check_ip = (cls.r1["external_gateway_info"]
+ ["external_fixed_ips"][0]["ip_address"])
cls.bmA1, cls.bmA1_ip, cls.bmA1_fip = cls.create_server(
key_name=cls.keypair['name'],
@@ -1008,6 +1096,18 @@
self.bmA1_fip, self.keypair['private_key'],
self.bmB2_ip, conn_expected=True, timeout=self.ping_timeout)
+ def _test_connectivity_bma2_snat(self):
+ self.verify_l3_connectivity(
+ self.bmA2_ip, self.keypair['private_key'],
+ self.snat_check_ip, conn_expected=True, timeout=self.ping_timeout,
+ jump_host_ip=self.bmA1_fip)
+
+ def _test_connectivity_bmb2_snat(self):
+ self.verify_l3_connectivity(
+ self.bmB2_ip, self.keypair['private_key'],
+ self.snat_check_ip, conn_expected=True, timeout=self.ping_timeout,
+ jump_host_ip=self.bmB1_fip)
+
class BaremetalMultitenancyHybridBaseBMGeneveGeneve(
BaremetalMultitenancyHybridBaseBM):
@@ -1039,6 +1139,14 @@
def test_connectivity_bma1_bmb2(self):
self._test_connectivity_bma1_bmb2()
+ @decorators.idempotent_id('3ad949e2-2fd2-42d9-bace-e0c1aab5d21d')
+ def test_connectivity_bma2_snat(self):
+ self._test_connectivity_bma2_snat()
+
+ @decorators.idempotent_id('cb2a0a0c-1b3b-4a72-8e11-051b3e6cd578')
+ def test_connectivity_bmb2_snat(self):
+ self._test_connectivity_bmb2_snat()
+
class BaremetalMultitenancyHybridBaseBMVxlanVxlan(
BaremetalMultitenancyHybridBaseBM):
@@ -1070,6 +1178,14 @@
def test_connectivity_bma1_bmb2(self):
self._test_connectivity_bma1_bmb2()
+ @decorators.idempotent_id('0b9ae8ad-e566-49c6-92a5-64b3a86189c7')
+ def test_connectivity_bma2_snat(self):
+ self._test_connectivity_bma2_snat()
+
+ @decorators.idempotent_id('58e9878a-57fd-40d5-aeee-7200d799b059')
+ def test_connectivity_bmb2_snat(self):
+ self._test_connectivity_bmb2_snat()
+
class BaremetalMultitenancyHybridBaseBMVlanVlan(
BaremetalMultitenancyHybridBaseBM):
@@ -1101,6 +1217,14 @@
def test_connectivity_bma1_bmb2(self):
self._test_connectivity_bma1_bmb2()
+ @decorators.idempotent_id('0061ced9-1099-401b-a418-6acd6d5b0e9a')
+ def test_connectivity_bma2_snat(self):
+ self._test_connectivity_bma2_snat()
+
+ @decorators.idempotent_id('7f689624-3e59-4bca-818c-affbb414d1b8')
+ def test_connectivity_bmb2_snat(self):
+ self._test_connectivity_bmb2_snat()
+
class BaremetalMultitenancyHybridBaseBMGeneveVLAN(
BaremetalMultitenancyHybridBaseBM):
@@ -1132,6 +1256,14 @@
def test_connectivity_bma1_bmb2(self):
self._test_connectivity_bma1_bmb2()
+ @decorators.idempotent_id('7f0b6589-b535-425b-9880-b0c15c6b3b64')
+ def test_connectivity_bma2_snat(self):
+ self._test_connectivity_bma2_snat()
+
+ @decorators.idempotent_id('cede7117-18a6-4dca-ad2f-d68aec450cc0')
+ def test_connectivity_bmb2_snat(self):
+ self._test_connectivity_bmb2_snat()
+
class BaremetalMultitenancyHybridBaseBMGeneveVXLAN(
BaremetalMultitenancyHybridBaseBM):
@@ -1162,3 +1294,11 @@
@decorators.idempotent_id('388a695f-c289-4d09-878b-1dc7d2b822ac')
def test_connectivity_bma1_bmb2(self):
self._test_connectivity_bma1_bmb2()
+
+ @decorators.idempotent_id('10e5429d-7534-4a65-b0ec-a1e4e0111ab5')
+ def test_connectivity_bma2_snat(self):
+ self._test_connectivity_bma2_snat()
+
+ @decorators.idempotent_id('c2811a5b-cf2b-48c4-a33f-c844855d89be')
+ def test_connectivity_bmb2_snat(self):
+ self._test_connectivity_bmb2_snat()