(feat): Add versions controller for UCP integration compliance,

This PS adds the versions controller to Armada for UCP integration
compliance. It's responsible for returning information about
each of Armada's API versions.

Change-Id: I0ad5f0578ab97a50b30e8322647347aa1ed962dd
This commit is contained in:
Felipe Monteiro 2017-12-14 15:59:14 +00:00
parent 4b3d843f04
commit 1b6cee2d06
3 changed files with 69 additions and 0 deletions

View File

@ -0,0 +1,36 @@
# Copyright 2017 AT&T Intellectual Property. All other 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 json
import falcon
from armada import api
class Versions(api.BaseResource):
"""Versions resource
Returns the list of supported versions of the Armada API.
"""
def on_get(self, req, resp):
resp.status = falcon.HTTP_200
resp.body = json.dumps({
'v1.0': {
'path': '/api/v1.0',
'status': 'stable'
}
})
resp.content_type = 'application/json'

View File

@ -28,6 +28,7 @@ from armada.api.controller.health import Health
from armada.api.controller.tiller import Release
from armada.api.controller.tiller import Status
from armada.api.controller.validation import Validate
from armada.api.controller.versions import Versions
conf.set_app_default_configs()
CONF = cfg.CONF
@ -64,6 +65,7 @@ def create(enable_middleware=CONF.middleware):
for route, service in url_routes_v1:
api.add_route("/api/v1.0/{}".format(route), service)
api.add_route('/versions', Versions())
# Initialize policy config options.
policy.Enforcer(CONF)

View File

@ -0,0 +1,31 @@
# Copyright 2017 AT&T Intellectual Property. All other 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.
from armada.tests.unit.api import base
class VersionsControllerTest(base.BaseControllerTest):
def test_list_versions(self):
"""
Validate that /api/v1.0/health returns 204.
"""
result = self.app.simulate_get('/versions')
expected = {
'v1.0': {
'path': '/api/v1.0',
'status': 'stable'
}
}
self.assertDictEqual(expected, result.json)