Delete namespace with network policy on it

Create network policy on non-default namespace and make sure that
SG was created for that policy
Remove the namespace and make sure the network policy and SG were
deleted

Change-Id: I9d417cf81ac21cb786a1b498f257fe01850388c5
This commit is contained in:
Genadi Chereshnya 2019-03-31 13:48:18 +03:00
parent 0d51e9905b
commit 5ce24364ec
1 changed files with 57 additions and 3 deletions

View File

@ -45,7 +45,8 @@ class TestNetworkPolicyScenario(base.BaseKuryrScenarioTest):
kuryr_netpolicy_crd_name = 'np-' + network_policy_name
network_policies = self.list_network_policies()
kuryrnetpolicies = ''
while True:
start = time.time()
while time.time() - start < TIMEOUT_PERIOD:
try:
kuryrnetpolicies = self.get_kuryr_netpolicy_crds(
name=kuryr_netpolicy_crd_name)
@ -61,9 +62,11 @@ class TestNetworkPolicyScenario(base.BaseKuryrScenarioTest):
str(kuryrnetpolicies['metadata']['name']))
self.assertIn(sg_id, sg_ids)
self.delete_network_policy(network_policy_name)
self.assertNotIn(network_policy_name, self.list_network_policies())
while True:
start = time.time()
while time.time() - start < TIMEOUT_PERIOD:
time.sleep(1)
if network_policy_name in self.list_network_policies():
continue
try:
self.get_kuryr_netpolicy_crds(name=kuryr_netpolicy_crd_name)
except kubernetes.client.rest.ApiException:
@ -127,3 +130,54 @@ class TestNetworkPolicyScenario(base.BaseKuryrScenarioTest):
raise lib_exc.TimeoutException()
self.assertEqual(labels, match_labels)
@decorators.idempotent_id('24577a9b-1d29-409b-8b60-da3c49d777c2')
def test_delete_namespace_with_network_policy(self):
ns_name, ns = self.create_namespace()
match_labels = {'role': 'db'}
np = self.create_network_policy(match_labels=match_labels,
namespace=ns_name)
LOG.debug("Creating network policy %s" % np)
network_policy_name = np.metadata.name
kuryr_netpolicy_crd_name = 'np-' + network_policy_name
network_policies = self.list_network_policies(namespace=ns_name)
kuryrnetpolicies = ''
start = time.time()
while time.time() - start < TIMEOUT_PERIOD:
try:
kuryrnetpolicies = self.get_kuryr_netpolicy_crds(
name=kuryr_netpolicy_crd_name, namespace=ns_name)
break
except kubernetes.client.rest.ApiException:
time.sleep(1)
continue
sg_id = kuryrnetpolicies['spec']['securityGroupId']
sgs = self.list_security_groups(fields='id')
sg_ids = [sg['id'] for sg in sgs]
self.assertIn(network_policy_name, network_policies)
self.assertEqual(kuryr_netpolicy_crd_name,
str(kuryrnetpolicies['metadata']['name']))
self.assertIn(sg_id, sg_ids)
# delete namespace
self.delete_namespace(ns_name)
start = time.time()
while time.time() - start < TIMEOUT_PERIOD:
time.sleep(1)
if network_policy_name in self.list_network_policies(
namespace=ns_name):
continue
try:
self.get_kuryr_netpolicy_crds(name=kuryr_netpolicy_crd_name,
namespace=ns_name)
except kubernetes.client.rest.ApiException:
break
start = time.time()
while time.time() - start < TIMEOUT_PERIOD:
sgs_after = self.list_security_groups(fields='id')
sg_ids_after = [sg['id'] for sg in sgs_after]
if sg_id not in sg_ids_after:
break
time.sleep(1)
if time.time() - start >= TIMEOUT_PERIOD:
raise lib_exc.TimeoutException('Sec group ID still exists')