1897
1897
# Skip already invalid excuses.
1898
1898
if not excuse.is_valid:
1900
# Also skip removals, binary-only candidates, proposed-updates
1901
# and unknown versions.
1902
if (e.name.startswith("-") or
1900
1907
statuses = set()
1901
# Update valid excuses from the boottest context and if they
1902
# have failed, block their migration.
1908
# Update valid excuses from the boottest context.
1903
1909
for binary_name, status in boottest.update(excuse):
1904
1910
label = BootTest.EXCUSE_LABELS.get(
1905
1911
status, 'UNKNOWN STATUS')
1906
1912
excuse.addhtml("boottest for %s %s: %s" %
1907
1913
(binary_name, excuse.ver[1], label))
1908
1914
statuses.add(status)
1909
# If all boottests passed or were skipped, the excuse is
1910
# clean and promotion can proceed, according to the
1911
# boottest criteria. Otherwise block the promotion.
1915
# No boottest attemps requested, it's not relevant in this
1916
# context, rely on other checks to judge promotion.
1919
# Block promotion if any boottests attempt has failed or
1920
# still in progress.
1912
1921
if not statuses.issubset(set(BootTest.VALID_STATUSES)):
1913
1922
excuse.addhtml("Not considered")
1914
1923
excuse.addreason("boottest")