Skip to content

Commit cc516d3

Browse files
authored
Os release should always provide codename (bugfix) (#1794)
* Os release should always provide codename * Remember to finish comments
1 parent 5baa4d0 commit cc516d3

File tree

2 files changed

+35
-7
lines changed

2 files changed

+35
-7
lines changed

providers/resource/bin/os_resource.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,19 @@ def get_release_info(release_file_content: str):
3838
"VERSION_CODENAME": "codename",
3939
}
4040
os_release = {}
41-
for line in release_file_content.strip().splitlines():
42-
if line:
43-
(key, value) = line.split("=", 1)
44-
if key in os_release_map:
45-
k = os_release_map[key]
46-
# Strip out quotes and newlines
47-
os_release[k] = re.sub('["\n]', "", value)
41+
lines = filter(bool, release_file_content.strip().splitlines())
42+
for line in lines:
43+
(key, value) = line.split("=", 1)
44+
if key in os_release_map:
45+
k = os_release_map[key]
46+
# Strip out quotes and newlines
47+
os_release[k] = re.sub('["\n]', "", value)
48+
# this is needed by C3, on core there is no VERSION_CODENAME, lets put
49+
# description (PRETTY_NAME) here by default or unknown (which should be
50+
# impossible but resources aren't supposed to crash)
51+
os_release["codename"] = os_release.get(
52+
"codename", os_release.get("description", "unknown")
53+
)
4854
return os_release
4955

5056

providers/resource/tests/test_os_resource.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,25 @@ def test_get_release_info_empty_lines(self):
7171
"codename": "jammy",
7272
}
7373
self.assertEqual(os_release, expected)
74+
75+
def test_get_release_info_core_no_codename(self):
76+
# core doesn't have codename
77+
os_release_data = textwrap.dedent(
78+
"""
79+
NAME="Ubuntu Core"
80+
VERSION="22"
81+
ID=ubuntu-core
82+
PRETTY_NAME="Ubuntu Core 22"
83+
VERSION_ID="22"
84+
HOME_URL="https://snapcraft.io/"
85+
BUG_REPORT_URL="https://bugs.launchpad.net/snappy/
86+
"""
87+
).strip()
88+
os_release = os_resource.get_release_info(os_release_data)
89+
expected = {
90+
"distributor_id": "Ubuntu Core",
91+
"description": "Ubuntu Core 22",
92+
"release": "22",
93+
"codename": "Ubuntu Core 22",
94+
}
95+
self.assertEqual(os_release, expected)

0 commit comments

Comments
 (0)