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
diff --git a/src/provisioningserver/utils/tests/test_version.py b/src/provisioningserver/utils/tests/test_version.py
index 2f6c6d3..e2a8419 100644
--- a/src/provisioningserver/utils/tests/test_version.py
+++ b/src/provisioningserver/utils/tests/test_version.py
@@ -58,12 +58,24 @@ class TestGetVersionFromAPT(MAASTestCase):
58 package = MagicMock()58 package = MagicMock()
59 package.current_ver.ver_str = sentinel.ver_str59 package.current_ver.ver_str = sentinel.ver_str
60 mock_cache = {60 mock_cache = {
61 version.REGION_PACKAGE_NAME: package,61 version.RACK_PACKAGE_NAME: package
62 }62 }
63 self.patch(version.apt_pkg, "Cache").return_value = mock_cache63 self.patch(version.apt_pkg, "Cache").return_value = mock_cache
64 self.assertIs(64 self.assertIs(
65 sentinel.ver_str,65 sentinel.ver_str,
66 version.get_version_from_apt(version.REGION_PACKAGE_NAME))66 version.get_version_from_apt(version.RACK_PACKAGE_NAME))
67
68 def test__returns_ver_str_from_second_package_if_first_not_found(self):
69 package = MagicMock()
70 package.current_ver.ver_str = sentinel.ver_str
71 mock_cache = {
72 version.REGION_PACKAGE_NAME: package,
73 }
74 self.patch(version.apt_pkg, "Cache").return_value = mock_cache
75 self.assertIs(
76 sentinel.ver_str,
77 version.get_version_from_apt(
78 version.RACK_PACKAGE_NAME, version.REGION_PACKAGE_NAME))
6779
6880
69class TestGetMAASBranchVersion(MAASTestCase):81class TestGetMAASBranchVersion(MAASTestCase):
@@ -134,7 +146,8 @@ class TestGetMAASVersion(TestVersionTestCase):
134 self.expectThat(146 self.expectThat(
135 version.get_maas_version(), Is(sentinel.version))147 version.get_maas_version(), Is(sentinel.version))
136 self.expectThat(148 self.expectThat(
137 mock_apt, MockCalledOnceWith(version.REGION_PACKAGE_NAME))149 mock_apt, MockCalledOnceWith(
150 version.RACK_PACKAGE_NAME, version.REGION_PACKAGE_NAME))
138151
139 def test__uses_snappy_get_snap_version(self):152 def test__uses_snappy_get_snap_version(self):
140 self.patch(snappy, 'running_in_snap').return_value = True153 self.patch(snappy, 'running_in_snap').return_value = True
@@ -268,7 +281,8 @@ class TestVersionMethodsCached(TestVersionTestCase):
268 self.assertEqual(first_return_value, second_return_value)281 self.assertEqual(first_return_value, second_return_value)
269 # Apt has only been called once.282 # Apt has only been called once.
270 self.expectThat(283 self.expectThat(
271 mock_apt, MockCalledOnceWith(version.REGION_PACKAGE_NAME))284 mock_apt, MockCalledOnceWith(
285 version.RACK_PACKAGE_NAME, version.REGION_PACKAGE_NAME))
272286
273287
274class TestGetMAASVersionTuple(MAASTestCase):288class TestGetMAASVersionTuple(MAASTestCase):
diff --git a/src/provisioningserver/utils/version.py b/src/provisioningserver/utils/version.py
index 4db93fc..2fedc08 100644
--- a/src/provisioningserver/utils/version.py
+++ b/src/provisioningserver/utils/version.py
@@ -26,11 +26,12 @@ if not snappy.running_in_snap():
2626
27# Name of maas package to get version from.27# Name of maas package to get version from.
28REGION_PACKAGE_NAME = "maas-region-api"28REGION_PACKAGE_NAME = "maas-region-api"
29RACK_PACKAGE_NAME = "maas-rack-controller"
2930
3031
31def get_version_from_apt(package):32def get_version_from_apt(*packages):
32 """Return the version output from `apt_pkg.Cache` for the given package or33 """Return the version output from `apt_pkg.Cache` for the given package(s),
33 an error message if the package data is not valid."""34 or log an error message if the package data is not valid."""
34 try:35 try:
35 cache = apt_pkg.Cache(None)36 cache = apt_pkg.Cache(None)
36 except SystemError:37 except SystemError:
@@ -40,9 +41,11 @@ def get_version_from_apt(package):
40 return ""41 return ""
4142
42 version = None43 version = None
43 if package in cache:44 for package in packages:
44 apt_package = cache[package]45 if package in cache:
45 version = apt_package.current_ver46 apt_package = cache[package]
47 version = apt_package.current_ver
48 break
4649
47 return version.ver_str if version is not None else ""50 return version.ver_str if version is not None else ""
4851
@@ -86,7 +89,7 @@ def get_maas_version():
86 if snappy.running_in_snap():89 if snappy.running_in_snap():
87 return snappy.get_snap_version()90 return snappy.get_snap_version()
88 else:91 else:
89 return get_version_from_apt(REGION_PACKAGE_NAME)92 return get_version_from_apt(RACK_PACKAGE_NAME, REGION_PACKAGE_NAME)
9093
9194
92@lru_cache(maxsize=1)95@lru_cache(maxsize=1)

Subscribers

People subscribed via source and target branches