Make the script more readable, mostly by: - changing slightly the logic, - using the Product and AutoConfig classes, - removing the use of functions when unnecessary, - a little bit of renaming and documentation. Disabled web.archive.org has also been re-enabled because HTTP retry mechanism has been improved and should handle timeouts a lot better.
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
from bs4 import BeautifulSoup
|
|
from common import http
|
|
from common import dates
|
|
from common import endoflife
|
|
|
|
"""Fetches EKS versions from AWS docs.
|
|
Now that AWS no longer publishes docs on GitHub, we use the Web Archive to still get the older versions."""
|
|
|
|
URLS = [
|
|
# 1.19.eks.1
|
|
"https://web.archive.org/web/20221007150452/https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html",
|
|
# + 1.20
|
|
"https://web.archive.org/web/20230521061347/https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html",
|
|
# + latest
|
|
"https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html",
|
|
]
|
|
|
|
product = endoflife.Product("eks")
|
|
print(f"::group::{product.name}")
|
|
|
|
for version_list in http.fetch_urls(URLS):
|
|
version_list_soup = BeautifulSoup(version_list.text, features="html5lib")
|
|
for tr in version_list_soup.select("#main-col-body")[0].findAll("tr"):
|
|
cells = tr.findAll("td")
|
|
if not cells:
|
|
continue
|
|
|
|
k8s_version = cells[0].text.strip()
|
|
eks_version = cells[1].text.strip()
|
|
date_str = cells[-1].text.strip()
|
|
|
|
k8s_version_match = endoflife.DEFAULT_VERSION_PATTERN.match(k8s_version)
|
|
if k8s_version_match:
|
|
date = dates.parse_date(date_str)
|
|
# K8S patch version is not kept to match versions on https://github.com/aws/eks-distro/tags.
|
|
version = f"{k8s_version_match.group('major')}.{k8s_version_match.group('minor')}-{eks_version.replace('.', '-')}"
|
|
product.declare_version(version, date)
|
|
|
|
product.write()
|
|
print("::endgroup::")
|