Merge lp:~adam-collard/charm-helpers/openstack-upgrade-available-swift into lp:charm-helpers

Proposed by Adam Collard
Status: Merged
Merged at revision: 436
Proposed branch: lp:~adam-collard/charm-helpers/openstack-upgrade-available-swift
Merge into: lp:charm-helpers
Diff against target: 58 lines (+13/-5)
2 files modified
charmhelpers/contrib/openstack/utils.py (+7/-5)
tests/contrib/openstack/test_openstack_utils.py (+6/-0)
To merge this branch: bzr merge lp:~adam-collard/charm-helpers/openstack-upgrade-available-swift
Reviewer Review Type Date Requested Status
Chris Glass (community) Approve
Review via email: mp+269481@code.launchpad.net

Description of the change

Special case swift packages for version comparison purposes in openstack_upgrade_available.

Without this change, the swift charms will think that OpenStack upgrades are constantly available because the code ended up comparing numbers from two different version schemes and it turns out that '2014.1' > '1.13.1'

To post a comment you must log in.
Revision history for this message
Chris Glass (tribaal) wrote :

Thanks for your branch!

Looks good, thanks for knocking this one out! +1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'charmhelpers/contrib/openstack/utils.py'
--- charmhelpers/contrib/openstack/utils.py 2015-08-12 09:54:10 +0000
+++ charmhelpers/contrib/openstack/utils.py 2015-08-28 09:23:27 +0000
@@ -1,5 +1,3 @@
1#!/usr/bin/python
2
3# Copyright 2014-2015 Canonical Limited.1# Copyright 2014-2015 Canonical Limited.
4#2#
5# This file is part of charm-helpers.3# This file is part of charm-helpers.
@@ -195,9 +193,9 @@
195 error_out(e)193 error_out(e)
196194
197195
198def get_os_version_codename(codename):196def get_os_version_codename(codename, version_map=OPENSTACK_CODENAMES):
199 '''Determine OpenStack version number from codename.'''197 '''Determine OpenStack version number from codename.'''
200 for k, v in six.iteritems(OPENSTACK_CODENAMES):198 for k, v in six.iteritems(version_map):
201 if v == codename:199 if v == codename:
202 return k200 return k
203 e = 'Could not derive OpenStack version for '\201 e = 'Could not derive OpenStack version for '\
@@ -429,7 +427,11 @@
429 import apt_pkg as apt427 import apt_pkg as apt
430 src = config('openstack-origin')428 src = config('openstack-origin')
431 cur_vers = get_os_version_package(package)429 cur_vers = get_os_version_package(package)
432 available_vers = get_os_version_install_source(src)430 if "swift" in package:
431 codename = get_os_codename_install_source(src)
432 available_vers = get_os_version_codename(codename, SWIFT_CODENAMES)
433 else:
434 available_vers = get_os_version_install_source(src)
433 apt.init()435 apt.init()
434 return apt.version_compare(available_vers, cur_vers) == 1436 return apt.version_compare(available_vers, cur_vers) == 1
435437
436438
=== modified file 'tests/contrib/openstack/test_openstack_utils.py'
--- tests/contrib/openstack/test_openstack_utils.py 2015-08-12 09:54:10 +0000
+++ tests/contrib/openstack/test_openstack_utils.py 2015-08-28 09:23:27 +0000
@@ -514,6 +514,8 @@
514 # milestone to major release detection514 # milestone to major release detection
515 vers_pkg.return_value = '2013.2~b1'515 vers_pkg.return_value = '2013.2~b1'
516 self.assertTrue(openstack.openstack_upgrade_available('nova-common'))516 self.assertTrue(openstack.openstack_upgrade_available('nova-common'))
517 vers_pkg.return_value = '1.9.0'
518 self.assertTrue(openstack.openstack_upgrade_available('swift-proxy'))
517519
518 @patch.object(openstack, 'lsb_release')520 @patch.object(openstack, 'lsb_release')
519 @patch.object(openstack, 'get_os_version_package')521 @patch.object(openstack, 'get_os_version_package')
@@ -527,6 +529,10 @@
527 # milestone to majro release detection529 # milestone to majro release detection
528 vers_pkg.return_value = '2013.1~b1'530 vers_pkg.return_value = '2013.1~b1'
529 self.assertFalse(openstack.openstack_upgrade_available('nova-common'))531 self.assertFalse(openstack.openstack_upgrade_available('nova-common'))
532 # ugly duckling testing
533 config.return_value = 'cloud:precise-havana'
534 vers_pkg.return_value = '1.10.0'
535 self.assertFalse(openstack.openstack_upgrade_available('swift-proxy'))
530536
531 @patch.object(openstack, 'is_block_device')537 @patch.object(openstack, 'is_block_device')
532 @patch.object(openstack, 'error_out')538 @patch.object(openstack, 'error_out')

Subscribers

People subscribed via source and target branches