blob: 6b66da315f95e2ed5ff8cedd17fb8d5e27e41054 [file] [log] [blame]
#!/usr/bin/env python3
import sys
import urllib.parse
import urllib.request
import re
from bs4 import BeautifulSoup, SoupStrainer
def validate_url(url):
urllib.request.urlopen(url)
def get_image_url(page, base_url, rex_str):
rex = re.compile(rex_str)
url = ''
soup = BeautifulSoup(page, "html.parser", parse_only=SoupStrainer("a"))
for line in soup.find_all('a', href=True):
s = rex.search(line['href'])
if s:
url = base_url + line['href']
break
return url
def get_base_url(url, job_url):
f = urllib.request.urlopen(job_url + "lastSuccessfulBuild/buildNumber")
last_build = int(f.read().decode("utf-8"))
url = '%s/%d/' % (url, last_build)
f = urllib.request.urlopen(url)
page = f.read().decode("utf-8")
base_url_p = urllib.parse.urlparse(url)
base_url = "%s://%s" % (base_url_p.scheme, base_url_p.netloc)
return (page, base_url)
def main(url='https://snapshots.linaro.org/member-builds/qcomlt/testimages/qcom-armv8a/',
job_url='https://ci.linaro.org/job/lt-qcom-linux-testimages/',
output='output.log'):
(page, base_url) = get_base_url(url, job_url)
ramdisk_url = get_image_url(page, base_url, 'initramfs-test-image-.*\.rootfs\.cpio\.gz$')
validate_url(ramdisk_url)
rootfs_url = get_image_url(page, base_url, 'rpb-console-image-test-.*\.rootfs\.ext4\.gz$')
validate_url(rootfs_url)
print('RAMDISK_URL=%s' % ramdisk_url)
print('ROOTFS_URL=%s' % rootfs_url)
rootfs_desktop_url = get_image_url(page, base_url, 'rpb-desktop-image-test-.*\.rootfs\.ext4\.gz$')
validate_url(rootfs_desktop_url)
print('ROOTFS_DESKTOP_URL=%s' % rootfs_desktop_url)
print('Writting output to %s' % output)
with open(output, 'w') as f:
f.write("RAMDISK_URL=" + ramdisk_url + '\n')
f.write("ROOTFS_URL=" + rootfs_url + '\n')
f.write("ROOTFS_DESKTOP_URL=" + rootfs_desktop_url + '\n')
if __name__ == "__main__":
main(*sys.argv[1:])