diff options
author | ying.yunlong <ying.yunlong@zte.com.cn> | 2018-01-25 13:14:02 +0800 |
---|---|---|
committer | yunlong ying <ying.yunlong@zte.com.cn> | 2018-01-25 06:22:50 +0000 |
commit | 09a21ea186aff5cbee6dcc5573f570f49c251812 (patch) | |
tree | 63a751942804e0e782725e260405ee197bc67c95 | |
parent | 96114591d43b8c73a6210a904c15f9314624150d (diff) |
Refactor vfc-vnfres swagger function.
Change-Id: If403d965ddaf7f6d270ebb490a98025e8506f88b
Issue-ID: VFC-679
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
-rw-r--r-- | res/res/resources/tests.py | 4 | ||||
-rw-r--r-- | res/res/resources/urls.py | 2 | ||||
-rw-r--r-- | res/res/resources/views.py | 17 | ||||
-rw-r--r-- | res/res/swagger/__init__.py | 13 | ||||
-rw-r--r-- | res/res/swagger/swagger.json (renamed from res/res/resources/swagger.json) | 0 | ||||
-rw-r--r-- | res/res/swagger/tests.py | 29 | ||||
-rw-r--r-- | res/res/swagger/urls.py | 20 | ||||
-rw-r--r-- | res/res/swagger/views.py | 27 | ||||
-rw-r--r-- | res/res/urls.py | 1 |
9 files changed, 93 insertions, 20 deletions
diff --git a/res/res/resources/tests.py b/res/res/resources/tests.py index a6b9ead..7f5026e 100644 --- a/res/res/resources/tests.py +++ b/res/res/resources/tests.py @@ -219,7 +219,3 @@ class ResourceTest(TestCase): response = self.client.get("/api/vnfres/v1/%s/volumes" % self.nf_inst_id) self.assertEqual(self.volumes_data, response.data) self.failUnlessEqual(status.HTTP_200_OK, response.status_code) - - def test_swagger_ok(self): - resp = self.client.get("/api/vnfres/v1/swagger.json", format="json") - self.assertEqual(resp.status_code, status.HTTP_200_OK, resp.content) diff --git a/res/res/resources/urls.py b/res/res/resources/urls.py index 5bcfb9a..e282e86 100644 --- a/res/res/resources/urls.py +++ b/res/res/resources/urls.py @@ -16,7 +16,6 @@ from django.conf.urls import url from rest_framework.urlpatterns import format_suffix_patterns from res.resources import views -from res.resources.views import SwaggerJsonView urlpatterns = [ url(r'^api/vnfres/v1/vnfs/(?P<vnfInstanceId>[0-9a-zA-Z\-\_]+)$', views.get_vnf, name='get_vnf'), @@ -27,7 +26,6 @@ urlpatterns = [ url(r'^api/vnfres/v1/(?P<vnfInstanceId>[0-9a-zA-Z\-\_]+)/subnets$', views.get_subnets, name='get_subnets'), url(r'^api/vnfres/v1/(?P<vnfInstanceId>[0-9a-zA-Z\-\_]+)/cps$', views.getCps.as_view(), name='get_cps'), url(r'^api/vnfres/v1/(?P<vnfInstanceId>[0-9a-zA-Z\-\_]+)/volumes$', views.getVolumes.as_view(), name='get_volumes'), - url(r'^api/vnfres/v1/swagger.json$', SwaggerJsonView.as_view()), ] urlpatterns = format_suffix_patterns(urlpatterns) diff --git a/res/res/resources/views.py b/res/res/resources/views.py index 049f584..70c38b3 100644 --- a/res/res/resources/views.py +++ b/res/res/resources/views.py @@ -12,9 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json import logging -import os import traceback from drf_yasg.utils import swagger_auto_schema @@ -23,11 +21,11 @@ from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.views import APIView -from res.pub.exceptions import VNFRESException -from res.pub.utils.values import ignore_case_get -from res.pub.utils.syscomm import fun_name from res.pub.database.models import NfInstModel, StorageInstModel, NetworkInstModel, VLInstModel, \ VNFCInstModel, VmInstModel, FlavourInstModel, SubNetworkInstModel, CPInstModel +from res.pub.exceptions import VNFRESException +from res.pub.utils.syscomm import fun_name +from res.pub.utils.values import ignore_case_get from res.resources.serializers import VolumeInfoSerializer, NoneSerializer, CpsInfoSerializer logger = logging.getLogger(__name__) @@ -388,12 +386,3 @@ def fill_volumes_data(v): "size": v.size } return volumes_data - - -class SwaggerJsonView(APIView): - def get(self, request): - json_file = os.path.join(os.path.dirname(__file__), 'swagger.json') - f = open(json_file) - json_data = json.JSONDecoder().decode(f.read()) - f.close() - return Response(json_data) diff --git a/res/res/swagger/__init__.py b/res/res/swagger/__init__.py new file mode 100644 index 0000000..342c2a8 --- /dev/null +++ b/res/res/swagger/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/res/res/resources/swagger.json b/res/res/swagger/swagger.json index 47dccc8..47dccc8 100644 --- a/res/res/resources/swagger.json +++ b/res/res/swagger/swagger.json diff --git a/res/res/swagger/tests.py b/res/res/swagger/tests.py new file mode 100644 index 0000000..03bb77f --- /dev/null +++ b/res/res/swagger/tests.py @@ -0,0 +1,29 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import unittest + +from rest_framework import status +from rest_framework.test import APIClient + + +class SwaggerViewTest(unittest.TestCase): + def setUp(self): + self.client = APIClient() + + def tearDown(self): + pass + + def test_swagger_ok(self): + resp = self.client.get("/api/vnfres/v1/swagger.json", format="json") + self.assertEqual(resp.status_code, status.HTTP_200_OK, resp.content) diff --git a/res/res/swagger/urls.py b/res/res/swagger/urls.py new file mode 100644 index 0000000..3cfa7a6 --- /dev/null +++ b/res/res/swagger/urls.py @@ -0,0 +1,20 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from django.conf.urls import url + +from res.swagger.views import SwaggerJsonView + +urlpatterns = [ + url(r'^api/vnfres/v1/swagger.json$', SwaggerJsonView.as_view()), +] diff --git a/res/res/swagger/views.py b/res/res/swagger/views.py new file mode 100644 index 0000000..cc5a4a3 --- /dev/null +++ b/res/res/swagger/views.py @@ -0,0 +1,27 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import json +import os + +from rest_framework.response import Response +from rest_framework.views import APIView + + +class SwaggerJsonView(APIView): + def get(self, request): + json_file = os.path.join(os.path.dirname(__file__), 'swagger.json') + f = open(json_file) + json_data = json.JSONDecoder().decode(f.read()) + f.close() + return Response(json_data) diff --git a/res/res/urls.py b/res/res/urls.py index b9c08ca..83bbdaf 100644 --- a/res/res/urls.py +++ b/res/res/urls.py @@ -37,6 +37,7 @@ SchemaView = get_schema_view( urlpatterns = [ url(r'^', include('res.samples.urls')), + url(r'^', include('res.swagger.urls')), url(r'^', include('res.resources.urls')), url(r'^swagger(?P<format>.json|.yaml)$', SchemaView.without_ui(cache_timeout=0), name='schema-json'), url(r'^swagger/$', SchemaView.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), |