summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlaili <lai.li@zte.com.cn>2018-09-14 11:08:50 +0800
committerlaili <lai.li@zte.com.cn>2018-09-14 11:08:50 +0800
commitdd8d72e678369aaf122bd3aecbcd336acdca3dd6 (patch)
tree510eafc53aa81d7e175d89abf9c1e6dbf6ef49f5
parent261eb147ac54ecfb9b41c643658e1f07c83b4401 (diff)
Add a subscription api on gvnfmdriver.
- Modify subscription api. Change-Id: I26c95969390c64bc08f77036de342bc66caed664 Issue-ID: VFC-1118 Signed-off-by: laili <lai.li@zte.com.cn>
-rw-r--r--gvnfmadapter/driver/interfaces/tests.py50
-rw-r--r--gvnfmadapter/driver/interfaces/urls.py3
-rw-r--r--gvnfmadapter/driver/interfaces/views.py10
3 files changed, 51 insertions, 12 deletions
diff --git a/gvnfmadapter/driver/interfaces/tests.py b/gvnfmadapter/driver/interfaces/tests.py
index 4d58137..84607a9 100644
--- a/gvnfmadapter/driver/interfaces/tests.py
+++ b/gvnfmadapter/driver/interfaces/tests.py
@@ -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)
diff --git a/gvnfmadapter/driver/interfaces/urls.py b/gvnfmadapter/driver/interfaces/urls.py
index 40b8f3b..ac39eff 100644
--- a/gvnfmadapter/driver/interfaces/urls.py
+++ b/gvnfmadapter/driver/interfaces/urls.py
@@ -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()),
diff --git a/gvnfmadapter/driver/interfaces/views.py b/gvnfmadapter/driver/interfaces/views.py
index 1cf6fa2..32897c2 100644
--- a/gvnfmadapter/driver/interfaces/views.py
+++ b/gvnfmadapter/driver/interfaces/views.py
@@ -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])