Skip to content

Commit

Permalink
Adding few testcases for service type NodePort
Browse files Browse the repository at this point in the history
Closes-bug: #1773302
selecting few sanity cases

Change-Id: I7a9a38dcbf542df487b9781a963888668cff6c6c
  • Loading branch information
vvelpula committed Jun 13, 2018
1 parent 525b813 commit fedb451
Show file tree
Hide file tree
Showing 4 changed files with 291 additions and 48 deletions.
77 changes: 38 additions & 39 deletions common/k8s/base.py
Expand Up @@ -71,6 +71,7 @@ def setup_http_service(self,
type=None,
external_ips=None,
frontend_port=80,
nodePort=None,
backend_port=80):
'''
A simple helper method to create a service
Expand All @@ -84,14 +85,11 @@ def setup_http_service(self,
metadata.update({'name': name})
selector_dict = {}
labels = labels or {}
d1 = {'protocol': 'TCP','port': int(frontend_port),'targetPort': int(backend_port) }
if nodePort:
d1['nodePort'] = int(nodePort)
spec.update({
'ports': [
{
'protocol': 'TCP',
'port': int(frontend_port),
'targetPort': int(backend_port)
}
]
'ports': [d1]
})
if labels:
selector_dict = {'selector': labels}
Expand All @@ -102,7 +100,6 @@ def setup_http_service(self,
if external_ips:
external_ips_dict = {'external_i_ps': external_ips}
spec.update(external_ips_dict)

return self.useFixture(ServiceFixture(
connections=self.connections,
name=name,
Expand Down Expand Up @@ -249,7 +246,7 @@ def verify_nginx_pod(self, pod, path=None):
result = pod.verify_on_setup()
if result:
if path:
pod.run_cmd('echo %s > /usr/share/nginx/html/index.html' % (pod.name))
pod.run_cmd('echo %s > /usr/share/nginx/html/index.html' % (pod.name))
cmd = "cp /usr/share/nginx/html/index.html /usr/share/nginx/html/%s" %(path)
pod.run_cmd(cmd)
else:
Expand Down Expand Up @@ -375,6 +372,7 @@ def validate_nginx_lb(self,
host=None,
path='',
port='80',
nodePort=None,
barred_pods=None,
protocol=None,
cert=None,
Expand All @@ -396,7 +394,8 @@ def validate_nginx_lb(self,
hit[x.name] = 0
for x in barred_pods:
hit_me_not[x.name] = 0

if nodePort:
port = nodePort
link = '%s://%s:%s/%s' % (protocol, service_ip, port, path)
for i in range(0, attempts):
(ret_val, output) = self.do_wget(link, pod=test_pod, host=host,
Expand Down Expand Up @@ -465,11 +464,11 @@ def setup_update_policy(self,
...
]
egress = [
{ 'to':
{ 'to':
[
{ 'pod_selector': {'role': 'temp' }
},
{'ip_block':
{'ip_block':
{"cidr" : "1.2.3.4/24"},
},
],
Expand Down Expand Up @@ -507,7 +506,7 @@ def setup_update_policy(self,
ingress_pod_selector = None
ingress_ns_selector = None
ingress_ip_block = None

from_item_dict = from_item.get('pod_selector') or {}
for k, v in from_item_dict.iteritems():
if not ingress_pod_dict:
Expand All @@ -534,7 +533,7 @@ def setup_update_policy(self,
ingress_ip_block_dict.update({k: v})
ingress_ip_block = {
'ip_block': ingress_ip_block_dict}

from_entries.append(ingress_pod_selector or
ingress_ns_selector or
ingress_ip_block)
Expand Down Expand Up @@ -582,7 +581,7 @@ def setup_update_policy(self,
egress_ns_dict['match_labels'].update({k: v})
egress_ns_selector = {
'namespace_selector': egress_ns_dict}

to_item_dict = to_item.get('ip_block') or {}
for k, v in to_item_dict.iteritems():
if not egress_ip_block_dict:
Expand All @@ -592,9 +591,9 @@ def setup_update_policy(self,
if k == "_except":
egress_ip_block_dict.update({k: v})
egress_ip_block = {
'ip_block': egress_ip_block_dict}
to_entries.append(egress_pod_selector or
'ip_block': egress_ip_block_dict}

to_entries.append(egress_pod_selector or
egress_ns_selector or
egress_ip_block)
# end for to_item
Expand All @@ -611,7 +610,7 @@ def setup_update_policy(self,
egress_list.append(egress_item_dict)
# end for egress_item
# end of egress

if policy_types:
spec['policy_types'] = policy_types
if ingress:
Expand Down Expand Up @@ -668,7 +667,7 @@ def setup_update_simple_policy(self,
'''
metadata = metadata or {}
spec = spec or {}

ingress_pods = ingress_pods
ingress_namespaces = ingress_namespaces
ingress_ipblock = ingress_ipblock
Expand All @@ -677,7 +676,7 @@ def setup_update_simple_policy(self,
egress_ipblock = egress_ipblock
ports = ports
egress_ports = egress_ports

ingress_pod_selector = None
ingress_ns_selector = None
ingress_ipblock_selector = None
Expand All @@ -686,7 +685,7 @@ def setup_update_simple_policy(self,
egress_ipblock_selector = None
port_list = []
egress_port_list = []

name = name or get_random_name('np-')
metadata.update({'name': name})
selector_dict = {}
Expand All @@ -710,7 +709,7 @@ def setup_update_simple_policy(self,

if ingress_ipblock is not None:
ingress_ipblock_selector = {'ip_block': ingress_ipblock}

if egress_pods is not None:
egress_pod_dict = {'match_labels': {}}
for k, v in egress_pods.iteritems():
Expand All @@ -722,15 +721,15 @@ def setup_update_simple_policy(self,
for k, v in egress_namespaces.iteritems():
egress_ns_dict['match_labels'].update({k: v})
egress_ns_selector = {'namespace_selector': egress_ns_dict}

if egress_ipblock is not None:
egress_ipblock_selector = {'ip_block': egress_ipblock}

if ports is not None:
for port_str in ports:
protocol, port = port_str.split('/')
port_list.append({'protocol': protocol, 'port': int(port)})

if egress_ports is not None:
for port_str in egress_ports:
protocol, port = port_str.split('/')
Expand Down Expand Up @@ -942,11 +941,11 @@ def restart_pod(self, pod_fixture):

def create_snat_router(self, name):

obj = self.connections.vnc_lib_fixture.vnc_h.create_router(name=name,
obj = self.connections.vnc_lib_fixture.vnc_h.create_router(name=name,
project_obj=self.connections.vnc_lib_fixture.get_project_obj())

self.addCleanup(self.connections.vnc_lib_fixture.vnc_h.delete_router, obj)
return obj
return obj

def connect_vn_with_router(self, router_obj, vn_fq_name):

Expand Down Expand Up @@ -977,16 +976,16 @@ def _remove_namespace_from_router(self, router_obj, vmi_obj):
router_obj.del_virtual_machine_interface(vmi_obj)
# Update logical router object
self.vnc_lib.logical_router_update(router_obj)


def configure_snat_for_pod (self, pod):
# Create logical router

# Create logical router
router_obj = self.create_snat_router("snat_router")

# Connect router with virtual network associated to pod
# Connect router with virtual network associated to pod
self.connect_vn_with_router(router_obj, pod.vn_fq_names[0])

# Configure external_gateway
self.connections.vnc_lib_fixture.vnc_h.connect_gateway_with_router(router_obj,\
self.public_vn.public_vn_fixture.obj)
Expand Down Expand Up @@ -1021,8 +1020,8 @@ def setup_tls_secret(self,
data=data,
**kwargs))
# end setup_tls_secret
def setup_vn(self,

def setup_vn(self,
project_name = None,
connections = None,
inputs = None,
Expand All @@ -1034,7 +1033,7 @@ def setup_vn(self,
vn_name = vn_name or get_random_name('vn_test')
return self.useFixture(VNFixture(project_name=project_name,
connections=connections,
inputs=inputs,
inputs=inputs,
vn_name=vn_name,
option=option))

Expand All @@ -1061,9 +1060,9 @@ def modify_cluster_project(self, project_name = None):
"Setting it to default project for few tests")
cmd = r'crudini --set /entrypoint.sh KUBERNETES cluster_project \\${KUBERNETES_CLUSTER_PROJECT:-\\"{\'domain\':\'default-domain\'\,\'project\':\'default\'}\\"}'
operation = "set"
project = "default"
project = "default"
for kube_manager in self.inputs.kube_manager_ips:
self.inputs.run_cmd_on_server(kube_manager, cmd,
self.inputs.run_cmd_on_server(kube_manager, cmd,
container='contrail-kube-manager',
shell_prefix = None)
self.restart_kube_manager()
Expand All @@ -1072,10 +1071,10 @@ def modify_cluster_project(self, project_name = None):
operation = operation)
return operation
#end modify_cluster_project

def revert_cluster_project(self, project_name = None, operation = None):
"""
This method reverts the value of cluster_project after performing few
This method reverts the value of cluster_project after performing few
sanity tests.
"""
if operation =="set":
Expand Down
5 changes: 3 additions & 2 deletions fixtures/k8s/service.py
Expand Up @@ -55,11 +55,12 @@ def _populate_attr(self):
self.metadata_obj = self.obj.metadata
self.kind = self.obj.kind
self.type = self.obj.spec.type

# While creating the object it is not getting updated with external IP
# So reading it again . Will try to read it couple of times
if self.type == 'LoadBalancer' or 'external_i_ps' in self.spec:
self.get_external_ips()
if self.type == 'NodePort' or 'nodePort' in self.spec:
self.nodePort = self.obj.spec.ports[0].node_port

def read(self):
try:
Expand Down Expand Up @@ -138,4 +139,4 @@ def get_external_ips(self):
% (self.name))
return False
return True
# end verify_service_in_contrail_api
# end verify_service_in_contrail_api

0 comments on commit fedb451

Please sign in to comment.