diff options
Diffstat (limited to 'keystone-moon/keystone/common/json_home.py')
-rw-r--r-- | keystone-moon/keystone/common/json_home.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/keystone-moon/keystone/common/json_home.py b/keystone-moon/keystone/common/json_home.py new file mode 100644 index 00000000..215d596a --- /dev/null +++ b/keystone-moon/keystone/common/json_home.py @@ -0,0 +1,76 @@ +# Copyright 2014 IBM Corp. +# +# 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 six + + +def build_v3_resource_relation(resource_name): + return ('http://docs.openstack.org/api/openstack-identity/3/rel/%s' % + resource_name) + + +def build_v3_extension_resource_relation(extension_name, extension_version, + resource_name): + return ( + 'http://docs.openstack.org/api/openstack-identity/3/ext/%s/%s/rel/%s' % + (extension_name, extension_version, resource_name)) + + +def build_v3_parameter_relation(parameter_name): + return ('http://docs.openstack.org/api/openstack-identity/3/param/%s' % + parameter_name) + + +def build_v3_extension_parameter_relation(extension_name, extension_version, + parameter_name): + return ( + 'http://docs.openstack.org/api/openstack-identity/3/ext/%s/%s/param/' + '%s' % (extension_name, extension_version, parameter_name)) + + +class Parameters(object): + """Relationships for Common parameters.""" + + DOMAIN_ID = build_v3_parameter_relation('domain_id') + ENDPOINT_ID = build_v3_parameter_relation('endpoint_id') + GROUP_ID = build_v3_parameter_relation('group_id') + POLICY_ID = build_v3_parameter_relation('policy_id') + PROJECT_ID = build_v3_parameter_relation('project_id') + REGION_ID = build_v3_parameter_relation('region_id') + ROLE_ID = build_v3_parameter_relation('role_id') + SERVICE_ID = build_v3_parameter_relation('service_id') + USER_ID = build_v3_parameter_relation('user_id') + + +class Status(object): + """Status values supported.""" + + DEPRECATED = 'deprecated' + EXPERIMENTAL = 'experimental' + STABLE = 'stable' + + @classmethod + def is_supported(cls, status): + return status in [cls.DEPRECATED, cls.EXPERIMENTAL, cls.STABLE] + + +def translate_urls(json_home, new_prefix): + """Given a JSON Home document, sticks new_prefix on each of the urls.""" + + for dummy_rel, resource in six.iteritems(json_home['resources']): + if 'href' in resource: + resource['href'] = new_prefix + resource['href'] + elif 'href-template' in resource: + resource['href-template'] = new_prefix + resource['href-template'] |