cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #04927
[Merge] ~smoser/cloud-init:feature/full-version-in-logs into cloud-init:master
Scott Moser has proposed merging ~smoser/cloud-init:feature/full-version-in-logs into cloud-init:master.
Commit message:
Update version.version_string to contain packaged version.
This modifies version.version_string to support having the package
build write the *packaged* version in with a easy replace.
Then, when cloud-init reports its version it will include the full
packaged version.
Also modified here are upstream package build files to get that done.
Note part of the trickery in packages/debian/rules.in was to avoid
the 'basic' templater consuming the '$variable' variable names.
LP: #1770712
Requested reviews:
cloud-init commiters (cloud-init-dev)
Related bugs:
Bug #1770712 in cloud-init: "It would be nice if cloud-init provides full version in logs"
https://bugs.launchpad.net/cloud-init/+bug/1770712
For more details, see:
https://code.launchpad.net/~smoser/cloud-init/+git/cloud-init/+merge/346429
see commit message
--
Your team cloud-init commiters is requested to review the proposed merge of ~smoser/cloud-init:feature/full-version-in-logs into cloud-init:master.
diff --git a/tests/unittests/test_version.py b/cloudinit/tests/test_version.py
index d012f69..5e97483 100644
--- a/tests/unittests/test_version.py
+++ b/cloudinit/tests/test_version.py
@@ -3,6 +3,8 @@
from cloudinit.tests.helpers import CiTestCase
from cloudinit import version
+import mock
+
class TestExportsFeatures(CiTestCase):
def test_has_network_config_v1(self):
@@ -11,4 +13,19 @@ class TestExportsFeatures(CiTestCase):
def test_has_network_config_v2(self):
self.assertIn('NETWORK_CONFIG_V2', version.FEATURES)
+
+class TestVersionString(CiTestCase):
+ @mock.patch("cloudinit.version._PACKAGED_VERSION",
+ "17.2-3-gb05b9972-0ubuntu1")
+ def test_package_version_respected(self):
+ """If _PACKAGED_VERSION is filled in, then it should be returned."""
+ self.assertEqual("17.2-3-gb05b9972-0ubuntu1", version.version_string())
+
+
+ @mock.patch("cloudinit.version._PACKAGED_VERSION", "@@PACKAGED_VERSION@@")
+ def test_package_version_skipped(self):
+ """If _PACKAGED_VERSION is not modified, then return __VERSION__."""
+ self.assertEqual("17.2", version.version_string())
+
+
# vi: ts=4 expandtab
diff --git a/cloudinit/version.py b/cloudinit/version.py
index ccd0f84..c4d8f55 100644
--- a/cloudinit/version.py
+++ b/cloudinit/version.py
@@ -5,6 +5,7 @@
# This file is part of cloud-init. See LICENSE file for license information.
__VERSION__ = "18.2"
+_PACKAGED_VERSION = '@@PACKAGED_VERSION@@'
FEATURES = [
# supports network config version 1
@@ -15,6 +16,10 @@ FEATURES = [
def version_string():
+ """Extract a version string from curtin source or version file"""
+
+ if not _PACKAGED_VERSION.startswith('@@'):
+ return _PACKAGED_VERSION
return __VERSION__
# vi: ts=4 expandtab
diff --git a/packages/debian/rules.in b/packages/debian/rules.in
index 4aa907e..e542c7f 100755
--- a/packages/debian/rules.in
+++ b/packages/debian/rules.in
@@ -3,6 +3,7 @@
INIT_SYSTEM ?= systemd
export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM)
PYVER ?= python${pyver}
+DEB_VERSION := $(shell dpkg-parsechangelog --show-field=Version)
%:
dh $@ --with $(PYVER),systemd --buildsystem pybuild
@@ -14,6 +15,7 @@ override_dh_install:
cp tools/21-cloudinit.conf debian/cloud-init/etc/rsyslog.d/21-cloudinit.conf
install -D ./tools/Z99-cloud-locale-test.sh debian/cloud-init/etc/profile.d/Z99-cloud-locale-test.sh
install -D ./tools/Z99-cloudinit-warnings.sh debian/cloud-init/etc/profile.d/Z99-cloudinit-warnings.sh
+ flist=$$(find $(CURDIR)/debian/ -type f -name version.py) && sed -i 's,@@PACKAGED_VERSION@@,$(DEB_VERSION),' $${flist:-did-not-find-version-py-for-replacement}
override_dh_auto_test:
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
Follow ups