Пример #1
0
    def test_config_changed_with_openstack_upgrade_action(self):
        self.openstack_upgrade_available.return_value = True
        self.test_config.set('action-managed-upgrade', True)
        self.migration_enabled.return_value = False

        hooks.config_changed()
        self.assertFalse(self.do_openstack_upgrade.called)
 def test_config_changed_no_upgrade_no_migration(self, compute_joined):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = False
     self.migration_enabled.return_value = False
     hooks.config_changed()
     self.assertFalse(self.do_openstack_upgrade.called)
     self.assertFalse(compute_joined.called)
 def test_config_changed_no_upgrade_no_migration(self, compute_joined):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = False
     self.migration_enabled.return_value = False
     hooks.config_changed()
     self.assertFalse(self.do_openstack_upgrade.called)
     self.assertFalse(compute_joined.called)
    def test_config_changed_with_openstack_upgrade_action(self, git_requested):
        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.called)
 def test_config_changed_with_sysctl(self, compute_joined):
     self.migration_enabled.return_value = False
     self.service_running.return_value = True
     self.test_config.set('sysctl', '{foo : bar}')
     hooks.config_changed()
     self.create_sysctl.assert_called_with(
         '{foo : bar}', '/etc/sysctl.d/50-nova-compute.conf', ignore=True)
 def test_config_changed_with_sysctl_swappy_default(self, compute_joined):
     self.git_install_requested.return_value = False
     self.test_config.set('sysctl', '{ kernel.max_pid : "1337" }')
     hooks.config_changed()
     self.create_sysctl.assert_called_with(
         "{kernel.max_pid: '1337', vm.swappiness: 1}\n",
         '/etc/sysctl.d/50-nova-compute.conf')
 def test_config_changed_nrpe(self, compute_joined):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = False
     self.migration_enabled.return_value = False
     self.is_relation_made.return_value = True
     hooks.config_changed()
     self.assertTrue(self.update_nrpe_config.called)
Пример #8
0
 def test_config_changed_use_multipath_false(self,
                                             compute_joined):
     self.service_running.return_value = True
     self.test_config.set('use-multipath', False)
     hooks.config_changed()
     self.assertEqual(self.filter_installed_packages.call_count, 0)
     self.service_start.assert_not_called()
 def test_config_changed_nrpe(self, compute_joined):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = False
     self.migration_enabled.return_value = False
     self.is_relation_made.return_value = True
     hooks.config_changed()
     self.assertTrue(self.update_nrpe_config.called)
 def test_config_changed_invalid_migration(self, compute_joined):
     self.migration_enabled.return_value = True
     self.test_config.set('migration-auth-type', 'none')
     with self.assertRaises(Exception) as context:
         hooks.config_changed()
         self.assertEqual(context.exception.message,
                          'Invalid migration-auth-type')
Пример #11
0
 def test_config_changed_use_multipath_true(self,
                                            compute_joined):
     self.test_config.set('use-multipath', True)
     self.filter_installed_packages.return_value = []
     hooks.config_changed()
     self.assertEqual(self.filter_installed_packages.call_count, 1)
     self.apt_install.assert_called_with(hooks.MULTIPATH_PACKAGES,
                                         fatal=True)
 def test_config_changed_with_sysctl_in_container(self, compute_joined):
     self.migration_enabled.return_value = False
     self.is_container.return_value = True
     self.service_running.return_value = True
     self.test_config.set('sysctl', '{foo : bar}')
     hooks.config_changed()
     self.create_sysctl.assert_not_called()
     self.service_start.assert_not_called()
 def test_config_changed_nrpe(self, compute_joined):
     self.openstack_upgrade_available.return_value = False
     self.migration_enabled.return_value = False
     self.is_relation_made.return_value = True
     self.service_running.return_value = True
     hooks.config_changed()
     self.assertTrue(self.update_nrpe_config.called)
     self.service_start.assert_not_called()
 def test_config_changed_no_upgrade_no_migration(self, compute_joined):
     self.openstack_upgrade_available.return_value = False
     self.migration_enabled.return_value = False
     self.service_running.return_value = True
     hooks.config_changed()
     self.assertFalse(self.do_openstack_upgrade.called)
     self.assertFalse(compute_joined.called)
     self.service_start.assert_not_called()
 def test_config_changed_with_sysctl(self, compute_joined):
     self.migration_enabled.return_value = False
     self.test_config.set(
         'sysctl', '{ kernel.max_pid : "1337", vm.swappiness : 10 }')
     hooks.config_changed()
     self.create_sysctl.assert_called_with(
         "{kernel.max_pid: '1337', vm.swappiness: 10}\n",
         '/etc/sysctl.d/50-nova-compute.conf')
 def test_config_changed_with_sysctl_swappy_default(self, compute_joined):
     self.git_install_requested.return_value = False
     self.test_config.set(
         'sysctl',
         '{ kernel.max_pid : "1337" }')
     hooks.config_changed()
     self.create_sysctl.assert_called_with(
         "{kernel.max_pid: '1337', vm.swappiness: 1}\n",
         '/etc/sysctl.d/50-nova-compute.conf')
def openstack_upgrade():
    """Upgrade packages to config-set Openstack version.

    If the charm was installed from source we cannot upgrade it.
    For backwards compatibility a config flag must be set for this
    code to run, otherwise a full service level upgrade will fire
    on config-changed."""

    if (do_action_openstack_upgrade('nova-common', do_openstack_upgrade,
                                    CONFIGS)):
        config_changed()
Пример #18
0
    def test_config_changed_with_upgrade(self, neutron_plugin_joined):
        self.git_install_requested.return_value = False
        self.openstack_upgrade_available.return_value = True

        def rel_ids(x):
            return {'neutron-plugin': ['rid1']}.get(x, [])

        self.relation_ids.side_effect = rel_ids
        hooks.config_changed()
        self.assertTrue(self.do_openstack_upgrade.called)
        neutron_plugin_joined.assert_called_with('rid1', remote_restart=True)
 def test_config_changed_without_resize(self, compute_joined,
                                        neutron_plugin_joined):
     self.test_config.set('enable-resize', False)
     self.migration_enabled.return_value = False
     self.relation_ids.return_value = ['cloud-compute:0', 'cloud-compute:1']
     hooks.config_changed()
     ex = [
         call('cloud-compute:0'),
         call('cloud-compute:1'),
     ]
     self.assertEqual(ex, compute_joined.call_args_list)
     self.disable_shell.assert_called_with(user='******')
def openstack_upgrade():
    """Upgrade packages to config-set Openstack version.

    If the charm was installed from source we cannot upgrade it.
    For backwards compatibility a config flag must be set for this
    code to run, otherwise a full service level upgrade will fire
    on config-changed."""

    if (do_action_openstack_upgrade('nova-common',
                                    do_openstack_upgrade,
                                    CONFIGS)):
        config_changed()
 def test_config_changed_with_migration(self, compute_joined,
                                        neutron_plugin_joined):
     self.migration_enabled.return_value = True
     self.test_config.set('migration-auth-type', 'ssh')
     self.relation_ids.return_value = ['cloud-compute:0', 'cloud-compute:1']
     hooks.config_changed()
     ex = [
         call('cloud-compute:0'),
         call('cloud-compute:1'),
     ]
     self.assertEqual(ex, compute_joined.call_args_list)
     self.assertTrue(self.initialize_ssh_keys.called)
 def test_config_changed_instances_path(self, compute_joined, exists):
     self.service_running.return_value = True
     self.test_config.set('instances-path', '/srv/instances')
     exists.return_value = False
     hooks.config_changed()
     exists.assert_called_once_with('/srv/instances')
     self.mkdir.assert_called_once_with(path='/srv/instances',
                                        owner='nova',
                                        group='nova',
                                        perms=0o775)
     self.service_start.assert_not_called()
     self.fix_path_ownership.assert_called_once_with('/srv/instances',
                                                     user='******')
 def test_config_changed_with_migration(self, compute_joined):
     self.migration_enabled.return_value = True
     self.test_config.set('migration-auth-type', 'ssh')
     self.relation_ids.return_value = [
         'cloud-compute:0',
         'cloud-compute:1'
     ]
     hooks.config_changed()
     ex = [
         call('cloud-compute:0'),
         call('cloud-compute:1'),
     ]
     self.assertEquals(ex, compute_joined.call_args_list)
    def test_config_changed_with_upgrade(self, neutron_plugin_joined,
                                         ceph_changed):
        self.git_install_requested.return_value = False
        self.openstack_upgrade_available.return_value = True

        def rel_ids(x):
            return {'neutron-plugin': ['rid1'],
                    'ceph': ['ceph:0']}.get(x, [])
        self.relation_ids.side_effect = rel_ids
        self.related_units.return_value = ['ceph/0']
        hooks.config_changed()
        self.assertTrue(self.do_openstack_upgrade.called)
        neutron_plugin_joined.assert_called_with('rid1', remote_restart=True)
        ceph_changed.assert_called_with(rid='ceph:0', unit='ceph/0')
 def test_config_changed_without_resize(self, compute_joined,
                                        neutron_plugin_joined):
     self.git_install_requested.return_value = False
     self.test_config.set('enable-resize', False)
     _zmq_joined = self.patch('zeromq_configuration_relation_joined')
     self.relation_ids.return_value = ['cloud-compute:0', 'cloud-compute:1']
     hooks.config_changed()
     ex = [
         call('cloud-compute:0'),
         call('cloud-compute:1'),
     ]
     self.assertEqual(ex, compute_joined.call_args_list)
     self.disable_shell.assert_called_with(user='******')
     self.assertTrue(_zmq_joined.called)
Пример #26
0
    def test_config_changed_with_upgrade(self, neutron_plugin_joined,
                                         ceph_changed):
        self.openstack_upgrade_available.return_value = True

        def rel_ids(x):
            return {'neutron-plugin': ['rid1'],
                    'ceph': ['ceph:0']}.get(x, [])
        self.relation_ids.side_effect = rel_ids
        self.related_units.return_value = ['ceph/0']
        self.migration_enabled.return_value = False
        hooks.config_changed()
        self.assertTrue(self.do_openstack_upgrade.called)
        neutron_plugin_joined.assert_called_with('rid1', remote_restart=True)
        ceph_changed.assert_called_with(rid='ceph:0', unit='ceph/0')
        self.configure_local_ephemeral_storage.assert_called_once_with()
 def test_config_changed_with_resize(self, compute_joined,
                                     neutron_plugin_joined):
     self.test_config.set('enable-resize', True)
     self.migration_enabled.return_value = False
     self.relation_ids.return_value = ['cloud-compute:0', 'cloud-compute:1']
     self.service_running.return_value = True
     hooks.config_changed()
     ex = [
         call('cloud-compute:0'),
         call('cloud-compute:1'),
     ]
     self.assertEqual(ex, compute_joined.call_args_list)
     self.initialize_ssh_keys.assert_called_with(user='******')
     self.enable_shell.assert_called_with(user='******')
     self.service_start.assert_not_called()
Пример #28
0
def git_reinstall():
    """Reinstall from source and restart services.

    If the openstack-origin-git config option was used to install openstack
    from source git repositories, then this action can be used to reinstall
    from updated git repositories, followed by a restart of services."""
    if not git_install_requested():
        action_fail('openstack-origin-git is not configured')
        return

    try:
        git_install(config('openstack-origin-git'))
        config_changed()
    except:
        action_set({'traceback': traceback.format_exc()})
        action_fail('git-reinstall resulted in an unexpected error')
Пример #29
0
def git_reinstall():
    """Reinstall from source and restart services.

    If the openstack-origin-git config option was used to install openstack
    from source git repositories, then this action can be used to reinstall
    from updated git repositories, followed by a restart of services."""
    if not git_install_requested():
        action_fail('openstack-origin-git is not configured')
        return

    try:
        git_install(config('openstack-origin-git'))
        config_changed()
    except:
        action_set({'traceback': traceback.format_exc()})
        action_fail('git-reinstall resulted in an unexpected error')
Пример #30
0
 def test_config_changed_without_resize(self, compute_joined):
     self.git_install_requested.return_value = False
     self.test_config.set('enable-resize', False)
     _zmq_joined = self.patch('zeromq_configuration_relation_joined')
     self.relation_ids.return_value = [
         'cloud-compute:0',
         'cloud-compute:1'
     ]
     hooks.config_changed()
     ex = [
         call('cloud-compute:0'),
         call('cloud-compute:1'),
     ]
     self.assertEquals(ex, compute_joined.call_args_list)
     self.disable_shell.assert_called_with(user='******')
     self.assertTrue(_zmq_joined.called)
Пример #31
0
 def test_config_changed_with_migration(self, compute_joined):
     self.git_install_requested.return_value = False
     self.migration_enabled.return_value = True
     _zmq_joined = self.patch('zeromq_configuration_relation_joined')
     self.test_config.set('migration-auth-type', 'ssh')
     self.relation_ids.return_value = [
         'cloud-compute:0',
         'cloud-compute:1'
     ]
     hooks.config_changed()
     ex = [
         call('cloud-compute:0'),
         call('cloud-compute:1'),
     ]
     self.assertEquals(ex, compute_joined.call_args_list)
     self.assertTrue(self.initialize_ssh_keys.called)
     self.assertTrue(_zmq_joined.called)
def openstack_upgrade():
    """Upgrade packages to config-set Openstack version.

    If the charm was installed from source we cannot upgrade it.
    For backwards compatibility a config flag must be set for this
    code to run, otherwise a full service level upgrade will fire
    on config-changed."""

    if (do_action_openstack_upgrade('nova-common', do_openstack_upgrade,
                                    CONFIGS)):
        # we should restart the container scoped (subordinate) plugins after a
        # managed openstack upgrade see: BUG#1835557
        for rid in relation_ids('neutron-plugin'):
            neutron_plugin_joined(rid, remote_restart=True)
        for rid in relation_ids('nova-ceilometer'):
            nova_ceilometer_joined(rid, remote_restart=True)
        # NOTE(ajkavanagh) - if unit is paused (usually true for managed
        # upgrade) then the config_changed() function is a no-op
        config_changed()
 def test_config_changed_git(self, config_val_changed):
     self.git_install_requested.return_value = True
     repo = 'cloud:trusty-juno'
     openstack_origin_git = {
         'repositories': [
             {'name': 'requirements',
              'repository':
              'git://git.openstack.org/openstack/requirements',
              'branch': 'stable/juno'},
             {'name': 'nova',
              'repository': 'git://git.openstack.org/openstack/nova',
              '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.do_openstack_upgrade.called)
 def test_config_changed_git(self, config_val_changed):
     self.git_install_requested.return_value = True
     repo = 'cloud:trusty-juno'
     openstack_origin_git = {
         'repositories': [{
             'name': 'requirements',
             'repository': 'git://git.openstack.org/openstack/requirements',
             'branch': 'stable/juno'
         }, {
             'name': 'nova',
             'repository': 'git://git.openstack.org/openstack/nova',
             '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.do_openstack_upgrade.called)
 def test_config_changed_iscsid_not_running(self, compute_joined):
     self.service_running.return_value = False
     hooks.config_changed()
     self.service_start.assert_called_once_with('iscsid')
Пример #36
0
 def test_config_changed_with_sysctl(self, compute_joined):
     self.git_install_requested.return_value = False
     self.test_config.set('sysctl', '{ kernel.max_pid : "1337" }')
     hooks.config_changed()
     self.assertTrue(self.create_sysctl.called)
 def test_config_changed_with_upgrade(self):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = True
     hooks.config_changed()
     self.assertTrue(self.do_openstack_upgrade.called)
 def test_config_changed_with_sysctl(self, compute_joined):
     self.git_install_requested.return_value = False
     self.test_config.set('sysctl', '{ kernel.max_pid : "1337" }')
     hooks.config_changed()
     self.assertTrue(self.create_sysctl.called)
Пример #39
0
 def test_config_changed_use_multipath_false(self,
                                             compute_joined):
     self.test_config.set('use-multipath', False)
     hooks.config_changed()
     self.assertEqual(self.filter_installed_packages.call_count, 0)