Reset os_release cached value after upgrade
In enable_memcache, ensure that the os_release cache is reset after upgrade. Additionally, call apt_install(get_packages()) for upgrades to ensure that release-specific packages (such as memcached) are installed. Change-Id: Ia3689d2d0c549fc55f1bd533654f80c98ce5462a Partial-Bug: 1715624
This commit is contained in:
parent
03bd32eb74
commit
2c47665758
|
@ -33,6 +33,8 @@ from charmhelpers.contrib.openstack.utils import (
|
|||
configure_installation_source,
|
||||
openstack_upgrade_available,
|
||||
pausable_restart_on_change as restart_on_change,
|
||||
os_release,
|
||||
CompareOpenStackReleases,
|
||||
)
|
||||
from ceilometer_utils import (
|
||||
restart_map,
|
||||
|
@ -101,6 +103,15 @@ def config_changed():
|
|||
if openstack_upgrade_available('ceilometer-common'):
|
||||
status_set('maintenance', 'Running openstack upgrade')
|
||||
do_openstack_upgrade(CONFIGS)
|
||||
else:
|
||||
# It's possible that a partial upgrade has occurred if nova-compute
|
||||
# was upgraded first. If > mitaka call apt_install to allow
|
||||
# packages which are enabled for specific OpenStack version to be
|
||||
# installed if they haven't been already.
|
||||
os_rel = os_release('ceilometer-common', reset_cache=True)
|
||||
if (CompareOpenStackReleases(os_rel) >= 'mitaka'):
|
||||
apt_install(filter_installed_packages(get_packages()),
|
||||
fatal=True)
|
||||
if is_relation_made('nrpe-external-master'):
|
||||
update_nrpe_config()
|
||||
CONFIGS.write_all()
|
||||
|
|
|
@ -30,6 +30,7 @@ from charmhelpers.contrib.openstack.utils import (
|
|||
os_application_version_set,
|
||||
token_cache_pkgs,
|
||||
enable_memcache,
|
||||
reset_os_release,
|
||||
)
|
||||
from charmhelpers.core.hookenv import (
|
||||
config,
|
||||
|
@ -163,9 +164,16 @@ def do_openstack_upgrade(configs):
|
|||
]
|
||||
apt_update(fatal=True)
|
||||
apt_upgrade(options=dpkg_opts, fatal=True, dist=True)
|
||||
reset_os_release()
|
||||
apt_install(packages=CEILOMETER_AGENT_PACKAGES,
|
||||
options=dpkg_opts,
|
||||
fatal=True)
|
||||
# Call apt_install a 2nd time to allow packages which are enabled
|
||||
# for specific OpenStack version to be installed . This is because
|
||||
# Openstack version for a subordinate should be derived from the
|
||||
# version of an installed package rather than relying on
|
||||
# openstack-origin which would not be present in a subordinate.
|
||||
apt_install(get_packages(), fatal=True)
|
||||
|
||||
# set CONFIGS to load templates from new release
|
||||
configs.set_release(openstack_release=new_os_rel)
|
||||
|
|
|
@ -40,6 +40,7 @@ TO_PATCH = [
|
|||
'update_nrpe_config',
|
||||
'is_relation_made',
|
||||
'get_packages',
|
||||
'os_release',
|
||||
]
|
||||
|
||||
|
||||
|
@ -90,12 +91,26 @@ class CeilometerHooksTest(CharmTestCase):
|
|||
@patch('charmhelpers.core.hookenv.config')
|
||||
def test_config_changed_no_upgrade(self, mock_config):
|
||||
self.openstack_upgrade_available.return_value = False
|
||||
self.os_release.return_value = 'liberty'
|
||||
hooks.hooks.execute(['hooks/config-changed'])
|
||||
self.openstack_upgrade_available.\
|
||||
assert_called_with('ceilometer-common')
|
||||
self.assertFalse(self.do_openstack_upgrade.called)
|
||||
self.assertTrue(self.CONFIGS.write_all.called)
|
||||
self.assertTrue(self.update_nrpe_config.called)
|
||||
self.assertFalse(self.apt_install.called)
|
||||
|
||||
@patch('charmhelpers.core.hookenv.config')
|
||||
def test_config_changed_partial_upgrade(self, mock_config):
|
||||
self.openstack_upgrade_available.return_value = False
|
||||
self.os_release.return_value = 'mitaka'
|
||||
hooks.hooks.execute(['hooks/config-changed'])
|
||||
self.openstack_upgrade_available.\
|
||||
assert_called_with('ceilometer-common')
|
||||
self.assertFalse(self.do_openstack_upgrade.called)
|
||||
self.assertTrue(self.CONFIGS.write_all.called)
|
||||
self.assertTrue(self.update_nrpe_config.called)
|
||||
self.assertTrue(self.apt_install.called)
|
||||
|
||||
@patch('charmhelpers.core.hookenv.config')
|
||||
def test_config_changed_upgrade(self, mock_config):
|
||||
|
@ -118,6 +133,7 @@ class CeilometerHooksTest(CharmTestCase):
|
|||
@patch('charmhelpers.core.hookenv.config')
|
||||
def test_config_changed_no_nrpe(self, mock_config):
|
||||
self.openstack_upgrade_available.return_value = False
|
||||
self.os_release.return_value = 'mitaka'
|
||||
self.is_relation_made.return_value = False
|
||||
|
||||
hooks.hooks.execute(['hooks/config-changed'])
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from mock import MagicMock, patch
|
||||
from mock import MagicMock, patch, call
|
||||
|
||||
import ceilometer_utils as utils
|
||||
|
||||
|
@ -85,10 +85,12 @@ class CeilometerUtilsTest(CharmTestCase):
|
|||
'--option', 'Dpkg::Options::=--force-confnew',
|
||||
'--option', 'Dpkg::Options::=--force-confdef',
|
||||
]
|
||||
self.apt_install.assert_called_with(
|
||||
packages=utils.CEILOMETER_AGENT_PACKAGES,
|
||||
options=dpkg_opts, fatal=True
|
||||
)
|
||||
self.apt_install.assert_has_calls([
|
||||
call(packages=utils.CEILOMETER_AGENT_PACKAGES,
|
||||
options=dpkg_opts, fatal=True),
|
||||
call(['python-ceilometer', 'ceilometer-common',
|
||||
'ceilometer-agent-compute'], fatal=True),
|
||||
])
|
||||
self.configure_installation_source.assert_called_with(
|
||||
'cloud:precise-havana'
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue