66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
# -*- encoding: utf-8 -*-
|
|
#
|
|
# Copyright © 2012 New Dream Network, LLC (DreamHost)
|
|
#
|
|
# 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 pecan
|
|
|
|
from ironic.api.controllers import v1
|
|
from ironic.api.controllers import version
|
|
from ironic.api import method
|
|
|
|
|
|
V1 = v1.Controller()
|
|
|
|
|
|
def root():
|
|
return {
|
|
'name': "OpenStack Ironic API",
|
|
'description': ("Ironic is an OpenStack project which aims to "
|
|
"provision baremetal machines."),
|
|
'default_version': version.default_version(),
|
|
'versions': version.all_versions()
|
|
}
|
|
|
|
|
|
class RootController(object):
|
|
|
|
@method.expose()
|
|
def index(self, *args):
|
|
if args:
|
|
pecan.abort(404)
|
|
return root()
|
|
|
|
@pecan.expose()
|
|
def _lookup(self, primary_key, *remainder):
|
|
"""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.
|
|
"""
|
|
|
|
# support paths which are missing the first version element
|
|
if primary_key and primary_key != version.ID_VERSION1:
|
|
remainder = [primary_key] + list(remainder)
|
|
|
|
# remove any trailing /
|
|
if remainder and not remainder[-1]:
|
|
remainder = remainder[:-1]
|
|
|
|
# but ensure /v1 goes to /v1/
|
|
if not remainder:
|
|
remainder = ['']
|
|
|
|
return V1, remainder
|