diff options
| author | Adipudi Praveena <padipudi@padipudi.(none)> | 2011-05-11 16:43:59 +0530 |
|---|---|---|
| committer | Adipudi Praveena <padipudi@padipudi.(none)> | 2011-05-11 16:43:59 +0530 |
| commit | fe3f343572b55b95ff456eb11dd3211ade8a285b (patch) | |
| tree | e199437f9486725969ac129d53a6bf112527dd7d | |
| parent | a8381d77fd8ba4fece06a51b2d278f11c6a28157 (diff) | |
Modified and commented the code
| -rwxr-xr-x | bin/keystone | 2 | ||||
| -rw-r--r-- | keystone/auth_protocols/auth_basic.py | 8 | ||||
| -rw-r--r-- | keystone/common/config.py | 2 | ||||
| -rw-r--r-- | keystone/db/sqlalchemy/api.py | 250 | ||||
| -rw-r--r-- | keystone/db/sqlalchemy/session.py | 8 | ||||
| -rw-r--r-- | keystone/logic/types/atom.py | 16 | ||||
| -rw-r--r-- | keystone/logic/types/fault.py | 14 | ||||
| -rw-r--r-- | keystone/logic/types/tenant.py | 30 | ||||
| -rw-r--r-- | keystone/logic/types/user.py | 104 | ||||
| -rwxr-xr-x | keystone/server.py | 47 | ||||
| -rwxr-xr-x | keystone/version.py | 6 |
11 files changed, 240 insertions, 247 deletions
diff --git a/bin/keystone b/bin/keystone index 6407f8a0..895776b6 100755 --- a/bin/keystone +++ b/bin/keystone @@ -186,7 +186,7 @@ if __name__ == '__main__': sys.exit(msg) if command == 'start': - do_start(server,options, args) + do_start(server, options, args) if command == 'stop': do_stop(server, options, args) diff --git a/keystone/auth_protocols/auth_basic.py b/keystone/auth_protocols/auth_basic.py index 17f2261a..a7c317df 100644 --- a/keystone/auth_protocols/auth_basic.py +++ b/keystone/auth_protocols/auth_basic.py @@ -94,8 +94,8 @@ class AuthProtocol(object): # return 401 indicating we need Basic Auth credentials. return HTTPUnauthorized("Authentication required", [('WWW-Authenticate', - 'Basic realm="Use guest/guest"')] - )(env, start_response) + 'Basic realm="Use guest/guest"')])\ + (env, start_response) else: # Claims were provided - validate them import base64 @@ -108,8 +108,8 @@ class AuthProtocol(object): # Reject request (or ask for valid claims) return HTTPUnauthorized("Authentication required", [('WWW-Authenticate', - 'Basic realm="Use guest/guest"')] - )(env, start_response) + 'Basic realm="Use guest/guest"')])\ + (env, start_response) else: # Claims are valid, forward request _decorate_request_headers("X_IDENTITY_STATUS", "Invalid", diff --git a/keystone/common/config.py b/keystone/common/config.py index 47a482d6..a524498e 100644 --- a/keystone/common/config.py +++ b/keystone/common/config.py @@ -218,7 +218,7 @@ def find_config_file(options, args): # For debug only config_file = os.path.join(POSSIBLE_TOPDIR, 'etc', \ 'keystone.conf') - print "Running server from %s " % config_file + print "Running server from %s " % config_file return os.path.join(POSSIBLE_TOPDIR, 'etc', \ 'keystone.conf') diff --git a/keystone/db/sqlalchemy/api.py b/keystone/db/sqlalchemy/api.py index 4c8a59a3..af91a2c5 100644 --- a/keystone/db/sqlalchemy/api.py +++ b/keystone/db/sqlalchemy/api.py @@ -17,7 +17,7 @@ from session import get_session -from sqlalchemy.orm import joinedload,aliased +from sqlalchemy.orm import joinedload, aliased import models @@ -41,21 +41,21 @@ def tenant_get_all(session=None): return session.query(models.Tenant).all() -def tenant_get_page(marker,limit,session=None): +def tenant_get_page(marker, limit, session=None): if not session: session = get_session() if marker: return session.query(models.Tenant).filter("id>:marker").params(\ - marker = '%s' % marker).order_by\ - (models.Tenant.id.desc()).limit(limit).all() + marker='%s' % marker).order_by(\ + models.Tenant.id.desc()).limit(limit).all() else: return session.query(models.Tenant).order_by(\ models.Tenant.id.desc()).limit(limit).all() #return session.query(models.Tenant).all() -def tenant_get_page_markers(marker,limit,session=None): +def tenant_get_page_markers(marker, limit, session=None): if not session: session = get_session() first = session.query(models.Tenant).order_by(\ @@ -63,38 +63,38 @@ def tenant_get_page_markers(marker,limit,session=None): last = session.query(models.Tenant).order_by(\ models.Tenant.id.desc()).first() if marker is None: - marker=first.id - next=session.query(models.Tenant).filter("id > :marker").params(\ - marker = '%s' % marker).order_by(\ + marker = first.id + next = session.query(models.Tenant).filter("id > :marker").params(\ + marker='%s' % marker).order_by(\ models.Tenant.id).limit(limit).all() - prev=session.query(models.Tenant).filter("id < :marker").params(\ - marker = '%s' % marker).order_by(\ + prev = session.query(models.Tenant).filter("id < :marker").params(\ + marker='%s' % marker).order_by(\ models.Tenant.id.desc()).limit(int(limit)).all() if len(next) == 0: - next=last + next = last else: for t in next: - next=t + next = t if len(prev) == 0: - prev=first + prev = first else: for t in prev: - prev=t + prev = t if prev.id == marker: prev = None else: - prev=prev.id + prev = prev.id if next.id == last.id: next = None else: next = next.id - return (prev,next) + return (prev, next) def tenant_is_empty(id, session=None): if not session: session = get_session() - a_user = session.query(models.UserTenantAssociation).filter_by( + a_user = session.query(models.UserTenantAssociation).filter_by(\ tenant_id=id).first() if a_user != None: return False @@ -113,7 +113,7 @@ def tenant_update(id, values, session=None): tenant_ref.save(session=session) -def tenant_group_is_empty( id, session=None): +def tenant_group_is_empty(id, session=None): if not session: session = get_session() a_user = session.query(models.UserGroupAssociation).filter_by( @@ -123,6 +123,7 @@ def tenant_group_is_empty( id, session=None): return True + def tenant_delete(id, session=None): if not session: session = get_session() @@ -141,64 +142,69 @@ def tenant_group_create(values): def tenant_group_get(id, tenant, session=None): if not session: session = get_session() - result = session.query(models.Group).filter_by(id=id, tenant_id=tenant).first() + result = session.query(models.Group).filter_by(id=id, \ + tenant_id=tenant).first() return result -def tenant_group_get_page(tenantId, marker,limit,session=None): + +def tenant_group_get_page(tenantId, marker, limit, session=None): if not session: session = get_session() if marker: return session.query(models.Group).filter("id>:marker").params(\ - marker = '%s' % marker).filter_by(\ - tenant_id=tenantId).order_by\ - (models.Group.id.desc()).limit(limit).all() + marker='%s' % marker).filter_by(\ + tenant_id=tenantId).order_by(\ + models.Group.id.desc()).limit(limit).all() else: return session.query(models.Group).filter_by(tenant_id=tenantId)\ .order_by(models.Group.id.desc()).limit(limit).all() #return session.query(models.Tenant).all() -def tenant_group_get_page_markers(tenantId, marker,limit,session=None): +def tenant_group_get_page_markers(tenantId, marker, limit, session=None): if not session: session = get_session() - first = session.query(models.Group).filter_by(tenant_id=tenantId).order_by(\ - models.Group.id).first() - last = session.query(models.Group).filter_by(tenant_id=tenantId).order_by(\ - models.Group.id.desc()).first() - + first = session.query(models.Group).filter_by(\ + tenant_id=tenantId).order_by(\ + models.Group.id).first() + last = session.query(models.Group).filter_by(\ + tenant_id=tenantId).order_by(\ + models.Group.id.desc()).first() + if first is None: - return (None,None) + return (None, None) if marker is None: marker = first.id - next=session.query(models.Group).filter("id > :marker").params(\ - marker = '%s' % marker).filter_by(\ + next = session.query(models.Group).filter("id > :marker").params(\ + marker='%s' % marker).filter_by(\ tenant_id=tenantId).order_by(\ models.Group.id).limit(limit).all() - prev=session.query(models.Group).filter("id < :marker").params(\ - marker = '%s' % marker).filter_by(\ + prev = session.query(models.Group).filter("id < :marker").params(\ + marker='%s' % marker).filter_by(\ tenant_id=tenantId).order_by(\ models.Group.id.desc()).limit(int(limit)).all() if len(next) == 0: - next=last + next = last else: for t in next: - next=t + next = t if len(prev) == 0: - prev=first + prev = first else: for t in prev: - prev=t + prev = t if prev.id == marker: prev = None else: - prev=prev.id + prev = prev.id if next.id == last.id: next = None else: next = next.id - return (prev,next) + return (prev, next) + def tenant_group_update(id, tenant_id, values, session=None): if not session: @@ -209,18 +215,19 @@ def tenant_group_update(id, tenant_id, values, session=None): tenant_ref.save(session=session) -def tenant_group_delete(id,tenant_id, session=None): +def tenant_group_delete(id, tenant_id, session=None): if not session: session = get_session() with session.begin(): - tenantgroup_ref = tenant_group_get(id,tenant_id, session) + tenantgroup_ref = tenant_group_get(id, tenant_id, session) session.delete(tenantgroup_ref) + def user_get_by_group(user_id, group_id, session=None): if not session: session = get_session() - result = session.query(models.UserGroupAssociation).filter_by( - group_id=group_id, user_id=user_id).first() + result = session.query(models.UserGroupAssociation).filter_by(\ + group_id=group_id, user_id=user_id).first() return result @@ -239,7 +246,6 @@ def user_tenant_group_delete(id, group_id, session=None): session.delete(usertenantgroup_ref) - def user_create(values): user_ref = models.User() user_ref.update(values) @@ -250,16 +256,16 @@ def user_create(values): def user_get(id, session=None): if not session: session = get_session() - result = session.query(models.User).options(joinedload('groups')).options( - joinedload('tenants')).filter_by(id=id).first() + result = session.query(models.User).options(joinedload('groups')).options(\ + joinedload('tenants')).filter_by(id=id).first() return result def user_groups(id, session=None): if not session: session = get_session() - result = session.query(models.Group).filter_by( - user_id=id) + result = session.query(models.Group).filter_by(\ + user_id=id) return result @@ -271,24 +277,27 @@ def user_update(id, values, session=None): user_ref.update(values) user_ref.save(session=session) + def users_tenant_group_get_page(group_id, marker, limit, session=None): if not session: session = get_session() uga = aliased(models.UserGroupAssociation) user = aliased(models.User) if marker: - return session.query(user, uga).join( + return session.query(user, uga).join(\ (uga, uga.user_id == user.id)).\ filter(uga.group_id == group_id).\ - filter("id>=:marker").params( - marker='%s' % marker).order_by( + filter("id>=:marker").params(\ + marker='%s' % marker).order_by(\ user.id).limit(limit).all() else: return session.query(user, uga).\ join((uga, uga.user_id == user.id)).\ - filter(uga.group_id == group_id).order_by( + filter(uga.group_id == group_id).order_by(\ user.id).limit(limit).all() -def users_tenant_group_get_page_markers(group_id, marker,limit,session=None): + + +def users_tenant_group_get_page_markers(group_id, marker, limit, session=None): if not session: session = get_session() uga = aliased(models.UserGroupAssociation) @@ -303,13 +312,13 @@ def users_tenant_group_get_page_markers(group_id, marker,limit,session=None): (uga, uga.user_id == user.id)).\ filter(uga.group_id == group_id).\ filter("id > :marker").params(\ - marker = '%s' % marker).order_by(\ + marker='%s' % marker).order_by(\ user.id).limit(limit).all() - prev= session.query(user).join( + prev = session.query(user).join(\ (uga, uga.user_id == user.id)).\ filter(uga.group_id == group_id).\ filter("id < :marker").params(\ - marker = '%s' % marker).order_by(\ + marker='%s' % marker).order_by(\ user.id.desc()).limit(int(limit)).all() if len(next) == 0: next = last @@ -324,7 +333,7 @@ def users_tenant_group_get_page_markers(group_id, marker,limit,session=None): if prev.id == marker: prev = None else: - prev=prev.id + prev = prev.id if next.id == last.id: next = None else: @@ -342,85 +351,32 @@ def group_get(id, session=None): def group_users(id, session=None): if not session: session = get_session() - result = session.query(models.User).filter_by( + result = session.query(models.User).filter_by(\ group_id=id) return result -""" -def users_tenant_group_get_page(group_id, marker,limit,session=None): - if not session: - session = get_session() - - if marker: - return session.query(models.User).filter_by(\ - group_id=group_id).filter("id>:marker").params(\ - marker = '%s' % marker).order_by\ - (models.User.id.desc()).limit(limit).all() - else: - return session.query(models.User).filter_by(\ - group_id=group_id).order_by(\ - models.User.id.desc()).limit(limit).all() - -def users_tenant_group_get_page_markers(group_id, marker,limit,session=None): - if not session: - session = get_session() - first = session.query(models.User).order_by(\ - models.User.id).first() - last = session.query(models.User).order_by(\ - models.User.id.desc()).first() - if marker is None: - marker=first.id - next=session.query(models.User).filter_by(\ - group_id=group_id).filter("id > :marker").params(\ - marker = '%s' % marker).order_by(\ - models.User.id).limit(limit).all() - prev=session.query(models.User).filter_by(\ - group_id=group_id).filter("id < :marker").params(\ - marker = '%s' % marker).order_by(\ - models.User.id.desc()).limit(int(limit)).all() - if len(next) == 0: - next=last - else: - for t in next: - next=t - if len(prev) == 0: - prev=first - else: - for t in prev: - prev=t - if prev.id == marker: - prev = None - else: - prev=prev.id - if next.id == last.id: - next = None - else: - next = next.id - return (prev,next) -""" - def group_get_all(session=None): if not session: session = get_session() result = session.query(models.Group) return result -def group_get_page(marker,limit,session=None): + +def group_get_page(marker, limit, session=None): if not session: session = get_session() if marker: return session.query(models.Group).filter("id>:marker").params(\ - marker = '%s' % marker).order_by\ - (models.Group.id.desc()).limit(limit).all() + marker='%s' % marker).order_by(\ + models.Group.id.desc()).limit(limit).all() else: return session.query(models.Group).order_by(\ models.Group.id.desc()).limit(limit).all() - -def group_get_page_markers(marker,limit,session=None): +def group_get_page_markers(marker, limit, session=None): if not session: session = get_session() first = session.query(models.Group).order_by(\ @@ -428,32 +384,32 @@ def group_get_page_markers(marker,limit,session=None): last = session.query(models.Group).order_by(\ models.Group.id.desc()).first() if marker is None: - marker=first.id - next=session.query(models.Group).filter("id > :marker").params(\ - marker = '%s' % marker).order_by(\ + marker = first.id + next = session.query(models.Group).filter("id > :marker").params(\ + marker='%s' % marker).order_by(\ models.Group.id).limit(limit).all() - prev=session.query(models.Group).filter("id < :marker").params(\ - marker = '%s' % marker).order_by(\ + prev = session.query(models.Group).filter("id < :marker").params(\ + marker='%s' % marker).order_by(\ models.Group.id.desc()).limit(int(limit)).all() if len(next) == 0: - next=last + next = last else: for t in next: - next=t + next = t if len(prev) == 0: - prev=first + prev = first else: for t in prev: - prev=t + prev = t if prev.id == marker: prev = None else: - prev=prev.id + prev = prev.id if next.id == last.id: next = None else: next = next.id - return (prev,next) + return (prev, next) def group_delete(id, session=None): @@ -493,24 +449,28 @@ def token_for_user(user_id, session=None): user_id=user_id).order_by("expires desc").first() return result + def user_tenant_create(values): user_tenant_ref = models.UserTenantAssociation() user_tenant_ref.update(values) user_tenant_ref.save() return user_tenant_ref + def user_get_update(id, session=None): if not session: session = get_session() result = session.query(models.User).filter_by(id=id).first() return result + def user_get_email(email, session=None): if not session: session = get_session() result = session.query(models.User).filter_by(email=email).first() return result + def users_get_by_tenant_get_page(tenant_id, marker, limit, session=None): if not session: session = get_session() @@ -529,7 +489,9 @@ def users_get_by_tenant_get_page(tenant_id, marker, limit, session=None): filter(uta.tenant_id == tenant_id).order_by( user.id).limit(limit).all() -def users_get_by_tenant_get_page_markers(tenant_id, marker, limit, session=None): + +def users_get_by_tenant_get_page_markers(tenant_id, marker, limit,\ + session=None): if not session: session = get_session() uta = aliased(models.UserTenantAssociation) @@ -544,19 +506,21 @@ def users_get_by_tenant_get_page_markers(tenant_id, marker, limit, session=None) order_by(user.id.desc()).first() if marker is None: marker = first.id - next, nextuta = session.query(user, uta).join((uta, uta.user_id == user.id)).\ + next, nextuta = session.query(user, uta).join((uta, + uta.user_id == user.id)).\ filter(uta.tenant_id == tenant_id).\ filter("id >= :marker").params( marker='%s' % marker).order_by( user.id).limit(int(limit) + 1).all() - prev, prevuta = session.query(user, uta).join((uta, uta.user_id == user.id)).\ + prev, prevuta = session.query(user, uta).join((uta, \ + uta.user_id == user.id)).\ filter(uta.tenant_id == tenant_id).\ filter("id < :marker").params( marker='%s' % marker).order_by( user.id.desc()).limit(int(limit)).all() next_len = len(next) prev_len = len(prev) - + if next_len == 0: next = last else: @@ -577,6 +541,7 @@ def users_get_by_tenant_get_page_markers(tenant_id, marker, limit, session=None) next = next.id return (prev, next) + def user_groups_get_all(user_id, session=None): if not session: session = get_session() @@ -587,13 +552,14 @@ def user_groups_get_all(user_id, session=None): filter(uga.user_id == user_id).order_by( group.id).all() + def groups_get_by_user_get_page(user_id, marker, limit, session=None): if not session: session = get_session() uga = aliased(models.UserGroupAssociation) group = aliased(models.Group) if marker: - return session.query(group, uga).join( + return session.query(group, uga).join(\ (uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).\ filter("id>=:marker").params( @@ -604,6 +570,8 @@ def groups_get_by_user_get_page(user_id, marker, limit, session=None): join((uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).order_by( group.id).limit(limit).all() + + def groups_get_by_user_get_page_markers(user_id, marker, limit, session=None): if not session: session = get_session() @@ -626,7 +594,6 @@ def groups_get_by_user_get_page_markers(user_id, marker, limit, session=None): marker='%s' % marker).order_by( group.id).limit(int(limit)).all() - prev = session.query(group, uga).join( (uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).\ @@ -635,7 +602,7 @@ def groups_get_by_user_get_page_markers(user_id, marker, limit, session=None): group.id).limit(int(limit) + 1).all() next_len = len(next) prev_len = len(prev) - + if next_len == 0: next = last else: @@ -664,40 +631,41 @@ def user_delete(id, session=None): user_ref = user_get(id, session) session.delete(user_ref) + def user_get_by_tenant(id, tenant_id, session=None): if not session: session = get_session() - user_tenant = session.query(models.UserTenantAssociation).filter_by( + user_tenant = session.query(models.UserTenantAssociation).filter_by(\ tenant_id=tenant_id, user_id=id).first() return user_tenant + def user_get_by_group(id, session=None): if not session: session = get_session() user_group = session.query(models.Group).filter_by(tenant_id=id).all() return user_group + def user_delete_tenant(id, tenant_id, session=None): if not session: session = get_session() with session.begin(): user_tenant_ref = user_get_by_tenant(id, tenant_id, session) - print user_tenant_ref session.delete(user_tenant_ref) - user_group_ref = user_get_by_group(tenant_id,session) - print user_group_ref + user_group_ref = user_get_by_group(tenant_id, session) if user_group_ref is not None: for user_group in user_group_ref: group_users=session.query(models.UserGroupAssociation).filter_by( \ user_id=id, group_id = user_group.id).all() for group_user in group_users: session.delete(group_user) - user_tenant_ref= session.query(models.UserTenantAssociation).filter_by( \ + user_tenant_ref = session.query(models.UserTenantAssociation).filter_by( \ user_id=id).first() if user_tenant_ref is None: user_ref = user_get(id, session) session.delete(user_ref) - + def user_tenant_group(values): user_ref = models.UserGroupAssociation() user_ref.update(values) diff --git a/keystone/db/sqlalchemy/session.py b/keystone/db/sqlalchemy/session.py index b67d1aa4..3e7b5a1f 100644 --- a/keystone/db/sqlalchemy/session.py +++ b/keystone/db/sqlalchemy/session.py @@ -29,13 +29,13 @@ from sqlalchemy.orm import sessionmaker _ENGINE = None _MAKER = None + def get_connection_string(): path = os.path.realpath(__file__) dbpath = os.path.normpath(os.path.join(path, - os.pardir, # sqlalchemy - os.pardir, # db - os.pardir # keystone - )) + os.pardir, # sqlalchemy + os.pardir, # db + os.pardir)) # keystone connection_string = "sqlite:///%s/keystone.db" % dbpath logging.debug('SQL ALchemy connection string: %s', connection_string) return connection_string diff --git a/keystone/logic/types/atom.py b/keystone/logic/types/atom.py index fd09b79e..0b2345d9 100644 --- a/keystone/logic/types/atom.py +++ b/keystone/logic/types/atom.py @@ -14,6 +14,7 @@ # limitations under the License. from lxml import etree + class Link(object): "An atom link" @@ -23,8 +24,7 @@ class Link(object): self.link_type = link_type self.hreflang = hreflang self.title = title - - + def to_dict(self): links = {} if self.link_type: @@ -33,16 +33,16 @@ class Link(object): links["hreflang"] = self.hreflang if self.title: links["title"] = self.title - + links["rel"] = self.rel links["href"] = self.href return {'links': links} - + def to_dom(self): - ATOM_NAMESPACE ="http://www.w3.org/2005/Atom" + ATOM_NAMESPACE = "http://www.w3.org/2005/Atom" ATOM = "{%s}" % ATOM_NAMESPACE - NSMAP = {'atom' : ATOM_NAMESPACE} - dom = etree.Element(ATOM+"link", nsmap=NSMAP) + NSMAP = {'atom': ATOM_NAMESPACE} + dom = etree.Element(ATOM + "link", nsmap=NSMAP) if self.link_type: dom.set("link_type", self.link_type) if self.link_type: @@ -51,4 +51,4 @@ class Link(object): dom.set("title", self.title) dom.set("rel", self.rel) dom.set("href", self.href) - return dom
\ No newline at end of file + return dom diff --git a/keystone/logic/types/fault.py b/keystone/logic/types/fault.py index e35ca50a..27032c7c 100644 --- a/keystone/logic/types/fault.py +++ b/keystone/logic/types/fault.py @@ -73,7 +73,7 @@ class BadRequestFault(IDMFault): class UnauthorizedFault(IDMFault): "User is unauthorized" - + def __init__(self, msg, details=None, code=401): super(UnauthorizedFault, self).__init__(msg, details, code) self.key = "unauthorized" @@ -86,6 +86,7 @@ class ForbiddenFault(IDMFault): super(ForbiddenFault, self).__init__(msg, details, code) self.key = "forbidden" + class TenantDisabledFault(IDMFault): "The tenant is disabled" @@ -109,14 +110,15 @@ class TenantConflictFault(IDMFault): super(TenantConflictFault, self).__init__(msg, details, code) self.key = "tenantConflict" + class TenantGroupConflictFault(IDMFault): "The tenant Group already exists?" def __init__(self, msg, details=None, code=409): super(TenantGroupConflictFault, self).__init__(msg, details, code) self.key = "tenantGroupConflict" - - + + class OverlimitFault(IDMFault): "A limit has been exceeded" @@ -125,7 +127,8 @@ class OverlimitFault(IDMFault): self.args = (code, msg, details, retry_at) self.retry_at = retry_at self.key = "overLimit" - + + class UserConflictFault(IDMFault): "The User already exists?" @@ -133,6 +136,7 @@ class UserConflictFault(IDMFault): super(UserConflictFault, self).__init__(msg, details, code) self.key = "userConflict" + class UserDisabledFault(IDMFault): "The user is disabled" @@ -140,6 +144,7 @@ class UserDisabledFault(IDMFault): super(UserDisabledFault, self).__init__(msg, details, code) self.key = "userDisabled" + class EmailConflictFault(IDMFault): "The Email already exists?" @@ -147,6 +152,7 @@ class EmailConflictFault(IDMFault): super(EmailConflictFault, self).__init__(msg, details, code) self.key = "emailConflict" + class UserGroupConflictFault(IDMFault): "The user already exists in group?" diff --git a/keystone/logic/types/tenant.py b/keystone/logic/types/tenant.py index de64faee..f57fc523 100644 --- a/keystone/logic/types/tenant.py +++ b/keystone/logic/types/tenant.py @@ -109,7 +109,7 @@ class Tenants(object): def to_xml(self): dom = etree.Element("tenants") - dom.set(u"xmlns","http://docs.openstack.org/idm/api/v1.0") + dom.set(u"xmlns", "http://docs.openstack.org/idm/api/v1.0") for t in self.values: dom.append(t.to_dom()) @@ -122,7 +122,7 @@ class Tenants(object): def to_json(self): values = [t.to_dict()["tenant"] for t in self.values] links = [t.to_dict()["links"] for t in self.links] - return json.dumps({"tenants": {"values": values,"links":links}}) + return json.dumps({"tenants": {"values": values, "links": links}}) class Group(object): @@ -145,12 +145,12 @@ class Group(object): if root == None: raise fault.BadRequestFault("Expecting Group") group_id = root.get("id") - tenant_id=None + tenant_id = None if root.get("tenantId"): tenant_id = root.get("tenantId") else: tenant_id = None - + desc = root.find("{http://docs.openstack.org/idm/api/v1.0}" "description") if desc == None: @@ -222,7 +222,7 @@ class Groups(object): def to_xml(self): dom = etree.Element("groups") - dom.set(u"xmlns","http://docs.openstack.org/idm/api/v1.0") + dom.set(u"xmlns", "http://docs.openstack.org/idm/api/v1.0") for t in self.values: dom.append(t.to_dom()) @@ -235,7 +235,7 @@ class Groups(object): def to_json(self): values = [t.to_dict()["group"] for t in self.values] links = [t.to_dict()["links"] for t in self.links] - return json.dumps({"groups": {"values": values,"links":links}}) + return json.dumps({"groups": {"values": values, "links": links}}) class GlobalGroup(object): @@ -244,7 +244,6 @@ class GlobalGroup(object): def __init__(self, group_id, description, tenant_id=None): self.description = description self.group_id = group_id - @staticmethod def from_xml(xml_str): @@ -255,7 +254,7 @@ class GlobalGroup(object): if root == None: raise fault.BadRequestFault("Expecting Group") group_id = root.get("id") - + desc = root.find("{http://docs.openstack.org/idm/api/v1.0}" "description") if desc == None: @@ -290,7 +289,7 @@ class GlobalGroup(object): xmlns="http://docs.openstack.org/idm/api/v1.0") if self.group_id: dom.set("id", self.group_id) - + desc = etree.Element("description") desc.text = self.description dom.append(desc) @@ -304,7 +303,7 @@ class GlobalGroup(object): if self.group_id: group["id"] = self.group_id group["description"] = self.description - + return {'group': group} def to_json(self): @@ -320,7 +319,7 @@ class GlobalGroups(object): def to_xml(self): dom = etree.Element("groups") - dom.set(u"xmlns","http://docs.openstack.org/idm/api/v1.0") + dom.set(u"xmlns", "http://docs.openstack.org/idm/api/v1.0") for t in self.values: dom.append(t.to_dom()) @@ -333,10 +332,7 @@ class GlobalGroups(object): def to_json(self): values = [t.to_dict()["group"] for t in self.values] links = [t.to_dict()["links"] for t in self.links] - return json.dumps({"groups": {"values": values,"links":links}}) - - - + return json.dumps({"groups": {"values": values, "links": links}}) class User(object): @@ -432,7 +428,7 @@ class Users(object): def to_xml(self): dom = etree.Element("users") - dom.set(u"xmlns","http://docs.openstack.org/idm/api/v1.0") + dom.set(u"xmlns", "http://docs.openstack.org/idm/api/v1.0") for t in self.values: dom.append(t.to_dom()) @@ -445,4 +441,4 @@ class Users(object): def to_json(self): values = [t.to_dict()["user"] for t in self.values] links = [t.to_dict()["links"] for t in self.links] - return json.dumps({"users": {"values": values,"links":links}}) + return json.dumps({"users": {"values": values, "links": links}}) diff --git a/keystone/logic/types/user.py b/keystone/logic/types/user.py index f3a56a5d..2c50de65 100644 --- a/keystone/logic/types/user.py +++ b/keystone/logic/types/user.py @@ -22,13 +22,13 @@ import string class User(object): "A user." - def __init__(self, password,user_id, tenant_id, email,enabled): + def __init__(self, password, user_id, tenant_id, email, enabled): self.user_id = user_id self.tenant_id = tenant_id self.password = password self.email = email self.enabled = enabled and True or False - + @staticmethod def from_xml(xml_str): try: @@ -37,7 +37,7 @@ class User(object): root = dom.find("{http://docs.openstack.org/idm/api/v1.0}user") if root == None: raise fault.BadRequestFault("Expecting User") - user_id=root.get("id") + user_id = root.get("id") tenant_id = root.get("tenantId") email = root.get("email") password = root.get("password") @@ -49,7 +49,7 @@ class User(object): elif password == None: raise fault.BadRequestFault("Expecting User password") elif email == None: - raise fault.BadRequestFault("Expecting User email") + raise fault.BadRequestFault("Expecting User email") if enabled == None or enabled == "true" or enabled == "yes": set_enabled = True elif enabled == "false" or enabled == "no": @@ -57,8 +57,8 @@ class User(object): else: raise fault.BadRequestFault("Bad enabled attribute!") if password == '': - password=user_id - return User(password,user_id,tenant_id,email,set_enabled) + password = user_id + return User(password, user_id, tenant_id, email, set_enabled) except etree.LxmlError as e: raise fault.BadRequestFault("Cannot parse User", str(e)) @@ -86,12 +86,12 @@ class User(object): if "enabled" in user: set_enabled = user["enabled"] if not isinstance(set_enabled, bool): - raise fault.BadRequestFault("Bad enabled attribute!") + raise fault.BadRequestFault("Bad enabled attribute!") else: - set_enabled=True + set_enabled = True if password == '': - password=user_id - return User(password,user_id,tenant_id,email,set_enabled) + password = user_id + return User(password, user_id, tenant_id, email, set_enabled) except (ValueError, TypeError) as e: raise fault.BadRequestFault("Cannot parse Tenant", str(e)) @@ -101,15 +101,13 @@ class User(object): if self.email: dom.set("email", self.email) if self.tenant_id: - dom.set("tenantId",self.tenant_id) + dom.set("tenantId", self.tenant_id) if self.user_id: - dom.set("id",self.user_id) + dom.set("id", self.user_id) if self.enabled: - dom.set("enabled",string.lower(str(self.enabled))) + dom.set("enabled", string.lower(str(self.enabled))) if self.password: - dom.set("password",self.password) - - + dom.set("password", self.password) return dom def to_xml(self): @@ -118,29 +116,32 @@ class User(object): def to_dict(self): user = {} - + if self.user_id: user["id"] = self.user_id - user["tenantId"]=self.tenant_id + user["tenantId"] = self.tenant_id if self.password: - user["password"]=self.password - user["email"]=self.email - user["enabled"]=self.enabled + user["password"] = self.password + user["email"] = self.email + user["enabled"] = self.enabled return {'user': user} - + def to_json(self): - return json.dumps(self.to_dict()) - + return json.dumps(self.to_dict()) + + class User_Update(object): "A user." - def __init__(self, password,user_id, tenant_id, email,enabled, group=None): + def __init__(self, password, user_id, tenant_id, email, + enabled, group=None): self.user_id = user_id self.tenant_id = tenant_id self.password = password self.email = email self.enabled = enabled and True or False - self.group=group + self.group = group + @staticmethod def from_xml(xml_str): try: @@ -149,11 +150,11 @@ class User_Update(object): root = dom.find("{http://docs.openstack.org/idm/api/v1.0}user") if root == None: raise fault.BadRequestFault("Expecting User") - user_id=root.get("id") + user_id = root.get("id") tenant_id = root.get("tenantId") email = root.get("email") password = root.get("password") - enabled = root.get("enabled") + enabled = root.get("enabled") if enabled == None or enabled == "true" or enabled == "yes": set_enabled = True elif enabled == "false" or enabled == "no": @@ -161,8 +162,8 @@ class User_Update(object): else: raise fault.BadRequestFault("Bad enabled attribute!") if password == '': - password=user_id - return User(password,user_id,tenant_id,email,set_enabled) + password = user_id + return User(password, user_id, tenant_id, email, set_enabled) except etree.LxmlError as e: raise fault.BadRequestFault("Cannot parse User", str(e)) @@ -181,24 +182,24 @@ class User_Update(object): if not "password" in user: password = None else: - password=user["password"] + password = user["password"] if not "tenantId" in user: - tenant_id=None + tenant_id = None else: tenant_id = user["tenantId"] if not "email" in user: - email=None - else: + email = None + else: email = user["email"] if "enabled" in user: set_enabled = user["enabled"] if not isinstance(set_enabled, bool): - raise fault.BadRequestFault("Bad enabled attribute!") + raise fault.BadRequestFault("Bad enabled attribute!") else: - set_enabled=True + set_enabled = True if password == '': - password=user_id - return User(password,user_id,tenant_id,email,set_enabled) + password = user_id + return User(password, user_id, tenant_id, email, set_enabled) except (ValueError, TypeError) as e: raise fault.BadRequestFault("Cannot parse Tenant", str(e)) @@ -208,13 +209,13 @@ class User_Update(object): if self.email: dom.set("email", self.email) if self.tenant_id: - dom.set("tenantId",self.tenant_id) + dom.set("tenantId", self.tenant_id) if self.user_id: - dom.set("id",self.user_id) + dom.set("id", self.user_id) if self.enabled is not None: - dom.set("enabled",string.lower(str(self.enabled))) + dom.set("enabled", string.lower(str(self.enabled))) if self.password: - dom.set("password",self.password) + dom.set("password", self.password) if self.group is not None: print '78' for group in self.group: @@ -226,24 +227,25 @@ class User_Update(object): def to_dict(self): user = {} - + if self.user_id: user["id"] = self.user_id if self.user_id: - user["tenantId"]=self.tenant_id + user["tenantId"] = self.tenant_id if self.password: - user["password"]=self.password + user["password"] = self.password if self.email: - user["email"]=self.email + user["email"] = self.email if self.enabled is not None: - user["enabled"]=self.enabled + user["enabled"] = self.enabled if self.group is not None: - values=[t.to_dict()["group"] for t in self.group] + values = [t.to_dict()["group"] for t in self.group] user["groups"] = {"values": values} return {'user': user} - + def to_json(self): - return json.dumps(self.to_dict()) + return json.dumps(self.to_dict()) + class Users(object): "A collection of users." @@ -264,4 +266,4 @@ class Users(object): def to_json(self): values = [t.to_dict()["user"] for t in self.values] links = [t.to_dict()["links"] for t in self.links] - return json.dumps({"users": {"values": values, "links": links}})
\ No newline at end of file + return json.dumps({"users": {"values": values, "links": links}}) diff --git a/keystone/server.py b/keystone/server.py index e0338f30..39a309e1 100755 --- a/keystone/server.py +++ b/keystone/server.py @@ -66,7 +66,6 @@ import keystone.logic.types.fault as fault import keystone.logic.types.user as users import keystone.common.template as template -# Shall give [app:server paste value from conf file ] logger = logging.getLogger('keystone.server') VERSION_STATUS = "ALPHA" @@ -74,6 +73,10 @@ VERSION_DATE = "2011-04-23T00:00:00Z" service = serv.IDMService() +""" +General Functions for the server.py use +""" + def is_xml_response(req): if not "Accept" in req.headers: @@ -96,9 +99,7 @@ def wrap_error(func): @functools.wraps(func) def check_error(*args, **kwargs): try: - return func(*args, **kwargs) - except Exception as err: if isinstance(err, fault.IDMFault): return send_error(err.code, kwargs['req'], err) @@ -110,16 +111,13 @@ def wrap_error(func): def get_normalized_request_content(model, req): - """initialize a model from json/xml contents of request body""" + """Initialize a model from json/xml contents of request body""" if req.content_type == "application/xml": - ret = model.from_xml(req.body) elif req.content_type == "application/json": - ret = model.from_json(req.body) else: - raise fault.IDMFault("I don't understand the content type ", code=415) return ret @@ -172,6 +170,10 @@ def send_result(code, req, result): class StaticFilesController(wsgi.Controller): + """ + Static Files Controller - + Controller for contract documents + """ def __init__(self, options): self.options = options @@ -205,7 +207,11 @@ class StaticFilesController(wsgi.Controller): mimetype="application/xml") -class MiscController(wsgi.Controller): +class VersionController(wsgi.Controller): + """ + Version Controller - + Controller for version related methods + """ def __init__(self, options): self.options = options @@ -234,6 +240,10 @@ class MiscController(wsgi.Controller): class AuthController(wsgi.Controller): + """ + Auth Controller - + Controller for token related operations + """ def __init__(self, options): self.options = options @@ -264,6 +274,10 @@ class AuthController(wsgi.Controller): class TenantController(wsgi.Controller): + """ + Tenant Controller - + Controller for Tenant and Tenant Group related operations + """ def __init__(self, options): self.options = options @@ -309,7 +323,6 @@ class TenantController(wsgi.Controller): rval = service.delete_tenant(get_auth_token(req), tenant_id) return send_result(204, req, rval) - # Tenant Group Methods @wrap_error def create_tenant_group(self, req, tenant_id): group = get_normalized_request_content(tenants.Group, req) @@ -390,6 +403,10 @@ class TenantController(wsgi.Controller): class UserController(wsgi.Controller): + """ + User Controller - + Controller for User related operations + """ def __init__(self, options): self.options = options @@ -461,7 +478,6 @@ class UserController(wsgi.Controller): user_id, user, tenant_id) return send_result(204, req, rval) - # To be checked with Abdul not finished yet @wrap_error def set_user_enabled(self, req, user_id, tenant_id): user = get_normalized_request_content(users.User_Update, req) @@ -471,9 +487,12 @@ class UserController(wsgi.Controller): class GroupsController(wsgi.Controller): + """ + Groups Controller - + Controller for Group related operations + """ def __init__(self, options): - self.options = options @wrap_error @@ -682,11 +701,11 @@ class KeystoneAPI(wsgi.Router): conditions=dict(method=["DELETE"])) # Miscellaneous Operations - misc_controller = MiscController(options) - mapper.connect("/v1.0/", controller=misc_controller, + version_controller = VersionController(options) + mapper.connect("/v1.0/", controller=version_controller, action="get_version_info", conditions=dict(method=["GET"])) - mapper.connect("/v1.0", controller=misc_controller, + mapper.connect("/v1.0", controller=version_controller, action="get_version_info", conditions=dict(method=["GET"])) diff --git a/keystone/version.py b/keystone/version.py index 332f5841..770259b4 100755 --- a/keystone/version.py +++ b/keystone/version.py @@ -13,10 +13,13 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. + +""" Version file for the python daemon script """ + KEYSTONE_VERSION = ['1', '0'] MAJOR, MINOR = KEYSTONE_VERSION -FINAL = True # This becomes true at Release Candidate time +FINAL = True def canonical_version_string(): @@ -28,4 +31,3 @@ def version_string(): return canonical_version_string() else: return '%s-dev' % (canonical_version_string(),) - |
