cordvtn-test:
Updated multiple new test scenarios with neutron and nova services
in context of network creation, using image instance and
validating creation.
Change-Id: I3d8720eeac7bf3f9e23ff9b46cf778cf938d4449
diff --git a/src/test/cordvtn/cordvtnTest.py b/src/test/cordvtn/cordvtnTest.py
index 1c5cf13..62b3310 100644
--- a/src/test/cordvtn/cordvtnTest.py
+++ b/src/test/cordvtn/cordvtnTest.py
@@ -485,7 +485,7 @@
net = neutron.delete_network(net_id[2])
return [self.get_key_value(d=networks, value = net_name)]
- def neutron_subnet_creation_and_validation(self,net_name,sub_cird):
+ def neutron_subnet_creation_and_validation_v1(self,net_name,sub_cird):
creds = self.get_neutron_credentials()
neutron = neutronclient.Client(**creds)
networks = neutron.list_networks(name=net_name)
@@ -494,7 +494,71 @@
body_subnet_example = {"subnet":{"network_id": net_id[2],"ip_version":4, "cidr":str(cidr), "allocation_pools": [{"start": "172.27.0.20", "end": "172.27.0.21"}]}}
neutron_sub = neutron.create_subnet(body_subnet_example)
networks = neutron.list_networks(name=net_name)
- return [self.get_key_value(d=networks, key = 'subnets')]
+ return self.get_key_value(d=networks, key = 'subnets')
+
+ def neutron_subnet_creation_and_validation(self,net_name,sub_cird):
+ creds = self.get_neutron_credentials()
+ neutron = neutronclient.Client(**creds)
+ networks = neutron.list_networks(name=net_name)
+ net_id = self.get_key_value(d=networks, key = 'id')
+ if sub_cird[0] == 'management':
+ cidr = sub_cird[1]
+ body_subnet_example = {"subnet":{"network_id": net_id[2],"ip_version":4, "cidr":str(cidr), "allocation_pools": [{"start": "172.27.0.20", "end": "172.27.0.21"}]}}
+ elif sub_cird[0] == 'public':
+ cidr = sub_cird[1]
+ gate_way = sub_cird[2]
+ body_subnet_example = {"subnet":{"network_id": net_id[2],"ip_version":4, "cidr":str(cidr), "gateway_ip":str(gate_way)}}
+ elif sub_cird[0] == 'private':
+ cidr = sub_cird[1]
+ gate_way = sub_cird[2]
+ body_subnet_example = {"subnet":{"network_id": net_id[2],"ip_version":4, "cidr":str(cidr), "gateway_ip":str(gate_way)}}
+
+ neutron_sub = neutron.create_subnet(body_subnet_example)
+ networks = neutron.list_networks(name=net_name)
+ return self.get_key_value(d=networks, key = 'subnets')
+
+ def sub_network_type_post_to_onos(self,net_name,sub_net_type):
+
+ creds = self.get_neutron_credentials()
+ neutron = neutronclient.Client(**creds)
+ networks = neutron.list_networks(name=net_name)
+ net_id = self.get_key_value(d=networks, key = 'id')
+ vtn_util = vtn_validation_utils('')
+
+ url = "http://{0}:8181/onos/cordvtn/serviceNetworks".format(vtn_util.endpoint)
+ auth = ('karaf','karaf')
+ network_data = {"ServiceNetwork":{"id": net_id[2],"type":sub_net_type, "providerNetworks":[]}}
+ json_network_type_data = json.dumps(network_data)
+ resp = requests.post(url=url, auth=auth, data =json_network_type_data)
+ return resp
+
+ def nova_instance_creation_and_validation(self,net_name,nova_obj,instance_name,image_name, flavor_id):
+ image = nova_obj.images.find(name=image_name)
+ flavor = nova_obj.flavors.find(name=flavor_id)
+ network = nova_obj.networks.find(label=net_name)
+ print network.id
+
+ server = nova_obj.servers.create(name = instance_name,
+ image = image.id,
+ flavor = flavor.id,
+ nics = [{'net-id':network.id}])
+ server_details = nova_obj.servers.find(id=server.id)
+ print('Server is launched and status is %s' %server_details.status)
+ if server_details.status == 'BUILD':
+ time.sleep(20)
+ server_details = nova_obj.servers.find(id=server.id)
+ print('After delay server status is %s state'%server_details.status)
+ if server_details.status == 'ERROR':
+ print('Server status is still in %s state'%server_details.status)
+ return server_details
+
+ def nova_instance_deletion(self, nova_obj, server_details):
+ results_nova_instance_deletion=nova_obj.servers.delete(server_details.id)
+ if results_nova_instance_deletion == None:
+ print"Nova intance is deleted"
+ else:
+ print"Nova intance is not deleted"
+ return results_nova_instance_deletion
def test_cordvtn_neutron_network_creation_and_validation_on_head_node_with_neutron_service(self):
"""
@@ -629,6 +693,330 @@
assert_equal(sub_net_id[0], True)
break
+ def test_cordvtn_neutron_management_network_creation_and_post_network_type_management_local_to_onos(self):
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork whose ip is under management network
+ 2. Run sync command for cordvtn
+ 3. Do GET Rest API and validate creation of network
+ 4. Pushed the network type as management local to onos
+ 5. Verified that onos is having under management network
+ """
+ test_net_name = 'vtn_test_7_net_management'
+ test_sub_net_cidr = ["management","172.27.0.0/24"]
+ test_management_type = "management_local"
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+
+ vtn_util = vtn_validation_utils('')
+ url = "http://{0}:8181/onos/cordvtn/serviceNetworks".format(vtn_util.endpoint)
+ auth = ('karaf','karaf')
+
+ resp = requests.get(url=url, auth=auth)
+ data = json.loads(resp.text)
+ for i in range(len(data['ServiceNetworks'])):
+ if data['ServiceNetworks'][i]['name'] == test_net_name:
+ sub_net_id = self.get_key_value(d=data['ServiceNetworks'][i], key = 'subnet')
+ if sub_net_id[2] == " ":
+ log.info('Sub network is not successful')
+ assert_equal(False, True)
+ break
+ elif sub_net_id[2] == test_sub_net_cidr[1]:
+ log.info('Sub network is successful')
+ assert_equal(sub_net_id[0], True)
+ break
+
+ net_type_post = self.sub_network_type_post_to_onos(test_net_name, test_management_type)
+ print("Response from onos to change network service type as management local = %s" %net_type_post.text)
+ net_type_json = json.loads(net_type_post.text)
+
+ self.neutron_network_deletion(test_net_name)
+ assert_equal(net_type_json['message'], 'null already exists')
+
+
+ def test_cordvtn_management_network_creation_with_launching_nova_instance_and_validation_on_head_node_with_nova_service(self):
+
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork whose ip is under management network
+ 3. Do GET Rest API and validate creation of network
+ 4. Create new nova instance under management network
+ 5. Validate new nova instance is created on nova service
+ """
+ test_net_name = 'vtn_test_8_net_management'
+ test_sub_net_cidr = ["management","172.27.0.0/24"]
+ test_management_type = "management_local"
+ instance_vm_name = 'vtn_test_8_nova_instance_management_net'
+ image_name = "vsg-1.1"
+ flavor_id = 'm1.small'
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ neutron_creds = self.get_neutron_credentials()
+ neutron = neutronclient.Client(**neutron_creds)
+ networks = neutron.list_networks(name=test_net_name)
+ network_id = self.get_key_value(d=networks, key = 'id')
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+ assert_equal(sub_result[0], True)
+ creds = self.get_nova_credentials()
+ nova = nova_client.Client('2', **creds)
+ new_instance_details = self.nova_instance_creation_and_validation(test_net_name,nova,instance_vm_name,image_name,flavor_id)
+ self.neutron_network_deletion(test_net_name)
+ self.nova_instance_deletion(nova, new_instance_details)
+ assert_equal(new_instance_details.status, 'ACTIVE')
+
+
+
+ def test_cordvtn_neutron_public_network_creation_and_validation_on_head_node_with_neutron_service(self):
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork who ip is under management network
+ 2. Run sync command for cordvtn
+ 3. Do GET Rest API and validate creation of network
+ 4. Validate network synch with created network in cord-onos
+ """
+ test_net_name = 'vtn_test_9_net_public'
+ test_sub_net_cidr = ["public","10.6.1.192/26",'10.6.1.193']
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+ if sub_result[0] is True:
+ self.neutron_network_deletion(test_net_name)
+ assert_equal(sub_result[0], True)
+
+ def test_cordvtn_neutron_public_network_creation_and_validation_on_onos(self):
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork whoes ip is under management network
+ 2. Run sync command for cordvtn
+ 3. Do GET Rest API and validate creation of network
+ """
+ test_net_name = 'vtn_test_10_net_public'
+ test_sub_net_cidr = ["public","10.6.1.192/26", '10.6.1.193']
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+
+ vtn_util = vtn_validation_utils('')
+ url = "http://{0}:8181/onos/cordvtn/serviceNetworks".format(vtn_util.endpoint)
+ auth = ('karaf','karaf')
+
+ resp = requests.get(url=url, auth=auth)
+ data = json.loads(resp.text)
+ for i in range(len(data['ServiceNetworks'])):
+ if data['ServiceNetworks'][i]['name'] == test_net_name:
+ sub_net_id = self.get_key_value(d=data['ServiceNetworks'][i], key = 'subnet')
+ if sub_net_id[2] == " ":
+ print('Sub network is not successful')
+ self.neutron_network_deletion(test_net_name)
+ assert_equal(False, True)
+ break
+ elif sub_net_id[2] == test_sub_net_cidr[1]:
+ print('Sub network is successful')
+ self.neutron_network_deletion(test_net_name)
+ assert_equal(sub_net_id[0], True)
+ break
+
+ def test_cordvtn_neutron_public_network_creation_and_post_network_type_as_public_to_onos(self):
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork whose ip is under management network
+ 2. Run sync command for cordvtn
+ 3. Do GET Rest API and validate creation of network
+ 4. Pushed the network type as management local to onos
+ 5. Verified that onos is having under management network
+ """
+ test_net_name = 'vtn_test_11_net_public'
+ test_sub_net_cidr = ["public","10.6.1.192/26", '10.6.1.193']
+ test_management_type = "public"
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+
+ vtn_util = vtn_validation_utils('')
+ url = "http://{0}:8181/onos/cordvtn/serviceNetworks".format(vtn_util.endpoint)
+ auth = ('karaf','karaf')
+
+ resp = requests.get(url=url, auth=auth)
+ data = json.loads(resp.text)
+ for i in range(len(data['ServiceNetworks'])):
+ if data['ServiceNetworks'][i]['name'] == test_net_name:
+ sub_net_id = self.get_key_value(d=data['ServiceNetworks'][i], key = 'subnet')
+ if sub_net_id[2] == " ":
+ log.info('Sub network is not successful')
+ assert_equal(False, True)
+ break
+ elif sub_net_id[2] == test_sub_net_cidr[1]:
+ log.info('Sub network is successful')
+ assert_equal(sub_net_id[0], True)
+ break
+
+ net_type_post = self.sub_network_type_post_to_onos(test_net_name, test_management_type)
+ print("Response from onos to change network service type as management local = %s" %net_type_post.text)
+ net_type_json = json.loads(net_type_post.text)
+
+ self.neutron_network_deletion(test_net_name)
+ assert_equal(net_type_json['message'], 'null already exists')
+
+ def test_cordvtn_public_network_creation_with_launching_nova_instance_and_validation_on_head_node_with_nova_service(self):
+
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork whose ip is under public network
+ 3. Do GET Rest API and validate creation of network
+ 4. Create new nova instance under public network
+ 5. Validate new nova instance is created on nova service
+ """
+ test_net_name = 'vtn_test_12_net_public'
+ test_sub_net_cidr = ["public","10.6.1.192/26",'10.6.1.193']
+ instance_vm_name = 'vtn_test_12_nova_instance_public_net'
+ image_name = "vsg-1.1"
+ flavor_id = 'm1.small'
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ neutron_creds = self.get_neutron_credentials()
+ neutron = neutronclient.Client(**neutron_creds)
+ networks = neutron.list_networks(name=test_net_name)
+ network_id = self.get_key_value(d=networks, key = 'id')
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+ assert_equal(sub_result[0], True)
+ creds = self.get_nova_credentials()
+ nova = nova_client.Client('2', **creds)
+ new_instance_details = self.nova_instance_creation_and_validation(test_net_name,nova,instance_vm_name,image_name,flavor_id)
+ self.neutron_network_deletion(test_net_name)
+ self.nova_instance_deletion(nova, new_instance_details)
+ assert_equal(new_instance_details.status, 'ACTIVE')
+
+ def test_cordvtn_neutron_private_network_creation_and_validation_on_head_node_with_neutron_service(self):
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork who ip is under private network
+ 2. Run sync command for cordvtn
+ 3. Do GET Rest API and validate creation of network
+ 4. Validate network synch with created network in cord-onos
+ """
+ test_net_name = 'vtn_test_13_net_private'
+ test_sub_net_cidr = ["private","10.160.160.160/24",'10.160.160.1']
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+ if sub_result[0] is True:
+ self.neutron_network_deletion(test_net_name)
+ assert_equal(sub_result[0], True)
+
+ def test_cordvtn_neutron_private_network_creation_and_validation_on_onos(self):
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork whoes ip is under management network
+ 2. Run sync command for cordvtn
+ 3. Do GET Rest API and validate creation of network
+ """
+ test_net_name = 'vtn_test_14_net_private'
+ test_sub_net_cidr = ["private","10.160.160.160/24", '10.160.160.1']
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+
+ vtn_util = vtn_validation_utils('')
+ url = "http://{0}:8181/onos/cordvtn/serviceNetworks".format(vtn_util.endpoint)
+ auth = ('karaf','karaf')
+
+ resp = requests.get(url=url, auth=auth)
+ data = json.loads(resp.text)
+ for i in range(len(data['ServiceNetworks'])):
+ if data['ServiceNetworks'][i]['name'] == test_net_name:
+ sub_net_id = self.get_key_value(d=data['ServiceNetworks'][i], key = 'subnet')
+ if sub_net_id[2] == " ":
+ print('Sub network is not successful')
+ self.neutron_network_deletion(test_net_name)
+ assert_equal(False, True)
+ break
+ elif sub_net_id[2] == '10.160.160.0/24':
+ #elif sub_net_id[2] == test_sub_net_cidr[1]:
+ print('Sub network is successful')
+ assert_equal(sub_net_id[0], True)
+ break
+
+ def test_cordvtn_neutron_private_network_creation_and_post_network_type_as_private_to_onos(self):
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork whose ip is under management network
+ 2. Run sync command for cordvtn
+ 3. Do GET Rest API and validate creation of network
+ 4. Pushed the network type as management local to onos
+ 5. Verified that onos is having under management network
+ """
+ test_net_name = 'vtn_test_15_net_private'
+ test_sub_net_cidr = ["private","192.168.160.160/24", '192.168.160.1']
+ test_management_type = "private"
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+
+ vtn_util = vtn_validation_utils('')
+ url = "http://{0}:8181/onos/cordvtn/serviceNetworks".format(vtn_util.endpoint)
+ auth = ('karaf','karaf')
+
+ resp = requests.get(url=url, auth=auth)
+ data = json.loads(resp.text)
+ for i in range(len(data['ServiceNetworks'])):
+ if data['ServiceNetworks'][i]['name'] == test_net_name:
+ sub_net_id = self.get_key_value(d=data['ServiceNetworks'][i], key = 'subnet')
+ if sub_net_id[2] == " ":
+ log.info('Sub network is not successful')
+ assert_equal(False, True)
+ break
+ elif sub_net_id[2] == "192.168.160.0/24":
+ log.info('Sub network is successful')
+ assert_equal(sub_net_id[0], True)
+ break
+
+ net_type_post = self.sub_network_type_post_to_onos(test_net_name, test_management_type)
+ print("Response from onos to change network service type as management local = %s" %net_type_post.text)
+ net_type_json = json.loads(net_type_post.text)
+
+ self.neutron_network_deletion(test_net_name)
+ assert_equal(net_type_json['message'], 'null already exists')
+
+ def test_cordvtn_private_network_creation_with_launching_nova_instance_and_validation_on_head_node_with_nova_service(self):
+
+ """
+ Algo:
+ 0. Create Test-Net,
+ 1. Cretae subnetwork whose ip is under private network
+ 3. Do GET Rest API and validate creation of network
+ 4. Create new nova instance under private network
+ 5. Validate new nova instance is created on nova service
+ """
+ test_net_name = 'vtn_test_16_net_private'
+ test_sub_net_cidr = ["private","192.168.160.160/24", '192.168.160.1']
+ instance_vm_name = 'vtn_test_12_nova_instance_private_net'
+ image_name = "vsg-1.1"
+ flavor_id = 'm1.small'
+ result = self.neutron_network_creation_and_validation(test_net_name)
+ assert_equal(result, True)
+ neutron_creds = self.get_neutron_credentials()
+ neutron = neutronclient.Client(**neutron_creds)
+ networks = neutron.list_networks(name=test_net_name)
+ network_id = self.get_key_value(d=networks, key = 'id')
+ sub_result = self.neutron_subnet_creation_and_validation(test_net_name,test_sub_net_cidr)
+ assert_equal(sub_result[0], True)
+ creds = self.get_nova_credentials()
+ nova = nova_client.Client('2', **creds)
+ new_instance_details = self.nova_instance_creation_and_validation(test_net_name,nova,instance_vm_name,image_name,flavor_id)
+ self.neutron_network_deletion(test_net_name)
+ self.nova_instance_deletion(nova, new_instance_details)
+ assert_equal(new_instance_details.status, 'ACTIVE')
+
def test_cordvtn_with_neutron_network_creation_and_validation_on_head_node_with_neutron_service(self):
"""
Algo:
@@ -671,7 +1059,7 @@
result = self.search_value(data, "Net-1")
assert_equal(result, True)
- def test_cordvtn_neutron_network_delete_and_validation_on_neutron_openstack(self):
+ def test_cordvtn_neutron_network_deletion_and_validation_on_neutron_openstack(self):
"""
Algo: