15
15
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16
16
# License for the specific language governing permissions and limitations
17
17
# under the License.
19
Root WSGI middleware for all API controllers.
23
:osapi_subdomain: subdomain running the OpenStack API (default: api)
24
:ec2api_subdomain: subdomain running the EC2 API (default: ec2)
31
from nova import flags
32
from nova import utils
34
from nova.api import cloudpipe
35
from nova.api import ec2
36
from nova.api import openstack
37
from nova.api.ec2 import metadatarequesthandler
40
flags.DEFINE_string('osapi_subdomain', 'api',
41
'subdomain running the OpenStack API')
42
flags.DEFINE_string('ec2api_subdomain', 'ec2',
43
'subdomain running the EC2 API')
47
class API(wsgi.Router):
48
"""Routes top-level requests to the appropriate controller."""
50
def __init__(self, default_api):
51
osapi_subdomain = {'sub_domain': [FLAGS.osapi_subdomain]}
52
ec2api_subdomain = {'sub_domain': [FLAGS.ec2api_subdomain]}
53
if default_api == 'os':
55
elif default_api == 'ec2':
57
mapper = routes.Mapper()
58
mapper.sub_domains = True
60
mapper.connect("/", controller=self.osapi_versions,
61
conditions=osapi_subdomain)
62
mapper.connect("/v1.0/{path_info:.*}", controller=openstack.API(),
63
conditions=osapi_subdomain)
65
mapper.connect("/", controller=self.ec2api_versions,
66
conditions=ec2api_subdomain)
67
mapper.connect("/services/{path_info:.*}", controller=ec2.API(),
68
conditions=ec2api_subdomain)
69
mrh = metadatarequesthandler.MetadataRequestHandler()
80
mapper.connect('%s/{path_info:.*}' % s, controller=mrh,
81
conditions=ec2api_subdomain)
83
mapper.connect("/cloudpipe/{path_info:.*}", controller=cloudpipe.API())
84
super(API, self).__init__(mapper)
87
def osapi_versions(self, req):
88
"""Respond to a request for all OpenStack API versions."""
91
dict(status="CURRENT", id="v1.0")]}
94
"attributes": dict(version=["status", "id"])}}
95
return wsgi.Serializer(req.environ, metadata).to_content_type(response)
98
def ec2api_versions(self, req):
99
"""Respond to a request for all EC2 versions."""
100
# available api versions
112
return ''.join('%s\n' % v for v in versions)
19
"""No-op __init__ for directory full of api goodies."""