OpenStack公共组件oslo之四——oslo.context

        在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各项目中都有不同的应用,在此便不再赘述了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值