summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYao Lu <lu.yao135@zte.com.cn>2016-12-23 11:39:53 +0800
committerYao Lu <lu.yao135@zte.com.cn>2017-03-03 07:24:04 +0000
commitc1783221873845d072b739c7ebd8d0a75fe00bb9 (patch)
treeb1feebd61bf662b1759c3d3a272884e3803083d5
parentebde2dafb975d047e9739874c9cabe4ccc7df7e8 (diff)
use command escalator version and tox genconfig
Change-Id: I78e15e4224b362c6737786a7f6a7d127b82596ce Signed-off-by: Yao Lu <lu.yao135@zte.com.cn>
-rw-r--r--api/escalator/api/v1/router.py8
-rw-r--r--api/escalator/api/v1/versions.py87
-rw-r--r--api/etc/oslo-config-generator/escalator-api.conf11
-rw-r--r--api/setup.cfg2
-rw-r--r--client/escalatorclient/v1/client.py2
-rw-r--r--client/escalatorclient/v1/shell.py98
-rw-r--r--client/escalatorclient/v1/versions.py80
7 files changed, 106 insertions, 182 deletions
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]
diff --git a/client/escalatorclient/v1/client.py b/client/escalatorclient/v1/client.py
index f74300f..d5bf6bc 100644
--- a/client/escalatorclient/v1/client.py
+++ b/client/escalatorclient/v1/client.py
@@ -33,4 +33,4 @@ class Client(object):
endpoint, version = utils.strip_version(endpoint)
self.version = version or 1.0
self.http_client = http.HTTPClient(endpoint, *args, **kwargs)
- self.node = VersionManager(self.http_client)
+ self.versions = VersionManager(self.http_client)
diff --git a/client/escalatorclient/v1/shell.py b/client/escalatorclient/v1/shell.py
index fbc2459..401ad76 100644
--- a/client/escalatorclient/v1/shell.py
+++ b/client/escalatorclient/v1/shell.py
@@ -17,11 +17,9 @@ from __future__ import print_function
import copy
import functools
-from oslo_utils import encodeutils
from oslo_utils import strutils
import escalatorclient.v1.versions
from escalatorclient.common import utils
-from escalatorclient import exc
_bool_strict = functools.partial(strutils.bool_from_string, strict=True)
@@ -43,96 +41,12 @@ def do_version(dc, args):
fields = dict(filter(lambda x: x[1] is not None, vars(args).items()))
# Filter out values we can't use
- VERSION_PARAMS = escalatorclient.v1.version.VERSION_PARAMS
+ VERSION_PARAMS = escalatorclient.v1.versions.VERSION_PARAMS
fields = dict(filter(lambda x: x[0] in VERSION_PARAMS, fields.items()))
- version = dc.version.version(**fields)
+ version = dc.versions.version(**fields)
_escalator_show(version)
-@utils.arg('id', metavar='<ID>',
- help='Filter version to those that have this id.')
-def do_version_detail(dc, args):
- """Get backend_types of escalator."""
- version = utils.find_resource(dc.versions, args.id)
- _escalator_show(version)
-
-
-@utils.arg('name', metavar='<NAME>',
- help='name of version.')
-@utils.arg('type', metavar='<TYPE>',
- help='version type.eg redhat7.0...')
-@utils.arg('--size', metavar='<SIZE>',
- help='size of the version file.')
-@utils.arg('--checksum', metavar='<CHECKSUM>',
- help='md5 of version file')
-@utils.arg('--version', metavar='<VERSION>',
- help='version number of version file')
-@utils.arg('--description', metavar='<DESCRIPTION>',
- help='description of version file')
-@utils.arg('--status', metavar='<STATUS>',
- help='version file status.default:init')
-def do_version_add(dc, args):
- """Add a version."""
-
- fields = dict(filter(lambda x: x[1] is not None, vars(args).items()))
-
- # Filter out values we can't use
- CREATE_PARAMS = escalatorclient.v1.versions.CREATE_PARAMS
- fields = dict(filter(lambda x: x[0] in CREATE_PARAMS, fields.items()))
-
- version = dc.versions.add(**fields)
- _escalator_show(version)
-
-
-@utils.arg('id', metavar='<ID>',
- help='ID of versions.')
-@utils.arg('--name', metavar='<NAME>',
- help='name of version.')
-@utils.arg('--type', metavar='<TYPE>',
- help='version type.eg redhat7.0...')
-@utils.arg('--size', metavar='<SIZE>',
- help='size of the version file.')
-@utils.arg('--checksum', metavar='<CHECKSUM>',
- help='md5 of version file')
-@utils.arg('--version', metavar='<VERSION>',
- help='version number of version file')
-@utils.arg('--description', metavar='<DESCRIPTION>',
- help='description of version file')
-@utils.arg('--status', metavar='<STATUS>',
- help='version file status.default:init')
-def do_version_update(dc, args):
- """Add a version."""
-
- fields = dict(filter(lambda x: x[1] is not None, vars(args).items()))
-
- # Filter out values we can't use
- CREATE_PARAMS = escalatorclient.v1.versions.CREATE_PARAMS
- fields = dict(filter(lambda x: x[0] in CREATE_PARAMS, fields.items()))
- version_id = fields.get('id', None)
- version = dc.versions.update(version_id, **fields)
- _escalator_show(version)
-
-
-@utils.arg('id', metavar='<ID>', nargs='+',
- help='ID of versions.')
-def do_version_delete(dc, args):
- """Delete specified template(s)."""
- fields = dict(filter(lambda x: x[1] is not None, vars(args).items()))
- versions = fields.get('id', None)
- for version in versions:
- try:
- if args.verbose:
- print('Requesting version delete for %s ...' %
- encodeutils.safe_decode(version), end=' ')
- dc.versions.delete(version)
- if args.verbose:
- print('[Done]')
- except exc.HTTPException as e:
- if args.verbose:
- print('[Fail]')
- print('%s: Unable to delete version %s' % (e, version))
-
-
@utils.arg('--name', metavar='<NAME>',
help='Filter version to those that have this name.')
@utils.arg('--status', metavar='<STATUS>',
@@ -168,11 +82,3 @@ def do_cluster_version_list(dc, args):
'checksum', 'description', 'status', 'VERSION_PATCH']
utils.print_list(versions, columns)
-
-
-@utils.arg('id', metavar='<ID>',
- help='Filter version patch to those that have this id.')
-def do_version_patch_detail(dc, args):
- """Get version_patch of escalator."""
- version = utils.find_resource(dc.version_patchs, args.id)
- _escalator_show(version)
diff --git a/client/escalatorclient/v1/versions.py b/client/escalatorclient/v1/versions.py
index f98a3ed..143c4c6 100644
--- a/client/escalatorclient/v1/versions.py
+++ b/client/escalatorclient/v1/versions.py
@@ -105,23 +105,6 @@ class VersionManager(base.ManagerWithFind):
pass
return meta
- def get(self, version, **kwargs):
- """Get the metadata for a specific version.
-
- :param version: image object or id to look up
- :rtype: :class:`version`
- """
- version_id = base.getid(version)
- resp, body = self.client.get('/v1/versions/%s'
- % urlparse.quote(str(version_id)))
- # meta = self._version_meta_from_headers(resp.headers)
- return_request_id = kwargs.get('return_req_id', None)
- if return_request_id is not None:
- return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
- # return version(self, meta)
- return Version(self, self._format_version_meta_for_user(
- body['version']))
-
def _build_params(self, parameters):
params = {'limit': parameters.get('page_size', DEFAULT_PAGE_SIZE)}
@@ -223,65 +206,6 @@ class VersionManager(base.ManagerWithFind):
params['marker'] = last_version
seen_last_page = 0
- def add(self, **kwargs):
- """Add a version
-
- TODO(bcwaldon): document accepted params
- """
-
- fields = {}
- for field in kwargs:
- if field in CREATE_PARAMS:
- fields[field] = kwargs[field]
- elif field == 'return_req_id':
- continue
- else:
- msg = 'create() got an unexpected keyword argument \'%s\''
- raise TypeError(msg % field)
-
- hdrs = self._version_meta_to_headers(fields)
-
- resp, body = self.client.post('/v1/versions',
- headers=None,
- data=hdrs)
- return_request_id = kwargs.get('return_req_id', None)
- if return_request_id is not None:
- return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
-
- return Version(self, self._format_version_meta_for_user(
- body['version']))
-
- def delete(self, version, **kwargs):
- """Delete an version."""
- url = "/v1/versions/%s" % base.getid(version)
- resp, body = self.client.delete(url)
- return_request_id = kwargs.get('return_req_id', None)
- if return_request_id is not None:
- return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
-
- def update(self, version, **kwargs):
- """Update an version
-
- TODO(bcwaldon): document accepted params
- """
- hdrs = {}
- fields = {}
- for field in kwargs:
- if field in CREATE_PARAMS:
- fields[field] = kwargs[field]
- elif field == 'return_req_id':
- continue
- hdrs.update(self._version_meta_to_headers(fields))
-
- url = '/v1/versions/%s' % base.getid(version)
- resp, body = self.client.put(url, headers=None, data=hdrs)
- return_request_id = kwargs.get('return_req_id', None)
- if return_request_id is not None:
- return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
-
- return Version(self, self._format_version_meta_for_user(
- body['version_meta']))
-
def version(self, **kwargs):
"""Get internal or external version of escalator.
@@ -295,7 +219,7 @@ class VersionManager(base.ManagerWithFind):
msg = 'install() got an unexpected keyword argument \'%s\''
raise TypeError(msg % field)
- url = '/v1/version'
- hdrs = self._restore_meta_to_headers(fields)
+ url = '/v1/versions'
+ hdrs = self._version_meta_to_headers(fields)
resp, body = self.client.post(url, headers=None, data=hdrs)
return Version(self, body)