diff options
author | Jing Sun <sun.jing22@zte.com.cn> | 2016-11-21 15:19:56 +0800 |
---|---|---|
committer | Zhou Ya <zhou.ya@zte.com.cn> | 2016-11-28 15:43:12 +0800 |
commit | 240007fb0b972692ce239d601654c4d294ff46a2 (patch) | |
tree | 806ce4410f85c2e8783d3792149b520dc7701dc7 /api/escalator/api/versions.py | |
parent | 7db4ee4e743d8ec55a4552560427c0ff37ec6de5 (diff) |
add escalator frame
JIRA:ESCALATOR-35
This patch will support escalator service,and there is not real command can use.
With this code, you can test with '/usr/bin/escalator-api' from command line.When
service is up, you can use "curl http://127.0.0.1:19393" for verify the service.
Change-Id: I5154328adf82ec70acb6e0ce12ef4b1701f7b710
Signed-off-by: Jing Sun <sun.jing22@zte.com.cn>
Diffstat (limited to 'api/escalator/api/versions.py')
-rw-r--r-- | api/escalator/api/versions.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/api/escalator/api/versions.py b/api/escalator/api/versions.py new file mode 100644 index 0000000..751fc76 --- /dev/null +++ b/api/escalator/api/versions.py @@ -0,0 +1,78 @@ +# Copyright 2012 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. + +import httplib + +from oslo_serialization import jsonutils +from oslo_config import cfg +import webob.dec + +from escalator.common import wsgi +from escalator import i18n + +_ = i18n._ + +versions_opts = [ + cfg.StrOpt('public_endpoint', default=None, + help=_('Public url to use for versions endpoint. The default ' + 'is None, which will use the request\'s host_url ' + 'attribute to populate the URL base. If Escalator is ' + 'operating behind a proxy, you will want to change ' + 'this to represent the proxy\'s URL.')), +] + +CONF = cfg.CONF +CONF.register_opts(versions_opts) + + +class Controller(object): + + """A wsgi controller that reports which API versions are supported.""" + + def index(self, req): + """Respond to a request for all OpenStack API versions.""" + def build_version_object(version, path, status): + url = CONF.public_endpoint or req.host_url + return { + 'id': 'v%s' % version, + 'status': status, + 'links': [ + { + 'rel': 'self', + 'href': '%s/%s/' % (url, path), + }, + ], + } + + version_objs = [] + if CONF.enable_v1_api: + version_objs.extend([ + build_version_object(1.1, 'v1', 'SUPPORTED'), + build_version_object(1.0, 'v1', 'SUPPORTED'), + ]) + + response = webob.Response(request=req, + status=httplib.MULTIPLE_CHOICES, + content_type='application/json') + response.body = jsonutils.dumps(dict(versions=version_objs)) + return response + + @webob.dec.wsgify(RequestClass=wsgi.Request) + def __call__(self, req): + return self.index(req) + + +def create_resource(conf): + return wsgi.Resource(Controller()) |