context.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # Copyright 2016 Cloudbase Solutions Srl
  2. # All Rights Reserved.
  3. from oslo_context import context
  4. from oslo_db.sqlalchemy import enginefacade
  5. from oslo_utils import timeutils
  6. @enginefacade.transaction_context_provider
  7. class RequestContext(context.RequestContext):
  8. def __init__(self, user, tenant, is_admin=None,
  9. roles=None, project_name=None, remote_address=None,
  10. timestamp=None, request_id=None, auth_token=None,
  11. overwrite=True, domain=None, user_domain=None,
  12. project_domain=None, show_deleted=None, trust_id=None,
  13. **kwargs):
  14. super(RequestContext, self).__init__(auth_token=auth_token,
  15. user=user,
  16. tenant=tenant,
  17. domain=domain,
  18. user_domain=user_domain,
  19. project_domain=project_domain,
  20. is_admin=is_admin,
  21. show_deleted=show_deleted,
  22. request_id=request_id,
  23. overwrite=overwrite)
  24. self.roles = roles or []
  25. self.project_name = project_name
  26. self.remote_address = remote_address
  27. if not timestamp:
  28. timestamp = timeutils.utcnow()
  29. elif isinstance(timestamp, str):
  30. timestamp = timeutils.parse_isotime(timestamp)
  31. self.timestamp = timestamp
  32. self.trust_id = trust_id
  33. def to_dict(self):
  34. result = super(RequestContext, self).to_dict()
  35. result['user'] = self.user
  36. result['tenant'] = self.tenant
  37. result['project_name'] = self.project_name
  38. result['domain'] = self.domain
  39. result['roles'] = self.roles
  40. result['remote_address'] = self.remote_address
  41. result['timestamp'] = self.timestamp.isoformat()
  42. result['request_id'] = self.request_id
  43. result['show_deleted'] = self.show_deleted
  44. result['trust_id'] = self.trust_id
  45. return result
  46. @classmethod
  47. def from_dict(cls, values):
  48. return cls(**values)