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

This commit is contained in:
Felipe Monteiro 2017-12-26 21:33:38 -05:00 committed by Gerrit Code Review
commit f3dd5d42bd
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)