def test_config_changed_single_consoleauth(self, mock_config,
                                               mock_configure_https,
                                               mock_filter_packages):
        self.config_value_changed.return_value = False
        self.git_install_requested.return_value = False
        config.return_value = 'novnc'
        rids = {'ha': ['ha:1']}

        def f(r):
            return rids.get(r, [])

        self.relation_ids.side_effect = f
        hooks.config_changed()
        args = {
            'delete_resources': [],
            'init_services': {'res_nova_consoleauth': 'nova-consoleauth'},
            'resources': {'res_nova_consoleauth':
                          'ocf:openstack:nova-consoleauth'},
            'resource_params': {
                'res_nova_consoleauth': 'op monitor interval="5s"'},
            'colocations': {
                'vip_consoleauth': 'inf: res_nova_consoleauth grp_nova_vips'
            }
        }
        self.relation_set.assert_has_calls([
            call(v, **args) for v in rids['ha']
        ])

        mock_filter_packages.assert_called_with([])
Ejemplo n.º 2
0
 def test_config_changed_with_upgrade(
         self, conf_https, neutron_api_joined, identity_joined,
         cluster_joined, mock_filter_packages, db_joined, utils_config,
         mock_relids, mock_unit_get, mock_service_resume,
         mock_determine_packages, mock_quantum_joined,
         mock_is_db_initialised):
     mock_determine_packages.return_value = []
     mock_is_db_initialised.return_value = False
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = True
     self.relation_ids.return_value = ['generic_rid']
     _zmq_joined = self.patch('zeromq_configuration_relation_joined')
     utils_config.side_effect = self.test_config.get
     self.test_config.set('console-access-protocol', 'dummy')
     mock_relids.return_value = []
     mock_unit_get.return_value = '127.0.0.1'
     self.os_release.return_value = 'diablo'
     hooks.config_changed()
     self.assertTrue(self.do_openstack_upgrade.called)
     self.assertTrue(neutron_api_joined.called)
     self.assertTrue(identity_joined.called)
     self.assertTrue(_zmq_joined.called)
     self.assertTrue(cluster_joined.called)
     self.assertTrue(db_joined.called)
     self.assertTrue(self.save_script_rc.called)
     mock_filter_packages.assert_called_with([])
     self.assertTrue(mock_quantum_joined.called)
Ejemplo n.º 3
0
 def test_config_changed_git(self, configure_https, mock_service_resume,
                             mock_is_db_initialised):
     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)
     mock_is_db_initialised.return_value = False
     self.os_release.return_value = 'diablo'
     hooks.config_changed()
     self.git_install.assert_called_with(projects_yaml)
     self.assertFalse(self.do_openstack_upgrade.called)
Ejemplo n.º 4
0
    def test_config_changed_single_consoleauth(self, mock_config,
                                               mock_configure_https,
                                               mock_filter_packages,
                                               mock_service_pause,
                                               mock_determine_packages):
        mock_determine_packages.return_value = []
        self.config_value_changed.return_value = False
        self.git_install_requested.return_value = False
        config.return_value = 'novnc'
        rids = {'ha': ['ha:1']}

        def f(r):
            return rids.get(r, [])

        self.relation_ids.side_effect = f
        hooks.config_changed()
        args = {
            'delete_resources': [],
            'init_services': {
                'res_nova_consoleauth': 'nova-consoleauth'
            },
            'resources': {
                'res_nova_consoleauth': 'ocf:openstack:nova-consoleauth'
            },
            'resource_params': {
                'res_nova_consoleauth': 'op monitor interval="5s"'
            },
            'colocations': {
                'vip_consoleauth': 'inf: res_nova_consoleauth grp_nova_vips'
            }
        }
        self.relation_set.assert_has_calls(
            [call(v, **args) for v in rids['ha']])

        mock_filter_packages.assert_called_with([])
 def test_config_changed_region_change(self, mock_compute_changed,
                                       mock_config_https,
                                       mock_filter_packages):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = False
     self.config_value_changed.return_value = True
     self.related_units.return_value = ['unit/0']
     self.relation_ids.side_effect = \
         lambda x: ['generic_rid'] if x == 'cloud-compute' else []
     hooks.config_changed()
     mock_compute_changed.assert_has_calls([call('generic_rid', 'unit/0')])
Ejemplo n.º 6
0
 def test_config_changed_no_upgrade(self, conf_https, mock_filter_packages,
                                    utils_config, mock_service_resume,
                                    mock_determine_packages):
     mock_determine_packages.return_value = []
     utils_config.side_effect = self.test_config.get
     self.test_config.set('console-access-protocol', 'dummy')
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = False
     hooks.config_changed()
     self.assertTrue(self.save_script_rc.called)
     mock_filter_packages.assert_called_with([])
Ejemplo n.º 7
0
 def test_config_changed_region_change(self, mock_compute_changed,
                                       mock_config_https,
                                       mock_filter_packages):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = False
     self.config_value_changed.return_value = True
     self.related_units.return_value = ['unit/0']
     self.relation_ids.side_effect = \
         lambda x: ['generic_rid'] if x == 'cloud-compute' else []
     hooks.config_changed()
     mock_compute_changed.assert_has_calls([call('generic_rid', 'unit/0')])
Ejemplo n.º 8
0
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)):
        [neutron_api_relation_joined(rid=rid, remote_restart=True)
            for rid in relation_ids('neutron-api')]
        config_changed()
Ejemplo n.º 9
0
 def test_config_changed_with_upgrade(self, conf_https, neutron_api_joined,
                                      identity_joined, cluster_joined,
                                      mock_filter_packages):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = True
     self.relation_ids.return_value = ['generic_rid']
     _zmq_joined = self.patch('zeromq_configuration_relation_joined')
     hooks.config_changed()
     self.assertTrue(self.do_openstack_upgrade.called)
     self.assertTrue(neutron_api_joined.called)
     self.assertTrue(identity_joined.called)
     self.assertTrue(_zmq_joined.called)
     self.assertTrue(cluster_joined.called)
     self.assertTrue(self.save_script_rc.called)
     mock_filter_packages.assert_called_with([])
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)):
        [
            neutron_api_relation_joined(rid=rid, remote_restart=True)
            for rid in relation_ids('neutron-api')
        ]
        config_changed()
Ejemplo n.º 11
0
 def test_config_changed_with_upgrade(self, conf_https, neutron_api_joined,
                                      identity_joined, cluster_joined,
                                      mock_filter_packages):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = True
     self.relation_ids.return_value = ['generic_rid']
     _zmq_joined = self.patch('zeromq_configuration_relation_joined')
     hooks.config_changed()
     self.assertTrue(self.do_openstack_upgrade.called)
     self.assertTrue(neutron_api_joined.called)
     self.assertTrue(identity_joined.called)
     self.assertTrue(_zmq_joined.called)
     self.assertTrue(cluster_joined.called)
     self.assertTrue(self.save_script_rc.called)
     mock_filter_packages.assert_called_with([])
Ejemplo n.º 12
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')
Ejemplo n.º 13
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')
Ejemplo n.º 14
0
    def test_config_changed_single_consoleauth(self, mock_config,
                                               mock_configure_https,
                                               mock_filter_packages,
                                               mock_service_pause,
                                               mock_determine_packages,
                                               mock_is_db_initialised,
                                               mock_update_aws_compat_svcs):
        mock_determine_packages.return_value = []
        mock_is_db_initialised.return_value = False
        self.config_value_changed.return_value = False
        self.os_release.return_value = 'diablo'

        def cfg(k, v):
            if k == "single-nova-authconsole":
                return True
            return 'novnc'

        config.side_effect = cfg
        rids = {'ha': ['ha:1']}

        def f(r):
            return rids.get(r, [])

        self.relation_ids.side_effect = f
        hooks.config_changed()
        args = {
            'delete_resources': [],
            'init_services': {'res_nova_consoleauth': 'nova-consoleauth'},
            'resources': {'res_nova_consoleauth':
                          'ocf:openstack:nova-consoleauth'},
            'resource_params': {
                'res_nova_consoleauth': 'op monitor interval="5s"'},
            'colocations': {
                'vip_consoleauth': 'inf: res_nova_consoleauth grp_nova_vips'
            }
        }
        self.relation_set.assert_has_calls([
            call(v, **args) for v in rids['ha']
        ])

        mock_service_pause.assert_has_calls([
            call('nova-consoleauth')]
        )
        mock_filter_packages.assert_called_with([])

        self.assertTrue(mock_update_aws_compat_svcs.called)
Ejemplo n.º 15
0
 def test_config_changed_no_upgrade(self, conf_https, mock_filter_packages,
                                    utils_config, mock_service_resume,
                                    mock_determine_packages,
                                    mock_is_db_initialised,
                                    mock_update_nova_consoleauth_config,
                                    mock_update_aws_compat_services):
     mock_determine_packages.return_value = []
     utils_config.side_effect = self.test_config.get
     self.test_config.set('console-access-protocol', 'dummy')
     self.openstack_upgrade_available.return_value = False
     mock_is_db_initialised.return_value = False
     self.os_release.return_value = 'diablo'
     hooks.config_changed()
     self.assertTrue(self.save_script_rc.called)
     mock_filter_packages.assert_called_with([])
     self.assertTrue(mock_update_nova_consoleauth_config.called)
     self.assertTrue(mock_update_aws_compat_services.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)):
        [
            neutron_api_relation_joined(rid=rid, remote_restart=True)
            for rid in relation_ids('neutron-api')
        ]
        # NOTE(thedac): Force re-fire of shared-db joined hook
        # to ensure that nova_api database is setup if required.
        [db_joined(relation_id=r_id) for r_id in relation_ids('shared-db')]
        config_changed()
Ejemplo n.º 17
0
 def test_config_changed_region_change(self, mock_compute_changed,
                                       mock_config_https,
                                       mock_filter_packages,
                                       mock_service_resume,
                                       mock_is_db_initialised,
                                       mock_update_nova_consoleauth_config,
                                       mock_update_aws_compat_services):
     self.openstack_upgrade_available.return_value = False
     self.config_value_changed.return_value = True
     self.related_units.return_value = ['unit/0']
     self.relation_ids.side_effect = \
         lambda x: ['generic_rid'] if x == 'cloud-compute' else []
     mock_is_db_initialised.return_value = False
     self.os_release.return_value = 'diablo'
     hooks.config_changed()
     mock_compute_changed.assert_has_calls([call('generic_rid', 'unit/0')])
     self.assertTrue(mock_update_nova_consoleauth_config.called)
     self.assertTrue(mock_update_aws_compat_services.called)
 def test_config_changed_git(self, configure_https):
     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)
Ejemplo n.º 19
0
 def test_config_changed_no_upgrade(self, conf_https, mock_filter_packages):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = False
     hooks.config_changed()
     self.assertTrue(self.save_script_rc.called)
     mock_filter_packages.assert_called_with([])
 def test_config_changed_no_upgrade(self, conf_https, mock_filter_packages):
     self.git_install_requested.return_value = False
     self.openstack_upgrade_available.return_value = False
     hooks.config_changed()
     self.assertTrue(self.save_script_rc.called)
     mock_filter_packages.assert_called_with([])
 def test_config_changed_with_upgrade(self, conf_https):
     self.openstack_upgrade_available.return_value = True
     hooks.config_changed()
     self.assertTrue(self.do_openstack_upgrade.called)
     self.assertTrue(self.save_script_rc.called)