nova notification
1 compute.instance.update类型的消息
需要配置notify_on_state_change参数,可以为空,或者vm_state,或者vm_and_task_state,
当虚拟机的状态或者task状态发送变化时发送消息:
cfg.StrOpt('notify_on_state_change',
help='If set, send
compute.instance.update notifications on instance '
'state
changes. Valid values are None for no notifications, '
'"vm_state" for notifications on VM state changes, or '
'"vm_and_task_state" for notifications on VM and task state '
'changes.'),
默认为空,即不发送。
发送函数为:notification.send_update:
def send_update(context, old_instance, new_instance, service="compute",host=None): """Send compute.instance.update notification to report any changes occurred in that instance """
主要用在nova/object/instance.py的save函数中,当instance发送改变需要写入DB时调用。
在nova/compute/api.py 的_provision_instances中在创建instance时也会调用send_update_with_states发送。
- 发送函数最后都是调用
def _send_instance_update_notification中的
rpc.get_notifier(service, host).info(context,
'compute.instance.update', payload)
消息格式:
tenant_id: Tenant ID that owns the this instance (string) user_id: User ID that owns this instance (string)
instance_id: Nova instance ID of this instance (string)
instance_type: Name of the instance type ('flavor') of this instance. (string)
instance_type_id: Nova ID for instance type ('flavor') of this instance. (string)
display_name: User selected display name for instance.
created_at: Timestamp for when this instance's record was created in Nova (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
launched_at: Timestamp for when this instance was last launched by hypervisor. (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
image_ref_url: Image URL (from Glance) that this instance was created from. (string)
image_metadata: array of key-value pairs representing the metadata from the image from which the instance was built (array)
audit_period_begining: Timestamp of beginning of audit period. (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
audit_period_ending: Timestamp of end of audit period. (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
bandwidth: Hash listing bandwidth used for each network this instance is connected to. Keys will be network labels, values will be hashes containing the keys 'bw_in', and 'bw_out', listing the incoming, and outgoing bandwith, respectively, used by that instance, on that network, for that audit period. Bandwith is reported in bytes.
old_state: Prior state of instance. (string, such as 'active' or 'deleted')
state: Current state of instance. (string, such as 'active' or 'deleted')
state_description: Additional human readable description of current state of instance.
fixed_ips: list of ip addresses formatted like [{"floating_ips": [], "meta": {}, "type": "fixed", "version": 4, "address": "10.0.0.9", "label": "public"}] assigned to instance.
memory_mb: memory allocation for this instance (in mb)
disk_gb: disk allocation for this instance (in gb)
2. api_faults
需要配置notify_api_faults,默认为False。
cfg.BoolOpt('notify_api_faults', default=False,
help='If set, send api.fault
notifications on caught exceptions '
'in
the API service.'),
当api调用失败,在异常处理中发送。
用在send_api_fault
rpc.get_notifier('api').error(common_context.get_current()
or
nova.context.get_admin_context(),
'api.fault',
payload)
publish ID:'api'
类型:'api.fault'
用在nova/api/openstack/__init__.py:作为一个FaultWrapper的中间件
配置在etc/nova/api-paste.ini:paste.filter_factory
= nova.api.openstack:FaultWrapper.factory
3. compute.instance*
nova/compute/utils.py
发送函数:def notify_about_instance_usage
method(context, 'compute.instance.%s' % event_suffix, usage_info)
param event_suffix: Event type like "delete.start" or "exists
被waper在:
def _notify_about_instance_usage(self, context, instance, event_suffix,
network_info=None, system_metadata=None,
extra_usage_info=None, fault=None):
compute_utils.notify_about_instance_usage(
self.notifier, context, instance, event_suffix,
network_info=network_info,
system_metadata=system_metadata,
extra_usage_info=extra_usage_info, fault=fault)
主要用在nova/compute/manager.py,还有def _build_and_run_instance:
self._notify_about_instance_usage(context, instance, 'create.start',
比如:event_type':
u'compute.instance.reboot.start
compute.instance.create.start
compute.instance.exists
compute.instance.create.end
格式为:
compute.instance.rebuild.start/.end: Usage notification upon rebuild of instance.
tenant_id: Tenant ID that owns the this instance (string)
user_id: User ID that owns this instance (string)
instance_id: Nova instance ID of this instance (string)
instance_type: Name of the instance type ('flavor') of this instance. (string)
instance_type_id: Nova ID for instance type ('flavor') of this instance. (string)
display_name: User selected display name for instance.
created_at: Timestamp for when this instance's record was created in Nova (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
launched_at: Timestamp for when this instance was last launched by hypervisor. (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
image_ref_url: Image URL (from Glance) that this instance is being rebuilt from. (string)
state: Current state of instance. (string, such as 'active' or 'deleted')
state_description: Additional human readable description of current state of instance.
fixed_ips: list of ip addresses formatted like [{"floating_ips": [], "meta": {}, "type": "fixed", "version": 4, "address": "10.0.0.9", "label": "public"}] assigned to instance.
memory_mb: memory allocation for this instance (in mb)
disk_gb: disk allocation for this instance (in gb)
其中compute.instance.exists用来做audit
https://wiki.openstack.org/wiki/NotificationEventExamples
格式为:
compute.instance.exists:
There is no .start/.end event for this activity ... just the 'compute.instance.exists' event. Periodic usage notification generated by the instance-usage-audit cron job. These usages are generated for each instance that was active during the specified audit period.
tenant_id: Tenant ID that owns the this instance (string)
user_id: User ID that owns this instance (string)
instance_id: Nova instance ID of this instance (string)
instance_type: Name of the instance type ('flavor') of this instance. (string)
instance_type_id: Nova ID for instance type ('flavor') of this instance. (string)
display_name: User selected display name for instance.
created_at: Timestamp for when this instance's record was created in Nova (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
launched_at: Timestamp for when this instance was last launched by hypervisor. (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
image_ref_url: Image URL (from Glance) that this instance was created from. (string)
image_meta: Dictionary of key-value pairs representing metadata from the image the instance was built from.
audit_period_begining: Timestamp of beginning of audit period. (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
audit_period_ending: Timestamp of end of audit period. (string, formatted "YYYY-MM-DD hh:mm:ss.ssssss")
bandwidth: Hash listing bandwidth used for each network this instance is connected to. Keys will be network labels, values will be hashes containing the keys 'bw_in', and 'bw_out', listing the incoming, and outgoing bandwith, respectively, used by that instance, on that network, for that audit period. Bandwith is reported in bytes.
state: Current state of instance. (string, such as 'active' or 'deleted')
state_description: Additional human readable description of current state of instance.
fixed_ips: list of ip addresses formatted like [{"floating_ips": [], "meta": {}, "type": "fixed", "version": 4, "address": "10.0.0.9", "label": "public"}] assigned to instance.
memory_mb: memory allocation for this instance (in mb)
disk_gb: disk allocation for this instance (in gb)
https://wiki.openstack.org/wiki/SystemUsageData
https://review.openstack.org/#/c/224755/
nova notification的更多相关文章
- Neutron 理解(5):Neutron 是如何向 Nova 虚机分配固定IP地址的 (How Neutron Allocates Fixed IPs to Nova Instance)
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- android Notification介绍
如果要添加一个Notification,可以按照以下几个步骤 1:获取NotificationManager: NotificationManager m_NotificationManager=(N ...
- Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)
示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的.例如我们手机的短信系统,当不断有新消息传来时,我 ...
- Missing Push Notification Entitlement 问题
最近打包上传是遇到一个问题: 描述: Missing Push Notification Entitlement - Your app includes an API for Apple's Push ...
- 笔记:Memory Notification: Library Cache Object loaded into SGA
笔记:Memory Notification: Library Cache Object loaded into SGA在警告日志中发现一些这样的警告信息:Mon Nov 21 14:24:22 20 ...
- Nova PhoneGap框架 第一章 前言
Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...
- Nova PhoneGap框架 总结
Nova PhoneGap Framework 是完全针对PhoneGap应用程序量身定做的,在这个框架下开发的应用程序很容易实现高质量的代码,很容易让程序拥有很好的性能和用户体验. 在经历了多个项目 ...
随机推荐
- JQuery处理DOM元素
现有一个id为txtMyTest的元素 获取属性值 $('#id').attr('属性名'); 设置属性值 $('#id').attr('属性名','需要设置的值'); 设置多个属性 如下同时设置va ...
- Pycharm中目前用到的快捷键
1.批量注释:Ctrl+/ 2.缩进\不缩进:Tab\Shift+Tab 3.运行:Ctrl+Shift+F10 4.撤销\反撤销:Ctrl+z\Ctrl+shift+z 5.当光标在代码中间,如何回 ...
- HBase架构原理详情
本文从网上看到的,自己看过了,同时收藏下!感谢分享! HBase定义 HBase 是一个高可靠.高性能.面向列.可伸缩的分布式存储系统,利用Hbase技术可在廉价PC Server上搭建 大规模结构化 ...
- JS判断是手机访问还是PC端访问网站
<script> if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|S ...
- python基础:while循环,for循环
---恢复内容开始--- 1.使用while循环输出1 2 3 4 5 6 8 9 10 2.求1-100的所有数的和 3.输出 1-100 内的所有奇数 4.输出 1-100 内的所有偶数 ...
- 登录案例locustfile.py
# 保存为locustfile.py # coding=utf-8 from locust import HttpLocust, TaskSet, task ''' 实现场景:先登录(只登录一次),然 ...
- JAVA 遍历文件夹下文件并更改文件名称
周末因为一些原因,需要批量更改一些文件的名称,使其随机,就随手写了点代码. 增加一个随机字母: public static void changeName(String path){ File fil ...
- iOS 9 的新功能 universal links
什么是 universal links: (通用链接) 一种能够方便的通过传统 HTTP 链接来启动 APP, 使用相同的网址打开web page和 APP的方式. 第一点,链接打开网址 顾名思义 第 ...
- Python学习进程(14)异常处理
本节介绍Python进行异常处理的方式,异常处理机制可以帮助我们调试python程序. (1)异常的简介: 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行 ...
- cocos2d关于glew32.lib错误(转)
应项目需要使用cocos2d-x开发,又要学习新东东了.·cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,用C++重写cocos2d-iphone引擎的一个开源项目,想了解更多的童鞋美去百 ...