Modify vfc-vnflcm vnf creation
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / vnf_create / create_vnf_identifier.py
index 12f540d..34329a5 100644 (file)
@@ -11,7 +11,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
+import json
 import logging
 import traceback
 import uuid
@@ -28,11 +28,9 @@ logger = logging.getLogger(__name__)
 class CreateVnf:
     def __init__(self, data):
         self.data = data
-        self.vnfd_id = ignore_case_get(self.data, "vnfdId")
+        self.csar_id = ignore_case_get(self.data, "vnfdId")
         self.vnf_instance_mame = ignore_case_get(self.data, "vnfInstanceName")
         self.description = ignore_case_get(self.data, "vnfInstanceDescription")
-        self.vnfd = None
-        self.csar_id = self.vnfd_id
 
     def do_biz(self):
         self.nf_inst_id = str(uuid.uuid4())
@@ -54,27 +52,33 @@ class CreateVnf:
                                        vnfd_model='',
                                        status='NOT_INSTANTIATED',
                                        nf_desc=self.description,
-                                       vnfdid=self.vnfd_id,
+                                       vnfdid=self.csar_id,
                                        vnfSoftwareVersion='',
                                        create_time=now_time())
-
         vnf_inst = NfInstModel.objects.get(nfinstid=self.nf_inst_id)
-        logger.debug('id is [%s],name is [%s],vnfd_id is [%s],vnfd_model is [%s],'
-                     'description is [%s],create_time is [%s]' %
-                     (vnf_inst.nfinstid, vnf_inst.nf_name, vnf_inst.vnfdid,
-                      vnf_inst.vnfd_model, vnf_inst.nf_desc, vnf_inst.create_time))
-        return self.nf_inst_id
+        resp = {
+            'id': vnf_inst.nfinstid,
+            'vnfInstanceName': vnf_inst.nf_name,
+            'vnfInstanceDescription': 'Human-readable description of the VNF instance.',
+            'vnfdId': vnf_inst.vnfdid,
+            'vnfProvider': vnf_inst.vendor,
+            'vnfProductName': vnf_inst.nf_name,
+            'vnfSoftwareVersion': vnf_inst.vnfSoftwareVersion,
+            'vnfdVersion': vnf_inst.version,
+            'vnfPkgId': vnf_inst.package_id,
+            'vnfConfigurableProperties': {}
+        }
+        return resp
 
     def check_valid(self):
-        logger.debug("CreateVnf--check_valid::> %s" % self.data)
         is_exist = NfInstModel.objects.filter(nf_name=self.vnf_instance_mame).exists()
-        logger.debug("check_valid::is_exist=%s" % is_exist)
         if is_exist:
             raise NFLCMException('VNF is already exist.')
-        self.vnfdModel = query_vnfpackage_by_id(self.csar_id)
+        vnf_package_info = query_vnfpackage_by_id(self.csar_id)
+        self.vnfd_info = json.loads(ignore_case_get(ignore_case_get(vnf_package_info, "packageInfo"), "vnfdModel"))
 
     def save_db(self):
-        metadata = ignore_case_get(self.vnfdModel, "metadata")
+        metadata = ignore_case_get(self.vnfd_info, "metadata")
         version = ignore_case_get(metadata, "vnfdVersion")
         vendor = ignore_case_get(metadata, "vendor")
         netype = ignore_case_get(metadata, "type")
@@ -85,9 +89,10 @@ class CreateVnf:
                                    version=version,
                                    vendor=vendor,
                                    netype=netype,
-                                   vnfd_model=self.vnfdModel,
+                                   vnfd_model=self.vnfd_info,
                                    status='NOT_INSTANTIATED',
                                    nf_desc=self.description,
-                                   vnfdid=self.vnfd_id,
+                                   vnfdid=self.csar_id,
                                    vnfSoftwareVersion=vnfsoftwareversion,
                                    create_time=now_time())
+        logger.debug('Create VNF instance[%s] success', self.nf_inst_id)