From e92ec2930d04377b7ba6bbe3f25c548a076ef144 Mon Sep 17 00:00:00 2001 From: Thomas Herve Date: Wed, 11 Jun 2014 17:44:45 +0200 Subject: [PATCH] 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 --- openstack/common/context.py | 15 +++++++++++++++ tests/unit/test_context.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) 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)