示例#1
0
 def test_clear_deferred_hooks(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_hooks()
     self.assertEqual(deferred_events.get_deferred_hooks(), [])
 def custom_assess_status_check(self):
     """Report deferred events in charm status message."""
     state = None
     message = None
     deferred_events.check_restart_timestamps()
     events = collections.defaultdict(set)
     for e in deferred_events.get_deferred_events():
         events[e.action].add(e.service)
     for action, svcs in events.items():
         svc_msg = "Services queued for {}: {}".format(
             action, ', '.join(sorted(svcs)))
         state = 'active'
         if message:
             message = "{}. {}".format(message, svc_msg)
         else:
             message = svc_msg
     deferred_hooks = deferred_events.get_deferred_hooks()
     if deferred_hooks:
         state = 'active'
         svc_msg = "Hooks skipped due to disabled auto restarts: {}".format(
             ', '.join(sorted(deferred_hooks)))
         if message:
             message = "{}. {}".format(message, svc_msg)
         else:
             message = svc_msg
     return state, message
示例#3
0
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')
示例#4
0
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)
示例#5
0
def _run_deferred_hooks():
    """Run deferred hooks."""
    deferred_methods = deferred_events.get_deferred_hooks()
    ovsdb = reactive.endpoint_from_flag('ovsdb.available')
    with charms_openstack.charm.provide_charm_instance() as charm_instance:
        if ('install' in deferred_methods or
                'configure_ovs' in deferred_methods):
            charm_instance.install(check_deferred_events=False)
        if 'configure_ovs' in deferred_methods:
            charm_instance.render_with_interfaces(
                charms_openstack.charm.optional_interfaces(
                    (ovsdb,),
                    'nova-compute.connected',
                    'amqp.connected'))
            charm_instance.configure_ovs(
                ','.join(ovsdb.db_sb_connection_strs),
                reactive.is_flag_set('config.changed.disable-mlockall'),
                check_deferred_events=False)
示例#6
0
 def test_get_deferred_hook(self):
     deferred_events.set_deferred_hook('config-changed')
     self.assertEqual(deferred_events.get_deferred_hooks(),
                      ['config-changed'])