Get the root version and v1 REST API working

HTTP GET /    - returns version information
HTTP GET /v1  - redirects to /v1/
HTTP GET /v1/ - bays, pods, services, containers URI

Change-Id: I94d29ec0511853795363dfc8d4ac5d61fe2753cc
This commit is contained in:
Davanum Srinivas 2014-11-25 09:56:00 -05:00 committed by Davanum Srinivas (dims)
parent 5036e84c5a
commit a1343111aa
2 changed files with 29 additions and 2 deletions

View File

@ -48,7 +48,8 @@ class RootController(object):
@wsme_pecan.wsexpose([Version])
def index(self):
host_url = '%s/%s' % (pecan.request.host_url, 'v1')
Version(id='v1.0',
v1 = Version(id='v1.0',
status='CURRENT',
link=common_types.Link(target_name='v1',
href=host_url))
return [v1]

View File

@ -15,6 +15,32 @@ from magnum import tests
class TestRootController(tests.FunctionalTest):
def test_version(self):
expected = [{'status': 'CURRENT',
'link': {'href': 'http://localhost/v1',
'target_name': 'v1'},
'id': 'v1.0'}]
response = self.app.get('/')
self.assertEqual(expected, response.json)
def test_v1_controller_redirect(self):
response = self.app.get('/v1')
self.assertEqual(302, response.status_int)
self.assertEqual('http://localhost/v1/',
response.headers['Location'])
def test_v1_controller(self):
expected = {'containers_uri': 'http://localhost/v1/containers',
'name': 'magnum',
'services_uri': 'http://localhost/v1/services',
'type': 'platform',
'uri': 'http://localhost/v1',
'bays_uri': 'http://localhost/v1/bays',
'description': 'magnum native implementation',
'pods_uri': 'http://localhost/v1/pods'}
response = self.app.get('/v1/')
self.assertEqual(expected, response.json)
def test_get_not_found(self):
response = self.app.get('/a/bogus/url', expect_errors=True)
assert response.status_int == 404