¡@

Home 

OpenStack Study: routers.py

OpenStack Index

**** CubicPower OpenStack Study ****

# 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.

from keystone.common import wsgi

from keystone.contrib import federation

from keystone.contrib.federation import controllers

**** CubicPower OpenStack Study ****

class FederationExtension(wsgi.ExtensionRouter):

"""API Endpoints for the Federation extension.

The API looks like::

PUT /OS-FEDERATION/identity_providers/$identity_provider

GET /OS-FEDERATION/identity_providers

GET /OS-FEDERATION/identity_providers/$identity_provider

DELETE /OS-FEDERATION/identity_providers/$identity_provider

PATCH /OS-FEDERATION/identity_providers/$identity_provider

PUT /OS-FEDERATION/identity_providers/

$identity_provider/protocols/$protocol

GET /OS-FEDERATION/identity_providers/

$identity_provider/protocols

GET /OS-FEDERATION/identity_providers/

$identity_provider/protocols/$protocol

PATCH /OS-FEDERATION/identity_providers/

$identity_provider/protocols/$protocol

DELETE /OS-FEDERATION/identity_providers/

$identity_provider/protocols/$protocol

PUT /OS-FEDERATION/mappings

GET /OS-FEDERATION/mappings

PATCH /OS-FEDERATION/mappings/$mapping_id

GET /OS-FEDERATION/mappings/$mapping_id

DELETE /OS-FEDERATION/mappings/$mapping_id

GET /OS-FEDERATION/projects

GET /OS-FEDERATION/domains

GET /OS-FEDERATION/identity_providers/$identity_provider/

protocols/$protocol/auth

POST /OS-FEDERATION/identity_providers/$identity_provider/

protocols/$protocol/auth

"""

**** CubicPower OpenStack Study ****

    def _construct_url(self, suffix):

        return "/OS-FEDERATION/%s" % suffix

**** CubicPower OpenStack Study ****

    def add_routes(self, mapper):

        # This is needed for dependency injection

        # it loads the Federation driver which registers it as a dependency.

        federation.Manager()

        auth_controller = controllers.Auth()

        idp_controller = controllers.IdentityProvider()

        protocol_controller = controllers.FederationProtocol()

        mapping_controller = controllers.MappingController()

        project_controller = controllers.ProjectV3()

        domain_controller = controllers.DomainV3()

        # Identity Provider CRUD operations

        mapper.connect(

            self._construct_url('identity_providers/{idp_id}'),

            controller=idp_controller,

            action='create_identity_provider',

            conditions=dict(method=['PUT']))

        mapper.connect(

            self._construct_url('identity_providers'),

            controller=idp_controller,

            action='list_identity_providers',

            conditions=dict(method=['GET']))

        mapper.connect(

            self._construct_url('identity_providers/{idp_id}'),

            controller=idp_controller,

            action='get_identity_provider',

            conditions=dict(method=['GET']))

        mapper.connect(

            self._construct_url('identity_providers/{idp_id}'),

            controller=idp_controller,

            action='delete_identity_provider',

            conditions=dict(method=['DELETE']))

        mapper.connect(

            self._construct_url('identity_providers/{idp_id}'),

            controller=idp_controller,

            action='update_identity_provider',

            conditions=dict(method=['PATCH']))

        # Protocol CRUD operations

        mapper.connect(

            self._construct_url('identity_providers/{idp_id}/'

                                'protocols/{protocol_id}'),

            controller=protocol_controller,

            action='create_protocol',

            conditions=dict(method=['PUT']))

        mapper.connect(

            self._construct_url('identity_providers/{idp_id}/'

                                'protocols/{protocol_id}'),

            controller=protocol_controller,

            action='update_protocol',

            conditions=dict(method=['PATCH']))

        mapper.connect(

            self._construct_url('identity_providers/{idp_id}/'

                                'protocols/{protocol_id}'),

            controller=protocol_controller,

            action='get_protocol',

            conditions=dict(method=['GET']))

        mapper.connect(

            self._construct_url('identity_providers/{idp_id}/'

                                'protocols'),

            controller=protocol_controller,

            action='list_protocols',

            conditions=dict(method=['GET']))

        mapper.connect(

            self._construct_url('identity_providers/{idp_id}/'

                                'protocols/{protocol_id}'),

            controller=protocol_controller,

            action='delete_protocol',

            conditions=dict(method=['DELETE']))

        # Mapping CRUD operations

        mapper.connect(

            self._construct_url('mappings/{mapping_id}'),

            controller=mapping_controller,

            action='create_mapping',

            conditions=dict(method=['PUT']))

        mapper.connect(

            self._construct_url('mappings'),

            controller=mapping_controller,

            action='list_mappings',

            conditions=dict(method=['GET']))

        mapper.connect(

            self._construct_url('mappings/{mapping_id}'),

            controller=mapping_controller,

            action='get_mapping',

            conditions=dict(method=['GET']))

        mapper.connect(

            self._construct_url('mappings/{mapping_id}'),

            controller=mapping_controller,

            action='delete_mapping',

            conditions=dict(method=['DELETE']))

        mapper.connect(

            self._construct_url('mappings/{mapping_id}'),

            controller=mapping_controller,

            action='update_mapping',

            conditions=dict(method=['PATCH']))

        mapper.connect(

            self._construct_url('domains'),

            controller=domain_controller,

            action='list_domains_for_groups',

            conditions=dict(method=['GET']))

        mapper.connect(

            self._construct_url('projects'),

            controller=project_controller,

            action='list_projects_for_groups',

            conditions=dict(method=['GET']))

        mapper.connect(

            self._construct_url('identity_providers/'

                                '{identity_provider}/protocols/'

                                '{protocol}/auth'),

            controller=auth_controller,

            action='federated_authentication',

            conditions=dict(method=['GET', 'POST']))