Merge lp:~corey.bryant/charms/trusty/ceilometer/aodh-conf into lp:~openstack-charmers-archive/charms/trusty/ceilometer/next

Proposed by Corey Bryant
Status: Work in progress
Proposed branch: lp:~corey.bryant/charms/trusty/ceilometer/aodh-conf
Merge into: lp:~openstack-charmers-archive/charms/trusty/ceilometer/next
Diff against target: 336 lines (+192/-19)
4 files modified
lib/ceilometer_contexts.py (+60/-2)
lib/ceilometer_utils.py (+44/-17)
templates/mitaka/aodh.conf (+44/-0)
templates/mitaka/ceilometer.conf (+44/-0)
To merge this branch: bzr merge lp:~corey.bryant/charms/trusty/ceilometer/aodh-conf
Reviewer Review Type Date Requested Status
OpenStack Charmers Pending
Review via email: mp+282819@code.launchpad.net
To post a comment you must log in.
114. By Corey Bryant

Add ceilomter.conf template support and adjust aodh.conf template

115. By Corey Bryant

Update comment in template files to mitaka

116. By Corey Bryant

Update aodh context and separate from ceilometer context

Unmerged revisions

116. By Corey Bryant

Update aodh context and separate from ceilometer context

115. By Corey Bryant

Update comment in template files to mitaka

114. By Corey Bryant

Add ceilomter.conf template support and adjust aodh.conf template

113. By Corey Bryant

Add aodh.conf template support

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/ceilometer_contexts.py'
2--- lib/ceilometer_contexts.py 2015-10-16 12:29:41 +0000
3+++ lib/ceilometer_contexts.py 2016-01-19 18:54:49 +0000
4@@ -19,6 +19,7 @@
5 )
6
7 CEILOMETER_DB = 'ceilometer'
8+AODH_DB = 'aodh'
9
10
11 class LoggingConfigContext(OSContextGenerator):
12@@ -26,13 +27,13 @@
13 return {'debug': config('debug'), 'verbose': config('verbose')}
14
15
16-class MongoDBContext(OSContextGenerator):
17+class MongoDBContextCeilometer(OSContextGenerator):
18 interfaces = ['mongodb']
19
20 def __call__(self):
21 mongo_servers = []
22 replset = None
23- use_replset = os_release('ceilometer-api') >= 'icehouse'
24+ use_replset = True
25
26 for relid in relation_ids('shared-db'):
27 rel_units = related_units(relid)
28@@ -69,7 +70,51 @@
29 return {}
30
31
32+class MongoDBContextAodh(OSContextGenerator):
33+ interfaces = ['mongodb']
34+
35+ def __call__(self):
36+ mongo_servers = []
37+ replset = None
38+ use_replset = os_release('aodh-api') >= 'icehouse'
39+
40+ for relid in relation_ids('shared-db'):
41+ rel_units = related_units(relid)
42+ use_replset = use_replset and (len(rel_units) > 1)
43+
44+ for unit in rel_units:
45+ host = relation_get('hostname', unit, relid)
46+ port = relation_get('port', unit, relid)
47+
48+ conf = {
49+ "db_host": host,
50+ "db_port": port,
51+ "db_name": AODH_DB
52+ }
53+
54+ if not context_complete(conf):
55+ continue
56+
57+ if not use_replset:
58+ return conf
59+
60+ if replset is None:
61+ replset = relation_get('replset', unit, relid)
62+
63+ mongo_servers.append('{}:{}'.format(host, port))
64+
65+ if mongo_servers:
66+ return {
67+ 'db_mongo_servers': ','.join(mongo_servers),
68+ 'db_name': AODH_DB,
69+ 'db_replset': replset
70+ }
71+
72+ return {}
73+
74+
75 CEILOMETER_PORT = 8777
76+AODH_PORT = 8042
77
78
79 class CeilometerContext(OSContextGenerator):
80@@ -85,6 +130,19 @@
81 return ctxt
82
83
84+class AodhContext(OSContextGenerator):
85+ def __call__(self):
86+ # Lazy-import to avoid a circular dependency in the imports
87+ from ceilometer_utils import get_shared_secret
88+
89+ ctxt = {
90+ 'api_workers': config('api-workers'),
91+ 'port': AODH_PORT,
92+ 'metering_secret': get_shared_secret()
93+ }
94+ return ctxt
95+
96+
97 class CeilometerServiceContext(OSContextGenerator):
98 interfaces = ['ceilometer-service']
99
100
101=== modified file 'lib/ceilometer_utils.py'
102--- lib/ceilometer_utils.py 2016-01-06 14:59:34 +0000
103+++ lib/ceilometer_utils.py 2016-01-19 18:54:49 +0000
104@@ -10,8 +10,10 @@
105 from ceilometer_contexts import (
106 ApacheSSLContext,
107 LoggingConfigContext,
108- MongoDBContext,
109+ MongoDBContextCeilometer,
110+ MongoDBContextAodh,
111 CeilometerContext,
112+ AodhContext,
113 HAProxyContext
114 )
115 from charmhelpers.contrib.openstack.utils import (
116@@ -28,6 +30,8 @@
117 HAPROXY_CONF = '/etc/haproxy/haproxy.cfg'
118 CEILOMETER_CONF_DIR = "/etc/ceilometer"
119 CEILOMETER_CONF = "%s/ceilometer.conf" % CEILOMETER_CONF_DIR
120+AODH_CONF_DIR = "/etc/aodh"
121+AODH_CONF = "%s/aodh.conf" % AODH_CONF_DIR
122 HTTPS_APACHE_CONF = "/etc/apache2/sites-available/openstack_https_frontend"
123 HTTPS_APACHE_24_CONF = "/etc/apache2/sites-available/" \
124 "openstack_https_frontend.conf"
125@@ -40,16 +44,15 @@
126 'ceilometer-agent-notification',
127 ]
128
129-ICEHOUSE_SERVICES = [
130+CEILOMETER_ICEHOUSE_SERVICES = [
131 'ceilometer-alarm-notifier',
132 'ceilometer-alarm-evaluator',
133- 'ceilometer-agent-notification'
134 ]
135
136-MITAKA_SERVICES = [
137+# aodh is used in >= mitaka
138+AODH_SERVICES = [
139 'aodh-notifier',
140 'aodh-evaluator',
141- 'ceilometer-agent-notification'
142 ]
143
144 CEILOMETER_DB = "ceilometer"
145@@ -64,16 +67,20 @@
146 'python-pymongo',
147 ]
148
149-ICEHOUSE_PACKAGES = [
150+CEILOMETER_ICEHOUSE_PACKAGES = [
151 'ceilometer-alarm-notifier',
152 'ceilometer-alarm-evaluator',
153- 'ceilometer-agent-notification'
154-]
155-
156-MITAKA_PACKAGES = [
157+ 'ceilometer-agent-notification',
158+]
159+
160+CEILOMETER_MITAKA_PACKAGES = [
161+ 'ceilometer-agent-notification',
162+]
163+
164+# aodh is used in >= mitaka
165+AODH_PACKAGES = [
166 'aodh-notifier',
167 'aodh-evaluator',
168- 'ceilometer-agent-notification'
169 ]
170
171 REQUIRED_INTERFACES = {
172@@ -91,12 +98,23 @@
173 service_user=SVC),
174 context.AMQPContext(ssl_dir=CEILOMETER_CONF_DIR),
175 LoggingConfigContext(),
176- MongoDBContext(),
177+ MongoDBContextCeilometer(),
178 CeilometerContext(),
179 context.SyslogContext(),
180 HAProxyContext()],
181 'services': CEILOMETER_BASE_SERVICES
182 }),
183+ (AODH_CONF, {
184+ 'hook_contexts': [context.IdentityServiceContext(service=SVC,
185+ service_user=SVC),
186+ context.AMQPContext(ssl_dir=AODH_CONF_DIR),
187+ LoggingConfigContext(),
188+ MongoDBContextAodh(),
189+ AodhContext(),
190+ context.SyslogContext(),
191+ HAProxyContext()],
192+ 'services': AODH_SERVICES
193+ }),
194 (HAPROXY_CONF, {
195 'hook_contexts': [context.HAProxyContext(singlenode_mode=True),
196 HAProxyContext()],
197@@ -216,9 +234,9 @@
198 def ceilometer_release_services():
199 codename = get_os_codename_install_source(config('openstack-origin'))
200 if codename >= 'mitaka':
201- return MITAKA_SERVICES
202+ return []
203 elif codename >= 'icehouse':
204- return ICEHOUSE_SERVICES
205+ return CEILOMETER_ICEHOUSE_SERVICES
206 else:
207 return []
208
209@@ -226,16 +244,25 @@
210 def ceilometer_release_packages():
211 codename = get_os_codename_install_source(config('openstack-origin'))
212 if codename >= 'mitaka':
213- return MITAKA_PACKAGES
214+ return CEILOMETER_MITAKA_PACKAGES
215 elif codename >= 'icehouse':
216- return ICEHOUSE_PACKAGES
217+ return CEILOMETER_ICEHOUSE_PACKAGES
218+ else:
219+ return []
220+
221+
222+def aodh_release_packages():
223+ codename = get_os_codename_install_source(config('openstack-origin'))
224+ if codename >= 'mitaka':
225+ return AODH_PACKAGES
226 else:
227 return []
228
229
230 def get_packages():
231 packages = (deepcopy(CEILOMETER_BASE_PACKAGES) +
232- ceilometer_release_packages())
233+ ceilometer_release_packages() +
234+ aodh_release_packages())
235 return packages
236
237
238
239=== added directory 'templates/mitaka'
240=== added file 'templates/mitaka/aodh.conf'
241--- templates/mitaka/aodh.conf 1970-01-01 00:00:00 +0000
242+++ templates/mitaka/aodh.conf 2016-01-19 18:54:49 +0000
243@@ -0,0 +1,44 @@
244+# mitaka
245+###############################################################################
246+# [ WARNING ]
247+# aodh configuration file maintained by Juju
248+# local changes may be overwritten.
249+###############################################################################
250+[DEFAULT]
251+debug = {{ debug }}
252+verbose = {{ verbose }}
253+use_syslog = {{ use_syslog }}
254+
255+[oslo_messaging_rabbit]
256+{% include "parts/rabbitmq" -%}
257+
258+[api]
259+port = {{ port }}
260+workers = {{ api_workers }}
261+
262+[service_credentials]
263+os_auth_url = {{ service_protocol }}://{{ service_host }}:{{ service_port }}/v2.0
264+os_tenant_name = {{ admin_tenant_name }}
265+os_username = {{ admin_user }}
266+os_password = {{ admin_password }}
267+
268+[database]
269+{% if db_replset: -%}
270+connection = mongodb://{{ db_mongo_servers }}/{{ db_name }}?readPreference=primaryPreferred&replicaSet={{ db_replset }}
271+mongodb_replica_set = {{ db_replset }}
272+{% else -%}
273+connection = mongodb://{{ db_host }}:{{ db_port }}/{{ db_name }}
274+{% endif %}
275+
276+[publisher_rpc]
277+metering_secret = {{ metering_secret }}
278+
279+[keystone_authtoken]
280+auth_uri = {{ service_protocol }}://{{ service_host }}:{{ service_port }}/
281+auth_host = {{ auth_host }}
282+auth_port = {{ auth_port }}
283+auth_protocol = {{ auth_protocol }}
284+admin_tenant_name = {{ admin_tenant_name }}
285+admin_user = {{ admin_user }}
286+admin_password = {{ admin_password }}
287+signing_dir = {{ signing_dir }}
288
289=== added file 'templates/mitaka/ceilometer.conf'
290--- templates/mitaka/ceilometer.conf 1970-01-01 00:00:00 +0000
291+++ templates/mitaka/ceilometer.conf 2016-01-19 18:54:49 +0000
292@@ -0,0 +1,44 @@
293+# mitaka
294+###############################################################################
295+# [ WARNING ]
296+# ceilometer configuration file maintained by Juju
297+# local changes may be overwritten.
298+###############################################################################
299+[DEFAULT]
300+debug = {{ debug }}
301+verbose = {{ verbose }}
302+use_syslog = {{ use_syslog }}
303+
304+[oslo_messaging_rabbit]
305+{% include "parts/rabbitmq" -%}
306+
307+[api]
308+port = {{ port }}
309+workers = {{ api_workers }}
310+
311+[service_credentials]
312+os_auth_url = {{ service_protocol }}://{{ service_host }}:{{ service_port }}/v2.0
313+os_tenant_name = {{ admin_tenant_name }}
314+os_username = {{ admin_user }}
315+os_password = {{ admin_password }}
316+
317+[database]
318+{% if db_replset: -%}
319+connection = mongodb://{{ db_mongo_servers }}/{{ db_name }}?readPreference=primaryPreferred&replicaSet={{ db_replset }}
320+mongodb_replica_set = {{ db_replset }}
321+{% else -%}
322+connection = mongodb://{{ db_host }}:{{ db_port }}/{{ db_name }}
323+{% endif %}
324+
325+[publisher_rpc]
326+metering_secret = {{ metering_secret }}
327+
328+[keystone_authtoken]
329+auth_uri = {{ service_protocol }}://{{ service_host }}:{{ service_port }}/
330+auth_host = {{ auth_host }}
331+auth_port = {{ auth_port }}
332+auth_protocol = {{ auth_protocol }}
333+admin_tenant_name = {{ admin_tenant_name }}
334+admin_user = {{ admin_user }}
335+admin_password = {{ admin_password }}
336+signing_dir = {{ signing_dir }}

Subscribers

People subscribed via source and target branches