summaryrefslogtreecommitdiff
path: root/roles/raspios/image/filter_plugins/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'roles/raspios/image/filter_plugins/main.py')
-rw-r--r--roles/raspios/image/filter_plugins/main.py43
1 files changed, 16 insertions, 27 deletions
diff --git a/roles/raspios/image/filter_plugins/main.py b/roles/raspios/image/filter_plugins/main.py
index a8086f66..5ac2d5ab 100644
--- a/roles/raspios/image/filter_plugins/main.py
+++ b/roles/raspios/image/filter_plugins/main.py
@@ -6,42 +6,32 @@ from ansible import errors
from urllib.parse import urlparse, urlunparse
-def raspios_extract_download_base_url(os_list, variant, codename, arch):
- try:
- os_name = 'Raspberry Pi OS '
- if variant != 'desktop':
- os_name += '%s ' % variant.capitalize()
- os_name += {'armhf': '(32-bit)', 'arm64': '(64-bit)'}[arch]
+def _raspios_extract_latest_image_download_url_recursive(items, image_name_suffix):
+ for item in items:
+ if not item['name'].startswith('Raspberry Pi OS '):
+ continue
- for item in os_list:
- if item['os_name'] != os_name:
+ if 'url' in item:
+ result = urlparse(item['url'])
+ if not os.path.basename(result.path).endswith(image_name_suffix):
continue
- if item['version'] != codename:
- continue
- result = urlparse(item['os_info'])
- result = result._replace(path=os.path.dirname(result.path))
- return urlunparse(result)
- except Exception as e:
- raise errors.AnsibleFilterError("raspios_extract_download_base_url(): %s" % str(e))
- raise errors.AnsibleFilterError("unable to find base url for: %s / %s / %s" % (variant, codename, arch))
-
-
-def _raspios_extract_latest_image_download_url_recursive(items, base_url):
- base_url = base_url.replace('http://', 'https://')
- for item in items:
- if 'url' in item and item['url'].replace('http://', 'https://').startswith(base_url):
- return item['url']
+ return urlunparse(result)
if 'subitems' in item:
- result = _raspios_extract_latest_image_download_url_recursive(item['subitems'], base_url)
+ result = _raspios_extract_latest_image_download_url_recursive(item['subitems'], image_name_suffix)
if result:
return result
return None
-def raspios_extract_latest_image_download_url(os_list, base_url):
+def raspios_extract_latest_image_download_url(os_list, variant, codename, arch):
try:
- result = _raspios_extract_latest_image_download_url_recursive(os_list, base_url)
+ image_name_suffix = 'raspios-%s-%s' % (codename, arch)
+ if variant != 'desktop':
+ image_name_suffix += '-%s' % variant
+ image_name_suffix += '.img.xz'
+
+ result = _raspios_extract_latest_image_download_url_recursive(os_list, image_name_suffix)
if result:
return result
@@ -54,7 +44,6 @@ def raspios_extract_latest_image_download_url(os_list, base_url):
class FilterModule(object):
filter_map = {
- 'raspios_extract_download_base_url': raspios_extract_download_base_url,
'raspios_extract_latest_image_download_url': raspios_extract_latest_image_download_url,
}