From c1783221873845d072b739c7ebd8d0a75fe00bb9 Mon Sep 17 00:00:00 2001 From: Yao Lu Date: Fri, 23 Dec 2016 11:39:53 +0800 Subject: use command escalator version and tox genconfig Change-Id: I78e15e4224b362c6737786a7f6a7d127b82596ce Signed-off-by: Yao Lu --- api/escalator/api/v1/router.py | 8 +++ api/escalator/api/v1/versions.py | 87 ++++++++++++++++++++++++ api/etc/oslo-config-generator/escalator-api.conf | 11 ++- api/setup.cfg | 2 +- 4 files changed, 101 insertions(+), 7 deletions(-) create mode 100644 api/escalator/api/v1/versions.py (limited to 'api') diff --git a/api/escalator/api/v1/router.py b/api/escalator/api/v1/router.py index 54b09c4..e1709ca 100644 --- a/api/escalator/api/v1/router.py +++ b/api/escalator/api/v1/router.py @@ -13,6 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. from escalator.common import wsgi +from escalator.api.v1 import versions class API(wsgi.Router): @@ -22,4 +23,11 @@ class API(wsgi.Router): def __init__(self, mapper): wsgi.Resource(wsgi.RejectMethodController()) + versions_resource = versions.create_resource() + + mapper.connect("/versions", + controller=versions_resource, + action='version', + conditions={'method': ['POST']}) + super(API, self).__init__(mapper) diff --git a/api/escalator/api/v1/versions.py b/api/escalator/api/v1/versions.py new file mode 100644 index 0000000..a026dc1 --- /dev/null +++ b/api/escalator/api/v1/versions.py @@ -0,0 +1,87 @@ +# Copyright 2013 OpenStack Foundation +# All Rights Reserved. +# +# 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. + +""" +/hosts endpoint for Escalator v1 API +""" +from oslo_log import log as logging +from escalator import i18n +from escalator import notifier +from escalator.common import utils +from escalator.common import wsgi +from escalator.version import version_info + + +LOG = logging.getLogger(__name__) +_ = i18n._ +_LE = i18n._LE +_LI = i18n._LI +_LW = i18n._LW + + +class Controller(): + """ + WSGI controller for hosts resource in Escalator v1 API + + """ + def __init__(self): + self.notifier = notifier.Notifier() + + @utils.mutating + def version(self, req, version): + """ + Get version of esclator. + :param req: The WSGI/Webob Request object + """ + if version.get('type') == 'pbr': + return {"escalator_version": + version_info.version_string_with_vcs()} + else: + # reserved for external version + return {"escalator_version": '1.0.0-1.1.0'} + + +class VersionDeserializer(wsgi.JSONRequestDeserializer): + """Handles deserialization of specific controller method requests.""" + + def _deserialize(self, request): + result = {} + result['file_meta'] = utils.get_dict_meta(request) + return result + + def version(self, request): + result = {} + result['version'] = utils.get_dict_meta(request) + return result + + +class VersionSerializer(wsgi.JSONResponseSerializer): + """Handles serialization of specific controller method responses.""" + + def __init__(self): + self.notifier = notifier.Notifier() + + def version(self, response, result): + response.status = 201 + response.headers['Content-Type'] = 'application/json' + response.body = self.to_json(result) + return response + + +def create_resource(): + """Version resource factory method""" + deserializer = VersionDeserializer() + serializer = VersionSerializer() + return wsgi.Resource(Controller(), deserializer, serializer) diff --git a/api/etc/oslo-config-generator/escalator-api.conf b/api/etc/oslo-config-generator/escalator-api.conf index 7f3bd46..0a42a8a 100644 --- a/api/etc/oslo-config-generator/escalator-api.conf +++ b/api/etc/oslo-config-generator/escalator-api.conf @@ -1,10 +1,9 @@ [DEFAULT] output_file = etc/escalator-api.conf.sample namespace = escalator.api -namespace = oslo_concurrency -namespace = oslo_messaging -namespace = oslo_db -namespace = oslo_db.concurrency -namespace = oslo_policy +namespace = oslo.concurrency +namespace = oslo.db +namespace = oslo.db.concurrency +namespace = oslo.policy namespace = keystoneclient.middleware.auth_token -namespace = oslo_log +namespace = oslo.log diff --git a/api/setup.cfg b/api/setup.cfg index f568387..21c80a2 100644 --- a/api/setup.cfg +++ b/api/setup.cfg @@ -27,7 +27,7 @@ setup-hooks = [entry_points] console_scripts = escalator-api = escalator.cmd.api:main -oslo_config.opts = +oslo.config.opts = escalator.api = escalator.opts:list_api_opts [build_sphinx] -- cgit 1.2.3-korg