Merge ~mpontillo/maas:rack-version-utils into maas:master

Proposed by Mike Pontillo
Status: Superseded
Proposed branch: ~mpontillo/maas:rack-version-utils
Merge into: maas:master
Prerequisite: ~mpontillo/maas:move-version-utils-to-rack
Diff against target: 95 lines (+28/-11)
2 files modified
src/provisioningserver/utils/tests/test_version.py (+18/-4)
src/provisioningserver/utils/version.py (+10/-7)
Reviewer Review Type Date Requested Status
Newell Jensen (community) Approve
Review via email: mp+327332@code.launchpad.net

This proposal has been superseded by a proposal from 2017-07-12.

Commit message

Make version check utilities work for the rack.

This allows rack-only installations to determine their version.

Also moves code to determine MAAS version to the src/provisioningserver.

To post a comment you must log in.
Revision history for this message
Newell Jensen (newell-jensen) wrote :

Looks good. Just one small suggestion.

review: Approve

Unmerged commits

7adaa6b... by Mike Pontillo

Make version check utilities work for the rack.

This allows rack-only installations to determine their version.

5d95ec9... by Mike Pontillo

Move code to determine MAAS version to the rack.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/provisioningserver/utils/tests/test_version.py b/src/provisioningserver/utils/tests/test_version.py
2index 2f6c6d3..e2a8419 100644
3--- a/src/provisioningserver/utils/tests/test_version.py
4+++ b/src/provisioningserver/utils/tests/test_version.py
5@@ -58,12 +58,24 @@ class TestGetVersionFromAPT(MAASTestCase):
6 package = MagicMock()
7 package.current_ver.ver_str = sentinel.ver_str
8 mock_cache = {
9- version.REGION_PACKAGE_NAME: package,
10+ version.RACK_PACKAGE_NAME: package
11 }
12 self.patch(version.apt_pkg, "Cache").return_value = mock_cache
13 self.assertIs(
14 sentinel.ver_str,
15- version.get_version_from_apt(version.REGION_PACKAGE_NAME))
16+ version.get_version_from_apt(version.RACK_PACKAGE_NAME))
17+
18+ def test__returns_ver_str_from_second_package_if_first_not_found(self):
19+ package = MagicMock()
20+ package.current_ver.ver_str = sentinel.ver_str
21+ mock_cache = {
22+ version.REGION_PACKAGE_NAME: package,
23+ }
24+ self.patch(version.apt_pkg, "Cache").return_value = mock_cache
25+ self.assertIs(
26+ sentinel.ver_str,
27+ version.get_version_from_apt(
28+ version.RACK_PACKAGE_NAME, version.REGION_PACKAGE_NAME))
29
30
31 class TestGetMAASBranchVersion(MAASTestCase):
32@@ -134,7 +146,8 @@ class TestGetMAASVersion(TestVersionTestCase):
33 self.expectThat(
34 version.get_maas_version(), Is(sentinel.version))
35 self.expectThat(
36- mock_apt, MockCalledOnceWith(version.REGION_PACKAGE_NAME))
37+ mock_apt, MockCalledOnceWith(
38+ version.RACK_PACKAGE_NAME, version.REGION_PACKAGE_NAME))
39
40 def test__uses_snappy_get_snap_version(self):
41 self.patch(snappy, 'running_in_snap').return_value = True
42@@ -268,7 +281,8 @@ class TestVersionMethodsCached(TestVersionTestCase):
43 self.assertEqual(first_return_value, second_return_value)
44 # Apt has only been called once.
45 self.expectThat(
46- mock_apt, MockCalledOnceWith(version.REGION_PACKAGE_NAME))
47+ mock_apt, MockCalledOnceWith(
48+ version.RACK_PACKAGE_NAME, version.REGION_PACKAGE_NAME))
49
50
51 class TestGetMAASVersionTuple(MAASTestCase):
52diff --git a/src/provisioningserver/utils/version.py b/src/provisioningserver/utils/version.py
53index 4db93fc..2fedc08 100644
54--- a/src/provisioningserver/utils/version.py
55+++ b/src/provisioningserver/utils/version.py
56@@ -26,11 +26,12 @@ if not snappy.running_in_snap():
57
58 # Name of maas package to get version from.
59 REGION_PACKAGE_NAME = "maas-region-api"
60+RACK_PACKAGE_NAME = "maas-rack-controller"
61
62
63-def get_version_from_apt(package):
64- """Return the version output from `apt_pkg.Cache` for the given package or
65- an error message if the package data is not valid."""
66+def get_version_from_apt(*packages):
67+ """Return the version output from `apt_pkg.Cache` for the given package(s),
68+ or log an error message if the package data is not valid."""
69 try:
70 cache = apt_pkg.Cache(None)
71 except SystemError:
72@@ -40,9 +41,11 @@ def get_version_from_apt(package):
73 return ""
74
75 version = None
76- if package in cache:
77- apt_package = cache[package]
78- version = apt_package.current_ver
79+ for package in packages:
80+ if package in cache:
81+ apt_package = cache[package]
82+ version = apt_package.current_ver
83+ break
84
85 return version.ver_str if version is not None else ""
86
87@@ -86,7 +89,7 @@ def get_maas_version():
88 if snappy.running_in_snap():
89 return snappy.get_snap_version()
90 else:
91- return get_version_from_apt(REGION_PACKAGE_NAME)
92+ return get_version_from_apt(RACK_PACKAGE_NAME, REGION_PACKAGE_NAME)
93
94
95 @lru_cache(maxsize=1)

Subscribers

People subscribed via source and target branches