summaryrefslogtreecommitdiff
path: root/ironic_python_agent/api/controllers/root.py
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2019-11-19 18:19:31 +0100
committerDmitry Tantsur <dtantsur@protonmail.com>2019-12-04 16:50:47 +0100
commitf1b2df908a0f13b81ecd36a1376e55ce14503b06 (patch)
tree69e7571497f20862a160e185c27a156465475158 /ironic_python_agent/api/controllers/root.py
parent6032643a04cfc6867ad925845ddd2b3f7d99b4e9 (diff)
downloadironic-python-agent-f1b2df908a0f13b81ecd36a1376e55ce14503b06.tar.gz
Replace WSME and Pecan with Werkzeug
WSME is no longer maintained and Pecan is an overkill for our (purely internal) API. This change rewrites the API in Werkzeug (the library underneath Flask). I don't use Flask here since it's also an overkill for API with 4 meaningful endpoints. Change-Id: Ifed45f70869adf00e795202a53a2a53c9c57ef30
Diffstat (limited to 'ironic_python_agent/api/controllers/root.py')
-rw-r--r--ironic_python_agent/api/controllers/root.py97
1 files changed, 0 insertions, 97 deletions
diff --git a/ironic_python_agent/api/controllers/root.py b/ironic_python_agent/api/controllers/root.py
deleted file mode 100644
index c95e2186..00000000
--- a/ironic_python_agent/api/controllers/root.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright 2014 Rackspace, Inc.
-#
-# 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 ironic_lib import metrics_utils
-import pecan
-from pecan import rest
-from wsme import types as wtypes
-import wsmeext.pecan as wsme_pecan
-
-from ironic_python_agent.api.controllers import v1
-from ironic_python_agent.api.controllers.v1 import base
-from ironic_python_agent.api.controllers.v1 import link
-
-
-class Version(base.APIBase):
- """An API version representation."""
-
- id = wtypes.text
- "The ID of the version, also acts as the release number"
-
- links = [link.Link]
- "A Link that point to a specific version of the API"
-
- @classmethod
- def convert(self, id):
- version = Version()
- version.id = id
- version.links = [link.Link.make_link('self', pecan.request.host_url,
- id, '', bookmark=True)]
- return version
-
-
-class Root(base.APIBase):
-
- name = wtypes.text
- "The name of the API"
-
- description = wtypes.text
- "Some information about this API"
-
- versions = [Version]
- "Links to all the versions available in this API"
-
- default_version = Version
- "A link to the default version of the API"
-
- @classmethod
- def convert(self):
- root = Root()
- root.name = 'OpenStack Ironic Python Agent API'
- root.description = ('Ironic Python Agent is a provisioning agent for '
- 'OpenStack Ironic')
- root.versions = [Version.convert('v1')]
- root.default_version = Version.convert('v1')
- return root
-
-
-class RootController(rest.RestController):
-
- _versions = ['v1']
- "All supported API versions"
-
- _default_version = 'v1'
- "The default API version"
-
- v1 = v1.Controller()
-
- @wsme_pecan.wsexpose(Root)
- def get(self):
- # NOTE: The reason why convert() it's being called for every
- # request is because we need to get the host url from
- # the request object to make the links.
- with metrics_utils.get_metrics_logger(__name__).timer('get'):
- return Root.convert()
-
- @pecan.expose()
- def _route(self, args):
- """Overrides the default routing behavior.
-
- It redirects the request to the default version of the ironic API
- if the version number is not specified in the url.
- """
-
- if args[0] and args[0] not in self._versions:
- args = [self._default_version] + args
- return super(RootController, self)._route(args)