OpenStack公共组件oslo之四——oslo.context
来源:互联网 发布:unity3d程序员 编辑:程序博客网 时间:2024/06/05 07:59
在OpenStack中,oslo.context为所有OpenStack组件提供了一个保存请求上下文信息的基类,该类主要有两个作用:一、用来存储一个Web请求的安全信息;二、用来为oslo.log提供上下文详情。本章将详细分析oslo.context组件。
1. RequestContext基类
在oslo.context组件中,主要定义了RequestContext基类,该类的每个实例化对象都保存了一个Web请求上下文信息。该类中保存的字段信息有:请求的Token信息,用户信息,项目信息,服务信息等;在实例化时,该类会为每个对象生成一个request_id在项目中唯一标识该对象。该类还提供了一系列方法以便其他OpenStack项目调用。其中,比较重要的方法主要有以下几个:
- global_id():返回一个全局id,如果我们想使用一个全局的request_id时可以调用该方法。
- from_dict(values, **kwargs):使用给定的字典创建上下文对象。
- from_environ(environ, **kwargs):使用环境变量创建上下文对象。
- to_dict():返回一个包含上下文属性的字典。
- to_policy_values():为oslo.policy组件提供上下文信息。
- update_store():在当前线程中保存该上下文对象。
- get_logging_values():为oslo.log组件生成日志信息提供上下文信息。
2. oslo.context的使用
一般地,OpenStack项目在使用oslo.context时会实现一个继承RequestContext的子类,并在子类中封装项目自身所需的其他上下文属性和方法。如OpenStack nova组件使用oslo.context时便实现了一个nova项目的RequestContext类,nova在继承了oslo.context.RequestContext类之外,还添加了db_connection、mq_connection、timestamp等属性,也添加了get_auth_plugin()、elevated()、can()等方法。
另外,nova还提供了一系列方便的操作上下文的方法,如获取上下文对象的方法get_context()、get_admin_context(),判断用户角色的方法is_user_context()等可以更加方便在Nova项目中使用上下文信息。对于oslo.context的具体使用方法比较简单,在OpenStack各项目中都有不同的应用,在此便不再赘述了。
阅读全文
0 0
- OpenStack公共组件oslo之四——oslo.context
- OpenStack公共组件oslo之二——oslo.utils
- OpenStack公共组件oslo之三——oslo.log
- OpenStack公共组件oslo之五——oslo.service
- OpenStack公共组件oslo之六——oslo.messaging
- OpenStack公共组件oslo之七——oslo.middleware
- OpenStack公共组件oslo之八——oslo.i18n
- OpenStack公共组件oslo之九——oslo.db
- OpenStack公共组件oslo之十——oslo.concurrency
- OpenStack公共组件oslo之十一——oslo.serialization
- OpenStack公共组件oslo之十二——oslo.policy
- OpenStack公共组件oslo之十三——oslo.cache
- OpenStack公共组件oslo之一——oslo.config
- OpenStack公共组件oslo之十四——pbr
- OpenStack公共组件oslo之十五——taskflow
- OpenStack公共组件oslo之十六——stevedore
- openstack组件oslo.message之RPCClient
- openstack组件oslo.message之RPCServer实现
- 传奇客户端wil文件说明
- SecureCRT使用SSH连接linux超时后自动断开
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d
- C++中void和void*指针的含义
- Android 7.1 以上机型Charles抓包解决办法
- OpenStack公共组件oslo之四——oslo.context
- calltree的安装与使用
- Mac 搭建基于Github的hexo博客
- TCP和UDP的区别
- 知识过载与疲于奔命
- js关键字,保留字,标识符总结
- last_insert_id使用及其问题解决方案
- 丛林战争项目二之实现服务器端异步的消息接收
- zabbix监控之二---zabbix导入模板,配置监控项、触发器及报警媒介