def test_clear_deferred_hook(self): deferred_events.set_deferred_hook('config-changed') deferred_events.set_deferred_hook('leader-settings-changed') self.assertEqual(deferred_events.get_deferred_hooks(), ['config-changed', 'leader-settings-changed']) deferred_events.clear_deferred_hook('leader-settings-changed') self.assertEqual(deferred_events.get_deferred_hooks(), ['config-changed'])
def _run_deferred_hooks(): """Run supported deferred hooks as needed. Run supported deferred hooks as needed. If support for deferring a new hook is added to the charm then this method will need updating. """ if not deferred_events.is_restart_permitted(): deferred_hooks = deferred_events.get_deferred_hooks() if deferred_hooks and 'config-changed' in deferred_hooks: neutron_ovs_hooks.config_changed(check_deferred_restarts=False) deferred_events.clear_deferred_hook('config-changed')
def install(self, check_deferred_events=True): """Run install if permitted. :param check_deferred_events: Whether to check if restarts are permitted before running hook. :type check_deferred_events: bool """ changed = reactive.flags.is_flag_set( 'config.changed.enable-auto-restarts') # Run method if enable-auto-restarts has changed, irrespective of what # it was changed to. This ensure that this method is not immediately # deferred when enable-auto-restarts is initially set to False. if ((not check_deferred_events) or changed or deferred_events.is_restart_permitted()): deferred_events.clear_deferred_hook('install') super().install() else: deferred_events.set_deferred_hook('install')
def _run_deferred_hooks(): """Run supported deferred hooks as needed. Run supported deferred hooks as needed. If support for deferring a new hook is added to the charm then this method will need updating. """ if not deferred_events.is_restart_permitted(): if 'config-changed' in deferred_events.get_deferred_hooks(): log("Running hook config-changed", level=INFO) rabbitmq_server_relations.config_changed( check_deferred_restarts=False) deferred_events.clear_deferred_hook('config-changed') if 'amqp-relation-changed' in deferred_events.get_deferred_hooks(): log("Running hook amqp-relation-changed", level=INFO) # update_clients cycles through amqp relations running # amqp-relation-changed hook. rabbitmq_server_relations.update_clients( check_deferred_restarts=False) deferred_events.clear_deferred_hook('amqp-relation-changed') log("Remaining hooks: {}".format(deferred_events.get_deferred_hooks()), level=INFO)
def configure_ovs(self, sb_conn, mlockall_changed, check_deferred_events=True): """Run configure_ovs if permitted. :param sb_conn: Comma separated string of OVSDB connection methods. :type sb_conn: str :param mlockall_changed: Whether the mlockall param has changed. :type mlockall_changed: bool :param check_deferred_events: Whether to check if restarts are permitted before running hook. :type check_deferred_events: bool """ changed = reactive.flags.is_flag_set( 'config.changed.enable-auto-restarts') # Run method if enable-auto-restarts has changed, irrespective of what # it was changed to. This ensure that this method is not immediately # deferred when enable-auto-restarts is initially set to False. if ((not check_deferred_events) or changed or deferred_events.is_restart_permitted()): deferred_events.clear_deferred_hook('configure_ovs') super().configure_ovs(sb_conn, mlockall_changed) else: deferred_events.set_deferred_hook('configure_ovs')