Skip to content

Commit 09d5e2c

Browse files
committed
update : EOL OSes and the update script
1 parent 5ea0c5c commit 09d5e2c

File tree

1 file changed

+44
-19
lines changed

1 file changed

+44
-19
lines changed

bin/clean-metadata

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,70 @@ import json
44

55
# Note range is exclusive so the last number is not in the list
66
PUPPET_VERSION = '>= 6.1.0 < 8.0.0'
7-
UNSUPPORTED_EL = {str(i) for i in range(3, 7)}
7+
UNSUPPORTED_EL = {str(i) for i in range(3, 10)}
88
UNSUPPORTED = {
99
'CentOS': UNSUPPORTED_EL,
10-
'Debian': {str(i) for i in range(3, 9)},
11-
'Fedora': {str(i) for i in range(3, 33)},
10+
'Debian': {str(i) for i in range(3, 12)},
11+
'Fedora': {str(i) for i in range(3, 41)},
1212
'OracleLinux': UNSUPPORTED_EL,
1313
'RedHat': UNSUPPORTED_EL,
14-
'SLED': {'9', '10'},
15-
'SLES': {'9', '10'},
14+
'SLED': {'9', '15'},
15+
'SLES': {'9', '15.3'},
1616
'Scientific': UNSUPPORTED_EL,
17-
'Ubuntu': {str(i) + m for i in range(4, 18) for m in ('.04', '.10')},
17+
'Ubuntu': {str(i) + m for i in range(4, 22) for m in ('.04', '.10')},
1818
}
1919

20+
# Find all metadata.json files in the specified directory structure.
2021
for filename in glob.glob('modules/*/*/metadata.json'):
21-
print('Reading {}'.format(filename))
22+
print(f'Reading {filename}')
2223

2324
with open(filename) as fp:
2425
metadata = json.load(fp)
2526

2627
updated = False
2728

29+
# Update Puppet Version Requirement
2830
for req in metadata.get('requirements', []):
2931
if req['name'] == 'puppet' and req['version_requirement'] != PUPPET_VERSION:
3032
req['version_requirement'] = PUPPET_VERSION
3133
updated = True
34+
print(f'Updating Puppet version requirement to {PUPPET_VERSION}')
3235

33-
for operatingsystem in metadata.get('operatingsystem_support', []):
34-
releases = set(operatingsystem.get('operatingsystemrelease', []))
35-
for release in releases & UNSUPPORTED.get(operatingsystem['operatingsystem'], set()):
36-
print('Removing {}-{}'.format(operatingsystem['operatingsystem'], release))
37-
operatingsystem['operatingsystemrelease'].remove(release)
38-
updated = True
36+
# Clean Up Unsupported OS and Versions (Safe Logic)
37+
original_os_support = metadata.get('operatingsystem_support', [])
38+
new_os_support = []
3939

40-
if operatingsystem.get('operatingsystemrelease') == []:
41-
print('Removing {}'.format(operatingsystem['operatingsystem']))
42-
metadata['operatingsystem_support'].remove(operatingsystem)
43-
updated = True
40+
# Iterate over each OS entry (e.g., CentOS, Ubuntu).
41+
for os_entry in original_os_support:
42+
current_releases = os_entry.get('operatingsystemrelease', [])
43+
44+
# If an OS entry has no specific releases listed (like 'Archlinux'), keep it unconditionally.
45+
if not current_releases:
46+
new_os_support.append(os_entry)
47+
continue
48+
49+
# Get the set of unsupported versions for the current OS. Defaults to an empty set if not found.
50+
unsupported_for_os = UNSUPPORTED.get(os_entry['operatingsystem'], set())
51+
52+
filtered_releases = [r for r in current_releases if r not in unsupported_for_os]
53+
54+
if filtered_releases:
55+
os_entry['operatingsystemrelease'] = filtered_releases
56+
new_os_support.append(os_entry)
57+
# If all releases were unsupported, the OS entry is effectively dropped.
58+
59+
# Log
60+
removed_releases = set(current_releases) - set(filtered_releases)
61+
for release in removed_releases:
62+
print(f"Removing {os_entry['operatingsystem']}-{release}")
63+
64+
# If the OS list has changed, update the metadata and set the updated flag.
65+
if original_os_support != new_os_support:
66+
metadata['operatingsystem_support'] = new_os_support
67+
updated = True
4468

4569
if updated:
46-
print('Writing {}'.format(filename))
70+
print(f'Writing {filename}')
4771
with open(filename, 'w') as fp:
48-
fp.write(json.dumps(metadata, indent=2) + "\n")
72+
# Use indent for readability and ensure_ascii=False for special characters.
73+
fp.write(json.dumps(metadata, indent=2, ensure_ascii=False) + "\n")

0 commit comments

Comments
 (0)