X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=lcm%2Flcm%2Fnf%2Fbiz%2Fcreate_subscription.py;h=efec92506330cceeeb5bb4bdffcd0dfbc39a1c5b;hb=0352a65cf29f1e1498d51b3f60982f185a14bda7;hp=f42a59c0488c01e5330134b9ae9773ee4b8a9972;hpb=b7e6459cede4ad0b9320c240f920aebb5e06c270;p=vfc%2Fgvnfm%2Fvnflcm.git diff --git a/lcm/lcm/nf/biz/create_subscription.py b/lcm/lcm/nf/biz/create_subscription.py index f42a59c0..efec9250 100644 --- a/lcm/lcm/nf/biz/create_subscription.py +++ b/lcm/lcm/nf/biz/create_subscription.py @@ -25,7 +25,9 @@ from rest_framework import status from lcm.nf import const from lcm.pub.database.models import SubscriptionModel from lcm.pub.exceptions import NFLCMException +from lcm.pub.exceptions import NFLCMExceptionSeeOther from lcm.pub.utils.values import ignore_case_get +from lcm.pub.config.config import MSB_BASE_URL logger = logging.getLogger(__name__) @@ -38,29 +40,33 @@ class CreateSubscription: def __init__(self, data): self.data = data self.filter = ignore_case_get(self.data, "filter", {}) + logger.debug("self.data:%s" % self.data) + logger.debug("self.filter:%s" % self.filter) self.callback_uri = ignore_case_get(self.data, "callbackUri") self.authentication = ignore_case_get(self.data, "authentication", {}) self.notification_types = ignore_case_get(self.filter, "notificationTypes", []) self.operation_types = ignore_case_get(self.filter, "operationTypes", []) - self.operation_states = ignore_case_get(self.filter, "notificationStates", []) + self.operation_states = ignore_case_get(self.filter, "operationStates", []) self.vnf_filter = \ ignore_case_get(self.filter, "vnfInstanceSubscriptionFilter", {}) def check_callbackuri_connection(self): logger.debug("SubscribeNotification-post::> Sending GET request " "to %s" % self.callback_uri) - try: - response = requests.get(self.callback_uri, timeout=2) - if response.status_code != status.HTTP_204_NO_CONTENT: - raise NFLCMException("callbackUri %s returns %s status " - "code." % (self.callback_uri, response.status_code)) - except Exception: - raise NFLCMException("callbackUri %s didn't return 204 status" - "code." % self.callback_uri) + retry_count = 3 + while retry_count > 0: + requests.packages.urllib3.disable_warnings() + response = requests.get(self.callback_uri, timeout=10, verify=False) + if response.status_code == status.HTTP_204_NO_CONTENT: + return + logger.debug("callbackUri %s returns %s status code." % (self.callback_uri, response.status_code)) + retry_count = - 1 + + raise NFLCMException("callbackUri %s didn't return 204 status." % self.callback_uri) def do_biz(self): self.subscription_id = str(uuid.uuid4()) - # self.check_callbackuri_connection() + self.check_callbackuri_connection() self.check_valid_auth_info() self.check_filter_types() self.check_valid() @@ -116,8 +122,8 @@ class CreateSubscription: return True for subscription in subscriptions: if self.check_filter_exists(subscription): - raise NFLCMException("Already Subscription exists with the " - "same callbackUri and filter") + links = json.loads(subscription.links) + raise NFLCMExceptionSeeOther("%s/%s" % (MSB_BASE_URL, links["self"]["href"])) return False def save_db(self): @@ -130,7 +136,7 @@ class CreateSubscription: } SubscriptionModel.objects.create(subscription_id=self.subscription_id, callback_uri=self.callback_uri, - auth_info=self.authentication, + auth_info=json.dumps(self.authentication), notification_types=json.dumps(self.notification_types), operation_types=json.dumps(self.operation_types), operation_states=json.dumps(self.operation_states),