X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog%2Fpackages%2Fbiz%2Fnotificationsutil.py;h=a13eae96f7a9f80757a6521cbc0b33820be37a66;hb=ffe0ada0cab8d728442466de27aeb3a792d98531;hp=72afe3360c36a5a6e50abf9c498054a31cb3542b;hpb=c0fcb2e4cde1cd5338412e5ce83115626d068f7b;p=modeling%2Fetsicatalog.git diff --git a/catalog/packages/biz/notificationsutil.py b/catalog/packages/biz/notificationsutil.py index 72afe33..a13eae9 100644 --- a/catalog/packages/biz/notificationsutil.py +++ b/catalog/packages/biz/notificationsutil.py @@ -15,7 +15,9 @@ import logging import uuid import requests +import json from rest_framework import status +from requests.auth import HTTPBasicAuth from catalog.packages import const from catalog.pub.database.models import VnfPackageModel, VnfPkgSubscriptionModel, NsdmSubscriptionModel import catalog.pub.utils.timeutil @@ -72,25 +74,42 @@ 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.error("Sending notification to %s failed: %s" % (callbackuri, resp)) else: logger.info("Sending notification to %s successfully.", callbackuri) except: