Add a subscription api on gvnfmdriver. 13/66513/1
authorlaili <lai.li@zte.com.cn>
Fri, 14 Sep 2018 03:08:50 +0000 (11:08 +0800)
committerlaili <lai.li@zte.com.cn>
Fri, 14 Sep 2018 03:08:50 +0000 (11:08 +0800)
- Modify subscription api.

Change-Id: I26c95969390c64bc08f77036de342bc66caed664
Issue-ID: VFC-1118
Signed-off-by: laili <lai.li@zte.com.cn>
gvnfmadapter/driver/interfaces/tests.py
gvnfmadapter/driver/interfaces/urls.py
gvnfmadapter/driver/interfaces/views.py

index 4d58137..84607a9 100644 (file)
@@ -636,6 +636,20 @@ class InterfacesTest(TestCase):
 
     @mock.patch.object(restcall, 'call_req')
     def test_subscribe_successfully(self, mock_call_req):
+        vnfm_info = {
+            "vnfmId": "19ecbb3a-3242-4fa3-9926-8dfb7ddc29ee",
+            "name": "g_vnfm",
+            "type": "gvnfmdriver",
+            "vimId": "",
+            "vendor": "ZTE",
+            "version": "v1.0",
+            "description": "vnfm",
+            "certificateUrl": "",
+            "url": "http://10.74.44.11",
+            "userName": "admin",
+            "password": "admin",
+            "createTime": "2016-07-06 15:33:18"
+        }
         lccn_subscription_request_data = {
             "filter": {
                 "notificationTypes": ["VnfLcmOperationOccurrenceNotification"],
@@ -663,14 +677,33 @@ class InterfacesTest(TestCase):
                 "self": {"href": "URI of this resource."}
             },
         }
-        mock_call_req.return_value = [0, json.JSONEncoder().encode(lccn_subscription_data), status.HTTP_201_CREATED]
-        response = self.client.post("/api/gvnfmdriver/v1/subscriptions", json.dumps(lccn_subscription_request_data),
-                                    content_type='application/json')
+        ret_of_vnfminfo_from_nslcm = [0, json.JSONEncoder().encode(vnfm_info), "200"]
+        ret_from_vnfm = [0, json.JSONEncoder().encode(lccn_subscription_data), status.HTTP_201_CREATED]
+        mock_call_req.side_effect = [ret_of_vnfminfo_from_nslcm, ret_from_vnfm]
+        response = self.client.post(
+            "/api/gvnfmdriver/v1/%s/subscriptions" % vnfm_info['vnfmId'],
+            json.dumps(lccn_subscription_request_data),
+            content_type='application/json'
+        )
         self.assertEqual(status.HTTP_201_CREATED, response.status_code)
         self.assertEqual(lccn_subscription_data, response.data)
 
     @mock.patch.object(restcall, 'call_req')
     def test_subscribe_failed(self, mock_call_req):
+        vnfm_info = {
+            "vnfmId": "19ecbb3a-3242-4fa3-9926-8dfb7ddc29ee",
+            "name": "g_vnfm",
+            "type": "gvnfmdriver",
+            "vimId": "",
+            "vendor": "ZTE",
+            "version": "v1.0",
+            "description": "vnfm",
+            "certificateUrl": "",
+            "url": "http://10.74.44.11",
+            "userName": "admin",
+            "password": "admin",
+            "createTime": "2016-07-06 15:33:18"
+        }
         lccn_subscription_request_data = {
             "filter": {
                 "notificationTypes": ["VnfLcmOperationOccurrenceNotification"],
@@ -686,7 +719,12 @@ class InterfacesTest(TestCase):
                 }
             }
         }
-        mock_call_req.return_value = [1, None, status.HTTP_303_SEE_OTHER]
-        response = self.client.post("/api/gvnfmdriver/v1/subscriptions", json.dumps(lccn_subscription_request_data),
-                                    content_type='application/json')
+        ret_of_vnfminfo_from_nslcm = [0, json.JSONEncoder().encode(vnfm_info), "200"]
+        ret_from_vnfm = [1, None, status.HTTP_303_SEE_OTHER]
+        mock_call_req.side_effect = [ret_of_vnfminfo_from_nslcm, ret_from_vnfm]
+        response = self.client.post(
+            "/api/gvnfmdriver/v1/%s/subscriptions" % vnfm_info['vnfmId'],
+            json.dumps(lccn_subscription_request_data),
+            content_type='application/json'
+        )
         self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)
index 40b8f3b..ac39eff 100644 (file)
@@ -22,8 +22,7 @@ urlpatterns = [
     url(r'^api/(?P<vnfmtype>[0-9a-zA-Z\-\_]+)/v1/(?P<vnfmid>[0-9a-zA-Z\-\_]+)/vnfs/(?P<vnfInstanceId>[0-9a-zA-Z\-\_]+)/terminate$', VnfTermInfo.as_view()),
     url(r'^api/(?P<vnfmtype>[0-9a-zA-Z\-\_]+)/v1/(?P<vnfmid>[0-9a-zA-Z\-\_]+)/vnfs/(?P<vnfInstanceId>[0-9a-zA-Z\-\_]+)$', VnfQueryInfo.as_view()),
     url(r'^api/(?P<vnfmtype>[0-9a-zA-Z\-\_]+)/v1/(?P<vnfmid>[0-9a-zA-Z\-\_]+)/jobs/(?P<jobid>[0-9a-zA-Z\-\_]+)$', VnfOperInfo.as_view()),
-    url(r'^api/(?P<vnfmtype>[0-9a-zA-Z\-\_]+)/v1/subscriptions$', Subscription.as_view()),
-
+    url(r'^api/(?P<vnfmtype>[0-9a-zA-Z\-\_]+)/v1/(?P<vnfmid>[0-9a-zA-Z\-\_]+)/subscriptions$', Subscription.as_view()),
 
     url(r'^api/(?P<vnfmtype>[0-9a-zA-Z\-\_]+)/v1/vnfpackages$', VnfPkgsInfo.as_view()),
     url(r'^api/(?P<vnfmtype>[0-9a-zA-Z\-\_]+)/v1/resource/grant$', VnfGrantInfo.as_view()),
index 1cf6fa2..32897c2 100644 (file)
@@ -356,14 +356,14 @@ class Subscription(APIView):
             status.HTTP_500_INTERNAL_SERVER_ERROR: "INTERNAL_SERVER_ERROR"
         }
     )
-    def post(self, request, vnfmtype):
+    def post(self, request, vnfmtype, vnfmid):
         logger.debug("Subscription--post::> %s" % request.data)
         logger.debug("Subscription begin!")
         try:
             lccn_subscription_request_serializer = LccnSubscriptionRequestSerializer(data=request.data)
             if not lccn_subscription_request_serializer.is_valid():
                 raise GvnfmDriverException(lccn_subscription_request_serializer.error_messages)
-            resp_data = do_subscription(request.data)
+            resp_data = do_subscription(request.data, vnfmid)
             lccn_subscription_serializer = LccnSubscriptionSerializer(data=resp_data)
             if not lccn_subscription_serializer.is_valid():
                 logger.debug("[%s]resp_data=%s" % (fun_name(), resp_data))
@@ -529,9 +529,11 @@ def do_queryvnf(data, vnfm_id, vnfInstanceId):
     return json.JSONDecoder().decode(ret[1])
 
 
-def do_subscription(data):
+def do_subscription(data, vnfm_id):
     logger.debug("[%s] request.data=%s", fun_name(), data)
-    ret = req_by_msb("api/vnflcm/v1/subscriptions", "POST", json.JSONEncoder().encode(data))
+    vnfm_info = get_vnfminfo_from_nslcm(vnfm_id)
+    logger.debug("[do_deletevnf] vnfm_info=[%s]", vnfm_info)
+    ret = call_vnfm("api/vnflcm/v1/subscriptions", "POST", vnfm_info, data)
     logger.debug("[%s] call_req ret=%s", fun_name(), ret)
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])