Merge branch 'master' into Azure
Change-Id: Ia9726dfe53813157c1e3002a44f041861722d424
Signed-off-by: tierno <alfonso.tiernosepulveda@telefonica.com>
diff --git a/test/RO_tests/simple_linux/scenario_simple_linux.yaml b/test/RO_tests/simple_linux/scenario_simple_linux.yaml
index 4ad320d..b6cff70 100644
--- a/test/RO_tests/simple_linux/scenario_simple_linux.yaml
+++ b/test/RO_tests/simple_linux/scenario_simple_linux.yaml
@@ -19,16 +19,28 @@
# contact with: nfvlabs@tid.es
##
---
-schema_version: 2
-scenario:
- name: simple
- description: Simple network scenario consisting of a single VNF connected to an external network
- vnfs:
- linux1: # vnf/net name in the scenario
- vnf_name: linux # VNF name as introduced in OPENMANO DB
- networks:
- mgmt: # provide a name for this net or connection
- external: true
- interfaces:
- - linux1: eth0 # Node and its interface
+nsd:nsd-catalog:
+ nsd:
+ - id: simple
+ name: simple
+ vendor: OSM
+ version: '1.0'
+ description: Simple network scenario consisting of a single VNF connected to an external network
+ constituent-vnfd:
+ # The member-vnf-index needs to be unique, starting from 1
+ # vnfd-id-ref is the id of the VNFD
+ # Multiple constituent VNFDs can be specified
+ - member-vnf-index: 1
+ vnfd-id-ref: linux
+ vld:
+ # Networks for the VNFs
+ - id: vld1
+ name: mgmt
+ short-name: vld1-sname
+ type: ELAN
+ mgmt-network: 'true'
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: 1
+ vnfd-id-ref: linux
+ vnfd-connection-point-ref: eth0
diff --git a/test/RO_tests/simple_linux/vnfd_linux.yaml b/test/RO_tests/simple_linux/vnfd_linux.yaml
index 45c670f..a666124 100644
--- a/test/RO_tests/simple_linux/vnfd_linux.yaml
+++ b/test/RO_tests/simple_linux/vnfd_linux.yaml
@@ -19,24 +19,28 @@
# contact with: nfvlabs@tid.es
##
---
-vnf:
- name: linux
- description: Single-VM VNF with a traditional cloud VM based on generic Linux OS
- external-connections:
- - name: eth0
- type: bridge
- VNFC: linux-VM
- local_iface_name: eth0
- description: General purpose interface
- VNFC:
- - name: linux-VM
- description: Generic Linux Virtual Machine
- #Copy the image to a compute path and edit this path
- image name: image_name.qcow2
- vcpus: 1 # Only for traditional cloud VMs. Number of virtual CPUs (oversubscription is allowed).
- ram: 1024 # Only for traditional cloud VMs. Memory in MBytes (not from hugepages, oversubscription is allowed)
- disk: 10
- bridge-ifaces:
- - name: eth0
- vpci: "0000:00:11.0"
- numas: []
+vnfd-catalog:
+ vnfd:
+ - id: linux
+ name: linux
+ description: Single-VM VNF with a traditional cloud VM based on generic Linux OS
+ connection-point:
+ - name: eth0
+ type: VPORT
+ vdu:
+ - id: linux-VM
+ name: linux-VM
+ description: Generic Linux Virtual Machine
+ #Copy the image to a compute path and edit this path
+ image: image_name.qcow2
+ vm-flavor:
+ memory-mb: '1024'
+ storage-gb: '10'
+ vcpu-count: '1'
+ interface:
+ - name: eth0
+ type: EXTERNAL
+ virtual-interface:
+ type: VIRTIO
+ vpci: "0000:00:11.0"
+ external-connection-point-ref: eth0
diff --git a/test/RO_tests/simple_multi_vnfc/scenario_multi_vnfc.yaml b/test/RO_tests/simple_multi_vnfc/scenario_multi_vnfc.yaml
index da9e270..07b8902 100644
--- a/test/RO_tests/simple_multi_vnfc/scenario_multi_vnfc.yaml
+++ b/test/RO_tests/simple_multi_vnfc/scenario_multi_vnfc.yaml
@@ -19,17 +19,31 @@
# contact with: nfvlabs@tid.es
##
---
-schema_version: 2
-scenario:
- name: simple_multi_vnfc
- description: Simple network scenario consisting of a multi VNFC VNF connected to an external network
- vnfs:
- linux1: # vnf/net name in the scenario
- vnf_name: linux_2VMs_v02 # VNF name as introduced in OPENMANO DB
- networks:
- mgmt: # provide a name for this net or connection
- external: true
- interfaces:
- - linux1: control0 # Node and its interface
- - linux1: control1 # Node and its interface
+nsd:nsd-catalog:
+ nsd:
+ - id: simple_multi_vnfc
+ name: simple_multi_vnfc
+ vendor: OSM
+ version: '1.0'
+ description: Simple network scenario consisting of a multi VNFC VNF connected to an external network
+ constituent-vnfd:
+ # The member-vnf-index needs to be unique, starting from 1
+ # vnfd-id-ref is the id of the VNFD
+ # Multiple constituent VNFDs can be specified
+ - member-vnf-index: 1
+ vnfd-id-ref: linux_2VMs_v02
+ vld:
+ # Networks for the VNFs
+ - id: vld1
+ name: mgmt
+ short-name: vld1-sname
+ type: ELAN
+ mgmt-network: 'true'
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: 1
+ vnfd-id-ref: linux_2VMs_v02
+ vnfd-connection-point-ref: eth0
+ - member-vnf-index-ref: 1
+ vnfd-id-ref: linux_2VMs_v02
+ vnfd-connection-point-ref: xe1
diff --git a/test/RO_tests/simple_multi_vnfc/vnfd_linux_2VMs_v02.yaml b/test/RO_tests/simple_multi_vnfc/vnfd_linux_2VMs_v02.yaml
index bf69cae..8d541c6 100644
--- a/test/RO_tests/simple_multi_vnfc/vnfd_linux_2VMs_v02.yaml
+++ b/test/RO_tests/simple_multi_vnfc/vnfd_linux_2VMs_v02.yaml
@@ -19,86 +19,106 @@
# contact with: nfvlabs@tid.es
##
---
-schema_version: "0.2"
-vnf:
- name: linux_2VMs_v02
- description: "Example of a linux VNF consisting of two VMs with one internal network"
- # class: parent # Optional. Used to organize VNFs
- internal-connections:
- - name: internalnet
- description: internalnet
- type: e-lan
- implementation: overlay
- ip-profile:
- ip-version: IPv4
- subnet-address: 192.168.1.0/24
+vnfd-catalog:
+ vnfd:
+ - id: linux_2VMs_v02
+ name: linux_2VMs_v02
+ description: "Example of a linux VNF consisting of two VMs with one internal network"
+ connection-point:
+ - id: eth0
+ name: eth0
+ short-name: eth0
+ type: VPORT
+ - id: xe1
+ name: xe1
+ short-name: xe1
+ type: VPORT
+ internal-vld:
+ - id: internalnet
+ name: internalnet
+ short-name: internalnet
+ ip-profile-ref: ip-prof1
+ type: ELAN
+ internal-connection-point:
+ - id-ref: VM1-xe0
+ - id-ref: VM2-xe0
+ ip-profiles:
+ - name: ip-prof1
+ description: IP profile
gateway-address: 192.168.1.1
- dns-address: 8.8.8.8
- dhcp:
+ dns-address: 8.8.8.8
+ #- address: 8.8.8.8
+ ip-profile-params:
+ ip-version: ipv4
+ subnet-address: 192.168.1.0/24
+ dhcp-params:
enabled: true
start-address: 192.168.1.100
count: 100
- elements:
- - VNFC: linux_2VMs-VM1
- local_iface_name: xe0
- ip_address: 192.168.1.2
- - VNFC: linux_2VMs-VM2
- local_iface_name: xe0
- ip_address: 192.168.1.3
- external-connections:
- - name: control0
- type: mgmt
- VNFC: linux_2VMs-VM1
- local_iface_name: eth0
- description: control interface VM1
- - name: control1
- type: mgmt
- VNFC: linux_2VMs-VM2
- local_iface_name: eth0
- description: control interface VM2
- - name: in
- type: bridge
- VNFC: linux_2VMs-VM1
- local_iface_name: xe1
- description: data interface input
- - name: out
- type: bridge
- VNFC: linux_2VMs-VM2
- local_iface_name: xe1
- description: data interface output
- VNFC:
- - name: linux_2VMs-VM1
- description: "Linux VM1 with 4 CPUs, 2 GB RAM and 3 bridge interfaces"
- #Copy the image to a compute path and edit this path
- image name: TestVM
- disk: 10
- vcpus: 4
- ram: 2048
- bridge-ifaces:
- - name: eth0
- vpci: "0000:00:09.0"
- bandwidth: 1 Mbps # Optional, informative only
- - name: xe0
- vpci: "0000:00:11.0"
- bandwidth: 1 Mbps
- - name: xe1
- vpci: "0000:00:12.0"
- bandwidth: 1 Mbps
- - name: linux_2VMs-VM2
- description: "Linux VM2 with 2 CPUs, 2 GB RAM and 3 bridge interfaces"
- #Copy the image to a compute path and edit this path
- image name: TestVM
- disk: 10
- vcpus: 2
- ram: 2048
- bridge-ifaces:
- - name: eth0
- vpci: "0000:00:09.0"
- bandwidth: 1 Mbps # Optional, informative only
- - name: xe0
- vpci: "0000:00:11.0"
- bandwidth: 1 Mbps
- - name: xe1
- vpci: "0000:00:12.0"
- bandwidth: 1 Mbps
-
+ vdu:
+ - id: linux_2VMs-VM1
+ name: linux_2VMs-VM1
+ description: Generic Linux Virtual Machine
+ #Copy the image to a compute path and edit this path
+ image: TestVM
+ vm-flavor:
+ memory-mb: '2048'
+ storage-gb: '10'
+ vcpu-count: '4'
+ interface:
+ - name: eth0
+ type: EXTERNAL
+ virtual-interface:
+ type: VIRTIO
+ vpci: "0000:00:09.0"
+ external-connection-point-ref: eth0
+ - name: xe0
+ type: INTERNAL
+ virtual-interface:
+ type: VIRTIO
+ vpci: "0000:00:11.0"
+ internal-connection-point-ref: VM1-xe0
+ - name: xe1
+ type: EXTERNAL
+ virtual-interface:
+ type: VIRTIO
+ vpci: "0000:00:12.0"
+ external-connection-point-ref: xe1
+ internal-connection-point:
+ - id: VM1-xe0
+ name: VM1-xe0
+ short-name: VM1-xe0
+ type: VPORT
+ - id: linux_2VMs-VM2
+ name: linux_2VMs-VM2
+ description: Generic Linux Virtual Machine
+ #Copy the image to a compute path and edit this path
+ image: TestVM
+ vm-flavor:
+ memory-mb: '2048'
+ storage-gb: '10'
+ vcpu-count: '4'
+ interface:
+ - name: eth0
+ type: EXTERNAL
+ virtual-interface:
+ type: VIRTIO
+ vpci: "0000:00:09.0"
+ external-connection-point-ref: eth0
+ - name: xe0
+ type: INTERNAL
+ virtual-interface:
+ type: VIRTIO
+ vpci: "0000:00:11.0"
+ internal-connection-point-ref: VM2-xe0
+ - name: xe1
+ type: EXTERNAL
+ virtual-interface:
+ type: VIRTIO
+ vpci: "0000:00:12.0"
+ external-connection-point-ref: xe1
+ internal-connection-point:
+ - id: VM2-xe0
+ name: VM2-xe0
+ short-name: VM2-xe0
+ type: VPORT
diff --git a/test/test_RO.py b/test/test_RO.py
index be711c8..014030b 100755
--- a/test/test_RO.py
+++ b/test/test_RO.py
@@ -21,8 +21,8 @@
##
# DEBUG WITH PDB
-import os
-if os.getenv('OSMRO_PDB_DEBUG'):
+from os import getenv
+if getenv('OSMRO_PDB_DEBUG'):
import sys
print(sys.path)
import pdb
@@ -770,23 +770,16 @@
flavor_id = test_config["vim_conn"].new_flavor(flavor_data)
# get flavor by id
result = test_config["vim_conn"].get_flavor(flavor_id)
-
- if test_config['vimtype'] != 'azure':
- self.assertEqual(ram, result['ram'])
- self.assertEqual(vcpus, result['vcpus'])
- self.assertEqual(disk, result['disk'])
- else:
- self.assertTrue(ram <= result['ram'])
- self.assertTrue(vcpus <= result['vcpus'])
- self.assertTrue(disk <= result['disk'])
+ self.assertEqual(ram, result['ram'])
+ self.assertEqual(vcpus, result['vcpus'])
+ self.assertEqual(disk, result['disk'])
# delete flavor
- if test_config['vimtype'] != 'azure':
- result = test_config["vim_conn"].delete_flavor(flavor_id)
- if result:
- logger.info("Flavor id {} sucessfully deleted".format(result))
- else:
- logger.info("Failed to delete flavor id {}".format(result))
+ result = test_config["vim_conn"].delete_flavor(flavor_id)
+ if result:
+ logger.info("Flavor id {} sucessfully deleted".format(result))
+ else:
+ logger.info("Failed to delete flavor id {}".format(result))
def test_010_get_flavor_negative(self):
Non_exist_flavor_id = str(uuid.uuid4())
@@ -848,10 +841,7 @@
with self.assertRaises(Exception) as context:
test_config["vim_conn"].new_flavor(Invalid_flavor_data)
- if test_config['vimtype'] == 'azure':
- self.assertEqual((context.exception).http_code, 404)
- else:
- self.assertEqual((context.exception).http_code, 400)
+ self.assertEqual((context.exception).http_code, 400)
def test_030_delete_flavor_negative(self):
Non_exist_flavor_id = str(uuid.uuid4())
@@ -864,93 +854,89 @@
with self.assertRaises(Exception) as context:
test_config["vim_conn"].delete_flavor(Non_exist_flavor_id)
- if test_config['vimtype'] == 'azure':
- self.assertEqual((context.exception).http_code, 401)
- else:
- self.assertEqual((context.exception).http_code, 404)
-
-class test_vimconn_new_image(test_base):
-
- def test_000_new_image(self):
- self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
- self.__class__.test_index,
- inspect.currentframe().f_code.co_name)
- self.__class__.test_index += 1
-
- image_path = test_config['image_path']
- if image_path:
- self.__class__.image_id = test_config["vim_conn"].new_image({ 'name': 'TestImage', 'location' : image_path,
- 'metadata': {'upload_location':None} })
- time.sleep(20)
-
- self.assertIsInstance(self.__class__.image_id, (str, unicode))
- self.assertIsInstance(uuid.UUID(self.__class__.image_id), uuid.UUID)
- else:
- self.skipTest("Skipping test as image file not present at RO container")
-
- def test_010_new_image_negative(self):
- Non_exist_image_path = '/temp1/cirros.ovf'
-
- self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
- self.__class__.test_index,
- inspect.currentframe().f_code.co_name)
- self.__class__.test_index += 1
-
- with self.assertRaises(Exception) as context:
- test_config["vim_conn"].new_image({ 'name': 'TestImage', 'location' : Non_exist_image_path})
-
- self.assertEqual((context.exception).http_code, 400)
-
- def test_020_delete_image(self):
- self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
- self.__class__.test_index,
- inspect.currentframe().f_code.co_name)
- self.__class__.test_index += 1
-
- image_id = test_config["vim_conn"].delete_image(self.__class__.image_id)
-
- self.assertIsInstance(image_id, (str, unicode))
-
- def test_030_delete_image_negative(self):
- Non_exist_image_id = str(uuid.uuid4())
-
- self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
- self.__class__.test_index,
- inspect.currentframe().f_code.co_name)
- self.__class__.test_index += 1
-
- with self.assertRaises(Exception) as context:
- test_config["vim_conn"].delete_image(Non_exist_image_id)
-
self.assertEqual((context.exception).http_code, 404)
-class test_vimconn_get_image_id_from_path(test_base):
+# class test_vimconn_new_image(test_base):
+#
+# def test_000_new_image(self):
+# self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
+# self.__class__.test_index,
+# inspect.currentframe().f_code.co_name)
+# self.__class__.test_index += 1
+#
+# image_path = test_config['image_path']
+# if image_path:
+# self.__class__.image_id = test_config["vim_conn"].new_image({ 'name': 'TestImage', 'location' : image_path, 'metadata': {'upload_location':None} })
+# time.sleep(20)
+#
+# self.assertIsInstance(self.__class__.image_id, (str, unicode))
+# self.assertIsInstance(uuid.UUID(self.__class__.image_id), uuid.UUID)
+# else:
+# self.skipTest("Skipping test as image file not present at RO container")
+#
+# def test_010_new_image_negative(self):
+# Non_exist_image_path = '/temp1/cirros.ovf'
+#
+# self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
+# self.__class__.test_index,
+# inspect.currentframe().f_code.co_name)
+# self.__class__.test_index += 1
+#
+# with self.assertRaises(Exception) as context:
+# test_config["vim_conn"].new_image({ 'name': 'TestImage', 'location' : Non_exist_image_path})
+#
+# self.assertEqual((context.exception).http_code, 400)
+#
+# def test_020_delete_image(self):
+# self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
+# self.__class__.test_index,
+# inspect.currentframe().f_code.co_name)
+# self.__class__.test_index += 1
+#
+# image_id = test_config["vim_conn"].delete_image(self.__class__.image_id)
+#
+# self.assertIsInstance(image_id, (str, unicode))
+#
+# def test_030_delete_image_negative(self):
+# Non_exist_image_id = str(uuid.uuid4())
+#
+# self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
+# self.__class__.test_index,
+# inspect.currentframe().f_code.co_name)
+# self.__class__.test_index += 1
+#
+# with self.assertRaises(Exception) as context:
+# test_config["vim_conn"].delete_image(Non_exist_image_id)
+#
+# self.assertEqual((context.exception).http_code, 404)
- def test_000_get_image_id_from_path(self):
- self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
- self.__class__.test_index,
- inspect.currentframe().f_code.co_name)
- self.__class__.test_index += 1
-
- image_path = test_config['image_path']
- if image_path:
- image_id = test_config["vim_conn"].get_image_id_from_path( image_path )
- self.assertEqual(type(image_id),str)
- else:
- self.skipTest("Skipping test as image file not present at RO container")
-
- def test_010_get_image_id_from_path_negative(self):
- Non_exist_image_path = '/temp1/cirros.ovf'
-
- self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
- self.__class__.test_index,
- inspect.currentframe().f_code.co_name)
- self.__class__.test_index += 1
-
- with self.assertRaises(Exception) as context:
- test_config["vim_conn"].new_image({ 'name': 'TestImage', 'location' : Non_exist_image_path })
-
- self.assertEqual((context.exception).http_code, 400)
+# class test_vimconn_get_image_id_from_path(test_base):
+#
+# def test_000_get_image_id_from_path(self):
+# self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
+# self.__class__.test_index,
+# inspect.currentframe().f_code.co_name)
+# self.__class__.test_index += 1
+#
+# image_path = test_config['image_path']
+# if image_path:
+# image_id = test_config["vim_conn"].get_image_id_from_path( image_path )
+# self.assertEqual(type(image_id),str)
+# else:
+# self.skipTest("Skipping test as image file not present at RO container")
+#
+# def test_010_get_image_id_from_path_negative(self):
+# Non_exist_image_path = '/temp1/cirros.ovf'
+#
+# self.__class__.test_text = "{}.{}. TEST {}".format(test_config["test_number"],
+# self.__class__.test_index,
+# inspect.currentframe().f_code.co_name)
+# self.__class__.test_index += 1
+#
+# with self.assertRaises(Exception) as context:
+# test_config["vim_conn"].new_image({ 'name': 'TestImage', 'location' : Non_exist_image_path })
+#
+# self.assertEqual((context.exception).http_code, 400)
class test_vimconn_get_image_list(test_base):
image_name = None
@@ -962,10 +948,10 @@
inspect.currentframe().f_code.co_name)
self.__class__.test_index += 1
- if test_config['image_name']:
- image_list = test_config['vim_conn'].get_image_list({'name': test_config['image_name']})
- else:
- image_list = test_config["vim_conn"].get_image_list()
+ # if test_config['image_name']:
+ # image_list = test_config['vim_conn'].get_image_list({'name': test_config['image_name']})
+ # else:
+ image_list = test_config["vim_conn"].get_image_list()
for item in image_list:
if 'name' in item:
@@ -1406,11 +1392,12 @@
for action in action_list:
# sleep for sometime till status is changed
time.sleep(25)
- instance_id = test_config["vim_conn"].action_vminstance(new_instance_id, {action: None})
+ instance_id = test_config["vim_conn"].action_vminstance(new_instance_id,
+ { action: None})
self.assertTrue(instance_id is None)
- #Deleting created vm instance
+ # Deleting created vm instance
logger.info("Deleting created vm intance")
test_config["vim_conn"].delete_vminstance(new_instance_id)
time.sleep(10)
@@ -1610,10 +1597,7 @@
with self.assertRaises(Exception) as context:
test_config["vim_conn"].delete_tenant(Non_exist_tenant_name)
- if test_config['vimtype'] != 'azure':
- self.assertEqual((context.exception).http_code, 404)
- else:
- self.assertEqual((context.exception).http_code, 401)
+ self.assertEqual((context.exception).http_code, 404)
def get_image_id():
@@ -1811,8 +1795,8 @@
'port_security': True, 'type': 'virtual', 'net_id': net_id})
c = c+1
- instance_id, _ = test_config["vim_conn"].new_vminstance(name='Test1_vm', description='', start=False,
- image_id=image_id, flavor_id=flavor_id, net_list=net_list)
+ instance_id, _ = test_config["vim_conn"].new_vminstance(name='Test1_vm', image_id=image_id,
+ flavor_id=flavor_id, net_list=net_list)
self.assertEqual(type(instance_id),str)
logger.info("Deleting created vm instance")