2013-10-22 16:15:28 -07:00
|
|
|
from mock import patch, call, MagicMock
|
|
|
|
|
|
|
|
from collections import OrderedDict
|
2014-02-12 15:11:20 +01:00
|
|
|
import os
|
2013-10-22 16:15:28 -07:00
|
|
|
|
2014-02-12 15:11:20 +01:00
|
|
|
os.environ['JUJU_UNIT_NAME'] = 'glance'
|
2013-10-22 16:15:28 -07:00
|
|
|
import glance_utils as utils
|
|
|
|
|
|
|
|
from test_utils import (
|
|
|
|
CharmTestCase,
|
|
|
|
)
|
|
|
|
|
|
|
|
TO_PATCH = [
|
|
|
|
'config',
|
|
|
|
'log',
|
|
|
|
'relation_ids',
|
|
|
|
'get_os_codename_package',
|
|
|
|
'get_os_codename_install_source',
|
|
|
|
'configure_installation_source',
|
|
|
|
'eligible_leader',
|
|
|
|
'templating',
|
|
|
|
'apt_update',
|
2014-03-06 12:36:52 +00:00
|
|
|
'apt_upgrade',
|
2014-03-14 10:55:47 +00:00
|
|
|
'apt_install',
|
2014-03-06 15:54:19 +00:00
|
|
|
'mkdir',
|
|
|
|
'service_start',
|
2014-03-20 14:07:04 +00:00
|
|
|
'service_stop',
|
2014-01-15 14:04:21 +01:00
|
|
|
'service_name',
|
|
|
|
'install_alternative'
|
2013-10-22 16:15:28 -07:00
|
|
|
]
|
|
|
|
|
2014-03-14 10:55:47 +00:00
|
|
|
DPKG_OPTS = [
|
|
|
|
'--option', 'Dpkg::Options::=--force-confnew',
|
|
|
|
'--option', 'Dpkg::Options::=--force-confdef',
|
|
|
|
]
|
|
|
|
|
2013-10-22 16:15:28 -07:00
|
|
|
|
|
|
|
class TestGlanceUtils(CharmTestCase):
|
2013-11-08 09:34:39 +08:00
|
|
|
|
2013-10-22 16:15:28 -07:00
|
|
|
def setUp(self):
|
|
|
|
super(TestGlanceUtils, self).setUp(utils, TO_PATCH)
|
|
|
|
self.config.side_effect = self.test_config.get_all
|
|
|
|
|
|
|
|
@patch('subprocess.check_call')
|
|
|
|
def test_migrate_database(self, check_call):
|
2014-01-15 14:04:21 +01:00
|
|
|
"It migrates database with cinder-manage"
|
2013-10-22 16:15:28 -07:00
|
|
|
utils.migrate_database()
|
|
|
|
check_call.assert_called_with(['glance-manage', 'db_sync'])
|
|
|
|
|
|
|
|
@patch('os.path.exists')
|
|
|
|
def test_register_configs_apache(self, exists):
|
|
|
|
exists.return_value = False
|
|
|
|
self.get_os_codename_package.return_value = 'grizzly'
|
|
|
|
self.relation_ids.return_value = False
|
|
|
|
configs = utils.register_configs()
|
|
|
|
calls = []
|
|
|
|
for conf in [utils.GLANCE_REGISTRY_CONF,
|
|
|
|
utils.GLANCE_API_CONF,
|
|
|
|
utils.GLANCE_API_PASTE_INI,
|
|
|
|
utils.GLANCE_REGISTRY_PASTE_INI,
|
|
|
|
utils.HAPROXY_CONF,
|
|
|
|
utils.HTTPS_APACHE_CONF]:
|
|
|
|
calls.append(
|
|
|
|
call(conf,
|
|
|
|
utils.CONFIG_FILES[conf]['hook_contexts'])
|
|
|
|
)
|
|
|
|
configs.register.assert_has_calls(calls, any_order=True)
|
|
|
|
|
|
|
|
@patch('os.path.exists')
|
|
|
|
def test_register_configs_apache24(self, exists):
|
|
|
|
exists.return_value = True
|
|
|
|
self.get_os_codename_package.return_value = 'grizzly'
|
|
|
|
self.relation_ids.return_value = False
|
|
|
|
configs = utils.register_configs()
|
|
|
|
calls = []
|
|
|
|
for conf in [utils.GLANCE_REGISTRY_CONF,
|
|
|
|
utils.GLANCE_API_CONF,
|
|
|
|
utils.GLANCE_API_PASTE_INI,
|
|
|
|
utils.GLANCE_REGISTRY_PASTE_INI,
|
|
|
|
utils.HAPROXY_CONF,
|
|
|
|
utils.HTTPS_APACHE_24_CONF]:
|
|
|
|
calls.append(
|
|
|
|
call(conf,
|
|
|
|
utils.CONFIG_FILES[conf]['hook_contexts'])
|
|
|
|
)
|
|
|
|
configs.register.assert_has_calls(calls, any_order=True)
|
|
|
|
|
|
|
|
@patch('os.path.exists')
|
|
|
|
def test_register_configs_ceph(self, exists):
|
2014-01-15 14:04:21 +01:00
|
|
|
exists.return_value = True
|
2013-10-22 16:15:28 -07:00
|
|
|
self.get_os_codename_package.return_value = 'grizzly'
|
|
|
|
self.relation_ids.return_value = ['ceph:0']
|
2014-01-15 14:04:21 +01:00
|
|
|
self.service_name.return_value = 'glance'
|
2013-10-22 16:15:28 -07:00
|
|
|
configs = utils.register_configs()
|
|
|
|
calls = []
|
|
|
|
for conf in [utils.GLANCE_REGISTRY_CONF,
|
|
|
|
utils.GLANCE_API_CONF,
|
|
|
|
utils.GLANCE_API_PASTE_INI,
|
|
|
|
utils.GLANCE_REGISTRY_PASTE_INI,
|
|
|
|
utils.HAPROXY_CONF,
|
2014-02-12 15:11:20 +01:00
|
|
|
utils.ceph_config_file()]:
|
2013-10-22 16:15:28 -07:00
|
|
|
calls.append(
|
|
|
|
call(conf,
|
|
|
|
utils.CONFIG_FILES[conf]['hook_contexts'])
|
|
|
|
)
|
|
|
|
configs.register.assert_has_calls(calls, any_order=True)
|
|
|
|
self.mkdir.assert_called_with('/etc/ceph')
|
|
|
|
|
|
|
|
def test_restart_map(self):
|
2014-02-12 15:11:20 +01:00
|
|
|
self.service_name.return_value = 'glance'
|
|
|
|
|
2013-10-22 16:15:28 -07:00
|
|
|
ex_map = OrderedDict([
|
|
|
|
(utils.GLANCE_REGISTRY_CONF, ['glance-registry']),
|
|
|
|
(utils.GLANCE_API_CONF, ['glance-api']),
|
|
|
|
(utils.GLANCE_API_PASTE_INI, ['glance-api']),
|
|
|
|
(utils.GLANCE_REGISTRY_PASTE_INI, ['glance-registry']),
|
2014-02-12 15:11:20 +01:00
|
|
|
(utils.ceph_config_file(), ['glance-api', 'glance-registry']),
|
2013-10-22 16:15:28 -07:00
|
|
|
(utils.HAPROXY_CONF, ['haproxy']),
|
|
|
|
(utils.HTTPS_APACHE_CONF, ['apache2']),
|
|
|
|
(utils.HTTPS_APACHE_24_CONF, ['apache2'])
|
|
|
|
])
|
|
|
|
self.assertEquals(ex_map, utils.restart_map())
|
|
|
|
|
|
|
|
@patch.object(utils, 'migrate_database')
|
|
|
|
def test_openstack_upgrade_leader(self, migrate):
|
|
|
|
self.config.side_effect = None
|
|
|
|
self.config.return_value = 'cloud:precise-havana'
|
|
|
|
self.eligible_leader.return_value = True
|
|
|
|
self.get_os_codename_install_source.return_value = 'havana'
|
|
|
|
configs = MagicMock()
|
|
|
|
utils.do_openstack_upgrade(configs)
|
|
|
|
self.assertTrue(configs.write_all.called)
|
2014-03-14 10:55:47 +00:00
|
|
|
self.apt_install.assert_called_with(utils.PACKAGES, fatal=True)
|
|
|
|
self.apt_upgrade.assert_called_with(options=DPKG_OPTS,
|
|
|
|
fatal=True, dist=True)
|
2013-10-22 16:15:28 -07:00
|
|
|
configs.set_release.assert_called_with(openstack_release='havana')
|
|
|
|
self.assertTrue(migrate.called)
|
|
|
|
|
|
|
|
@patch.object(utils, 'migrate_database')
|
|
|
|
def test_openstack_upgrade_not_leader(self, migrate):
|
|
|
|
self.config.side_effect = None
|
|
|
|
self.config.return_value = 'cloud:precise-havana'
|
|
|
|
self.eligible_leader.return_value = False
|
|
|
|
self.get_os_codename_install_source.return_value = 'havana'
|
|
|
|
configs = MagicMock()
|
|
|
|
utils.do_openstack_upgrade(configs)
|
|
|
|
self.assertTrue(configs.write_all.called)
|
2014-03-14 10:55:47 +00:00
|
|
|
self.apt_install.assert_called_with(utils.PACKAGES, fatal=True)
|
|
|
|
self.apt_upgrade.assert_called_with(options=DPKG_OPTS,
|
|
|
|
fatal=True, dist=True)
|
2013-10-22 16:15:28 -07:00
|
|
|
configs.set_release.assert_called_with(openstack_release='havana')
|
|
|
|
self.assertFalse(migrate.called)
|