From a32c2b20207885d895bd96204cc166fca14db97b Mon Sep 17 00:00:00 2001
From: dyh <dengyuanhong@chinamobile.com>
Date: Wed, 4 Sep 2019 09:52:48 +0800
Subject: update for change to etsicatalog

Change-Id: Idc2a6950960a324964500a8c4701be422de2b782
Issue-ID: MODELING-216
Signed-off-by: dyh <dengyuanhong@chinamobile.com>
---
 catalog/pub/database/__init__.py                |  13 +
 catalog/pub/database/admin.py                   | 361 ++++++++++++++++++++++++
 catalog/pub/database/migrations/0001_initial.py | 229 +++++++++++++++
 catalog/pub/database/migrations/__init__.py     |  13 +
 catalog/pub/database/models.py                  | 234 +++++++++++++++
 5 files changed, 850 insertions(+)
 create mode 100644 catalog/pub/database/__init__.py
 create mode 100644 catalog/pub/database/admin.py
 create mode 100644 catalog/pub/database/migrations/0001_initial.py
 create mode 100644 catalog/pub/database/migrations/__init__.py
 create mode 100644 catalog/pub/database/models.py

(limited to 'catalog/pub/database')

diff --git a/catalog/pub/database/__init__.py b/catalog/pub/database/__init__.py
new file mode 100644
index 0000000..c7b6818
--- /dev/null
+++ b/catalog/pub/database/__init__.py
@@ -0,0 +1,13 @@
+# Copyright 2017 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
diff --git a/catalog/pub/database/admin.py b/catalog/pub/database/admin.py
new file mode 100644
index 0000000..bff70cb
--- /dev/null
+++ b/catalog/pub/database/admin.py
@@ -0,0 +1,361 @@
+# Copyright 2019 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
+
+from django.contrib import admin
+
+from catalog.pub.database.models import NSPackageModel
+from catalog.pub.database.models import ServicePackageModel
+from catalog.pub.database.models import VnfPackageModel
+from catalog.pub.database.models import PnfPackageModel
+from catalog.pub.database.models import SoftwareImageModel
+from catalog.pub.database.models import JobModel
+from catalog.pub.database.models import JobStatusModel
+from catalog.pub.database.models import NsdmSubscriptionModel
+from catalog.pub.database.models import VnfPkgSubscriptionModel
+
+
+@admin.register(NSPackageModel)
+class NSPackageModelAdmin(admin.ModelAdmin):
+    list_display_links = ('nsPackageId', 'nsdName')
+    fields = [
+        "nsPackageId",
+        "nsPackageUri",
+        "checksum",
+        "sdcCsarId",
+        "onboardingState",
+        "operationalState",
+        "usageState",
+        "deletionPending",
+        "nsdId",
+        "invariantId",
+        "nsdName",
+        "nsdDesginer",
+        "nsdDescription",
+        "nsdVersion",
+        "userDefinedData",
+        "localFilePath",
+        "nsdModel"
+    ]
+
+    list_display = [
+        "nsPackageId",
+        "nsPackageUri",
+        "checksum",
+        "sdcCsarId",
+        "onboardingState",
+        "operationalState",
+        "usageState",
+        "deletionPending",
+        "nsdId",
+        "invariantId",
+        "nsdName",
+        "nsdDesginer",
+        "nsdDescription",
+        "nsdVersion",
+        "userDefinedData",
+        "localFilePath",
+        "nsdModel"
+    ]
+
+    search_fields = (
+        "nsPackageId",
+        "nsdId",
+        "nsdName",
+        "sdcCsarId"
+    )
+
+
+@admin.register(ServicePackageModel)
+class ServicePackageModelAdmin(admin.ModelAdmin):
+    list_display_links = ('servicePackageId', 'servicedName')
+    fields = [
+        "servicePackageId",
+        "servicePackageUri",
+        "checksum",
+        "sdcCsarId",
+        "onboardingState",
+        "operationalState",
+        "usageState",
+        "deletionPending",
+        "servicedId",
+        "invariantId",
+        "servicedName",
+        "servicedDesigner",
+        "servicedDescription",
+        "servicedVersion",
+        "userDefinedData",
+        "localFilePath",
+        "servicedModel"
+    ]
+
+    list_display = [
+        "servicePackageId",
+        "servicePackageUri",
+        "checksum",
+        "sdcCsarId",
+        "onboardingState",
+        "operationalState",
+        "usageState",
+        "deletionPending",
+        "servicedId",
+        "invariantId",
+        "servicedName",
+        "servicedDesigner",
+        "servicedDescription",
+        "servicedVersion",
+        "userDefinedData",
+        "localFilePath",
+        "servicedModel"
+    ]
+
+    search_fields = (
+        "servicePackageId",
+        "sdcCsarId",
+        "servicedName",
+        "onboardingState"
+    )
+
+
+@admin.register(VnfPackageModel)
+class VnfPackageModelAdmin(admin.ModelAdmin):
+    list_display_links = ('vnfPackageId', 'vnfdId')
+    fields = [
+        "vnfPackageId",
+        "vnfPackageUri",
+        "SdcCSARUri",
+        "checksum",
+        "onboardingState",
+        "operationalState",
+        "usageState",
+        "deletionPending",
+        "vnfdId",
+        "vnfVendor",
+        "vnfdProductName",
+        "vnfdVersion",
+        "vnfSoftwareVersion",
+        "userDefinedData",
+        "localFilePath",
+        "vnfdModel"
+    ]
+
+    list_display = [
+        "vnfPackageId",
+        "vnfPackageUri",
+        "SdcCSARUri",
+        "checksum",
+        "onboardingState",
+        "operationalState",
+        "usageState",
+        "deletionPending",
+        "vnfdId",
+        "vnfVendor",
+        "vnfdProductName",
+        "vnfdVersion",
+        "vnfSoftwareVersion",
+        "userDefinedData",
+        "localFilePath",
+        "vnfdModel"
+    ]
+
+    search_fields = (
+        "vnfPackageId",
+        "onboardingState",
+        "vnfdId"
+    )
+
+
+@admin.register(PnfPackageModel)
+class PnfPackageModelAdmin(admin.ModelAdmin):
+    list_display_links = ('pnfPackageId', 'pnfdId')
+    fields = [
+        "pnfPackageId",
+        "pnfPackageUri",
+        "sdcCSARUri",
+        "checksum",
+        "onboardingState",
+        "usageState",
+        "deletionPending",
+        "pnfdId",
+        "pnfVendor",
+        "pnfdProductName",
+        "pnfdVersion",
+        "pnfSoftwareVersion",
+        "userDefinedData",
+        "localFilePath",
+        "pnfdModel",
+        "pnfdName"
+    ]
+
+    list_display = [
+        "pnfPackageId",
+        "pnfPackageUri",
+        "sdcCSARUri",
+        "checksum",
+        "onboardingState",
+        "usageState",
+        "deletionPending",
+        "pnfdId",
+        "pnfVendor",
+        "pnfdProductName",
+        "pnfdVersion",
+        "pnfSoftwareVersion",
+        "userDefinedData",
+        "localFilePath",
+        "pnfdModel",
+        "pnfdName"
+    ]
+
+    search_fields = (
+        "pnfPackageId",
+        "onboardingState",
+        "pnfdId"
+    )
+
+
+@admin.register(SoftwareImageModel)
+class SoftwareImageModelAdmin(admin.ModelAdmin):
+    list_display_links = ('imageid', 'vnfPackageId')
+    fields = [
+        "imageid",
+        "containerFormat",
+        "diskFormat",
+        "mindisk",
+        "minram",
+        "usermetadata",
+        "vnfPackageId",
+        "filePath",
+        "status",
+        "vimid"
+    ]
+
+    list_display = [
+        "imageid",
+        "containerFormat",
+        "diskFormat",
+        "mindisk",
+        "minram",
+        "usermetadata",
+        "vnfPackageId",
+        "filePath",
+        "status",
+        "vimid"
+    ]
+
+    search_fields = (
+        "imageid",
+        "vnfPackageId",
+        "vimid"
+    )
+
+
+@admin.register(NsdmSubscriptionModel)
+class NsdmSubscriptionModelAdmin(admin.ModelAdmin):
+    list_display_links = ('subscriptionid', 'notificationTypes')
+    fields = [
+        "subscriptionid",
+        "notificationTypes",
+        "auth_info",
+        "callback_uri",
+        "nsdInfoId",
+        "nsdId",
+        "nsdName",
+        "nsdVersion",
+        "nsdDesigner",
+        "nsdInvariantId",
+        "vnfPkgIds",
+        "pnfdInfoIds",
+        "nestedNsdInfoIds",
+        "nsdOnboardingState",
+        "nsdOperationalState",
+        "nsdUsageState",
+        "pnfdId",
+        "pnfdName",
+        "pnfdVersion",
+        "pnfdProvider",
+        "pnfdInvariantId",
+        "pnfdOnboardingState",
+        "pnfdUsageState",
+        "links"
+    ]
+
+    list_display = [
+        "subscriptionid",
+        "notificationTypes",
+        "auth_info",
+        "callback_uri",
+        "nsdInfoId",
+        "nsdId",
+        "nsdName",
+        "nsdVersion",
+        "nsdDesigner",
+        "nsdInvariantId",
+        "vnfPkgIds",
+        "pnfdInfoIds",
+        "nestedNsdInfoIds",
+        "nsdOnboardingState",
+        "nsdOperationalState",
+        "nsdUsageState",
+        "pnfdId",
+        "pnfdName",
+        "pnfdVersion",
+        "pnfdProvider",
+        "pnfdInvariantId",
+        "pnfdOnboardingState",
+        "pnfdUsageState",
+        "links"
+    ]
+
+    search_fields = (
+        "subscriptionid",
+        "notificationTypes"
+    )
+
+
+@admin.register(VnfPkgSubscriptionModel)
+class VnfPkgSubscriptionModelAdmin(admin.ModelAdmin):
+    list_display_links = ('subscription_id', 'notification_types')
+    fields = [
+        "subscription_id",
+        "callback_uri",
+        "auth_info",
+        "usage_states",
+        "notification_types",
+        "vnfd_id",
+        "vnf_pkg_id",
+        "operation_states",
+        "vnf_products_from_provider",
+        "links"
+    ]
+
+    list_display = [
+        "subscription_id",
+        "callback_uri",
+        "auth_info",
+        "usage_states",
+        "notification_types",
+        "vnfd_id",
+        "vnf_pkg_id",
+        "operation_states",
+        "vnf_products_from_provider",
+        "links"
+    ]
+
+    search_fields = (
+        "subscription_id",
+        "notification_types"
+    )
+
+
+admin.site.register(JobModel)
+admin.site.register(JobStatusModel)
diff --git a/catalog/pub/database/migrations/0001_initial.py b/catalog/pub/database/migrations/0001_initial.py
new file mode 100644
index 0000000..98ca84c
--- /dev/null
+++ b/catalog/pub/database/migrations/0001_initial.py
@@ -0,0 +1,229 @@
+# Copyright 2019 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
+# Generated by Django 1.11.9 on 2019-04-16 03:53
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='JobModel',
+            fields=[
+                ('jobid', models.CharField(db_column='JOBID', max_length=255, primary_key=True, serialize=False)),
+                ('jobtype', models.CharField(db_column='JOBTYPE', max_length=255)),
+                ('jobaction', models.CharField(db_column='JOBACTION', max_length=255)),
+                ('resid', models.CharField(db_column='RESID', max_length=255)),
+                ('status', models.IntegerField(blank=True, db_column='STATUS', null=True)),
+                ('starttime', models.CharField(blank=True, db_column='STARTTIME', max_length=255, null=True)),
+                ('endtime', models.CharField(blank=True, db_column='ENDTIME', max_length=255, null=True)),
+                ('progress', models.IntegerField(blank=True, db_column='PROGRESS', null=True)),
+                ('user', models.CharField(blank=True, db_column='USER', max_length=255, null=True)),
+                ('parentjobid', models.CharField(blank=True, db_column='PARENTJOBID', max_length=255, null=True)),
+                ('resname', models.CharField(blank=True, db_column='RESNAME', max_length=255, null=True)),
+            ],
+            options={
+                'db_table': 'CATALOG_JOB',
+            },
+        ),
+        migrations.CreateModel(
+            name='JobStatusModel',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('indexid', models.IntegerField(db_column='INDEXID')),
+                ('jobid', models.CharField(db_column='JOBID', max_length=255)),
+                ('status', models.CharField(db_column='STATUS', max_length=255)),
+                ('progress', models.IntegerField(blank=True, db_column='PROGRESS', null=True)),
+                ('descp', models.TextField(db_column='DESCP', max_length=65535)),
+                ('errcode', models.CharField(blank=True, db_column='ERRCODE', max_length=255, null=True)),
+                ('addtime', models.CharField(blank=True, db_column='ADDTIME', max_length=255, null=True)),
+            ],
+            options={
+                'db_table': 'CATALOG_JOB_STATUS',
+            },
+        ),
+        migrations.CreateModel(
+            name='NsdmSubscriptionModel',
+            fields=[
+                ('subscriptionid', models.CharField(db_column='SUBSCRIPTIONID', max_length=255, primary_key=True, serialize=False)),
+                ('notificationTypes', models.TextField(db_column='NOTIFICATIONTYPES', null=True)),
+                ('auth_info', models.TextField(db_column='AUTHINFO', null=True)),
+                ('callback_uri', models.CharField(db_column='CALLBACKURI', max_length=255)),
+                ('nsdInfoId', models.TextField(db_column='NSDINFOID', null=True)),
+                ('nsdId', models.TextField(db_column='NSDID', null=True)),
+                ('nsdName', models.TextField(db_column='NSDNAME', null=True)),
+                ('nsdVersion', models.TextField(db_column='NSDVERSION', null=True)),
+                ('nsdDesigner', models.TextField(db_column='NSDDESIGNER', null=True)),
+                ('nsdInvariantId', models.TextField(db_column='NSDINVARIANTID', null=True)),
+                ('vnfPkgIds', models.TextField(db_column='VNFPKGIDS', null=True)),
+                ('pnfdInfoIds', models.TextField(db_column='PNFDINFOIDS', null=True)),
+                ('nestedNsdInfoIds', models.TextField(db_column='NESTEDNSDINFOIDS', null=True)),
+                ('nsdOnboardingState', models.TextField(db_column='NSDONBOARDINGSTATE', null=True)),
+                ('nsdOperationalState', models.TextField(db_column='NSDOPERATIONALSTATE', null=True)),
+                ('nsdUsageState', models.TextField(db_column='NSDUSAGESTATE', null=True)),
+                ('pnfdId', models.TextField(db_column='PNFDID', null=True)),
+                ('pnfdName', models.TextField(db_column='PNFDNAME', null=True)),
+                ('pnfdVersion', models.TextField(db_column='PNFDVERSION', null=True)),
+                ('pnfdProvider', models.TextField(db_column='PNFDPROVIDER', null=True)),
+                ('pnfdInvariantId', models.TextField(db_column='PNFDINVARIANTID', null=True)),
+                ('pnfdOnboardingState', models.TextField(db_column='PNFDONBOARDINGSTATE', null=True)),
+                ('pnfdUsageState', models.TextField(db_column='PNFDUSAGESTATE', null=True)),
+                ('links', models.TextField(db_column='LINKS')),
+            ],
+            options={
+                'db_table': 'CATALOG_NSDM_SUBSCRIPTION',
+            },
+        ),
+        migrations.CreateModel(
+            name='NSPackageModel',
+            fields=[
+                ('nsPackageId', models.CharField(db_column='NSPACKAGEID', max_length=50, primary_key=True, serialize=False)),
+                ('nsPackageUri', models.CharField(blank=True, db_column='NSPACKAGEURI', max_length=300, null=True)),
+                ('checksum', models.CharField(blank=True, db_column='CHECKSUM', max_length=50, null=True)),
+                ('sdcCsarId', models.CharField(blank=True, db_column='SDCCSARID', max_length=50, null=True)),
+                ('onboardingState', models.CharField(blank=True, db_column='ONBOARDINGSTATE', max_length=20, null=True)),
+                ('operationalState', models.CharField(blank=True, db_column='OPERATIONALSTATE', max_length=20, null=True)),
+                ('usageState', models.CharField(blank=True, db_column='USAGESTATE', max_length=20, null=True)),
+                ('deletionPending', models.CharField(blank=True, db_column='DELETIONPENDING', max_length=20, null=True)),
+                ('nsdId', models.CharField(blank=True, db_column='NSDID', max_length=50, null=True)),
+                ('invariantId', models.CharField(blank=True, db_column='INVARIANTID', max_length=50, null=True)),
+                ('nsdName', models.CharField(blank=True, db_column='NSDNAME', max_length=50, null=True)),
+                ('nsdDesginer', models.CharField(blank=True, db_column='NSDDESIGNER', max_length=50, null=True)),
+                ('nsdDescription', models.CharField(blank=True, db_column='NSDDESCRIPTION', max_length=100, null=True)),
+                ('nsdVersion', models.CharField(blank=True, db_column='NSDVERSION', max_length=20, null=True)),
+                ('userDefinedData', models.TextField(blank=True, db_column='USERDEFINEDDATA', max_length=1024, null=True)),
+                ('localFilePath', models.CharField(blank=True, db_column='LOCALFILEPATH', max_length=300, null=True)),
+                ('nsdModel', models.TextField(blank=True, db_column='NSDMODEL', max_length=65535, null=True)),
+            ],
+            options={
+                'db_table': 'CATALOG_NSPACKAGE',
+            },
+        ),
+        migrations.CreateModel(
+            name='PnfPackageModel',
+            fields=[
+                ('pnfPackageId', models.CharField(db_column='PNFPACKAGEID', max_length=50, primary_key=True, serialize=False)),
+                ('pnfPackageUri', models.CharField(blank=True, db_column='PNFPACKAGEURI', max_length=300, null=True)),
+                ('sdcCSARUri', models.CharField(blank=True, db_column='SDCCSARURI', max_length=300, null=True)),
+                ('checksum', models.CharField(blank=True, db_column='CHECKSUM', max_length=50, null=True)),
+                ('onboardingState', models.CharField(blank=True, db_column='ONBOARDINGSTATE', max_length=20, null=True)),
+                ('usageState', models.CharField(blank=True, db_column='USAGESTATE', max_length=20, null=True)),
+                ('deletionPending', models.CharField(blank=True, db_column='DELETIONPENDING', max_length=20, null=True)),
+                ('pnfdId', models.CharField(blank=True, db_column='PNFDID', max_length=50, null=True)),
+                ('pnfVendor', models.CharField(blank=True, db_column='VENDOR', max_length=50, null=True)),
+                ('pnfdProductName', models.CharField(blank=True, db_column='PNFDPRODUCTNAME', max_length=50, null=True)),
+                ('pnfdVersion', models.CharField(blank=True, db_column='PNFDVERSION', max_length=20, null=True)),
+                ('pnfSoftwareVersion', models.CharField(blank=True, db_column='PNFSOFTWAREVERSION', max_length=20, null=True)),
+                ('userDefinedData', models.TextField(blank=True, db_column='USERDEFINEDDATA', max_length=1024, null=True)),
+                ('localFilePath', models.CharField(blank=True, db_column='LOCALFILEPATH', max_length=300, null=True)),
+                ('pnfdModel', models.TextField(blank=True, db_column='PNFDMODEL', max_length=65535, null=True)),
+                ('pnfdName', models.TextField(blank=True, db_column='PNFDNAME', max_length=65535, null=True)),
+            ],
+            options={
+                'db_table': 'CATALOG_PNFPACKAGE',
+            },
+        ),
+        migrations.CreateModel(
+            name='ServicePackageModel',
+            fields=[
+                ('servicePackageId', models.CharField(db_column='SERVICEPACKAGEID', max_length=50, primary_key=True, serialize=False)),
+                ('servicePackageUri', models.CharField(blank=True, db_column='SERVICEPACKAGEURI', max_length=300, null=True)),
+                ('checksum', models.CharField(blank=True, db_column='CHECKSUM', max_length=50, null=True)),
+                ('sdcCsarId', models.CharField(blank=True, db_column='SDCCSARID', max_length=50, null=True)),
+                ('onboardingState', models.CharField(blank=True, db_column='ONBOARDINGSTATE', max_length=20, null=True)),
+                ('operationalState', models.CharField(blank=True, db_column='OPERATIONALSTATE', max_length=20, null=True)),
+                ('usageState', models.CharField(blank=True, db_column='USAGESTATE', max_length=20, null=True)),
+                ('deletionPending', models.CharField(blank=True, db_column='DELETIONPENDING', max_length=20, null=True)),
+                ('servicedId', models.CharField(blank=True, db_column='SERVICEDID', max_length=50, null=True)),
+                ('invariantId', models.CharField(blank=True, db_column='INVARIANTID', max_length=50, null=True)),
+                ('servicedName', models.CharField(blank=True, db_column='SERVICEDNAME', max_length=50, null=True)),
+                ('servicedDesigner', models.CharField(blank=True, db_column='SERVICEDDESIGNER', max_length=50, null=True)),
+                ('servicedDescription', models.CharField(blank=True, db_column='SERVICEDDESCRIPTION', max_length=100, null=True)),
+                ('servicedVersion', models.CharField(blank=True, db_column='SERVICEDVERSION', max_length=20, null=True)),
+                ('userDefinedData', models.TextField(blank=True, db_column='USERDEFINEDDATA', max_length=1024, null=True)),
+                ('localFilePath', models.CharField(blank=True, db_column='LOCALFILEPATH', max_length=300, null=True)),
+                ('servicedModel', models.TextField(blank=True, db_column='SERVICEDMODEL', max_length=65535, null=True)),
+            ],
+            options={
+                'db_table': 'CATALOG_SERVICEPACKAGE',
+            },
+        ),
+        migrations.CreateModel(
+            name='SoftwareImageModel',
+            fields=[
+                ('imageid', models.CharField(db_column='IMAGEID', max_length=50, primary_key=True, serialize=False)),
+                ('containerFormat', models.CharField(db_column='CONTAINERFORMAT', max_length=20)),
+                ('diskFormat', models.CharField(db_column='DISKFORMAT', max_length=20)),
+                ('mindisk', models.CharField(db_column='MINDISK', max_length=20)),
+                ('minram', models.CharField(db_column='MINRAM', max_length=20)),
+                ('usermetadata', models.CharField(db_column='USAERMETADATA', max_length=1024)),
+                ('vnfPackageId', models.CharField(db_column='VNFPACKAGEID', max_length=50)),
+                ('filePath', models.CharField(db_column='FILEPATH', max_length=300)),
+                ('status', models.CharField(db_column='STATUS', max_length=10)),
+                ('vimid', models.CharField(db_column='VIMID', max_length=50)),
+            ],
+            options={
+                'db_table': 'CATALOG_SOFTWAREIMAGEMODEL',
+            },
+        ),
+        migrations.CreateModel(
+            name='VnfPackageModel',
+            fields=[
+                ('vnfPackageId', models.CharField(db_column='VNFPACKAGEID', max_length=50, primary_key=True, serialize=False)),
+                ('vnfPackageUri', models.CharField(blank=True, db_column='VNFPACKAGEURI', max_length=300, null=True)),
+                ('SdcCSARUri', models.CharField(blank=True, db_column='SDCCSARURI', max_length=300, null=True)),
+                ('checksum', models.CharField(blank=True, db_column='CHECKSUM', max_length=50, null=True)),
+                ('onboardingState', models.CharField(blank=True, db_column='ONBOARDINGSTATE', max_length=20, null=True)),
+                ('operationalState', models.CharField(blank=True, db_column='OPERATIONALSTATE', max_length=20, null=True)),
+                ('usageState', models.CharField(blank=True, db_column='USAGESTATE', max_length=20, null=True)),
+                ('deletionPending', models.CharField(blank=True, db_column='DELETIONPENDING', max_length=20, null=True)),
+                ('vnfdId', models.CharField(blank=True, db_column='VNFDID', max_length=50, null=True)),
+                ('vnfVendor', models.CharField(blank=True, db_column='VENDOR', max_length=50, null=True)),
+                ('vnfdProductName', models.CharField(blank=True, db_column='VNFDPRODUCTNAME', max_length=50, null=True)),
+                ('vnfdVersion', models.CharField(blank=True, db_column='VNFDVERSION', max_length=20, null=True)),
+                ('vnfSoftwareVersion', models.CharField(blank=True, db_column='VNFSOFTWAREVERSION', max_length=20, null=True)),
+                ('userDefinedData', models.TextField(blank=True, db_column='USERDEFINEDDATA', max_length=1024, null=True)),
+                ('localFilePath', models.CharField(blank=True, db_column='LOCALFILEPATH', max_length=300, null=True)),
+                ('vnfdModel', models.TextField(blank=True, db_column='VNFDMODEL', max_length=65535, null=True)),
+            ],
+            options={
+                'db_table': 'CATALOG_VNFPACKAGE',
+            },
+        ),
+        migrations.CreateModel(
+            name='VnfPkgSubscriptionModel',
+            fields=[
+                ('subscription_id', models.CharField(db_column='SUBSCRIPTION_ID', max_length=255, primary_key=True, serialize=False)),
+                ('callback_uri', models.URLField(db_column='CALLBACK_URI', max_length=255)),
+                ('auth_info', models.TextField(db_column='AUTH_INFO')),
+                ('usage_states', models.TextField(db_column='USAGE_STATES')),
+                ('notification_types', models.TextField(db_column='NOTIFICATION_TYPES')),
+                ('vnfd_id', models.TextField(db_column='VNFD_ID')),
+                ('vnf_pkg_id', models.TextField(db_column='VNF_PKG_ID')),
+                ('operation_states', models.TextField(db_column='OPERATION_STATES')),
+                ('vnf_products_from_provider', models.TextField(db_column='VNF_PRODUCTS_FROM_PROVIDER')),
+                ('links', models.TextField(db_column='LINKS')),
+            ],
+            options={
+                'db_table': 'VNF_PKG_SUBSCRIPTION',
+            },
+        ),
+    ]
diff --git a/catalog/pub/database/migrations/__init__.py b/catalog/pub/database/migrations/__init__.py
new file mode 100644
index 0000000..0c847b7
--- /dev/null
+++ b/catalog/pub/database/migrations/__init__.py
@@ -0,0 +1,13 @@
+# Copyright 2019 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
diff --git a/catalog/pub/database/models.py b/catalog/pub/database/models.py
new file mode 100644
index 0000000..9f0b498
--- /dev/null
+++ b/catalog/pub/database/models.py
@@ -0,0 +1,234 @@
+# Copyright 2016-2018 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
+
+from django.db import models
+
+
+class NSPackageModel(models.Model):
+    nsPackageId = models.CharField(db_column='NSPACKAGEID', primary_key=True, max_length=50)
+    nsPackageUri = models.CharField(db_column='NSPACKAGEURI', max_length=300, null=True, blank=True)
+    checksum = models.CharField(db_column='CHECKSUM', max_length=50, null=True, blank=True)  # checksum
+    sdcCsarId = models.CharField(db_column='SDCCSARID', max_length=50, null=True, blank=True)  # SdcCSARUri
+    onboardingState = models.CharField(db_column='ONBOARDINGSTATE', max_length=20, blank=True, null=True)
+    operationalState = models.CharField(db_column='OPERATIONALSTATE', max_length=20, blank=True, null=True)  # operationalState
+    usageState = models.CharField(db_column='USAGESTATE', max_length=20, blank=True, null=True)  # usageState
+    deletionPending = models.CharField(db_column='DELETIONPENDING', max_length=20, blank=True, null=True)  # deletionPending
+    nsdId = models.CharField(db_column='NSDID', max_length=50, blank=True, null=True)
+    invariantId = models.CharField(db_column='INVARIANTID', max_length=50, blank=True, null=True)  # nsdInvariantId
+    nsdName = models.CharField(db_column='NSDNAME', max_length=50, blank=True, null=True)
+    nsdDesginer = models.CharField(db_column='NSDDESIGNER', max_length=50, null=True, blank=True)
+    nsdDescription = models.CharField(db_column='NSDDESCRIPTION', max_length=100, null=True, blank=True)
+    nsdVersion = models.CharField(db_column='NSDVERSION', max_length=20, null=True, blank=True)
+    userDefinedData = models.TextField(db_column='USERDEFINEDDATA', max_length=1024, blank=True, null=True)  # userDefinedData
+    localFilePath = models.CharField(db_column='LOCALFILEPATH', max_length=300, null=True, blank=True)
+    nsdModel = models.TextField(db_column='NSDMODEL', max_length=65535, null=True, blank=True)
+
+    class Meta:
+        db_table = 'CATALOG_NSPACKAGE'
+
+
+class ServicePackageModel(models.Model):
+    servicePackageId = models.CharField(db_column='SERVICEPACKAGEID', primary_key=True, max_length=50)
+    servicePackageUri = models.CharField(db_column='SERVICEPACKAGEURI', max_length=300, null=True, blank=True)
+    checksum = models.CharField(db_column='CHECKSUM', max_length=50, null=True, blank=True)  # checksum
+    sdcCsarId = models.CharField(db_column='SDCCSARID', max_length=50, null=True, blank=True)  # SdcCSARUri
+    onboardingState = models.CharField(db_column='ONBOARDINGSTATE', max_length=20, blank=True, null=True)
+    operationalState = models.CharField(db_column='OPERATIONALSTATE', max_length=20, blank=True, null=True)  # operationalState
+    usageState = models.CharField(db_column='USAGESTATE', max_length=20, blank=True, null=True)  # usageState
+    deletionPending = models.CharField(db_column='DELETIONPENDING', max_length=20, blank=True, null=True)  # deletionPending
+    servicedId = models.CharField(db_column='SERVICEDID', max_length=50, blank=True, null=True)
+    invariantId = models.CharField(db_column='INVARIANTID', max_length=50, blank=True, null=True)  # servicedInvariantId
+    servicedName = models.CharField(db_column='SERVICEDNAME', max_length=50, blank=True, null=True)
+    servicedDesigner = models.CharField(db_column='SERVICEDDESIGNER', max_length=50, null=True, blank=True)
+    servicedDescription = models.CharField(db_column='SERVICEDDESCRIPTION', max_length=100, null=True, blank=True)
+    servicedVersion = models.CharField(db_column='SERVICEDVERSION', max_length=20, null=True, blank=True)
+    userDefinedData = models.TextField(db_column='USERDEFINEDDATA', max_length=1024, blank=True, null=True)  # userDefinedData
+    localFilePath = models.CharField(db_column='LOCALFILEPATH', max_length=300, null=True, blank=True)
+    servicedModel = models.TextField(db_column='SERVICEDMODEL', max_length=65535, null=True, blank=True)
+
+    class Meta:
+        db_table = 'CATALOG_SERVICEPACKAGE'
+
+
+class VnfPackageModel(models.Model):
+    # uuid = models.CharField(db_column='UUID', primary_key=True, max_length=255)
+    vnfPackageId = models.CharField(db_column='VNFPACKAGEID', primary_key=True, max_length=50)   # onboardedVnfPkgInfoId
+    vnfPackageUri = models.CharField(db_column='VNFPACKAGEURI', max_length=300, null=True, blank=True)  # downloadUri
+    SdcCSARUri = models.CharField(db_column='SDCCSARURI', max_length=300, null=True, blank=True)  # SdcCSARUri
+    checksum = models.CharField(db_column='CHECKSUM', max_length=50, null=True, blank=True)  # checksum
+    onboardingState = models.CharField(db_column='ONBOARDINGSTATE', max_length=20, blank=True, null=True)
+    operationalState = models.CharField(db_column='OPERATIONALSTATE', max_length=20, blank=True, null=True)  # operationalState
+    usageState = models.CharField(db_column='USAGESTATE', max_length=20, blank=True, null=True)  # usageState
+    deletionPending = models.CharField(db_column='DELETIONPENDING', max_length=20, blank=True, null=True)  # deletionPending
+    vnfdId = models.CharField(db_column='VNFDID', max_length=50, blank=True, null=True)                # vnfdId
+    vnfVendor = models.CharField(db_column='VENDOR', max_length=50, blank=True, null=True)  # vnfProvider
+    vnfdProductName = models.CharField(db_column='VNFDPRODUCTNAME', max_length=50, blank=True, null=True)  # vnfProductName
+    vnfdVersion = models.CharField(db_column='VNFDVERSION', max_length=20, blank=True, null=True)     # vnfdVersion
+    vnfSoftwareVersion = models.CharField(db_column='VNFSOFTWAREVERSION', max_length=20, blank=True, null=True)   # vnfSoftwareVersion
+    userDefinedData = models.TextField(db_column='USERDEFINEDDATA', max_length=1024, blank=True, null=True)  # userDefinedData
+    localFilePath = models.CharField(db_column='LOCALFILEPATH', max_length=300, null=True, blank=True)
+    vnfdModel = models.TextField(db_column='VNFDMODEL', max_length=65535, blank=True, null=True)  # vnfd
+
+    class Meta:
+        db_table = 'CATALOG_VNFPACKAGE'
+
+
+class PnfPackageModel(models.Model):
+    # uuid = models.CharField(db_column='UUID', primary_key=True, max_length=255)
+    pnfPackageId = models.CharField(db_column='PNFPACKAGEID', primary_key=True, max_length=50)   # onboardedPnfPkgInfoId
+    pnfPackageUri = models.CharField(db_column='PNFPACKAGEURI', max_length=300, null=True, blank=True)  # downloadUri
+    sdcCSARUri = models.CharField(db_column='SDCCSARURI', max_length=300, null=True, blank=True)  # sdcCSARUri
+    checksum = models.CharField(db_column='CHECKSUM', max_length=50, null=True, blank=True)  # checksum
+    onboardingState = models.CharField(db_column='ONBOARDINGSTATE', max_length=20, blank=True, null=True)
+    usageState = models.CharField(db_column='USAGESTATE', max_length=20, blank=True, null=True)  # usageState
+    deletionPending = models.CharField(db_column='DELETIONPENDING', max_length=20, blank=True, null=True)  # deletionPending
+    pnfdId = models.CharField(db_column='PNFDID', max_length=50, blank=True, null=True)                # pnfdId
+    pnfVendor = models.CharField(db_column='VENDOR', max_length=50, blank=True, null=True)  # pnfProvider
+    pnfdProductName = models.CharField(db_column='PNFDPRODUCTNAME', max_length=50, blank=True, null=True)  # pnfProductName
+    pnfdVersion = models.CharField(db_column='PNFDVERSION', max_length=20, blank=True, null=True)     # pnfdVersion
+    pnfSoftwareVersion = models.CharField(db_column='PNFSOFTWAREVERSION', max_length=20, blank=True, null=True)   # pnfSoftwareVersion
+    userDefinedData = models.TextField(db_column='USERDEFINEDDATA', max_length=1024, blank=True, null=True)  # userDefinedData
+    localFilePath = models.CharField(db_column='LOCALFILEPATH', max_length=300, null=True, blank=True)
+    pnfdModel = models.TextField(db_column='PNFDMODEL', max_length=65535, blank=True, null=True)  # pnfd
+    pnfdName = models.TextField(db_column='PNFDNAME', max_length=65535, blank=True, null=True)  # pnfd_name
+
+    class Meta:
+        db_table = 'CATALOG_PNFPACKAGE'
+
+
+class SoftwareImageModel(models.Model):
+    imageid = models.CharField(db_column='IMAGEID', primary_key=True, max_length=50)
+    containerFormat = models.CharField(db_column='CONTAINERFORMAT', max_length=20)
+    diskFormat = models.CharField(db_column='DISKFORMAT', max_length=20)
+    mindisk = models.CharField(db_column='MINDISK', max_length=20)
+    minram = models.CharField(db_column='MINRAM', max_length=20)
+    usermetadata = models.CharField(db_column='USAERMETADATA', max_length=1024)
+    vnfPackageId = models.CharField(db_column='VNFPACKAGEID', max_length=50)
+    filePath = models.CharField(db_column='FILEPATH', max_length=300)
+    status = models.CharField(db_column='STATUS', max_length=10)
+    vimid = models.CharField(db_column='VIMID', max_length=50)
+    # filetype = models.CharField(db_column='FILETYPE', max_length=2)
+    # vimuser = models.CharField(db_column='VIMUSER', max_length=50)
+    # tenant = models.CharField(db_column='TENANT', max_length=50)
+    # purpose = models.CharField(db_column='PURPOSE', max_length=1000)
+
+    class Meta:
+        db_table = 'CATALOG_SOFTWAREIMAGEMODEL'
+
+
+class JobModel(models.Model):
+    jobid = models.CharField(db_column='JOBID', primary_key=True, max_length=255)
+    jobtype = models.CharField(db_column='JOBTYPE', max_length=255)
+    jobaction = models.CharField(db_column='JOBACTION', max_length=255)
+    resid = models.CharField(db_column='RESID', max_length=255)
+    status = models.IntegerField(db_column='STATUS', null=True, blank=True)
+    starttime = models.CharField(db_column='STARTTIME', max_length=255, null=True, blank=True)
+    endtime = models.CharField(db_column='ENDTIME', max_length=255, null=True, blank=True)
+    progress = models.IntegerField(db_column='PROGRESS', null=True, blank=True)
+    user = models.CharField(db_column='USER', max_length=255, null=True, blank=True)
+    parentjobid = models.CharField(db_column='PARENTJOBID', max_length=255, null=True, blank=True)
+    resname = models.CharField(db_column='RESNAME', max_length=255, null=True, blank=True)
+
+    class Meta:
+        db_table = 'CATALOG_JOB'
+
+    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 JobStatusModel(models.Model):
+    indexid = models.IntegerField(db_column='INDEXID')
+    jobid = models.CharField(db_column='JOBID', max_length=255)
+    status = models.CharField(db_column='STATUS', max_length=255)
+    progress = models.IntegerField(db_column='PROGRESS', null=True, blank=True)
+    descp = models.TextField(db_column='DESCP', max_length=65535)
+    errcode = models.CharField(db_column='ERRCODE', max_length=255, null=True, blank=True)
+    addtime = models.CharField(db_column='ADDTIME', max_length=255, null=True, blank=True)
+
+    class Meta:
+        db_table = 'CATALOG_JOB_STATUS'
+
+    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 NsdmSubscriptionModel(models.Model):
+    subscriptionid = models.CharField(db_column='SUBSCRIPTIONID', max_length=255, primary_key=True)
+    notificationTypes = models.TextField(db_column='NOTIFICATIONTYPES', null=True)
+    auth_info = models.TextField(db_column='AUTHINFO', null=True)
+    callback_uri = models.CharField(db_column='CALLBACKURI', max_length=255)
+    nsdInfoId = models.TextField(db_column='NSDINFOID', null=True)
+    nsdId = models.TextField(db_column='NSDID', null=True)
+    nsdName = models.TextField(db_column='NSDNAME', null=True)
+    nsdVersion = models.TextField(db_column='NSDVERSION', null=True)
+    nsdDesigner = models.TextField(db_column='NSDDESIGNER', null=True)
+    nsdInvariantId = models.TextField(db_column='NSDINVARIANTID', null=True)
+    vnfPkgIds = models.TextField(db_column='VNFPKGIDS', null=True)
+    pnfdInfoIds = models.TextField(db_column='PNFDINFOIDS', null=True)
+    nestedNsdInfoIds = models.TextField(db_column='NESTEDNSDINFOIDS', null=True)
+    nsdOnboardingState = models.TextField(db_column='NSDONBOARDINGSTATE', null=True)
+    nsdOperationalState = models.TextField(db_column='NSDOPERATIONALSTATE', null=True)
+    nsdUsageState = models.TextField(db_column='NSDUSAGESTATE', null=True)
+    pnfdId = models.TextField(db_column='PNFDID', null=True)
+    pnfdName = models.TextField(db_column='PNFDNAME', null=True)
+    pnfdVersion = models.TextField(db_column='PNFDVERSION', null=True)
+    pnfdProvider = models.TextField(db_column='PNFDPROVIDER', null=True)
+    pnfdInvariantId = models.TextField(db_column='PNFDINVARIANTID', null=True)
+    pnfdOnboardingState = models.TextField(db_column='PNFDONBOARDINGSTATE', null=True)
+    pnfdUsageState = models.TextField(db_column='PNFDUSAGESTATE', null=True)
+    links = models.TextField(db_column='LINKS')
+
+    class Meta:
+        db_table = 'CATALOG_NSDM_SUBSCRIPTION'
+
+    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 VnfPkgSubscriptionModel(models.Model):
+    subscription_id = models.CharField(max_length=255, primary_key=True, db_column='SUBSCRIPTION_ID')
+    callback_uri = models.URLField(db_column="CALLBACK_URI", max_length=255)
+    auth_info = models.TextField(db_column="AUTH_INFO")
+    usage_states = models.TextField(db_column="USAGE_STATES")
+    notification_types = models.TextField(db_column="NOTIFICATION_TYPES")
+    vnfd_id = models.TextField(db_column="VNFD_ID")
+    vnf_pkg_id = models.TextField(db_column="VNF_PKG_ID")
+    operation_states = models.TextField(db_column="OPERATION_STATES")
+    vnf_products_from_provider = \
+        models.TextField(db_column="VNF_PRODUCTS_FROM_PROVIDER")
+    links = models.TextField(db_column="LINKS")
+
+    class Meta:
+        db_table = 'VNF_PKG_SUBSCRIPTION'
+
+    def toDict(self):
+        import json
+        subscription_obj = {
+            "id": self.subscription_id,
+            "callbackUri": self.callback_uri,
+            "_links": json.loads(self.links)
+        }
+        filter_obj = {
+            "notificationTypes": json.loads(self.notification_types),
+            "vnfdId": json.loads(self.vnfd_id),
+            "vnfPkgId": json.loads(self.vnf_pkg_id),
+            "operationalState": json.loads(self.operation_states),
+            "usageState": json.loads(self.usage_states),
+            "vnfProductsFromProviders": json.loads(self.vnf_products_from_provider)
+        }
+        subscription_obj["filter"] = filter_obj
+        return subscription_obj
-- 
cgit