# See the License for the specific language governing permissions and
# limitations under the License.
+import json
import logging
import os
import sys
from catalog.pub.database.models import VnfPackageModel
from catalog.pub.exceptions import CatalogException
from catalog.pub.utils.values import ignore_case_get
-from catalog.pub.utils import fileutil
+from catalog.pub.utils import fileutil, toscaparser
+
logger = logging.getLogger(__name__)
fileutil.delete_dirs(vnf_pkg_path)
+def parse_vnfd_and_save(vnfPkgId, vnf_pkg_path):
+ vnfd_json = toscaparser.parse_vnfd(vnf_pkg_path)
+ vnfd = json.JSONDecoder().decode(vnfd_json)
+
+ vnfd_id = vnfd["metadata"]["id"]
+ if VnfPackageModel.objects.filter(vnfdId=vnfd_id):
+ raise CatalogException("VNFD(%s) already exists." % vnfd_id)
+
+ vnfd_ver = vnfd["metadata"].get("vnfd_version")
+ if not vnfd_ver:
+ vnfd_ver = vnfd["metadata"].get("vnfdVersion", "undefined")
+ VnfPackageModel(
+ vnfPackageId=vnfPkgId,
+ vnfdId=vnfd_id,
+ vnfVendor=vnfd["metadata"].get("vendor", "undefined"),
+ vnfdVersion=vnfd_ver,
+ vnfSoftwareVersion=vnfd["metadata"].get("version", "undefined"),
+ vnfdModel=vnfd_json,
+ onboardingState="ONBOARDED",
+ operationalState="ENABLED",
+ usageState="NOT_IN_USE"
+ ).save()
+
+
class VnfpkgUploadThread(threading.Thread):
def __init__(self, data, vnfPkgId):
threading.Thread.__init__(self)