def test_config_changed_with_openstack_upgrade(self, configure_https, identity_changed, configs, cluster_joined, admin_relation_changed, mock_log, mock_is_db_initialised, mock_run_in_apache, update, mock_update_domains): def fake_relation_ids(relation): rids = {'identity-service': ['identity-service:0']} return rids.get(relation, []) self.os_release.return_value = 'mitaka' self.enable_memcache.return_value = False self.relation_ids.side_effect = fake_relation_ids mock_run_in_apache.return_value = False self.is_db_ready.return_value = True mock_is_db_initialised.return_value = True self.openstack_upgrade_available.return_value = True self.related_units.return_value = ['unit/0'] hooks.config_changed() self.assertTrue(self.do_openstack_upgrade_reexec.called) self.save_script_rc.assert_called_with() configure_https.assert_called_with() self.assertTrue(configs.write_all.called) self.assertTrue(update.called) self.assertTrue(mock_update_domains.called)
def test_config_changed_no_upgrade_not_leader(self, configure_https, identity_changed, configs, get_homedir, ensure_user, cluster_joined, mock_is_ssl_cert_master, mock_peer_units, mock_ensure_ssl_dir, mock_ensure_permissions, mock_ensure_pki_cert_paths, mock_ensure_pki_permissions, mock_update_all_id_rel_units, ensure_ssl_dirs, mock_ensure_ssl_cert_master, mock_log, git_requested): git_requested.return_value = False mock_is_ssl_cert_master.return_value = True mock_peer_units.return_value = [] self.openstack_upgrade_available.return_value = False self.is_elected_leader.return_value = False mock_ensure_ssl_cert_master.return_value = False hooks.config_changed() ensure_user.assert_called_with(user=self.ssh_user, group='keystone') get_homedir.assert_called_with(self.ssh_user) self.save_script_rc.assert_called_with() configure_https.assert_called_with() self.assertTrue(configs.write_all.called) self.assertFalse(self.migrate_database.called) self.assertFalse(self.ensure_initial_admin.called) self.assertFalse(identity_changed.called)
def test_config_changed_no_upgrade_not_leader(self, configure_https, identity_changed, configs, mock_cluster_joined, mock_log, mock_run_in_apache, update, mock_update_domains, mock_is_db_initialised): def fake_relation_ids(relation): rids = {} return rids.get(relation, []) self.enable_memcache.return_value = False self.os_release.return_value = 'mitaka' self.relation_ids.side_effect = fake_relation_ids mock_run_in_apache.return_value = False self.openstack_upgrade_available.return_value = False mock_is_db_initialised.return_value = True hooks.config_changed() self.assertFalse(mock_cluster_joined.called) self.save_script_rc.assert_called_with() configure_https.assert_called_with() self.assertTrue(configs.write_all.called) self.assertFalse(self.migrate_database.called) self.assertTrue(update.called) self.assertTrue(mock_update_domains.called)
def test_config_changed_no_upgrade_leader( self, configure_https, identity_changed, configs, get_homedir, ensure_user, cluster_joined, admin_relation_changed, mock_peer_units, mock_send_ssl_sync_request, mock_is_ssl_cert_master, mock_ensure_ssl_dir, mock_ensure_pki_cert_paths, mock_ensure_permissions, mock_ensure_pki_dir_permissions, mock_ensure_ssl_dirs, mock_ensure_ssl_cert_master, mock_log, git_requested, mock_is_db_initialised): git_requested.return_value = False mock_is_ssl_cert_master.return_value = True mock_is_db_initialised.return_value = True self.is_db_ready.return_value = True self.openstack_upgrade_available.return_value = False self.is_elected_leader.return_value = True # avoid having to mock syncer mock_ensure_ssl_cert_master.return_value = False mock_peer_units.return_value = [] self.relation_ids.return_value = ['identity-service:0'] self.related_units.return_value = ['unit/0'] hooks.config_changed() ensure_user.assert_called_with(user=self.ssh_user, group='keystone') get_homedir.assert_called_with(self.ssh_user) self.save_script_rc.assert_called_with() configure_https.assert_called_with() self.assertTrue(configs.write_all.called) self.assertTrue(self.ensure_initial_admin.called) self.log.assert_called_with( 'Firing identity_changed hook for all related services.') identity_changed.assert_called_with(relation_id='identity-service:0', remote_unit='unit/0') admin_relation_changed.assert_called_with('identity-service:0')
def test_config_changed_no_upgrade_not_leader(self, configure_https, identity_changed, configs, get_homedir, ensure_user, cluster_joined, mock_is_ssl_cert_master, mock_peer_units, mock_is_pki_enabled, mock_ensure_ssl_dir, mock_ensure_permissions, mock_ensure_pki_permissions, mock_update_all_id_rel_units, ensure_ssl_dirs, mock_ensure_ssl_cert_master, mock_log, git_requested): git_requested.return_value = False mock_is_pki_enabled.return_value = True mock_is_ssl_cert_master.return_value = True mock_peer_units.return_value = [] self.openstack_upgrade_available.return_value = False self.is_elected_leader.return_value = False mock_ensure_ssl_cert_master.return_value = False hooks.config_changed() ensure_user.assert_called_with(user=self.ssh_user, group='keystone') get_homedir.assert_called_with(self.ssh_user) self.save_script_rc.assert_called_with() configure_https.assert_called_with() self.assertTrue(configs.write_all.called) self.assertFalse(self.migrate_database.called) self.assertFalse(self.ensure_initial_admin.called) self.assertFalse(identity_changed.called)
def test_config_changed_with_openstack_upgrade_action( self, config_https, mock_db_init, mock_run_in_apache, os_release): os_release.return_value = 'ocata' self.enable_memcache.return_value = False mock_run_in_apache.return_value = False self.openstack_upgrade_available.return_value = True self.test_config.set('action-managed-upgrade', True) hooks.config_changed() self.assertFalse(self.do_openstack_upgrade_reexec.called)
def openstack_upgrade(): """Perform action-managed OpenStack upgrade. Upgrades packages to the configured openstack-origin version and sets the corresponding action status as a result. If the charm was installed from source we cannot upgrade it. For backwards compatibility a config flag (action-managed-upgrade) must be set for this code to run, otherwise a full service level upgrade will fire on config-changed.""" if do_action_openstack_upgrade("keystone", do_openstack_upgrade, CONFIGS): config_changed()
def test_config_changed_with_openstack_upgrade_action( self, ensure_ssl_cert, ensure_user, get_home, peer_units, is_ssl, config_https, ensure_ssl_dir, config_value_changed, git_requested, mock_db_init, mock_initialise_pki): ensure_ssl_cert.return_value = False peer_units.return_value = [] git_requested.return_value = False self.openstack_upgrade_available.return_value = True self.test_config.set('action-managed-upgrade', True) hooks.config_changed() self.assertFalse(self.do_openstack_upgrade_reexec.called)
def test_config_changed_with_openstack_upgrade_action( self, config_https, mock_db_init, mock_run_in_apache, os_release, mock_maybe_do_policyd_overrides_on_config_changed): self.check_api_application_ready.return_value = (True, 'msg') os_release.return_value = 'ocata' self.enable_memcache.return_value = False mock_run_in_apache.return_value = False self.openstack_upgrade_available.return_value = True self.test_config.set('action-managed-upgrade', True) hooks.config_changed() self.assertFalse(self.do_openstack_upgrade_reexec.called) (mock_maybe_do_policyd_overrides_on_config_changed. assert_called_once_with(ANY, "keystone", restart_handler=ANY))
def test_config_changed_with_openstack_upgrade_action(self, config_https, mock_db_init, mock_run_in_apache, os_release, is_expected_scale): os_release.return_value = 'ocata' self.enable_memcache.return_value = False mock_run_in_apache.return_value = False is_expected_scale.return_value = True self.openstack_upgrade_available.return_value = True self.test_config.set('action-managed-upgrade', True) hooks.config_changed() self.assertFalse(self.do_openstack_upgrade_reexec.called)
def test_config_changed_with_openstack_upgrade(self, configure_https, identity_changed, configs, get_homedir, ensure_user, cluster_joined, admin_relation_changed, mock_peer_units, mock_send_ssl_sync_request, mock_is_ssl_cert_master, mock_ensure_ssl_dir, mock_ensure_permissions, mock_ensure_pki_cert_paths, mock_ensure_pki_permissions, mock_ensure_ssl_dirs, mock_ensure_ssl_cert_master, mock_log, git_requested, mock_is_db_initialised): git_requested.return_value = False mock_is_ssl_cert_master.return_value = True self.is_db_ready.return_value = True mock_is_db_initialised.return_value = True self.openstack_upgrade_available.return_value = True self.is_elected_leader.return_value = True # avoid having to mock syncer mock_ensure_ssl_cert_master.return_value = False mock_peer_units.return_value = [] self.relation_ids.return_value = ['identity-service:0'] self.related_units.return_value = ['unit/0'] hooks.config_changed() ensure_user.assert_called_with(user=self.ssh_user, group='keystone') get_homedir.assert_called_with(self.ssh_user) self.assertTrue(self.do_openstack_upgrade_reexec.called) self.save_script_rc.assert_called_with() configure_https.assert_called_with() self.assertTrue(configs.write_all.called) self.assertTrue(self.ensure_initial_admin.called) self.log.assert_called_with( 'Firing identity_changed hook for all related services.') identity_changed.assert_called_with( relation_id='identity-service:0', remote_unit='unit/0') admin_relation_changed.assert_called_with('identity-service:0')
def test_config_changed_with_openstack_upgrade_action( self, config_https, mock_db_init, mock_run_in_apache, os_release, is_expected_scale, mock_maybe_do_policyd_overrides_on_config_changed): os_release.return_value = 'ocata' self.enable_memcache.return_value = False mock_run_in_apache.return_value = False is_expected_scale.return_value = True self.openstack_upgrade_available.return_value = True self.test_config.set('action-managed-upgrade', True) hooks.config_changed() self.assertFalse(self.do_openstack_upgrade_reexec.called) (mock_maybe_do_policyd_overrides_on_config_changed. assert_called_once_with(ANY, "keystone"))
def test_config_changed_git_updated(self, configure_https, identity_changed, configs, get_homedir, ensure_user, cluster_joined, admin_relation_changed, mock_peer_units, mock_is_db_ready, mock_is_db_initialised, mock_send_ssl_sync_request, mock_ensure_ssl_dir, mock_ensure_ssl_cert_master, mock_log, config_val_changed, git_requested, mock_initialise_pki, mock_run_in_apache, update): mock_run_in_apache.return_value = False git_requested.return_value = True mock_ensure_ssl_cert_master.return_value = False self.openstack_upgrade_available.return_value = False self.is_elected_leader.return_value = True mock_peer_units.return_value = [] self.relation_ids.return_value = ['identity-service:0'] self.related_units.return_value = ['unit/0'] repo = 'cloud:trusty-juno' openstack_origin_git = { 'repositories': [ {'name': 'requirements', 'repository': 'git://git.openstack.org/openstack/requirements', # noqa 'branch': 'stable/juno'}, {'name': 'keystone', 'repository': 'git://git.openstack.org/openstack/keystone', 'branch': 'stable/juno'} ], 'directory': '/mnt/openstack-git', } projects_yaml = yaml.dump(openstack_origin_git) self.test_config.set('openstack-origin', repo) self.test_config.set('openstack-origin-git', projects_yaml) hooks.config_changed() self.git_install.assert_called_with(projects_yaml) self.assertFalse(self.openstack_upgrade_available.called) self.assertFalse(self.do_openstack_upgrade_reexec.called) self.assertTrue(update.called)
def test_config_changed_with_openstack_upgrade(self, configure_https, identity_changed, configs, get_homedir, ensure_user, cluster_joined, admin_relation_changed, mock_peer_units, mock_send_ssl_sync_request, mock_is_ssl_cert_master, mock_ensure_ssl_dir, mock_ensure_permissions, mock_ensure_pki_cert_paths, mock_ensure_pki_permissions, mock_ensure_ssl_dirs, mock_ensure_ssl_cert_master, mock_log, git_requested, mock_is_db_initialised, mock_run_in_apache, update): mock_run_in_apache.return_value = False git_requested.return_value = False mock_is_ssl_cert_master.return_value = True self.is_db_ready.return_value = True mock_is_db_initialised.return_value = True self.openstack_upgrade_available.return_value = True self.is_elected_leader.return_value = True # avoid having to mock syncer mock_ensure_ssl_cert_master.return_value = False mock_peer_units.return_value = [] self.relation_ids.return_value = ['identity-service:0'] self.related_units.return_value = ['unit/0'] hooks.config_changed() ensure_user.assert_called_with(user=self.ssh_user, group='keystone') get_homedir.assert_called_with(self.ssh_user) self.assertTrue(self.do_openstack_upgrade_reexec.called) self.save_script_rc.assert_called_with() configure_https.assert_called_with() self.assertTrue(configs.write_all.called) self.assertTrue(update.called)
def test_config_changed_no_upgrade_leader(self, configure_https, identity_changed, configs, get_homedir, ensure_user, cluster_joined, admin_relation_changed, mock_peer_units, mock_send_ssl_sync_request, mock_is_ssl_cert_master, mock_ensure_ssl_dir, mock_ensure_pki_cert_paths, mock_ensure_permissions, mock_ensure_pki_dir_permissions, mock_ensure_ssl_dirs, mock_ensure_ssl_cert_master, mock_log, git_requested, mock_is_db_initialised, mock_run_in_apache, update): mock_run_in_apache.return_value = False git_requested.return_value = False mock_is_ssl_cert_master.return_value = True mock_is_db_initialised.return_value = True self.is_db_ready.return_value = True self.openstack_upgrade_available.return_value = False self.is_elected_leader.return_value = True # avoid having to mock syncer mock_ensure_ssl_cert_master.return_value = False mock_peer_units.return_value = [] self.relation_ids.return_value = ['identity-service:0'] self.related_units.return_value = ['unit/0'] hooks.config_changed() ensure_user.assert_called_with(user=self.ssh_user, group='keystone') get_homedir.assert_called_with(self.ssh_user) self.save_script_rc.assert_called_with() configure_https.assert_called_with() self.assertTrue(configs.write_all.called) self.open_port.assert_called_with(5000) self.assertTrue(update.called)
def test_config_changed_with_openstack_upgrade_action(self, ensure_ssl_cert, ensure_user, get_home, peer_units, is_ssl, is_pki, config_https, ensure_ssl_dir, config_value_changed, git_requested): ensure_ssl_cert.return_value = False is_pki.return_value = False peer_units.return_value = [] git_requested.return_value = False self.openstack_upgrade_available.return_value = True self.test_config.set('action-managed-upgrade', True) hooks.config_changed() self.assertFalse(self.do_openstack_upgrade_reexec.called)
def test_config_changed_no_upgrade_leader( self, configure_https, identity_changed, configs, mock_cluster_joined, admin_relation_changed, mock_log, mock_is_db_initialised, mock_run_in_apache, update, mock_update_domains, mock_notify_middleware, mock_maybe_do_policyd_overrides_on_config_changed): def fake_relation_ids(relation): rids = { 'cluster': ['cluster:1'], 'identity-service': ['identity-service:0'] } return rids.get(relation, []) self.enable_memcache.return_value = False self.os_release.return_value = 'mitaka' self.relation_ids.side_effect = fake_relation_ids mock_run_in_apache.return_value = False mock_is_db_initialised.return_value = True self.is_db_ready.return_value = True self.openstack_upgrade_available.return_value = False self.related_units.return_value = ['unit/0'] hooks.config_changed() self.save_script_rc.assert_called_with() configure_https.assert_called_with() self.assertTrue(configs.write_all.called) self.open_port.assert_called_with(5000) self.assertTrue(mock_cluster_joined.called) self.assertTrue(update.called) self.assertTrue(mock_update_domains.called) self.assertTrue(mock_notify_middleware.called_once) (mock_maybe_do_policyd_overrides_on_config_changed. assert_called_once_with(ANY, "keystone", restart_handler=ANY))