~ubuntu-cloud-archive/ubuntu/precise/keystone/folsom

« back to all changes in this revision

Viewing changes to keystone/identity/core.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-06-22 12:27:50 UTC
  • mfrom: (1.1.19)
  • Revision ID: package-import@ubuntu.com-20120622122750-30ryd5s7r463zo0d
Tags: 2012.2~f2~20120622.2353-0ubuntu1
New upstream release. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Main entry point into the Identity service."""
18
18
 
19
 
import uuid
20
19
import urllib
21
20
import urlparse
 
21
import uuid
22
22
 
 
23
from keystone.common import logging
 
24
from keystone.common import manager
 
25
from keystone.common import wsgi
23
26
from keystone import config
24
27
from keystone import exception
25
28
from keystone import policy
26
29
from keystone import token
27
 
from keystone.common import logging
28
 
from keystone.common import manager
29
 
from keystone.common import wsgi
30
30
 
31
31
 
32
32
CONF = config.CONF
202
202
        mapper.connect('/tenants',
203
203
                       controller=tenant_controller,
204
204
                       action='get_tenants_for_token',
205
 
                       conditions=dict(methods=['GET']))
 
205
                       conditions=dict(method=['GET']))
206
206
 
207
207
 
208
208
class AdminRouter(wsgi.ComposableRouter):
271
271
 
272
272
        user_ref = token_ref['user']
273
273
        tenant_ids = self.identity_api.get_tenants_for_user(
274
 
                context, user_ref['id'])
 
274
            context, user_ref['id'])
275
275
        tenant_refs = []
276
276
        for tenant_id in tenant_ids:
277
277
            tenant_refs.append(self.identity_api.get_tenant(
278
 
                    context=context,
279
 
                    tenant_id=tenant_id))
 
278
                context=context,
 
279
                tenant_id=tenant_id))
280
280
        params = {
281
281
            'limit': context['query_string'].get('limit'),
282
282
            'marker': context['query_string'].get('marker'),
307
307
        tenant_ref['id'] = tenant_id
308
308
 
309
309
        tenant = self.identity_api.create_tenant(
310
 
                context, tenant_id, tenant_ref)
 
310
            context, tenant_id, tenant_ref)
311
311
        return {'tenant': tenant}
312
312
 
313
313
    def update_tenant(self, context, tenant_id, tenant):
316
316
            raise exception.TenantNotFound(tenant_id=tenant_id)
317
317
 
318
318
        tenant_ref = self.identity_api.update_tenant(
319
 
                context, tenant_id, tenant)
 
319
            context, tenant_id, tenant)
320
320
        return {'tenant': tenant_ref}
321
321
 
322
322
    def delete_tenant(self, context, tenant_id, **kw):
406
406
        user_ref = user.copy()
407
407
        user_ref['id'] = user_id
408
408
        new_user_ref = self.identity_api.create_user(
409
 
                context, user_id, user_ref)
 
409
            context, user_id, user_ref)
410
410
        if tenant_id:
411
411
            self.identity_api.add_user_to_tenant(context, tenant_id, user_id)
412
412
        return {'user': new_user_ref}
420
420
        user_ref = self.identity_api.update_user(context, user_id, user)
421
421
 
422
422
        # If the password was changed or the user was disabled we clear tokens
423
 
        if user.get('password') or user.get('enabled', True) == False:
 
423
        if user.get('password') or not user.get('enabled', True):
424
424
            try:
425
425
                for token_id in self.token_api.list_tokens(context, user_id):
426
426
                    self.token_api.delete_token(context, token_id)
467
467
        not implementing them in hopes that the idea will die off.
468
468
 
469
469
        """
 
470
        self.assert_admin(context)
470
471
        if tenant_id is None:
471
472
            raise exception.NotImplemented(message='User roles not supported: '
472
473
                                                   'tenant ID required')
479
480
            raise exception.TenantNotFound(tenant_id=tenant_id)
480
481
 
481
482
        roles = self.identity_api.get_roles_for_user_and_tenant(
482
 
                context, user_id, tenant_id)
 
483
            context, user_id, tenant_id)
483
484
        return {'roles': [self.identity_api.get_role(context, x)
484
485
                          for x in roles]}
485
486
 
537
538
        # a user also adds them to a tenant
538
539
        self.identity_api.add_user_to_tenant(context, tenant_id, user_id)
539
540
        self.identity_api.add_role_to_user_and_tenant(
540
 
                context, user_id, tenant_id, role_id)
 
541
            context, user_id, tenant_id, role_id)
541
542
        role_ref = self.identity_api.get_role(context, role_id)
542
543
        return {'role': role_ref}
543
544
 
562
563
        # This still has the weird legacy semantics that adding a role to
563
564
        # a user also adds them to a tenant, so we must follow up on that
564
565
        self.identity_api.remove_role_from_user_and_tenant(
565
 
                context, user_id, tenant_id, role_id)
 
566
            context, user_id, tenant_id, role_id)
566
567
        roles = self.identity_api.get_roles_for_user_and_tenant(
567
 
                context, user_id, tenant_id)
 
568
            context, user_id, tenant_id)
568
569
        if not roles:
569
570
            self.identity_api.remove_user_from_tenant(
570
 
                    context, tenant_id, user_id)
 
571
                context, tenant_id, user_id)
571
572
        return
572
573
 
573
574
    # COMPAT(diablo): CRUD extension
587
588
        o = []
588
589
        for tenant_id in tenant_ids:
589
590
            role_ids = self.identity_api.get_roles_for_user_and_tenant(
590
 
                    context, user_id, tenant_id)
 
591
                context, user_id, tenant_id)
591
592
            for role_id in role_ids:
592
593
                ref = {'roleId': role_id,
593
594
                       'tenantId': tenant_id,
610
611
        role_id = role.get('roleId')
611
612
        self.identity_api.add_user_to_tenant(context, tenant_id, user_id)
612
613
        self.identity_api.add_role_to_user_and_tenant(
613
 
                context, user_id, tenant_id, role_id)
 
614
            context, user_id, tenant_id, role_id)
614
615
        role_ref = self.identity_api.get_role(context, role_id)
615
616
        return {'role': role_ref}
616
617
 
632
633
        tenant_id = role_ref_ref.get('tenantId')[0]
633
634
        role_id = role_ref_ref.get('roleId')[0]
634
635
        self.identity_api.remove_role_from_user_and_tenant(
635
 
                context, user_id, tenant_id, role_id)
 
636
            context, user_id, tenant_id, role_id)
636
637
        roles = self.identity_api.get_roles_for_user_and_tenant(
637
 
                context, user_id, tenant_id)
 
638
            context, user_id, tenant_id)
638
639
        if not roles:
639
640
            self.identity_api.remove_user_from_tenant(
640
 
                    context, tenant_id, user_id)
 
641
                context, tenant_id, user_id)