#!/usr/bin/python import uuid import sys import json from charmhelpers.core.hookenv import ( Hooks, UnregisteredHookError, log, relation_set, ) from charmhelpers.core.host import ( restart_on_change ) from charmhelpers.fetch import ( apt_install, apt_update ) from neutron_ovs_utils import ( determine_packages, register_configs, restart_map, NEUTRON_SETTINGS, ) hooks = Hooks() CONFIGS = register_configs() @hooks.hook() def install(): apt_update() apt_install(determine_packages(), fatal=True) @restart_on_change(restart_map()) @hooks.hook('config-changed') def config_changed(): CONFIGS.write_all() @hooks.hook('neutron-plugin-relation-joined') def neutron_plugin_relation_joined(remote_restart=True): if remote_restart: comment = ('restart', 'Restart Trigger: ' + str(uuid.uuid4())) for conf in NEUTRON_SETTINGS['neutron']: if 'sections' in NEUTRON_SETTINGS['neutron'][conf] and \ 'COMMENT' in NEUTRON_SETTINGS['neutron'][conf]['sections']: NEUTRON_SETTINGS['neutron'][conf]['sections']['COMMENT'].append(comment) relation_set(subordinate_configuration=json.dumps(NEUTRON_SETTINGS)) @restart_on_change(restart_map()) @hooks.hook('neutron-plugin-relation-changed') def neutron_plugin_relation_changed(): CONFIGS.write_all() def main(): try: hooks.execute(sys.argv) except UnregisteredHookError as e: log('Unknown hook {} - skipping.'.format(e)) if __name__ == '__main__': main()