aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordyh <dengyuanhong@chinamobile.com>2021-12-22 18:20:41 +0800
committerdyh <dengyuanhong@chinamobile.com>2021-12-22 18:21:15 +0800
commitfe7fa3746a2c1085527b2355b59cab3dc37229e7 (patch)
tree7b1837b06da51d93dc8e6e426030a7949e2c6455
parent9a620098521f85ea6ad18660de0db9de903a43ab (diff)
Add log and comment
Change-Id: Ib7575f0c41b46a8f25aa8470f39690cb3659e6c1 Issue-ID: MODELING-583 Signed-off-by: dyh <dengyuanhong@chinamobile.com>
-rw-r--r--catalog/packages/biz/notificationsutil.py40
-rw-r--r--catalog/packages/biz/ns_descriptor.py62
-rw-r--r--catalog/packages/biz/pnf_descriptor.py64
-rw-r--r--catalog/packages/biz/sdc_ns_package.py39
-rw-r--r--catalog/packages/biz/sdc_service_package.py27
-rw-r--r--catalog/packages/biz/sdc_vnf_package.py16
-rw-r--r--catalog/packages/biz/service_descriptor.py19
-rw-r--r--catalog/packages/biz/vnf_package.py37
-rw-r--r--catalog/packages/biz/vnf_pkg_artifacts.py9
-rw-r--r--catalog/packages/biz/vnf_pkg_subscription.py35
-rw-r--r--catalog/pub/msapi/sdc.py43
11 files changed, 391 insertions, 0 deletions
diff --git a/catalog/packages/biz/notificationsutil.py b/catalog/packages/biz/notificationsutil.py
index 93c26c7..adb9645 100644
--- a/catalog/packages/biz/notificationsutil.py
+++ b/catalog/packages/biz/notificationsutil.py
@@ -33,6 +33,10 @@ logger = logging.getLogger(__name__)
class NotificationsUtil(object):
+ """
+ Util for notifications
+ """
+
def __init__(self, notification_type):
self.notification_type = notification_type
self.notifyserializer = None
@@ -41,6 +45,10 @@ class NotificationsUtil(object):
pass
def send_notification(self):
+ """
+ Send notification
+ :return:
+ """
notification = self.prepare_notification()
subscriptions_filter = {v + "__contains": notification[k] for k, v in self.filter.items()}
@@ -79,6 +87,13 @@ class NotificationsUtil(object):
self.post_notification(callbackuri, notification)
def post_notification(self, callbackuri, notification, auth_info=None):
+ """
+ Post notification
+ :param callbackuri:
+ :param notification:
+ :param auth_info:
+ :return:
+ """
try:
if auth_info:
if const.BASIC in auth_info.get("authType", ''):
@@ -116,6 +131,10 @@ class NotificationsUtil(object):
class PkgNotifications(NotificationsUtil):
+ """
+ Notification Utils for VNF pckages
+ """
+
def __init__(self, notification_type, vnf_pkg_id, change_type=None, operational_state=None):
super(PkgNotifications, self).__init__(notification_type)
self.filter = {
@@ -133,6 +152,10 @@ class PkgNotifications(NotificationsUtil):
self.notifyserializer = PkgOnboardingNotificationSerializer
def prepare_notification(self):
+ """
+ Prepare notification
+ :return:
+ """
logger.info('Start to prepare Pkgnotification')
vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=self.vnf_pkg_id)
@@ -161,6 +184,10 @@ class PkgNotifications(NotificationsUtil):
class NsdNotifications(NotificationsUtil):
+ """
+ Notification Util for NS packages
+ """
+
def __init__(self, notification_type, nsd_info_id, nsd_id, failure_details=None, operational_state=None):
super(NsdNotifications, self).__init__(notification_type)
self.filter = {
@@ -180,6 +207,10 @@ class NsdNotifications(NotificationsUtil):
# self.notifyserializer = PkgOnboardingNotificationSerializer
def prepare_notification(self):
+ """
+ Prepare notification
+ :return:
+ """
logger.info('Start to prepare Nsdnotification')
notification_content = {
@@ -204,6 +235,9 @@ class NsdNotifications(NotificationsUtil):
class PnfNotifications(NotificationsUtil):
+ """
+ Notification util for PNF package
+ """
def __init__(self, notification_type, pnfd_info_id, pnfd_id, failure_details=None):
super(PnfNotifications, self).__init__(notification_type)
self.filter = {
@@ -222,6 +256,12 @@ class PnfNotifications(NotificationsUtil):
# self.notifyserializer = PkgOnboardingNotificationSerializer
def prepare_notification(self, *args, **kwargs):
+ """
+ Prepare notification
+ :param args:
+ :param kwargs:
+ :return:
+ """
logger.info('Start to prepare Pnfnotification')
notification_content = {
'id': str(uuid.uuid4()), # shall be the same if sent multiple times due to multiple subscriptions.
diff --git a/catalog/packages/biz/ns_descriptor.py b/catalog/packages/biz/ns_descriptor.py
index d14c452..b752f61 100644
--- a/catalog/packages/biz/ns_descriptor.py
+++ b/catalog/packages/biz/ns_descriptor.py
@@ -34,11 +34,20 @@ METADATA = "metadata"
class NsDescriptor(object):
+ """
+ NS Package
+ """
def __init__(self):
pass
def create(self, data, id=None):
+ """
+ Create NS package
+ :param data:
+ :param id:
+ :return:
+ """
logger.info('Start to create a NSD...')
user_defined_data = ignore_case_get(data, 'userDefinedData', {})
data = {
@@ -60,10 +69,21 @@ class NsDescriptor(object):
return data
def update(self, data, nsd_info_id):
+ """
+ Update NS package
+ :param data:
+ :param nsd_info_id:
+ :return:
+ """
usageState = PKG_STATUS.IN_USE if data["usageState"] else PKG_STATUS.NOT_IN_USE
NSPackageModel.objects.filter(nsPackageId=nsd_info_id).update(usageState=usageState)
def query_multiple(self, nsdId=None):
+ """
+ Query NS package list
+ :param nsdId:
+ :return:
+ """
if nsdId:
ns_pkgs = NSPackageModel.objects.filter(nsdId=nsdId)
else:
@@ -75,6 +95,11 @@ class NsDescriptor(object):
return response_data
def query_single(self, nsd_info_id):
+ """
+ Query NS package by id
+ :param nsd_info_id:
+ :return:
+ """
ns_pkgs = NSPackageModel.objects.filter(nsPackageId=nsd_info_id)
if not ns_pkgs.exists():
logger.error('NSD(%s) does not exist.' % nsd_info_id)
@@ -82,6 +107,11 @@ class NsDescriptor(object):
return self.fill_resp_data(ns_pkgs[0])
def delete_single(self, nsd_info_id):
+ """
+ Delete NSD package by id
+ :param nsd_info_id:
+ :return:
+ """
logger.info('Start to delete NSD(%s)...' % nsd_info_id)
ns_pkgs = NSPackageModel.objects.filter(nsPackageId=nsd_info_id)
if not ns_pkgs.exists():
@@ -102,6 +132,12 @@ class NsDescriptor(object):
logger.info('NSD(%s) has been deleted.' % nsd_info_id)
def upload(self, nsd_info_id, remote_file):
+ """
+ Upload NS package file
+ :param nsd_info_id:
+ :param remote_file:
+ :return:
+ """
logger.info('Start to upload NSD(%s)...' % nsd_info_id)
ns_pkgs = NSPackageModel.objects.filter(nsPackageId=nsd_info_id)
if not ns_pkgs.exists():
@@ -114,6 +150,12 @@ class NsDescriptor(object):
return local_file_name
def download(self, nsd_info_id, file_range):
+ """
+ Download NS package file
+ :param nsd_info_id:
+ :param file_range:
+ :return:
+ """
logger.info('Start to download NSD(%s)...' % nsd_info_id)
ns_pkgs = NSPackageModel.objects.filter(nsPackageId=nsd_info_id)
if not ns_pkgs.exists():
@@ -129,6 +171,12 @@ class NsDescriptor(object):
return read(local_file_path, start, end)
def parse_nsd_and_save(self, nsd_info_id, local_file_name):
+ """
+ Parse NSD and save the information
+ :param nsd_info_id:
+ :param local_file_name:
+ :return:
+ """
logger.info('Start to process NSD(%s)...' % nsd_info_id)
ns_pkgs = NSPackageModel.objects.filter(nsPackageId=nsd_info_id)
ns_pkgs.update(onboardingState=const.PKG_STATUS.PROCESSING)
@@ -195,6 +243,11 @@ class NsDescriptor(object):
logger.info('NSD(%s) has been processed.' % nsd_info_id)
def fill_resp_data(self, ns_pkg):
+ """
+ File response data
+ :param ns_pkg:
+ :return:
+ """
data = {
'id': ns_pkg.nsPackageId,
'nsdId': ns_pkg.nsdId,
@@ -251,6 +304,15 @@ class NsDescriptor(object):
def send_notification(type, nsd_info_id, nsd_id=None, failure_details=None, operational_state=None):
+ """
+ Send notification
+ :param type:
+ :param nsd_info_id:
+ :param nsd_id:
+ :param failure_details:
+ :param operational_state:
+ :return:
+ """
notify = NsdNotifications(type, nsd_info_id, nsd_id,
failure_details=failure_details,
operational_state=operational_state)
diff --git a/catalog/packages/biz/pnf_descriptor.py b/catalog/packages/biz/pnf_descriptor.py
index dd6a236..cd2f986 100644
--- a/catalog/packages/biz/pnf_descriptor.py
+++ b/catalog/packages/biz/pnf_descriptor.py
@@ -32,11 +32,19 @@ logger = logging.getLogger(__name__)
class PnfDescriptor(object):
+ """
+ PNF package management
+ """
def __init__(self):
pass
def create(self, data):
+ """
+ Create a PNF package
+ :param data:
+ :return:
+ """
logger.info('Start to create a PNFD...')
user_defined_data = ignore_case_get(data, 'userDefinedData', {})
data = {
@@ -56,6 +64,11 @@ class PnfDescriptor(object):
return data
def query_multiple(self, request):
+ """
+ Query PNF packages
+ :param request:
+ :return:
+ """
pnfdId = request.query_params.get('pnfdId')
if pnfdId:
pnf_pkgs = PnfPackageModel.objects.filter(pnfdId=pnfdId)
@@ -68,6 +81,11 @@ class PnfDescriptor(object):
return response_data
def query_single(self, pnfd_info_id):
+ """
+ Query PNF package by id
+ :param pnfd_info_id:
+ :return:
+ """
pnf_pkgs = PnfPackageModel.objects.filter(pnfPackageId=pnfd_info_id)
if not pnf_pkgs.exists():
logger.error('PNFD(%s) does not exist.' % pnfd_info_id)
@@ -75,6 +93,12 @@ class PnfDescriptor(object):
return self.fill_response_data(pnf_pkgs[0])
def upload(self, remote_file, pnfd_info_id):
+ """
+ Upload PNF package file
+ :param remote_file:
+ :param pnfd_info_id:
+ :return:
+ """
logger.info('Start to upload PNFD(%s)...' % pnfd_info_id)
pnf_pkgs = PnfPackageModel.objects.filter(pnfPackageId=pnfd_info_id)
if not pnf_pkgs.exists():
@@ -93,6 +117,11 @@ class PnfDescriptor(object):
return local_file_name
def delete_single(self, pnfd_info_id):
+ """
+ Delete PNF package by id
+ :param pnfd_info_id:
+ :return:
+ """
logger.info('Start to delete PNFD(%s)...' % pnfd_info_id)
pnf_pkgs = PnfPackageModel.objects.filter(pnfPackageId=pnfd_info_id)
if not pnf_pkgs.exists():
@@ -122,6 +151,11 @@ class PnfDescriptor(object):
logger.debug('PNFD(%s) has been deleted.' % pnfd_info_id)
def download(self, pnfd_info_id):
+ """
+ Download PNF package file by id
+ :param pnfd_info_id:
+ :return:
+ """
logger.info('Start to download PNFD(%s)...' % pnfd_info_id)
pnf_pkgs = PnfPackageModel.objects.filter(pnfPackageId=pnfd_info_id)
if not pnf_pkgs.exists():
@@ -137,6 +171,12 @@ class PnfDescriptor(object):
return read(local_file_path, start, end)
def parse_pnfd_and_save(self, pnfd_info_id, local_file_name):
+ """
+ Parse PNFD and save the information
+ :param pnfd_info_id:
+ :param local_file_name:
+ :return:
+ """
logger.info('Start to process PNFD(%s)...' % pnfd_info_id)
pnf_pkgs = PnfPackageModel.objects.filter(pnfPackageId=pnfd_info_id)
pnf_pkgs.update(onboardingState=PKG_STATUS.PROCESSING)
@@ -198,6 +238,11 @@ class PnfDescriptor(object):
logger.info('PNFD(%s) has been processed.' % pnfd_info_id)
def fill_response_data(self, pnf_pkg):
+ """
+ Fill response data
+ :param pnf_pkg:
+ :return:
+ """
data = {
'id': pnf_pkg.pnfPackageId,
'pnfdId': pnf_pkg.pnfdId,
@@ -218,10 +263,21 @@ class PnfDescriptor(object):
return data
def handle_upload_failed(self, pnf_pkg_id):
+ """
+ Faild process
+ :param pnf_pkg_id:
+ :return:
+ """
pnf_pkg = PnfPackageModel.objects.filter(pnfPackageId=pnf_pkg_id)
pnf_pkg.update(onboardingState=PKG_STATUS.CREATED)
def parse_pnfd(self, csar_id, inputs):
+ """
+ Parse PNFD
+ :param csar_id:
+ :param inputs:
+ :return:
+ """
try:
pnf_pkg = PnfPackageModel.objects.filter(pnfPackageId=csar_id)
if not pnf_pkg:
@@ -237,5 +293,13 @@ class PnfDescriptor(object):
def send_notification(type, pnfd_info_id, pnfd_id=None, failure_details=None):
+ """
+ Send notification
+ :param type:
+ :param pnfd_info_id:
+ :param pnfd_id:
+ :param failure_details:
+ :return:
+ """
notify = PnfNotifications(type, pnfd_info_id, pnfd_id, failure_details=failure_details)
notify.send_notification()
diff --git a/catalog/packages/biz/sdc_ns_package.py b/catalog/packages/biz/sdc_ns_package.py
index 9183ce1..4f817a3 100644
--- a/catalog/packages/biz/sdc_ns_package.py
+++ b/catalog/packages/biz/sdc_ns_package.py
@@ -38,6 +38,11 @@ def fmt_ns_pkg_rsp(status, desc, error_code="500"):
def ns_on_distribute(csar_id):
+ """
+ Get NS pckage from SDC
+ :param csar_id:
+ :return:
+ """
ret = None
try:
ret = NsPackage().on_distribute(csar_id)
@@ -54,6 +59,11 @@ def ns_on_distribute(csar_id):
def ns_delete_csar(csar_id):
+ """
+ Delete NS package
+ :param csar_id:
+ :return:
+ """
ret = None
try:
ret = NsPackage().delete_csar(csar_id)
@@ -66,6 +76,10 @@ def ns_delete_csar(csar_id):
def ns_get_csars():
+ """
+ Get NS packages
+ :return:
+ """
ret = None
try:
ret = NsPackage().get_csars()
@@ -78,6 +92,11 @@ def ns_get_csars():
def ns_get_csar(csar_id):
+ """
+ Get NS package by id
+ :param csar_id:
+ :return:
+ """
ret = None
try:
ret = NsPackage().get_csar(csar_id)
@@ -91,6 +110,12 @@ def ns_get_csar(csar_id):
def parse_nsd(csar_id, inputs):
+ """
+ Parse NSD
+ :param csar_id:
+ :param inputs:
+ :return:
+ """
ret = None
try:
ns_pkg = NSPackageModel.objects.filter(nsPackageId=csar_id)
@@ -151,11 +176,20 @@ class NsPackage(object):
return [0, "CSAR(%s) distributed successfully." % csar_id]
def delete_csar(self, csar_id):
+ """
+ Delete NS package by id
+ :param csar_id:
+ :return:
+ """
nsd = NsDescriptor()
nsd.delete_single(csar_id)
return [0, "Delete CSAR(%s) successfully." % csar_id]
def get_csars(self):
+ """
+ Get ns packages
+ :return:
+ """
csars = []
nss = NSPackageModel.objects.filter()
for ns in nss:
@@ -164,6 +198,11 @@ class NsPackage(object):
return [0, csars]
def get_csar(self, csar_id):
+ """
+ Get NS package by id
+ :param csar_id:
+ :return:
+ """
package_info = {}
csars = NSPackageModel.objects.filter(nsPackageId=csar_id)
if csars:
diff --git a/catalog/packages/biz/sdc_service_package.py b/catalog/packages/biz/sdc_service_package.py
index d0db6bf..5d99204 100644
--- a/catalog/packages/biz/sdc_service_package.py
+++ b/catalog/packages/biz/sdc_service_package.py
@@ -37,7 +37,14 @@ class ServicePackage(object):
pass
def on_distribute(self, csar_id):
+ """
+ Get service packge from SDC and process
+ :param csar_id:
+ :return:
+ """
if ServicePackageModel.objects.filter(servicePackageId=csar_id):
+ err_msg = "Service CSAR(%s) already exists." % csar_id
+ logger.warn(err_msg)
raise PackageHasExistsException("Service CSAR(%s) already exists." % csar_id)
try:
@@ -71,10 +78,19 @@ class ServicePackage(object):
raise e
def delete_csar(self, csar_id):
+ """
+ Delete service package
+ :param csar_id:
+ :return:
+ """
serviced = ServiceDescriptor()
serviced.delete_single(csar_id)
def get_csars(self):
+ """
+ Get service packages from DB
+ :return:
+ """
csars = []
packages = ServicePackageModel.objects.filter()
for package in packages:
@@ -83,6 +99,11 @@ class ServicePackage(object):
return csars
def get_csar(self, csar_id):
+ """
+ Get a service package by id
+ :param csar_id:
+ :return:
+ """
package_info = {}
csars = ServicePackageModel.objects.filter(servicePackageId=csar_id)
if csars:
@@ -107,6 +128,12 @@ class ServicePackage(object):
return {"csarId": csar_id, "packageInfo": package_info}
def parse_serviced(self, csar_id, inputs):
+ """
+ Parse service package
+ :param csar_id:
+ :param inputs:
+ :return:
+ """
service_pkg = ServicePackageModel.objects.filter(servicePackageId=csar_id)
if not service_pkg:
raise PackageNotFoundException("Service CSAR(%s) does not exist." % csar_id)
diff --git a/catalog/packages/biz/sdc_vnf_package.py b/catalog/packages/biz/sdc_vnf_package.py
index 7c9d547..c2c2109 100644
--- a/catalog/packages/biz/sdc_vnf_package.py
+++ b/catalog/packages/biz/sdc_vnf_package.py
@@ -38,6 +38,10 @@ JOB_ERROR = 255
def nf_get_csars():
+ """
+ Get NF packages
+ :return:
+ """
ret = None
try:
ret = NfPackage().get_csars()
@@ -51,6 +55,11 @@ def nf_get_csars():
def nf_get_csar(csar_id):
+ """
+ Get NF package by id
+ :param csar_id:
+ :return:
+ """
ret = None
try:
ret = NfPackage().get_csar(csar_id)
@@ -64,6 +73,12 @@ def nf_get_csar(csar_id):
def parse_vnfd(csar_id, inputs):
+ """
+ Parse VNFD
+ :param csar_id:
+ :param inputs:
+ :return:
+ """
ret = None
try:
nf_pkg = VnfPackageModel.objects.filter(vnfPackageId=csar_id)
@@ -167,6 +182,7 @@ class NfDistributeThread(threading.Thread):
vnf_provider = vnfd["vnf"]["properties"].get("provider", "")
vnf_software_version = vnfd["vnf"]["properties"].get("software_version", "")
vnfd_product_name = vnfd["vnf"]["properties"].get("product_name", "")
+ # Update VNF package Model to DB
VnfPackageModel(
vnfPackageId=self.csar_id,
vnfdId=vnfd_id,
diff --git a/catalog/packages/biz/service_descriptor.py b/catalog/packages/biz/service_descriptor.py
index 11b6fb3..e8fb9ef 100644
--- a/catalog/packages/biz/service_descriptor.py
+++ b/catalog/packages/biz/service_descriptor.py
@@ -36,6 +36,12 @@ class ServiceDescriptor(object):
pass
def create(self, data, csar_id=None):
+ """
+ Create a Service package
+ :param data:
+ :param csar_id:
+ :return:
+ """
logger.info('Start to create a ServiceD...')
user_defined_data = ignore_case_get(data, 'userDefinedData', {})
data = {
@@ -57,6 +63,12 @@ class ServiceDescriptor(object):
return data
def parse_serviced_and_save(self, serviced_info_id, local_file_name):
+ """
+ Parse service package and save information to DB
+ :param serviced_info_id:
+ :param local_file_name:
+ :return:
+ """
logger.info('Start to process ServiceD(%s)...' % serviced_info_id)
service_pkgs = ServicePackageModel.objects.filter(servicePackageId=serviced_info_id)
service_pkgs.update(onboardingState=PKG_STATUS.PROCESSING)
@@ -118,12 +130,19 @@ class ServiceDescriptor(object):
logger.info('ServiceD(%s) has been processed.' % serviced_info_id)
def delete_single(self, serviced_info_id):
+ """
+ Delete a service package by given id
+ :param serviced_info_id:
+ :return:
+ """
logger.info('Start to delete ServiceD(%s)...' % serviced_info_id)
service_pkgs = ServicePackageModel.objects.filter(servicePackageId=serviced_info_id)
if not service_pkgs.exists():
logger.warn('ServiceD(%s) not found.' % serviced_info_id)
raise PackageNotFoundException("Service package[%s] not Found." % serviced_info_id)
service_pkgs.delete()
+
+ # Delete package dir
service_pkg_path = os.path.join(CATALOG_ROOT_PATH, serviced_info_id)
fileutil.delete_dirs(service_pkg_path)
logger.info('ServiceD(%s) has been deleted.' % serviced_info_id)
diff --git a/catalog/packages/biz/vnf_package.py b/catalog/packages/biz/vnf_package.py
index a906cb9..a91f17a 100644
--- a/catalog/packages/biz/vnf_package.py
+++ b/catalog/packages/biz/vnf_package.py
@@ -34,11 +34,19 @@ logger = logging.getLogger(__name__)
class VnfPackage(object):
+ """
+ The class for VNF package management
+ """
def __init__(self):
pass
def create_vnf_pkg(self, data):
+ """
+ Create a VNF package
+ :param data: user defined data
+ :return: VNF package info
+ """
user_defined_data = ignore_case_get(data, "userDefinedData", {})
vnf_pkg_id = str(uuid.uuid4())
VnfPackageModel.objects.create(
@@ -59,6 +67,10 @@ class VnfPackage(object):
return data
def query_multiple(self):
+ """
+ Query the list of VNF package
+ :return: The list of VNF pakcage
+ """
pkgs_info = []
nf_pkgs = VnfPackageModel.objects.filter()
for nf_pkg in nf_pkgs:
@@ -67,6 +79,11 @@ class VnfPackage(object):
return pkgs_info
def query_single(self, vnf_pkg_id):
+ """
+ Query a single VNF package by given id
+ :param vnf_pkg_id: The id of VNF package
+ :return: VNF pckage info
+ """
nf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnf_pkg_id)
if not nf_pkg.exists():
logger.error('VNF package(%s) does not exist.' % vnf_pkg_id)
@@ -74,6 +91,11 @@ class VnfPackage(object):
return fill_response_data(nf_pkg[0])
def delete_vnf_pkg(self, vnf_pkg_id):
+ """
+ Delete a VNF package by give id
+ :param vnf_pkg_id: The id of VNF package
+ :return:
+ """
vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnf_pkg_id)
if not vnf_pkg.exists():
logger.debug('VNF package(%s) has been deleted.' % vnf_pkg_id)
@@ -104,6 +126,12 @@ class VnfPackage(object):
logger.info('VNF package(%s) has been deleted.' % vnf_pkg_id)
def upload(self, vnf_pkg_id, remote_file):
+ """
+ Update VNF pckage file for given id
+ :param vnf_pkg_id: The id of VNF package
+ :param remote_file: VNF package file
+ :return:
+ """
logger.info('Start to upload VNF package(%s)...' % vnf_pkg_id)
vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnf_pkg_id)
# if vnf_pkg[0].onboardingState != PKG_STATUS.CREATED:
@@ -130,6 +158,11 @@ class VnfPackage(object):
return read(local_file_path, start, end)
def download_vnfd(self, vnf_pkg_id):
+ """
+ Download VNFD for given id
+ :param vnf_pkg_id: The id of VNF package
+ :return: VNFD
+ """
logger.info('Start to download VNFD of VNF package(%s)...' % vnf_pkg_id)
nf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnf_pkg_id)
if not nf_pkg.exists():
@@ -183,6 +216,10 @@ class VnfPackage(object):
class VnfPkgUploadThread(threading.Thread):
+ """
+ The Thread for upload VNF pckage
+ """
+
def __init__(self, data, vnf_pkg_id):
threading.Thread.__init__(self)
self.vnf_pkg_id = vnf_pkg_id
diff --git a/catalog/packages/biz/vnf_pkg_artifacts.py b/catalog/packages/biz/vnf_pkg_artifacts.py
index 839f05c..df0fd1f 100644
--- a/catalog/packages/biz/vnf_pkg_artifacts.py
+++ b/catalog/packages/biz/vnf_pkg_artifacts.py
@@ -22,7 +22,16 @@ logger = logging.getLogger(__name__)
class FetchVnfPkgArtifact(object):
+ """
+ Fetch the artifact of VNF package
+ """
def fetch(self, vnfPkgId, artifactPath):
+ """
+ Fetch artifact by given vnf package id and the path of artifact
+ :param vnfPkgId:
+ :param artifactPath:
+ :return:
+ """
logger.debug("FetchVnfPkgArtifact--get--single--artifact--biz::>"
"ID: %s path: %s" % (vnfPkgId, artifactPath))
vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnfPkgId)
diff --git a/catalog/packages/biz/vnf_pkg_subscription.py b/catalog/packages/biz/vnf_pkg_subscription.py
index 5609403..9876961 100644
--- a/catalog/packages/biz/vnf_pkg_subscription.py
+++ b/catalog/packages/biz/vnf_pkg_subscription.py
@@ -45,6 +45,9 @@ def is_filter_type_equal(new_filter, existing_filter):
class CreateSubscription(object):
+ """
+ Create subscription info
+ """
def __init__(self, data):
self.data = data
self.filter = ignore_case_get(self.data, "filter", {})
@@ -59,6 +62,10 @@ class CreateSubscription(object):
ignore_case_get(self.filter, "vnfProductsFromProviders", [])
def check_callbackuri_connection(self):
+ """
+ Check if the callback uri can access
+ :return:
+ """
logger.debug("SubscribeNotification-post::> Sending GET request "
"to %s" % self.callback_uri)
try:
@@ -90,6 +97,10 @@ class CreateSubscription(object):
)
def do_biz(self):
+ """
+ Do business
+ :return:
+ """
self.subscription_id = str(uuid.uuid4())
self.check_valid_auth_info()
self.check_callbackuri_connection()
@@ -102,6 +113,10 @@ class CreateSubscription(object):
return subscription.toDict()
def check_valid_auth_info(self):
+ """
+ Check if the Auth info is valid
+ :return:
+ """
logger.debug("SubscribeNotification--post::> Validating Auth "
"details if provided")
if self.authentication.get("paramsBasic", {}) and const.BASIC not in self.authentication.get("authType"):
@@ -138,6 +153,10 @@ class CreateSubscription(object):
return True
def save_db(self):
+ """
+ Save the subscription info to DB
+ :return:
+ """
logger.debug("SubscribeNotification--post::> Saving the subscription "
"%s to the database" % self.subscription_id)
links = {
@@ -160,7 +179,15 @@ class CreateSubscription(object):
class QuerySubscription(object):
+ """
+ The class for query subscription
+ """
def query_multi_subscriptions(self, params):
+ """
+ Query subscriptions
+ :param params:
+ :return:
+ """
query_data = {}
logger.debug("QuerySubscription--get--multi--subscriptions--biz::> Check "
"for filter in query params %s" % params)
@@ -177,6 +204,11 @@ class QuerySubscription(object):
return [subscription.toDict() for subscription in subscriptions]
def query_single_subscription(self, subscription_id):
+ """
+ Query subscription by id
+ :param subscription_id:
+ :return:
+ """
logger.debug("QuerySingleSubscriptions--get--single--subscription--biz::> "
"ID: %s" % subscription_id)
@@ -189,6 +221,9 @@ class QuerySubscription(object):
class TerminateSubscription(object):
+ """
+ The class to terminate the subscription
+ """
def terminate(self, subscription_id):
logger.debug("TerminateSubscriptions--delete--biz::> "
"ID: %s" % subscription_id)
diff --git a/catalog/pub/msapi/sdc.py b/catalog/pub/msapi/sdc.py
index 498db8d..2f69572 100644
--- a/catalog/pub/msapi/sdc.py
+++ b/catalog/pub/msapi/sdc.py
@@ -62,6 +62,11 @@ sample of return value
def get_artifacts(asset_type):
+ """
+ Get artifacts by given asset type
+ :param asset_type:
+ :return:
+ """
resource = "/sdc/v1/catalog/{assetType}"
resource = resource.format(assetType=asset_type)
ret = call_sdc(resource, "GET")
@@ -72,6 +77,12 @@ def get_artifacts(asset_type):
def get_artifact(asset_type, csar_id):
+ """
+ Get artifact by given asset type and csar id
+ :param asset_type:
+ :param csar_id:
+ :return:
+ """
artifacts = get_artifacts(asset_type)
for artifact in artifacts:
if artifact["uuid"] == csar_id:
@@ -84,6 +95,12 @@ def get_artifact(asset_type, csar_id):
def get_asset(asset_type, uuid):
+ """
+ Get asset by given type and UUID
+ :param asset_type:
+ :param uuid:
+ :return:
+ """
resource = "/sdc/v1/catalog/{assetType}/{uuid}/metadata".format(assetType=asset_type, uuid=uuid)
ret = call_sdc(resource, "GET")
if ret[0] != 0:
@@ -99,6 +116,13 @@ def get_asset(asset_type, uuid):
def delete_artifact(asset_type, asset_id, artifact_id):
+ """
+ Delete artifact by conditions from SDC
+ :param asset_type:
+ :param asset_id:
+ :param artifact_id:
+ :return:
+ """
resource = "/sdc/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}"
resource = resource.format(assetType=asset_type, uuid=asset_id, artifactUUID=artifact_id)
ret = call_sdc(resource, "DELETE")
@@ -109,6 +133,13 @@ def delete_artifact(asset_type, asset_id, artifact_id):
def download_artifacts(download_url, local_path, file_name):
+ """
+ Downlaod artifacts from SDC
+ :param download_url:
+ :param local_path:
+ :param file_name:
+ :return:
+ """
additional_headers = {
'X-ECOMP-InstanceID': 'VFC',
'accept': 'application/octet-stream'
@@ -132,6 +163,13 @@ def download_artifacts(download_url, local_path, file_name):
def create_consumer(name, salt, password):
+ """
+ Create a consumer to access the SDC
+ :param name:
+ :param salt:
+ :param password:
+ :return:
+ """
req_data = {
'consumerName': name,
'consumerSalt': salt,
@@ -154,6 +192,11 @@ def create_consumer(name, salt, password):
def register_for_topics(key):
+ """
+ Register a topics of SDC
+ :param key:
+ :return:
+ """
req_data = {
'apiPublicKey': key,
'distrEnvName': 'AUTO',