keystone提供了对资源使用情况的通知,以便第三方应用能够对资源进行计费、监控、配额管理等操作。目前有两种通知格式,分别为cadf和basic。默认为cadf,可以在keystone.conf中进行配置(notification_format = cadf)
关于两种格式的区别请参考:
https://docs.openstack.org/keystone/latest/advanced-topics/event_notifications.html
两者的主要差别在于payload不同, 第3部分会进行详细介绍。
1. 如何配置
①transport_url
②driver
这里配置driver = messaging
2. 代码中的实现
以创建用户为例:
keystone已经提供了通知的模块,我们只需要调用即可。
3. 通知的格式
cadf:
截取一个创建用户所发送的通知:
先看下payload部分:
id 就是initiator_id, 执行操作的用户id
eventType:cadf的关键字,用以说明事件的类型,主要的关键字为:activity, monitor,control,还有一些额外的关键字未列出。
action:执行的操作,. 操作.资源类型
resource_info: 一般就是资源的ID,比如这里就是user_id
公共部分(basic格式也有):
event_type:事件类型,格式一般为identity..;其中resource_type就是资源比如user、project等;operation就是对资源的操作,比如create、delete等。支持的资源和操作如下所示:
message_id
priority:目前是无法配置的,默认都是‘INFO’
publisher_id
timestamp
basic:
basic的payload部分:
{
“resource_info”:
}
相比较cadf格式,这种类型非常简单。
4. 关于RabbitMQ
Keystone消息通知所使用的exchange、queues信息如下:
Exchange:名称为keystone 类型为topic
Routing-key: notifications.info
Queues: notifications.info