Use one pod to check connectivity in kuryr_restart

In test_kuryr_restart use one pod to check connectivity to the
created pods from this pod instead of assigning a fip for each created
pod. This can solve problems when there is shortage of floating ips.

Also, Don't fail on deletion of a pod in cleanup if it's not found

Change-Id: I55a33f88356ff3d1ef6ed0ce83bb102172e46023
This commit is contained in:
Itzik Brown 2022-03-16 16:47:04 +02:00
parent 0e68dcf892
commit f6f77354b1
2 changed files with 23 additions and 10 deletions

View File

@ -213,10 +213,16 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest):
def delete_pod(cls, pod_name, body=None, namespace="default"):
if body is None:
body = {}
cls.k8s_client.CoreV1Api().delete_namespaced_pod(
name=pod_name,
body=body,
namespace=namespace)
try:
cls.k8s_client.CoreV1Api().delete_namespaced_pod(
name=pod_name,
body=body,
namespace=namespace)
except kubernetes.client.exceptions.ApiException as e:
if e.status == 404:
LOG.debug(f"Pod {pod_name} was not found.")
else:
raise
# TODO(apuimedo) This sleep to be replaced with a polling with
# timeout for the pod object to be gone from k8s api.
time.sleep(30)

View File

@ -18,8 +18,8 @@ from tempest import config
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
from kuryr_tempest_plugin.tests.scenario import base
from kuryr_tempest_plugin.tests.scenario import consts
CONF = config.CONF
@ -39,6 +39,9 @@ class TestKuryrRestartScenario(base.BaseKuryrScenarioTest):
def test_kuryr_pod_delete(self):
# find kuryr CNI and controller pods, delete them one by one and create
# a regular pod just after removal
client_pod_name, pod = self.create_pod()
self.addCleanup(self.delete_pod, client_pod_name)
kube_system_pods = self.get_pod_name_list(
namespace=CONF.kuryr_kubernetes.kube_system_namespace)
for kuryr_pod_name in kube_system_pods:
@ -65,11 +68,15 @@ class TestKuryrRestartScenario(base.BaseKuryrScenarioTest):
# Check once for controller kuryr pod and once for CNI pod
pod_name, pod = self.create_pod()
self.addCleanup(self.delete_pod, pod_name)
pod_fip = self.assign_fip_to_pod(pod_name)
self.assertIsNotNone(pod_fip['floatingip'][
'floating_ip_address'])
self.assertTrue(self.ping_ip_address(pod_fip[
'floatingip']['floating_ip_address']))
dst_pod_ip = self.get_pod_ip(pod_name)
curl_tmpl = self.get_curl_template(dst_pod_ip,
extra_args='-m 10',
port=8080)
cmd = ["/bin/sh", "-c", curl_tmpl.format(dst_pod_ip, ':8080')]
self.assertIn(consts.POD_OUTPUT, self.exec_command_in_pod(
client_pod_name, cmd),
"Connectivity from %s to pod with ip %s failed." % (
client_pod_name, dst_pod_ip))
# Check that both kuryr-pods are up and running
# The newly created pods are running because create_pod is written