X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog%2Fpackages%2Fbiz%2Fnotificationsutil.py;h=4b8f7366e203028ac02fdea813f25f379f7ab3ec;hb=3ff968b21a477944ed66b4261f5d9c9a182eb954;hp=114f922c11b2fb262e309aec2d387e60f8f06a72;hpb=b7d87af11036d724710a50116fd3edabe25afd5b;p=modeling%2Fetsicatalog.git diff --git a/catalog/packages/biz/notificationsutil.py b/catalog/packages/biz/notificationsutil.py index 114f922..4b8f736 100644 --- a/catalog/packages/biz/notificationsutil.py +++ b/catalog/packages/biz/notificationsutil.py @@ -12,20 +12,23 @@ # See the License for the specific language governing permissions and # limitations under the License. +import json import logging +import traceback import uuid + import requests +from django.db.models import Q +from requests.auth import HTTPBasicAuth from rest_framework import status -from catalog.packages import const -from catalog.pub.database.models import VnfPackageModel, VnfPkgSubscriptionModel, NsdmSubscriptionModel + import catalog.pub.utils.timeutil -from catalog.pub.utils.values import remove_none_key -from catalog.pub.config import config as pub_config -import traceback -from django.db.models import Q +from catalog.packages import const from catalog.packages.serializers.vnf_pkg_notifications import PkgChangeNotificationSerializer, \ PkgOnboardingNotificationSerializer - +from catalog.pub.config import config as pub_config +from catalog.pub.database.models import VnfPackageModel, VnfPkgSubscriptionModel, NsdmSubscriptionModel +from catalog.pub.utils.values import remove_none_key logger = logging.getLogger(__name__) @@ -73,27 +76,44 @@ class NotificationsUtil(object): serialized_data = self.notifyserializer(data=notification) if not serialized_data.is_valid(): logger.error('Notification Data is invalid:%s.' % serialized_data.errors) - self.post_notification(callbackuri, notification) - - def post_notification(self, callbackuri, notification): - """ - params = auth_info.get("paramsBasic", {}) - username, password = params.get("userName"), params.get("password") - logger.info("Sending notification to %s, %s", callbackuri, params) - resp = None - if username: - resp = requests.post(callbackuri, - data=notification, - auth=HTTPBasicAuth(username, password)) - else: - """ + if sub.auth_info: + self.post_notification(callbackuri, notification, auth_info=json.loads(sub.auth_info)) + else: + self.post_notification(callbackuri, notification) + + def post_notification(self, callbackuri, notification, auth_info=None): try: - resp = requests.post(callbackuri, data=notification, headers={'Connection': 'close'}) - if resp.status_code != status.HTTP_204_NO_CONTENT: - logger.error("Sending notification to %s failed: %s" % (callbackuri, resp.text)) + if auth_info: + if const.BASIC in auth_info.get("authType", ''): + params = auth_info.get("paramsBasic", {}) + username = params.get("userName") + password = params.get("password") + resp = requests.post(callbackuri, + data=json.dumps(notification), + headers={'Connection': 'close', + 'content-type': 'application/json', + 'accept': 'application/json'}, + auth=HTTPBasicAuth(username, password), + verify=False) + elif const.OAUTH2_CLIENT_CREDENTIALS in auth_info.get("authType", ''): + # todo + pass + else: + # todo + pass else: + resp = requests.post(callbackuri, + data=json.dumps(notification), + headers={'Connection': 'close', + 'content-type': 'application/json', + 'accept': 'application/json'}, + verify=False) + + if resp.status_code == status.HTTP_204_NO_CONTENT: logger.info("Sending notification to %s successfully.", callbackuri) + else: + logger.error("Sending notification to %s failed: %s" % (callbackuri, resp)) except: logger.error("Post notification failed.") logger.error(traceback.format_exc())