Merge "Refactoring: DRY in the root API controller"

This commit is contained in:
Zuul 2023-03-23 16:06:45 +00:00 committed by Gerrit Code Review
commit 82d0a598f5
1 changed files with 29 additions and 117 deletions

View File

@ -59,6 +59,27 @@ def max_version():
versions.min_version_string(), versions.max_version_string()) versions.min_version_string(), versions.max_version_string())
def make_controller_links(name):
return [
link.make_link('self', api.request.public_url, name, ''),
link.make_link('bookmark', api.request.public_url, name, '',
bookmark=True)
]
VERSIONED_CONTROLLERS = {
'portgroups': utils.allow_portgroups,
'volume': utils.allow_volume,
'lookup': utils.allow_ramdisk_endpoints,
'heartbeat': utils.allow_ramdisk_endpoints,
'conductors': utils.allow_expose_conductors,
'allocations': utils.allow_allocations,
'events': utils.allow_expose_events,
'deploy_templates': utils.allow_deploy_templates,
'shards': utils.allow_shards_endpoint,
}
def v1(): def v1():
v1 = { v1 = {
'id': "v1", 'id': "v1",
@ -75,124 +96,15 @@ def v1():
'base': 'application/json', 'base': 'application/json',
'type': 'application/vnd.openstack.ironic.v1+json' 'type': 'application/vnd.openstack.ironic.v1+json'
}, },
'chassis': [ 'chassis': make_controller_links('chassis'),
link.make_link('self', api.request.public_url, 'nodes': make_controller_links('nodes'),
'chassis', ''), 'ports': make_controller_links('ports'),
link.make_link('bookmark', 'drivers': make_controller_links('drivers'),
api.request.public_url, 'version': version.default_version(),
'chassis', '',
bookmark=True)
],
'nodes': [
link.make_link('self', api.request.public_url,
'nodes', ''),
link.make_link('bookmark',
api.request.public_url,
'nodes', '',
bookmark=True)
],
'ports': [
link.make_link('self', api.request.public_url,
'ports', ''),
link.make_link('bookmark',
api.request.public_url,
'ports', '',
bookmark=True)
],
'drivers': [
link.make_link('self', api.request.public_url,
'drivers', ''),
link.make_link('bookmark',
api.request.public_url,
'drivers', '',
bookmark=True)
],
'version': version.default_version()
} }
if utils.allow_portgroups(): for link_name, check_func in VERSIONED_CONTROLLERS.items():
v1['portgroups'] = [ if check_func():
link.make_link('self', api.request.public_url, v1[link_name] = make_controller_links(link_name)
'portgroups', ''),
link.make_link('bookmark', api.request.public_url,
'portgroups', '', bookmark=True)
]
if utils.allow_volume():
v1['volume'] = [
link.make_link('self',
api.request.public_url,
'volume', ''),
link.make_link('bookmark',
api.request.public_url,
'volume', '',
bookmark=True)
]
if utils.allow_ramdisk_endpoints():
v1['lookup'] = [
link.make_link('self', api.request.public_url,
'lookup', ''),
link.make_link('bookmark',
api.request.public_url,
'lookup', '',
bookmark=True)
]
v1['heartbeat'] = [
link.make_link('self',
api.request.public_url,
'heartbeat', ''),
link.make_link('bookmark',
api.request.public_url,
'heartbeat', '',
bookmark=True)
]
if utils.allow_expose_conductors():
v1['conductors'] = [
link.make_link('self',
api.request.public_url,
'conductors', ''),
link.make_link('bookmark',
api.request.public_url,
'conductors', '',
bookmark=True)
]
if utils.allow_allocations():
v1['allocations'] = [
link.make_link('self',
api.request.public_url,
'allocations', ''),
link.make_link('bookmark',
api.request.public_url,
'allocations', '',
bookmark=True)
]
if utils.allow_expose_events():
v1['events'] = [
link.make_link('self', api.request.public_url,
'events', ''),
link.make_link('bookmark',
api.request.public_url,
'events', '',
bookmark=True)
]
if utils.allow_deploy_templates():
v1['deploy_templates'] = [
link.make_link('self',
api.request.public_url,
'deploy_templates', ''),
link.make_link('bookmark',
api.request.public_url,
'deploy_templates', '',
bookmark=True)
]
if utils.allow_shards_endpoint():
v1['shards'] = [
link.make_link('self',
api.request.public_url,
'shards', ''),
link.make_link('bookmark',
api.request.public_url,
'shards', '',
bookmark=True)
]
return v1 return v1