summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Herve <thomas.herve@enovance.com>2014-06-11 17:44:45 +0200
committerThomas Herve <thomas.herve@enovance.com>2014-06-17 10:58:50 +0200
commite92ec2930d04377b7ba6bbe3f25c548a076ef144 (patch)
treee43ad9be12bb306753e8729140e630119f13d356
parent357208bec5d75bcb143dc0b3b4566b2a00929b64 (diff)
downloadoslo-context-e92ec2930d04377b7ba6bbe3f25c548a076ef144.tar.gz
Add a RequestContext.from_dict method
This adds a new methods allowing the creation of a RequestContext from a dict, useful when passing it serialized. Change-Id: Id66aba0c600896521a4a236e0a97859735419357
-rw-r--r--openstack/common/context.py15
-rw-r--r--tests/unit/test_context.py28
2 files changed, 43 insertions, 0 deletions
diff --git a/openstack/common/context.py b/openstack/common/context.py
index 3eeb445..b612db7 100644
--- a/openstack/common/context.py
+++ b/openstack/common/context.py
@@ -77,6 +77,21 @@ class RequestContext(object):
'instance_uuid': self.instance_uuid,
'user_identity': user_idt}
+ @classmethod
+ def from_dict(cls, ctx):
+ return cls(
+ auth_token=ctx.get("auth_token"),
+ user=ctx.get("user"),
+ tenant=ctx.get("tenant"),
+ domain=ctx.get("domain"),
+ user_domain=ctx.get("user_domain"),
+ project_domain=ctx.get("project_domain"),
+ is_admin=ctx.get("is_admin", False),
+ read_only=ctx.get("read_only", False),
+ show_deleted=ctx.get("show_deleted", False),
+ request_id=ctx.get("request_id"),
+ instance_uuid=ctx.get("instance_uuid"))
+
def get_admin_context(show_deleted=False):
context = RequestContext(None,
diff --git a/tests/unit/test_context.py b/tests/unit/test_context.py
index 9fedff7..a1cb05d 100644
--- a/tests/unit/test_context.py
+++ b/tests/unit/test_context.py
@@ -27,3 +27,31 @@ class ContextTest(test_base.BaseTestCase):
def test_admin_context_show_deleted_flag_default(self):
ctx = context.get_admin_context()
self.assertFalse(ctx.show_deleted)
+
+ def test_from_dict(self):
+ dct = {
+ "auth_token": "token1",
+ "user": "user1",
+ "tenant": "tenant1",
+ "domain": "domain1",
+ "user_domain": "user_domain1",
+ "project_domain": "project_domain1",
+ "is_admin": True,
+ "read_only": True,
+ "show_deleted": True,
+ "request_id": "request1",
+ "instance_uuid": "instance1",
+ "extra_data": "foo"
+ }
+ ctx = context.RequestContext.from_dict(dct)
+ self.assertEqual("token1", ctx.auth_token)
+ self.assertEqual("user1", ctx.user)
+ self.assertEqual("tenant1", ctx.tenant)
+ self.assertEqual("domain1", ctx.domain)
+ self.assertEqual("user_domain1", ctx.user_domain)
+ self.assertEqual("project_domain1", ctx.project_domain)
+ self.assertTrue(ctx.is_admin)
+ self.assertTrue(ctx.read_only)
+ self.assertTrue(ctx.show_deleted)
+ self.assertEqual("request1", ctx.request_id)
+ self.assertEqual("instance1", ctx.instance_uuid)