summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lcm/ns/data/scalemapping.json8
-rw-r--r--lcm/pub/tests/test_scaleaspect.py183
-rw-r--r--lcm/pub/utils/scaleaspect.py25
3 files changed, 175 insertions, 41 deletions
diff --git a/lcm/ns/data/scalemapping.json b/lcm/ns/data/scalemapping.json
index 7b6765dd..3391595e 100644
--- a/lcm/ns/data/scalemapping.json
+++ b/lcm/ns/data/scalemapping.json
@@ -9,13 +9,13 @@
"vnf_scale_info":[
{
"vnfd_id":"nf_zte_cscf",
- "vnf_scaleAspectId": "gpu",
+ "vnf_scaleAspectId": "gsu",
"numberOfSteps": "1"
},
{
"vnfd_id":"nf_zte_hss",
"vnf_scaleAspectId": "gpu",
- "numberOfSteps": "1"
+ "numberOfSteps": "3"
}
]
},
@@ -25,12 +25,12 @@
{
"vnfd_id":"nf_zte_cscf",
"vnf_scaleAspectId": "mpu",
- "numberOfSteps": "1"
+ "numberOfSteps": "2"
},
{
"vnfd_id":"nf_zte_hss",
"vnf_scaleAspectId": "mpu",
- "numberOfSteps": "1"
+ "numberOfSteps": "4"
}
]
}
diff --git a/lcm/pub/tests/test_scaleaspect.py b/lcm/pub/tests/test_scaleaspect.py
index 7cfe3be6..5bab9dab 100644
--- a/lcm/pub/tests/test_scaleaspect.py
+++ b/lcm/pub/tests/test_scaleaspect.py
@@ -4,6 +4,8 @@ from lcm.pub.utils.scaleaspect import get_nsdId
from lcm.pub.utils.scaleaspect import get_scale_vnf_data_from_json
from lcm.pub.utils.scaleaspect import get_scale_vnf_data_info_list
from lcm.pub.utils.scaleaspect import set_scacle_vnf_instance_id
+from lcm.pub.utils.scaleaspect import get_and_check_params
+from lcm.pub.utils.scaleaspect import set_scaleVnfData_type
from lcm.pub.database.models import NfInstModel
from lcm.pub.database.models import NSInstModel
from lcm.pub.msapi import catalog
@@ -15,6 +17,35 @@ import mock
class TestScaleAspect(TestCase):
def setUp(self):
+ self.init_scaling_map_json()
+ self.initInstModel()
+
+ self.init_scale_ns_data()
+
+ self.vnf_scale_info_list = [
+ {
+ "vnfd_id": "nf_zte_cscf",
+ "vnf_scaleAspectId": "mpu",
+ "numberOfSteps": "1"
+ },
+ {
+ "vnfd_id": "nf_zte_hss",
+ "vnf_scaleAspectId": "gsu",
+ "numberOfSteps": "2"
+ }
+ ]
+
+ def init_scale_ns_data(self):
+ self.ns_scale_aspect = "TIC_EDGE_IMS"
+ self.ns_scale_steps = "1"
+ self.ns_scale_direction = "SCALE_IN"
+ self.scaleNsData = {
+ "aspectId": self.ns_scale_aspect,
+ "numberOfSteps": self.ns_scale_steps,
+ "scalingDirection": self.ns_scale_direction
+ }
+
+ def init_scaling_map_json(self):
curdir_path = os.path.dirname(
os.path.dirname(
os.path.dirname(
@@ -22,14 +53,6 @@ class TestScaleAspect(TestCase):
filename = curdir_path + "/ns/data/scalemapping.json"
self.scaling_map_json = get_json_data(filename)
- self.initInstModel()
-
- self.scaleNsData = {
- "aspectId": "TIC_EDGE_IMS",
- "numberOfSteps": "1",
- "scalingDirection": "UP"
- }
-
def initInstModel(self):
self.nsd_id = "23"
self.ns_inst_id = "1"
@@ -102,29 +125,91 @@ class TestScaleAspect(TestCase):
'"description": "PGW VNFD description",'
'"isShared":true,"vnfExtendType":"driver"}}')
+ def add_another_nf_instance(self):
+ # Create a third vnf instance
+ nf_inst_id = "233"
+ package_id = "nf_zte_hss"
+ nf_uuid = "ab34-3g5j-de13-ab85-ij93"
+
+ NfInstModel.objects.create(
+ nfinstid=nf_inst_id,
+ nf_name=self.nf_name,
+ vnf_id=self.vnf_id,
+ vnfm_inst_id=self.vnfm_inst_id,
+ ns_inst_id=self.ns_inst_id,
+ max_cpu='14',
+ max_ram='12296',
+ max_hd='101',
+ max_shd="20",
+ max_net=10,
+ status='active',
+ mnfinstid=nf_uuid,
+ package_id=package_id,
+ vnfd_model='{"metadata": {"vnfdId": "1","vnfdName": "PGW001",'
+ '"vnfProvider": "zte","vnfdVersion": "V00001","vnfVersion": "V5.10.20",'
+ '"productType": "CN","vnfType": "PGW",'
+ '"description": "PGW VNFD description",'
+ '"isShared":true,"vnfExtendType":"driver"}}')
+
def tearDown(self):
NSInstModel().clean()
NfInstModel().clean()
+ def test_get_and_check_params(self):
+ aspect, numberOfSteps, scale_type = get_and_check_params(
+ self.scaleNsData, "1")
+ self.assertEqual(aspect, self.ns_scale_aspect)
+ self.assertEqual(numberOfSteps, self.ns_scale_steps)
+ self.assertEqual(scale_type, self.ns_scale_direction)
+
def test_get_scale_vnf_data_from_json(self):
vnf_data_package = get_scale_vnf_data_from_json(
self.scaling_map_json, "23", "TIC_EDGE_IMS", "1")
self.assertIsNotNone(vnf_data_package)
self.assertEqual(2, vnf_data_package.__len__())
+ self.assertIsNotNone(vnf_data_package)
+ self.assertEqual(2, vnf_data_package.__len__())
+ self.assertEqual("nf_zte_cscf", vnf_data_package[0]["vnfd_id"])
+ self.assertEqual("1", vnf_data_package[0]["numberOfSteps"])
+ self.assertEqual("gsu", vnf_data_package[0]["vnf_scaleAspectId"])
+ self.assertEqual("nf_zte_hss", vnf_data_package[1]["vnfd_id"])
+ self.assertEqual("3", vnf_data_package[1]["numberOfSteps"])
+ self.assertEqual("gpu", vnf_data_package[1]["vnf_scaleAspectId"])
- @mock.patch.object(catalog, 'get_scalingmap_json_package')
- def test_get_scale_vnf_data_info_list(
- self, mock_get_scalingmap_json_package):
- mock_get_scalingmap_json_package.return_value = self.scaling_map_json
-
- scale_vnf_data = get_scale_vnf_data_info_list(self.scaleNsData, "1")
- self.assertIsNotNone(scale_vnf_data)
- self.assertEqual(2, scale_vnf_data.__len__())
+ def test_get_scale_vnf_data_from_json_2(self):
+ vnf_data_package = get_scale_vnf_data_from_json(
+ self.scaling_map_json, "23", "TIC_EDGE_IMS", "2")
+ self.assertIsNotNone(vnf_data_package)
+ self.assertEqual(2, vnf_data_package.__len__())
+ self.assertEqual("nf_zte_cscf", vnf_data_package[0]["vnfd_id"])
+ self.assertEqual("2", vnf_data_package[0]["numberOfSteps"])
+ self.assertEqual("mpu", vnf_data_package[0]["vnf_scaleAspectId"])
+ self.assertEqual("nf_zte_hss", vnf_data_package[1]["vnfd_id"])
+ self.assertEqual("4", vnf_data_package[1]["numberOfSteps"])
+ self.assertEqual("mpu", vnf_data_package[1]["vnf_scaleAspectId"])
def test_set_scacle_vnf_instance_id(self):
+ result = set_scacle_vnf_instance_id(self.vnf_scale_info_list)
+ self.assertEqual(2, result.__len__())
+ self.assertEqual(result[0]["numberOfSteps"],
+ self.vnf_scale_info_list[0]["numberOfSteps"])
+ self.assertEqual(
+ result[0]["vnf_scaleAspectId"],
+ self.vnf_scale_info_list[0]["vnf_scaleAspectId"])
+ self.assertEqual(result[1]["numberOfSteps"],
+ self.vnf_scale_info_list[1]["numberOfSteps"])
+ self.assertEqual(
+ result[1]["vnf_scaleAspectId"],
+ self.vnf_scale_info_list[1]["vnf_scaleAspectId"])
+ self.assertEqual("231", result[0]["vnfInstanceId"])
+ self.assertEqual("232", result[1]["vnfInstanceId"])
+ self.assertNotIn("vnfd_id", result[0])
+ self.assertNotIn("vnfd_id", result[1])
+
+ def test_set_scacle_vnf_instance_id_2(self):
vnf_scale_info_list = [
{
- "vnfd_id": "nf_zte_cscf",
+ "vnfd_id": "error1",
"vnf_scaleAspectId": "mpu",
"numberOfSteps": "1"
},
@@ -135,15 +220,67 @@ class TestScaleAspect(TestCase):
}
]
result = set_scacle_vnf_instance_id(vnf_scale_info_list)
- self.assertEqual(result[0]["numberOfSteps"], vnf_scale_info_list[0]["numberOfSteps"])
- self.assertEqual(result[0]["vnf_scaleAspectId"], vnf_scale_info_list[0]["vnf_scaleAspectId"])
- self.assertEqual(result[1]["numberOfSteps"], vnf_scale_info_list[0]["numberOfSteps"])
- self.assertEqual(result[1]["vnf_scaleAspectId"], vnf_scale_info_list[0]["vnf_scaleAspectId"])
+ self.assertEqual(1, result.__len__())
+ self.assertEqual(
+ result[0]["numberOfSteps"],
+ vnf_scale_info_list[0]["numberOfSteps"])
+ self.assertEqual(
+ result[0]["vnf_scaleAspectId"],
+ vnf_scale_info_list[0]["vnf_scaleAspectId"])
+ self.assertEqual("232", result[0]["vnfInstanceId"])
+ self.assertNotIn("vnfd_id", result[0])
+
+ def test_set_scacle_vnf_instance_id_3(self):
+ vnf_scale_info_list = [
+ {
+ "vnfd_id": "error1",
+ "vnf_scaleAspectId": "mpu",
+ "numberOfSteps": "1"
+ },
+ {
+ "vnfd_id": "error2",
+ "vnf_scaleAspectId": "gsu",
+ "numberOfSteps": "1"
+ }
+ ]
+ result = set_scacle_vnf_instance_id(vnf_scale_info_list)
+ self.assertEqual(0, result.__len__())
+
+ def test_set_scacle_vnf_instance_id_4(self):
+ self.add_another_nf_instance()
+ result = set_scacle_vnf_instance_id(self.vnf_scale_info_list)
+ self.assertEqual(3, result.__len__())
self.assertEqual("231", result[0]["vnfInstanceId"])
self.assertEqual("232", result[1]["vnfInstanceId"])
- self.assertNotIn("vnfd_id", result[0])
- self.assertNotIn("vnfd_id", result[1])
+ self.assertEqual("233", result[2]["vnfInstanceId"])
+
+ def test_set_scaleVnfData_type(self):
+ vnf_scale_list = set_scacle_vnf_instance_id(self.vnf_scale_info_list)
+ result = set_scaleVnfData_type(vnf_scale_list, self.ns_scale_direction)
+ self.assertEqual(2, result.__len__())
+ self.assertNotIn("scaleByStepData", result)
+ self.assertEqual(
+ self.ns_scale_direction,
+ result[0]["scaleByStepData"]["type"])
+ self.assertEqual("mpu", result[0]["scaleByStepData"]["aspectId"])
+ self.assertNotIn("vnf_scaleAspectId", result[0]["scaleByStepData"])
+ self.assertEqual("1", result[0]["scaleByStepData"]["numberOfSteps"])
+ self.assertEqual(
+ self.ns_scale_direction,
+ result[1]["scaleByStepData"]["type"])
+ self.assertEqual("gsu", result[1]["scaleByStepData"]["aspectId"])
+ self.assertNotIn("vnf_scaleAspectId", result[1]["scaleByStepData"])
+ self.assertEqual("2", result[1]["scaleByStepData"]["numberOfSteps"])
def test_get_nsdId(self):
nsd_id = get_nsdId("1")
self.assertEqual("23", nsd_id)
+
+ @mock.patch.object(catalog, 'get_scalingmap_json_package')
+ def test_get_scale_vnf_data_info_list(
+ self, mock_get_scalingmap_json_package):
+ mock_get_scalingmap_json_package.return_value = self.scaling_map_json
+
+ scale_vnf_data = get_scale_vnf_data_info_list(self.scaleNsData, "1")
+ self.assertIsNotNone(scale_vnf_data)
+ self.assertEqual(2, scale_vnf_data.__len__())
diff --git a/lcm/pub/utils/scaleaspect.py b/lcm/pub/utils/scaleaspect.py
index e642ab01..ff65f702 100644
--- a/lcm/pub/utils/scaleaspect.py
+++ b/lcm/pub/utils/scaleaspect.py
@@ -85,8 +85,12 @@ def get_vnf_instance_id_list(vnfd_id):
nf_model_list = NfInstModel.objects.filter(**kwargs)
vnf_instance_id_list = list()
- for i in range(nf_model_list.__len__()):
- vnf_instance_id_list.append(nf_model_list[i].nfinstid)
+ nf_model_len = nf_model_list.__len__()
+ if nf_model_len == 0:
+ logger.error("No VNF instances found(vnfd_id=%s)" % vnfd_id)
+ else:
+ for i in range(nf_model_len):
+ vnf_instance_id_list.append(nf_model_list[i].nfinstid)
return vnf_instance_id_list
@@ -111,10 +115,6 @@ def check_scale_list(vnf_scale_list, ns_instanceId, aspect, step):
return vnf_scale_list
-def get_vnfInstanceIdByName(name):
- return name
-
-
def get_scale_vnf_data_list(filename, ns_instanceId, aspect, step, scale_type):
vnf_scale_list = get_vnf_scale_info(filename, ns_instanceId, aspect, step)
@@ -123,9 +123,6 @@ def get_scale_vnf_data_list(filename, ns_instanceId, aspect, step, scale_type):
logger.debug("scaleVnfDataList = %s" % scaleVnfDataList)
return scaleVnfDataList
- # return Response(data={'error': e.message},status=status.HTTP_204_NO_CONTENT)
- # return Response(data={'success': 'success'},status=status.HTTP_200_OK)
-
# Get the nsd id according to the ns instance id.
def get_nsdId(ns_instanceId):
@@ -209,6 +206,7 @@ def get_scale_vnf_data_from_json(scalingmap_json, nsd_id, aspect, step):
return vnf_scale_info_list
+ logger.error("get_scale_vnf_data_from_json method retuan null")
return None
@@ -219,10 +217,10 @@ def set_scacle_vnf_instance_id(vnf_scale_info_list):
vnf_scale_info = vnf_scale_info_list[i]
vnfd_id = vnf_scale_info["vnfd_id"]
vnf_instance_id_list = get_vnf_instance_id_list(vnfd_id)
- copy_vnf_scale_info = copy.deepcopy(vnf_scale_info)
- copy_vnf_scale_info.pop("vnfd_id")
index = 0
while index < vnf_instance_id_list.__len__():
+ copy_vnf_scale_info = copy.deepcopy(vnf_scale_info)
+ copy_vnf_scale_info.pop("vnfd_id")
copy_vnf_scale_info["vnfInstanceId"] = vnf_instance_id_list[index]
index += 1
scale_vnf_data_info_list.append(copy_vnf_scale_info)
@@ -238,9 +236,8 @@ def set_scaleVnfData_type(vnf_scale_list, scale_type):
scaleVnfDataList = []
if vnf_scale_list is not None:
for i in range(vnf_scale_list.__len__()):
- scaleVnfData = scale_vnf_data_mapping
- scaleVnfData["vnfInstanceId"] = get_vnfInstanceIdByName(
- vnf_scale_list[i]["vnfInstanceId"])
+ scaleVnfData = copy.deepcopy(scale_vnf_data_mapping)
+ scaleVnfData["vnfInstanceId"] = vnf_scale_list[i]["vnfInstanceId"]
scaleVnfData["scaleByStepData"]["type"] = scale_type
scaleVnfData["scaleByStepData"]["aspectId"] = vnf_scale_list[i]["vnf_scaleAspectId"]
scaleVnfData["scaleByStepData"]["numberOfSteps"] = vnf_scale_list[i]["numberOfSteps"]