# 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.database.models import VnfPackageModel, VnfPkgSubscriptionModel, NsdmSubscriptionModel
+from catalog.pub.utils.values import remove_none_key
logger = logging.getLogger(__name__)
# set subscription id
notification["subscriptionId"] = sub.get_subscription_id()
notification['_links']['subscription'] = {
- 'href': 'http://%s:%s/%s%s' % (pub_config.MSB_SERVICE_IP,
- pub_config.MSB_SERVICE_PORT,
- self.subscription_root_uri,
- notification["subscriptionId"])
+ 'href': '/%s%s' % (self.subscription_root_uri, notification["subscriptionId"])
}
callbackuri = sub.callback_uri
"""
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())
'vnfdId': vnfd_id,
'_links': {
'vnfPackage': {
- 'href': 'http://%s:%s/%s/vnf_packages/%s' % (pub_config.MSB_SERVICE_IP,
- pub_config.MSB_SERVICE_PORT,
- const.PKG_URL_PREFIX,
- self.vnf_pkg_id)
+ 'href': '/%s/vnf_packages/%s' % (const.PKG_URL_PREFIX, self.vnf_pkg_id)
}
}
}
'nsdId': self.nsd_id,
'_links': {
'nsdInfo': {
- 'href': 'http://%s:%s/%s/ns_descriptors/%s' % (pub_config.MSB_SERVICE_IP,
- pub_config.MSB_SERVICE_PORT,
- const.NSD_URL_PREFIX,
- self.nsd_info_id)
+ 'href': '/%s/ns_descriptors/%s' % (
+ const.NSD_URL_PREFIX, self.nsd_info_id)
}
}
}
'pnfdId': self.pnfd_id,
'_links': {
'pnfdInfo': {
- 'href': 'http://%s:%s/%s/pnf_descriptors/%s' % (pub_config.MSB_SERVICE_IP,
- pub_config.MSB_SERVICE_PORT,
- const.NSD_URL_PREFIX,
- self.pnfd_info_id)
+ 'href': '/%s/pnf_descriptors/%s' % (const.NSD_URL_PREFIX,
+ self.pnfd_info_id)
}
}
}