import ast
import json
import logging
-import requests
import uuid
-
from collections import Counter
+import requests
from rest_framework import status
from catalog.packages import const
from catalog.pub.database.models import NsdmSubscriptionModel
from catalog.pub.exceptions import CatalogException, \
- ResourceNotFoundException, \
- NsdmBadRequestException, NsdmDuplicateSubscriptionException
+ NsdmBadRequestException, NsdmDuplicateSubscriptionException, SubscriptionDoesNotExistsException
from catalog.pub.utils.values import ignore_case_get
logger = logging.getLogger(__name__)
NsdmSubscriptionModel.objects.filter(
subscriptionid=subscription_id)
if not subscription.exists():
- raise ResourceNotFoundException(
- "Subscription(%s) doesn't exists" % subscription_id)
+ raise SubscriptionDoesNotExistsException(
+ "Subscription(%s) doesn't exist" % subscription_id)
logger.debug("Subscription found... ")
return self.fill_resp_data(subscription[0])
NsdmSubscriptionModel.objects.filter(
subscriptionid=subscription_id)
if not subscription.exists():
- raise ResourceNotFoundException(
- "Subscription(%s) doesn't exists" % subscription_id)
+ raise SubscriptionDoesNotExistsException(
+ "Subscription(%s) doesn't exist" % subscription_id)
subscription.delete()
logger.debug("Deleted Subscription... ")
for query, value in list(self.params.items()):
if query in const.NSDM_NOTIFICATION_FILTERS and value:
query_data[query + '__icontains'] = json.dumps(list(set(value)))
- # Query the database with filters if the request
+ # Query the database with filter if the request
# has fields in request params, else fetch all records
if query_data:
subscriptions = NsdmSubscriptionModel.objects.filter(**query_data)
else:
subscriptions = NsdmSubscriptionModel.objects.all()
if not subscriptions.exists():
- raise ResourceNotFoundException("Subscriptions doesn't exist")
+ raise SubscriptionDoesNotExistsException("Subscriptions doesn't exist")
return [self.fill_resp_data(subscription)
for subscription in subscriptions]
logger.debug("Create Subscription --> Test Callback URI --"
"Sending GET request to %s" % self.callback_uri)
try:
- response = requests.get(self.callback_uri, timeout=2)
+ response = requests.get(self.callback_uri, timeout=2, verify=False)
if response.status_code != status.HTTP_204_NO_CONTENT:
raise CatalogException("callbackUri %s returns %s status "
"code." % (self.callback_uri,
def check_valid(self):
logger.debug("Create Subscription --> Checking DB if "
- "same subscription exists already exists... ")
+ "same subscription has already existed... ")
subscriptions = \
NsdmSubscriptionModel.objects.filter(
callback_uri=self.callback_uri)
- if not subscriptions.exists():
- return
+
for subscription in subscriptions:
if self.check_filter_exists(subscription):
+ links = json.loads(subscription.links)
+ logger.error(
+ "Subscription has already existed with the "
+ "same callbackUri and filter:%s" % links)
raise NsdmDuplicateSubscriptionException(
- "Already Subscription exists with the "
- "same callbackUri and filter")
+ "/%s" % (links["self"]["href"]))
def save_db(self):
logger.debug("Create Subscription --> Saving the subscription "
links = {
"self": {
"href":
- const.NSDM_SUBSCRIPTION_ROOT_URI + self.subscription_id
+ const.NSDM_SUBSCRIPTION_ROOT_URI + self.subscription_id
}
}
subscription_save_db = {
"subscriptionid": self.subscription_id,
"callback_uri": self.callback_uri,
- "auth_info": self.authentication,
+ "auth_info": json.dumps(self.authentication),
"links": json.dumps(links)
}
for filter_type in const.NSDM_NOTIFICATION_FILTERS: