from catalog.pub.utils.values import ignore_case_get
 from catalog.pub.database.models import PnfPackageModel
 from catalog.pub.exceptions import CatalogException
+from catalog.pub.utils import toscaparser
 
 logger = logging.getLogger(__name__)
 
     return response_data
 
 
+def process(pnfd_info_id, local_file_name):  # TODO: onboardingState changes
+    pnfd_json = toscaparser.parse_pnfd(local_file_name)
+    pnfd = json.JSONDecoder().decode(pnfd_json)
+
+    pnfd_id = pnfd["metadata"]["id"]
+    if pnfd_id and PnfPackageModel.objects.filter(pnfdId=pnfd_id):  # pnfd_id may not exist
+        raise CatalogException("NS Descriptor (%s) already exists." % pnfd_id)
+
+    PnfPackageModel(
+        pnfPackageId=pnfd_info_id,
+        pnfdId=pnfd_id,
+        pnfdName=pnfd["metadata"].get("name", pnfd_id),
+        pnfdDesginer=pnfd["metadata"].get("vendor", "undefined"),
+        pnfdDescription=pnfd["metadata"].get("description", ""),
+        pnfdVersion=pnfd["metadata"].get("version", "undefined"),
+        nsPackageUri=local_file_name,  # TODO
+        sdcCsarId=pnfd_info_id,
+        localFilePath=local_file_name,
+        pnfdModel=pnfd_json
+    ).save()
+
+
 def upload(files, pnfd_info_id):
     remote_files = files
     for remote_file in remote_files: