diff --git a/src/config.yaml b/src/config.yaml index 8eb4ebc..1d9e207 100644 --- a/src/config.yaml +++ b/src/config.yaml @@ -3,3 +3,11 @@ options: type: string default: RegionOne description: OpenStack Region + config-flags: + type: string + default: + description: | + Setting multiple arbitrary config variables and these + will be converted into dictionary and masakarimonitors.conf will be populated + accordingly. This will enable an operator to have the flexibility for having + multiple arbitrary config flags. diff --git a/src/lib/charm/openstack/masakari_monitors.py b/src/lib/charm/openstack/masakari_monitors.py index 719deaa..0f47aa7 100644 --- a/src/lib/charm/openstack/masakari_monitors.py +++ b/src/lib/charm/openstack/masakari_monitors.py @@ -59,3 +59,9 @@ class MasakariMonitorsCharm(charms_openstack.charm.OpenStackCharm): def install(self): super(MasakariMonitorsCharm, self).install() + + # convert comma seprated list of config_flags into a dictionary + @charms_openstack.adapters.config_property + def user_config_flags(self): + return dict(map(lambda x: x.split('='), + self.config.get('config-flags').split(', '))) diff --git a/src/templates/masakarimonitors.conf b/src/templates/masakarimonitors.conf index 2fac4f7..74f1fd1 100644 --- a/src/templates/masakarimonitors.conf +++ b/src/templates/masakarimonitors.conf @@ -19,6 +19,9 @@ password = {{ identity_credentials.credentials_password }} project_domain_id = {{ identity_credentials.credentials_project_domain_id }} user_domain_id = {{ identity_credentials.credentials_user_domain_id }} region = {{ options.region }} +{% for key, value in options.config_flags.items() -%} +{{ key }} = {{ value }} +{% endfor -%} [callback] [cors] [healthcheck] diff --git a/unit_tests/test_lib_charm_openstack_masakari_monitors.py b/unit_tests/test_lib_charm_openstack_masakari_monitors.py index bee9687..45e45ff 100644 --- a/unit_tests/test_lib_charm_openstack_masakari_monitors.py +++ b/unit_tests/test_lib_charm_openstack_masakari_monitors.py @@ -51,3 +51,11 @@ class TestMasakariMonitorsCharm(Helper): c.request_credentials() keystone_relation.request_credentials.assert_called_once_with( 'masakari-monitors', project='services') + + def test_user_config_flags(self): + charm = self.\ + _patch_config_and_charm({'config-flags': 'k1=v1, k2=v2'}) + config = charm.user_config_flags() + # Add check here that configuration is as expected. + self.assertEqual(config.get('k1'), "v1") + self.assertEqual(config.get('k2'), "v2")