|
4 | 4 | import sys
|
5 | 5 |
|
6 | 6 | import requests
|
7 |
| -from packaging.version import Version |
| 7 | +from packaging.version import Version, InvalidVersion |
8 | 8 |
|
9 | 9 | from utils.hotfix_utils.InstrumentChecker import InstrumentChecker
|
10 | 10 |
|
@@ -40,39 +40,41 @@ def get_insts_on_latest_ibex_via_inst_config(self) -> list:
|
40 | 40 | result_list = []
|
41 | 41 | for instrument in instrument_list:
|
42 | 42 | if not instrument["seci"]:
|
43 |
| - version = requests.get( |
| 43 | + version_string = requests.get( |
44 | 44 | "https://control-svcs.isis.cclrc.ac.uk/git/?p=instconfigs/inst.git;a=blob_plain;f=configurations/config_version.txt;hb=refs/heads/"
|
45 | 45 | + instrument["hostName"]
|
46 | 46 | ).text
|
47 |
| - version_first_number = int(version.strip().split(".")[0]) |
48 |
| - if self.debug_mode: |
49 |
| - print( |
50 |
| - f"DEBUG: Found instrument {instrument['name']} on IBEX version {version_first_number}" |
51 |
| - ) |
52 |
| - if ( |
53 |
| - version_first_number is not None |
54 |
| - and version_first_number != "None" |
55 |
| - and version_first_number != "" |
56 |
| - ): |
| 47 | + try: |
| 48 | + version = Version(version_string) |
| 49 | + |
| 50 | + if self.debug_mode: |
| 51 | + print( |
| 52 | + f"DEBUG: Found instrument {instrument['name']} on IBEX version {version}" |
| 53 | + ) |
57 | 54 | result_list.append(
|
58 | 55 | {
|
59 | 56 | "hostname": instrument["hostName"],
|
60 |
| - "version": version_first_number, |
| 57 | + "version": version, |
61 | 58 | }
|
62 | 59 | )
|
| 60 | + except InvalidVersion as e: |
| 61 | + print( |
| 62 | + f"Could not parse {instrument['name']}'s Version({version_string}): {str(e)}" |
| 63 | + ) |
63 | 64 |
|
64 | 65 | # Get the latest versions of IBEX
|
65 |
| - versions = sorted(set([inst["version"] for inst in result_list]), key=Version) |
66 |
| - latest_version = versions[-1] |
67 |
| - second_latest_version = versions[-2] |
| 66 | + versions = sorted(set([inst["version"] for inst in result_list])) |
| 67 | + |
| 68 | + latest_major_version = versions[-1].major |
| 69 | + second_latest_major_version = latest_major_version - 1 |
| 70 | + print(f"INFO: checking versions {latest_major_version}.x.x and {second_latest_major_version}.x.x") |
68 | 71 |
|
69 | 72 | # filter out the instruments that are not on the latest version
|
70 | 73 | insts_on_latest_ibex = [
|
71 | 74 | inst["hostname"]
|
72 | 75 | for inst in result_list
|
73 | 76 | if (
|
74 |
| - inst["version"] == latest_version |
75 |
| - or inst["version"] == second_latest_version |
| 77 | + inst["version"].major in [latest_major_version, second_latest_major_version] |
76 | 78 | )
|
77 | 79 | ]
|
78 | 80 |
|
|
0 commit comments