':param read_deleted: \'no\' indicates deleted records are hidden,
\'yes\' indicates deleted records are visible,
\'only\' indicates that *only* deleted records are visible.
:param overwrite: Set to False to ensure that the greenthread local
copy of the index is not overwritten.
:param user_auth_plugin: The auth plugin for the current request\'s
authentication data.'

def __init__(self, user_id=None, project_id=None, is_admin=None, read_deleted='no', remote_address=None, timestamp=None, quota_class=None, user_name=None, project_name=None, service_catalog=None, instance_lock_checked=False, user_auth_plugin=None, **kwargs):

    if user_id:
        kwargs['user'] = user_id
    if project_id:
        kwargs['tenant'] = project_id
    super(RequestContext, self).__init__(is_admin=is_admin, **kwargs)
    self.read_deleted = read_deleted
    self.remote_address = remote_address
    if (not timestamp):
        timestamp = timeutils.utcnow()
    if isinstance(timestamp, six.string_types):
        timestamp = timeutils.parse_strtime(timestamp)
    self.timestamp = timestamp
    if service_catalog:
        self.service_catalog = [s for s in service_catalog if (s.get('type') in ('volume', 'volumev2', 'volumev3', 'key-manager', 'placement'))]
    else:
        self.service_catalog = []
    self.instance_lock_checked = instance_lock_checked
    self.quota_class = quota_class
    self.user_name = user_name
    self.project_name = project_name
    self.db_connection = None
    self.mq_connection = None
    self.user_auth_plugin = user_auth_plugin
    if (self.is_admin is None):
        self.is_admin = policy.check_is_admin(self)
