1 ##############################################################################
2 # Copyright (c) 2017 ZTE Corporation and others.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
14 cbase = "/var/lib/config-data/puppet-generated/ceilometer"
15 if not os.path.isdir(cbase):
19 def set_notifier_topic():
20 ep_file = cbase + '/etc/ceilometer/event_pipeline.yaml'
21 ep_file_bak = cbase + '/etc/ceilometer/event_pipeline.yaml.bak'
22 event_notifier_topic = 'notifier://?topic=alarm.all'
23 config_modified = False
25 if not os.path.isfile(ep_file):
26 raise Exception("File doesn't exist: %s." % ep_file)
28 with open(ep_file, 'r') as file:
29 config = yaml.safe_load(file)
31 sinks = config['sinks']
33 if sink['name'] == 'event_sink':
34 publishers = sink['publishers']
35 if event_notifier_topic not in publishers:
36 print('Add event notifier in ceilometer')
37 publishers.append(event_notifier_topic)
38 config_modified = True
40 print('NOTE: event notifier is configured'
41 'in ceilometer as we needed')
44 shutil.copyfile(ep_file, ep_file_bak)
45 with open(ep_file, 'w+') as file:
46 file.write(yaml.safe_dump(config))
49 def set_event_definitions():
50 ed_file = cbase + '/etc/ceilometer/event_definitions.yaml'
51 ed_file_bak = cbase + '/etc/ceilometer/event_definitions.bak'
52 orig_ed_file_exist = True
55 if not os.path.isfile(ed_file):
56 # Deployment did not modify file, so it did not exist
57 src_file = '/etc/ceilometer/event_definitions.yaml'
58 if not os.path.isfile(src_file):
60 orig_ed_file_exist = False
62 shutil.copyfile('/etc/ceilometer/event_definitions.yaml', ed_file)
63 if orig_ed_file_exist:
64 with open(ed_file, 'r') as file:
65 config = yaml.safe_load(file)
67 et_list = [et['event_type'] for et in config]
69 if 'compute.instance.update' in et_list:
70 print('NOTE: compute.instance.update allready configured')
72 print('NOTE: add compute.instance.update to event_definitions.yaml')
75 'event_type': 'compute.instance.update',
77 'deleted_at': {'fields': 'payload.deleted_at',
79 'disk_gb': {'fields': 'payload.disk_gb',
81 'display_name': {'fields': 'payload.display_name'},
82 'ephemeral_gb': {'fields': 'payload.ephemeral_gb',
84 'host': {'fields': 'publisher_id.`split(., 1, 1)`'},
85 'instance_id': {'fields': 'payload.instance_id'},
86 'instance_type': {'fields': 'payload.instance_type'},
87 'instance_type_id': {'fields': 'payload.instance_type_id',
89 'launched_at': {'fields': 'payload.launched_at',
91 'memory_mb': {'fields': 'payload.memory_mb',
93 'old_state': {'fields': 'payload.old_state'},
96 "payload.image_meta.'org.openstack__1__architecture'"},
99 "payload.image_meta.'org.openstack__1__os_distro'"},
102 "payload.image_meta.'org.openstack__1__os_version'"},
103 'resource_id': {'fields': 'payload.instance_id'},
104 'root_gb': {'fields': 'payload.root_gb',
106 'service': {'fields': 'publisher_id.`split(., 0, -1)`'},
107 'state': {'fields': 'payload.state'},
108 'tenant_id': {'fields': 'payload.tenant_id'},
109 'user_id': {'fields': 'payload.user_id'},
110 'vcpus': {'fields': 'payload.vcpus', 'type': 'int'}
113 config.append(instance_update)
115 if 'maintenance.scheduled' in et_list:
116 print('NOTE: maintenance.scheduled allready configured')
118 print('NOTE: add maintenance.scheduled to event_definitions.yaml')
121 'event_type': 'maintenance.scheduled',
123 'allowed_actions': {'fields': 'payload.allowed_actions'},
124 'instance_ids': {'fields': 'payload.instance_ids'},
125 'reply_url': {'fields': 'payload.reply_url'},
126 'actions_at': {'fields': 'payload.actions_at',
128 'reply_at': {'fields': 'payload.reply_at', 'type': 'datetime'},
129 'state': {'fields': 'payload.state'},
130 'session_id': {'fields': 'payload.session_id'},
131 'project_id': {'fields': 'payload.project_id'},
132 'metadata': {'fields': 'payload.metadata'}
135 config.append(mscheduled)
137 if 'maintenance.host' in et_list:
138 print('NOTE: maintenance.host allready configured')
140 print('NOTE: add maintenance.host to event_definitions.yaml')
143 'event_type': 'maintenance.host',
145 'host': {'fields': 'payload.host'},
146 'project_id': {'fields': 'payload.project_id'},
147 'state': {'fields': 'payload.state'},
148 'session_id': {'fields': 'payload.session_id'}
154 if orig_ed_file_exist:
155 shutil.copyfile(ed_file, ed_file_bak)
157 with open(ed_file_bak, 'w+') as file:
159 with open(ed_file, 'w+') as file:
160 file.write(yaml.safe_dump(config))
163 set_event_definitions()