update version of lcm
[vfc/nfvo/lcm.git] / lcm / ns / ns_create.py
index f7cf3ca..1f99f22 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 import logging
+import traceback
 import uuid
 
 from lcm.pub.config.config import REPORT_TO_AAI
 from lcm.pub.database.models import NSInstModel
 from lcm.pub.exceptions import NSLCMException
-from lcm.pub.msapi.aai import create_customer_aai
+from lcm.pub.msapi.aai import create_ns_aai
 from lcm.pub.msapi.sdc_run_catalog import query_nspackage_by_id
 from lcm.pub.utils.timeutil import now_time
 from lcm.pub.utils.values import ignore_case_get
+from lcm.ns.const import SERVICE_ROLE, SERVICE_TYPE
 
 logger = logging.getLogger(__name__)
 
 
 class CreateNSService(object):
-    def __init__(self, nsd_id, ns_name, description):
-        self.nsd_id = nsd_id
+    def __init__(self, csar_id, ns_name, description, context):
+        self.csar_id = csar_id
         self.ns_name = ns_name
         self.description = description
+        self.global_customer_id = ignore_case_get(context, 'globalCustomerId')
+        self.service_type = ignore_case_get(context, 'serviceType')
         self.ns_inst_id = ''
         self.ns_package_id = ''
 
@@ -43,13 +47,14 @@ class CreateNSService(object):
         return self.ns_inst_id
 
     def check_nsd_valid(self):
-        logger.debug("CreateNSService::check_nsd_valid::nsd_id=%s" % self.nsd_id)
-        ns_package_info = query_nspackage_by_id(self.nsd_id)
+        logger.debug("CreateNSService::check_nsd_valid::csar_id=%s" % self.csar_id)
+        ns_package_info = query_nspackage_by_id(self.csar_id)
         if not ns_package_info:
-            raise NSLCMException("nsd(%s) not exists." % self.nsd_id)
+            raise NSLCMException("nsd(%s) not exists." % self.csar_id)
         packageInfo = ns_package_info["packageInfo"]
         self.ns_package_id = ignore_case_get(packageInfo, "nsPackageId")
-        logger.debug("CreateNSService::check_nsd_valid::ns_package_id=%s" % self.ns_package_id)
+        self.nsd_id = ignore_case_get(packageInfo, "nsdId")
+        logger.debug("CreateNSService::check_nsd_valid::ns_package_id=%s,nsd_id=%s", self.ns_package_id, self.nsd_id)
 
     def check_ns_inst_name_exist(self):
         is_exist = NSInstModel.objects.filter(name=self.ns_name).exists()
@@ -60,37 +65,28 @@ class CreateNSService(object):
     def create_ns_inst(self):
         self.ns_inst_id = str(uuid.uuid4())
         logger.debug("CreateNSService::create_ns_inst::ns_inst_id=%s" % self.ns_inst_id)
-        NSInstModel(id=self.ns_inst_id, name=self.ns_name, nspackage_id=self.ns_package_id,
-                    nsd_id=self.nsd_id, description=self.description, status='empty',
-                    lastuptime=now_time()).save()
+        NSInstModel(id=self.ns_inst_id,
+                    name=self.ns_name,
+                    nspackage_id=self.ns_package_id,
+                    nsd_id=self.nsd_id,
+                    description=self.description,
+                    status='empty',
+                    lastuptime=now_time(),
+                    global_customer_id=self.global_customer_id,
+                    service_type=self.service_type).save()
 
     def create_ns_in_aai(self):
         logger.debug("CreateNSService::create_ns_in_aai::report ns instance[%s] to aai." % self.ns_inst_id)
-        global_customer_id = "global-customer-id-" + self.ns_inst_id
-        data = {
-            "global-customer-id": "global-customer-id-" + self.ns_inst_id,
-            "subscriber-name": "subscriber-name-" + self.ns_inst_id,
-            "subscriber-type": "subscriber-type-" + self.ns_inst_id,
-            "service-subscriptions": {
-                "service-subscription": [
-                    {
-                        "service-type": "Network",
-                        "service-instances": {
-                            "service-instance": [
-                                {
-                                    "service-instance-id": self.ns_inst_id,
-                                    "service-instance-name": self.ns_name,
-                                    "service-type": "Network",
-                                    "service-role": "service-role-" + self.ns_inst_id
-                                }
-                            ]
-                        }
-                    }
-                ]
+        try:
+            data = {
+                "service-instance-id": self.ns_inst_id,
+                "service-instance-name": self.ns_name,
+                "service-type": SERVICE_TYPE,
+                "service-role": SERVICE_ROLE
             }
-        }
-        resp_data, resp_status = create_customer_aai(global_customer_id, data)
-        if resp_data:
-            logger.debug("Fail to create ns[%s] to aai: [%s].", self.ns_inst_id, resp_status)
-        else:
-            logger.debug("Success to create ns[%s] to aai: [%s].", self.ns_inst_id, resp_status)
+            resp_data, resp_status = create_ns_aai(self.global_customer_id, self.service_type, self.ns_inst_id, data)
+            logger.debug("Success to create ns[%s] to aai:[%s],[%s].", self.ns_inst_id, resp_data, resp_status)
+        except NSLCMException as e:
+            logger.debug("Fail to createns[%s] to aai, detail message: %s" % (self.ns_inst_id, e.message))
+        except:
+            logger.error(traceback.format_exc())