xref: /openbmc/openbmc/poky/bitbake/lib/toaster/orm/fixtures/check_fixtures.py (revision c9537f57ab488bf5d90132917b0184e2527970a5)
1*c9537f57SPatrick Williams#!/usr/bin/env python3
2*c9537f57SPatrick Williams#
3*c9537f57SPatrick Williams# Copyright (C) 2025 Linux Foundation
4*c9537f57SPatrick Williams# SPDX-License-Identifier: GPL-2.0-only
5*c9537f57SPatrick Williams#
6*c9537f57SPatrick Williams
7*c9537f57SPatrick Williamsimport json
8*c9537f57SPatrick Williamsimport urllib.request
9*c9537f57SPatrick Williams
10*c9537f57SPatrick Williamsimport gen_fixtures as fixtures
11*c9537f57SPatrick Williams
12*c9537f57SPatrick WilliamsRELEASE_URL = "https://dashboard.yoctoproject.org/releases.json"
13*c9537f57SPatrick Williams
14*c9537f57SPatrick Williamswith urllib.request.urlopen(RELEASE_URL) as response:
15*c9537f57SPatrick Williams    if response.getcode() == 200:
16*c9537f57SPatrick Williams        data = response.read().decode("utf-8")
17*c9537f57SPatrick Williams        releases = json.loads(data)
18*c9537f57SPatrick Williams    else:
19*c9537f57SPatrick Williams        print("Couldn't access %s: %s" % (RELEASE_URL, reponse.getcode()))
20*c9537f57SPatrick Williams        exit(1)
21*c9537f57SPatrick Williams
22*c9537f57SPatrick Williams
23*c9537f57SPatrick Williams# grab the recent release branches and add master, so we can ignore old branches
24*c9537f57SPatrick Williamsactive_releases = [
25*c9537f57SPatrick Williams    e["release_codename"].lower() for e in releases if e["series"] == "current"
26*c9537f57SPatrick Williams]
27*c9537f57SPatrick Williamsactive_releases.append("master")
28*c9537f57SPatrick Williamsactive_releases.append("head")
29*c9537f57SPatrick Williams
30*c9537f57SPatrick Williamsfixtures_releases = [x[0].lower() for x in fixtures.current_releases]
31*c9537f57SPatrick Williams
32*c9537f57SPatrick Williamsif set(active_releases) != set(fixtures_releases):
33*c9537f57SPatrick Williams    print("WARNING: Active releases don't match toaster configured releases, the difference is: %s" % set(active_releases).difference(set(fixtures_releases)))
34*c9537f57SPatrick Williams    print("Active releases: %s" % sorted(active_releases))
35*c9537f57SPatrick Williams    print("Toaster configured releases: %s" % sorted(fixtures_releases))
36*c9537f57SPatrick Williamselse:
37*c9537f57SPatrick Williams    print("Success, configuration matches")
38*c9537f57SPatrick Williams
39