aboutsummaryrefslogtreecommitdiffstats
path: root/charms/trusty/ceilometer-agent/hooks/ceilometer_contexts.py
diff options
context:
space:
mode:
authorStuart Mackie <wsmackie@juniper.net>2016-10-07 12:24:58 -0700
committerStuart Mackie <wsmackie@juniper.net>2016-10-07 12:24:58 -0700
commit4faa7f927149a5c4ef7a03523f7bc14523cb9baa (patch)
tree0be55aa0809cc395e45baeae63db660b4e72fe83 /charms/trusty/ceilometer-agent/hooks/ceilometer_contexts.py
parent82f1a7eb5535b30a95b1e71ff18c315d40d1e6f0 (diff)
Charms for Contrail 3.1 with Mitaka
Change-Id: Id37f3b9743d1974e31fcd7cd9c54be41bb0c47fb Signed-off-by: Stuart Mackie <wsmackie@juniper.net>
Diffstat (limited to 'charms/trusty/ceilometer-agent/hooks/ceilometer_contexts.py')
-rw-r--r--charms/trusty/ceilometer-agent/hooks/ceilometer_contexts.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/charms/trusty/ceilometer-agent/hooks/ceilometer_contexts.py b/charms/trusty/ceilometer-agent/hooks/ceilometer_contexts.py
new file mode 100644
index 0000000..6523e79
--- /dev/null
+++ b/charms/trusty/ceilometer-agent/hooks/ceilometer_contexts.py
@@ -0,0 +1,73 @@
+# Copyright 2016 Canonical Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import base64
+import os
+
+from charmhelpers.core.hookenv import (
+ relation_ids,
+ relation_get,
+ related_units,
+)
+
+from charmhelpers.contrib.openstack.context import (
+ OSContextGenerator,
+ context_complete
+)
+
+
+class CeilometerServiceContext(OSContextGenerator):
+ interfaces = ['ceilometer-service']
+ keys = [
+ 'debug',
+ 'verbose',
+ 'rabbitmq_host',
+ 'rabbitmq_user',
+ 'rabbitmq_password',
+ 'rabbitmq_virtual_host',
+ 'auth_protocol',
+ 'auth_host',
+ 'auth_port',
+ 'admin_tenant_name',
+ 'admin_user',
+ 'admin_password',
+ 'metering_secret'
+ ]
+
+ optional_keys = [
+ 'rabbit_ssl_port',
+ 'rabbit_ssl_ca'
+ ]
+
+ def __init__(self, ssl_dir=None):
+ self.ssl_dir = ssl_dir
+
+ def __call__(self):
+ for relid in relation_ids('ceilometer-service'):
+ for unit in related_units(relid):
+ conf = {}
+ for attr in self.keys:
+ conf[attr] = relation_get(
+ attr, unit=unit, rid=relid)
+ if context_complete(conf):
+ for attr in self.optional_keys:
+ conf[attr] = relation_get(attr, unit=unit, rid=relid)
+ if conf.get('rabbit_ssl_ca') is not None:
+ ca_path = os.path.join(
+ self.ssl_dir, 'rabbit-client-ca.pem')
+ with open(ca_path, 'w') as fh:
+ fh.write(base64.b64decode(conf['rabbit_ssl_ca']))
+ conf['rabbit_ssl_ca'] = ca_path
+ return conf
+ return {}