From: SerenaFeng Date: Wed, 8 Jun 2016 18:10:01 +0000 (+0800) Subject: solve access testresults.opnfv.org/swagger/spec.html fail issue in testAPI X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=e3c312c23b45f50b583f42dadfa15f60a7544359;p=releng-testresults.git solve access testresults.opnfv.org/swagger/spec.html fail issue in testAPI add swagger configuration in config.ini add swagger.docs() process in server.py add swagger configuration parse in config.py add basePath() in settings.py change 'basePath' item assignment in views.py JIRA: FUNCTEST-305 Change-Id: I049991d4d53b78755ee971021ec0ad2458f5da60 Signed-off-by: SerenaFeng --- diff --git a/result_collection_api/etc/config.ini b/result_collection_api/etc/config.ini index f703cc6..16346bf 100644 --- a/result_collection_api/etc/config.ini +++ b/result_collection_api/etc/config.ini @@ -5,8 +5,12 @@ # Mongo auth url => mongodb://user1:pwd1@host1/?authSource=db1 url = mongodb://127.0.0.1:27017/ dbname = test_results_collection + [api] # Listening port port = 8000 # With debug_on set to true, error traces will be shown in HTTP responses -debug = True \ No newline at end of file +debug = True + +[swagger] +base_url = http://testresults.opnfv.org/test \ No newline at end of file diff --git a/result_collection_api/opnfv_testapi/cmd/server.py b/result_collection_api/opnfv_testapi/cmd/server.py index 9022b9a..c3d7346 100644 --- a/result_collection_api/opnfv_testapi/cmd/server.py +++ b/result_collection_api/opnfv_testapi/cmd/server.py @@ -49,6 +49,8 @@ CONF = APIConfig().parse(args.config_file) client = motor.MotorClient(CONF.mongo_url) db = client[CONF.mongo_dbname] +swagger.docs(base_url=CONF.swagger_base_url) + def make_app(): return swagger.Application( diff --git a/result_collection_api/opnfv_testapi/common/config.py b/result_collection_api/opnfv_testapi/common/config.py index c444e67..ecab88a 100644 --- a/result_collection_api/opnfv_testapi/common/config.py +++ b/result_collection_api/opnfv_testapi/common/config.py @@ -37,6 +37,7 @@ class APIConfig: self.api_port = None self.api_debug_on = None self._parser = None + self.swagger_base_url = None def _get_parameter(self, section, param): try: @@ -78,6 +79,7 @@ class APIConfig: obj.api_port = obj._get_int_parameter("api", "port") obj.api_debug_on = obj._get_bool_parameter("api", "debug") + obj.swagger_base_url = obj._get_parameter("swagger", "base_url") return obj @@ -85,7 +87,9 @@ class APIConfig: return "mongo_url = %s \n" \ "mongo_dbname = %s \n" \ "api_port = %s \n" \ - "api_debug_on = %s \n" % (self.mongo_url, - self.mongo_dbname, - self.api_port, - self.api_debug_on) + "api_debug_on = %s \n" \ + "swagger_base_url = %s \n" % (self.mongo_url, + self.mongo_dbname, + self.api_port, + self.api_debug_on, + self.swagger_base_url) diff --git a/result_collection_api/opnfv_testapi/tornado_swagger/settings.py b/result_collection_api/opnfv_testapi/tornado_swagger/settings.py index 001d558..88d0d0f 100644 --- a/result_collection_api/opnfv_testapi/tornado_swagger/settings.py +++ b/result_collection_api/opnfv_testapi/tornado_swagger/settings.py @@ -16,7 +16,7 @@ STATIC_PATH = os.path.join(os.path.dirname(os.path.normpath(__file__)), 'static') default_settings = { - 'base_url': '/', + 'base_url': '', 'static_path': STATIC_PATH, 'swagger_prefix': '/swagger', 'api_version': 'v1.0', @@ -26,3 +26,7 @@ default_settings = { } models = [] + + +def basePath(): + return default_settings.get('base_url') diff --git a/result_collection_api/opnfv_testapi/tornado_swagger/views.py b/result_collection_api/opnfv_testapi/tornado_swagger/views.py index 7190c67..2508319 100644 --- a/result_collection_api/opnfv_testapi/tornado_swagger/views.py +++ b/result_collection_api/opnfv_testapi/tornado_swagger/views.py @@ -6,15 +6,14 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -import urlparse -import json import inspect +import json -import tornado.web import tornado.template +import tornado.web from settings import SWAGGER_VERSION, SWAGGER_API_LIST, SWAGGER_API_SPEC -from settings import models +from settings import models, basePath def json_dumps(obj, pretty=False): @@ -30,9 +29,7 @@ class SwaggerUIHandler(tornado.web.RequestHandler): return self.static_path def get(self): - discovery_url = \ - urlparse.urljoin(self.request.full_url(), - self.reverse_url(SWAGGER_API_LIST)) + discovery_url = basePath() + self.reverse_url(SWAGGER_API_LIST) self.render('index.html', discovery_url=discovery_url) @@ -43,11 +40,10 @@ class SwaggerResourcesHandler(tornado.web.RequestHandler): def get(self): self.set_header('content-type', 'application/json') - u = urlparse.urlparse(self.request.full_url()) resources = { 'apiVersion': self.api_version, 'swaggerVersion': SWAGGER_VERSION, - 'basePath': '%s://%s' % (u.scheme, u.netloc), + 'basePath': basePath(), 'produces': ["application/json"], 'description': 'Test Api Spec', 'apis': [{ @@ -70,12 +66,10 @@ class SwaggerApiHandler(tornado.web.RequestHandler): if apis is None: raise tornado.web.HTTPError(404) - base_path = urlparse.urljoin(self.request.full_url(), - self.base_url)[:-1] specs = { 'apiVersion': self.api_version, 'swaggerVersion': SWAGGER_VERSION, - 'basePath': base_path, + 'basePath': basePath(), 'apis': [self.__get_api_spec__(path, spec, operations) for path, spec, operations in apis], 'models': self.__get_models_spec(models)