Check connectivty from within the cluster

Check connectivity to the service from a pods within the namespace in
test_namespace instead from outisde

Change-Id: I5af7fc1be342d7fafa217347b1d84c3679c118c1
This commit is contained in:
Itzik Brown 2020-04-22 10:48:56 +03:00
parent 9db2bf03ed
commit 92e18b336f
2 changed files with 28 additions and 18 deletions

View File

@ -71,6 +71,7 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest):
def resource_setup(cls):
super(BaseKuryrScenarioTest, cls).resource_setup()
cls.pod_fips = []
cls.namespaces = []
# TODO(dmellado): Config k8s client in a cleaner way
k8s_config.load_kube_config()
@ -80,6 +81,8 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest):
for fip in cls.pod_fips:
cls.os_admin.floating_ips_client.delete_floatingip(
fip['floatingip']['id'])
for namespace in cls.namespaces:
cls.delete_namespace(namespace)
@classmethod
def create_network_policy(cls, name=None, namespace='default',
@ -551,8 +554,9 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest):
for i in range(pod_num):
pod_name, pod = cls.create_pod(
labels={"app": label}, namespace=namespace)
cls.addClassResourceCleanup(cls.delete_pod, pod_name,
namespace=namespace)
if cleanup:
cls.addClassResourceCleanup(cls.delete_pod, pod_name,
namespace=namespace)
cls.pod_num = pod_num
service_name, service_obj = cls.create_service(
pod_label=pod.metadata.labels, spec_type=spec_type,
@ -608,7 +612,12 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest):
@classmethod
def delete_namespace(cls, name, **kwargs):
body = cls.k8s_client.V1DeleteOptions(**kwargs)
cls.k8s_client.CoreV1Api().delete_namespace(name=name, body=body)
try:
cls.k8s_client.CoreV1Api().delete_namespace(name=name, body=body)
except kubernetes.client.rest.ApiException as e:
if e.status == 404:
return
raise
@classmethod
def get_namespace(cls, name):
@ -1070,17 +1079,23 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest):
return pod_name_list
def check_service_internal_connectivity(self, service_port='80',
protocol='TCP'):
protocol='TCP',
namespace='default',
cleanup=True):
# FIXME(itzikb): Use the clusterIP to
# check service status as there are some issues with the FIPs
# and OVN gates
clusterip_svc_ip = self.get_service_ip(self.service_name,
spec_type='ClusterIP')
pod_name, pod = self.create_pod()
self.addClassResourceCleanup(self.delete_pod, pod_name)
spec_type='ClusterIP',
namespace=namespace)
pod_name, pod = self.create_pod(namespace=namespace)
if cleanup:
self.addClassResourceCleanup(self.delete_pod, pod_name,
namespace=namespace)
self.assert_backend_amount_from_pod(
clusterip_svc_ip,
self.pod_num,
pod_name,
service_port,
protocol)
protocol,
namespace_name=namespace)

View File

@ -14,7 +14,6 @@
import json
import kubernetes
import requests
import time
from oslo_log import log as logging
@ -49,6 +48,7 @@ class TestNamespaceScenario(base.BaseKuryrScenarioTest):
def test_namespace(self):
# Check resources are created
namespace_name, namespace = self.create_namespace()
self.namespaces.append(namespace)
existing_namespaces = [ns.metadata.name
for ns in self.list_namespaces().items]
@ -84,15 +84,10 @@ class TestNamespaceScenario(base.BaseKuryrScenarioTest):
# Check namespace pod connectivity
pod_name, pod = self.create_pod(labels={"app": 'pod-label'},
namespace=namespace_name)
svc_name, _ = self.create_service(pod_label=pod.metadata.labels,
namespace=namespace_name)
svc_service_ip = self.get_service_ip(service_name=svc_name,
namespace=namespace_name)
self.wait_service_status(svc_service_ip,
CONF.kuryr_kubernetes.lb_build_timeout)
requests.get("http://{dst_ip}".format(dst_ip=svc_service_ip))
self.create_setup_for_service_test(namespace=namespace_name,
cleanup=False)
self.check_service_internal_connectivity(namespace=namespace_name,
cleanup=False)
# Check resources are deleted
self._delete_namespace_resources(namespace_name, kuryr_net_crd,
subnet_name)