示例#1
0
    def __call__(self, env, start_response):
        # Inspect the request for mime type and API version
        env = normalize_accept_header(env)
        env = normalize_path_prefix(env)
        env = normalize_path_suffix(env)
        env['PATH_INFO'] = normalize_starting_slash(env.get('PATH_INFO'))
        env['PATH_INFO'] = normalize_trailing_slash(env['PATH_INFO'])

        # Fall back on defaults, if necessary
        env['KEYSTONE_RESPONSE_ENCODING'] = env.get(
            'KEYSTONE_RESPONSE_ENCODING') or DEFAULT_RESPONSE_ENCODING
        env['HTTP_ACCEPT'] = 'application/' + (
            env.get('KEYSTONE_RESPONSE_ENCODING') or DEFAULT_RESPONSE_ENCODING)

        if 'KEYSTONE_API_VERSION' not in env:
            # Version was not specified in path or headers
            # return multiple choice unless the version controller can handle
            # this request
            if env['PATH_INFO'] not in ['/', '']:
                from keystone.controllers.version import VersionController
                controller = VersionController(options=None)
                response = controller.get_multiple_choice(
                    req=Request(env), file='multiple_choice')
                return response(env, start_response)

        return self.app(env, start_response)
    def __init__(self, options):
        self.options = options
        mapper = routes.Mapper()
        db.configure_backends(options)

        # Token Operations
        auth_controller = AuthController(options)
        mapper.connect("/tokens",
                       controller=auth_controller,
                       action="authenticate",
                       conditions=dict(method=["POST"]))
        mapper.connect("/tokens/{token_id}",
                       controller=auth_controller,
                       action="validate_token",
                       conditions=dict(method=["GET"]))
        mapper.connect("/tokens/{token_id}",
                       controller=auth_controller,
                       action="check_token",
                       conditions=dict(method=["HEAD"]))
        # Do we need this.API doesn't have delete token.
        mapper.connect("/tokens/{token_id}",
                       controller=auth_controller,
                       action="delete_token",
                       conditions=dict(method=["DELETE"]))
        mapper.connect("/tokens/{token_id}/endpoints",
                       controller=auth_controller,
                       action="endpoints",
                       conditions=dict(method=["GET"]))

        # Tenant Operations
        tenant_controller = TenantController(options)
        mapper.connect("/tenants",
                       controller=tenant_controller,
                       action="get_tenants",
                       conditions=dict(method=["GET"]))
        mapper.connect("/tenants/{tenant_id}",
                       controller=tenant_controller,
                       action="get_tenant",
                       conditions=dict(method=["GET"]))
        roles_controller = RolesController(options)
        mapper.connect("/tenants/{tenant_id}/users/{user_id}/roles",
                       controller=roles_controller,
                       action="get_user_roles",
                       conditions=dict(method=["GET"]))
        # User Operations
        user_controller = UserController(options)
        mapper.connect("/users/{user_id}",
                       controller=user_controller,
                       action="get_user",
                       conditions=dict(method=["GET"]))
        mapper.connect("/users/{user_id}/roles",
                       controller=roles_controller,
                       action="get_user_roles",
                       conditions=dict(method=["GET"]))
        # Miscellaneous Operations
        version_controller = VersionController(options)
        mapper.connect("/",
                       controller=version_controller,
                       action="get_version_info",
                       file="admin/version",
                       conditions=dict(method=["GET"]))

        extensions_controller = ExtensionsController(options)
        mapper.connect("/extensions",
                       controller=extensions_controller,
                       action="get_extensions_info",
                       path="content/admin/extensions",
                       conditions=dict(method=["GET"]))

        # Static Files Controller
        static_files_controller = StaticFilesController(options)
        mapper.connect("/identityadminguide.pdf",
                       controller=static_files_controller,
                       action="get_pdf_contract",
                       root="content/admin/",
                       pdf="identityadminguide.pdf",
                       conditions=dict(method=["GET"]))
        mapper.connect("/identity-admin.wadl",
                       controller=static_files_controller,
                       action="get_wadl_contract",
                       root="content/admin/",
                       wadl="identity-admin.wadl",
                       conditions=dict(method=["GET"]))
        mapper.connect("/common.ent",
                       controller=static_files_controller,
                       action="get_wadl_contract",
                       root="content/common/",
                       wadl="common.ent",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xsd/{xsd}",
                       controller=static_files_controller,
                       action="get_xsd_contract",
                       root="content/common/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xsd/atom/{xsd}",
                       controller=static_files_controller,
                       action="get_xsd_atom_contract",
                       root="content/common/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xslt/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       root="content/common/",
                       path="xslt/",
                       mimetype="application/xml",
                       conditions=dict(method=["GET"]))
        mapper.connect("/js/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       root="content/common/",
                       path="js/",
                       mimetype="application/javascript",
                       conditions=dict(method=["GET"]))
        mapper.connect("/style/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       root="content/common/",
                       path="style/",
                       mimetype="application/css",
                       conditions=dict(method=["GET"]))
        mapper.connect("/samples/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       root="content/common/",
                       path="samples/",
                       conditions=dict(method=["GET"]))
        extension.configure_extensions(mapper, options)
        super(AdminApi, self).__init__(mapper)
示例#3
0
    def __init__(self, options):
        self.options = options
        mapper = routes.Mapper()
        db.configure_backends(options)

        # Token Operations
        auth_controller = AuthController(options)
        mapper.connect("/tokens", controller=auth_controller,
                       action="authenticate",
                       conditions=dict(method=["POST"]))
        mapper.connect("/tokens/{token_id}", controller=auth_controller,
                        action="validate_token",
                        conditions=dict(method=["GET"]))
        mapper.connect("/tokens/{token_id}", controller=auth_controller,
                        action="check_token",
                        conditions=dict(method=["HEAD"]))
        mapper.connect("/tokens/{token_id}", controller=auth_controller,
                        action="delete_token",
                        conditions=dict(method=["DELETE"]))
        mapper.connect("/tokens/{token_id}/endpoints",
                        controller=auth_controller,
                        action="endpoints",
                        conditions=dict(method=["GET"]))

        # Tenant Operations
        tenant_controller = TenantController(options)
        mapper.connect("/tenants", controller=tenant_controller,
                    action="create_tenant",
                    conditions=dict(method=["POST"]))
        mapper.connect("/tenants", controller=tenant_controller,
                    action="get_tenants", conditions=dict(method=["GET"]))
        mapper.connect("/tenants/{tenant_id}",
                    controller=tenant_controller,
                    action="update_tenant", conditions=dict(method=["PUT"]))
        mapper.connect("/tenants/{tenant_id}",
                    controller=tenant_controller,
                    action="get_tenant", conditions=dict(method=["GET"]))
        mapper.connect("/tenants/{tenant_id}",
                    controller=tenant_controller,
                    action="delete_tenant", conditions=dict(method=["DELETE"]))

        # User Operations
        user_controller = UserController(options)
        mapper.connect("/users",
                    controller=user_controller,
                    action="create_user",
                    conditions=dict(method=["POST"]))
        mapper.connect("/users",
                    controller=user_controller,
                    action="get_users",
                    conditions=dict(method=["GET"]))
        mapper.connect("/users/{user_id}",
                    controller=user_controller,
                    action="get_user",
                    conditions=dict(method=["GET"]))
        mapper.connect("/users/{user_id}",
                    controller=user_controller,
                    action="update_user",
                    conditions=dict(method=["PUT"]))
        mapper.connect("/users/{user_id}",
                    controller=user_controller,
                    action="delete_user",
                    conditions=dict(method=["DELETE"]))
        mapper.connect("/users/{user_id}/eppn",
                    controller=user_controller,
                    action="set_user_eppn",
                    conditions=dict(method=["PUT"]))
        mapper.connect("/users/{user_id}/password",
                    controller=user_controller,
                    action="set_user_password",
                    conditions=dict(method=["PUT"]))
        mapper.connect("/users/{user_id}/tenant",
                    controller=user_controller,
                    action="update_user_tenant",
                    conditions=dict(method=["PUT"]))
        # Test this, test failed
        mapper.connect("/users/{user_id}/enabled",
                    controller=user_controller,
                    action="set_user_enabled",
                    conditions=dict(method=["PUT"]))
        mapper.connect("/tenants/{tenant_id}/users",
                    controller=user_controller,
                    action="get_tenant_users",
                    conditions=dict(method=["GET"]))

        """
        get token by email
        add by colony.
        """
        # Get token by key Operations
        token_by_controller = TokenByController(options)
        mapper.connect("/token_by/email",
                    controller=token_by_controller,
                    action="get_token_by",
                    conditions=dict(method=["POST"]))
        mapper.connect("/token_by/eppn",
                    controller=token_by_controller,
                    action="get_token_by",
                    conditions=dict(method=["POST"]))

        #EndpointTemplatesControllers and Endpoints
        endpoint_templates_controller = EndpointTemplatesController(options)
        mapper.connect("/endpointTemplates",
            controller=endpoint_templates_controller,
                action="get_endpoint_templates",
                    conditions=dict(method=["GET"]))
        mapper.connect("/endpointTemplates",
            controller=endpoint_templates_controller,
                action="add_endpoint_template",
                    conditions=dict(method=["POST"]))
        mapper.connect("/endpointTemplates/{endpoint_template_id}",
                controller=endpoint_templates_controller,
                    action="get_endpoint_template",
                        conditions=dict(method=["GET"]))
        mapper.connect("/endpointTemplates/{endpoint_template_id}",
                controller=endpoint_templates_controller,
                    action="modify_endpoint_template",
                        conditions=dict(method=["PUT"]))
        mapper.connect("/endpointTemplates/{endpoint_template_id}",
                controller=endpoint_templates_controller,
                    action="delete_endpoint_template",
                        conditions=dict(method=["DELETE"]))
        mapper.connect("/tenants/{tenant_id}/endpoints",
                       controller=endpoint_templates_controller,
                    action="get_endpoints_for_tenant",
                    conditions=dict(method=["GET"]))
        mapper.connect("/tenants/{tenant_id}/endpoints",
                       controller=endpoint_templates_controller,
                     action="add_endpoint_to_tenant",
                     conditions=dict(method=["POST"]))
        mapper.connect(
                "/tenants/{tenant_id}/endpoints/{endpoint_id}",
                controller=endpoint_templates_controller,
                action="remove_endpoint_from_tenant",
                conditions=dict(method=["DELETE"]))

        # Miscellaneous Operations
        version_controller = VersionController(options)
        mapper.connect("/", controller=version_controller,
                    action="get_version_info", file="admin/version",
                    conditions=dict(method=["GET"]))

        extensions_controller = ExtensionsController(options)
        mapper.connect("/extensions",
                        controller=extensions_controller,
                        action="get_extensions_info",
                        path="content/admin/extensions",
                        conditions=dict(method=["GET"]))

        # Static Files Controller
        static_files_controller = StaticFilesController(options)
        mapper.connect("/identityadminguide.pdf",
                    controller=static_files_controller,
                    action="get_pdf_contract",
                    root="content/admin/", pdf="identityadminguide.pdf",
                    conditions=dict(method=["GET"]))
        mapper.connect("/identity-admin.wadl",
                    controller=static_files_controller,
                    action="get_wadl_contract",
                    root="content/admin/", wadl="identity-admin.wadl",
                    conditions=dict(method=["GET"]))
        mapper.connect("/common.ent",
                    controller=static_files_controller,
                    action="get_wadl_contract",
                    root="content/common/", wadl="common.ent",
                    conditions=dict(method=["GET"]))
        mapper.connect("/xsd/{xsd}",
                    controller=static_files_controller,
                    action="get_xsd_contract",
                    root="content/common/",
                    conditions=dict(method=["GET"]))
        mapper.connect("/xsd/atom/{xsd}",
                    controller=static_files_controller,
                    action="get_xsd_atom_contract",
                    root="content/common/",
                    conditions=dict(method=["GET"]))
        mapper.connect("/xslt/{file:.*}",
                    controller=static_files_controller,
                    action="get_static_file",
                    root="content/common/", path="xslt/",
                    mimetype="application/xml",
                    conditions=dict(method=["GET"]))
        mapper.connect("/js/{file:.*}",
                    controller=static_files_controller,
                    action="get_static_file",
                    root="content/common/", path="js/",
                    mimetype="application/javascript",
                    conditions=dict(method=["GET"]))
        mapper.connect("/style/{file:.*}",
                    controller=static_files_controller,
                    action="get_static_file",
                    root="content/common/", path="style/",
                    mimetype="application/css",
                    conditions=dict(method=["GET"]))
        mapper.connect("/samples/{file:.*}",
                    controller=static_files_controller,
                    action="get_static_file",
                    root="content/common/", path="samples/",
                    conditions=dict(method=["GET"]))
        extension.configure_extensions(mapper, options)
        super(AdminApi, self).__init__(mapper)
示例#4
0
    def __init__(self):
        mapper = routes.Mapper()

        # Token Operations
        auth_controller = TokenController()
        mapper.connect("/tokens",
                       controller=auth_controller,
                       action="authenticate",
                       conditions=dict(method=["POST"]))
        # TODO(zns): this should be deprecated
        mapper.connect("/ec2tokens",
                       controller=auth_controller,
                       action="authenticate_ec2",
                       conditions=dict(method=["POST"]))

        tenant_controller = TenantController(True)
        mapper.connect("/tenants",
                       controller=tenant_controller,
                       action="get_tenants",
                       conditions=dict(method=["GET"]))

        # Miscellaneous Operations
        version_controller = VersionController()
        mapper.connect("/",
                       controller=version_controller,
                       action="get_version_info",
                       file="service/version",
                       conditions=dict(method=["GET"]))

        extensions_controller = ExtensionsController(True)
        mapper.connect("/extensions",
                       controller=extensions_controller,
                       action="get_extensions_info",
                       conditions=dict(method=["GET"]))

        # Static Files Controller
        static_files_controller = StaticFilesController()
        mapper.connect("/identitydevguide.pdf",
                       controller=static_files_controller,
                       action="get_pdf_contract",
                       root="content/service/",
                       pdf="identitydevguide.pdf",
                       conditions=dict(method=["GET"]))
        mapper.connect("/identity.wadl",
                       controller=static_files_controller,
                       action="get_wadl_contract",
                       root="content/service/",
                       wadl="identity.wadl",
                       conditions=dict(method=["GET"]))
        mapper.connect("/common.ent",
                       controller=static_files_controller,
                       action="get_wadl_contract",
                       wadl="common.ent",
                       root="content/common/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xslt/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       path="common/xslt/",
                       mimetype="application/xml",
                       conditions=dict(method=["GET"]))
        mapper.connect("/style/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       path="common/style/",
                       mimetype="application/css",
                       conditions=dict(method=["GET"]))
        mapper.connect("/js/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       path="common/js/",
                       mimetype="application/javascript",
                       conditions=dict(method=["GET"]))
        mapper.connect("/samples/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       path="common/samples/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xsd/{xsd:.*}",
                       controller=static_files_controller,
                       action="get_xsd_contract",
                       root="content/common/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xsd/atom/{xsd}",
                       controller=static_files_controller,
                       action="get_xsd_atom_contract",
                       root="content/common/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xsd/atom/{xsd}",
                       controller=static_files_controller,
                       action="get_xsd_atom_contract",
                       root="content/common/",
                       conditions=dict(method=["GET"]))

        super(ServiceApi, self).__init__(mapper)
 def setUp(self):
     self.controller = VersionController({})
示例#6
0
    def __init__(self, options):
        self.options = options
        mapper = routes.Mapper()

        db.configure_backends(options)

        # Token Operations
        auth_controller = AuthController(options)
        mapper.connect("/tokens",
                       controller=auth_controller,
                       action="authenticate",
                       conditions=dict(method=["POST"]))
        mapper.connect("/ec2tokens",
                       controller=auth_controller,
                       action="authenticate_ec2",
                       conditions=dict(method=["POST"]))
        mapper.connect("/s3tokens",
                       controller=auth_controller,
                       action="authenticate_s3",
                       conditions=dict(method=["POST"]))
        tenant_controller = TenantController(options, True)
        mapper.connect("/tenants",
                       controller=tenant_controller,
                       action="get_tenants",
                       conditions=dict(method=["GET"]))
        user_controller = UserController(options)
        mapper.connect("/tenants/{tenant_id}/users",
                       controller=user_controller,
                       action="get_tenant_users",
                       conditions=dict(method=["GET"]))

        # Miscellaneous Operations
        version_controller = VersionController(options)
        mapper.connect("/",
                       controller=version_controller,
                       action="get_version_info",
                       file="service/version",
                       conditions=dict(method=["GET"]))

        extensions_controller = ExtensionsController(options)
        mapper.connect("/extensions",
                       controller=extensions_controller,
                       action="get_extensions_info",
                       path="content/service/extensions",
                       conditions=dict(method=["GET"]))

        # Static Files Controller
        static_files_controller = StaticFilesController(options)
        mapper.connect("/identitydevguide.pdf",
                       controller=static_files_controller,
                       action="get_pdf_contract",
                       root="content/service/",
                       pdf="identitydevguide.pdf",
                       conditions=dict(method=["GET"]))
        mapper.connect("/identity.wadl",
                       controller=static_files_controller,
                       action="get_wadl_contract",
                       root="content/service/",
                       wadl="identity.wadl",
                       conditions=dict(method=["GET"]))
        mapper.connect("/common.ent",
                       controller=static_files_controller,
                       action="get_wadl_contract",
                       wadl="common.ent",
                       root="content/common/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xslt/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       path="common/xslt/",
                       mimetype="application/xml",
                       conditions=dict(method=["GET"]))
        mapper.connect("/style/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       path="common/style/",
                       mimetype="application/css",
                       conditions=dict(method=["GET"]))
        mapper.connect("/js/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       path="common/js/",
                       mimetype="application/javascript",
                       conditions=dict(method=["GET"]))
        mapper.connect("/samples/{file:.*}",
                       controller=static_files_controller,
                       action="get_static_file",
                       path="common/samples/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xsd/{xsd:.*}",
                       controller=static_files_controller,
                       action="get_xsd_contract",
                       root="content/common/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xsd/atom/{xsd}",
                       controller=static_files_controller,
                       action="get_xsd_atom_contract",
                       root="content/common/",
                       conditions=dict(method=["GET"]))
        mapper.connect("/xsd/atom/{xsd}",
                       controller=static_files_controller,
                       action="get_xsd_atom_contract",
                       root="content/common/",
                       conditions=dict(method=["GET"]))

        super(ServiceApi, self).__init__(mapper)