VNF config SBI
authorying.yunlong <ying.yunlong@zte.com.cn>
Fri, 10 Feb 2017 05:05:01 +0000 (13:05 +0800)
committerying.yunlong <ying.yunlong@zte.com.cn>
Fri, 10 Feb 2017 05:05:01 +0000 (13:05 +0800)
Change-Id: Ifd3f4afea67b97c5365e72b2566e923fff86b9bf
Issue-Id: GVNFM-21
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
lcm/lcm/nf/vnfs/tests/test_vnf_create.py
lcm/lcm/nf/vnfs/vnf_create/create_vnf_identifier.py
lcm/lcm/nf/vnfs/vnf_create/inst_vnf.py
lcm/lcm/pub/database/models.py

index 293b653..185c829 100644 (file)
@@ -21,7 +21,7 @@ from rest_framework import status
 
 from lcm.nf.vnfs.vnf_create.create_vnf_identifier import CreateVnf
 from lcm.nf.vnfs.vnf_create.inst_vnf import InstVnf
-from lcm.pub.database.models import NfInstModel, JobStatusModel
+from lcm.pub.database.models import NfInstModel, JobStatusModel, NfvoRegInfoModel
 from lcm.pub.utils import restcall
 from lcm.pub.utils.jobutil import JobUtil
 
@@ -129,6 +129,40 @@ class TestNsInstantiate(TestCase):
         InstVnf(data, nf_inst_id=self.nf_inst_id, job_id=self.job_id).run()
         self.assert_job_result(self.job_id, 255, "Input parameter is not defined in vnfd_info.")
 
+    @mock.patch.object(restcall, 'call_req')
+    def test_instantiate_vnf_when_get_nfvo_config_failed(self, mock_call_req):
+        r1 = [0, json.JSONEncoder().encode(vnfd_model_dict), '200']
+        r2 = [0, json.JSONEncoder().encode(vnfd_model_dict), '200']
+        mock_call_req.side_effect = [r1, r2]
+        create_data = {
+            "vnfdId": "111",
+            "vnfInstanceName": "vFW_01",
+            "vnfInstanceDescription": " vFW in Nanjing TIC Edge"}
+        self.nf_inst_id = CreateVnf(create_data).do_biz()
+        self.job_id = JobUtil.create_job('NF', 'CREATE', self.nf_inst_id)
+        JobUtil.add_job_status(self.job_id, 0, "INST_VNF_READY")
+        data = inst_req_data
+        InstVnf(data, nf_inst_id=self.nf_inst_id, job_id=self.job_id).run()
+        self.assert_job_result(self.job_id, 255, "Nfvo was not registered")
+
+    @mock.patch.object(restcall, 'call_req')
+    def test_instantiate_vnf_success(self, mock_call_req):
+        NfvoRegInfoModel.objects.create(nfvoid='nfvo111', vnfminstid='vnfm111', apiurl='http://10.74.44.11',
+                                        nfvouser='root', nfvopassword='root123')
+        r1 = [0, json.JSONEncoder().encode(vnfd_model_dict), '200']
+        r2 = [0, json.JSONEncoder().encode(vnfd_model_dict), '200']
+        mock_call_req.side_effect = [r1, r2]
+        create_data = {
+            "vnfdId": "111",
+            "vnfInstanceName": "vFW_01",
+            "vnfInstanceDescription": " vFW in Nanjing TIC Edge"}
+        self.nf_inst_id = CreateVnf(create_data).do_biz()
+        self.job_id = JobUtil.create_job('NF', 'CREATE', self.nf_inst_id)
+        JobUtil.add_job_status(self.job_id, 0, "INST_VNF_READY")
+        data = inst_req_data
+        InstVnf(data, nf_inst_id=self.nf_inst_id, job_id=self.job_id).run()
+        self.assert_job_result(self.job_id, 100, "Instantiate Vnf success.")
+
 
 vnfd_model_dict = {
     'local_storages': [],
index bb7f80a..b427e66 100644 (file)
@@ -17,15 +17,12 @@ import uuid
 
 from lcm.pub.database.models import NfInstModel
 from lcm.pub.exceptions import NFLCMException
-from lcm.pub.utils.restcall import req_by_msb
+from lcm.pub.msapi.nfvolcm import vnfd_rawdata_get
 from lcm.pub.utils.timeutil import now_time
 from lcm.pub.utils.values import ignore_case_get
 
 logger = logging.getLogger(__name__)
-# Query vnfd_rawdata by vnfdid
-def vnfd_rawdata_get(vnfdid):
-    ret = req_by_msb("openoapi/nslcm/v1/vnfpackage/%s" % vnfdid, "GET")
-    return ret
+
 
 class CreateVnf:
     def __init__(self, data):
index 0182ef5..0bfeda8 100644 (file)
@@ -16,7 +16,7 @@ import logging
 import traceback
 from threading import Thread
 
-from lcm.pub.database.models import NfInstModel, JobStatusModel
+from lcm.pub.database.models import NfInstModel, JobStatusModel, NfvoRegInfoModel
 from lcm.pub.exceptions import NFLCMException
 from lcm.pub.msapi.nfvolcm import vnfd_rawdata_get
 from lcm.pub.utils.jobutil import JobUtil
@@ -74,6 +74,9 @@ class InstVnf(Thread):
                 JobUtil.add_job_status(self.job_id, 255, "Input parameter is not defined in vnfd_info.")
                 raise NFLCMException('Input parameter is not defined in vnfd_info.')
 
+        JobUtil.add_job_status(self.job_id, 2, 'GET_NFVO_CONNECTION_INFO')
+        self.load_global_config()
+
         JobUtil.add_job_status(self.job_id, 100, "Instantiate Vnf success.")
         is_exist = JobStatusModel.objects.filter(jobid=self.job_id).exists()
         logger.debug("check_ns_inst_name_exist::is_exist=%s" % is_exist)
@@ -136,4 +139,15 @@ class InstVnf(Thread):
         except Exception as e:
             logger.error('Nf instancing exception process exception=%s' % e.message)
             logger.error(traceback.format_exc())
-            return {'result': '255', 'msg': 'Nf instancing exception process exception', 'context': {}}
\ No newline at end of file
+            return {'result': '255', 'msg': 'Nf instancing exception process exception', 'context': {}}
+
+    def load_global_config(self):
+        logger.info("[NF instantiation]get nfvo connection info start")
+        reg_info = NfvoRegInfoModel.objects.filter(vnfminstid='vnfm111').first()
+        if reg_info:
+            self.nfvo_reg_info = reg_info.nfvoid
+            logger.info("[NF instantiation] Registered nfvo id is [%s]"%self.nfvo_reg_info)
+        else:
+            JobUtil.add_job_status(self.job_id, 255, "Nfvo was not registered")
+            raise NFLCMException("Nfvo was not registered")
+        logger.info("[NF instantiation]get nfvo connection info end")
\ No newline at end of file
index 1fdf21f..d434840 100644 (file)
@@ -98,3 +98,17 @@ class JobStatusModel(models.Model):
     def toJSON(self):
         import json
         return json.dumps(dict([(attr, getattr(self, attr)) for attr in [f.name for f in self._meta.fields]]))
+
+class NfvoRegInfoModel(models.Model):
+    class Meta:
+        db_table = 'NFVOREGINFO'
+
+    nfvoid = models.CharField(max_length=255, primary_key=True, db_column='NFVOID')
+    vnfminstid = models.CharField(max_length=255, db_column='VNFMINSTID')
+    apiurl = models.CharField(max_length=255, db_column='URL')
+    nfvouser = models.CharField(max_length=255, db_column='USERNAME', null=True)
+    nfvopassword = models.CharField(max_length=255, db_column='PASSWD', null=True)
+    authtype = models.IntegerField(db_column='AUTHTYPE', default=2)
+    clientcert = models.CharField(max_length=255, db_column='CLIENTCERT', null=True)
+    servercert = models.CharField(max_length=255, db_column='SERVERCERT', null=True)
+    regtime = models.CharField(max_length=255, db_column='REGTIME')