Files
endoflife-date-release-data/src/palo-alto-networks.py
Marc Wrobel 9d056bc41b [palo-alto-network] Refactor script (#238)
Make the script more readable, mostly by:

- using the Product class,
- removing the use of functions when unnecessary,
- a little bit of renaming and documentation.
2023-12-11 22:21:14 +01:00

42 lines
1.4 KiB
Python

import re
from bs4 import BeautifulSoup
from common import dates
from common import endoflife
from common import http
IDENTIFIERS_BY_PRODUCT = {
"pan-os": "pan-os-panorama",
"pan-gp": "globalprotect",
"pan-cortex-xdr": "traps-esm-and-cortex",
}
# all products are on the same page, it's faster to fetch it only once
print("::group::palo-alto-networks")
response = http.fetch_url("https://www.paloaltonetworks.com/services/support/end-of-life-announcements/end-of-life-summary")
soup = BeautifulSoup(response.text, features="html5lib")
print("::endgroup::")
for product_name, identifier in IDENTIFIERS_BY_PRODUCT.items():
print(f"::group::{product_name}")
product = endoflife.Product(product_name)
table = soup.find(id=identifier)
for tr in table.findAll("tr")[3:]:
td_list = tr.findAll("td")
if len(td_list) <= 1:
continue
version = td_list[0].get_text().strip().lower().replace(" ", "-").replace("*", "")
version = version.removesuffix("-(cortex-xdr-agent)")
version = version.removesuffix("-(vm-series-only)")
version = version.removesuffix("-(panorama-only)")
# A few dates have 1st, 2nd, 4th... Remove it.
date_str = re.sub(r'(\w+) (\d{1,2})\w{2}, (\d{4})', r'\1 \2, \3', td_list[1].get_text())
date = dates.parse_date(date_str)
product.declare_version(version, date)
product.write()
print("::endgroup::")