def test_check_local_db_actions_complete_non_leader(
            self, mock_is_db_initialised, mock_is_leader, mock_relation_get,
            mock_relation_set, mock_relation_ids):
        mock_is_leader.return_value = False
        shared_db_rel_id = 'shared-db:1'
        mock_relation_ids.return_value = [shared_db_rel_id]
        mock_is_db_initialised.return_value = True
        r_settings = {}

        def fake_relation_get(unit=None, rid=None, attribute=None):
            if attribute:
                return r_settings.get(attribute)
            else:
                return r_settings

        mock_relation_get.side_effect = fake_relation_get
        nutils.check_local_db_actions_complete()
        self.assertFalse(mock_relation_set.called)
        init_db_val = 'unit/1-{}-1234'.format(shared_db_rel_id)
        r_settings = {nutils.NEUTRON_DB_INIT_RKEY: init_db_val}
        nutils.check_local_db_actions_complete()
        calls = [
            call(
                **{
                    nutils.NEUTRON_DB_INIT_ECHO_RKEY: init_db_val,
                    nutils.NEUTRON_DB_INIT_RKEY: None
                })
        ]
        mock_relation_set.assert_has_calls(calls)
        self.service_restart.assert_called_with('neutron-server')
    def test_check_local_db_actions_complete(self,
                                             mock_is_db_initialised,
                                             mock_relation_get,
                                             mock_relation_set,
                                             mock_relation_ids):
        shared_db_rel_id = 'shared-db:1'
        mock_relation_ids.return_value = [shared_db_rel_id]
        mock_is_db_initialised.return_value = True
        r_settings = {}

        def fake_relation_get(unit=None, rid=None, attribute=None):
            if attribute:
                return r_settings.get(attribute)
            else:
                return r_settings

        mock_relation_get.side_effect = fake_relation_get
        nutils.check_local_db_actions_complete()
        self.assertFalse(mock_relation_set.called)
        init_db_val = 'unit/1-{}-1234'.format(shared_db_rel_id)
        r_settings = {nutils.NEUTRON_DB_INIT_RKEY: init_db_val}
        nutils.check_local_db_actions_complete()
        calls = [call(**{nutils.NEUTRON_DB_INIT_ECHO_RKEY: init_db_val})]
        mock_relation_set.assert_has_calls(calls)
        self.service_restart.assert_called_with('neutron-server')
 def test_check_local_db_actions_complete_leader(
         self, mock_is_db_initialised, mock_is_leader, mock_relation_get,
         mock_relation_set, mock_relation_ids):
     mock_is_leader.return_value = True
     nutils.check_local_db_actions_complete()
     mock_relation_get.assert_not_called()
     mock_relation_set.assert_not_called()
     self.service_restart.assert_not_called()
    def test_check_local_db_actions_complete_by_self(self, mock_relation_get,
                                                     mock_relation_set):
        mock_relation_get.return_value = {}
        nutils.check_local_db_actions_complete()
        self.assertFalse(mock_relation_set.called)

        mock_relation_get.return_value = {nutils.NEUTRON_DB_INIT_RKEY:
                                          'unit/0-1234'}
        nutils.check_local_db_actions_complete()
        self.assertFalse(mock_relation_set.called)
    def test_check_local_db_actions_complete_by_self(self, mock_relation_get,
                                                     mock_relation_set):
        mock_relation_get.return_value = {}
        nutils.check_local_db_actions_complete()
        self.assertFalse(mock_relation_set.called)

        mock_relation_get.return_value = {nutils.NEUTRON_DB_INIT_RKEY:
                                          'unit/0-1234'}
        nutils.check_local_db_actions_complete()
        self.assertFalse(mock_relation_set.called)
def cluster_joined(relation_id=None):
    settings = {}

    for addr_type in ADDRESS_TYPES:
        address = get_relation_ip(
            addr_type,
            cidr_network=config('os-{}-network'.format(addr_type)))
        if address:
            settings['{}-address'.format(addr_type)] = address

    settings['private-address'] = get_relation_ip('cluster')

    relation_set(relation_id=relation_id, relation_settings=settings)

    if not relation_id:
        check_local_db_actions_complete()
def cluster_joined(relation_id=None):
    settings = {}

    for addr_type in ADDRESS_TYPES:
        address = get_relation_ip(
            addr_type,
            cidr_network=config('os-{}-network'.format(addr_type)))
        if address:
            settings['{}-address'.format(addr_type)] = address

    settings['private-address'] = get_relation_ip('cluster')

    relation_set(relation_id=relation_id, relation_settings=settings)

    if not relation_id:
        check_local_db_actions_complete()
def cluster_changed():
    CONFIGS.write_all()
    check_local_db_actions_complete()
def cluster_changed():
    CONFIGS.write_all()
    check_local_db_actions_complete()