summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJorge L. Williams <jorge.williams@rackspace.com>2011-04-21 21:03:53 -0500
committerJorge L. Williams <jorge.williams@rackspace.com>2011-04-21 21:03:53 -0500
commit7eda7dd088e490d3dfff3498fc8fbd88a6df671e (patch)
tree38a8fcf818d3a06fede54cb55ac4163d6a79f65d
parent8bb4887abf9a56291fe38bd43ece5d5cbc8aebd5 (diff)
downloadkeystone-7eda7dd088e490d3dfff3498fc8fbd88a6df671e.tar.gz
keystone-7eda7dd088e490d3dfff3498fc8fbd88a6df671e.tar.xz
keystone-7eda7dd088e490d3dfff3498fc8fbd88a6df671e.zip
Initial full response to authenticate token, still having issues with errors.
-rw-r--r--keystone/identity2.py43
-rw-r--r--keystone/logic/service.py15
2 files changed, 52 insertions, 6 deletions
diff --git a/keystone/identity2.py b/keystone/identity2.py
index d80ef086..4349923b 100644
--- a/keystone/identity2.py
+++ b/keystone/identity2.py
@@ -19,6 +19,38 @@ import bottle
from bottle import route
from bottle import run
from bottle import request
+from bottle import response
+from bottle import abort
+
+import keystone.logic.service as serv
+import keystone.logic.types.auth as auth
+import keystone.logic.types.tenant as tenant
+import keystone.logic.types.fault as fault
+
+bottle.debug(True)
+
+service = serv.IDMService()
+
+def is_xml_response():
+ if not "Accept" in request.header:
+ return False
+ return request.header["Accept"] == "application/xml"
+
+def send_result(result, code=500):
+ if is_xml_response():
+ ret = result.to_xml()
+ response.content_type = "application/xml"
+ else:
+ ret = result.to_json()
+ response.content_type = "application/json"
+ response.status = code
+ return ret
+
+def send_error(error):
+ if isinstance(error, fault.IDMFault):
+ send_result (error, error.code)
+ else:
+ send_result (fault.IDMFault("Unhandled error", error.__str__()))
@route('/v1.0/token', method='POST')
def authenticate():
@@ -26,7 +58,16 @@ def authenticate():
@route('/v1.0/token/:token_id', method='GET')
def validate_token(token_id):
- return "Good token "+token_id+" is good!"
+ try:
+ belongs_to = None
+ if "belongsTo" in request.GET:
+ belongs_to = request.GET["belongsTo"]
+ auth_token = None
+ if "X-Auth-Token" in request.header:
+ auth_token = request.header["X-Auth-Token"]
+ return send_result (service.validate_token(auth_token, token_id, belongs_to))
+ except Exception as e:
+ return send_error (e)
@route('/v1.0/token/:token_id', method='DELETE')
def delete_token(token_id):
diff --git a/keystone/logic/service.py b/keystone/logic/service.py
index c7b1aa22..e6ca1bcb 100644
--- a/keystone/logic/service.py
+++ b/keystone/logic/service.py
@@ -17,7 +17,6 @@ import keystone.logic.types.auth as auth
import keystone.logic.types.tenant as tenant
import keystone.logic.types.atom as atom
import keystone.logic.types.fault as fault
-import keystone.db.sqlalchemy.api as db_api
class IDMService(object):
@@ -32,7 +31,14 @@ class IDMService(object):
True
def validate_token(self, admin_token, token_id, belongs_to=None):
- True
+ self.__validate_admin_token(admin_token)
+ group1 = auth.Group("Admin","19928")
+ group2 = auth.Group("Other","28882")
+ gs = [group1, group2]
+ groups = auth.Groups(gs,[])
+ user = auth.User("joeuser","19928", groups)
+ token = auth.Token ("2010-11-01T03:32:15-05:00", "388376625525637773")
+ return auth.AuthData(token, user)
def revoke_token(self, admin_token, token_id):
True
@@ -46,8 +52,7 @@ class IDMService(object):
True
def get_tenant(self, admin_token, tenant_id):
- #TODO: Validate the admin_token
- return db_api.tenant_get(tenant_id)
+ True
def get_tenants(self, admin_token, marker, limit):
True
@@ -65,6 +70,6 @@ class IDMService(object):
#
def __validate_admin_token(self, admin_token):
if not admin_token:
- raise fault.ForbiddenFault("You are not authorized this operation")
+ raise fault.UnauthorizedFault("Missing admin token")
True