From db7f5e2647123aad13dbee0d9b9eb272203d5ae6 Mon Sep 17 00:00:00 2001 From: Rajeshkumar-s2 Date: Thu, 14 May 2026 18:03:06 +0530 Subject: [PATCH 01/24] catalog changes and bug fixes (#4431) * catalog changes and bug fixes Signed-off-by: Rajeshkumar S * Updating the storage config Signed-off-by: Rajeshkumar S * Updating the DCO Signed-off-by: Rajeshkumar S --------- Signed-off-by: Rajeshkumar S Co-authored-by: Abhishek S A --- examples/catalog/catalog_rhel.json | 690 ++++----- .../catalog_rhel_aarch64_with_slurm_only.json | 182 ++- .../catalog_rhel_with_nfs_provisioner.json | 549 ++++--- examples/catalog/catalog_rhel_x86_64.json | 1282 ++++++++--------- .../catalog_rhel_x86_64_with_slurm_only.json | 88 +- .../.gitlab-ci-deploy-child-template.yml | 40 +- .../hosted_gitlab/tasks/push_ci_files.yml | 30 +- 7 files changed, 1424 insertions(+), 1437 deletions(-) diff --git a/examples/catalog/catalog_rhel.json b/examples/catalog/catalog_rhel.json index e8d5fe4b75..8ae720a37a 100644 --- a/examples/catalog/catalog_rhel.json +++ b/examples/catalog/catalog_rhel.json @@ -12,9 +12,13 @@ "package_id_12", "package_id_13", "package_id_14", - "package_id_19", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", "package_id_2", - "package_id_24", + "package_id_23", + "package_id_28", "package_id_3", "package_id_4", "package_id_5", @@ -32,16 +36,20 @@ "package_id_12", "package_id_13", "package_id_14", - "package_id_19", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", "package_id_2", - "package_id_24", + "package_id_23", + "package_id_28", + "package_id_29", "package_id_3", "package_id_4", "package_id_5", "package_id_6", "package_id_7", "package_id_8", - "package_id_89", "package_id_9" ] }, @@ -53,13 +61,10 @@ "Name": "service_kube_control_plane_x86_64", "FunctionalPackages": [ "package_id_1", - "package_id_25", - "package_id_26", - "package_id_27", - "package_id_28", - "package_id_29", + "package_id_10", + "package_id_11", + "package_id_12", "package_id_3", - "package_id_30", "package_id_31", "package_id_32", "package_id_33", @@ -118,20 +123,26 @@ "package_id_83", "package_id_84", "package_id_85", - "package_id_86" + "package_id_86", + "package_id_87", + "package_id_88", + "package_id_89", + "package_id_9", + "package_id_90", + "package_id_91", + "package_id_92", + "package_id_93", + "package_id_94" ] }, { "Name": "service_kube_node_x86_64", "FunctionalPackages": [ "package_id_1", - "package_id_25", - "package_id_26", - "package_id_27", - "package_id_28", - "package_id_29", + "package_id_10", + "package_id_11", + "package_id_12", "package_id_3", - "package_id_30", "package_id_31", "package_id_32", "package_id_33", @@ -168,11 +179,21 @@ "package_id_63", "package_id_64", "package_id_65", + "package_id_66", + "package_id_67", + "package_id_68", + "package_id_69", "package_id_7", - "package_id_77", + "package_id_70", + "package_id_71", + "package_id_72", + "package_id_73", + "package_id_74", "package_id_8", - "package_id_87", - "package_id_88" + "package_id_86", + "package_id_9", + "package_id_95", + "package_id_96" ] }, { @@ -187,19 +208,19 @@ "package_id_16", "package_id_17", "package_id_18", + "package_id_19", "package_id_2", + "package_id_20", + "package_id_21", + "package_id_22", + "package_id_29", "package_id_3", "package_id_4", "package_id_5", "package_id_6", "package_id_7", "package_id_8", - "package_id_89", - "package_id_9", - "package_id_90", - "package_id_91", - "package_id_92", - "package_id_93" + "package_id_9" ] }, { @@ -210,12 +231,16 @@ "package_id_12", "package_id_13", "package_id_14", - "package_id_19", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", "package_id_2", - "package_id_20", - "package_id_21", - "package_id_22", "package_id_23", + "package_id_24", + "package_id_25", + "package_id_26", + "package_id_27", "package_id_3", "package_id_4", "package_id_5", @@ -346,16 +371,7 @@ "infrastructure_package_id_15", "infrastructure_package_id_16", "infrastructure_package_id_17", - "infrastructure_package_id_18", - "infrastructure_package_id_19", "infrastructure_package_id_2", - "infrastructure_package_id_20", - "infrastructure_package_id_21", - "infrastructure_package_id_22", - "infrastructure_package_id_23", - "infrastructure_package_id_24", - "infrastructure_package_id_25", - "infrastructure_package_id_26", "infrastructure_package_id_3", "infrastructure_package_id_4", "infrastructure_package_id_5", @@ -554,6 +570,102 @@ ] }, "package_id_9": { + "Name": "iscsi-initiator-utils", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "aarch64", + "x86_64" + ], + "Type": "rpm", + "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "baseos" + }, + { + "Architecture": "x86_64", + "RepoName": "baseos" + } + ] + }, + "package_id_10": { + "Name": "device-mapper-multipath", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "aarch64", + "x86_64" + ], + "Type": "rpm", + "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "baseos" + }, + { + "Architecture": "x86_64", + "RepoName": "baseos" + } + ] + }, + "package_id_11": { + "Name": "sg3_utils", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "aarch64", + "x86_64" + ], + "Type": "rpm", + "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "baseos" + }, + { + "Architecture": "x86_64", + "RepoName": "baseos" + } + ] + }, + "package_id_12": { + "Name": "lsscsi", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "aarch64", + "x86_64" + ], + "Type": "rpm", + "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "baseos" + }, + { + "Architecture": "x86_64", + "RepoName": "baseos" + } + ] + }, + "package_id_13": { "Name": "imb", "SupportedOS": [ { @@ -577,7 +689,7 @@ } ] }, - "package_id_10": { + "package_id_14": { "Name": "osu-micro-benchmarks", "SupportedOS": [ { @@ -601,7 +713,7 @@ } ] }, - "package_id_11": { + "package_id_15": { "Name": "likwid", "SupportedOS": [ { @@ -625,7 +737,7 @@ } ] }, - "package_id_12": { + "package_id_16": { "Name": "geopm", "SupportedOS": [ { @@ -649,7 +761,7 @@ } ] }, - "package_id_13": { + "package_id_17": { "Name": "papi", "SupportedOS": [ { @@ -673,7 +785,7 @@ } ] }, - "package_id_14": { + "package_id_18": { "Name": "sionlib", "SupportedOS": [ { @@ -697,7 +809,7 @@ } ] }, - "package_id_15": { + "package_id_19": { "Name": "slurm-slurmctld", "SupportedOS": [ { @@ -721,7 +833,7 @@ } ] }, - "package_id_16": { + "package_id_20": { "Name": "slurm-slurmdbd", "SupportedOS": [ { @@ -745,7 +857,7 @@ } ] }, - "package_id_17": { + "package_id_21": { "Name": "python3-PyMySQL", "SupportedOS": [ { @@ -769,7 +881,7 @@ } ] }, - "package_id_18": { + "package_id_22": { "Name": "mariadb-server", "SupportedOS": [ { @@ -793,7 +905,7 @@ } ] }, - "package_id_19": { + "package_id_23": { "Name": "slurm-slurmd", "SupportedOS": [ { @@ -817,7 +929,7 @@ } ] }, - "package_id_20": { + "package_id_24": { "Name": "slurm-pam_slurm", "SupportedOS": [ { @@ -841,7 +953,7 @@ } ] }, - "package_id_21": { + "package_id_25": { "Name": "kernel-devel", "SupportedOS": [ { @@ -865,7 +977,7 @@ } ] }, - "package_id_22": { + "package_id_26": { "Name": "kernel-headers", "SupportedOS": [ { @@ -889,7 +1001,7 @@ } ] }, - "package_id_23": { + "package_id_27": { "Name": "nvhpc_2025_2511_Linux_aarch64_cuda_13.0", "SupportedOS": [ { @@ -908,7 +1020,7 @@ } ] }, - "package_id_24": { + "package_id_28": { "Name": "slurm", "SupportedOS": [ { @@ -932,7 +1044,45 @@ } ] }, - "package_id_25": { + "package_id_29": { + "Name": "msr-safe", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" + } + ] + }, + "package_id_30": { + "Name": "nvhpc_2025_2511_Linux_x86_64_cuda_13.0", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://developer.download.nvidia.com/hpc-sdk/25.11/nvhpc_2025_2511_Linux_x86_64_cuda_13.0.tar.gz" + } + ] + }, + "package_id_31": { "Name": "docker.io/library/busybox", "SupportedOS": [ { @@ -947,7 +1097,7 @@ "Tag": "1.36", "Version": "1.36" }, - "package_id_26": { + "package_id_32": { "Name": "git", "SupportedOS": [ { @@ -966,7 +1116,7 @@ } ] }, - "package_id_27": { + "package_id_33": { "Name": "fuse-overlayfs", "SupportedOS": [ { @@ -985,7 +1135,7 @@ } ] }, - "package_id_28": { + "package_id_34": { "Name": "podman", "SupportedOS": [ { @@ -1004,7 +1154,7 @@ } ] }, - "package_id_29": { + "package_id_35": { "Name": "kubeadm-1.34.1", "SupportedOS": [ { @@ -1023,7 +1173,7 @@ } ] }, - "package_id_30": { + "package_id_36": { "Name": "kubelet-1.34.1", "SupportedOS": [ { @@ -1042,7 +1192,7 @@ } ] }, - "package_id_31": { + "package_id_37": { "Name": "container-selinux", "SupportedOS": [ { @@ -1061,7 +1211,7 @@ } ] }, - "package_id_32": { + "package_id_38": { "Name": "cri-o-1.34.1", "SupportedOS": [ { @@ -1080,7 +1230,7 @@ } ] }, - "package_id_33": { + "package_id_39": { "Name": "docker.io/victoriametrics/victoria-metrics", "SupportedOS": [ { @@ -1095,7 +1245,7 @@ "Tag": "v1.128.0", "Version": "v1.128.0" }, - "package_id_34": { + "package_id_40": { "Name": "docker.io/victoriametrics/vmagent", "SupportedOS": [ { @@ -1110,7 +1260,7 @@ "Tag": "v1.128.0", "Version": "v1.128.0" }, - "package_id_35": { + "package_id_41": { "Name": "docker.io/victoriametrics/vmstorage", "SupportedOS": [ { @@ -1125,7 +1275,7 @@ "Tag": "v1.128.0-cluster", "Version": "v1.128.0-cluster" }, - "package_id_36": { + "package_id_42": { "Name": "docker.io/victoriametrics/vminsert", "SupportedOS": [ { @@ -1140,7 +1290,7 @@ "Tag": "v1.128.0-cluster", "Version": "v1.128.0-cluster" }, - "package_id_37": { + "package_id_43": { "Name": "docker.io/victoriametrics/vmselect", "SupportedOS": [ { @@ -1155,7 +1305,7 @@ "Tag": "v1.128.0-cluster", "Version": "v1.128.0-cluster" }, - "package_id_38": { + "package_id_44": { "Name": "docker.io/victoriametrics/victoria-logs", "SupportedOS": [ { @@ -1170,7 +1320,7 @@ "Tag": "v1.50.0", "Version": "v1.50.0" }, - "package_id_39": { + "package_id_45": { "Name": "docker.io/victoriametrics/vlagent", "SupportedOS": [ { @@ -1185,7 +1335,7 @@ "Tag": "v1.50.0", "Version": "v1.50.0" }, - "package_id_40": { + "package_id_46": { "Name": "docker.io/alpine/kubectl", "SupportedOS": [ { @@ -1200,7 +1350,7 @@ "Tag": "1.34.1", "Version": "1.34.1" }, - "package_id_41": { + "package_id_47": { "Name": "docker.io/curlimages/curl", "SupportedOS": [ { @@ -1215,7 +1365,7 @@ "Tag": "8.17.0", "Version": "8.17.0" }, - "package_id_42": { + "package_id_48": { "Name": "docker.io/rmohr/activemq", "SupportedOS": [ { @@ -1230,7 +1380,7 @@ "Tag": "5.15.9", "Version": "5.15.9" }, - "package_id_43": { + "package_id_49": { "Name": "docker.io/library/mysql", "SupportedOS": [ { @@ -1245,7 +1395,22 @@ "Tag": "9.3.0", "Version": "9.3.0" }, - "package_id_44": { + "package_id_50": { + "Name": "docker.io/library/python", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "image", + "Tag": "3.11-slim", + "Version": "3.11-slim" + }, + "package_id_51": { "Name": "docker.io/dellhpcomniaaisolution/idrac_telemetry_receiver", "SupportedOS": [ { @@ -1260,7 +1425,7 @@ "Tag": "1.2", "Version": "1.2" }, - "package_id_45": { + "package_id_52": { "Name": "docker.io/dellhpcomniaaisolution/kafkapump", "SupportedOS": [ { @@ -1275,7 +1440,7 @@ "Tag": "1.2", "Version": "1.2" }, - "package_id_46": { + "package_id_53": { "Name": "docker.io/dellhpcomniaaisolution/victoriapump", "SupportedOS": [ { @@ -1290,7 +1455,7 @@ "Tag": "1.2", "Version": "1.2" }, - "package_id_47": { + "package_id_54": { "Name": "cryptography==45.0.7", "SupportedOS": [ { @@ -1303,7 +1468,7 @@ ], "Type": "pip_module" }, - "package_id_48": { + "package_id_55": { "Name": "omsdk==1.2.518", "SupportedOS": [ { @@ -1316,7 +1481,7 @@ ], "Type": "pip_module" }, - "package_id_49": { + "package_id_56": { "Name": "cffi==1.17.1", "SupportedOS": [ { @@ -1329,7 +1494,33 @@ ], "Type": "pip_module" }, - "package_id_50": { + "package_id_57": { + "Name": "prometheus_client==0.20.0", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "pip_module" + }, + "package_id_58": { + "Name": "kubernetes==33.1.0", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "pip_module" + }, + "package_id_59": { "Name": "quay.io/strimzi/operator", "SupportedOS": [ { @@ -1344,7 +1535,7 @@ "Tag": "0.48.0", "Version": "0.48.0" }, - "package_id_51": { + "package_id_60": { "Name": "quay.io/strimzi/kafka", "SupportedOS": [ { @@ -1359,7 +1550,7 @@ "Tag": "0.48.0-kafka-4.1.0", "Version": "0.48.0-kafka-4.1.0" }, - "package_id_52": { + "package_id_61": { "Name": "docker.io/dellhpcomniaaisolution/ubuntu-ldms", "SupportedOS": [ { @@ -1374,7 +1565,7 @@ "Tag": "1.0", "Version": "1.0" }, - "package_id_53": { + "package_id_62": { "Name": "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector", "SupportedOS": [ { @@ -1389,7 +1580,7 @@ "Tag": "0.143.1", "Version": "0.143.1" }, - "package_id_54": { + "package_id_63": { "Name": "docker.io/nginxinc/nginx-unprivileged", "SupportedOS": [ { @@ -1404,7 +1595,7 @@ "Tag": "1.29", "Version": "1.29" }, - "package_id_55": { + "package_id_64": { "Name": "karavi-observability", "SupportedOS": [ { @@ -1418,7 +1609,7 @@ "Type": "git", "Version": "v1.12.0" }, - "package_id_56": { + "package_id_65": { "Name": "quay.io/jetstack/cert-manager-controller", "SupportedOS": [ { @@ -1433,7 +1624,7 @@ "Tag": "v1.10.0", "Version": "v1.10.0" }, - "package_id_57": { + "package_id_66": { "Name": "quay.io/jetstack/cert-manager-cainjector", "SupportedOS": [ { @@ -1448,7 +1639,7 @@ "Tag": "v1.10.0", "Version": "v1.10.0" }, - "package_id_58": { + "package_id_67": { "Name": "quay.io/jetstack/cert-manager-webhook", "SupportedOS": [ { @@ -1463,7 +1654,7 @@ "Tag": "v1.10.0", "Version": "v1.10.0" }, - "package_id_59": { + "package_id_68": { "Name": "quay.io/jetstack/cert-manager-acmesolver", "SupportedOS": [ { @@ -1478,7 +1669,7 @@ "Tag": "v1.10.0", "Version": "v1.10.0" }, - "package_id_60": { + "package_id_69": { "Name": "cert-manager-v1.10.0", "SupportedOS": [ { @@ -1497,7 +1688,7 @@ } ] }, - "package_id_61": { + "package_id_70": { "Name": "strimzi-kafka-operator-helm-3-chart-0.48.0", "SupportedOS": [ { @@ -1516,7 +1707,7 @@ } ] }, - "package_id_62": { + "package_id_71": { "Name": "quay.io/strimzi/kafka-bridge", "SupportedOS": [ { @@ -1531,7 +1722,7 @@ "Tag": "0.33.1", "Version": "0.33.1" }, - "package_id_63": { + "package_id_72": { "Name": "docker.io/victoriametrics/operator", "SupportedOS": [ { @@ -1546,7 +1737,7 @@ "Tag": "config-reloader-v0.68.3", "Version": "config-reloader-v0.68.3" }, - "package_id_64": { + "package_id_73": { "Name": "victoria-metrics-operator-0.59.3", "SupportedOS": [ { @@ -1565,7 +1756,7 @@ } ] }, - "package_id_65": { + "package_id_74": { "Name": "docker.io/timberio/vector", "SupportedOS": [ { @@ -1577,10 +1768,10 @@ "x86_64" ], "Type": "image", - "Tag": "0.54.0-alpine", - "Version": "0.54.0-alpine" + "Tag": "0.54.0-debian", + "Version": "0.54.0-debian" }, - "package_id_66": { + "package_id_75": { "Name": "ghcr.io/kube-vip/kube-vip", "SupportedOS": [ { @@ -1595,7 +1786,7 @@ "Tag": "v0.8.9", "Version": "v0.8.9" }, - "package_id_67": { + "package_id_76": { "Name": "registry.k8s.io/kube-apiserver", "SupportedOS": [ { @@ -1610,7 +1801,7 @@ "Tag": "v1.34.1", "Version": "v1.34.1" }, - "package_id_68": { + "package_id_77": { "Name": "registry.k8s.io/kube-controller-manager", "SupportedOS": [ { @@ -1625,7 +1816,7 @@ "Tag": "v1.34.1", "Version": "v1.34.1" }, - "package_id_69": { + "package_id_78": { "Name": "registry.k8s.io/kube-scheduler", "SupportedOS": [ { @@ -1640,7 +1831,7 @@ "Tag": "v1.34.1", "Version": "v1.34.1" }, - "package_id_70": { + "package_id_79": { "Name": "registry.k8s.io/kube-proxy", "SupportedOS": [ { @@ -1655,7 +1846,7 @@ "Tag": "v1.34.1", "Version": "v1.34.1" }, - "package_id_71": { + "package_id_80": { "Name": "registry.k8s.io/coredns/coredns", "SupportedOS": [ { @@ -1670,7 +1861,7 @@ "Tag": "v1.12.1", "Version": "v1.12.1" }, - "package_id_72": { + "package_id_81": { "Name": "registry.k8s.io/pause", "SupportedOS": [ { @@ -1685,7 +1876,7 @@ "Tag": "3.10.1", "Version": "3.10.1" }, - "package_id_73": { + "package_id_82": { "Name": "registry.k8s.io/etcd", "SupportedOS": [ { @@ -1700,7 +1891,7 @@ "Tag": "3.6.4-0", "Version": "3.6.4-0" }, - "package_id_74": { + "package_id_83": { "Name": "docker.io/calico/cni", "SupportedOS": [ { @@ -1715,7 +1906,7 @@ "Tag": "v3.30.3", "Version": "v3.30.3" }, - "package_id_75": { + "package_id_84": { "Name": "docker.io/calico/kube-controllers", "SupportedOS": [ { @@ -1730,7 +1921,7 @@ "Tag": "v3.30.3", "Version": "v3.30.3" }, - "package_id_76": { + "package_id_85": { "Name": "docker.io/calico/node", "SupportedOS": [ { @@ -1745,7 +1936,7 @@ "Tag": "v3.30.3", "Version": "v3.30.3" }, - "package_id_77": { + "package_id_86": { "Name": "quay.io/metallb/speaker", "SupportedOS": [ { @@ -1760,7 +1951,7 @@ "Tag": "v0.15.2", "Version": "v0.15.2" }, - "package_id_78": { + "package_id_87": { "Name": "kubectl-1.34.1", "SupportedOS": [ { @@ -1779,7 +1970,7 @@ } ] }, - "package_id_79": { + "package_id_88": { "Name": "prettytable==3.14.0", "SupportedOS": [ { @@ -1792,7 +1983,7 @@ ], "Type": "pip_module" }, - "package_id_80": { + "package_id_89": { "Name": "python3-3.12.9", "SupportedOS": [ { @@ -1811,20 +2002,7 @@ } ] }, - "package_id_81": { - "Name": "kubernetes==33.1.0", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "pip_module" - }, - "package_id_82": { + "package_id_90": { "Name": "PyMySQL==1.1.2", "SupportedOS": [ { @@ -1837,7 +2015,7 @@ ], "Type": "pip_module" }, - "package_id_83": { + "package_id_91": { "Name": "calico-v3.30.3", "SupportedOS": [ { @@ -1856,7 +2034,7 @@ } ] }, - "package_id_84": { + "package_id_92": { "Name": "metallb-native-v0.15.2", "SupportedOS": [ { @@ -1875,7 +2053,7 @@ } ] }, - "package_id_85": { + "package_id_93": { "Name": "helm-v3.19.0-amd64", "SupportedOS": [ { @@ -1894,7 +2072,7 @@ } ] }, - "package_id_86": { + "package_id_94": { "Name": "nfs-subdir-external-provisioner-4.0.18", "SupportedOS": [ { @@ -1913,7 +2091,7 @@ } ] }, - "package_id_87": { + "package_id_95": { "Name": "registry.k8s.io/sig-storage/nfs-subdir-external-provisioner", "SupportedOS": [ { @@ -1928,7 +2106,7 @@ "Tag": "v4.0.2", "Version": "v4.0.2" }, - "package_id_88": { + "package_id_96": { "Name": "quay.io/metallb/controller", "SupportedOS": [ { @@ -1942,120 +2120,6 @@ "Type": "image", "Tag": "v0.15.2", "Version": "v0.15.2" - }, - "package_id_89": { - "Name": "msr-safe", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" - } - ] - }, - "package_id_90": { - "Name": "iscsi-initiator-utils", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] - }, - "package_id_91": { - "Name": "device-mapper-multipath", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] - }, - "package_id_92": { - "Name": "sg3_utils", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] - }, - "package_id_93": { - "Name": "lsscsi", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] - }, - "package_id_94": { - "Name": "nvhpc_2025_2511_Linux_x86_64_cuda_13.0", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://developer.download.nvidia.com/hpc-sdk/25.11/nvhpc_2025_2511_Linux_x86_64_cuda_13.0.tar.gz" - } - ] } }, "OSPackages": { @@ -4620,132 +4684,6 @@ "Tag": "v2.4.0" }, "infrastructure_package_id_14": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-proxy", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_15": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-tenant", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_16": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-role", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_17": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-storage", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_18": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-controller", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_19": { - "Name": "docker.io/openpolicyagent/opa", - "Type": "image", - "Version": "0.70.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "0.70.0" - }, - "infrastructure_package_id_20": { - "Name": "docker.io/openpolicyagent/kube-mgmt", - "Type": "image", - "Version": "9.3.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "9.3.0" - }, - "infrastructure_package_id_21": { - "Name": "docker.io/library/redis", - "Type": "image", - "Version": "8.4.0-alpine", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "8.4.0-alpine" - }, - "infrastructure_package_id_22": { - "Name": "docker.io/rediscommander/redis-commander", - "Type": "image", - "Version": "latest", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "latest" - }, - "infrastructure_package_id_23": { "Name": "quay.io/dell/container-storage-modules/csi-metadata-retriever", "Type": "image", "Version": "v1.12.0", @@ -4759,7 +4697,7 @@ ], "Tag": "v1.12.0" }, - "infrastructure_package_id_24": { + "infrastructure_package_id_15": { "Name": "registry.k8s.io/sig-storage/snapshot-controller", "Type": "image", "Version": "v8.3.0", @@ -4773,7 +4711,7 @@ ], "Tag": "v8.3.0" }, - "infrastructure_package_id_25": { + "infrastructure_package_id_16": { "Name": "docker.io/dellemc/csm-encryption", "Type": "image", "Version": "v0.6.0", @@ -4787,7 +4725,7 @@ ], "Tag": "v0.6.0" }, - "infrastructure_package_id_26": { + "infrastructure_package_id_17": { "Name": "quay.io/dell/container-storage-modules/csm-metrics-powerscale", "Type": "image", "Version": "v1.11.0", diff --git a/examples/catalog/catalog_rhel_aarch64_with_slurm_only.json b/examples/catalog/catalog_rhel_aarch64_with_slurm_only.json index 69ac553999..4200a04efe 100644 --- a/examples/catalog/catalog_rhel_aarch64_with_slurm_only.json +++ b/examples/catalog/catalog_rhel_aarch64_with_slurm_only.json @@ -12,9 +12,13 @@ "package_id_11", "package_id_12", "package_id_13", - "package_id_18", + "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", "package_id_2", - "package_id_23", + "package_id_22", + "package_id_27", "package_id_3", "package_id_4", "package_id_5", @@ -32,10 +36,14 @@ "package_id_11", "package_id_12", "package_id_13", - "package_id_18", + "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", "package_id_2", - "package_id_23", - "package_id_24", + "package_id_22", + "package_id_27", + "package_id_28", "package_id_3", "package_id_4", "package_id_5", @@ -57,11 +65,11 @@ "package_id_15", "package_id_16", "package_id_17", + "package_id_18", + "package_id_19", "package_id_2", - "package_id_24", - "package_id_25", - "package_id_26", - "package_id_27", + "package_id_20", + "package_id_21", "package_id_28", "package_id_3", "package_id_4", @@ -80,12 +88,16 @@ "package_id_11", "package_id_12", "package_id_13", - "package_id_18", - "package_id_19", + "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", "package_id_2", - "package_id_20", - "package_id_21", "package_id_22", + "package_id_23", + "package_id_24", + "package_id_25", + "package_id_26", "package_id_3", "package_id_4", "package_id_5", @@ -361,7 +373,7 @@ ] }, "package_id_8": { - "Name": "imb", + "Name": "iscsi-initiator-utils", "SupportedOS": [ { "Name": "RHEL", @@ -372,20 +384,20 @@ "aarch64", "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ { "Architecture": "aarch64", - "Uri": "https://github.com/intel/mpi-benchmarks/archive/refs/tags/IMB-v2021.8.tar.gz" + "RepoName": "baseos" }, { "Architecture": "x86_64", - "Uri": "https://github.com/intel/mpi-benchmarks/archive/refs/tags/IMB-v2021.8.tar.gz" + "RepoName": "baseos" } ] }, "package_id_9": { - "Name": "osu-micro-benchmarks", + "Name": "device-mapper-multipath", "SupportedOS": [ { "Name": "RHEL", @@ -396,20 +408,20 @@ "aarch64", "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ { "Architecture": "aarch64", - "Uri": "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.5.tar.gz" + "RepoName": "baseos" }, { "Architecture": "x86_64", - "Uri": "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.5.tar.gz" + "RepoName": "baseos" } ] }, "package_id_10": { - "Name": "likwid", + "Name": "sg3_utils", "SupportedOS": [ { "Name": "RHEL", @@ -420,20 +432,20 @@ "aarch64", "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ { "Architecture": "aarch64", - "Uri": "https://github.com/RRZE-HPC/likwid/archive/refs/tags/v5.4.1.tar.gz" + "RepoName": "baseos" }, { "Architecture": "x86_64", - "Uri": "https://github.com/RRZE-HPC/likwid/archive/refs/tags/v5.4.1.tar.gz" + "RepoName": "baseos" } ] }, "package_id_11": { - "Name": "geopm", + "Name": "lsscsi", "SupportedOS": [ { "Name": "RHEL", @@ -444,20 +456,20 @@ "aarch64", "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ { "Architecture": "aarch64", - "Uri": "https://github.com/geopm/geopm/archive/refs/tags/v3.1.0.tar.gz" + "RepoName": "baseos" }, { "Architecture": "x86_64", - "Uri": "https://github.com/geopm/geopm/archive/refs/tags/v3.1.0.tar.gz" + "RepoName": "baseos" } ] }, "package_id_12": { - "Name": "papi", + "Name": "imb", "SupportedOS": [ { "Name": "RHEL", @@ -472,16 +484,16 @@ "Sources": [ { "Architecture": "aarch64", - "Uri": "https://github.com/icl-utk-edu/papi/releases/download/papi-7-2-0-t/papi-7.2.0.tar.gz" + "Uri": "https://github.com/intel/mpi-benchmarks/archive/refs/tags/IMB-v2021.8.tar.gz" }, { "Architecture": "x86_64", - "Uri": "https://github.com/icl-utk-edu/papi/releases/download/papi-7-2-0-t/papi-7.2.0.tar.gz" + "Uri": "https://github.com/intel/mpi-benchmarks/archive/refs/tags/IMB-v2021.8.tar.gz" } ] }, "package_id_13": { - "Name": "sionlib", + "Name": "osu-micro-benchmarks", "SupportedOS": [ { "Name": "RHEL", @@ -496,16 +508,16 @@ "Sources": [ { "Architecture": "aarch64", - "Uri": "https://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.7" + "Uri": "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.5.tar.gz" }, { "Architecture": "x86_64", - "Uri": "https://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.7" + "Uri": "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.5.tar.gz" } ] }, "package_id_14": { - "Name": "slurm-slurmctld", + "Name": "likwid", "SupportedOS": [ { "Name": "RHEL", @@ -516,20 +528,20 @@ "aarch64", "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "aarch64", - "RepoName": "slurm_custom" + "Uri": "https://github.com/RRZE-HPC/likwid/archive/refs/tags/v5.4.1.tar.gz" }, { "Architecture": "x86_64", - "RepoName": "slurm_custom" + "Uri": "https://github.com/RRZE-HPC/likwid/archive/refs/tags/v5.4.1.tar.gz" } ] }, "package_id_15": { - "Name": "slurm-slurmdbd", + "Name": "geopm", "SupportedOS": [ { "Name": "RHEL", @@ -540,20 +552,20 @@ "aarch64", "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "aarch64", - "RepoName": "slurm_custom" + "Uri": "https://github.com/geopm/geopm/archive/refs/tags/v3.1.0.tar.gz" }, { "Architecture": "x86_64", - "RepoName": "slurm_custom" + "Uri": "https://github.com/geopm/geopm/archive/refs/tags/v3.1.0.tar.gz" } ] }, "package_id_16": { - "Name": "python3-PyMySQL", + "Name": "papi", "SupportedOS": [ { "Name": "RHEL", @@ -564,20 +576,20 @@ "aarch64", "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "aarch64", - "RepoName": "appstream" + "Uri": "https://github.com/icl-utk-edu/papi/releases/download/papi-7-2-0-t/papi-7.2.0.tar.gz" }, { "Architecture": "x86_64", - "RepoName": "appstream" + "Uri": "https://github.com/icl-utk-edu/papi/releases/download/papi-7-2-0-t/papi-7.2.0.tar.gz" } ] }, "package_id_17": { - "Name": "mariadb-server", + "Name": "sionlib", "SupportedOS": [ { "Name": "RHEL", @@ -588,20 +600,20 @@ "aarch64", "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "aarch64", - "RepoName": "appstream" + "Uri": "https://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.7" }, { "Architecture": "x86_64", - "RepoName": "appstream" + "Uri": "https://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.7" } ] }, "package_id_18": { - "Name": "slurm-slurmd", + "Name": "slurm-slurmctld", "SupportedOS": [ { "Name": "RHEL", @@ -625,7 +637,7 @@ ] }, "package_id_19": { - "Name": "slurm-pam_slurm", + "Name": "slurm-slurmdbd", "SupportedOS": [ { "Name": "RHEL", @@ -649,7 +661,7 @@ ] }, "package_id_20": { - "Name": "kernel-devel", + "Name": "python3-PyMySQL", "SupportedOS": [ { "Name": "RHEL", @@ -673,7 +685,7 @@ ] }, "package_id_21": { - "Name": "kernel-headers", + "Name": "mariadb-server", "SupportedOS": [ { "Name": "RHEL", @@ -697,7 +709,7 @@ ] }, "package_id_22": { - "Name": "nvhpc_2025_2511_Linux_aarch64_cuda_13.0", + "Name": "slurm-slurmd", "SupportedOS": [ { "Name": "RHEL", @@ -705,18 +717,23 @@ } ], "Architecture": [ - "aarch64" + "aarch64", + "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ { "Architecture": "aarch64", - "Uri": "https://developer.download.nvidia.com/hpc-sdk/25.11/nvhpc_2025_2511_Linux_aarch64_cuda_13.0.tar.gz" + "RepoName": "slurm_custom" + }, + { + "Architecture": "x86_64", + "RepoName": "slurm_custom" } ] }, "package_id_23": { - "Name": "slurm", + "Name": "slurm-pam_slurm", "SupportedOS": [ { "Name": "RHEL", @@ -740,7 +757,7 @@ ] }, "package_id_24": { - "Name": "msr-safe", + "Name": "kernel-devel", "SupportedOS": [ { "Name": "RHEL", @@ -748,18 +765,23 @@ } ], "Architecture": [ + "aarch64", "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "appstream" + }, { "Architecture": "x86_64", - "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" + "RepoName": "appstream" } ] }, "package_id_25": { - "Name": "iscsi-initiator-utils", + "Name": "kernel-headers", "SupportedOS": [ { "Name": "RHEL", @@ -767,18 +789,23 @@ } ], "Architecture": [ + "aarch64", "x86_64" ], "Type": "rpm", "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "appstream" + }, { "Architecture": "x86_64", - "RepoName": "baseos" + "RepoName": "appstream" } ] }, "package_id_26": { - "Name": "device-mapper-multipath", + "Name": "nvhpc_2025_2511_Linux_aarch64_cuda_13.0", "SupportedOS": [ { "Name": "RHEL", @@ -786,18 +813,18 @@ } ], "Architecture": [ - "x86_64" + "aarch64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { - "Architecture": "x86_64", - "RepoName": "baseos" + "Architecture": "aarch64", + "Uri": "https://developer.download.nvidia.com/hpc-sdk/25.11/nvhpc_2025_2511_Linux_aarch64_cuda_13.0.tar.gz" } ] }, "package_id_27": { - "Name": "sg3_utils", + "Name": "slurm", "SupportedOS": [ { "Name": "RHEL", @@ -805,18 +832,23 @@ } ], "Architecture": [ + "aarch64", "x86_64" ], "Type": "rpm", "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "slurm_custom" + }, { "Architecture": "x86_64", - "RepoName": "baseos" + "RepoName": "slurm_custom" } ] }, "package_id_28": { - "Name": "lsscsi", + "Name": "msr-safe", "SupportedOS": [ { "Name": "RHEL", @@ -826,11 +858,11 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "x86_64", - "RepoName": "baseos" + "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" } ] }, diff --git a/examples/catalog/catalog_rhel_with_nfs_provisioner.json b/examples/catalog/catalog_rhel_with_nfs_provisioner.json index fc571e7158..7bbd1e2a3f 100644 --- a/examples/catalog/catalog_rhel_with_nfs_provisioner.json +++ b/examples/catalog/catalog_rhel_with_nfs_provisioner.json @@ -12,9 +12,13 @@ "package_id_12", "package_id_13", "package_id_14", - "package_id_19", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", "package_id_2", - "package_id_24", + "package_id_23", + "package_id_28", "package_id_3", "package_id_4", "package_id_5", @@ -32,16 +36,20 @@ "package_id_12", "package_id_13", "package_id_14", - "package_id_19", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", "package_id_2", - "package_id_24", + "package_id_23", + "package_id_28", + "package_id_29", "package_id_3", "package_id_4", "package_id_5", "package_id_6", "package_id_7", "package_id_8", - "package_id_89", "package_id_9" ] }, @@ -49,13 +57,10 @@ "Name": "service_kube_control_plane_x86_64", "FunctionalPackages": [ "package_id_1", - "package_id_25", - "package_id_26", - "package_id_27", - "package_id_28", - "package_id_29", + "package_id_10", + "package_id_11", + "package_id_12", "package_id_3", - "package_id_30", "package_id_31", "package_id_32", "package_id_33", @@ -114,20 +119,26 @@ "package_id_83", "package_id_84", "package_id_85", - "package_id_86" + "package_id_86", + "package_id_87", + "package_id_88", + "package_id_89", + "package_id_9", + "package_id_90", + "package_id_91", + "package_id_92", + "package_id_93", + "package_id_94" ] }, { "Name": "service_kube_node_x86_64", "FunctionalPackages": [ "package_id_1", - "package_id_25", - "package_id_26", - "package_id_27", - "package_id_28", - "package_id_29", + "package_id_10", + "package_id_11", + "package_id_12", "package_id_3", - "package_id_30", "package_id_31", "package_id_32", "package_id_33", @@ -164,11 +175,21 @@ "package_id_63", "package_id_64", "package_id_65", + "package_id_66", + "package_id_67", + "package_id_68", + "package_id_69", "package_id_7", - "package_id_77", + "package_id_70", + "package_id_71", + "package_id_72", + "package_id_73", + "package_id_74", "package_id_8", - "package_id_87", - "package_id_88" + "package_id_86", + "package_id_9", + "package_id_95", + "package_id_96" ] }, { @@ -183,19 +204,19 @@ "package_id_16", "package_id_17", "package_id_18", + "package_id_19", "package_id_2", + "package_id_20", + "package_id_21", + "package_id_22", + "package_id_29", "package_id_3", "package_id_4", "package_id_5", "package_id_6", "package_id_7", "package_id_8", - "package_id_89", - "package_id_9", - "package_id_90", - "package_id_91", - "package_id_92", - "package_id_93" + "package_id_9" ] }, { @@ -206,12 +227,16 @@ "package_id_12", "package_id_13", "package_id_14", - "package_id_19", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", "package_id_2", - "package_id_20", - "package_id_21", - "package_id_22", "package_id_23", + "package_id_24", + "package_id_25", + "package_id_26", + "package_id_27", "package_id_3", "package_id_4", "package_id_5", @@ -526,6 +551,102 @@ ] }, "package_id_9": { + "Name": "iscsi-initiator-utils", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "aarch64", + "x86_64" + ], + "Type": "rpm", + "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "baseos" + }, + { + "Architecture": "x86_64", + "RepoName": "baseos" + } + ] + }, + "package_id_10": { + "Name": "device-mapper-multipath", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "aarch64", + "x86_64" + ], + "Type": "rpm", + "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "baseos" + }, + { + "Architecture": "x86_64", + "RepoName": "baseos" + } + ] + }, + "package_id_11": { + "Name": "sg3_utils", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "aarch64", + "x86_64" + ], + "Type": "rpm", + "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "baseos" + }, + { + "Architecture": "x86_64", + "RepoName": "baseos" + } + ] + }, + "package_id_12": { + "Name": "lsscsi", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "aarch64", + "x86_64" + ], + "Type": "rpm", + "Sources": [ + { + "Architecture": "aarch64", + "RepoName": "baseos" + }, + { + "Architecture": "x86_64", + "RepoName": "baseos" + } + ] + }, + "package_id_13": { "Name": "imb", "SupportedOS": [ { @@ -549,7 +670,7 @@ } ] }, - "package_id_10": { + "package_id_14": { "Name": "osu-micro-benchmarks", "SupportedOS": [ { @@ -573,7 +694,7 @@ } ] }, - "package_id_11": { + "package_id_15": { "Name": "likwid", "SupportedOS": [ { @@ -597,7 +718,7 @@ } ] }, - "package_id_12": { + "package_id_16": { "Name": "geopm", "SupportedOS": [ { @@ -621,7 +742,7 @@ } ] }, - "package_id_13": { + "package_id_17": { "Name": "papi", "SupportedOS": [ { @@ -645,7 +766,7 @@ } ] }, - "package_id_14": { + "package_id_18": { "Name": "sionlib", "SupportedOS": [ { @@ -669,7 +790,7 @@ } ] }, - "package_id_15": { + "package_id_19": { "Name": "slurm-slurmctld", "SupportedOS": [ { @@ -693,7 +814,7 @@ } ] }, - "package_id_16": { + "package_id_20": { "Name": "slurm-slurmdbd", "SupportedOS": [ { @@ -717,7 +838,7 @@ } ] }, - "package_id_17": { + "package_id_21": { "Name": "python3-PyMySQL", "SupportedOS": [ { @@ -741,7 +862,7 @@ } ] }, - "package_id_18": { + "package_id_22": { "Name": "mariadb-server", "SupportedOS": [ { @@ -765,7 +886,7 @@ } ] }, - "package_id_19": { + "package_id_23": { "Name": "slurm-slurmd", "SupportedOS": [ { @@ -789,7 +910,7 @@ } ] }, - "package_id_20": { + "package_id_24": { "Name": "slurm-pam_slurm", "SupportedOS": [ { @@ -813,7 +934,7 @@ } ] }, - "package_id_21": { + "package_id_25": { "Name": "kernel-devel", "SupportedOS": [ { @@ -837,7 +958,7 @@ } ] }, - "package_id_22": { + "package_id_26": { "Name": "kernel-headers", "SupportedOS": [ { @@ -861,7 +982,7 @@ } ] }, - "package_id_23": { + "package_id_27": { "Name": "nvhpc_2025_2511_Linux_aarch64_cuda_13.0", "SupportedOS": [ { @@ -880,7 +1001,7 @@ } ] }, - "package_id_24": { + "package_id_28": { "Name": "slurm", "SupportedOS": [ { @@ -904,7 +1025,45 @@ } ] }, - "package_id_25": { + "package_id_29": { + "Name": "msr-safe", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" + } + ] + }, + "package_id_30": { + "Name": "nvhpc_2025_2511_Linux_x86_64_cuda_13.0", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://developer.download.nvidia.com/hpc-sdk/25.11/nvhpc_2025_2511_Linux_x86_64_cuda_13.0.tar.gz" + } + ] + }, + "package_id_31": { "Name": "docker.io/library/busybox", "SupportedOS": [ { @@ -919,7 +1078,7 @@ "Tag": "1.36", "Version": "1.36" }, - "package_id_26": { + "package_id_32": { "Name": "git", "SupportedOS": [ { @@ -938,7 +1097,7 @@ } ] }, - "package_id_27": { + "package_id_33": { "Name": "fuse-overlayfs", "SupportedOS": [ { @@ -957,7 +1116,7 @@ } ] }, - "package_id_28": { + "package_id_34": { "Name": "podman", "SupportedOS": [ { @@ -976,7 +1135,7 @@ } ] }, - "package_id_29": { + "package_id_35": { "Name": "kubeadm-1.34.1", "SupportedOS": [ { @@ -995,7 +1154,7 @@ } ] }, - "package_id_30": { + "package_id_36": { "Name": "kubelet-1.34.1", "SupportedOS": [ { @@ -1014,7 +1173,7 @@ } ] }, - "package_id_31": { + "package_id_37": { "Name": "container-selinux", "SupportedOS": [ { @@ -1033,7 +1192,7 @@ } ] }, - "package_id_32": { + "package_id_38": { "Name": "cri-o-1.34.1", "SupportedOS": [ { @@ -1052,7 +1211,7 @@ } ] }, - "package_id_33": { + "package_id_39": { "Name": "docker.io/victoriametrics/victoria-metrics", "SupportedOS": [ { @@ -1067,7 +1226,7 @@ "Tag": "v1.128.0", "Version": "v1.128.0" }, - "package_id_34": { + "package_id_40": { "Name": "docker.io/victoriametrics/vmagent", "SupportedOS": [ { @@ -1082,7 +1241,7 @@ "Tag": "v1.128.0", "Version": "v1.128.0" }, - "package_id_35": { + "package_id_41": { "Name": "docker.io/victoriametrics/vmstorage", "SupportedOS": [ { @@ -1097,7 +1256,7 @@ "Tag": "v1.128.0-cluster", "Version": "v1.128.0-cluster" }, - "package_id_36": { + "package_id_42": { "Name": "docker.io/victoriametrics/vminsert", "SupportedOS": [ { @@ -1112,7 +1271,7 @@ "Tag": "v1.128.0-cluster", "Version": "v1.128.0-cluster" }, - "package_id_37": { + "package_id_43": { "Name": "docker.io/victoriametrics/vmselect", "SupportedOS": [ { @@ -1127,7 +1286,7 @@ "Tag": "v1.128.0-cluster", "Version": "v1.128.0-cluster" }, - "package_id_38": { + "package_id_44": { "Name": "docker.io/victoriametrics/victoria-logs", "SupportedOS": [ { @@ -1142,7 +1301,7 @@ "Tag": "v1.50.0", "Version": "v1.50.0" }, - "package_id_39": { + "package_id_45": { "Name": "docker.io/victoriametrics/vlagent", "SupportedOS": [ { @@ -1157,7 +1316,7 @@ "Tag": "v1.50.0", "Version": "v1.50.0" }, - "package_id_40": { + "package_id_46": { "Name": "docker.io/alpine/kubectl", "SupportedOS": [ { @@ -1172,7 +1331,7 @@ "Tag": "1.34.1", "Version": "1.34.1" }, - "package_id_41": { + "package_id_47": { "Name": "docker.io/curlimages/curl", "SupportedOS": [ { @@ -1187,7 +1346,7 @@ "Tag": "8.17.0", "Version": "8.17.0" }, - "package_id_42": { + "package_id_48": { "Name": "docker.io/rmohr/activemq", "SupportedOS": [ { @@ -1202,7 +1361,7 @@ "Tag": "5.15.9", "Version": "5.15.9" }, - "package_id_43": { + "package_id_49": { "Name": "docker.io/library/mysql", "SupportedOS": [ { @@ -1217,7 +1376,22 @@ "Tag": "9.3.0", "Version": "9.3.0" }, - "package_id_44": { + "package_id_50": { + "Name": "docker.io/library/python", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "image", + "Tag": "3.11-slim", + "Version": "3.11-slim" + }, + "package_id_51": { "Name": "docker.io/dellhpcomniaaisolution/idrac_telemetry_receiver", "SupportedOS": [ { @@ -1232,7 +1406,7 @@ "Tag": "1.2", "Version": "1.2" }, - "package_id_45": { + "package_id_52": { "Name": "docker.io/dellhpcomniaaisolution/kafkapump", "SupportedOS": [ { @@ -1247,7 +1421,7 @@ "Tag": "1.2", "Version": "1.2" }, - "package_id_46": { + "package_id_53": { "Name": "docker.io/dellhpcomniaaisolution/victoriapump", "SupportedOS": [ { @@ -1262,7 +1436,7 @@ "Tag": "1.2", "Version": "1.2" }, - "package_id_47": { + "package_id_54": { "Name": "cryptography==45.0.7", "SupportedOS": [ { @@ -1275,7 +1449,7 @@ ], "Type": "pip_module" }, - "package_id_48": { + "package_id_55": { "Name": "omsdk==1.2.518", "SupportedOS": [ { @@ -1288,7 +1462,7 @@ ], "Type": "pip_module" }, - "package_id_49": { + "package_id_56": { "Name": "cffi==1.17.1", "SupportedOS": [ { @@ -1301,7 +1475,33 @@ ], "Type": "pip_module" }, - "package_id_50": { + "package_id_57": { + "Name": "prometheus_client==0.20.0", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "pip_module" + }, + "package_id_58": { + "Name": "kubernetes==33.1.0", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "pip_module" + }, + "package_id_59": { "Name": "quay.io/strimzi/operator", "SupportedOS": [ { @@ -1316,7 +1516,7 @@ "Tag": "0.48.0", "Version": "0.48.0" }, - "package_id_51": { + "package_id_60": { "Name": "quay.io/strimzi/kafka", "SupportedOS": [ { @@ -1331,7 +1531,7 @@ "Tag": "0.48.0-kafka-4.1.0", "Version": "0.48.0-kafka-4.1.0" }, - "package_id_52": { + "package_id_61": { "Name": "docker.io/dellhpcomniaaisolution/ubuntu-ldms", "SupportedOS": [ { @@ -1346,7 +1546,7 @@ "Tag": "1.0", "Version": "1.0" }, - "package_id_53": { + "package_id_62": { "Name": "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector", "SupportedOS": [ { @@ -1361,7 +1561,7 @@ "Tag": "0.143.1", "Version": "0.143.1" }, - "package_id_54": { + "package_id_63": { "Name": "docker.io/nginxinc/nginx-unprivileged", "SupportedOS": [ { @@ -1376,7 +1576,7 @@ "Tag": "1.29", "Version": "1.29" }, - "package_id_55": { + "package_id_64": { "Name": "karavi-observability", "SupportedOS": [ { @@ -1390,7 +1590,7 @@ "Type": "git", "Version": "v1.12.0" }, - "package_id_56": { + "package_id_65": { "Name": "quay.io/jetstack/cert-manager-controller", "SupportedOS": [ { @@ -1405,7 +1605,7 @@ "Tag": "v1.10.0", "Version": "v1.10.0" }, - "package_id_57": { + "package_id_66": { "Name": "quay.io/jetstack/cert-manager-cainjector", "SupportedOS": [ { @@ -1420,7 +1620,7 @@ "Tag": "v1.10.0", "Version": "v1.10.0" }, - "package_id_58": { + "package_id_67": { "Name": "quay.io/jetstack/cert-manager-webhook", "SupportedOS": [ { @@ -1435,7 +1635,7 @@ "Tag": "v1.10.0", "Version": "v1.10.0" }, - "package_id_59": { + "package_id_68": { "Name": "quay.io/jetstack/cert-manager-acmesolver", "SupportedOS": [ { @@ -1450,7 +1650,7 @@ "Tag": "v1.10.0", "Version": "v1.10.0" }, - "package_id_60": { + "package_id_69": { "Name": "cert-manager-v1.10.0", "SupportedOS": [ { @@ -1469,7 +1669,7 @@ } ] }, - "package_id_61": { + "package_id_70": { "Name": "strimzi-kafka-operator-helm-3-chart-0.48.0", "SupportedOS": [ { @@ -1488,7 +1688,7 @@ } ] }, - "package_id_62": { + "package_id_71": { "Name": "quay.io/strimzi/kafka-bridge", "SupportedOS": [ { @@ -1503,7 +1703,7 @@ "Tag": "0.33.1", "Version": "0.33.1" }, - "package_id_63": { + "package_id_72": { "Name": "docker.io/victoriametrics/operator", "SupportedOS": [ { @@ -1518,7 +1718,7 @@ "Tag": "config-reloader-v0.68.3", "Version": "config-reloader-v0.68.3" }, - "package_id_64": { + "package_id_73": { "Name": "victoria-metrics-operator-0.59.3", "SupportedOS": [ { @@ -1537,7 +1737,7 @@ } ] }, - "package_id_65": { + "package_id_74": { "Name": "docker.io/timberio/vector", "SupportedOS": [ { @@ -1549,10 +1749,10 @@ "x86_64" ], "Type": "image", - "Tag": "0.54.0-alpine", - "Version": "0.54.0-alpine" + "Tag": "0.54.0-debian", + "Version": "0.54.0-debian" }, - "package_id_66": { + "package_id_75": { "Name": "ghcr.io/kube-vip/kube-vip", "SupportedOS": [ { @@ -1567,7 +1767,7 @@ "Tag": "v0.8.9", "Version": "v0.8.9" }, - "package_id_67": { + "package_id_76": { "Name": "registry.k8s.io/kube-apiserver", "SupportedOS": [ { @@ -1582,7 +1782,7 @@ "Tag": "v1.34.1", "Version": "v1.34.1" }, - "package_id_68": { + "package_id_77": { "Name": "registry.k8s.io/kube-controller-manager", "SupportedOS": [ { @@ -1597,7 +1797,7 @@ "Tag": "v1.34.1", "Version": "v1.34.1" }, - "package_id_69": { + "package_id_78": { "Name": "registry.k8s.io/kube-scheduler", "SupportedOS": [ { @@ -1612,7 +1812,7 @@ "Tag": "v1.34.1", "Version": "v1.34.1" }, - "package_id_70": { + "package_id_79": { "Name": "registry.k8s.io/kube-proxy", "SupportedOS": [ { @@ -1627,7 +1827,7 @@ "Tag": "v1.34.1", "Version": "v1.34.1" }, - "package_id_71": { + "package_id_80": { "Name": "registry.k8s.io/coredns/coredns", "SupportedOS": [ { @@ -1642,7 +1842,7 @@ "Tag": "v1.12.1", "Version": "v1.12.1" }, - "package_id_72": { + "package_id_81": { "Name": "registry.k8s.io/pause", "SupportedOS": [ { @@ -1657,7 +1857,7 @@ "Tag": "3.10.1", "Version": "3.10.1" }, - "package_id_73": { + "package_id_82": { "Name": "registry.k8s.io/etcd", "SupportedOS": [ { @@ -1672,7 +1872,7 @@ "Tag": "3.6.4-0", "Version": "3.6.4-0" }, - "package_id_74": { + "package_id_83": { "Name": "docker.io/calico/cni", "SupportedOS": [ { @@ -1687,7 +1887,7 @@ "Tag": "v3.30.3", "Version": "v3.30.3" }, - "package_id_75": { + "package_id_84": { "Name": "docker.io/calico/kube-controllers", "SupportedOS": [ { @@ -1702,7 +1902,7 @@ "Tag": "v3.30.3", "Version": "v3.30.3" }, - "package_id_76": { + "package_id_85": { "Name": "docker.io/calico/node", "SupportedOS": [ { @@ -1717,7 +1917,7 @@ "Tag": "v3.30.3", "Version": "v3.30.3" }, - "package_id_77": { + "package_id_86": { "Name": "quay.io/metallb/speaker", "SupportedOS": [ { @@ -1732,7 +1932,7 @@ "Tag": "v0.15.2", "Version": "v0.15.2" }, - "package_id_78": { + "package_id_87": { "Name": "kubectl-1.34.1", "SupportedOS": [ { @@ -1751,7 +1951,7 @@ } ] }, - "package_id_79": { + "package_id_88": { "Name": "prettytable==3.14.0", "SupportedOS": [ { @@ -1764,7 +1964,7 @@ ], "Type": "pip_module" }, - "package_id_80": { + "package_id_89": { "Name": "python3-3.12.9", "SupportedOS": [ { @@ -1783,20 +1983,7 @@ } ] }, - "package_id_81": { - "Name": "kubernetes==33.1.0", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "pip_module" - }, - "package_id_82": { + "package_id_90": { "Name": "PyMySQL==1.1.2", "SupportedOS": [ { @@ -1809,7 +1996,7 @@ ], "Type": "pip_module" }, - "package_id_83": { + "package_id_91": { "Name": "calico-v3.30.3", "SupportedOS": [ { @@ -1828,7 +2015,7 @@ } ] }, - "package_id_84": { + "package_id_92": { "Name": "metallb-native-v0.15.2", "SupportedOS": [ { @@ -1847,7 +2034,7 @@ } ] }, - "package_id_85": { + "package_id_93": { "Name": "helm-v3.19.0-amd64", "SupportedOS": [ { @@ -1866,7 +2053,7 @@ } ] }, - "package_id_86": { + "package_id_94": { "Name": "nfs-subdir-external-provisioner-4.0.18", "SupportedOS": [ { @@ -1885,7 +2072,7 @@ } ] }, - "package_id_87": { + "package_id_95": { "Name": "registry.k8s.io/sig-storage/nfs-subdir-external-provisioner", "SupportedOS": [ { @@ -1900,7 +2087,7 @@ "Tag": "v4.0.2", "Version": "v4.0.2" }, - "package_id_88": { + "package_id_96": { "Name": "quay.io/metallb/controller", "SupportedOS": [ { @@ -1914,120 +2101,6 @@ "Type": "image", "Tag": "v0.15.2", "Version": "v0.15.2" - }, - "package_id_89": { - "Name": "msr-safe", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" - } - ] - }, - "package_id_90": { - "Name": "iscsi-initiator-utils", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] - }, - "package_id_91": { - "Name": "device-mapper-multipath", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] - }, - "package_id_92": { - "Name": "sg3_utils", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] - }, - "package_id_93": { - "Name": "lsscsi", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] - }, - "package_id_94": { - "Name": "nvhpc_2025_2511_Linux_x86_64_cuda_13.0", - "SupportedOS": [ - { - "Name": "RHEL", - "Version": "10.0" - } - ], - "Architecture": [ - "x86_64" - ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://developer.download.nvidia.com/hpc-sdk/25.11/nvhpc_2025_2511_Linux_x86_64_cuda_13.0.tar.gz" - } - ] } }, "OSPackages": { diff --git a/examples/catalog/catalog_rhel_x86_64.json b/examples/catalog/catalog_rhel_x86_64.json index 0561279fdc..c8f6e13542 100644 --- a/examples/catalog/catalog_rhel_x86_64.json +++ b/examples/catalog/catalog_rhel_x86_64.json @@ -7,43 +7,51 @@ { "Name": "login_compiler_node_x86_64", "FunctionalPackages": [ + "package_id_1", + "package_id_10", + "package_id_11", + "package_id_12", + "package_id_13", + "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", + "package_id_2", + "package_id_23", + "package_id_28", "package_id_3", "package_id_4", - "package_id_45", - "package_id_46", - "package_id_70", - "package_id_71", - "package_id_72", - "package_id_73", - "package_id_74", - "package_id_75", - "package_id_76", - "package_id_77", - "package_id_78", - "package_id_79", - "package_id_88", - "package_id_93" + "package_id_5", + "package_id_6", + "package_id_7", + "package_id_8", + "package_id_9" ] }, { "Name": "login_node_x86_64", "FunctionalPackages": [ + "package_id_1", + "package_id_10", + "package_id_11", + "package_id_12", + "package_id_13", + "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", + "package_id_2", + "package_id_23", + "package_id_28", "package_id_3", "package_id_4", - "package_id_45", - "package_id_46", - "package_id_70", - "package_id_71", - "package_id_72", - "package_id_73", - "package_id_74", - "package_id_75", - "package_id_76", - "package_id_77", - "package_id_78", - "package_id_79", - "package_id_88", - "package_id_93" + "package_id_5", + "package_id_6", + "package_id_7", + "package_id_8", + "package_id_9" ] }, { @@ -53,27 +61,9 @@ { "Name": "service_kube_control_plane_x86_64", "FunctionalPackages": [ - "package_id_1", "package_id_10", "package_id_11", - "package_id_12", - "package_id_13", - "package_id_14", - "package_id_15", - "package_id_16", - "package_id_17", - "package_id_18", - "package_id_19", "package_id_2", - "package_id_20", - "package_id_21", - "package_id_22", - "package_id_23", - "package_id_24", - "package_id_25", - "package_id_26", - "package_id_27", - "package_id_28", "package_id_29", "package_id_3", "package_id_30", @@ -86,7 +76,6 @@ "package_id_37", "package_id_38", "package_id_39", - "package_id_4", "package_id_40", "package_id_41", "package_id_42", @@ -97,7 +86,6 @@ "package_id_47", "package_id_48", "package_id_49", - "package_id_5", "package_id_50", "package_id_51", "package_id_52", @@ -117,35 +105,43 @@ "package_id_65", "package_id_66", "package_id_67", + "package_id_68", + "package_id_69", "package_id_7", + "package_id_70", + "package_id_71", + "package_id_72", + "package_id_73", + "package_id_74", + "package_id_75", + "package_id_76", + "package_id_77", + "package_id_78", + "package_id_79", "package_id_8", - "package_id_9" + "package_id_80", + "package_id_81", + "package_id_82", + "package_id_83", + "package_id_84", + "package_id_85", + "package_id_86", + "package_id_87", + "package_id_88", + "package_id_89", + "package_id_9", + "package_id_90", + "package_id_91", + "package_id_92", + "package_id_93" ] }, { "Name": "service_kube_node_x86_64", "FunctionalPackages": [ - "package_id_1", "package_id_10", "package_id_11", - "package_id_12", - "package_id_13", - "package_id_14", - "package_id_15", - "package_id_16", - "package_id_17", - "package_id_18", - "package_id_19", "package_id_2", - "package_id_20", - "package_id_21", - "package_id_22", - "package_id_23", - "package_id_24", - "package_id_25", - "package_id_26", - "package_id_27", - "package_id_28", "package_id_29", "package_id_3", "package_id_30", @@ -158,7 +154,6 @@ "package_id_37", "package_id_38", "package_id_39", - "package_id_4", "package_id_40", "package_id_41", "package_id_42", @@ -166,65 +161,95 @@ "package_id_44", "package_id_45", "package_id_46", - "package_id_5", + "package_id_47", + "package_id_48", + "package_id_49", + "package_id_50", + "package_id_51", + "package_id_52", + "package_id_53", + "package_id_54", + "package_id_55", + "package_id_56", + "package_id_57", "package_id_58", + "package_id_59", "package_id_6", + "package_id_60", + "package_id_61", + "package_id_62", + "package_id_63", + "package_id_64", + "package_id_65", + "package_id_66", + "package_id_67", "package_id_68", "package_id_69", "package_id_7", + "package_id_70", + "package_id_71", + "package_id_72", + "package_id_73", "package_id_8", - "package_id_9" + "package_id_85", + "package_id_9", + "package_id_94", + "package_id_95" ] }, { "Name": "slurm_control_node_x86_64", "FunctionalPackages": [ + "package_id_1", + "package_id_10", + "package_id_11", + "package_id_12", + "package_id_13", + "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", + "package_id_19", + "package_id_2", + "package_id_20", + "package_id_21", + "package_id_22", "package_id_3", "package_id_4", - "package_id_45", - "package_id_46", - "package_id_70", - "package_id_71", - "package_id_72", - "package_id_73", - "package_id_74", - "package_id_75", - "package_id_76", - "package_id_77", - "package_id_78", - "package_id_79", - "package_id_80", - "package_id_81", - "package_id_82", - "package_id_83", - "package_id_84", - "package_id_85", - "package_id_86", - "package_id_87" + "package_id_5", + "package_id_6", + "package_id_7", + "package_id_8", + "package_id_9" ] }, { "Name": "slurm_node_x86_64", "FunctionalPackages": [ + "package_id_1", + "package_id_10", + "package_id_11", + "package_id_12", + "package_id_13", + "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", + "package_id_2", + "package_id_23", + "package_id_24", + "package_id_25", + "package_id_26", + "package_id_27", "package_id_3", "package_id_4", - "package_id_45", - "package_id_46", - "package_id_70", - "package_id_71", - "package_id_72", - "package_id_73", - "package_id_74", - "package_id_75", - "package_id_76", - "package_id_77", - "package_id_78", - "package_id_79", - "package_id_88", - "package_id_89", - "package_id_90", - "package_id_91", - "package_id_92" + "package_id_5", + "package_id_6", + "package_id_7", + "package_id_8", + "package_id_9" ] } ], @@ -347,16 +372,7 @@ "infrastructure_package_id_15", "infrastructure_package_id_16", "infrastructure_package_id_17", - "infrastructure_package_id_18", - "infrastructure_package_id_19", "infrastructure_package_id_2", - "infrastructure_package_id_20", - "infrastructure_package_id_21", - "infrastructure_package_id_22", - "infrastructure_package_id_23", - "infrastructure_package_id_24", - "infrastructure_package_id_25", - "infrastructure_package_id_26", "infrastructure_package_id_3", "infrastructure_package_id_4", "infrastructure_package_id_5", @@ -371,7 +387,7 @@ "DriverPackages": {}, "FunctionalPackages": { "package_id_1": { - "Name": "vim-enhanced", + "Name": "munge", "SupportedOS": [ { "Name": "RHEL", @@ -390,7 +406,7 @@ ] }, "package_id_2": { - "Name": "docker.io/library/busybox", + "Name": "firewalld", "SupportedOS": [ { "Name": "RHEL", @@ -400,12 +416,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "1.36", - "Version": "1.36" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "baseos" + } + ] }, "package_id_3": { - "Name": "firewalld", + "Name": "python3-firewall", "SupportedOS": [ { "Name": "RHEL", @@ -424,7 +444,7 @@ ] }, "package_id_4": { - "Name": "python3-firewall", + "Name": "pmix", "SupportedOS": [ { "Name": "RHEL", @@ -438,12 +458,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "baseos" + "RepoName": "appstream" } ] }, "package_id_5": { - "Name": "git", + "Name": "nvcr.io/nvidia/hpc-benchmarks", "SupportedOS": [ { "Name": "RHEL", @@ -453,16 +473,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "appstream" - } - ] + "Type": "image", + "Tag": "25.09", + "Version": "25.09" }, "package_id_6": { - "Name": "fuse-overlayfs", + "Name": "apptainer", "SupportedOS": [ { "Name": "RHEL", @@ -476,12 +492,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "appstream" + "RepoName": "epel" } ] }, "package_id_7": { - "Name": "podman", + "Name": "doca-ofed", "SupportedOS": [ { "Name": "RHEL", @@ -491,16 +507,16 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "rpm_repo", "Sources": [ { "Architecture": "x86_64", - "RepoName": "appstream" + "RepoName": "doca" } ] }, "package_id_8": { - "Name": "kubeadm-1.34.1", + "Name": "iscsi-initiator-utils", "SupportedOS": [ { "Name": "RHEL", @@ -514,12 +530,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "kubernetes" + "RepoName": "baseos" } ] }, "package_id_9": { - "Name": "kubelet-1.34.1", + "Name": "device-mapper-multipath", "SupportedOS": [ { "Name": "RHEL", @@ -533,12 +549,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "kubernetes" + "RepoName": "baseos" } ] }, "package_id_10": { - "Name": "container-selinux", + "Name": "sg3_utils", "SupportedOS": [ { "Name": "RHEL", @@ -552,12 +568,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "appstream" + "RepoName": "baseos" } ] }, "package_id_11": { - "Name": "cri-o-1.34.1", + "Name": "lsscsi", "SupportedOS": [ { "Name": "RHEL", @@ -571,12 +587,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "cri-o" + "RepoName": "baseos" } ] }, "package_id_12": { - "Name": "docker.io/victoriametrics/victoria-metrics", + "Name": "imb", "SupportedOS": [ { "Name": "RHEL", @@ -586,12 +602,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.128.0", - "Version": "v1.128.0" + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://github.com/intel/mpi-benchmarks/archive/refs/tags/IMB-v2021.8.tar.gz" + } + ] }, "package_id_13": { - "Name": "docker.io/victoriametrics/vmagent", + "Name": "osu-micro-benchmarks", "SupportedOS": [ { "Name": "RHEL", @@ -601,12 +621,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.128.0", - "Version": "v1.128.0" + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.5.tar.gz" + } + ] }, "package_id_14": { - "Name": "docker.io/victoriametrics/vmstorage", + "Name": "likwid", "SupportedOS": [ { "Name": "RHEL", @@ -616,12 +640,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.128.0-cluster", - "Version": "v1.128.0-cluster" + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://github.com/RRZE-HPC/likwid/archive/refs/tags/v5.4.1.tar.gz" + } + ] }, "package_id_15": { - "Name": "docker.io/victoriametrics/vminsert", + "Name": "geopm", "SupportedOS": [ { "Name": "RHEL", @@ -631,12 +659,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.128.0-cluster", - "Version": "v1.128.0-cluster" + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://github.com/geopm/geopm/archive/refs/tags/v3.1.0.tar.gz" + } + ] }, "package_id_16": { - "Name": "docker.io/victoriametrics/vmselect", + "Name": "papi", "SupportedOS": [ { "Name": "RHEL", @@ -646,12 +678,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.128.0-cluster", - "Version": "v1.128.0-cluster" + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://github.com/icl-utk-edu/papi/releases/download/papi-7-2-0-t/papi-7.2.0.tar.gz" + } + ] }, "package_id_17": { - "Name": "docker.io/victoriametrics/victoria-logs", + "Name": "msr-safe", "SupportedOS": [ { "Name": "RHEL", @@ -661,12 +697,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.50.0", - "Version": "v1.50.0" + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" + } + ] }, "package_id_18": { - "Name": "docker.io/victoriametrics/vlagent", + "Name": "sionlib", "SupportedOS": [ { "Name": "RHEL", @@ -676,12 +716,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.50.0", - "Version": "v1.50.0" + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.7" + } + ] }, "package_id_19": { - "Name": "docker.io/alpine/kubectl", + "Name": "slurm-slurmctld", "SupportedOS": [ { "Name": "RHEL", @@ -691,12 +735,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "1.34.1", - "Version": "1.34.1" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "slurm_custom" + } + ] }, "package_id_20": { - "Name": "docker.io/curlimages/curl", + "Name": "slurm-slurmdbd", "SupportedOS": [ { "Name": "RHEL", @@ -706,12 +754,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "8.17.0", - "Version": "8.17.0" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "slurm_custom" + } + ] }, "package_id_21": { - "Name": "docker.io/rmohr/activemq", + "Name": "python3-PyMySQL", "SupportedOS": [ { "Name": "RHEL", @@ -721,12 +773,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "5.15.9", - "Version": "5.15.9" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "appstream" + } + ] }, "package_id_22": { - "Name": "docker.io/library/mysql", + "Name": "mariadb-server", "SupportedOS": [ { "Name": "RHEL", @@ -736,12 +792,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "9.3.0", - "Version": "9.3.0" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "appstream" + } + ] }, "package_id_23": { - "Name": "docker.io/dellhpcomniaaisolution/idrac_telemetry_receiver", + "Name": "slurm-slurmd", "SupportedOS": [ { "Name": "RHEL", @@ -751,12 +811,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "1.2", - "Version": "1.2" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "slurm_custom" + } + ] }, "package_id_24": { - "Name": "docker.io/dellhpcomniaaisolution/kafkapump", + "Name": "slurm-pam_slurm", "SupportedOS": [ { "Name": "RHEL", @@ -766,12 +830,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "1.2", - "Version": "1.2" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "slurm_custom" + } + ] }, "package_id_25": { - "Name": "docker.io/dellhpcomniaaisolution/victoriapump", + "Name": "kernel-devel", "SupportedOS": [ { "Name": "RHEL", @@ -781,12 +849,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "1.2", - "Version": "1.2" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "appstream" + } + ] }, "package_id_26": { - "Name": "cryptography==45.0.7", + "Name": "kernel-headers", "SupportedOS": [ { "Name": "RHEL", @@ -796,10 +868,16 @@ "Architecture": [ "x86_64" ], - "Type": "pip_module" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "appstream" + } + ] }, "package_id_27": { - "Name": "omsdk==1.2.518", + "Name": "nvhpc_2025_2511_Linux_x86_64_cuda_13.0", "SupportedOS": [ { "Name": "RHEL", @@ -809,10 +887,16 @@ "Architecture": [ "x86_64" ], - "Type": "pip_module" + "Type": "tarball", + "Sources": [ + { + "Architecture": "x86_64", + "Uri": "https://developer.download.nvidia.com/hpc-sdk/25.11/nvhpc_2025_2511_Linux_x86_64_cuda_13.0.tar.gz" + } + ] }, "package_id_28": { - "Name": "cffi==1.17.1", + "Name": "slurm", "SupportedOS": [ { "Name": "RHEL", @@ -822,10 +906,16 @@ "Architecture": [ "x86_64" ], - "Type": "pip_module" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "slurm_custom" + } + ] }, "package_id_29": { - "Name": "quay.io/strimzi/operator", + "Name": "vim-enhanced", "SupportedOS": [ { "Name": "RHEL", @@ -835,12 +925,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "0.48.0", - "Version": "0.48.0" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "appstream" + } + ] }, "package_id_30": { - "Name": "quay.io/strimzi/kafka", + "Name": "docker.io/library/busybox", "SupportedOS": [ { "Name": "RHEL", @@ -851,11 +945,11 @@ "x86_64" ], "Type": "image", - "Tag": "0.48.0-kafka-4.1.0", - "Version": "0.48.0-kafka-4.1.0" + "Tag": "1.36", + "Version": "1.36" }, "package_id_31": { - "Name": "docker.io/dellhpcomniaaisolution/ubuntu-ldms", + "Name": "git", "SupportedOS": [ { "Name": "RHEL", @@ -865,12 +959,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "1.0", - "Version": "1.0" - }, - "package_id_32": { - "Name": "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector", + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "appstream" + } + ] + }, + "package_id_32": { + "Name": "fuse-overlayfs", "SupportedOS": [ { "Name": "RHEL", @@ -880,12 +978,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "0.143.1", - "Version": "0.143.1" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "appstream" + } + ] }, "package_id_33": { - "Name": "docker.io/nginxinc/nginx-unprivileged", + "Name": "podman", "SupportedOS": [ { "Name": "RHEL", @@ -895,12 +997,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "1.29", - "Version": "1.29" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "appstream" + } + ] }, "package_id_34": { - "Name": "karavi-observability", + "Name": "kubeadm-1.34.1", "SupportedOS": [ { "Name": "RHEL", @@ -910,11 +1016,16 @@ "Architecture": [ "x86_64" ], - "Type": "git", - "Version": "v1.12.0" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "kubernetes" + } + ] }, "package_id_35": { - "Name": "quay.io/jetstack/cert-manager-controller", + "Name": "kubelet-1.34.1", "SupportedOS": [ { "Name": "RHEL", @@ -924,12 +1035,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.10.0", - "Version": "v1.10.0" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "kubernetes" + } + ] }, "package_id_36": { - "Name": "quay.io/jetstack/cert-manager-cainjector", + "Name": "container-selinux", "SupportedOS": [ { "Name": "RHEL", @@ -939,12 +1054,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.10.0", - "Version": "v1.10.0" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "appstream" + } + ] }, "package_id_37": { - "Name": "quay.io/jetstack/cert-manager-webhook", + "Name": "cri-o-1.34.1", "SupportedOS": [ { "Name": "RHEL", @@ -954,12 +1073,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v1.10.0", - "Version": "v1.10.0" + "Type": "rpm", + "Sources": [ + { + "Architecture": "x86_64", + "RepoName": "cri-o" + } + ] }, "package_id_38": { - "Name": "quay.io/jetstack/cert-manager-acmesolver", + "Name": "docker.io/victoriametrics/victoria-metrics", "SupportedOS": [ { "Name": "RHEL", @@ -970,11 +1093,11 @@ "x86_64" ], "Type": "image", - "Tag": "v1.10.0", - "Version": "v1.10.0" + "Tag": "v1.128.0", + "Version": "v1.128.0" }, "package_id_39": { - "Name": "cert-manager-v1.10.0", + "Name": "docker.io/victoriametrics/vmagent", "SupportedOS": [ { "Name": "RHEL", @@ -984,16 +1107,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://charts.jetstack.io/charts/cert-manager-v1.10.0.tgz" - } - ] + "Type": "image", + "Tag": "v1.128.0", + "Version": "v1.128.0" }, "package_id_40": { - "Name": "strimzi-kafka-operator-helm-3-chart-0.48.0", + "Name": "docker.io/victoriametrics/vmstorage", "SupportedOS": [ { "Name": "RHEL", @@ -1003,16 +1122,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.48.0/strimzi-kafka-operator-helm-3-chart-0.48.0.tgz" - } - ] + "Type": "image", + "Tag": "v1.128.0-cluster", + "Version": "v1.128.0-cluster" }, "package_id_41": { - "Name": "quay.io/strimzi/kafka-bridge", + "Name": "docker.io/victoriametrics/vminsert", "SupportedOS": [ { "Name": "RHEL", @@ -1023,11 +1138,11 @@ "x86_64" ], "Type": "image", - "Tag": "0.33.1", - "Version": "0.33.1" + "Tag": "v1.128.0-cluster", + "Version": "v1.128.0-cluster" }, "package_id_42": { - "Name": "docker.io/victoriametrics/operator", + "Name": "docker.io/victoriametrics/vmselect", "SupportedOS": [ { "Name": "RHEL", @@ -1038,11 +1153,11 @@ "x86_64" ], "Type": "image", - "Tag": "config-reloader-v0.68.3", - "Version": "config-reloader-v0.68.3" + "Tag": "v1.128.0-cluster", + "Version": "v1.128.0-cluster" }, "package_id_43": { - "Name": "victoria-metrics-operator-0.59.3", + "Name": "docker.io/victoriametrics/victoria-logs", "SupportedOS": [ { "Name": "RHEL", @@ -1052,16 +1167,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-operator-0.59.3/victoria-metrics-operator-0.59.3.tgz" - } - ] + "Type": "image", + "Tag": "v1.50.0", + "Version": "v1.50.0" }, "package_id_44": { - "Name": "docker.io/timberio/vector", + "Name": "docker.io/victoriametrics/vlagent", "SupportedOS": [ { "Name": "RHEL", @@ -1072,11 +1183,11 @@ "x86_64" ], "Type": "image", - "Tag": "0.54.0-alpine", - "Version": "0.54.0-alpine" + "Tag": "v1.50.0", + "Version": "v1.50.0" }, "package_id_45": { - "Name": "apptainer", + "Name": "docker.io/alpine/kubectl", "SupportedOS": [ { "Name": "RHEL", @@ -1086,16 +1197,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "epel" - } - ] + "Type": "image", + "Tag": "1.34.1", + "Version": "1.34.1" }, "package_id_46": { - "Name": "doca-ofed", + "Name": "docker.io/curlimages/curl", "SupportedOS": [ { "Name": "RHEL", @@ -1105,16 +1212,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm_repo", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "doca" - } - ] + "Type": "image", + "Tag": "8.17.0", + "Version": "8.17.0" }, "package_id_47": { - "Name": "ghcr.io/kube-vip/kube-vip", + "Name": "docker.io/rmohr/activemq", "SupportedOS": [ { "Name": "RHEL", @@ -1125,11 +1228,11 @@ "x86_64" ], "Type": "image", - "Tag": "v0.8.9", - "Version": "v0.8.9" + "Tag": "5.15.9", + "Version": "5.15.9" }, "package_id_48": { - "Name": "registry.k8s.io/kube-apiserver", + "Name": "docker.io/library/mysql", "SupportedOS": [ { "Name": "RHEL", @@ -1140,11 +1243,11 @@ "x86_64" ], "Type": "image", - "Tag": "v1.34.1", - "Version": "v1.34.1" + "Tag": "9.3.0", + "Version": "9.3.0" }, "package_id_49": { - "Name": "registry.k8s.io/kube-controller-manager", + "Name": "docker.io/library/python", "SupportedOS": [ { "Name": "RHEL", @@ -1155,11 +1258,11 @@ "x86_64" ], "Type": "image", - "Tag": "v1.34.1", - "Version": "v1.34.1" + "Tag": "3.11-slim", + "Version": "3.11-slim" }, "package_id_50": { - "Name": "registry.k8s.io/kube-scheduler", + "Name": "docker.io/dellhpcomniaaisolution/idrac_telemetry_receiver", "SupportedOS": [ { "Name": "RHEL", @@ -1170,11 +1273,11 @@ "x86_64" ], "Type": "image", - "Tag": "v1.34.1", - "Version": "v1.34.1" + "Tag": "1.2", + "Version": "1.2" }, "package_id_51": { - "Name": "registry.k8s.io/kube-proxy", + "Name": "docker.io/dellhpcomniaaisolution/kafkapump", "SupportedOS": [ { "Name": "RHEL", @@ -1185,11 +1288,11 @@ "x86_64" ], "Type": "image", - "Tag": "v1.34.1", - "Version": "v1.34.1" + "Tag": "1.2", + "Version": "1.2" }, "package_id_52": { - "Name": "registry.k8s.io/coredns/coredns", + "Name": "docker.io/dellhpcomniaaisolution/victoriapump", "SupportedOS": [ { "Name": "RHEL", @@ -1200,11 +1303,11 @@ "x86_64" ], "Type": "image", - "Tag": "v1.12.1", - "Version": "v1.12.1" + "Tag": "1.2", + "Version": "1.2" }, "package_id_53": { - "Name": "registry.k8s.io/pause", + "Name": "cryptography==45.0.7", "SupportedOS": [ { "Name": "RHEL", @@ -1214,12 +1317,10 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "3.10.1", - "Version": "3.10.1" + "Type": "pip_module" }, "package_id_54": { - "Name": "registry.k8s.io/etcd", + "Name": "omsdk==1.2.518", "SupportedOS": [ { "Name": "RHEL", @@ -1229,12 +1330,10 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "3.6.4-0", - "Version": "3.6.4-0" + "Type": "pip_module" }, "package_id_55": { - "Name": "docker.io/calico/cni", + "Name": "cffi==1.17.1", "SupportedOS": [ { "Name": "RHEL", @@ -1244,12 +1343,10 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v3.30.3", - "Version": "v3.30.3" + "Type": "pip_module" }, "package_id_56": { - "Name": "docker.io/calico/kube-controllers", + "Name": "prometheus_client==0.20.0", "SupportedOS": [ { "Name": "RHEL", @@ -1259,12 +1356,10 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v3.30.3", - "Version": "v3.30.3" + "Type": "pip_module" }, "package_id_57": { - "Name": "docker.io/calico/node", + "Name": "kubernetes==33.1.0", "SupportedOS": [ { "Name": "RHEL", @@ -1274,12 +1369,10 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v3.30.3", - "Version": "v3.30.3" + "Type": "pip_module" }, "package_id_58": { - "Name": "quay.io/metallb/speaker", + "Name": "quay.io/strimzi/operator", "SupportedOS": [ { "Name": "RHEL", @@ -1290,11 +1383,11 @@ "x86_64" ], "Type": "image", - "Tag": "v0.15.2", - "Version": "v0.15.2" + "Tag": "0.48.0", + "Version": "0.48.0" }, "package_id_59": { - "Name": "kubectl-1.34.1", + "Name": "quay.io/strimzi/kafka", "SupportedOS": [ { "Name": "RHEL", @@ -1304,16 +1397,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "kubernetes" - } - ] + "Type": "image", + "Tag": "0.48.0-kafka-4.1.0", + "Version": "0.48.0-kafka-4.1.0" }, "package_id_60": { - "Name": "prettytable==3.14.0", + "Name": "docker.io/dellhpcomniaaisolution/ubuntu-ldms", "SupportedOS": [ { "Name": "RHEL", @@ -1323,10 +1412,12 @@ "Architecture": [ "x86_64" ], - "Type": "pip_module" + "Type": "image", + "Tag": "1.0", + "Version": "1.0" }, "package_id_61": { - "Name": "python3-3.12.9", + "Name": "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector", "SupportedOS": [ { "Name": "RHEL", @@ -1336,16 +1427,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] + "Type": "image", + "Tag": "0.143.1", + "Version": "0.143.1" }, "package_id_62": { - "Name": "kubernetes==33.1.0", + "Name": "docker.io/nginxinc/nginx-unprivileged", "SupportedOS": [ { "Name": "RHEL", @@ -1355,10 +1442,12 @@ "Architecture": [ "x86_64" ], - "Type": "pip_module" + "Type": "image", + "Tag": "1.29", + "Version": "1.29" }, "package_id_63": { - "Name": "PyMySQL==1.1.2", + "Name": "karavi-observability", "SupportedOS": [ { "Name": "RHEL", @@ -1368,10 +1457,11 @@ "Architecture": [ "x86_64" ], - "Type": "pip_module" + "Type": "git", + "Version": "v1.12.0" }, "package_id_64": { - "Name": "calico-v3.30.3", + "Name": "quay.io/jetstack/cert-manager-controller", "SupportedOS": [ { "Name": "RHEL", @@ -1381,16 +1471,12 @@ "Architecture": [ "x86_64" ], - "Type": "manifest", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://raw.githubusercontent.com/projectcalico/calico/v3.30.3/manifests/calico.yaml" - } - ] + "Type": "image", + "Tag": "v1.10.0", + "Version": "v1.10.0" }, "package_id_65": { - "Name": "metallb-native-v0.15.2", + "Name": "quay.io/jetstack/cert-manager-cainjector", "SupportedOS": [ { "Name": "RHEL", @@ -1400,16 +1486,12 @@ "Architecture": [ "x86_64" ], - "Type": "manifest", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml" - } - ] + "Type": "image", + "Tag": "v1.10.0", + "Version": "v1.10.0" }, "package_id_66": { - "Name": "helm-v3.19.0-amd64", + "Name": "quay.io/jetstack/cert-manager-webhook", "SupportedOS": [ { "Name": "RHEL", @@ -1419,16 +1501,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://get.helm.sh/helm-v3.19.0-linux-amd64.tar.gz" - } - ] + "Type": "image", + "Tag": "v1.10.0", + "Version": "v1.10.0" }, "package_id_67": { - "Name": "nfs-subdir-external-provisioner-4.0.18", + "Name": "quay.io/jetstack/cert-manager-acmesolver", "SupportedOS": [ { "Name": "RHEL", @@ -1438,16 +1516,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/releases/download/nfs-subdir-external-provisioner-4.0.18/nfs-subdir-external-provisioner-4.0.18.tgz" - } - ] + "Type": "image", + "Tag": "v1.10.0", + "Version": "v1.10.0" }, "package_id_68": { - "Name": "registry.k8s.io/sig-storage/nfs-subdir-external-provisioner", + "Name": "cert-manager-v1.10.0", "SupportedOS": [ { "Name": "RHEL", @@ -1457,27 +1531,16 @@ "Architecture": [ "x86_64" ], - "Type": "image", - "Tag": "v4.0.2", - "Version": "v4.0.2" - }, - "package_id_69": { - "Name": "quay.io/metallb/controller", - "SupportedOS": [ + "Type": "tarball", + "Sources": [ { - "Name": "RHEL", - "Version": "10.0" + "Architecture": "x86_64", + "Uri": "https://charts.jetstack.io/charts/cert-manager-v1.10.0.tgz" } - ], - "Architecture": [ - "x86_64" - ], - "Type": "image", - "Tag": "v0.15.2", - "Version": "v0.15.2" + ] }, - "package_id_70": { - "Name": "munge", + "package_id_69": { + "Name": "strimzi-kafka-operator-helm-3-chart-0.48.0", "SupportedOS": [ { "Name": "RHEL", @@ -1487,16 +1550,16 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "x86_64", - "RepoName": "appstream" + "Uri": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.48.0/strimzi-kafka-operator-helm-3-chart-0.48.0.tgz" } ] }, - "package_id_71": { - "Name": "pmix", + "package_id_70": { + "Name": "quay.io/strimzi/kafka-bridge", "SupportedOS": [ { "Name": "RHEL", @@ -1506,16 +1569,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "appstream" - } - ] + "Type": "image", + "Tag": "0.33.1", + "Version": "0.33.1" }, - "package_id_72": { - "Name": "nvcr.io/nvidia/hpc-benchmarks", + "package_id_71": { + "Name": "docker.io/victoriametrics/operator", "SupportedOS": [ { "Name": "RHEL", @@ -1526,11 +1585,11 @@ "x86_64" ], "Type": "image", - "Tag": "25.09", - "Version": "25.09" + "Tag": "config-reloader-v0.68.3", + "Version": "config-reloader-v0.68.3" }, - "package_id_73": { - "Name": "imb", + "package_id_72": { + "Name": "victoria-metrics-operator-0.59.3", "SupportedOS": [ { "Name": "RHEL", @@ -1544,12 +1603,12 @@ "Sources": [ { "Architecture": "x86_64", - "Uri": "https://github.com/intel/mpi-benchmarks/archive/refs/tags/IMB-v2021.8.tar.gz" + "Uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-operator-0.59.3/victoria-metrics-operator-0.59.3.tgz" } ] }, - "package_id_74": { - "Name": "osu-micro-benchmarks", + "package_id_73": { + "Name": "docker.io/timberio/vector", "SupportedOS": [ { "Name": "RHEL", @@ -1559,16 +1618,27 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ + "Type": "image", + "Tag": "0.54.0-debian", + "Version": "0.54.0-debian" + }, + "package_id_74": { + "Name": "ghcr.io/kube-vip/kube-vip", + "SupportedOS": [ { - "Architecture": "x86_64", - "Uri": "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.5.tar.gz" + "Name": "RHEL", + "Version": "10.0" } - ] + ], + "Architecture": [ + "x86_64" + ], + "Type": "image", + "Tag": "v0.8.9", + "Version": "v0.8.9" }, "package_id_75": { - "Name": "likwid", + "Name": "registry.k8s.io/kube-apiserver", "SupportedOS": [ { "Name": "RHEL", @@ -1578,16 +1648,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://github.com/RRZE-HPC/likwid/archive/refs/tags/v5.4.1.tar.gz" - } - ] + "Type": "image", + "Tag": "v1.34.1", + "Version": "v1.34.1" }, "package_id_76": { - "Name": "geopm", + "Name": "registry.k8s.io/kube-controller-manager", "SupportedOS": [ { "Name": "RHEL", @@ -1597,16 +1663,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://github.com/geopm/geopm/archive/refs/tags/v3.1.0.tar.gz" - } - ] + "Type": "image", + "Tag": "v1.34.1", + "Version": "v1.34.1" }, "package_id_77": { - "Name": "papi", + "Name": "registry.k8s.io/kube-scheduler", "SupportedOS": [ { "Name": "RHEL", @@ -1616,16 +1678,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://github.com/icl-utk-edu/papi/releases/download/papi-7-2-0-t/papi-7.2.0.tar.gz" - } - ] + "Type": "image", + "Tag": "v1.34.1", + "Version": "v1.34.1" }, "package_id_78": { - "Name": "msr-safe", + "Name": "registry.k8s.io/kube-proxy", "SupportedOS": [ { "Name": "RHEL", @@ -1635,16 +1693,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" - } - ] + "Type": "image", + "Tag": "v1.34.1", + "Version": "v1.34.1" }, "package_id_79": { - "Name": "sionlib", + "Name": "registry.k8s.io/coredns/coredns", "SupportedOS": [ { "Name": "RHEL", @@ -1654,16 +1708,12 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", - "Sources": [ - { - "Architecture": "x86_64", - "Uri": "https://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.7" - } - ] + "Type": "image", + "Tag": "v1.12.1", + "Version": "v1.12.1" }, "package_id_80": { - "Name": "slurm-slurmctld", + "Name": "registry.k8s.io/pause", "SupportedOS": [ { "Name": "RHEL", @@ -1673,16 +1723,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "slurm_custom" - } - ] + "Type": "image", + "Tag": "3.10.1", + "Version": "3.10.1" }, "package_id_81": { - "Name": "slurm-slurmdbd", + "Name": "registry.k8s.io/etcd", "SupportedOS": [ { "Name": "RHEL", @@ -1692,16 +1738,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "slurm_custom" - } - ] + "Type": "image", + "Tag": "3.6.4-0", + "Version": "3.6.4-0" }, "package_id_82": { - "Name": "python3-PyMySQL", + "Name": "docker.io/calico/cni", "SupportedOS": [ { "Name": "RHEL", @@ -1711,16 +1753,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "appstream" - } - ] + "Type": "image", + "Tag": "v3.30.3", + "Version": "v3.30.3" }, "package_id_83": { - "Name": "mariadb-server", + "Name": "docker.io/calico/kube-controllers", "SupportedOS": [ { "Name": "RHEL", @@ -1730,16 +1768,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "appstream" - } - ] + "Type": "image", + "Tag": "v3.30.3", + "Version": "v3.30.3" }, "package_id_84": { - "Name": "iscsi-initiator-utils", + "Name": "docker.io/calico/node", "SupportedOS": [ { "Name": "RHEL", @@ -1749,16 +1783,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] + "Type": "image", + "Tag": "v3.30.3", + "Version": "v3.30.3" }, "package_id_85": { - "Name": "device-mapper-multipath", + "Name": "quay.io/metallb/speaker", "SupportedOS": [ { "Name": "RHEL", @@ -1768,16 +1798,12 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] + "Type": "image", + "Tag": "v0.15.2", + "Version": "v0.15.2" }, "package_id_86": { - "Name": "sg3_utils", + "Name": "kubectl-1.34.1", "SupportedOS": [ { "Name": "RHEL", @@ -1791,12 +1817,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "baseos" + "RepoName": "kubernetes" } ] }, "package_id_87": { - "Name": "lsscsi", + "Name": "prettytable==3.14.0", "SupportedOS": [ { "Name": "RHEL", @@ -1806,16 +1832,10 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "baseos" - } - ] + "Type": "pip_module" }, "package_id_88": { - "Name": "slurm-slurmd", + "Name": "python3-3.12.9", "SupportedOS": [ { "Name": "RHEL", @@ -1829,12 +1849,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "slurm_custom" + "RepoName": "baseos" } ] }, "package_id_89": { - "Name": "slurm-pam_slurm", + "Name": "PyMySQL==1.1.2", "SupportedOS": [ { "Name": "RHEL", @@ -1844,16 +1864,10 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", - "Sources": [ - { - "Architecture": "x86_64", - "RepoName": "slurm_custom" - } - ] + "Type": "pip_module" }, "package_id_90": { - "Name": "kernel-devel", + "Name": "calico-v3.30.3", "SupportedOS": [ { "Name": "RHEL", @@ -1863,16 +1877,16 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "manifest", "Sources": [ { "Architecture": "x86_64", - "RepoName": "appstream" + "Uri": "https://raw.githubusercontent.com/projectcalico/calico/v3.30.3/manifests/calico.yaml" } ] }, "package_id_91": { - "Name": "kernel-headers", + "Name": "metallb-native-v0.15.2", "SupportedOS": [ { "Name": "RHEL", @@ -1882,16 +1896,16 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "manifest", "Sources": [ { "Architecture": "x86_64", - "RepoName": "appstream" + "Uri": "https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml" } ] }, "package_id_92": { - "Name": "nvhpc_2025_2511_Linux_x86_64_cuda_13.0", + "Name": "helm-v3.19.0-amd64", "SupportedOS": [ { "Name": "RHEL", @@ -1905,12 +1919,12 @@ "Sources": [ { "Architecture": "x86_64", - "Uri": "https://developer.download.nvidia.com/hpc-sdk/25.11/nvhpc_2025_2511_Linux_x86_64_cuda_13.0.tar.gz" + "Uri": "https://get.helm.sh/helm-v3.19.0-linux-amd64.tar.gz" } ] }, "package_id_93": { - "Name": "slurm", + "Name": "nfs-subdir-external-provisioner-4.0.18", "SupportedOS": [ { "Name": "RHEL", @@ -1920,13 +1934,43 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "x86_64", - "RepoName": "slurm_custom" + "Uri": "https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/releases/download/nfs-subdir-external-provisioner-4.0.18/nfs-subdir-external-provisioner-4.0.18.tgz" } ] + }, + "package_id_94": { + "Name": "registry.k8s.io/sig-storage/nfs-subdir-external-provisioner", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "image", + "Tag": "v4.0.2", + "Version": "v4.0.2" + }, + "package_id_95": { + "Name": "quay.io/metallb/controller", + "SupportedOS": [ + { + "Name": "RHEL", + "Version": "10.0" + } + ], + "Architecture": [ + "x86_64" + ], + "Type": "image", + "Tag": "v0.15.2", + "Version": "v0.15.2" } }, "OSPackages": { @@ -3991,132 +4035,6 @@ "Tag": "v2.4.0" }, "infrastructure_package_id_14": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-proxy", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_15": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-tenant", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_16": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-role", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_17": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-storage", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_18": { - "Name": "quay.io/dell/container-storage-modules/csm-authorization-controller", - "Type": "image", - "Version": "v2.4.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "v2.4.0" - }, - "infrastructure_package_id_19": { - "Name": "docker.io/openpolicyagent/opa", - "Type": "image", - "Version": "0.70.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "0.70.0" - }, - "infrastructure_package_id_20": { - "Name": "docker.io/openpolicyagent/kube-mgmt", - "Type": "image", - "Version": "9.3.0", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "9.3.0" - }, - "infrastructure_package_id_21": { - "Name": "docker.io/library/redis", - "Type": "image", - "Version": "8.4.0-alpine", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "8.4.0-alpine" - }, - "infrastructure_package_id_22": { - "Name": "docker.io/rediscommander/redis-commander", - "Type": "image", - "Version": "latest", - "SupportedFunctions": [ - { - "Name": "csi" - } - ], - "Architecture": [ - "x86_64" - ], - "Tag": "latest" - }, - "infrastructure_package_id_23": { "Name": "quay.io/dell/container-storage-modules/csi-metadata-retriever", "Type": "image", "Version": "v1.12.0", @@ -4130,7 +4048,7 @@ ], "Tag": "v1.12.0" }, - "infrastructure_package_id_24": { + "infrastructure_package_id_15": { "Name": "registry.k8s.io/sig-storage/snapshot-controller", "Type": "image", "Version": "v8.3.0", @@ -4144,7 +4062,7 @@ ], "Tag": "v8.3.0" }, - "infrastructure_package_id_25": { + "infrastructure_package_id_16": { "Name": "docker.io/dellemc/csm-encryption", "Type": "image", "Version": "v0.6.0", @@ -4158,7 +4076,7 @@ ], "Tag": "v0.6.0" }, - "infrastructure_package_id_26": { + "infrastructure_package_id_17": { "Name": "quay.io/dell/container-storage-modules/csm-metrics-powerscale", "Type": "image", "Version": "v1.11.0", diff --git a/examples/catalog/catalog_rhel_x86_64_with_slurm_only.json b/examples/catalog/catalog_rhel_x86_64_with_slurm_only.json index 65ff034ba7..1094d15508 100644 --- a/examples/catalog/catalog_rhel_x86_64_with_slurm_only.json +++ b/examples/catalog/catalog_rhel_x86_64_with_slurm_only.json @@ -13,6 +13,10 @@ "package_id_12", "package_id_13", "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", "package_id_2", "package_id_23", "package_id_28", @@ -34,6 +38,10 @@ "package_id_12", "package_id_13", "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", "package_id_2", "package_id_23", "package_id_28", @@ -82,6 +90,10 @@ "package_id_12", "package_id_13", "package_id_14", + "package_id_15", + "package_id_16", + "package_id_17", + "package_id_18", "package_id_2", "package_id_23", "package_id_24", @@ -331,7 +343,7 @@ ] }, "package_id_8": { - "Name": "imb", + "Name": "iscsi-initiator-utils", "SupportedOS": [ { "Name": "RHEL", @@ -341,16 +353,16 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ { "Architecture": "x86_64", - "Uri": "https://github.com/intel/mpi-benchmarks/archive/refs/tags/IMB-v2021.8.tar.gz" + "RepoName": "baseos" } ] }, "package_id_9": { - "Name": "osu-micro-benchmarks", + "Name": "device-mapper-multipath", "SupportedOS": [ { "Name": "RHEL", @@ -360,16 +372,16 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ { "Architecture": "x86_64", - "Uri": "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.5.tar.gz" + "RepoName": "baseos" } ] }, "package_id_10": { - "Name": "likwid", + "Name": "sg3_utils", "SupportedOS": [ { "Name": "RHEL", @@ -379,16 +391,16 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ { "Architecture": "x86_64", - "Uri": "https://github.com/RRZE-HPC/likwid/archive/refs/tags/v5.4.1.tar.gz" + "RepoName": "baseos" } ] }, "package_id_11": { - "Name": "geopm", + "Name": "lsscsi", "SupportedOS": [ { "Name": "RHEL", @@ -398,16 +410,16 @@ "Architecture": [ "x86_64" ], - "Type": "tarball", + "Type": "rpm", "Sources": [ { "Architecture": "x86_64", - "Uri": "https://github.com/geopm/geopm/archive/refs/tags/v3.1.0.tar.gz" + "RepoName": "baseos" } ] }, "package_id_12": { - "Name": "papi", + "Name": "imb", "SupportedOS": [ { "Name": "RHEL", @@ -421,12 +433,12 @@ "Sources": [ { "Architecture": "x86_64", - "Uri": "https://github.com/icl-utk-edu/papi/releases/download/papi-7-2-0-t/papi-7.2.0.tar.gz" + "Uri": "https://github.com/intel/mpi-benchmarks/archive/refs/tags/IMB-v2021.8.tar.gz" } ] }, "package_id_13": { - "Name": "msr-safe", + "Name": "osu-micro-benchmarks", "SupportedOS": [ { "Name": "RHEL", @@ -440,12 +452,12 @@ "Sources": [ { "Architecture": "x86_64", - "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" + "Uri": "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.5.tar.gz" } ] }, "package_id_14": { - "Name": "sionlib", + "Name": "likwid", "SupportedOS": [ { "Name": "RHEL", @@ -459,12 +471,12 @@ "Sources": [ { "Architecture": "x86_64", - "Uri": "https://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.7" + "Uri": "https://github.com/RRZE-HPC/likwid/archive/refs/tags/v5.4.1.tar.gz" } ] }, "package_id_15": { - "Name": "slurm-slurmctld", + "Name": "geopm", "SupportedOS": [ { "Name": "RHEL", @@ -474,16 +486,16 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "x86_64", - "RepoName": "slurm_custom" + "Uri": "https://github.com/geopm/geopm/archive/refs/tags/v3.1.0.tar.gz" } ] }, "package_id_16": { - "Name": "slurm-slurmdbd", + "Name": "papi", "SupportedOS": [ { "Name": "RHEL", @@ -493,16 +505,16 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "x86_64", - "RepoName": "slurm_custom" + "Uri": "https://github.com/icl-utk-edu/papi/releases/download/papi-7-2-0-t/papi-7.2.0.tar.gz" } ] }, "package_id_17": { - "Name": "python3-PyMySQL", + "Name": "msr-safe", "SupportedOS": [ { "Name": "RHEL", @@ -512,16 +524,16 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "x86_64", - "RepoName": "appstream" + "Uri": "https://github.com/llnl/msr-safe/archive/refs/tags/v1.7.0.tar.gz" } ] }, "package_id_18": { - "Name": "mariadb-server", + "Name": "sionlib", "SupportedOS": [ { "Name": "RHEL", @@ -531,16 +543,16 @@ "Architecture": [ "x86_64" ], - "Type": "rpm", + "Type": "tarball", "Sources": [ { "Architecture": "x86_64", - "RepoName": "appstream" + "Uri": "https://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.7" } ] }, "package_id_19": { - "Name": "iscsi-initiator-utils", + "Name": "slurm-slurmctld", "SupportedOS": [ { "Name": "RHEL", @@ -554,12 +566,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "baseos" + "RepoName": "slurm_custom" } ] }, "package_id_20": { - "Name": "device-mapper-multipath", + "Name": "slurm-slurmdbd", "SupportedOS": [ { "Name": "RHEL", @@ -573,12 +585,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "baseos" + "RepoName": "slurm_custom" } ] }, "package_id_21": { - "Name": "sg3_utils", + "Name": "python3-PyMySQL", "SupportedOS": [ { "Name": "RHEL", @@ -592,12 +604,12 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "baseos" + "RepoName": "appstream" } ] }, "package_id_22": { - "Name": "lsscsi", + "Name": "mariadb-server", "SupportedOS": [ { "Name": "RHEL", @@ -611,7 +623,7 @@ "Sources": [ { "Architecture": "x86_64", - "RepoName": "baseos" + "RepoName": "appstream" } ] }, diff --git a/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy-child-template.yml b/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy-child-template.yml index 2db77e270b..9f1588ef8f 100644 --- a/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy-child-template.yml +++ b/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy-child-template.yml @@ -130,29 +130,43 @@ default: } # Refresh input files from latest commit (retry support) + # Copied from build pipeline (.gitlab-ci-build.yml) - proven to work refresh_input_files() { if [ -z "${GITLAB_API_TOKEN:-}" ]; then - echo " [REFRESH] WARN: GITLAB_API_TOKEN not set, skipping refresh" >&2 + echo " [REFRESH] GITLAB_API_TOKEN not set -- skipping file refresh" >&2 return 0 fi + echo " [REFRESH] Fetching latest config files from branch ${CI_COMMIT_REF_NAME}..." + _REFRESH_COUNT=0 - for _FNAME in local_repo_config.yml network_spec.yml provision_config.yml pxe_mapping_file.csv \ - storage_config.yml telemetry_config.yml security_config.yml \ - high_availability_config.yml omnia_config.yml build_stream_config.yml; do - _FPATH="${CI_PROJECT_DIR}/input/${_FNAME}" - _ENCODED_PATH=$(printf '%s' "input/${_FNAME}" | jq -sRr @uri) - _API_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/repository/files/${_ENCODED_PATH}/raw?ref=${CI_COMMIT_REF_NAME}" - if curl -f -s -H "PRIVATE-TOKEN: ${GITLAB_API_TOKEN}" "${_API_URL}" -o "${_FPATH}.tmp" 2>/dev/null; then - mv "${_FPATH}.tmp" "${_FPATH}" + _REFRESH_FAILED=0 + for _RF_FNAME in local_repo_config.yml network_spec.yml provision_config.yml \ + pxe_mapping_file.csv storage_config.yml telemetry_config.yml \ + security_config.yml high_availability_config.yml omnia_config.yml \ + build_stream_config.yml; do + + # URL-encode the file path (input/) + _RF_ENCODED_PATH=$(printf '%s' "input/${_RF_FNAME}" | sed 's|/|%2F|g') + + _RF_HTTP_CODE=$(curl -s -o "/tmp/_rf_${_RF_FNAME}" -w "%{http_code}" \ + --connect-timeout "${CURL_CONNECT_TIMEOUT}" --max-time "${CURL_MAX_TIME}" \ + -H "PRIVATE-TOKEN: ${GITLAB_API_TOKEN}" \ + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/repository/files/${_RF_ENCODED_PATH}/raw?ref=${CI_COMMIT_REF_NAME}" \ + --cacert "${CI_SERVER_TLS_CA_FILE}" 2>/dev/null) + + if [ "$_RF_HTTP_CODE" = "200" ]; then + mkdir -p "${CI_PROJECT_DIR}/input" + cp "/tmp/_rf_${_RF_FNAME}" "${CI_PROJECT_DIR}/input/${_RF_FNAME}" _REFRESH_COUNT=$((_REFRESH_COUNT + 1)) - echo " [+] ${_FNAME}" else - rm -f "${_FPATH}.tmp" + # File may not exist in repo (optional config), not an error + _REFRESH_FAILED=$((_REFRESH_FAILED + 1)) fi + rm -f "/tmp/_rf_${_RF_FNAME}" done - echo " [REFRESH] Updated ${_REFRESH_COUNT} files from latest commit" - return 0 + + echo " [REFRESH] Updated ${_REFRESH_COUNT} files from latest commit (${_REFRESH_FAILED} not found/skipped)" } # --------------------------------------------------------------------------- diff --git a/gitlab/roles/hosted_gitlab/tasks/push_ci_files.yml b/gitlab/roles/hosted_gitlab/tasks/push_ci_files.yml index 0793a0bc92..0de03d32f0 100644 --- a/gitlab/roles/hosted_gitlab/tasks/push_ci_files.yml +++ b/gitlab/roles/hosted_gitlab/tasks/push_ci_files.yml @@ -50,6 +50,21 @@ state: directory mode: '0755' +- name: Ensure input directory exists on GitLab host + ansible.builtin.file: + path: "{{ gitlab_hosted_payload_dir }}/{{ gitlab_input_repo_dir }}" + state: directory + mode: '0755' + +- name: Sync Omnia input files into GitLab repository + ansible.builtin.include_tasks: sync_input_file.yml + loop: "{{ gitlab_input_files }}" + loop_control: + label: "{{ item.name }}" + vars: + input_file_name: "{{ item.name }}" + input_file_src: "{{ item.src }}" + - name: Create catalog JSON when missing when: catalog_file_check.status == 404 block: @@ -313,18 +328,3 @@ status_code: [200, 201] validate_certs: false no_log: true - -- name: Ensure input directory exists on GitLab host - ansible.builtin.file: - path: "{{ gitlab_hosted_payload_dir }}/{{ gitlab_input_repo_dir }}" - state: directory - mode: '0755' - -- name: Sync Omnia input files into GitLab repository - ansible.builtin.include_tasks: sync_input_file.yml - loop: "{{ gitlab_input_files }}" - loop_control: - label: "{{ item.name }}" - vars: - input_file_name: "{{ item.name }}" - input_file_src: "{{ item.src }}" From 97a86f9ff5a9b33581d894d38e1a7c839eae2b3a Mon Sep 17 00:00:00 2001 From: Nagachandan-P Date: Tue, 23 Jun 2026 10:08:02 +0000 Subject: [PATCH 02/24] cleanup k8s script files also Signed-off-by: Nagachandan-P --- .../tasks/cleanup_k8s.yml | 28 +++++++++++++++++-- .../oim_container_cleanup/vars/main.yml | 19 +++++++++---- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml b/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml index 6f0da6b43e..3b6d39633b 100644 --- a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml +++ b/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml @@ -121,9 +121,10 @@ - name: Display k8s cleanup information ansible.builtin.debug: msg: | - WARNING: This will delete K8s-related directories from NFS shares: + WARNING: This will delete K8s-related directories and files from NFS shares: {% for mount in k8s_storage_mounts %} Storage: {{ mount.name }} ({{ mount.mount_point }}) + Directories: {% for item in k8s_static_dirs_stat.results %} {% if item.stat.exists and item.item.startswith(mount.mount_point) %} - {{ item.item }} ({{ item.item | basename }}) @@ -141,6 +142,10 @@ {% else %} Node IP directories: Skipped (k8s_cleanup_node_ips: false) {% endif %} + Root-level files: + {% for file in k8s_cleanup_files %} + - {{ mount.mount_point }}/{{ file }} + {% endfor %} {% endfor %} CRITICAL WARNING: Deleting NFS shared data will affect ALL nodes! @@ -173,6 +178,17 @@ when: k8s_cleanup_needed | default(false) loop: "{{ k8s_all_cleanup_paths }}" + - name: Delete K8s root-level files + ansible.builtin.file: + path: "{{ item.0 }}/{{ item.1 }}" + state: absent + register: k8s_files_cleanup_result + when: k8s_cleanup_needed | default(false) + loop: "{{ all_k8s_base_paths | product(k8s_cleanup_files) | list }}" + loop_control: + label: "{{ item.0 }}/{{ item.1 }}" + failed_when: false + - name: Display k8s cleanup completion message ansible.builtin.debug: msg: | @@ -182,10 +198,18 @@ {% set mount_deleted = k8s_cleanup_result.results | selectattr('item', 'search', '^' + mount.mount_point) | selectattr('changed') | list %} {% if mount_deleted %} {% for item in mount_deleted %} - -> Deleted: {{ item.item }} + -> Deleted directory: {{ item.item }} {% endfor %} {% else %} -> No directories deleted from this storage {% endif %} + {% set mount_files_deleted = k8s_files_cleanup_result.results | selectattr('item', 'search', '^' + mount.mount_point) | selectattr('changed') | list %} + {% if mount_files_deleted %} + {% for item in mount_files_deleted %} + -> Deleted file: {{ item.item }} + {% endfor %} + {% else %} + -> No files deleted from this storage + {% endif %} {% endfor %} when: k8s_cleanup_needed | default(false) diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/vars/main.yml b/utils/roles/oim_cleanup/oim_container_cleanup/vars/main.yml index 28dd327351..5f3d60ea72 100644 --- a/utils/roles/oim_cleanup/oim_container_cleanup/vars/main.yml +++ b/utils/roles/oim_cleanup/oim_container_cleanup/vars/main.yml @@ -218,13 +218,14 @@ oim_cleanup_note: | - For Slurm configuration backup, use the separate utility: ansible-playbook utils/slurm_config_util.yml --tags config_backup - To skip slurm cleanup, run: ansible-playbook utils/oim_cleanup.yml --skip-tags slurm - 3. The playbook removes K8s-related directories from NFS shares: - - ssh, calico, metallb, helm, packages, telemetry, karavi-observability, csi-driver-powerscale, nfs-client-provisioner + 3. The playbook removes K8s-related directories and files from NFS shares: + - Directories: ssh, calico, metallb, helm, packages, telemetry, karavi-observability, csi-driver-powerscale, nfs-client-provisioner + - Files: control-plane-join-command.sh, generate-control-plane-join.sh, worker-join-command.sh, pulp_webserver.crt - Node IP directories (when k8s_cleanup_node_ips: true) - - Directory list is configurable via k8s_cleanup_directories variable in vars/main.yml - - Supports multi-storage: Cleans directories from all K8s storage mounts configured in omnia_config.yml + - Directory and file lists are configurable via k8s_cleanup_directories and k8s_cleanup_files variables in vars/main.yml + - Supports multi-storage: Cleans directories and files from all K8s storage mounts configured in omnia_config.yml - To skip k8s cleanup, run: ansible-playbook utils/oim_cleanup.yml --skip-tags k8s - - No backup is created for k8s directories (directory deletion only) + - No backup is created for k8s directories and files (deletion only) 4. The omnia_core container is NOT removed by oim_cleanup.yml. - To delete it, log in to the OIM node and run: @@ -248,6 +249,14 @@ k8s_cleanup_directories: - csi-driver-powerscale - nfs-client-provisioner +# List of k8s root-level files to delete from NFS share +# Edit this list to add/remove files as needed +k8s_cleanup_files: + - control-plane-join-command.sh + - generate-control-plane-join.sh + - worker-join-command.sh + - pulp_webserver.crt + # Delete node IP directories (pattern: x.x.x.x) # Set to false to skip node directories k8s_cleanup_node_ips: true From 6e97680e4cd3c21ddca9df214b9961374396ddbb Mon Sep 17 00:00:00 2001 From: Nagachandan-P Date: Tue, 23 Jun 2026 11:00:21 +0000 Subject: [PATCH 03/24] lint issue fix Signed-off-by: Nagachandan-P --- .../oim_container_cleanup/tasks/cleanup_k8s.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml b/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml index 3b6d39633b..52e324cd76 100644 --- a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml +++ b/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml @@ -195,7 +195,10 @@ K8s-related cleanup completed. {% for mount in k8s_storage_mounts %} Storage: {{ mount.name }} ({{ mount.mount_point }}) - {% set mount_deleted = k8s_cleanup_result.results | selectattr('item', 'search', '^' + mount.mount_point) | selectattr('changed') | list %} + {% set mount_deleted = k8s_cleanup_result.results | + selectattr('item', 'search', '^' + mount.mount_point) | + selectattr('changed') | + list %} {% if mount_deleted %} {% for item in mount_deleted %} -> Deleted directory: {{ item.item }} @@ -203,7 +206,10 @@ {% else %} -> No directories deleted from this storage {% endif %} - {% set mount_files_deleted = k8s_files_cleanup_result.results | selectattr('item', 'search', '^' + mount.mount_point) | selectattr('changed') | list %} + {% set mount_files_deleted = k8s_files_cleanup_result.results | + selectattr('item', 'search', '^' + mount.mount_point) | + selectattr('changed') | + list %} {% if mount_files_deleted %} {% for item in mount_files_deleted %} -> Deleted file: {{ item.item }} From 4c064e375c3381eaaa6202b6cb39f0f19e3c4c44 Mon Sep 17 00:00:00 2001 From: Nagachandan-P Date: Wed, 24 Jun 2026 06:28:40 +0000 Subject: [PATCH 04/24] mpi env set for default Signed-off-by: Nagachandan-P --- .../cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 | 4 +--- .../cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 | 5 +---- .../cloud_init/ci-group-slurm_node_aarch64.yaml.j2 | 6 +----- .../templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 | 6 +----- 4 files changed, 4 insertions(+), 17 deletions(-) diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 b/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 index dfdaa37111..5879e0ba3d 100644 --- a/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 +++ b/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 @@ -281,18 +281,16 @@ {% endif %} # UCX and OpenMPI auto-compilation disabled - # DOCA UCX 1.20.0 and OpenMPI 4.1.9a1 used by default + # DOCA UCX 1.20.0 and OpenMPI 4.1.9a1 configured by default {% if hostvars['localhost']['ucx_support'] %} - echo "===== UCX Configuration =====" - echo "UCX version specified in software_config.json (available for manual compilation)" - echo "Default stack - DOCA UCX 1.20.0 (system default)" {% endif %} -{% if hostvars['localhost']['openmpi_support'] %} - echo "===== OpenMPI Configuration =====" - echo "OpenMPI version specified in software_config.json (available for manual compilation)" - echo "Default stack - DOCA OpenMPI 4.1.9a1 (system default)" - bash /usr/local/bin/setup_doca_mpi_env.sh || echo "DOCA MPI environment setup failed (non-critical)" -{% endif %} {% if ldms_support %} - echo " Starting LDMS setup " | tee -a /var/log/ldms-cloudinit.log diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 b/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 index 0c727b0c01..77109a4828 100644 --- a/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 +++ b/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 @@ -282,19 +282,16 @@ {% endif %} # UCX and OpenMPI auto-compilation disabled - # DOCA UCX 1.20.0 and OpenMPI 4.1.9a1 used by default + # DOCA UCX 1.20.0 and OpenMPI 4.1.9a1 configured by default {% if hostvars['localhost']['ucx_support'] %} - echo "===== UCX Configuration =====" - echo "UCX version specified in software_config.json (available for manual compilation)" - echo "Default stack - DOCA UCX 1.20.0 (system default)" {% endif %} -{% if hostvars['localhost']['openmpi_support'] %} - echo "===== OpenMPI Configuration =====" - echo "OpenMPI version specified in software_config.json (available for manual compilation)" - echo "Default stack - DOCA OpenMPI 4.1.9a1 (system default)" - bash /usr/local/bin/setup_doca_mpi_env.sh || echo "DOCA MPI environment setup failed (non-critical)" - -{% endif %} {% if ldms_support %} - echo " Starting LDMS setup " | tee -a /var/log/ldms-cloudinit.log diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_aarch64.yaml.j2 b/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_aarch64.yaml.j2 index cdce20193e..449cedfa8f 100644 --- a/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_aarch64.yaml.j2 +++ b/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_aarch64.yaml.j2 @@ -422,9 +422,7 @@ # DOCA and IB configuration - now ready before vendor_data mounts - bash /usr/local/bin/doca-install.sh || true - bash /usr/local/bin/configure-ib-network.sh -{% if hostvars['localhost']['openmpi_support'] %} - bash /usr/local/bin/setup_doca_mpi_env.sh || echo "DOCA MPI environment setup failed (non-critical)" -{% endif %} {# Mount-specific runcmd entries - moved after DOCA to ensure RDMA is available #} {%- if cloud_init_groups_dict[functional_group_name].runcmd is defined and cloud_init_groups_dict[functional_group_name].runcmd is not none %} @@ -513,17 +511,15 @@ - mount -av {% endif %} # UCX and OpenMPI auto-compilation disabled - # DOCA UCX 1.20.0 and OpenMPI 4.1.9a1 used by default + # DOCA UCX 1.20.0 and OpenMPI 4.1.9a1 configured by default {% if hostvars['localhost']['ucx_support'] %} - echo "===== UCX Configuration =====" - echo "UCX version specified in software_config.json (available for manual compilation)" - echo "Default stack - DOCA UCX 1.20.0 (system default)" {% endif %} -{% if hostvars['localhost']['openmpi_support'] %} - echo "===== OpenMPI Configuration =====" - echo "OpenMPI version specified in software_config.json (available for manual compilation)" - echo "Default stack - DOCA OpenMPI 4.1.9a1 (system default)" -{% endif %} {% if ldms_support %} - echo " Starting LDMS setup " | tee -a /var/log/ldms-cloudinit.log diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 b/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 index ee33e0ff6f..ecf388cdeb 100644 --- a/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 +++ b/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 @@ -428,9 +428,7 @@ # DOCA and IB configuration - now ready before vendor_data mounts - bash /usr/local/bin/doca-install.sh || echo "DOCA install failed (non-critical)" - bash /usr/local/bin/configure-ib-network.sh || echo "IB network configuration failed (non-critical)" -{% if hostvars['localhost']['openmpi_support'] %} - bash /usr/local/bin/setup_doca_mpi_env.sh || echo "DOCA MPI environment setup failed (non-critical)" -{% endif %} {# Mount-specific runcmd entries - moved after DOCA to ensure RDMA is available #} {%- if cloud_init_groups_dict[functional_group_name].runcmd is defined and cloud_init_groups_dict[functional_group_name].runcmd is not none %} @@ -515,17 +513,15 @@ - mount -av {% endif %} # UCX and OpenMPI auto-compilation disabled - # DOCA UCX 1.20.0 and OpenMPI 4.1.9a1 used by default + # DOCA UCX 1.20.0 and OpenMPI 4.1.9a1 configured by default {% if hostvars['localhost']['ucx_support'] %} - echo "===== UCX Configuration =====" - echo "UCX version specified in software_config.json (available for manual compilation)" - echo "Default stack - DOCA UCX 1.20.0 (system default)" {% endif %} -{% if hostvars['localhost']['openmpi_support'] %} - echo "===== OpenMPI Configuration =====" - echo "OpenMPI version specified in software_config.json (available for manual compilation)" - echo "Default stack - DOCA OpenMPI 4.1.9a1 (system default)" -{% endif %} {% if ldms_support %} - echo " Starting LDMS setup " | tee -a /var/log/ldms-cloudinit.log From d0356ac7f72d17973e93354fcf860b4322a3d175 Mon Sep 17 00:00:00 2001 From: Abhishek S A Date: Wed, 24 Jun 2026 15:50:27 +0530 Subject: [PATCH 05/24] PR1: Move playbooks/ and common/ to src/, update all paths - Move 13 playbook directories into src/playbooks/ - Move common/ into src/common/ - Update root ansible.cfg: common/ -> src/common/ - Update 13 subsystem ansible.cfg: reduce ../ for common/ - Update credential_utility ansible.cfg: reduce ../ for common/ - Update all role_path and playbook_dir references in YAML files - Update decrypt_include_encrypt.yml internal path Signed-off-by: Abhishek S A --- ansible.cfg | 6 +++--- .../common}/callback_plugins/omnia_default.py | 0 .../library/module_utils/build_image/__init__.py | 0 .../module_utils/build_image/common_functions.py | 0 .../library/module_utils/build_image/config.py | 0 .../library/module_utils/discovery/__init__.py | 0 .../module_utils/discovery/standard_functions.py | 0 .../module_utils/input_validation/__init__.py | 0 .../input_validation/common_utils/__init__.py | 0 .../input_validation/common_utils/config.py | 0 .../input_validation/common_utils/data_fetch.py | 0 .../input_validation/common_utils/data_validation.py | 0 .../common_utils/data_verification.py | 0 .../common_utils/en_us_validation_msg.py | 0 .../common_utils/logical_validation.py | 0 .../common_utils/slurm_conf_utils.py | 0 .../input_validation/common_utils/timezone.txt | 0 .../common_utils/validation_utils.py | 0 .../module_utils/input_validation/schema/__init__.py | 0 .../input_validation/schema/additional_software.json | 0 .../input_validation/schema/build_stream_config.json | 0 .../input_validation/schema/credential_rules.json | 0 .../input_validation/schema/discovery_config.json | 0 .../schema/functional_groups_config.json | 0 .../input_validation/schema/gitlab_config.json | 0 .../schema/high_availability_config.json | 0 .../input_validation/schema/k8s_scheduler.json | 0 .../input_validation/schema/local_repo_config.json | 0 .../input_validation/schema/network_spec.json | 0 .../input_validation/schema/omnia_config.json | 0 .../input_validation/schema/provision_config.json | 0 .../input_validation/schema/security_config.json | 0 .../schema/slurm_config_parameters.json | 0 .../input_validation/schema/software_config.json | 0 .../input_validation/schema/storage_config.json | 0 .../input_validation/schema/telemetry_config.json | 0 .../schema/telemetry_storage_config.json | 0 .../input_validation/validation_flows/__init__.py | 0 .../validation_flows/build_stream_validation.py | 0 .../validation_flows/common_validation.py | 0 .../validation_flows/csi_driver_validation.py | 0 .../validation_flows/gitlab_validation.py | 0 .../validation_flows/high_availability_validation.py | 0 .../validation_flows/local_repo_validation.py | 0 .../powerscale_telemetry_validation.py | 0 .../validation_flows/provision_validation.py | 0 .../validation_flows/scheduler_validation.py | 0 .../validation_flows/telemetry_validation.py | 0 .../validation_flows/vip_pxe_validation.py | 0 .../library/module_utils/local_repo/__init__.py | 0 .../module_utils/local_repo/common_functions.py | 0 .../library/module_utils/local_repo/config.py | 0 .../module_utils/local_repo/container_repo_utils.py | 0 .../module_utils/local_repo/download_common.py | 0 .../module_utils/local_repo/download_image.py | 0 .../library/module_utils/local_repo/download_rpm.py | 0 .../module_utils/local_repo/parse_and_download.py | 0 .../module_utils/local_repo/process_metadata.py | 0 .../module_utils/local_repo/process_parallel.py | 0 .../module_utils/local_repo/registry_utils.py | 0 .../library/module_utils/local_repo/rest_client.py | 0 .../module_utils/local_repo/software_utils.py | 0 .../module_utils/local_repo/standard_logger.py | 0 .../module_utils/local_repo/user_image_utility.py | 0 .../module_utils/local_repo/validate_utils.py | 0 .../common}/library/module_utils/upgrade/__init__.py | 0 .../upgrade/upgrade_hop_calculator_lib.py | 0 .../library/modules/additional_images_collector.py | 0 .../library/modules/base_image_package_collector.py | 0 .../library/modules/calculate_upgrade_hops.py | 0 .../common}/library/modules/cert_vault_handler.py | 0 .../common}/library/modules/check_user_registry.py | 0 .../library/modules/create_upgrade_staging.py | 0 .../library/modules/delete_idracips_from_mysqldb.py | 0 .../library/modules/disable_idrac_telemetry.py | 0 .../library/modules/enable_telemetry_service.py | 0 .../common}/library/modules/fetch_credential_rule.py | 0 .../common}/library/modules/fetch_idrac_ips.py | 0 .../common}/library/modules/fetch_mapping_details.py | 0 .../common}/library/modules/fetch_roles_config.py | 0 .../common}/library/modules/fetch_software_arch.py | 0 .../library/modules/fetch_telemetry_status.py | 0 .../library/modules/functional_group_parser.py | 0 .../library/modules/generate_argon2_password.py | 0 .../library/modules/generate_discovery_report.py | 0 .../library/modules/generate_functional_groups.py | 0 .../common}/library/modules/generate_pxe_mapping.py | 0 .../library/modules/generate_ssha_password.py | 0 .../modules/generate_xname_in_mapping_file.py | 0 .../library/modules/get_service_cluster_info.py | 0 .../common}/library/modules/group_package_map.py | 0 .../library/modules/idrac_telemetry_filter.py | 0 .../library/modules/image_package_collector.py | 0 .../library/modules/insert_idracips_mysqldb.py | 0 .../common}/library/modules/k8s_upgrade_status.py | 0 .../library/modules/localrepo_metadata_manager.py | 0 .../common}/library/modules/ome_server_inventory.py | 0 .../common}/library/modules/parallel_file_copy.py | 0 .../common}/library/modules/parallel_tasks.py | 0 .../common}/library/modules/prepare_tasklist.py | 0 .../common}/library/modules/process_rpm_config.py | 0 .../common}/library/modules/pulp_cleanup.py | 0 .../library/modules/pulp_repo_name_migration.py | 0 .../library/modules/read_idracips_from_mysqldb.py | 0 {common => src/common}/library/modules/slurm_conf.py | 0 .../common}/library/modules/tests/__init__.py | 0 .../tests/test_additional_subnets_validation.py | 0 .../modules/tests/test_generate_discovery_report.py | 0 .../library/modules/tests/test_ib_nic_fallback.py | 0 .../library/modules/tests/test_ome_pagination.py | 0 .../library/modules/update_bmc_group_entry.py | 0 .../library/modules/update_component_json_repos.py | 0 .../library/modules/update_software_config.py | 0 .../library/modules/validate_bmc_group_data.py | 0 .../common}/library/modules/validate_credentials.py | 0 .../common}/library/modules/validate_input.py | 0 .../common}/library/modules/validate_user_repo.py | 0 .../tasks/common/check_kube_vip_reachability.yml | 0 .../common}/tasks/common/decrypt_include_encrypt.yml | 2 +- .../tasks/common/get_container_image_list.yml | 0 .../common}/tasks/common/load_ha_config.yml | 0 .../common}/tasks/common/openchami_auth.yml | 0 .../common}/tasks/common/validate_image_tars.yml | 0 {common => src/common}/tasks/provision/main.yml | 0 {common => src/common}/tasks/scheduler/main.yml | 0 {common => src/common}/tasks/telemetry/main.yml | 0 {common => src/common}/vars/common_messages.yml | 0 {common => src/common}/vars/common_vars.yml | 0 {common => src/common}/vars/encrypt_files_vars.yml | 0 {common => src/common}/vars/image_vars.yml | 0 {common => src/common}/vars/openchami_image_cmd.yml | 0 {common => src/common}/vars/openchami_vars.yml | 0 {common => src/common}/vars/provision_messages.yml | 0 {common => src/common}/vars/provision_vars.yml | 0 {common => src/common}/vars/scheduler_messages.yml | 0 {common => src/common}/vars/scheduler_vars.yml | 0 {common => src/common}/vars/telemetry_messages.yml | 0 {common => src/common}/vars/telemetry_vars.yml | 0 {common => src/common}/vars/upgrade_vars.yml | 0 .../playbooks/build_image_aarch64}/ansible.cfg | 6 +++--- .../build_image_aarch64}/build_image_aarch64.yml | 2 +- .../tasks/aarch64_build_image_completion.yml | 0 .../tasks/build_stream_prerequisite.yml | 0 .../roles/fetch_packages/tasks/check_aarch64_fg.yml | 0 .../roles/fetch_packages/tasks/fetch_packages.yml | 0 .../roles/fetch_packages/tasks/fetch_pulp_repos.yml | 0 .../roles/fetch_packages/tasks/main.yml | 0 .../roles/fetch_packages/vars/main.yml | 0 .../roles/image_creation/files/omnia-crun-bpf.te | 0 .../roles/image_creation/tasks/build_base_image.yml | 0 .../image_creation/tasks/build_compute_image.yml | 0 .../image_creation/tasks/build_image_common.yml | 0 .../roles/image_creation/tasks/main.yml | 2 +- .../image_creation/tasks/preflight_selinux_check.yml | 0 .../roles/image_creation/tasks/set_s3_acl.yml | 0 .../templates/images/rhel-base-config.yaml.j2 | 0 .../templates/images/rhel-compute-config.yaml.j2 | 0 .../roles/image_creation/vars/main.yml | 0 .../roles/prepare_arm_node/tasks/gather_oim_data.yml | 0 .../roles/prepare_arm_node/tasks/main.yml | 0 .../roles/prepare_arm_node/vars/main.yml | 0 .../playbooks/build_image_x86_64}/ansible.cfg | 6 +++--- .../build_image_x86_64}/build_image_x86_64.yml | 2 +- .../tasks/build_stream_prerequisite.yml | 0 .../roles/fetch_packages/tasks/check_x86_64_fg.yml | 0 .../roles/fetch_packages/tasks/fetch_packages.yml | 0 .../roles/fetch_packages/tasks/fetch_pulp_repos.yml | 0 .../roles/fetch_packages/tasks/main.yml | 0 .../tasks/x86_64_build_image_completion.yml | 0 .../roles/fetch_packages/vars/main.yml | 0 .../roles/image_creation/files/omnia-crun-bpf.te | 0 .../roles/image_creation/tasks/build_base_image.yml | 0 .../image_creation/tasks/build_compute_image.yml | 0 .../image_creation/tasks/build_image_common.yml | 0 .../roles/image_creation/tasks/main.yml | 2 +- .../image_creation/tasks/preflight_selinux_check.yml | 0 .../image_creation/tasks/prepare_pulp_image.yml | 0 .../roles/image_creation/tasks/set_s3_acl.yml | 0 .../templates/images/rhel-base-config.yaml.j2 | 0 .../templates/images/rhel-compute-config.yaml.j2 | 0 .../roles/image_creation/vars/main.yml | 0 {discovery => src/playbooks/discovery}/ansible.cfg | 6 +++--- {discovery => src/playbooks/discovery}/discovery.yml | 0 .../discovery}/roles/ome_discovery/README.md | 0 .../discovery}/roles/ome_discovery/defaults/main.yml | 0 .../roles/ome_discovery/tasks/collect_inventory.yml | 0 .../tasks/generate_discovery_report.yml | 0 .../ome_discovery/tasks/generate_pxe_mapping.yml | 0 .../ome_discovery/tasks/get_ome_credentials.yml | 0 .../discovery}/roles/ome_discovery/tasks/main.yml | 0 .../discovery}/roles/ome_discovery/vars/main.yml | 0 {gitlab => src/playbooks/gitlab}/ansible.cfg | 6 +++--- {gitlab => src/playbooks/gitlab}/cleanup_gitlab.yml | 0 {gitlab => src/playbooks/gitlab}/gitlab.yml | 0 .../tasks/cleanup_buildstream_oauth.yml | 0 .../roles/cleanup_gitlab/tasks/cleanup_cicd.yml | 0 .../cleanup_gitlab/tasks/cleanup_credentials.yml | 0 .../cleanup_gitlab/tasks/cleanup_directories.yml | 0 .../roles/cleanup_gitlab/tasks/cleanup_packages.yml | 0 .../roles/cleanup_gitlab/tasks/cleanup_runner.yml | 0 .../roles/cleanup_gitlab/tasks/cleanup_services.yml | 0 .../roles/cleanup_gitlab/tasks/cleanup_summary.yml | 0 .../roles/cleanup_gitlab/tasks/cleanup_tls.yml | 0 .../gitlab}/roles/cleanup_gitlab/tasks/main.yml | 0 .../gitlab}/roles/cleanup_gitlab/vars/main.yml | 0 .../files/check_gitlab_port.sh | 0 .../gitlab_passwordless_ssh/tasks/authorize_key.yml | 0 .../tasks/generate_keypair.yml | 0 .../roles/gitlab_passwordless_ssh/tasks/main.yml | 0 .../gitlab_passwordless_ssh/tasks/prereq_checks.yml | 0 .../gitlab_passwordless_ssh/tasks/validate_ssh.yml | 0 .../roles/gitlab_passwordless_ssh/vars/main.yml | 0 .../roles/hosted_gitlab/files/.gitlab-ci-build.yml | 0 .../files/.gitlab-ci-cleanup-child-template.yml | 0 .../roles/hosted_gitlab/files/.gitlab-ci-cleanup.yml | 0 .../files/.gitlab-ci-deploy-child-template.yml | 0 .../roles/hosted_gitlab/files/.gitlab-ci-deploy.yml | 0 .../gitlab}/roles/hosted_gitlab/files/.gitlab-ci.yml | 0 .../hosted_gitlab/tasks/check_oim_prerequisites.yml | 0 .../roles/hosted_gitlab/tasks/configure_firewall.yml | 0 .../roles/hosted_gitlab/tasks/configure_gitlab.yml | 0 .../roles/hosted_gitlab/tasks/create_directories.yml | 0 .../roles/hosted_gitlab/tasks/create_project.yml | 0 .../roles/hosted_gitlab/tasks/create_trigger.yml | 0 .../roles/hosted_gitlab/tasks/deploy_runner.yml | 0 .../roles/hosted_gitlab/tasks/display_summary.yml | 0 .../roles/hosted_gitlab/tasks/generate_tls_certs.yml | 0 .../roles/hosted_gitlab/tasks/install_gitlab.yml | 0 .../roles/hosted_gitlab/tasks/install_packages.yml | 0 .../gitlab}/roles/hosted_gitlab/tasks/main.yml | 0 .../roles/hosted_gitlab/tasks/podman_login.yml | 0 .../roles/hosted_gitlab/tasks/prereq_checks.yml | 0 .../roles/hosted_gitlab/tasks/push_ci_files.yml | 0 .../hosted_gitlab/tasks/push_example_catalogs.yml | 0 .../tasks/push_single_example_catalog.yml | 0 .../hosted_gitlab/tasks/root_password_change.yml | 0 .../hosted_gitlab/tasks/set_pipeline_variables.yml | 0 .../roles/hosted_gitlab/tasks/sync_input_file.yml | 0 .../hosted_gitlab/tasks/validate_prerequisites.yml | 0 .../roles/hosted_gitlab/templates/gitlab.rb.j2 | 0 .../templates/gitlab_runner.container.j2 | 0 .../gitlab}/roles/hosted_gitlab/templates/san.cnf.j2 | 0 .../gitlab}/roles/hosted_gitlab/vars/main.yml | 0 .../playbooks/input_validation}/ansible.cfg | 4 ++-- .../roles/validate_input/tasks/main.yml | 2 +- .../roles/validate_input/vars/main.yml | 0 .../tasks/check_rhel_subscription.yml | 0 .../tasks/configure_rhel_os_urls.yml | 0 .../roles/validate_subscription/vars/main.yml | 0 .../playbooks/input_validation}/validate_config.yml | 0 {local_repo => src/playbooks/local_repo}/ansible.cfg | 8 ++++---- .../playbooks/local_repo}/local_repo.yml | 0 .../playbooks/local_repo}/pulp_cleanup.yml | 0 .../parse_and_download/tasks/arch_component_loop.yml | 0 .../parse_and_download/tasks/create_metadata.yml | 0 .../tasks/execute_parallel_tasks.yml | 0 .../tasks/localrepo_completion.yml | 0 .../roles/parse_and_download/tasks/main.yml | 0 .../parse_and_download/tasks/process_rpm_repo.yml | 0 .../tasks/pulp_repo_name_migration.yml | 0 .../templates/local_repo_access.yml.j2 | 0 .../roles/parse_and_download/vars/main.yml | 0 .../pulp_validation/tasks/check_pulp_status.yml | 0 .../local_repo}/roles/pulp_validation/tasks/main.yml | 0 .../pulp_validation/tasks/read_network_spec.yml | 0 .../local_repo}/roles/pulp_validation/vars/main.yml | 0 .../tasks/check_additional_packages_images.yml | 0 .../roles/validation/tasks/check_images_per_arch.yml | 0 .../roles/validation/tasks/display_msg.yml | 0 .../local_repo}/roles/validation/tasks/main.yml | 0 .../roles/validation/tasks/prerequisites.yml | 0 .../roles/validation/tasks/validate_metadata.yml | 0 .../tasks/validate_software_config_json.yml | 0 .../local_repo}/roles/validation/vars/main.yml | 0 .../playbooks/log_collector}/ansible.cfg | 6 +++--- .../playbooks/log_collector}/collect.yml | 0 .../roles/log_collector/tasks/bundle.yml | 0 .../roles/log_collector/tasks/k8s_logs.yml | 0 .../roles/log_collector/tasks/main.yml | 0 .../roles/log_collector/tasks/prepare.yml | 0 .../roles/log_collector/tasks/setup.yml | 0 .../roles/log_collector/tasks/slurm_logs.yml | 0 .../roles/log_collector/templates/metadata.json.j2 | 0 .../log_collector}/roles/log_collector/vars/main.yml | 0 .../playbooks/prepare_oim}/ansible.cfg | 6 +++--- .../playbooks/prepare_oim}/prepare_oim.yml | 0 .../deploy_containers/auth/files/bootstrap.ldif | 0 .../roles/deploy_containers/auth/files/slapd.conf | 0 .../auth/tasks/configure_bootstrap_ldif.yml | 0 .../auth/tasks/configure_slapd_conf.yml | 0 .../auth/tasks/deploy_auth_service.yml | 0 .../auth/tasks/generate_ldap_password_hashes.yml | 0 .../auth/tasks/include_security_config.yml | 0 .../roles/deploy_containers/auth/tasks/main.yml | 0 .../roles/deploy_containers/auth/templates/auth.j2 | 0 .../roles/deploy_containers/auth/vars/main.yml | 0 .../deploy_containers/build_stream/handlers/main.yml | 0 .../build_stream/tasks/configure_automation.yml | 0 .../build_stream/tasks/deploy_build_stream.yml | 0 .../build_stream/tasks/enable_watcher_service.yml | 0 .../deploy_containers/build_stream/tasks/main.yml | 0 .../build_stream/templates/build_stream.j2 | 0 .../build_stream/templates/omnia_test_config.yml.j2 | 0 .../templates/playbook_watcher.service.j2 | 0 .../deploy_containers/build_stream/vars/main.yml | 0 .../common/tasks/aarch64_prereq.yml | 0 .../common/tasks/add_known_hosts.yml | 0 .../common/tasks/configure_chrony.yml | 0 .../common/tasks/firewall_settings.yml | 0 .../roles/deploy_containers/common/tasks/main.yml | 0 .../deploy_containers/common/tasks/omnia_service.yml | 0 .../common/tasks/package_installation.yml | 0 .../deploy_containers/common/tasks/podman_login.yml | 0 .../common/tasks/prepare_oim_completion.yml | 0 .../common/templates/bmc_group_data.j2 | 0 .../common/templates/omnia.service.j2 | 0 .../roles/deploy_containers/common/vars/main.yml | 0 .../deploy_containers/openchami/handlers/main.yml | 0 .../openchami/tasks/configs/create_dirs.yml | 0 .../openchami/tasks/configs/firewall.yml | 0 .../openchami/tasks/configs/hosts.yml | 0 .../openchami/tasks/configs/main.yml | 0 .../openchami/tasks/configs/minio.yml | 0 .../openchami/tasks/configs/ochami.yml | 0 .../openchami/tasks/configs/packages.yml | 0 .../openchami/tasks/configs/policy_update.yml | 0 .../openchami/tasks/configs/regctl.yml | 0 .../openchami/tasks/configs/registry.yml | 0 .../openchami/tasks/configs/s3_bucket.yml | 0 .../openchami/tasks/configs/verify.yml | 0 .../openchami/tasks/configs/verify_ochami.yml | 0 .../openchami/tasks/deploy_openchami.yml | 0 .../openchami/tasks/deployment_prereq.yml | 0 .../roles/deploy_containers/openchami/tasks/main.yml | 0 .../openchami/tasks/refresh_openchami_configs.yml | 0 .../openchami/tasks/verify_openchami.yml | 2 +- .../openchami/templates/configs.yaml.j2 | 0 .../openchami/templates/coredhcp/coredhcp.yaml.j2 | 0 .../openchami/templates/coredns/Corefile.j2 | 0 .../openchami/templates/inventory.yaml.j2 | 0 .../openchami/templates/minio/minio.service.j2 | 0 .../openchami/templates/ochami/config.yaml.j2 | 0 .../openchami/templates/registry/registry.service.j2 | 0 .../templates/s3/s3-public-read-boot.json.j2 | 0 .../templates/s3/s3-public-read-efi.json.j2 | 0 .../openchami/templates/s3/s3cfg.j2 | 0 .../roles/deploy_containers/openchami/vars/main.yml | 0 .../postgres/tasks/deploy_postgres.yml | 0 .../roles/deploy_containers/postgres/tasks/main.yml | 0 .../postgres/templates/init_build_stream_db.sql.j2 | 0 .../deploy_containers/postgres/templates/postgres.j2 | 0 .../roles/deploy_containers/postgres/vars/main.yml | 0 .../pulp/tasks/create_pulp_config_http.yml | 0 .../pulp/tasks/create_pulp_config_https.yml | 0 .../pulp/tasks/deploy_pulp_container_http.yml | 0 .../pulp/tasks/deploy_pulp_container_https.yml | 0 .../pulp/tasks/deployment_prereq.yml | 0 .../roles/deploy_containers/pulp/tasks/main.yml | 0 .../pulp/tasks/reload_pulp_nginx.yml | 0 .../deploy_containers/pulp/templates/http_quadlet.j2 | 0 .../pulp/templates/https_quadlet.j2 | 0 .../deploy_containers/pulp/templates/nginx_conf.j2 | 0 .../pulp/templates/settings_template.j2 | 0 .../roles/deploy_containers/pulp/vars/main.yml | 0 .../tasks/check_k8s_support.yml | 0 .../tasks/check_openldap_support.yml | 0 .../tasks/include_local_repo_config.yml | 0 .../roles/prepare_oim_validation/tasks/main.yml | 0 .../tasks/powerscale_check.yml | 0 .../prepare_oim_validation/tasks/pre_requisite.yml | 0 .../tasks/validate_network_spec.yml | 0 .../tasks/validate_passwordless_ssh_oim.yml | 0 .../roles/prepare_oim_validation/vars/main.yml | 0 {provision => src/playbooks/provision}/ansible.cfg | 6 +++--- {provision => src/playbooks/provision}/provision.yml | 2 +- .../playbooks/provision}/roles/README.md | 0 .../provision}/roles/configure_ochami/README.md | 0 .../tasks/configure_bss_cloud_init.yml | 0 .../configure_ochami/tasks/configure_bss_group.yml | 0 .../tasks/configure_cloud_init_additional.yml | 0 .../tasks/configure_cloud_init_additional_fg.yml | 0 .../tasks/configure_cloud_init_common.yml | 0 .../tasks/configure_cloud_init_group.yml | 0 .../roles/configure_ochami/tasks/create_groups.yml | 0 .../tasks/create_groups_additional_fg.yml | 0 .../configure_ochami/tasks/create_groups_common.yml | 0 .../configure_ochami/tasks/delete_smd_config.yml | 0 .../tasks/fetch_additional_images.yml | 0 .../provision}/roles/configure_ochami/tasks/main.yml | 2 +- .../configure_ochami/tasks/provision_completion.yml | 0 .../tasks/provision_mapping_nodes.yml | 0 .../configure_ochami/tasks/update_smd_groups.yaml | 0 .../tasks/validate_additional_cloud_init.yml | 0 .../roles/configure_ochami/templates/bss/bss.yaml.j2 | 0 .../templates/cloud_init/ci-defaults.yaml.j2 | 0 .../ci-group-additional_cloud_init.yaml.j2 | 0 .../templates/cloud_init/ci-group-common.yaml.j2 | 0 .../cloud_init/ci-group-default_x86_64.yaml.j2 | 0 .../ci-group-login_compiler_node_aarch64.yaml.j2 | 0 .../ci-group-login_compiler_node_x86_64.yaml.j2 | 0 .../cloud_init/ci-group-login_node_aarch64.yaml.j2 | 0 .../cloud_init/ci-group-login_node_x86_64.yaml.j2 | 0 .../templates/cloud_init/ci-group-os_aarch64.yaml.j2 | 0 .../templates/cloud_init/ci-group-os_x86_64.yaml.j2 | 0 ...p-service_kube_control_plane_first_x86_64.yaml.j2 | 0 ...i-group-service_kube_control_plane_x86_64.yaml.j2 | 0 .../ci-group-service_kube_node_x86_64.yaml.j2 | 0 .../ci-group-slurm_control_node_x86_64.yaml.j2 | 0 .../cloud_init/ci-group-slurm_node_aarch64.yaml.j2 | 0 .../cloud_init/ci-group-slurm_node_x86_64.yaml.j2 | 0 .../templates/cloud_init/configure_swap.yaml.j2 | 0 .../templates/doca-ofed/configure-ib-network.sh.j2 | 0 .../templates/doca-ofed/doca-install.sh.j2 | 0 .../hpc_tools/configure_ucx_openmpi_env.sh.j2 | 0 .../templates/hpc_tools/cuda_lock_manager.sh.j2 | 0 .../templates/hpc_tools/generate_install_uuid.sh.j2 | 0 .../templates/hpc_tools/install_cuda_driver.sh.j2 | 0 .../templates/hpc_tools/install_cuda_toolkit.sh.j2 | 0 .../templates/hpc_tools/install_dcgm.sh.j2 | 0 .../templates/hpc_tools/install_nvidia_peermem.sh.j2 | 0 .../templates/hpc_tools/install_openmpi.sh.j2 | 0 .../templates/hpc_tools/install_ucx.sh.j2 | 0 .../templates/hpc_tools/setup_doca_mpi_env.sh.j2 | 0 .../templates/hpc_tools/setup_nvhpc_sdk.sh.j2 | 0 .../templates/hpc_tools/slurm_cuda_coordinator.sh.j2 | 0 .../templates/k8s-scripts/etcd-disk-setup.sh.j2 | 0 .../templates/k8s-scripts/etcd-fstab-update.sh.j2 | 0 .../templates/ldms/ldms_sampler.sh.j2 | 0 .../templates/nodes/apptainer_mirror.conf.j2 | 0 .../templates/nodes/bmc_group_data.csv.j2 | 0 .../configure_ochami/templates/nodes/groups.yaml.j2 | 0 .../templates/nodes/groups_additional_fg.yaml.j2 | 0 .../templates/nodes/groups_common.yaml.j2 | 0 .../templates/nodes/hostname.yaml.j2 | 0 .../configure_ochami/templates/nodes/nodes.yaml.j2 | 0 .../configure_ochami/templates/openldap/sssd.conf.j2 | 0 .../templates/openldap/update_ldap_conf.sh.j2 | 0 .../templates/powerscale/deploy_powerscale_csi.sh.j2 | 0 .../templates/pull_additional_images.yaml.j2 | 0 .../slurm/check_slurm_controller_status.sh.j2 | 0 .../templates/slurm/create_scratch.sh.j2 | 0 .../templates/vast/configure_vast_installation.sh.j2 | 0 .../provision}/roles/configure_ochami/vars/main.yml | 0 .../playbooks/provision}/roles/k8s_config/README.md | 0 .../k8s_config/files/empty_certificate_template.yml | 0 .../roles/k8s_config/tasks/create_k8s_config_nfs.yml | 0 .../roles/k8s_config/tasks/create_node_dir.yml | 0 .../k8s_config/tasks/get_powerscale_dependencies.yml | 0 .../provision}/roles/k8s_config/tasks/main.yml | 0 .../roles/k8s_config/templates/ps_storage_class.j2 | 0 .../provision}/roles/k8s_config/vars/main.yml | 0 .../provision}/roles/mount_config/README.md | 0 .../mount_config/tasks/build_host_mount_map.yml | 0 .../roles/mount_config/tasks/cloud_init.yml | 0 .../mount_config/tasks/determine_target_groups.yml | 0 .../provision}/roles/mount_config/tasks/main.yml | 0 .../roles/mount_config/tasks/mount_on_oim.yml | 0 .../roles/mount_config/tasks/nfs_client.yml | 0 .../mount_config/tasks/process_single_mount.yml | 0 .../mount_config/tasks/process_single_powervault.yml | 0 .../roles/mount_config/tasks/process_single_swap.yml | 0 .../roles/mount_config/tasks/swap_config.yml | 0 .../mount_config/templates/setup_iscsi_storage.sh.j2 | 0 .../provision}/roles/mount_config/vars/main.yml | 0 .../playbooks/provision}/roles/openldap/README.md | 0 .../provision}/roles/openldap/tasks/main.yml | 0 .../provision}/roles/openldap/vars/main.yml | 0 .../passwordless_ssh/tasks/build_host_lists.yml | 0 .../passwordless_ssh/tasks/configure_oim_ssh.yml | 0 .../provision}/roles/passwordless_ssh/tasks/main.yml | 0 .../roles/passwordless_ssh/tasks/read_nodes_yaml.yml | 0 .../provision}/roles/passwordless_ssh/vars/main.yml | 0 .../provision}/roles/provision_validations/README.md | 0 .../tasks/build_stream_prerequisite.yml | 0 .../provision_validations/tasks/include_inputs.yml | 0 .../tasks/include_software_config.yml | 0 .../roles/provision_validations/tasks/main.yml | 0 .../provision_validations/tasks/update_hosts.yml | 0 .../provision_validations/tasks/validate_image.yml | 0 .../tasks/validate_mapping_file.yml | 0 .../tasks/validate_mapping_mechanism.yml | 0 .../tasks/validate_oim_timezone.yml | 0 .../tasks/validate_openldap_container.yml | 0 .../tasks/validate_telemetry_config.yml | 0 .../roles/provision_validations/vars/main.yml | 0 .../provision}/roles/slurm_config/README.md | 0 .../provision}/roles/slurm_config/defaults/main.yml | 0 .../roles/slurm_config/files/pull_benchmarks.sh | 0 .../roles/slurm_config/tasks/backup_conf.yml | 0 .../roles/slurm_config/tasks/build_slurm_conf.yml | 0 .../roles/slurm_config/tasks/check_ctld_running.yml | 0 .../provision}/roles/slurm_config/tasks/confs.yml | 0 .../roles/slurm_config/tasks/create_slurm_dir.yml | 0 .../roles/slurm_config/tasks/detect_busy_nodes.yml | 0 .../slurm_config/tasks/drain_and_remove_node.yml | 0 .../roles/slurm_config/tasks/exist_dir.yml | 0 .../slurm_config/tasks/extract_path_overrides.yml | 0 .../roles/slurm_config/tasks/handle_extra_confs.yml | 0 .../roles/slurm_config/tasks/hpc_tools.yml | 0 .../provision}/roles/slurm_config/tasks/main.yml | 0 .../roles/slurm_config/tasks/openldap_config.yml | 0 .../slurm_config/tasks/read_node_homogeneous.yml | 0 .../roles/slurm_config/tasks/read_node_idrac.yml | 0 .../slurm_config/tasks/read_node_idrac_group.yml | 0 .../slurm_config/tasks/read_slurm_hostnames.yml | 0 .../roles/slurm_config/tasks/remove_node.yml | 0 .../roles/slurm_config/tasks/update_hosts_munge.yml | 0 .../slurm_config/tasks/upgrade_conf_db_backup.yml | 0 .../slurm_config/tasks/validate_path_overrides.yml | 0 .../roles/slurm_config/templates/all_other.conf.j2 | 0 .../slurm_config/templates/benchmark_tools.list.j2 | 0 .../slurm_config/templates/container_image.list.j2 | 0 .../templates/download_container_image.sh.j2 | 0 .../roles/slurm_config/templates/logout_user.sh.j2 | 0 .../slurm_config/templates/mariadb-server.cnf.j2 | 0 .../slurm_config/templates/pull_benchmarks.sh.j2 | 0 .../provision}/roles/slurm_config/vars/main.yml | 0 .../playbooks/provision}/roles/telemetry/README.md | 0 .../roles/telemetry/files/nersc-ldms-aggr/.gitignore | 0 .../roles/telemetry/files/nersc-ldms-aggr/Makefile | 0 .../roles/telemetry/files/nersc-ldms-aggr/README.md | 0 .../files/nersc-ldms-aggr/health_check.bash | 0 .../nersc-ldms-aggr/host_map.slurm-cluster.json | 0 .../files/nersc-ldms-aggr/make_host_map.bash | 0 .../files/nersc-ldms-aggr/make_host_map.dell.py | 0 .../telemetry/files/nersc-ldms-aggr/manifest.yaml.in | 0 .../telemetry/files/nersc-ldms-aggr/mkmanifest.py | 0 .../files/nersc-ldms-aggr/nersc-ldms-aggr/Chart.yaml | 0 .../templates/NetworkAttachmentDefinition.yaml | 0 .../templates/Service.nersc-ldms-agg.yaml | 0 .../templates/Service.nersc-ldms-store.yaml | 0 .../templates/Statefulset.nersc-ldms-agg.yaml | 0 .../templates/Statefulset.nersc-ldms-store.yaml | 0 .../nersc-ldms-aggr/nersc_ldms_make_ldms_config.py | 0 .../files/nersc-ldms-aggr/scripts/decomp.json | 0 .../files/nersc-ldms-aggr/scripts/kafka.conf | 0 .../files/nersc-ldms-aggr/scripts/ldms_ls.bash | 0 .../nersc-ldms-aggr/scripts/ldms_msg_publish.py | 0 .../nersc-ldms-aggr/scripts/ldms_msg_subscribe.py | 0 .../files/nersc-ldms-aggr/scripts/ldms_stats.bash | 0 .../files/nersc-ldms-aggr/scripts/ldmsd.bash | 0 .../files/nersc-ldms-aggr/scripts/ldmsd_stream.bash | 0 .../files/nersc-ldms-aggr/scripts/start_munge.bash | 0 .../roles/telemetry/tasks/check_pxe_changes.yml | 0 .../telemetry/tasks/deploy_powerscale_metrics.yml | 0 .../roles/telemetry/tasks/deploy_ufm_telemetry.yml | 0 .../roles/telemetry/tasks/deploy_vast_telemetry.yml | 0 .../roles/telemetry/tasks/deploy_vector_ldms.yml | 0 .../roles/telemetry/tasks/deploy_vector_ome.yml | 0 .../telemetry/tasks/derive_sink_support_flags.yml | 0 .../tasks/generate_service_cluster_metadata.yml | 0 .../tasks/generate_telemetry_deployments.yml | 0 .../telemetry/tasks/generate_telemetry_script.yml | 0 .../tasks/get_powerscale_telemetry_dependencies.yml | 0 .../roles/telemetry/tasks/load_service_images.yml | 0 .../provision}/roles/telemetry/tasks/main.yml | 2 +- .../roles/telemetry/tasks/read_software_config.yml | 0 .../roles/telemetry/tasks/restart_ldms_configs.yml | 0 .../roles/telemetry/tasks/telemetry_prereq.yml | 0 .../roles/telemetry/tasks/update_ldms_agg_config.yml | 0 .../roles/telemetry/tasks/update_ldms_sampler.yml | 0 .../telemetry/tasks/validate_idrac_inventory.yml | 0 .../templates/telemetry/cleanup_telemetry.sh.j2 | 0 .../telemetry/common/telemetry_cleaner_rbac.yaml.j2 | 0 .../common/telemetry_namespace_creation.yaml.j2 | 0 .../telemetry/common/telemetry_pod_cleanup.yaml.j2 | 0 .../common/telemetry_secret_creation.yaml.j2 | 0 .../idrac_telemetry_statefulset.yaml.j2 | 0 .../templates/telemetry/kafka/kafka.kafka.yaml.j2 | 0 .../telemetry/kafka/kafka.kafka_bridge.yaml.j2 | 0 .../telemetry/kafka/kafka.kafka_bridge_lb.yaml.j2 | 0 .../telemetry/kafka/kafka.kafkapump_user.yaml.j2 | 0 .../telemetry/kafka/kafka.tls_test_job.yaml.j2 | 0 .../templates/telemetry/kafka/kafka.topic.yaml.j2 | 0 .../templates/telemetry/kustomization.yaml.j2 | 0 .../telemetry/ldms/host_map.slurm-cluster.json.j2 | 0 .../telemetry/ldms/ldms_machine_config.json.j2 | 0 .../templates/telemetry/ldms/ldmsauth.conf.j2 | 0 .../templates/telemetry/ldms/ldmsd.sampler.env.j2 | 0 .../templates/telemetry/ldms/sampler.conf.j2 | 0 .../templates/telemetry/ldms/values.yaml.j2 | 0 .../telemetry/powerscale/csi-volume-exporter.yaml.j2 | 0 .../powerscale/csm-metrics-deployment-direct.yaml.j2 | 0 .../powerscale/deploy_powerscale_telemetry.sh.j2 | 0 .../powerscale/verify_powerscale_syslog.sh.j2 | 0 .../powerscale/verify_powerscale_telemetry.sh.j2 | 0 .../telemetry/templates/telemetry/telemetry.sh.j2 | 0 .../telemetry/ufm/ufm-external-service.yaml.j2 | 0 .../telemetry/ufm/ufm-telemetry-secret.yaml.j2 | 0 .../telemetry/vast/vast-external-service.yaml.j2 | 0 .../telemetry/vast/vast-telemetry-secret.yaml.j2 | 0 .../telemetry/vector/vector-ldms-config.toml.j2 | 0 .../telemetry/vector/vector-ldms-configmap.yaml.j2 | 0 .../telemetry/vector/vector-ldms-deployment.yaml.j2 | 0 .../telemetry/vector/vector-ldms-service.yaml.j2 | 0 .../telemetry/vector/vector-ome-config.toml.j2 | 0 .../telemetry/vector/vector-ome-configmap.yaml.j2 | 0 .../telemetry/vector/vector-ome-deployment.yaml.j2 | 0 .../telemetry/vector/vector-ome-kafkauser.yaml.j2 | 0 .../telemetry/vector/vector-ome-service.yaml.j2 | 0 .../vector/vlagent-vector-deployment.yaml.j2 | 0 .../telemetry/vector/vlagent-vector-service.yaml.j2 | 0 .../vector/vmagent-vector-deployment.yaml.j2 | 0 .../telemetry/vector/vmagent-vector-service.yaml.j2 | 0 .../telemetry/vector/vmagent-vector.yaml.j2 | 0 .../telemetry/victoria/gen_victoria_certs.sh.j2 | 0 .../victoria/victoria-agent-deployment.yaml.j2 | 0 .../victoria/victoria-operator-vmagent.yaml.j2 | 0 .../victoria/victoria-operator-vmcluster.yaml.j2 | 0 .../victoria/victoria-operator-vmscrape.yaml.j2 | 0 .../victoria/victoria-operator-vmsingle.yaml.j2 | 0 .../telemetry/victoria/victoria-statefulset.yaml.j2 | 0 .../telemetry/victoria/victoria-tls-secret.yaml.j2 | 0 .../telemetry/victoria/victoria-tls-test-job.yaml.j2 | 0 .../telemetry/victoria/victoria-vmagent-rbac.yaml.j2 | 0 .../victoria/victorialogs-operator-vlagent.yaml.j2 | 0 .../victoria/victorialogs-operator-vlcluster.yaml.j2 | 0 .../victoria/victorialogs-vlagent-config.yaml.j2 | 0 .../victoria/vlagent-syslog-tls-secret.yaml.j2 | 0 .../telemetry/victoria/vmagent-scrape-config.yaml.j2 | 0 .../provision}/roles/telemetry/vars/main.yml | 0 {rollback => src/playbooks/rollback}/ansible.cfg | 6 +++--- .../playbooks/archive_upgrade_artifacts.yml | 0 .../playbooks/load_rollback_credentials.yml | 0 .../rollback}/playbooks/rollback_build_stream.yml | 0 .../playbooks/rollback}/playbooks/rollback_k8s.yml | 0 .../playbooks/rollback}/playbooks/rollback_oim.yml | 0 .../playbooks/rollback}/playbooks/rollback_slurm.yml | 2 +- .../roles/rollback_buildstream/defaults/main.yml | 0 .../roles/rollback_buildstream/handlers/main.yml | 0 .../roles/rollback_buildstream/tasks/buildstream.yml | 0 .../roles/rollback_buildstream/tasks/gitlab.yml | 0 .../roles/rollback_buildstream/tasks/main.yml | 0 .../roles/rollback_buildstream/tasks/postgres.yml | 0 .../roles/rollback_buildstream/tasks/preflight.yml | 0 .../rollback_buildstream/tasks/status_update.yml | 0 .../templates/rollback_summary.j2 | 0 .../roles/rollback_buildstream/vars/main.yml | 0 .../rollback}/roles/rollback_k8s/defaults/main.yml | 0 .../rollback_k8s/tasks/acquire_rollback_lock.yml | 0 .../rollback_k8s/tasks/add_nodes_to_inventory.yml | 0 .../roles/rollback_k8s/tasks/cleanup_metallb_ips.yml | 0 .../tasks/cleanup_stale_volume_attachments.yml | 0 .../rollback_k8s/tasks/downgrade_cp_packages.yml | 0 .../tasks/downgrade_packages_single_node.yml | 0 .../rollback_k8s/tasks/downgrade_worker_packages.yml | 0 .../roles/rollback_k8s/tasks/fix_vip_split_brain.yml | 0 .../roles/rollback_k8s/tasks/identify_vip_leader.yml | 0 .../rollback_k8s/tasks/load_rollback_status.yml | 0 .../roles/rollback_k8s/tasks/load_version_vars.yml | 0 .../rollback}/roles/rollback_k8s/tasks/main.yml | 0 .../roles/rollback_k8s/tasks/post_validation.yml | 0 .../roles/rollback_k8s/tasks/preflight_checks.yml | 0 .../rollback_k8s/tasks/release_rollback_lock.yml | 0 .../tasks/remove_kubelet_feature_gates.yml | 0 .../rollback_k8s/tasks/restart_network_pods.yml | 0 .../rollback_k8s/tasks/restore_bss_cloud_init.yml | 0 .../roles/rollback_k8s/tasks/restore_etcd.yml | 0 .../rollback_k8s/tasks/restore_etcd_single_cp.yml | 0 .../roles/rollback_k8s/tasks/restore_helm.yml | 0 .../roles/rollback_k8s/tasks/restore_k8s_configs.yml | 0 .../tasks/restore_k8s_configs_single_cp.yml | 0 .../roles/rollback_k8s/tasks/start_control_plane.yml | 0 .../roles/rollback_k8s/tasks/start_single_node.yml | 0 .../roles/rollback_k8s/tasks/start_workers.yml | 0 .../roles/rollback_k8s/tasks/stop_cluster.yml | 0 .../rollback_k8s/tasks/update_kubelet_config.yml | 0 .../roles/rollback_k8s/tasks/update_status.yml | 0 .../rollback_k8s/tasks/verify_telemetry_rollback.yml | 0 .../rollback}/roles/rollback_k8s/vars/main.yml | 0 .../roles/rollback_openchami/tasks/main.yml | 0 .../tasks/normalize_permissions.yml | 0 .../tasks/post_rollback_health_check.yml | 0 .../rollback_openchami/tasks/pre_rollback_checks.yml | 0 .../tasks/reload_cloud_init_data.yml | 0 .../rollback_openchami/tasks/renew_certificates.yml | 0 .../rollback_openchami/tasks/resolve_admin_ip.yml | 0 .../rollback_openchami/tasks/resolve_backup_dir.yml | 0 .../rollback_openchami/tasks/restore_database.yml | 0 .../tasks/restore_quadlets_and_configs.yml | 0 .../rollback_openchami/tasks/rollback_status.yml | 0 .../rollback_openchami/tasks/start_postgres_only.yml | 0 .../tasks/start_v21_containers.yml | 0 .../tasks/stop_current_containers.yml | 0 .../rollback}/roles/rollback_openchami/vars/main.yml | 0 .../rollback_slurm/tasks/check_slurm_cluster.yml | 0 .../rollback}/roles/rollback_slurm/tasks/main.yml | 0 .../roles/rollback_slurm/tasks/nfs_client.yml | 0 .../roles/rollback_slurm/tasks/slurm_backup.yml | 0 .../rollback}/roles/rollback_slurm/vars/main.yml | 0 {rollback => src/playbooks/rollback}/rollback.yml | 0 {telemetry => src/playbooks/telemetry}/ansible.cfg | 6 +++--- .../tasks/create_telemetry_report.yml | 0 .../tasks/initiate_telemetry_service_cluster.yml | 0 .../telemetry}/roles/idrac_telemetry/tasks/main.yml | 0 .../idrac_telemetry/tasks/remove_deleted_nodes.yml | 0 .../tasks/trigger_telemetry_collection.yml | 0 .../tasks/validate_bmcips_reachability.yml | 0 .../idrac_telemetry/templates/telemetry_report.j2 | 0 .../telemetry}/roles/idrac_telemetry/vars/main.yml | 0 .../roles/service_k8s_telemetry/tasks/main.yml | 0 .../tasks/update_metadata_file.yml | 0 .../roles/service_k8s_telemetry/vars/main.yml | 0 .../tasks/disable_powerscale_metrics.yml | 0 .../roles/telemetry_disable/tasks/main.yml | 2 +- .../telemetry}/roles/telemetry_disable/vars/main.yml | 0 .../tasks/enable_powerscale_metrics.yml | 0 .../telemetry}/roles/telemetry_enable/tasks/main.yml | 2 +- .../telemetry}/roles/telemetry_enable/vars/main.yml | 0 .../roles/telemetry_validation/files/timezone.txt | 0 .../roles/telemetry_validation/tasks/main.yml | 0 .../tasks/validate_idrac_inventory.yml | 0 .../tasks/validate_telemetry_config.yml | 0 .../tasks/validation_status_check.yml | 0 .../roles/telemetry_validation/vars/main.yml | 0 {telemetry => src/playbooks/telemetry}/telemetry.yml | 0 .../playbooks/telemetry}/telemetry_disable.yml | 0 .../playbooks/telemetry}/telemetry_enable.yml | 0 {upgrade => src/playbooks/upgrade}/ansible.cfg | 6 +++--- .../playbooks/reboot_and_verify_cloud_init.yml | 0 .../upgrade}/playbooks/update_k8s_cloud_init_bss.yml | 2 +- .../upgrade}/playbooks/upgrade_build_image.yml | 0 .../upgrade}/playbooks/upgrade_build_stream.yml | 0 .../playbooks/upgrade}/playbooks/upgrade_cp.yml | 0 .../upgrade}/playbooks/upgrade_cp_first.yml | 0 .../playbooks/upgrade}/playbooks/upgrade_k8s.yml | 12 ++++++------ .../upgrade}/playbooks/upgrade_local_repo.yml | 0 .../playbooks/upgrade}/playbooks/upgrade_oim.yml | 0 .../upgrade}/playbooks/upgrade_provision.yml | 0 .../playbooks/upgrade}/playbooks/upgrade_slurm.yml | 2 +- .../upgrade}/playbooks/upgrade_telemetry.yml | 0 .../upgrade}/playbooks/upgrade_validations.yml | 0 .../upgrade}/playbooks/upgrade_worker_first.yml | 0 .../playbooks/upgrade}/playbooks/upgrade_workers.yml | 0 .../playbooks/upgrade}/prepare_upgrade.yml | 0 .../scripts/merge_powerscale_values.py | 0 .../scripts/transform_software_config.py | 0 .../tasks/display_warnings.yml | 0 .../roles/import_input_parameters/tasks/main.yml | 0 .../tasks/precheck_backup_location.yml | 0 .../tasks/restore_input_files.yml | 0 .../tasks/restore_omnia_config_credentials.yml | 0 .../tasks/restore_single_input_file.yml | 0 .../tasks/restore_user_registry_credential.yml | 0 .../tasks/set_backup_location.yml | 0 .../tasks/transform_build_stream_config.yml | 0 .../tasks/transform_gitlab_config.yml | 0 .../tasks/transform_high_availability_config.yml | 0 .../tasks/transform_local_repo_config.yml | 0 .../tasks/transform_network_spec.yml | 0 .../tasks/transform_omnia_config.yml | 0 .../tasks/transform_powerscale_values.yml | 0 .../tasks/transform_provision_config.yml | 0 .../tasks/transform_pxe_mapping_file.yml | 0 .../tasks/transform_software_config.yml | 0 .../tasks/transform_storage_config.yml | 0 .../tasks/transform_telemetry_config.yml | 0 .../tasks/transform_telemetry_storage_config.yml | 0 .../templates/build_stream_config.j2 | 0 .../templates/gitlab_config.j2 | 0 .../templates/high_availability_config.j2 | 0 .../templates/local_repo_config.j2 | 0 .../templates/network_spec.j2 | 0 .../templates/omnia_config.j2 | 0 .../templates/omnia_config_credentials.yml.j2 | 0 .../templates/provision_config.j2 | 0 .../templates/pxe_mapping_file.csv.j2 | 0 .../templates/storage_config.j2 | 0 .../templates/telemetry_config.j2 | 0 .../templates/telemetry_storage_config.j2 | 0 .../roles/import_input_parameters/vars/main.yml | 0 .../tasks/load_and_validate.yml | 6 +++--- .../roles/manage_localrepo_inputs/tasks/main.yml | 0 .../tasks/process_hop_chains.yml | 0 .../tasks/validate_software_config.yml | 0 .../roles/manage_localrepo_inputs/vars/main.yml | 0 .../upgrade}/roles/prep_local_repo/README.md | 0 .../roles/prep_local_repo/artifacts/repos.yml | 0 .../roles/prep_local_repo/tasks/create_staging.yml | 0 .../upgrade}/roles/prep_local_repo/tasks/main.yml | 0 .../roles/prep_local_repo/tasks/sync_local_repo.yml | 0 .../prep_local_repo/tasks/validate_prerequisites.yml | 0 .../upgrade}/roles/prep_local_repo/vars/main.yml | 0 .../upgrade_build_stream/tasks/fresh_install.yml | 0 .../upgrade_build_stream/tasks/gitlab_ci_file.yml | 0 .../tasks/gitlab_config_upgrade.yml | 0 .../tasks/gitlab_example_catalog.yml | 0 .../upgrade_build_stream/tasks/gitlab_input_file.yml | 0 .../tasks/gitlab_load_config.yml | 0 .../roles/upgrade_build_stream/tasks/main.yml | 0 .../upgrade_build_stream/tasks/upgrade_existing.yml | 0 .../roles/upgrade_build_stream/tasks/validate.yml | 0 .../roles/upgrade_build_stream/vars/main.yml | 0 .../upgrade}/roles/upgrade_cluster/tasks/main.yml | 0 .../upgrade}/roles/upgrade_cluster/vars/main.yml | 0 .../upgrade}/roles/upgrade_k8s/defaults/main.yml | 0 .../upgrade}/roles/upgrade_k8s/handlers/main.yml | 0 .../roles/upgrade_k8s/tasks/acquire_lock.yml | 0 .../upgrade_k8s/tasks/add_nodes_to_inventory.yml | 0 .../upgrade}/roles/upgrade_k8s/tasks/backup_etcd.yml | 0 .../roles/upgrade_k8s/tasks/backup_k8s_config.yml | 0 .../roles/upgrade_k8s/tasks/build_squashfs.yml | 0 .../tasks/check_and_mark_hop_completed.yml | 0 .../upgrade_k8s/tasks/detect_addon_versions.yml | 0 .../tasks/detect_hop_chain_from_manifest.yml | 0 .../roles/upgrade_k8s/tasks/execute_single_hop.yml | 0 .../upgrade}/roles/upgrade_k8s/tasks/load_status.yml | 0 .../roles/upgrade_k8s/tasks/load_version_vars.yml | 0 .../upgrade}/roles/upgrade_k8s/tasks/main.yml | 0 .../roles/upgrade_k8s/tasks/post_validation.yml | 0 .../upgrade_k8s/tasks/powerscale_backup_folder.yml | 0 .../upgrade_k8s/tasks/powerscale_prepare_upgrade.yml | 0 .../upgrade_k8s/tasks/preflight_checks_pulp.yml | 0 .../upgrade_k8s/tasks/preflight_checks_storage.yml | 0 .../roles/upgrade_k8s/tasks/prep_merge_configs.yml | 0 .../upgrade}/roles/upgrade_k8s/tasks/prep_phase.yml | 0 .../upgrade_k8s/tasks/prep_phase_single_hop.yml | 0 .../roles/upgrade_k8s/tasks/prep_sync_all_repos.yml | 0 .../roles/upgrade_k8s/tasks/release_lock.yml | 0 .../upgrade_k8s/tasks/step_addon_validation.yml | 0 .../roles/upgrade_k8s/tasks/step_calico_upgrade.yml | 0 .../roles/upgrade_k8s/tasks/step_crio_install.yml | 0 .../upgrade}/roles/upgrade_k8s/tasks/step_drain.yml | 0 .../upgrade_k8s/tasks/step_etcd_health_check.yml | 0 .../roles/upgrade_k8s/tasks/step_helm_upgrade.yml | 0 .../roles/upgrade_k8s/tasks/step_kubeadm_install.yml | 0 .../roles/upgrade_k8s/tasks/step_kubelet_install.yml | 0 .../roles/upgrade_k8s/tasks/step_kubelet_restart.yml | 0 .../roles/upgrade_k8s/tasks/step_metallb_upgrade.yml | 0 .../roles/upgrade_k8s/tasks/step_uncordon.yml | 0 .../roles/upgrade_k8s/tasks/step_upgrade_apply.yml | 0 .../roles/upgrade_k8s/tasks/step_upgrade_node.yml | 0 .../roles/upgrade_k8s/tasks/step_validate_node.yml | 0 .../roles/upgrade_k8s/tasks/sync_local_repo.yml | 0 .../roles/upgrade_k8s/tasks/update_addon_step.yml | 0 .../roles/upgrade_k8s/tasks/update_kcm_arguments.yml | 0 .../upgrade_k8s/tasks/update_kubelet_config.yml | 0 .../tasks/update_kubelet_feature_gates.yml | 0 .../roles/upgrade_k8s/tasks/update_node_status.yml | 0 .../roles/upgrade_k8s/tasks/update_node_step.yml | 0 .../roles/upgrade_k8s/tasks/update_status.yml | 0 .../roles/upgrade_k8s/tasks/upgrade_addons.yml | 0 .../roles/upgrade_k8s/tasks/upgrade_cp_node.yml | 0 .../roles/upgrade_k8s/tasks/upgrade_powerscale.yml | 0 .../roles/upgrade_k8s/tasks/upgrade_worker.yml | 0 .../roles/upgrade_k8s/tasks/upgrade_worker_node.yml | 0 .../tasks/upgrade_workers_batch_inner.yml | 0 .../upgrade_k8s/tasks/validate_cluster_nodes.yml | 0 .../upgrade_k8s/tasks/validate_worker_ready.yml | 0 .../roles/upgrade_k8s/tasks/verify_images.yml | 0 .../roles/upgrade_k8s/templates/upgrade_repo.j2 | 0 .../upgrade}/roles/upgrade_k8s/vars/main.yml | 0 .../upgrade}/roles/upgrade_oim/tasks/main.yml | 0 .../upgrade}/roles/upgrade_oim/vars/main.yml | 0 .../upgrade_openchami/tasks/backup_openchami.yml | 0 .../upgrade}/roles/upgrade_openchami/tasks/main.yml | 0 .../upgrade_openchami/tasks/migrate_database.yml | 0 .../tasks/post_upgrade_health_check.yml | 0 .../tasks/pre_upgrade_health_check.yml | 0 .../tasks/reload_cloud_init_data.yml | 0 .../upgrade_openchami/tasks/renew_certificates.yml | 0 .../upgrade_openchami/tasks/resolve_admin_ip.yml | 0 .../tasks/retrieve_postgres_credentials.yml | 0 .../tasks/upgrade_openchami_containers.yml | 0 .../roles/upgrade_openchami/tasks/upgrade_status.yml | 0 .../upgrade}/roles/upgrade_openchami/vars/main.yml | 0 .../upgrade_slurm/tasks/check_slurm_cluster.yml | 0 .../upgrade}/roles/upgrade_slurm/tasks/main.yml | 0 .../roles/upgrade_slurm/tasks/nfs_client.yml | 0 .../roles/upgrade_slurm/tasks/slurm_backup.yml | 0 .../upgrade}/roles/upgrade_slurm/vars/main.yml | 0 .../upgrade_telemetry/tasks/apply_victoria_crs.yml | 0 .../upgrade_telemetry/tasks/backup_telemetry.yml | 0 .../upgrade_telemetry/tasks/backup_victoria.yml | 0 .../tasks/detect_victoria_state.yml | 0 .../tasks/detect_victoria_upgrade_needed.yml | 0 .../upgrade_telemetry/tasks/execute_telemetry_sh.yml | 0 .../tasks/include_required_input.yml | 0 .../upgrade}/roles/upgrade_telemetry/tasks/main.yml | 0 .../upgrade_telemetry/tasks/migrate_statefulset.yml | 0 .../tasks/migrate_vmsingle_to_vmcluster.yml | 0 .../tasks/patch_idrac_termination_grace_period.yml | 0 .../roles/upgrade_telemetry/tasks/relabel_pvc.yml | 0 .../upgrade_telemetry/tasks/upgrade_operator.yml | 0 .../upgrade_telemetry/tasks/verify_victoria.yml | 0 .../tasks/victoria_metrics_upgrade.yml | 0 .../templates/find_ip_conflict_svcs.sh.j2 | 0 .../templates/inject_vm_lb_ips.py.j2 | 0 .../upgrade}/roles/upgrade_telemetry/vars/main.yml | 0 {upgrade => src/playbooks/upgrade}/upgrade.yml | 0 {utils => src/playbooks/utils}/ansible.cfg | 6 +++--- .../playbooks/utils}/create_container_group.yml | 0 .../playbooks/utils/credential_utility}/ansible.cfg | 8 ++++---- .../credential_utility/get_config_credentials.yml | 0 .../create_config/tasks/create_credential_file.yml | 0 .../roles/create_config/tasks/main.yml | 2 +- .../templates/build_stream_credential.j2 | 0 .../create_config/templates/omnia_credential.j2 | 0 .../roles/create_config/vars/main.yml | 0 .../roles/update_config/tasks/credential_status.yml | 0 .../fetch_conditional_mandatory_credentials.yml | 0 .../roles/update_config/tasks/fetch_credentials.yml | 0 .../tasks/fetch_mandatory_credentials.yml | 0 .../tasks/fetch_optional_credentials.yml | 0 .../roles/update_config/tasks/main.yml | 6 +++--- .../roles/update_config/tasks/prompt_credentials.yml | 0 .../roles/update_config/tasks/prompt_password.yml | 0 .../roles/update_config/tasks/prompt_username.yml | 0 .../tasks/update_bs_credential_file.yml | 0 .../roles/update_config/tasks/update_credentials.yml | 0 .../roles/update_config/vars/main.yml | 0 .../roles/validation/tasks/main.yml | 0 .../roles/validation/tasks/pre_requisite.yml | 0 .../roles/validation/tasks/validate_cred_file.yml | 0 .../roles/validation/vars/main.yml | 0 .../utils}/delete_migrated_pulp_rpm_repos.yml | 0 .../utils}/external_kafka_connect_details.yml | 0 .../utils}/external_victoria_connect_details.yml | 0 .../playbooks/utils}/generate_functional_groups.yml | 0 {utils => src/playbooks/utils}/include_input_dir.yml | 0 {utils => src/playbooks/utils}/oim_cleanup.yml | 0 .../roles/common/tasks/include_omnia_config.yml | 0 .../tasks/include_omnia_config_credentials.yml | 0 .../playbooks/utils}/roles/common/tasks/main.yml | 0 .../playbooks/utils}/roles/common/vars/main.yml | 0 .../roles/create_container_group/tasks/main.yml | 0 .../roles/create_container_group/vars/main.yml | 0 .../external_kafka_connect_details/tasks/main.yml | 0 .../external_kafka_connect_details/vars/main.yml | 0 .../external_victoria_connect_details/tasks/main.yml | 0 .../external_victoria_connect_details/vars/main.yml | 0 .../roles/generate_functional_groups/tasks/main.yml | 0 .../roles/generate_functional_groups/vars/main.yml | 0 .../idrac_pxe_boot/tasks/generate_bmc_inventory.yml | 0 .../utils}/roles/idrac_pxe_boot/tasks/main.yml | 0 .../utils}/roles/idrac_pxe_boot/tasks/pre_checks.yml | 0 .../roles/idrac_pxe_boot/templates/bmc_inventory.j2 | 0 .../utils}/roles/idrac_pxe_boot/vars/main.yml | 0 .../utils}/roles/include_input_dir/tasks/main.yml | 4 ++-- .../utils}/roles/include_input_dir/vars/main.yml | 0 .../oim_container_cleanup/tasks/cleanup_auth.yml | 0 .../tasks/cleanup_automation.yml | 0 .../tasks/cleanup_build_stream.yml | 0 .../oim_container_cleanup/tasks/cleanup_common.yml | 0 .../oim_container_cleanup/tasks/cleanup_k8s.yml | 0 .../oim_container_cleanup/tasks/cleanup_note.yml | 0 .../tasks/cleanup_omnia_postgres.yml | 0 .../tasks/cleanup_openchami.yml | 0 .../oim_container_cleanup/tasks/cleanup_pulp.yml | 0 .../oim_container_cleanup/tasks/cleanup_slurm.yml | 0 .../oim_cleanup/oim_container_cleanup/tasks/main.yml | 0 .../oim_cleanup/oim_container_cleanup/vars/main.yml | 0 .../tasks/cleanup_credentials.yml | 0 .../omnia_credential_cleanup/tasks/main.yml | 0 .../omnia_credential_cleanup/vars/main.yml | 0 .../roles/oim_cleanup/pre_requisite/tasks/main.yml | 0 .../pre_requisite/tasks/pre_requisite.yml | 0 .../roles/oim_cleanup/pre_requisite/vars/main.yml | 0 .../tasks/cloudinit_phone_home.yml | 0 .../tasks/compute_effective_inventory.yml | 0 .../pxe_buildstream_manager/tasks/gitlab_host.yml | 0 .../roles/pxe_buildstream_manager/tasks/main.yml | 0 .../tasks/update_restart_state.yml | 0 .../tasks/upload_to_gitlab.yml | 0 .../tasks/write_node_results.yml | 0 .../roles/pxe_buildstream_manager/vars/main.yml | 0 .../utils}/roles/slurm_cleanup/defaults/main.yml | 0 .../utils}/roles/slurm_cleanup/tasks/main.yml | 0 .../roles/slurm_config_backup/defaults/main.yml | 0 .../utils}/roles/slurm_config_backup/tasks/main.yml | 0 .../roles/slurm_config_rollback/defaults/main.yml | 0 .../roles/slurm_config_rollback/tasks/main.yml | 0 .../roles/update_cloud_init_bss/tasks/main.yml | 0 .../roles/update_cloud_init_bss/tasks/update_bss.yml | 0 .../update_cloud_init_bss/tasks/update_ci_common.yml | 0 .../tasks/update_ci_defaults.yml | 0 .../tasks/update_cloud_init.yml | 0 .../update_cloud_init_bss/tasks/update_hostname.yml | 0 .../utils}/roles/update_cloud_init_bss/vars/main.yml | 0 {utils => src/playbooks/utils}/set_pxe_boot.yml | 0 {utils => src/playbooks/utils}/slurm_config_util.yml | 0 .../playbooks/utils}/update_cloud_init_bss.yml | 2 +- {utils => src/playbooks/utils}/upgrade_checkup.yml | 0 983 files changed, 77 insertions(+), 77 deletions(-) rename {common => src/common}/callback_plugins/omnia_default.py (100%) rename {common => src/common}/library/module_utils/build_image/__init__.py (100%) rename {common => src/common}/library/module_utils/build_image/common_functions.py (100%) rename {common => src/common}/library/module_utils/build_image/config.py (100%) rename {common => src/common}/library/module_utils/discovery/__init__.py (100%) rename {common => src/common}/library/module_utils/discovery/standard_functions.py (100%) rename {common => src/common}/library/module_utils/input_validation/__init__.py (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/__init__.py (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/config.py (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/data_fetch.py (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/data_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/data_verification.py (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/en_us_validation_msg.py (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/logical_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/slurm_conf_utils.py (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/timezone.txt (100%) rename {common => src/common}/library/module_utils/input_validation/common_utils/validation_utils.py (100%) rename {common => src/common}/library/module_utils/input_validation/schema/__init__.py (100%) rename {common => src/common}/library/module_utils/input_validation/schema/additional_software.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/build_stream_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/credential_rules.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/discovery_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/functional_groups_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/gitlab_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/high_availability_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/k8s_scheduler.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/local_repo_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/network_spec.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/omnia_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/provision_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/security_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/slurm_config_parameters.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/software_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/storage_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/telemetry_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/schema/telemetry_storage_config.json (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/__init__.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/build_stream_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/common_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/csi_driver_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/gitlab_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/high_availability_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/local_repo_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/powerscale_telemetry_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/provision_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/scheduler_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/telemetry_validation.py (100%) rename {common => src/common}/library/module_utils/input_validation/validation_flows/vip_pxe_validation.py (100%) rename {common => src/common}/library/module_utils/local_repo/__init__.py (100%) rename {common => src/common}/library/module_utils/local_repo/common_functions.py (100%) rename {common => src/common}/library/module_utils/local_repo/config.py (100%) rename {common => src/common}/library/module_utils/local_repo/container_repo_utils.py (100%) rename {common => src/common}/library/module_utils/local_repo/download_common.py (100%) rename {common => src/common}/library/module_utils/local_repo/download_image.py (100%) rename {common => src/common}/library/module_utils/local_repo/download_rpm.py (100%) rename {common => src/common}/library/module_utils/local_repo/parse_and_download.py (100%) rename {common => src/common}/library/module_utils/local_repo/process_metadata.py (100%) rename {common => src/common}/library/module_utils/local_repo/process_parallel.py (100%) rename {common => src/common}/library/module_utils/local_repo/registry_utils.py (100%) rename {common => src/common}/library/module_utils/local_repo/rest_client.py (100%) rename {common => src/common}/library/module_utils/local_repo/software_utils.py (100%) rename {common => src/common}/library/module_utils/local_repo/standard_logger.py (100%) rename {common => src/common}/library/module_utils/local_repo/user_image_utility.py (100%) rename {common => src/common}/library/module_utils/local_repo/validate_utils.py (100%) rename {common => src/common}/library/module_utils/upgrade/__init__.py (100%) rename {common => src/common}/library/module_utils/upgrade/upgrade_hop_calculator_lib.py (100%) rename {common => src/common}/library/modules/additional_images_collector.py (100%) rename {common => src/common}/library/modules/base_image_package_collector.py (100%) rename {common => src/common}/library/modules/calculate_upgrade_hops.py (100%) rename {common => src/common}/library/modules/cert_vault_handler.py (100%) rename {common => src/common}/library/modules/check_user_registry.py (100%) rename {common => src/common}/library/modules/create_upgrade_staging.py (100%) rename {common => src/common}/library/modules/delete_idracips_from_mysqldb.py (100%) rename {common => src/common}/library/modules/disable_idrac_telemetry.py (100%) rename {common => src/common}/library/modules/enable_telemetry_service.py (100%) rename {common => src/common}/library/modules/fetch_credential_rule.py (100%) rename {common => src/common}/library/modules/fetch_idrac_ips.py (100%) rename {common => src/common}/library/modules/fetch_mapping_details.py (100%) rename {common => src/common}/library/modules/fetch_roles_config.py (100%) rename {common => src/common}/library/modules/fetch_software_arch.py (100%) rename {common => src/common}/library/modules/fetch_telemetry_status.py (100%) rename {common => src/common}/library/modules/functional_group_parser.py (100%) rename {common => src/common}/library/modules/generate_argon2_password.py (100%) rename {common => src/common}/library/modules/generate_discovery_report.py (100%) rename {common => src/common}/library/modules/generate_functional_groups.py (100%) rename {common => src/common}/library/modules/generate_pxe_mapping.py (100%) rename {common => src/common}/library/modules/generate_ssha_password.py (100%) rename {common => src/common}/library/modules/generate_xname_in_mapping_file.py (100%) rename {common => src/common}/library/modules/get_service_cluster_info.py (100%) rename {common => src/common}/library/modules/group_package_map.py (100%) rename {common => src/common}/library/modules/idrac_telemetry_filter.py (100%) rename {common => src/common}/library/modules/image_package_collector.py (100%) rename {common => src/common}/library/modules/insert_idracips_mysqldb.py (100%) rename {common => src/common}/library/modules/k8s_upgrade_status.py (100%) rename {common => src/common}/library/modules/localrepo_metadata_manager.py (100%) rename {common => src/common}/library/modules/ome_server_inventory.py (100%) rename {common => src/common}/library/modules/parallel_file_copy.py (100%) rename {common => src/common}/library/modules/parallel_tasks.py (100%) rename {common => src/common}/library/modules/prepare_tasklist.py (100%) rename {common => src/common}/library/modules/process_rpm_config.py (100%) rename {common => src/common}/library/modules/pulp_cleanup.py (100%) rename {common => src/common}/library/modules/pulp_repo_name_migration.py (100%) rename {common => src/common}/library/modules/read_idracips_from_mysqldb.py (100%) rename {common => src/common}/library/modules/slurm_conf.py (100%) rename {common => src/common}/library/modules/tests/__init__.py (100%) rename {common => src/common}/library/modules/tests/test_additional_subnets_validation.py (100%) rename {common => src/common}/library/modules/tests/test_generate_discovery_report.py (100%) rename {common => src/common}/library/modules/tests/test_ib_nic_fallback.py (100%) rename {common => src/common}/library/modules/tests/test_ome_pagination.py (100%) rename {common => src/common}/library/modules/update_bmc_group_entry.py (100%) rename {common => src/common}/library/modules/update_component_json_repos.py (100%) rename {common => src/common}/library/modules/update_software_config.py (100%) rename {common => src/common}/library/modules/validate_bmc_group_data.py (100%) rename {common => src/common}/library/modules/validate_credentials.py (100%) rename {common => src/common}/library/modules/validate_input.py (100%) rename {common => src/common}/library/modules/validate_user_repo.py (100%) rename {common => src/common}/tasks/common/check_kube_vip_reachability.yml (100%) rename {common => src/common}/tasks/common/decrypt_include_encrypt.yml (97%) rename {common => src/common}/tasks/common/get_container_image_list.yml (100%) rename {common => src/common}/tasks/common/load_ha_config.yml (100%) rename {common => src/common}/tasks/common/openchami_auth.yml (100%) rename {common => src/common}/tasks/common/validate_image_tars.yml (100%) rename {common => src/common}/tasks/provision/main.yml (100%) rename {common => src/common}/tasks/scheduler/main.yml (100%) rename {common => src/common}/tasks/telemetry/main.yml (100%) rename {common => src/common}/vars/common_messages.yml (100%) rename {common => src/common}/vars/common_vars.yml (100%) rename {common => src/common}/vars/encrypt_files_vars.yml (100%) rename {common => src/common}/vars/image_vars.yml (100%) rename {common => src/common}/vars/openchami_image_cmd.yml (100%) rename {common => src/common}/vars/openchami_vars.yml (100%) rename {common => src/common}/vars/provision_messages.yml (100%) rename {common => src/common}/vars/provision_vars.yml (100%) rename {common => src/common}/vars/scheduler_messages.yml (100%) rename {common => src/common}/vars/scheduler_vars.yml (100%) rename {common => src/common}/vars/telemetry_messages.yml (100%) rename {common => src/common}/vars/telemetry_vars.yml (100%) rename {common => src/common}/vars/upgrade_vars.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/ansible.cfg (78%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/build_image_aarch64.yml (98%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/fetch_packages/tasks/aarch64_build_image_completion.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/fetch_packages/tasks/build_stream_prerequisite.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/fetch_packages/tasks/check_aarch64_fg.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/fetch_packages/tasks/fetch_packages.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/fetch_packages/tasks/fetch_pulp_repos.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/fetch_packages/tasks/main.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/fetch_packages/vars/main.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/files/omnia-crun-bpf.te (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/tasks/build_base_image.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/tasks/build_compute_image.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/tasks/build_image_common.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/tasks/main.yml (93%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/tasks/preflight_selinux_check.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/tasks/set_s3_acl.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/templates/images/rhel-base-config.yaml.j2 (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/image_creation/vars/main.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/prepare_arm_node/tasks/gather_oim_data.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/prepare_arm_node/tasks/main.yml (100%) rename {build_image_aarch64 => src/playbooks/build_image_aarch64}/roles/prepare_arm_node/vars/main.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/ansible.cfg (78%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/build_image_x86_64.yml (98%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/fetch_packages/tasks/build_stream_prerequisite.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/fetch_packages/tasks/check_x86_64_fg.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/fetch_packages/tasks/fetch_packages.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/fetch_packages/tasks/fetch_pulp_repos.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/fetch_packages/tasks/main.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/fetch_packages/tasks/x86_64_build_image_completion.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/fetch_packages/vars/main.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/files/omnia-crun-bpf.te (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/tasks/build_base_image.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/tasks/build_compute_image.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/tasks/build_image_common.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/tasks/main.yml (94%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/tasks/preflight_selinux_check.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/tasks/prepare_pulp_image.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/tasks/set_s3_acl.yml (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/templates/images/rhel-base-config.yaml.j2 (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 (100%) rename {build_image_x86_64 => src/playbooks/build_image_x86_64}/roles/image_creation/vars/main.yml (100%) rename {discovery => src/playbooks/discovery}/ansible.cfg (77%) rename {discovery => src/playbooks/discovery}/discovery.yml (100%) rename {discovery => src/playbooks/discovery}/roles/ome_discovery/README.md (100%) rename {discovery => src/playbooks/discovery}/roles/ome_discovery/defaults/main.yml (100%) rename {discovery => src/playbooks/discovery}/roles/ome_discovery/tasks/collect_inventory.yml (100%) rename {discovery => src/playbooks/discovery}/roles/ome_discovery/tasks/generate_discovery_report.yml (100%) rename {discovery => src/playbooks/discovery}/roles/ome_discovery/tasks/generate_pxe_mapping.yml (100%) rename {discovery => src/playbooks/discovery}/roles/ome_discovery/tasks/get_ome_credentials.yml (100%) rename {discovery => src/playbooks/discovery}/roles/ome_discovery/tasks/main.yml (100%) rename {discovery => src/playbooks/discovery}/roles/ome_discovery/vars/main.yml (100%) rename {gitlab => src/playbooks/gitlab}/ansible.cfg (78%) rename {gitlab => src/playbooks/gitlab}/cleanup_gitlab.yml (100%) rename {gitlab => src/playbooks/gitlab}/gitlab.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/cleanup_buildstream_oauth.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/cleanup_cicd.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/cleanup_credentials.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/cleanup_directories.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/cleanup_packages.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/cleanup_runner.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/cleanup_services.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/cleanup_summary.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/cleanup_tls.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/tasks/main.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/cleanup_gitlab/vars/main.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/gitlab_passwordless_ssh/files/check_gitlab_port.sh (100%) rename {gitlab => src/playbooks/gitlab}/roles/gitlab_passwordless_ssh/tasks/authorize_key.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/gitlab_passwordless_ssh/tasks/generate_keypair.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/gitlab_passwordless_ssh/tasks/main.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/gitlab_passwordless_ssh/tasks/prereq_checks.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/gitlab_passwordless_ssh/tasks/validate_ssh.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/gitlab_passwordless_ssh/vars/main.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/files/.gitlab-ci-build.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/files/.gitlab-ci-cleanup-child-template.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/files/.gitlab-ci-cleanup.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/files/.gitlab-ci-deploy-child-template.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/files/.gitlab-ci-deploy.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/files/.gitlab-ci.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/check_oim_prerequisites.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/configure_firewall.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/configure_gitlab.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/create_directories.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/create_project.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/create_trigger.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/deploy_runner.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/display_summary.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/generate_tls_certs.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/install_gitlab.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/install_packages.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/main.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/podman_login.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/prereq_checks.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/push_ci_files.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/push_example_catalogs.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/push_single_example_catalog.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/root_password_change.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/set_pipeline_variables.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/sync_input_file.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/tasks/validate_prerequisites.yml (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/templates/gitlab.rb.j2 (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/templates/gitlab_runner.container.j2 (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/templates/san.cnf.j2 (100%) rename {gitlab => src/playbooks/gitlab}/roles/hosted_gitlab/vars/main.yml (100%) rename {utils/credential_utility => src/playbooks/input_validation}/ansible.cfg (88%) rename {input_validation => src/playbooks/input_validation}/roles/validate_input/tasks/main.yml (94%) rename {input_validation => src/playbooks/input_validation}/roles/validate_input/vars/main.yml (100%) rename {input_validation => src/playbooks/input_validation}/roles/validate_subscription/tasks/check_rhel_subscription.yml (100%) rename {input_validation => src/playbooks/input_validation}/roles/validate_subscription/tasks/configure_rhel_os_urls.yml (100%) rename {input_validation => src/playbooks/input_validation}/roles/validate_subscription/vars/main.yml (100%) rename {input_validation => src/playbooks/input_validation}/validate_config.yml (100%) rename {local_repo => src/playbooks/local_repo}/ansible.cfg (72%) rename {local_repo => src/playbooks/local_repo}/local_repo.yml (100%) rename {local_repo => src/playbooks/local_repo}/pulp_cleanup.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/parse_and_download/tasks/arch_component_loop.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/parse_and_download/tasks/create_metadata.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/parse_and_download/tasks/execute_parallel_tasks.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/parse_and_download/tasks/localrepo_completion.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/parse_and_download/tasks/main.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/parse_and_download/tasks/process_rpm_repo.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/parse_and_download/tasks/pulp_repo_name_migration.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/parse_and_download/templates/local_repo_access.yml.j2 (100%) rename {local_repo => src/playbooks/local_repo}/roles/parse_and_download/vars/main.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/pulp_validation/tasks/check_pulp_status.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/pulp_validation/tasks/main.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/pulp_validation/tasks/read_network_spec.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/pulp_validation/vars/main.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/validation/tasks/check_additional_packages_images.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/validation/tasks/check_images_per_arch.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/validation/tasks/display_msg.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/validation/tasks/main.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/validation/tasks/prerequisites.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/validation/tasks/validate_metadata.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/validation/tasks/validate_software_config_json.yml (100%) rename {local_repo => src/playbooks/local_repo}/roles/validation/vars/main.yml (100%) rename {log_collector => src/playbooks/log_collector}/ansible.cfg (78%) rename {log_collector => src/playbooks/log_collector}/collect.yml (100%) rename {log_collector => src/playbooks/log_collector}/roles/log_collector/tasks/bundle.yml (100%) rename {log_collector => src/playbooks/log_collector}/roles/log_collector/tasks/k8s_logs.yml (100%) rename {log_collector => src/playbooks/log_collector}/roles/log_collector/tasks/main.yml (100%) rename {log_collector => src/playbooks/log_collector}/roles/log_collector/tasks/prepare.yml (100%) rename {log_collector => src/playbooks/log_collector}/roles/log_collector/tasks/setup.yml (100%) rename {log_collector => src/playbooks/log_collector}/roles/log_collector/tasks/slurm_logs.yml (100%) rename {log_collector => src/playbooks/log_collector}/roles/log_collector/templates/metadata.json.j2 (100%) rename {log_collector => src/playbooks/log_collector}/roles/log_collector/vars/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/ansible.cfg (78%) rename {prepare_oim => src/playbooks/prepare_oim}/prepare_oim.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/files/bootstrap.ldif (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/files/slapd.conf (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/tasks/configure_bootstrap_ldif.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/tasks/configure_slapd_conf.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/tasks/deploy_auth_service.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/tasks/generate_ldap_password_hashes.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/tasks/include_security_config.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/tasks/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/templates/auth.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/auth/vars/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/build_stream/handlers/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/build_stream/tasks/configure_automation.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/build_stream/tasks/deploy_build_stream.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/build_stream/tasks/enable_watcher_service.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/build_stream/tasks/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/build_stream/templates/build_stream.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/build_stream/templates/omnia_test_config.yml.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/build_stream/templates/playbook_watcher.service.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/build_stream/vars/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/tasks/aarch64_prereq.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/tasks/add_known_hosts.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/tasks/configure_chrony.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/tasks/firewall_settings.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/tasks/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/tasks/omnia_service.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/tasks/package_installation.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/tasks/podman_login.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/tasks/prepare_oim_completion.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/templates/bmc_group_data.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/templates/omnia.service.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/common/vars/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/handlers/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/create_dirs.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/firewall.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/hosts.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/minio.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/ochami.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/packages.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/policy_update.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/regctl.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/registry.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/s3_bucket.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/verify.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/configs/verify_ochami.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/deploy_openchami.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/deployment_prereq.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/refresh_openchami_configs.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/tasks/verify_openchami.yml (95%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/configs.yaml.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/coredhcp/coredhcp.yaml.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/coredns/Corefile.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/inventory.yaml.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/minio/minio.service.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/ochami/config.yaml.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/registry/registry.service.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/s3/s3-public-read-boot.json.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/s3/s3-public-read-efi.json.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/templates/s3/s3cfg.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/openchami/vars/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/postgres/tasks/deploy_postgres.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/postgres/tasks/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/postgres/templates/init_build_stream_db.sql.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/postgres/templates/postgres.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/postgres/vars/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/tasks/create_pulp_config_http.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/tasks/create_pulp_config_https.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/tasks/deploy_pulp_container_http.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/tasks/deploy_pulp_container_https.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/tasks/deployment_prereq.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/tasks/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/tasks/reload_pulp_nginx.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/templates/http_quadlet.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/templates/https_quadlet.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/templates/nginx_conf.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/templates/settings_template.j2 (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/deploy_containers/pulp/vars/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/prepare_oim_validation/tasks/check_k8s_support.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/prepare_oim_validation/tasks/check_openldap_support.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/prepare_oim_validation/tasks/include_local_repo_config.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/prepare_oim_validation/tasks/main.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/prepare_oim_validation/tasks/powerscale_check.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/prepare_oim_validation/tasks/pre_requisite.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/prepare_oim_validation/tasks/validate_network_spec.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/prepare_oim_validation/tasks/validate_passwordless_ssh_oim.yml (100%) rename {prepare_oim => src/playbooks/prepare_oim}/roles/prepare_oim_validation/vars/main.yml (100%) rename {provision => src/playbooks/provision}/ansible.cfg (77%) rename {provision => src/playbooks/provision}/provision.yml (98%) rename {provision => src/playbooks/provision}/roles/README.md (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/README.md (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/configure_bss_cloud_init.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/configure_bss_group.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/configure_cloud_init_additional.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/configure_cloud_init_additional_fg.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/configure_cloud_init_common.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/configure_cloud_init_group.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/create_groups.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/create_groups_additional_fg.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/create_groups_common.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/delete_smd_config.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/fetch_additional_images.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/main.yml (95%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/provision_completion.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/provision_mapping_nodes.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/update_smd_groups.yaml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/tasks/validate_additional_cloud_init.yml (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/bss/bss.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-defaults.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-additional_cloud_init.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-common.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-default_x86_64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-login_node_aarch64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-login_node_x86_64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-os_aarch64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-os_x86_64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_first_x86_64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_x86_64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_node_x86_64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-slurm_control_node_x86_64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_aarch64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/cloud_init/configure_swap.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/doca-ofed/configure-ib-network.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/doca-ofed/doca-install.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/configure_ucx_openmpi_env.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/cuda_lock_manager.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/generate_install_uuid.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/install_cuda_driver.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/install_cuda_toolkit.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/install_dcgm.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/install_nvidia_peermem.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/install_openmpi.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/install_ucx.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/setup_doca_mpi_env.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/setup_nvhpc_sdk.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/hpc_tools/slurm_cuda_coordinator.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/k8s-scripts/etcd-disk-setup.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/k8s-scripts/etcd-fstab-update.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/ldms/ldms_sampler.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/nodes/apptainer_mirror.conf.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/nodes/bmc_group_data.csv.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/nodes/groups.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/nodes/groups_additional_fg.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/nodes/groups_common.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/nodes/hostname.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/nodes/nodes.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/openldap/sssd.conf.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/openldap/update_ldap_conf.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/powerscale/deploy_powerscale_csi.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/pull_additional_images.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/slurm/check_slurm_controller_status.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/slurm/create_scratch.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/templates/vast/configure_vast_installation.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/configure_ochami/vars/main.yml (100%) rename {provision => src/playbooks/provision}/roles/k8s_config/README.md (100%) rename {provision => src/playbooks/provision}/roles/k8s_config/files/empty_certificate_template.yml (100%) rename {provision => src/playbooks/provision}/roles/k8s_config/tasks/create_k8s_config_nfs.yml (100%) rename {provision => src/playbooks/provision}/roles/k8s_config/tasks/create_node_dir.yml (100%) rename {provision => src/playbooks/provision}/roles/k8s_config/tasks/get_powerscale_dependencies.yml (100%) rename {provision => src/playbooks/provision}/roles/k8s_config/tasks/main.yml (100%) rename {provision => src/playbooks/provision}/roles/k8s_config/templates/ps_storage_class.j2 (100%) rename {provision => src/playbooks/provision}/roles/k8s_config/vars/main.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/README.md (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/build_host_mount_map.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/cloud_init.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/determine_target_groups.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/main.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/mount_on_oim.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/nfs_client.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/process_single_mount.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/process_single_powervault.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/process_single_swap.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/tasks/swap_config.yml (100%) rename {provision => src/playbooks/provision}/roles/mount_config/templates/setup_iscsi_storage.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/mount_config/vars/main.yml (100%) rename {provision => src/playbooks/provision}/roles/openldap/README.md (100%) rename {provision => src/playbooks/provision}/roles/openldap/tasks/main.yml (100%) rename {provision => src/playbooks/provision}/roles/openldap/vars/main.yml (100%) rename {provision => src/playbooks/provision}/roles/passwordless_ssh/tasks/build_host_lists.yml (100%) rename {provision => src/playbooks/provision}/roles/passwordless_ssh/tasks/configure_oim_ssh.yml (100%) rename {provision => src/playbooks/provision}/roles/passwordless_ssh/tasks/main.yml (100%) rename {provision => src/playbooks/provision}/roles/passwordless_ssh/tasks/read_nodes_yaml.yml (100%) rename {provision => src/playbooks/provision}/roles/passwordless_ssh/vars/main.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/README.md (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/build_stream_prerequisite.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/include_inputs.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/include_software_config.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/main.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/update_hosts.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/validate_image.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/validate_mapping_file.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/validate_mapping_mechanism.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/validate_oim_timezone.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/validate_openldap_container.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/tasks/validate_telemetry_config.yml (100%) rename {provision => src/playbooks/provision}/roles/provision_validations/vars/main.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/README.md (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/defaults/main.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/files/pull_benchmarks.sh (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/backup_conf.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/build_slurm_conf.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/check_ctld_running.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/confs.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/create_slurm_dir.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/detect_busy_nodes.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/drain_and_remove_node.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/exist_dir.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/extract_path_overrides.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/handle_extra_confs.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/hpc_tools.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/main.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/openldap_config.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/read_node_homogeneous.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/read_node_idrac.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/read_node_idrac_group.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/read_slurm_hostnames.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/remove_node.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/update_hosts_munge.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/upgrade_conf_db_backup.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/tasks/validate_path_overrides.yml (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/templates/all_other.conf.j2 (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/templates/benchmark_tools.list.j2 (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/templates/container_image.list.j2 (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/templates/download_container_image.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/templates/logout_user.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/templates/mariadb-server.cnf.j2 (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/templates/pull_benchmarks.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/slurm_config/vars/main.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/README.md (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/.gitignore (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/Makefile (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/README.md (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/health_check.bash (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/host_map.slurm-cluster.json (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/make_host_map.bash (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/make_host_map.dell.py (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/manifest.yaml.in (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/mkmanifest.py (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/Chart.yaml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/NetworkAttachmentDefinition.yaml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-agg.yaml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-store.yaml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-agg.yaml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-store.yaml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/nersc_ldms_make_ldms_config.py (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/scripts/decomp.json (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/scripts/kafka.conf (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_ls.bash (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_publish.py (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_subscribe.py (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_stats.bash (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd.bash (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd_stream.bash (100%) rename {provision => src/playbooks/provision}/roles/telemetry/files/nersc-ldms-aggr/scripts/start_munge.bash (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/check_pxe_changes.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/deploy_powerscale_metrics.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/deploy_ufm_telemetry.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/deploy_vast_telemetry.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/deploy_vector_ldms.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/deploy_vector_ome.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/derive_sink_support_flags.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/generate_service_cluster_metadata.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/generate_telemetry_deployments.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/generate_telemetry_script.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/get_powerscale_telemetry_dependencies.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/load_service_images.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/main.yml (98%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/read_software_config.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/restart_ldms_configs.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/telemetry_prereq.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/update_ldms_agg_config.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/update_ldms_sampler.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/tasks/validate_idrac_inventory.yml (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/cleanup_telemetry.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/common/telemetry_cleaner_rbac.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/common/telemetry_namespace_creation.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/common/telemetry_pod_cleanup.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/common/telemetry_secret_creation.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/idrac_telemetry/idrac_telemetry_statefulset.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/kafka/kafka.kafka.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge_lb.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/kafka/kafka.kafkapump_user.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/kafka/kafka.tls_test_job.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/kafka/kafka.topic.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/kustomization.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/ldms/host_map.slurm-cluster.json.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/ldms/ldms_machine_config.json.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/ldms/ldmsauth.conf.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/ldms/ldmsd.sampler.env.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/ldms/sampler.conf.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/ldms/values.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/powerscale/csi-volume-exporter.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/powerscale/csm-metrics-deployment-direct.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/powerscale/deploy_powerscale_telemetry.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_syslog.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_telemetry.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/telemetry.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/ufm/ufm-external-service.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/ufm/ufm-telemetry-secret.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vast/vast-external-service.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vast/vast-telemetry-secret.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vector-ldms-config.toml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vector-ldms-configmap.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vector-ldms-deployment.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vector-ldms-service.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vector-ome-config.toml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vector-ome-configmap.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vector-ome-deployment.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vector-ome-kafkauser.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vector-ome-service.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vlagent-vector-deployment.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vlagent-vector-service.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vmagent-vector-deployment.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vmagent-vector-service.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/vector/vmagent-vector.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/gen_victoria_certs.sh.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victoria-agent-deployment.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmagent.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmcluster.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmscrape.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmsingle.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victoria-statefulset.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victoria-tls-secret.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victoria-tls-test-job.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victoria-vmagent-rbac.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlagent.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlcluster.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/victorialogs-vlagent-config.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/vlagent-syslog-tls-secret.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/templates/telemetry/victoria/vmagent-scrape-config.yaml.j2 (100%) rename {provision => src/playbooks/provision}/roles/telemetry/vars/main.yml (100%) rename {rollback => src/playbooks/rollback}/ansible.cfg (79%) rename {rollback => src/playbooks/rollback}/playbooks/archive_upgrade_artifacts.yml (100%) rename {rollback => src/playbooks/rollback}/playbooks/load_rollback_credentials.yml (100%) rename {rollback => src/playbooks/rollback}/playbooks/rollback_build_stream.yml (100%) rename {rollback => src/playbooks/rollback}/playbooks/rollback_k8s.yml (100%) rename {rollback => src/playbooks/rollback}/playbooks/rollback_oim.yml (100%) rename {rollback => src/playbooks/rollback}/playbooks/rollback_slurm.yml (99%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/defaults/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/handlers/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/tasks/buildstream.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/tasks/gitlab.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/tasks/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/tasks/postgres.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/tasks/preflight.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/tasks/status_update.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/templates/rollback_summary.j2 (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_buildstream/vars/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/defaults/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/acquire_rollback_lock.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/add_nodes_to_inventory.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/cleanup_metallb_ips.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/cleanup_stale_volume_attachments.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/downgrade_cp_packages.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/downgrade_packages_single_node.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/downgrade_worker_packages.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/fix_vip_split_brain.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/identify_vip_leader.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/load_rollback_status.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/load_version_vars.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/post_validation.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/preflight_checks.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/release_rollback_lock.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/remove_kubelet_feature_gates.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/restart_network_pods.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/restore_bss_cloud_init.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/restore_etcd.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/restore_etcd_single_cp.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/restore_helm.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/restore_k8s_configs.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/restore_k8s_configs_single_cp.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/start_control_plane.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/start_single_node.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/start_workers.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/stop_cluster.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/update_kubelet_config.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/update_status.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/tasks/verify_telemetry_rollback.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_k8s/vars/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/normalize_permissions.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/post_rollback_health_check.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/pre_rollback_checks.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/reload_cloud_init_data.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/renew_certificates.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/resolve_admin_ip.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/resolve_backup_dir.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/restore_database.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/restore_quadlets_and_configs.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/rollback_status.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/start_postgres_only.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/start_v21_containers.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/tasks/stop_current_containers.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_openchami/vars/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_slurm/tasks/check_slurm_cluster.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_slurm/tasks/main.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_slurm/tasks/nfs_client.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_slurm/tasks/slurm_backup.yml (100%) rename {rollback => src/playbooks/rollback}/roles/rollback_slurm/vars/main.yml (100%) rename {rollback => src/playbooks/rollback}/rollback.yml (100%) rename {telemetry => src/playbooks/telemetry}/ansible.cfg (78%) rename {telemetry => src/playbooks/telemetry}/roles/idrac_telemetry/tasks/create_telemetry_report.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/idrac_telemetry/tasks/initiate_telemetry_service_cluster.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/idrac_telemetry/tasks/main.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/idrac_telemetry/tasks/remove_deleted_nodes.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/idrac_telemetry/tasks/trigger_telemetry_collection.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/idrac_telemetry/tasks/validate_bmcips_reachability.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/idrac_telemetry/templates/telemetry_report.j2 (100%) rename {telemetry => src/playbooks/telemetry}/roles/idrac_telemetry/vars/main.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/service_k8s_telemetry/tasks/main.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/service_k8s_telemetry/tasks/update_metadata_file.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/service_k8s_telemetry/vars/main.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_disable/tasks/disable_powerscale_metrics.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_disable/tasks/main.yml (92%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_disable/vars/main.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_enable/tasks/enable_powerscale_metrics.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_enable/tasks/main.yml (92%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_enable/vars/main.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_validation/files/timezone.txt (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_validation/tasks/main.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_validation/tasks/validate_idrac_inventory.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_validation/tasks/validate_telemetry_config.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_validation/tasks/validation_status_check.yml (100%) rename {telemetry => src/playbooks/telemetry}/roles/telemetry_validation/vars/main.yml (100%) rename {telemetry => src/playbooks/telemetry}/telemetry.yml (100%) rename {telemetry => src/playbooks/telemetry}/telemetry_disable.yml (100%) rename {telemetry => src/playbooks/telemetry}/telemetry_enable.yml (100%) rename {upgrade => src/playbooks/upgrade}/ansible.cfg (79%) rename {upgrade => src/playbooks/upgrade}/playbooks/reboot_and_verify_cloud_init.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/update_k8s_cloud_init_bss.yml (97%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_build_image.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_build_stream.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_cp.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_cp_first.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_k8s.yml (99%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_local_repo.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_oim.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_provision.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_slurm.yml (99%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_telemetry.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_validations.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_worker_first.yml (100%) rename {upgrade => src/playbooks/upgrade}/playbooks/upgrade_workers.yml (100%) rename {upgrade => src/playbooks/upgrade}/prepare_upgrade.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/scripts/merge_powerscale_values.py (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/scripts/transform_software_config.py (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/display_warnings.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/precheck_backup_location.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/restore_input_files.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/restore_omnia_config_credentials.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/restore_single_input_file.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/restore_user_registry_credential.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/set_backup_location.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_build_stream_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_gitlab_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_high_availability_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_local_repo_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_network_spec.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_omnia_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_powerscale_values.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_provision_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_pxe_mapping_file.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_software_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_storage_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_telemetry_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/tasks/transform_telemetry_storage_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/build_stream_config.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/gitlab_config.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/high_availability_config.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/local_repo_config.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/network_spec.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/omnia_config.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/omnia_config_credentials.yml.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/provision_config.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/pxe_mapping_file.csv.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/storage_config.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/telemetry_config.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/templates/telemetry_storage_config.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/import_input_parameters/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/manage_localrepo_inputs/tasks/load_and_validate.yml (96%) rename {upgrade => src/playbooks/upgrade}/roles/manage_localrepo_inputs/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/manage_localrepo_inputs/tasks/process_hop_chains.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/manage_localrepo_inputs/tasks/validate_software_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/manage_localrepo_inputs/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/prep_local_repo/README.md (100%) rename {upgrade => src/playbooks/upgrade}/roles/prep_local_repo/artifacts/repos.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/prep_local_repo/tasks/create_staging.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/prep_local_repo/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/prep_local_repo/tasks/sync_local_repo.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/prep_local_repo/tasks/validate_prerequisites.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/prep_local_repo/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/tasks/fresh_install.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/tasks/gitlab_ci_file.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/tasks/gitlab_config_upgrade.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/tasks/gitlab_example_catalog.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/tasks/gitlab_input_file.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/tasks/gitlab_load_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/tasks/upgrade_existing.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/tasks/validate.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_build_stream/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_cluster/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_cluster/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/defaults/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/handlers/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/acquire_lock.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/add_nodes_to_inventory.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/backup_etcd.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/backup_k8s_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/build_squashfs.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/check_and_mark_hop_completed.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/detect_addon_versions.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/detect_hop_chain_from_manifest.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/execute_single_hop.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/load_status.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/load_version_vars.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/post_validation.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/powerscale_backup_folder.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/powerscale_prepare_upgrade.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/preflight_checks_pulp.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/preflight_checks_storage.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/prep_merge_configs.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/prep_phase.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/prep_phase_single_hop.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/prep_sync_all_repos.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/release_lock.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_addon_validation.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_calico_upgrade.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_crio_install.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_drain.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_etcd_health_check.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_helm_upgrade.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_kubeadm_install.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_kubelet_install.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_kubelet_restart.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_metallb_upgrade.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_uncordon.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_upgrade_apply.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_upgrade_node.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/step_validate_node.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/sync_local_repo.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/update_addon_step.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/update_kcm_arguments.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/update_kubelet_config.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/update_kubelet_feature_gates.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/update_node_status.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/update_node_step.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/update_status.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/upgrade_addons.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/upgrade_cp_node.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/upgrade_powerscale.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/upgrade_worker.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/upgrade_worker_node.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/upgrade_workers_batch_inner.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/validate_cluster_nodes.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/validate_worker_ready.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/tasks/verify_images.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/templates/upgrade_repo.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_k8s/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_oim/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_oim/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/backup_openchami.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/migrate_database.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/post_upgrade_health_check.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/pre_upgrade_health_check.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/reload_cloud_init_data.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/renew_certificates.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/resolve_admin_ip.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/retrieve_postgres_credentials.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/upgrade_openchami_containers.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/tasks/upgrade_status.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_openchami/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_slurm/tasks/check_slurm_cluster.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_slurm/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_slurm/tasks/nfs_client.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_slurm/tasks/slurm_backup.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_slurm/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/apply_victoria_crs.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/backup_telemetry.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/backup_victoria.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/detect_victoria_state.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/detect_victoria_upgrade_needed.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/execute_telemetry_sh.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/include_required_input.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/migrate_statefulset.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/migrate_vmsingle_to_vmcluster.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/patch_idrac_termination_grace_period.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/relabel_pvc.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/upgrade_operator.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/verify_victoria.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/tasks/victoria_metrics_upgrade.yml (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/templates/find_ip_conflict_svcs.sh.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/templates/inject_vm_lb_ips.py.j2 (100%) rename {upgrade => src/playbooks/upgrade}/roles/upgrade_telemetry/vars/main.yml (100%) rename {upgrade => src/playbooks/upgrade}/upgrade.yml (100%) rename {utils => src/playbooks/utils}/ansible.cfg (77%) rename {utils => src/playbooks/utils}/create_container_group.yml (100%) rename {input_validation => src/playbooks/utils/credential_utility}/ansible.cfg (67%) rename {utils => src/playbooks/utils}/credential_utility/get_config_credentials.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/create_config/tasks/create_credential_file.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/create_config/tasks/main.yml (92%) rename {utils => src/playbooks/utils}/credential_utility/roles/create_config/templates/build_stream_credential.j2 (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/create_config/templates/omnia_credential.j2 (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/create_config/vars/main.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/credential_status.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/fetch_conditional_mandatory_credentials.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/fetch_credentials.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/fetch_mandatory_credentials.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/fetch_optional_credentials.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/main.yml (89%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/prompt_credentials.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/prompt_password.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/prompt_username.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/update_bs_credential_file.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/tasks/update_credentials.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/update_config/vars/main.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/validation/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/validation/tasks/pre_requisite.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/validation/tasks/validate_cred_file.yml (100%) rename {utils => src/playbooks/utils}/credential_utility/roles/validation/vars/main.yml (100%) rename {utils => src/playbooks/utils}/delete_migrated_pulp_rpm_repos.yml (100%) rename {utils => src/playbooks/utils}/external_kafka_connect_details.yml (100%) rename {utils => src/playbooks/utils}/external_victoria_connect_details.yml (100%) rename {utils => src/playbooks/utils}/generate_functional_groups.yml (100%) rename {utils => src/playbooks/utils}/include_input_dir.yml (100%) rename {utils => src/playbooks/utils}/oim_cleanup.yml (100%) rename {utils => src/playbooks/utils}/roles/common/tasks/include_omnia_config.yml (100%) rename {utils => src/playbooks/utils}/roles/common/tasks/include_omnia_config_credentials.yml (100%) rename {utils => src/playbooks/utils}/roles/common/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/common/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/create_container_group/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/create_container_group/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/external_kafka_connect_details/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/external_kafka_connect_details/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/external_victoria_connect_details/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/external_victoria_connect_details/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/generate_functional_groups/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/generate_functional_groups/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/idrac_pxe_boot/tasks/generate_bmc_inventory.yml (100%) rename {utils => src/playbooks/utils}/roles/idrac_pxe_boot/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/idrac_pxe_boot/tasks/pre_checks.yml (100%) rename {utils => src/playbooks/utils}/roles/idrac_pxe_boot/templates/bmc_inventory.j2 (100%) rename {utils => src/playbooks/utils}/roles/idrac_pxe_boot/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/include_input_dir/tasks/main.yml (90%) rename {utils => src/playbooks/utils}/roles/include_input_dir/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_auth.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_automation.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_build_stream.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_common.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_note.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_omnia_postgres.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_openchami.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_pulp.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_slurm.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/oim_container_cleanup/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/omnia_credential_cleanup/tasks/cleanup_credentials.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/omnia_credential_cleanup/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/omnia_credential_cleanup/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/pre_requisite/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/pre_requisite/tasks/pre_requisite.yml (100%) rename {utils => src/playbooks/utils}/roles/oim_cleanup/pre_requisite/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/pxe_buildstream_manager/tasks/cloudinit_phone_home.yml (100%) rename {utils => src/playbooks/utils}/roles/pxe_buildstream_manager/tasks/compute_effective_inventory.yml (100%) rename {utils => src/playbooks/utils}/roles/pxe_buildstream_manager/tasks/gitlab_host.yml (100%) rename {utils => src/playbooks/utils}/roles/pxe_buildstream_manager/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/pxe_buildstream_manager/tasks/update_restart_state.yml (100%) rename {utils => src/playbooks/utils}/roles/pxe_buildstream_manager/tasks/upload_to_gitlab.yml (100%) rename {utils => src/playbooks/utils}/roles/pxe_buildstream_manager/tasks/write_node_results.yml (100%) rename {utils => src/playbooks/utils}/roles/pxe_buildstream_manager/vars/main.yml (100%) rename {utils => src/playbooks/utils}/roles/slurm_cleanup/defaults/main.yml (100%) rename {utils => src/playbooks/utils}/roles/slurm_cleanup/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/slurm_config_backup/defaults/main.yml (100%) rename {utils => src/playbooks/utils}/roles/slurm_config_backup/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/slurm_config_rollback/defaults/main.yml (100%) rename {utils => src/playbooks/utils}/roles/slurm_config_rollback/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/update_cloud_init_bss/tasks/main.yml (100%) rename {utils => src/playbooks/utils}/roles/update_cloud_init_bss/tasks/update_bss.yml (100%) rename {utils => src/playbooks/utils}/roles/update_cloud_init_bss/tasks/update_ci_common.yml (100%) rename {utils => src/playbooks/utils}/roles/update_cloud_init_bss/tasks/update_ci_defaults.yml (100%) rename {utils => src/playbooks/utils}/roles/update_cloud_init_bss/tasks/update_cloud_init.yml (100%) rename {utils => src/playbooks/utils}/roles/update_cloud_init_bss/tasks/update_hostname.yml (100%) rename {utils => src/playbooks/utils}/roles/update_cloud_init_bss/vars/main.yml (100%) rename {utils => src/playbooks/utils}/set_pxe_boot.yml (100%) rename {utils => src/playbooks/utils}/slurm_config_util.yml (100%) rename {utils => src/playbooks/utils}/update_cloud_init_bss.yml (97%) rename {utils => src/playbooks/utils}/upgrade_checkup.yml (100%) diff --git a/ansible.cfg b/ansible.cfg index fd49f43315..88d2484337 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -10,9 +10,9 @@ display_skipped_hosts = false deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = common/callback_plugins -library = common/library/modules -module_utils = common/library/module_utils +callback_plugins = src/common/callback_plugins +library = src/common/library/modules +module_utils = src/common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/common/callback_plugins/omnia_default.py b/src/common/callback_plugins/omnia_default.py similarity index 100% rename from common/callback_plugins/omnia_default.py rename to src/common/callback_plugins/omnia_default.py diff --git a/common/library/module_utils/build_image/__init__.py b/src/common/library/module_utils/build_image/__init__.py similarity index 100% rename from common/library/module_utils/build_image/__init__.py rename to src/common/library/module_utils/build_image/__init__.py diff --git a/common/library/module_utils/build_image/common_functions.py b/src/common/library/module_utils/build_image/common_functions.py similarity index 100% rename from common/library/module_utils/build_image/common_functions.py rename to src/common/library/module_utils/build_image/common_functions.py diff --git a/common/library/module_utils/build_image/config.py b/src/common/library/module_utils/build_image/config.py similarity index 100% rename from common/library/module_utils/build_image/config.py rename to src/common/library/module_utils/build_image/config.py diff --git a/common/library/module_utils/discovery/__init__.py b/src/common/library/module_utils/discovery/__init__.py similarity index 100% rename from common/library/module_utils/discovery/__init__.py rename to src/common/library/module_utils/discovery/__init__.py diff --git a/common/library/module_utils/discovery/standard_functions.py b/src/common/library/module_utils/discovery/standard_functions.py similarity index 100% rename from common/library/module_utils/discovery/standard_functions.py rename to src/common/library/module_utils/discovery/standard_functions.py diff --git a/common/library/module_utils/input_validation/__init__.py b/src/common/library/module_utils/input_validation/__init__.py similarity index 100% rename from common/library/module_utils/input_validation/__init__.py rename to src/common/library/module_utils/input_validation/__init__.py diff --git a/common/library/module_utils/input_validation/common_utils/__init__.py b/src/common/library/module_utils/input_validation/common_utils/__init__.py similarity index 100% rename from common/library/module_utils/input_validation/common_utils/__init__.py rename to src/common/library/module_utils/input_validation/common_utils/__init__.py diff --git a/common/library/module_utils/input_validation/common_utils/config.py b/src/common/library/module_utils/input_validation/common_utils/config.py similarity index 100% rename from common/library/module_utils/input_validation/common_utils/config.py rename to src/common/library/module_utils/input_validation/common_utils/config.py diff --git a/common/library/module_utils/input_validation/common_utils/data_fetch.py b/src/common/library/module_utils/input_validation/common_utils/data_fetch.py similarity index 100% rename from common/library/module_utils/input_validation/common_utils/data_fetch.py rename to src/common/library/module_utils/input_validation/common_utils/data_fetch.py diff --git a/common/library/module_utils/input_validation/common_utils/data_validation.py b/src/common/library/module_utils/input_validation/common_utils/data_validation.py similarity index 100% rename from common/library/module_utils/input_validation/common_utils/data_validation.py rename to src/common/library/module_utils/input_validation/common_utils/data_validation.py diff --git a/common/library/module_utils/input_validation/common_utils/data_verification.py b/src/common/library/module_utils/input_validation/common_utils/data_verification.py similarity index 100% rename from common/library/module_utils/input_validation/common_utils/data_verification.py rename to src/common/library/module_utils/input_validation/common_utils/data_verification.py diff --git a/common/library/module_utils/input_validation/common_utils/en_us_validation_msg.py b/src/common/library/module_utils/input_validation/common_utils/en_us_validation_msg.py similarity index 100% rename from common/library/module_utils/input_validation/common_utils/en_us_validation_msg.py rename to src/common/library/module_utils/input_validation/common_utils/en_us_validation_msg.py diff --git a/common/library/module_utils/input_validation/common_utils/logical_validation.py b/src/common/library/module_utils/input_validation/common_utils/logical_validation.py similarity index 100% rename from common/library/module_utils/input_validation/common_utils/logical_validation.py rename to src/common/library/module_utils/input_validation/common_utils/logical_validation.py diff --git a/common/library/module_utils/input_validation/common_utils/slurm_conf_utils.py b/src/common/library/module_utils/input_validation/common_utils/slurm_conf_utils.py similarity index 100% rename from common/library/module_utils/input_validation/common_utils/slurm_conf_utils.py rename to src/common/library/module_utils/input_validation/common_utils/slurm_conf_utils.py diff --git a/common/library/module_utils/input_validation/common_utils/timezone.txt b/src/common/library/module_utils/input_validation/common_utils/timezone.txt similarity index 100% rename from common/library/module_utils/input_validation/common_utils/timezone.txt rename to src/common/library/module_utils/input_validation/common_utils/timezone.txt diff --git a/common/library/module_utils/input_validation/common_utils/validation_utils.py b/src/common/library/module_utils/input_validation/common_utils/validation_utils.py similarity index 100% rename from common/library/module_utils/input_validation/common_utils/validation_utils.py rename to src/common/library/module_utils/input_validation/common_utils/validation_utils.py diff --git a/common/library/module_utils/input_validation/schema/__init__.py b/src/common/library/module_utils/input_validation/schema/__init__.py similarity index 100% rename from common/library/module_utils/input_validation/schema/__init__.py rename to src/common/library/module_utils/input_validation/schema/__init__.py diff --git a/common/library/module_utils/input_validation/schema/additional_software.json b/src/common/library/module_utils/input_validation/schema/additional_software.json similarity index 100% rename from common/library/module_utils/input_validation/schema/additional_software.json rename to src/common/library/module_utils/input_validation/schema/additional_software.json diff --git a/common/library/module_utils/input_validation/schema/build_stream_config.json b/src/common/library/module_utils/input_validation/schema/build_stream_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/build_stream_config.json rename to src/common/library/module_utils/input_validation/schema/build_stream_config.json diff --git a/common/library/module_utils/input_validation/schema/credential_rules.json b/src/common/library/module_utils/input_validation/schema/credential_rules.json similarity index 100% rename from common/library/module_utils/input_validation/schema/credential_rules.json rename to src/common/library/module_utils/input_validation/schema/credential_rules.json diff --git a/common/library/module_utils/input_validation/schema/discovery_config.json b/src/common/library/module_utils/input_validation/schema/discovery_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/discovery_config.json rename to src/common/library/module_utils/input_validation/schema/discovery_config.json diff --git a/common/library/module_utils/input_validation/schema/functional_groups_config.json b/src/common/library/module_utils/input_validation/schema/functional_groups_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/functional_groups_config.json rename to src/common/library/module_utils/input_validation/schema/functional_groups_config.json diff --git a/common/library/module_utils/input_validation/schema/gitlab_config.json b/src/common/library/module_utils/input_validation/schema/gitlab_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/gitlab_config.json rename to src/common/library/module_utils/input_validation/schema/gitlab_config.json diff --git a/common/library/module_utils/input_validation/schema/high_availability_config.json b/src/common/library/module_utils/input_validation/schema/high_availability_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/high_availability_config.json rename to src/common/library/module_utils/input_validation/schema/high_availability_config.json diff --git a/common/library/module_utils/input_validation/schema/k8s_scheduler.json b/src/common/library/module_utils/input_validation/schema/k8s_scheduler.json similarity index 100% rename from common/library/module_utils/input_validation/schema/k8s_scheduler.json rename to src/common/library/module_utils/input_validation/schema/k8s_scheduler.json diff --git a/common/library/module_utils/input_validation/schema/local_repo_config.json b/src/common/library/module_utils/input_validation/schema/local_repo_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/local_repo_config.json rename to src/common/library/module_utils/input_validation/schema/local_repo_config.json diff --git a/common/library/module_utils/input_validation/schema/network_spec.json b/src/common/library/module_utils/input_validation/schema/network_spec.json similarity index 100% rename from common/library/module_utils/input_validation/schema/network_spec.json rename to src/common/library/module_utils/input_validation/schema/network_spec.json diff --git a/common/library/module_utils/input_validation/schema/omnia_config.json b/src/common/library/module_utils/input_validation/schema/omnia_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/omnia_config.json rename to src/common/library/module_utils/input_validation/schema/omnia_config.json diff --git a/common/library/module_utils/input_validation/schema/provision_config.json b/src/common/library/module_utils/input_validation/schema/provision_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/provision_config.json rename to src/common/library/module_utils/input_validation/schema/provision_config.json diff --git a/common/library/module_utils/input_validation/schema/security_config.json b/src/common/library/module_utils/input_validation/schema/security_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/security_config.json rename to src/common/library/module_utils/input_validation/schema/security_config.json diff --git a/common/library/module_utils/input_validation/schema/slurm_config_parameters.json b/src/common/library/module_utils/input_validation/schema/slurm_config_parameters.json similarity index 100% rename from common/library/module_utils/input_validation/schema/slurm_config_parameters.json rename to src/common/library/module_utils/input_validation/schema/slurm_config_parameters.json diff --git a/common/library/module_utils/input_validation/schema/software_config.json b/src/common/library/module_utils/input_validation/schema/software_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/software_config.json rename to src/common/library/module_utils/input_validation/schema/software_config.json diff --git a/common/library/module_utils/input_validation/schema/storage_config.json b/src/common/library/module_utils/input_validation/schema/storage_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/storage_config.json rename to src/common/library/module_utils/input_validation/schema/storage_config.json diff --git a/common/library/module_utils/input_validation/schema/telemetry_config.json b/src/common/library/module_utils/input_validation/schema/telemetry_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/telemetry_config.json rename to src/common/library/module_utils/input_validation/schema/telemetry_config.json diff --git a/common/library/module_utils/input_validation/schema/telemetry_storage_config.json b/src/common/library/module_utils/input_validation/schema/telemetry_storage_config.json similarity index 100% rename from common/library/module_utils/input_validation/schema/telemetry_storage_config.json rename to src/common/library/module_utils/input_validation/schema/telemetry_storage_config.json diff --git a/common/library/module_utils/input_validation/validation_flows/__init__.py b/src/common/library/module_utils/input_validation/validation_flows/__init__.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/__init__.py rename to src/common/library/module_utils/input_validation/validation_flows/__init__.py diff --git a/common/library/module_utils/input_validation/validation_flows/build_stream_validation.py b/src/common/library/module_utils/input_validation/validation_flows/build_stream_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/build_stream_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/build_stream_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/common_validation.py b/src/common/library/module_utils/input_validation/validation_flows/common_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/common_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/common_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/csi_driver_validation.py b/src/common/library/module_utils/input_validation/validation_flows/csi_driver_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/csi_driver_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/csi_driver_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/gitlab_validation.py b/src/common/library/module_utils/input_validation/validation_flows/gitlab_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/gitlab_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/gitlab_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/high_availability_validation.py b/src/common/library/module_utils/input_validation/validation_flows/high_availability_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/high_availability_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/high_availability_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/local_repo_validation.py b/src/common/library/module_utils/input_validation/validation_flows/local_repo_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/local_repo_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/local_repo_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/powerscale_telemetry_validation.py b/src/common/library/module_utils/input_validation/validation_flows/powerscale_telemetry_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/powerscale_telemetry_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/powerscale_telemetry_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/provision_validation.py b/src/common/library/module_utils/input_validation/validation_flows/provision_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/provision_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/provision_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/scheduler_validation.py b/src/common/library/module_utils/input_validation/validation_flows/scheduler_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/scheduler_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/scheduler_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/telemetry_validation.py b/src/common/library/module_utils/input_validation/validation_flows/telemetry_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/telemetry_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/telemetry_validation.py diff --git a/common/library/module_utils/input_validation/validation_flows/vip_pxe_validation.py b/src/common/library/module_utils/input_validation/validation_flows/vip_pxe_validation.py similarity index 100% rename from common/library/module_utils/input_validation/validation_flows/vip_pxe_validation.py rename to src/common/library/module_utils/input_validation/validation_flows/vip_pxe_validation.py diff --git a/common/library/module_utils/local_repo/__init__.py b/src/common/library/module_utils/local_repo/__init__.py similarity index 100% rename from common/library/module_utils/local_repo/__init__.py rename to src/common/library/module_utils/local_repo/__init__.py diff --git a/common/library/module_utils/local_repo/common_functions.py b/src/common/library/module_utils/local_repo/common_functions.py similarity index 100% rename from common/library/module_utils/local_repo/common_functions.py rename to src/common/library/module_utils/local_repo/common_functions.py diff --git a/common/library/module_utils/local_repo/config.py b/src/common/library/module_utils/local_repo/config.py similarity index 100% rename from common/library/module_utils/local_repo/config.py rename to src/common/library/module_utils/local_repo/config.py diff --git a/common/library/module_utils/local_repo/container_repo_utils.py b/src/common/library/module_utils/local_repo/container_repo_utils.py similarity index 100% rename from common/library/module_utils/local_repo/container_repo_utils.py rename to src/common/library/module_utils/local_repo/container_repo_utils.py diff --git a/common/library/module_utils/local_repo/download_common.py b/src/common/library/module_utils/local_repo/download_common.py similarity index 100% rename from common/library/module_utils/local_repo/download_common.py rename to src/common/library/module_utils/local_repo/download_common.py diff --git a/common/library/module_utils/local_repo/download_image.py b/src/common/library/module_utils/local_repo/download_image.py similarity index 100% rename from common/library/module_utils/local_repo/download_image.py rename to src/common/library/module_utils/local_repo/download_image.py diff --git a/common/library/module_utils/local_repo/download_rpm.py b/src/common/library/module_utils/local_repo/download_rpm.py similarity index 100% rename from common/library/module_utils/local_repo/download_rpm.py rename to src/common/library/module_utils/local_repo/download_rpm.py diff --git a/common/library/module_utils/local_repo/parse_and_download.py b/src/common/library/module_utils/local_repo/parse_and_download.py similarity index 100% rename from common/library/module_utils/local_repo/parse_and_download.py rename to src/common/library/module_utils/local_repo/parse_and_download.py diff --git a/common/library/module_utils/local_repo/process_metadata.py b/src/common/library/module_utils/local_repo/process_metadata.py similarity index 100% rename from common/library/module_utils/local_repo/process_metadata.py rename to src/common/library/module_utils/local_repo/process_metadata.py diff --git a/common/library/module_utils/local_repo/process_parallel.py b/src/common/library/module_utils/local_repo/process_parallel.py similarity index 100% rename from common/library/module_utils/local_repo/process_parallel.py rename to src/common/library/module_utils/local_repo/process_parallel.py diff --git a/common/library/module_utils/local_repo/registry_utils.py b/src/common/library/module_utils/local_repo/registry_utils.py similarity index 100% rename from common/library/module_utils/local_repo/registry_utils.py rename to src/common/library/module_utils/local_repo/registry_utils.py diff --git a/common/library/module_utils/local_repo/rest_client.py b/src/common/library/module_utils/local_repo/rest_client.py similarity index 100% rename from common/library/module_utils/local_repo/rest_client.py rename to src/common/library/module_utils/local_repo/rest_client.py diff --git a/common/library/module_utils/local_repo/software_utils.py b/src/common/library/module_utils/local_repo/software_utils.py similarity index 100% rename from common/library/module_utils/local_repo/software_utils.py rename to src/common/library/module_utils/local_repo/software_utils.py diff --git a/common/library/module_utils/local_repo/standard_logger.py b/src/common/library/module_utils/local_repo/standard_logger.py similarity index 100% rename from common/library/module_utils/local_repo/standard_logger.py rename to src/common/library/module_utils/local_repo/standard_logger.py diff --git a/common/library/module_utils/local_repo/user_image_utility.py b/src/common/library/module_utils/local_repo/user_image_utility.py similarity index 100% rename from common/library/module_utils/local_repo/user_image_utility.py rename to src/common/library/module_utils/local_repo/user_image_utility.py diff --git a/common/library/module_utils/local_repo/validate_utils.py b/src/common/library/module_utils/local_repo/validate_utils.py similarity index 100% rename from common/library/module_utils/local_repo/validate_utils.py rename to src/common/library/module_utils/local_repo/validate_utils.py diff --git a/common/library/module_utils/upgrade/__init__.py b/src/common/library/module_utils/upgrade/__init__.py similarity index 100% rename from common/library/module_utils/upgrade/__init__.py rename to src/common/library/module_utils/upgrade/__init__.py diff --git a/common/library/module_utils/upgrade/upgrade_hop_calculator_lib.py b/src/common/library/module_utils/upgrade/upgrade_hop_calculator_lib.py similarity index 100% rename from common/library/module_utils/upgrade/upgrade_hop_calculator_lib.py rename to src/common/library/module_utils/upgrade/upgrade_hop_calculator_lib.py diff --git a/common/library/modules/additional_images_collector.py b/src/common/library/modules/additional_images_collector.py similarity index 100% rename from common/library/modules/additional_images_collector.py rename to src/common/library/modules/additional_images_collector.py diff --git a/common/library/modules/base_image_package_collector.py b/src/common/library/modules/base_image_package_collector.py similarity index 100% rename from common/library/modules/base_image_package_collector.py rename to src/common/library/modules/base_image_package_collector.py diff --git a/common/library/modules/calculate_upgrade_hops.py b/src/common/library/modules/calculate_upgrade_hops.py similarity index 100% rename from common/library/modules/calculate_upgrade_hops.py rename to src/common/library/modules/calculate_upgrade_hops.py diff --git a/common/library/modules/cert_vault_handler.py b/src/common/library/modules/cert_vault_handler.py similarity index 100% rename from common/library/modules/cert_vault_handler.py rename to src/common/library/modules/cert_vault_handler.py diff --git a/common/library/modules/check_user_registry.py b/src/common/library/modules/check_user_registry.py similarity index 100% rename from common/library/modules/check_user_registry.py rename to src/common/library/modules/check_user_registry.py diff --git a/common/library/modules/create_upgrade_staging.py b/src/common/library/modules/create_upgrade_staging.py similarity index 100% rename from common/library/modules/create_upgrade_staging.py rename to src/common/library/modules/create_upgrade_staging.py diff --git a/common/library/modules/delete_idracips_from_mysqldb.py b/src/common/library/modules/delete_idracips_from_mysqldb.py similarity index 100% rename from common/library/modules/delete_idracips_from_mysqldb.py rename to src/common/library/modules/delete_idracips_from_mysqldb.py diff --git a/common/library/modules/disable_idrac_telemetry.py b/src/common/library/modules/disable_idrac_telemetry.py similarity index 100% rename from common/library/modules/disable_idrac_telemetry.py rename to src/common/library/modules/disable_idrac_telemetry.py diff --git a/common/library/modules/enable_telemetry_service.py b/src/common/library/modules/enable_telemetry_service.py similarity index 100% rename from common/library/modules/enable_telemetry_service.py rename to src/common/library/modules/enable_telemetry_service.py diff --git a/common/library/modules/fetch_credential_rule.py b/src/common/library/modules/fetch_credential_rule.py similarity index 100% rename from common/library/modules/fetch_credential_rule.py rename to src/common/library/modules/fetch_credential_rule.py diff --git a/common/library/modules/fetch_idrac_ips.py b/src/common/library/modules/fetch_idrac_ips.py similarity index 100% rename from common/library/modules/fetch_idrac_ips.py rename to src/common/library/modules/fetch_idrac_ips.py diff --git a/common/library/modules/fetch_mapping_details.py b/src/common/library/modules/fetch_mapping_details.py similarity index 100% rename from common/library/modules/fetch_mapping_details.py rename to src/common/library/modules/fetch_mapping_details.py diff --git a/common/library/modules/fetch_roles_config.py b/src/common/library/modules/fetch_roles_config.py similarity index 100% rename from common/library/modules/fetch_roles_config.py rename to src/common/library/modules/fetch_roles_config.py diff --git a/common/library/modules/fetch_software_arch.py b/src/common/library/modules/fetch_software_arch.py similarity index 100% rename from common/library/modules/fetch_software_arch.py rename to src/common/library/modules/fetch_software_arch.py diff --git a/common/library/modules/fetch_telemetry_status.py b/src/common/library/modules/fetch_telemetry_status.py similarity index 100% rename from common/library/modules/fetch_telemetry_status.py rename to src/common/library/modules/fetch_telemetry_status.py diff --git a/common/library/modules/functional_group_parser.py b/src/common/library/modules/functional_group_parser.py similarity index 100% rename from common/library/modules/functional_group_parser.py rename to src/common/library/modules/functional_group_parser.py diff --git a/common/library/modules/generate_argon2_password.py b/src/common/library/modules/generate_argon2_password.py similarity index 100% rename from common/library/modules/generate_argon2_password.py rename to src/common/library/modules/generate_argon2_password.py diff --git a/common/library/modules/generate_discovery_report.py b/src/common/library/modules/generate_discovery_report.py similarity index 100% rename from common/library/modules/generate_discovery_report.py rename to src/common/library/modules/generate_discovery_report.py diff --git a/common/library/modules/generate_functional_groups.py b/src/common/library/modules/generate_functional_groups.py similarity index 100% rename from common/library/modules/generate_functional_groups.py rename to src/common/library/modules/generate_functional_groups.py diff --git a/common/library/modules/generate_pxe_mapping.py b/src/common/library/modules/generate_pxe_mapping.py similarity index 100% rename from common/library/modules/generate_pxe_mapping.py rename to src/common/library/modules/generate_pxe_mapping.py diff --git a/common/library/modules/generate_ssha_password.py b/src/common/library/modules/generate_ssha_password.py similarity index 100% rename from common/library/modules/generate_ssha_password.py rename to src/common/library/modules/generate_ssha_password.py diff --git a/common/library/modules/generate_xname_in_mapping_file.py b/src/common/library/modules/generate_xname_in_mapping_file.py similarity index 100% rename from common/library/modules/generate_xname_in_mapping_file.py rename to src/common/library/modules/generate_xname_in_mapping_file.py diff --git a/common/library/modules/get_service_cluster_info.py b/src/common/library/modules/get_service_cluster_info.py similarity index 100% rename from common/library/modules/get_service_cluster_info.py rename to src/common/library/modules/get_service_cluster_info.py diff --git a/common/library/modules/group_package_map.py b/src/common/library/modules/group_package_map.py similarity index 100% rename from common/library/modules/group_package_map.py rename to src/common/library/modules/group_package_map.py diff --git a/common/library/modules/idrac_telemetry_filter.py b/src/common/library/modules/idrac_telemetry_filter.py similarity index 100% rename from common/library/modules/idrac_telemetry_filter.py rename to src/common/library/modules/idrac_telemetry_filter.py diff --git a/common/library/modules/image_package_collector.py b/src/common/library/modules/image_package_collector.py similarity index 100% rename from common/library/modules/image_package_collector.py rename to src/common/library/modules/image_package_collector.py diff --git a/common/library/modules/insert_idracips_mysqldb.py b/src/common/library/modules/insert_idracips_mysqldb.py similarity index 100% rename from common/library/modules/insert_idracips_mysqldb.py rename to src/common/library/modules/insert_idracips_mysqldb.py diff --git a/common/library/modules/k8s_upgrade_status.py b/src/common/library/modules/k8s_upgrade_status.py similarity index 100% rename from common/library/modules/k8s_upgrade_status.py rename to src/common/library/modules/k8s_upgrade_status.py diff --git a/common/library/modules/localrepo_metadata_manager.py b/src/common/library/modules/localrepo_metadata_manager.py similarity index 100% rename from common/library/modules/localrepo_metadata_manager.py rename to src/common/library/modules/localrepo_metadata_manager.py diff --git a/common/library/modules/ome_server_inventory.py b/src/common/library/modules/ome_server_inventory.py similarity index 100% rename from common/library/modules/ome_server_inventory.py rename to src/common/library/modules/ome_server_inventory.py diff --git a/common/library/modules/parallel_file_copy.py b/src/common/library/modules/parallel_file_copy.py similarity index 100% rename from common/library/modules/parallel_file_copy.py rename to src/common/library/modules/parallel_file_copy.py diff --git a/common/library/modules/parallel_tasks.py b/src/common/library/modules/parallel_tasks.py similarity index 100% rename from common/library/modules/parallel_tasks.py rename to src/common/library/modules/parallel_tasks.py diff --git a/common/library/modules/prepare_tasklist.py b/src/common/library/modules/prepare_tasklist.py similarity index 100% rename from common/library/modules/prepare_tasklist.py rename to src/common/library/modules/prepare_tasklist.py diff --git a/common/library/modules/process_rpm_config.py b/src/common/library/modules/process_rpm_config.py similarity index 100% rename from common/library/modules/process_rpm_config.py rename to src/common/library/modules/process_rpm_config.py diff --git a/common/library/modules/pulp_cleanup.py b/src/common/library/modules/pulp_cleanup.py similarity index 100% rename from common/library/modules/pulp_cleanup.py rename to src/common/library/modules/pulp_cleanup.py diff --git a/common/library/modules/pulp_repo_name_migration.py b/src/common/library/modules/pulp_repo_name_migration.py similarity index 100% rename from common/library/modules/pulp_repo_name_migration.py rename to src/common/library/modules/pulp_repo_name_migration.py diff --git a/common/library/modules/read_idracips_from_mysqldb.py b/src/common/library/modules/read_idracips_from_mysqldb.py similarity index 100% rename from common/library/modules/read_idracips_from_mysqldb.py rename to src/common/library/modules/read_idracips_from_mysqldb.py diff --git a/common/library/modules/slurm_conf.py b/src/common/library/modules/slurm_conf.py similarity index 100% rename from common/library/modules/slurm_conf.py rename to src/common/library/modules/slurm_conf.py diff --git a/common/library/modules/tests/__init__.py b/src/common/library/modules/tests/__init__.py similarity index 100% rename from common/library/modules/tests/__init__.py rename to src/common/library/modules/tests/__init__.py diff --git a/common/library/modules/tests/test_additional_subnets_validation.py b/src/common/library/modules/tests/test_additional_subnets_validation.py similarity index 100% rename from common/library/modules/tests/test_additional_subnets_validation.py rename to src/common/library/modules/tests/test_additional_subnets_validation.py diff --git a/common/library/modules/tests/test_generate_discovery_report.py b/src/common/library/modules/tests/test_generate_discovery_report.py similarity index 100% rename from common/library/modules/tests/test_generate_discovery_report.py rename to src/common/library/modules/tests/test_generate_discovery_report.py diff --git a/common/library/modules/tests/test_ib_nic_fallback.py b/src/common/library/modules/tests/test_ib_nic_fallback.py similarity index 100% rename from common/library/modules/tests/test_ib_nic_fallback.py rename to src/common/library/modules/tests/test_ib_nic_fallback.py diff --git a/common/library/modules/tests/test_ome_pagination.py b/src/common/library/modules/tests/test_ome_pagination.py similarity index 100% rename from common/library/modules/tests/test_ome_pagination.py rename to src/common/library/modules/tests/test_ome_pagination.py diff --git a/common/library/modules/update_bmc_group_entry.py b/src/common/library/modules/update_bmc_group_entry.py similarity index 100% rename from common/library/modules/update_bmc_group_entry.py rename to src/common/library/modules/update_bmc_group_entry.py diff --git a/common/library/modules/update_component_json_repos.py b/src/common/library/modules/update_component_json_repos.py similarity index 100% rename from common/library/modules/update_component_json_repos.py rename to src/common/library/modules/update_component_json_repos.py diff --git a/common/library/modules/update_software_config.py b/src/common/library/modules/update_software_config.py similarity index 100% rename from common/library/modules/update_software_config.py rename to src/common/library/modules/update_software_config.py diff --git a/common/library/modules/validate_bmc_group_data.py b/src/common/library/modules/validate_bmc_group_data.py similarity index 100% rename from common/library/modules/validate_bmc_group_data.py rename to src/common/library/modules/validate_bmc_group_data.py diff --git a/common/library/modules/validate_credentials.py b/src/common/library/modules/validate_credentials.py similarity index 100% rename from common/library/modules/validate_credentials.py rename to src/common/library/modules/validate_credentials.py diff --git a/common/library/modules/validate_input.py b/src/common/library/modules/validate_input.py similarity index 100% rename from common/library/modules/validate_input.py rename to src/common/library/modules/validate_input.py diff --git a/common/library/modules/validate_user_repo.py b/src/common/library/modules/validate_user_repo.py similarity index 100% rename from common/library/modules/validate_user_repo.py rename to src/common/library/modules/validate_user_repo.py diff --git a/common/tasks/common/check_kube_vip_reachability.yml b/src/common/tasks/common/check_kube_vip_reachability.yml similarity index 100% rename from common/tasks/common/check_kube_vip_reachability.yml rename to src/common/tasks/common/check_kube_vip_reachability.yml diff --git a/common/tasks/common/decrypt_include_encrypt.yml b/src/common/tasks/common/decrypt_include_encrypt.yml similarity index 97% rename from common/tasks/common/decrypt_include_encrypt.yml rename to src/common/tasks/common/decrypt_include_encrypt.yml index 57edd179d5..bb3bbb3055 100644 --- a/common/tasks/common/decrypt_include_encrypt.yml +++ b/src/common/tasks/common/decrypt_include_encrypt.yml @@ -18,7 +18,7 @@ - name: Load encrypt files variables ansible.builtin.include_vars: - file: "{{ role_path }}/../../../../common/vars/encrypt_files_vars.yml" + file: "{{ role_path }}/../../../../../common/vars/encrypt_files_vars.yml" - name: Validate required parameters ansible.builtin.fail: diff --git a/common/tasks/common/get_container_image_list.yml b/src/common/tasks/common/get_container_image_list.yml similarity index 100% rename from common/tasks/common/get_container_image_list.yml rename to src/common/tasks/common/get_container_image_list.yml diff --git a/common/tasks/common/load_ha_config.yml b/src/common/tasks/common/load_ha_config.yml similarity index 100% rename from common/tasks/common/load_ha_config.yml rename to src/common/tasks/common/load_ha_config.yml diff --git a/common/tasks/common/openchami_auth.yml b/src/common/tasks/common/openchami_auth.yml similarity index 100% rename from common/tasks/common/openchami_auth.yml rename to src/common/tasks/common/openchami_auth.yml diff --git a/common/tasks/common/validate_image_tars.yml b/src/common/tasks/common/validate_image_tars.yml similarity index 100% rename from common/tasks/common/validate_image_tars.yml rename to src/common/tasks/common/validate_image_tars.yml diff --git a/common/tasks/provision/main.yml b/src/common/tasks/provision/main.yml similarity index 100% rename from common/tasks/provision/main.yml rename to src/common/tasks/provision/main.yml diff --git a/common/tasks/scheduler/main.yml b/src/common/tasks/scheduler/main.yml similarity index 100% rename from common/tasks/scheduler/main.yml rename to src/common/tasks/scheduler/main.yml diff --git a/common/tasks/telemetry/main.yml b/src/common/tasks/telemetry/main.yml similarity index 100% rename from common/tasks/telemetry/main.yml rename to src/common/tasks/telemetry/main.yml diff --git a/common/vars/common_messages.yml b/src/common/vars/common_messages.yml similarity index 100% rename from common/vars/common_messages.yml rename to src/common/vars/common_messages.yml diff --git a/common/vars/common_vars.yml b/src/common/vars/common_vars.yml similarity index 100% rename from common/vars/common_vars.yml rename to src/common/vars/common_vars.yml diff --git a/common/vars/encrypt_files_vars.yml b/src/common/vars/encrypt_files_vars.yml similarity index 100% rename from common/vars/encrypt_files_vars.yml rename to src/common/vars/encrypt_files_vars.yml diff --git a/common/vars/image_vars.yml b/src/common/vars/image_vars.yml similarity index 100% rename from common/vars/image_vars.yml rename to src/common/vars/image_vars.yml diff --git a/common/vars/openchami_image_cmd.yml b/src/common/vars/openchami_image_cmd.yml similarity index 100% rename from common/vars/openchami_image_cmd.yml rename to src/common/vars/openchami_image_cmd.yml diff --git a/common/vars/openchami_vars.yml b/src/common/vars/openchami_vars.yml similarity index 100% rename from common/vars/openchami_vars.yml rename to src/common/vars/openchami_vars.yml diff --git a/common/vars/provision_messages.yml b/src/common/vars/provision_messages.yml similarity index 100% rename from common/vars/provision_messages.yml rename to src/common/vars/provision_messages.yml diff --git a/common/vars/provision_vars.yml b/src/common/vars/provision_vars.yml similarity index 100% rename from common/vars/provision_vars.yml rename to src/common/vars/provision_vars.yml diff --git a/common/vars/scheduler_messages.yml b/src/common/vars/scheduler_messages.yml similarity index 100% rename from common/vars/scheduler_messages.yml rename to src/common/vars/scheduler_messages.yml diff --git a/common/vars/scheduler_vars.yml b/src/common/vars/scheduler_vars.yml similarity index 100% rename from common/vars/scheduler_vars.yml rename to src/common/vars/scheduler_vars.yml diff --git a/common/vars/telemetry_messages.yml b/src/common/vars/telemetry_messages.yml similarity index 100% rename from common/vars/telemetry_messages.yml rename to src/common/vars/telemetry_messages.yml diff --git a/common/vars/telemetry_vars.yml b/src/common/vars/telemetry_vars.yml similarity index 100% rename from common/vars/telemetry_vars.yml rename to src/common/vars/telemetry_vars.yml diff --git a/common/vars/upgrade_vars.yml b/src/common/vars/upgrade_vars.yml similarity index 100% rename from common/vars/upgrade_vars.yml rename to src/common/vars/upgrade_vars.yml diff --git a/build_image_aarch64/ansible.cfg b/src/playbooks/build_image_aarch64/ansible.cfg similarity index 78% rename from build_image_aarch64/ansible.cfg rename to src/playbooks/build_image_aarch64/ansible.cfg index 4e1714ecda..80584b6df3 100644 --- a/build_image_aarch64/ansible.cfg +++ b/src/playbooks/build_image_aarch64/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = ../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = ../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/build_image_aarch64/build_image_aarch64.yml b/src/playbooks/build_image_aarch64/build_image_aarch64.yml similarity index 98% rename from build_image_aarch64/build_image_aarch64.yml rename to src/playbooks/build_image_aarch64/build_image_aarch64.yml index 23e7800089..23554e4079 100644 --- a/build_image_aarch64/build_image_aarch64.yml +++ b/src/playbooks/build_image_aarch64/build_image_aarch64.yml @@ -121,7 +121,7 @@ connection: ssh tasks: - name: OpenCHAMI cluster authentication - ansible.builtin.include_tasks: "{{ playbook_dir }}/../common/tasks/common/openchami_auth.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/openchami_auth.yml" vars: oim_node_name: "{{ hostvars['localhost']['oim_node_name'] }}" diff --git a/build_image_aarch64/roles/fetch_packages/tasks/aarch64_build_image_completion.yml b/src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/aarch64_build_image_completion.yml similarity index 100% rename from build_image_aarch64/roles/fetch_packages/tasks/aarch64_build_image_completion.yml rename to src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/aarch64_build_image_completion.yml diff --git a/build_image_aarch64/roles/fetch_packages/tasks/build_stream_prerequisite.yml b/src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/build_stream_prerequisite.yml similarity index 100% rename from build_image_aarch64/roles/fetch_packages/tasks/build_stream_prerequisite.yml rename to src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/build_stream_prerequisite.yml diff --git a/build_image_aarch64/roles/fetch_packages/tasks/check_aarch64_fg.yml b/src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/check_aarch64_fg.yml similarity index 100% rename from build_image_aarch64/roles/fetch_packages/tasks/check_aarch64_fg.yml rename to src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/check_aarch64_fg.yml diff --git a/build_image_aarch64/roles/fetch_packages/tasks/fetch_packages.yml b/src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/fetch_packages.yml similarity index 100% rename from build_image_aarch64/roles/fetch_packages/tasks/fetch_packages.yml rename to src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/fetch_packages.yml diff --git a/build_image_aarch64/roles/fetch_packages/tasks/fetch_pulp_repos.yml b/src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/fetch_pulp_repos.yml similarity index 100% rename from build_image_aarch64/roles/fetch_packages/tasks/fetch_pulp_repos.yml rename to src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/fetch_pulp_repos.yml diff --git a/build_image_aarch64/roles/fetch_packages/tasks/main.yml b/src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/main.yml similarity index 100% rename from build_image_aarch64/roles/fetch_packages/tasks/main.yml rename to src/playbooks/build_image_aarch64/roles/fetch_packages/tasks/main.yml diff --git a/build_image_aarch64/roles/fetch_packages/vars/main.yml b/src/playbooks/build_image_aarch64/roles/fetch_packages/vars/main.yml similarity index 100% rename from build_image_aarch64/roles/fetch_packages/vars/main.yml rename to src/playbooks/build_image_aarch64/roles/fetch_packages/vars/main.yml diff --git a/build_image_aarch64/roles/image_creation/files/omnia-crun-bpf.te b/src/playbooks/build_image_aarch64/roles/image_creation/files/omnia-crun-bpf.te similarity index 100% rename from build_image_aarch64/roles/image_creation/files/omnia-crun-bpf.te rename to src/playbooks/build_image_aarch64/roles/image_creation/files/omnia-crun-bpf.te diff --git a/build_image_aarch64/roles/image_creation/tasks/build_base_image.yml b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_base_image.yml similarity index 100% rename from build_image_aarch64/roles/image_creation/tasks/build_base_image.yml rename to src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_base_image.yml diff --git a/build_image_aarch64/roles/image_creation/tasks/build_compute_image.yml b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_compute_image.yml similarity index 100% rename from build_image_aarch64/roles/image_creation/tasks/build_compute_image.yml rename to src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_compute_image.yml diff --git a/build_image_aarch64/roles/image_creation/tasks/build_image_common.yml b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_image_common.yml similarity index 100% rename from build_image_aarch64/roles/image_creation/tasks/build_image_common.yml rename to src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_image_common.yml diff --git a/build_image_aarch64/roles/image_creation/tasks/main.yml b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/main.yml similarity index 93% rename from build_image_aarch64/roles/image_creation/tasks/main.yml rename to src/playbooks/build_image_aarch64/roles/image_creation/tasks/main.yml index 5f34d92d82..4e567c0226 100644 --- a/build_image_aarch64/roles/image_creation/tasks/main.yml +++ b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/main.yml @@ -19,7 +19,7 @@ no_log: true - name: Include global variables from common folder - ansible.builtin.include_vars: "{{ role_path }}/../../../common/vars/openchami_image_cmd.yml" + ansible.builtin.include_vars: "{{ role_path }}/../../../../common/vars/openchami_image_cmd.yml" register: ochami_image_global_vars - name: Build image common tasks diff --git a/build_image_aarch64/roles/image_creation/tasks/preflight_selinux_check.yml b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/preflight_selinux_check.yml similarity index 100% rename from build_image_aarch64/roles/image_creation/tasks/preflight_selinux_check.yml rename to src/playbooks/build_image_aarch64/roles/image_creation/tasks/preflight_selinux_check.yml diff --git a/build_image_aarch64/roles/image_creation/tasks/set_s3_acl.yml b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/set_s3_acl.yml similarity index 100% rename from build_image_aarch64/roles/image_creation/tasks/set_s3_acl.yml rename to src/playbooks/build_image_aarch64/roles/image_creation/tasks/set_s3_acl.yml diff --git a/build_image_aarch64/roles/image_creation/templates/images/rhel-base-config.yaml.j2 b/src/playbooks/build_image_aarch64/roles/image_creation/templates/images/rhel-base-config.yaml.j2 similarity index 100% rename from build_image_aarch64/roles/image_creation/templates/images/rhel-base-config.yaml.j2 rename to src/playbooks/build_image_aarch64/roles/image_creation/templates/images/rhel-base-config.yaml.j2 diff --git a/build_image_aarch64/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 b/src/playbooks/build_image_aarch64/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 similarity index 100% rename from build_image_aarch64/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 rename to src/playbooks/build_image_aarch64/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 diff --git a/build_image_aarch64/roles/image_creation/vars/main.yml b/src/playbooks/build_image_aarch64/roles/image_creation/vars/main.yml similarity index 100% rename from build_image_aarch64/roles/image_creation/vars/main.yml rename to src/playbooks/build_image_aarch64/roles/image_creation/vars/main.yml diff --git a/build_image_aarch64/roles/prepare_arm_node/tasks/gather_oim_data.yml b/src/playbooks/build_image_aarch64/roles/prepare_arm_node/tasks/gather_oim_data.yml similarity index 100% rename from build_image_aarch64/roles/prepare_arm_node/tasks/gather_oim_data.yml rename to src/playbooks/build_image_aarch64/roles/prepare_arm_node/tasks/gather_oim_data.yml diff --git a/build_image_aarch64/roles/prepare_arm_node/tasks/main.yml b/src/playbooks/build_image_aarch64/roles/prepare_arm_node/tasks/main.yml similarity index 100% rename from build_image_aarch64/roles/prepare_arm_node/tasks/main.yml rename to src/playbooks/build_image_aarch64/roles/prepare_arm_node/tasks/main.yml diff --git a/build_image_aarch64/roles/prepare_arm_node/vars/main.yml b/src/playbooks/build_image_aarch64/roles/prepare_arm_node/vars/main.yml similarity index 100% rename from build_image_aarch64/roles/prepare_arm_node/vars/main.yml rename to src/playbooks/build_image_aarch64/roles/prepare_arm_node/vars/main.yml diff --git a/build_image_x86_64/ansible.cfg b/src/playbooks/build_image_x86_64/ansible.cfg similarity index 78% rename from build_image_x86_64/ansible.cfg rename to src/playbooks/build_image_x86_64/ansible.cfg index 6d2dc793de..87c1b7c228 100644 --- a/build_image_x86_64/ansible.cfg +++ b/src/playbooks/build_image_x86_64/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = ../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = ../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/build_image_x86_64/build_image_x86_64.yml b/src/playbooks/build_image_x86_64/build_image_x86_64.yml similarity index 98% rename from build_image_x86_64/build_image_x86_64.yml rename to src/playbooks/build_image_x86_64/build_image_x86_64.yml index 9cb7ac02d2..b103d104a8 100644 --- a/build_image_x86_64/build_image_x86_64.yml +++ b/src/playbooks/build_image_x86_64/build_image_x86_64.yml @@ -121,7 +121,7 @@ connection: ssh tasks: - name: OpenCHAMI cluster authentication - ansible.builtin.include_tasks: "{{ playbook_dir }}/../common/tasks/common/openchami_auth.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/openchami_auth.yml" vars: oim_node_name: "{{ hostvars['localhost']['oim_node_name'] }}" diff --git a/build_image_x86_64/roles/fetch_packages/tasks/build_stream_prerequisite.yml b/src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/build_stream_prerequisite.yml similarity index 100% rename from build_image_x86_64/roles/fetch_packages/tasks/build_stream_prerequisite.yml rename to src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/build_stream_prerequisite.yml diff --git a/build_image_x86_64/roles/fetch_packages/tasks/check_x86_64_fg.yml b/src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/check_x86_64_fg.yml similarity index 100% rename from build_image_x86_64/roles/fetch_packages/tasks/check_x86_64_fg.yml rename to src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/check_x86_64_fg.yml diff --git a/build_image_x86_64/roles/fetch_packages/tasks/fetch_packages.yml b/src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/fetch_packages.yml similarity index 100% rename from build_image_x86_64/roles/fetch_packages/tasks/fetch_packages.yml rename to src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/fetch_packages.yml diff --git a/build_image_x86_64/roles/fetch_packages/tasks/fetch_pulp_repos.yml b/src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/fetch_pulp_repos.yml similarity index 100% rename from build_image_x86_64/roles/fetch_packages/tasks/fetch_pulp_repos.yml rename to src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/fetch_pulp_repos.yml diff --git a/build_image_x86_64/roles/fetch_packages/tasks/main.yml b/src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/main.yml similarity index 100% rename from build_image_x86_64/roles/fetch_packages/tasks/main.yml rename to src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/main.yml diff --git a/build_image_x86_64/roles/fetch_packages/tasks/x86_64_build_image_completion.yml b/src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/x86_64_build_image_completion.yml similarity index 100% rename from build_image_x86_64/roles/fetch_packages/tasks/x86_64_build_image_completion.yml rename to src/playbooks/build_image_x86_64/roles/fetch_packages/tasks/x86_64_build_image_completion.yml diff --git a/build_image_x86_64/roles/fetch_packages/vars/main.yml b/src/playbooks/build_image_x86_64/roles/fetch_packages/vars/main.yml similarity index 100% rename from build_image_x86_64/roles/fetch_packages/vars/main.yml rename to src/playbooks/build_image_x86_64/roles/fetch_packages/vars/main.yml diff --git a/build_image_x86_64/roles/image_creation/files/omnia-crun-bpf.te b/src/playbooks/build_image_x86_64/roles/image_creation/files/omnia-crun-bpf.te similarity index 100% rename from build_image_x86_64/roles/image_creation/files/omnia-crun-bpf.te rename to src/playbooks/build_image_x86_64/roles/image_creation/files/omnia-crun-bpf.te diff --git a/build_image_x86_64/roles/image_creation/tasks/build_base_image.yml b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_base_image.yml similarity index 100% rename from build_image_x86_64/roles/image_creation/tasks/build_base_image.yml rename to src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_base_image.yml diff --git a/build_image_x86_64/roles/image_creation/tasks/build_compute_image.yml b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_compute_image.yml similarity index 100% rename from build_image_x86_64/roles/image_creation/tasks/build_compute_image.yml rename to src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_compute_image.yml diff --git a/build_image_x86_64/roles/image_creation/tasks/build_image_common.yml b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_image_common.yml similarity index 100% rename from build_image_x86_64/roles/image_creation/tasks/build_image_common.yml rename to src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_image_common.yml diff --git a/build_image_x86_64/roles/image_creation/tasks/main.yml b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/main.yml similarity index 94% rename from build_image_x86_64/roles/image_creation/tasks/main.yml rename to src/playbooks/build_image_x86_64/roles/image_creation/tasks/main.yml index ee36076cef..8c512499d5 100644 --- a/build_image_x86_64/roles/image_creation/tasks/main.yml +++ b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/main.yml @@ -22,7 +22,7 @@ no_log: true - name: Include global variables from common folder - ansible.builtin.include_vars: "{{ role_path }}/../../../common/vars/openchami_image_cmd.yml" + ansible.builtin.include_vars: "{{ role_path }}/../../../../common/vars/openchami_image_cmd.yml" register: ochami_image_global_vars - name: Build image common tasks diff --git a/build_image_x86_64/roles/image_creation/tasks/preflight_selinux_check.yml b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/preflight_selinux_check.yml similarity index 100% rename from build_image_x86_64/roles/image_creation/tasks/preflight_selinux_check.yml rename to src/playbooks/build_image_x86_64/roles/image_creation/tasks/preflight_selinux_check.yml diff --git a/build_image_x86_64/roles/image_creation/tasks/prepare_pulp_image.yml b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/prepare_pulp_image.yml similarity index 100% rename from build_image_x86_64/roles/image_creation/tasks/prepare_pulp_image.yml rename to src/playbooks/build_image_x86_64/roles/image_creation/tasks/prepare_pulp_image.yml diff --git a/build_image_x86_64/roles/image_creation/tasks/set_s3_acl.yml b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/set_s3_acl.yml similarity index 100% rename from build_image_x86_64/roles/image_creation/tasks/set_s3_acl.yml rename to src/playbooks/build_image_x86_64/roles/image_creation/tasks/set_s3_acl.yml diff --git a/build_image_x86_64/roles/image_creation/templates/images/rhel-base-config.yaml.j2 b/src/playbooks/build_image_x86_64/roles/image_creation/templates/images/rhel-base-config.yaml.j2 similarity index 100% rename from build_image_x86_64/roles/image_creation/templates/images/rhel-base-config.yaml.j2 rename to src/playbooks/build_image_x86_64/roles/image_creation/templates/images/rhel-base-config.yaml.j2 diff --git a/build_image_x86_64/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 b/src/playbooks/build_image_x86_64/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 similarity index 100% rename from build_image_x86_64/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 rename to src/playbooks/build_image_x86_64/roles/image_creation/templates/images/rhel-compute-config.yaml.j2 diff --git a/build_image_x86_64/roles/image_creation/vars/main.yml b/src/playbooks/build_image_x86_64/roles/image_creation/vars/main.yml similarity index 100% rename from build_image_x86_64/roles/image_creation/vars/main.yml rename to src/playbooks/build_image_x86_64/roles/image_creation/vars/main.yml diff --git a/discovery/ansible.cfg b/src/playbooks/discovery/ansible.cfg similarity index 77% rename from discovery/ansible.cfg rename to src/playbooks/discovery/ansible.cfg index 37d3eac714..fd3b15bda0 100644 --- a/discovery/ansible.cfg +++ b/src/playbooks/discovery/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = library:../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = library:../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/discovery/discovery.yml b/src/playbooks/discovery/discovery.yml similarity index 100% rename from discovery/discovery.yml rename to src/playbooks/discovery/discovery.yml diff --git a/discovery/roles/ome_discovery/README.md b/src/playbooks/discovery/roles/ome_discovery/README.md similarity index 100% rename from discovery/roles/ome_discovery/README.md rename to src/playbooks/discovery/roles/ome_discovery/README.md diff --git a/discovery/roles/ome_discovery/defaults/main.yml b/src/playbooks/discovery/roles/ome_discovery/defaults/main.yml similarity index 100% rename from discovery/roles/ome_discovery/defaults/main.yml rename to src/playbooks/discovery/roles/ome_discovery/defaults/main.yml diff --git a/discovery/roles/ome_discovery/tasks/collect_inventory.yml b/src/playbooks/discovery/roles/ome_discovery/tasks/collect_inventory.yml similarity index 100% rename from discovery/roles/ome_discovery/tasks/collect_inventory.yml rename to src/playbooks/discovery/roles/ome_discovery/tasks/collect_inventory.yml diff --git a/discovery/roles/ome_discovery/tasks/generate_discovery_report.yml b/src/playbooks/discovery/roles/ome_discovery/tasks/generate_discovery_report.yml similarity index 100% rename from discovery/roles/ome_discovery/tasks/generate_discovery_report.yml rename to src/playbooks/discovery/roles/ome_discovery/tasks/generate_discovery_report.yml diff --git a/discovery/roles/ome_discovery/tasks/generate_pxe_mapping.yml b/src/playbooks/discovery/roles/ome_discovery/tasks/generate_pxe_mapping.yml similarity index 100% rename from discovery/roles/ome_discovery/tasks/generate_pxe_mapping.yml rename to src/playbooks/discovery/roles/ome_discovery/tasks/generate_pxe_mapping.yml diff --git a/discovery/roles/ome_discovery/tasks/get_ome_credentials.yml b/src/playbooks/discovery/roles/ome_discovery/tasks/get_ome_credentials.yml similarity index 100% rename from discovery/roles/ome_discovery/tasks/get_ome_credentials.yml rename to src/playbooks/discovery/roles/ome_discovery/tasks/get_ome_credentials.yml diff --git a/discovery/roles/ome_discovery/tasks/main.yml b/src/playbooks/discovery/roles/ome_discovery/tasks/main.yml similarity index 100% rename from discovery/roles/ome_discovery/tasks/main.yml rename to src/playbooks/discovery/roles/ome_discovery/tasks/main.yml diff --git a/discovery/roles/ome_discovery/vars/main.yml b/src/playbooks/discovery/roles/ome_discovery/vars/main.yml similarity index 100% rename from discovery/roles/ome_discovery/vars/main.yml rename to src/playbooks/discovery/roles/ome_discovery/vars/main.yml diff --git a/gitlab/ansible.cfg b/src/playbooks/gitlab/ansible.cfg similarity index 78% rename from gitlab/ansible.cfg rename to src/playbooks/gitlab/ansible.cfg index 099abd8c8e..fed24f2542 100644 --- a/gitlab/ansible.cfg +++ b/src/playbooks/gitlab/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = ../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = ../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/gitlab/cleanup_gitlab.yml b/src/playbooks/gitlab/cleanup_gitlab.yml similarity index 100% rename from gitlab/cleanup_gitlab.yml rename to src/playbooks/gitlab/cleanup_gitlab.yml diff --git a/gitlab/gitlab.yml b/src/playbooks/gitlab/gitlab.yml similarity index 100% rename from gitlab/gitlab.yml rename to src/playbooks/gitlab/gitlab.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/cleanup_buildstream_oauth.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_buildstream_oauth.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/cleanup_buildstream_oauth.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_buildstream_oauth.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/cleanup_cicd.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_cicd.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/cleanup_cicd.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_cicd.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/cleanup_credentials.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_credentials.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/cleanup_credentials.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_credentials.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/cleanup_directories.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_directories.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/cleanup_directories.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_directories.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/cleanup_packages.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_packages.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/cleanup_packages.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_packages.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/cleanup_runner.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_runner.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/cleanup_runner.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_runner.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/cleanup_services.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_services.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/cleanup_services.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_services.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/cleanup_summary.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_summary.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/cleanup_summary.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_summary.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/cleanup_tls.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_tls.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/cleanup_tls.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/cleanup_tls.yml diff --git a/gitlab/roles/cleanup_gitlab/tasks/main.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/tasks/main.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/tasks/main.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/tasks/main.yml diff --git a/gitlab/roles/cleanup_gitlab/vars/main.yml b/src/playbooks/gitlab/roles/cleanup_gitlab/vars/main.yml similarity index 100% rename from gitlab/roles/cleanup_gitlab/vars/main.yml rename to src/playbooks/gitlab/roles/cleanup_gitlab/vars/main.yml diff --git a/gitlab/roles/gitlab_passwordless_ssh/files/check_gitlab_port.sh b/src/playbooks/gitlab/roles/gitlab_passwordless_ssh/files/check_gitlab_port.sh similarity index 100% rename from gitlab/roles/gitlab_passwordless_ssh/files/check_gitlab_port.sh rename to src/playbooks/gitlab/roles/gitlab_passwordless_ssh/files/check_gitlab_port.sh diff --git a/gitlab/roles/gitlab_passwordless_ssh/tasks/authorize_key.yml b/src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/authorize_key.yml similarity index 100% rename from gitlab/roles/gitlab_passwordless_ssh/tasks/authorize_key.yml rename to src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/authorize_key.yml diff --git a/gitlab/roles/gitlab_passwordless_ssh/tasks/generate_keypair.yml b/src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/generate_keypair.yml similarity index 100% rename from gitlab/roles/gitlab_passwordless_ssh/tasks/generate_keypair.yml rename to src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/generate_keypair.yml diff --git a/gitlab/roles/gitlab_passwordless_ssh/tasks/main.yml b/src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/main.yml similarity index 100% rename from gitlab/roles/gitlab_passwordless_ssh/tasks/main.yml rename to src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/main.yml diff --git a/gitlab/roles/gitlab_passwordless_ssh/tasks/prereq_checks.yml b/src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/prereq_checks.yml similarity index 100% rename from gitlab/roles/gitlab_passwordless_ssh/tasks/prereq_checks.yml rename to src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/prereq_checks.yml diff --git a/gitlab/roles/gitlab_passwordless_ssh/tasks/validate_ssh.yml b/src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/validate_ssh.yml similarity index 100% rename from gitlab/roles/gitlab_passwordless_ssh/tasks/validate_ssh.yml rename to src/playbooks/gitlab/roles/gitlab_passwordless_ssh/tasks/validate_ssh.yml diff --git a/gitlab/roles/gitlab_passwordless_ssh/vars/main.yml b/src/playbooks/gitlab/roles/gitlab_passwordless_ssh/vars/main.yml similarity index 100% rename from gitlab/roles/gitlab_passwordless_ssh/vars/main.yml rename to src/playbooks/gitlab/roles/gitlab_passwordless_ssh/vars/main.yml diff --git a/gitlab/roles/hosted_gitlab/files/.gitlab-ci-build.yml b/src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-build.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/files/.gitlab-ci-build.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-build.yml diff --git a/gitlab/roles/hosted_gitlab/files/.gitlab-ci-cleanup-child-template.yml b/src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-cleanup-child-template.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/files/.gitlab-ci-cleanup-child-template.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-cleanup-child-template.yml diff --git a/gitlab/roles/hosted_gitlab/files/.gitlab-ci-cleanup.yml b/src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-cleanup.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/files/.gitlab-ci-cleanup.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-cleanup.yml diff --git a/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy-child-template.yml b/src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy-child-template.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy-child-template.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy-child-template.yml diff --git a/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy.yml b/src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci-deploy.yml diff --git a/gitlab/roles/hosted_gitlab/files/.gitlab-ci.yml b/src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/files/.gitlab-ci.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/files/.gitlab-ci.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/check_oim_prerequisites.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/check_oim_prerequisites.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/check_oim_prerequisites.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/check_oim_prerequisites.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/configure_firewall.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/configure_firewall.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/configure_firewall.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/configure_firewall.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/configure_gitlab.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/configure_gitlab.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/configure_gitlab.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/configure_gitlab.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/create_directories.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/create_directories.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/create_directories.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/create_directories.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/create_project.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/create_project.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/create_project.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/create_project.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/create_trigger.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/create_trigger.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/create_trigger.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/create_trigger.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/deploy_runner.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/deploy_runner.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/deploy_runner.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/deploy_runner.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/display_summary.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/display_summary.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/display_summary.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/display_summary.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/generate_tls_certs.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/generate_tls_certs.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/generate_tls_certs.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/generate_tls_certs.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/install_gitlab.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/install_gitlab.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/install_gitlab.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/install_gitlab.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/install_packages.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/install_packages.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/install_packages.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/install_packages.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/main.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/main.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/main.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/main.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/podman_login.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/podman_login.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/podman_login.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/podman_login.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/prereq_checks.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/prereq_checks.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/prereq_checks.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/prereq_checks.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/push_ci_files.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_ci_files.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/push_ci_files.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_ci_files.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/push_example_catalogs.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_example_catalogs.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/push_example_catalogs.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_example_catalogs.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/push_single_example_catalog.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_single_example_catalog.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/push_single_example_catalog.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_single_example_catalog.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/root_password_change.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/root_password_change.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/root_password_change.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/root_password_change.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/set_pipeline_variables.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/set_pipeline_variables.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/set_pipeline_variables.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/set_pipeline_variables.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/sync_input_file.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/sync_input_file.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/sync_input_file.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/sync_input_file.yml diff --git a/gitlab/roles/hosted_gitlab/tasks/validate_prerequisites.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/validate_prerequisites.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/tasks/validate_prerequisites.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/tasks/validate_prerequisites.yml diff --git a/gitlab/roles/hosted_gitlab/templates/gitlab.rb.j2 b/src/playbooks/gitlab/roles/hosted_gitlab/templates/gitlab.rb.j2 similarity index 100% rename from gitlab/roles/hosted_gitlab/templates/gitlab.rb.j2 rename to src/playbooks/gitlab/roles/hosted_gitlab/templates/gitlab.rb.j2 diff --git a/gitlab/roles/hosted_gitlab/templates/gitlab_runner.container.j2 b/src/playbooks/gitlab/roles/hosted_gitlab/templates/gitlab_runner.container.j2 similarity index 100% rename from gitlab/roles/hosted_gitlab/templates/gitlab_runner.container.j2 rename to src/playbooks/gitlab/roles/hosted_gitlab/templates/gitlab_runner.container.j2 diff --git a/gitlab/roles/hosted_gitlab/templates/san.cnf.j2 b/src/playbooks/gitlab/roles/hosted_gitlab/templates/san.cnf.j2 similarity index 100% rename from gitlab/roles/hosted_gitlab/templates/san.cnf.j2 rename to src/playbooks/gitlab/roles/hosted_gitlab/templates/san.cnf.j2 diff --git a/gitlab/roles/hosted_gitlab/vars/main.yml b/src/playbooks/gitlab/roles/hosted_gitlab/vars/main.yml similarity index 100% rename from gitlab/roles/hosted_gitlab/vars/main.yml rename to src/playbooks/gitlab/roles/hosted_gitlab/vars/main.yml diff --git a/utils/credential_utility/ansible.cfg b/src/playbooks/input_validation/ansible.cfg similarity index 88% rename from utils/credential_utility/ansible.cfg rename to src/playbooks/input_validation/ansible.cfg index cfa0e80cc2..0764e860f6 100644 --- a/utils/credential_utility/ansible.cfg +++ b/src/playbooks/input_validation/ansible.cfg @@ -1,5 +1,5 @@ [defaults] -log_path = /opt/omnia/log/core/playbooks/credential_utility.log +log_path = /opt/omnia/log/core/playbooks/input_validation.log remote_tmp = /opt/omnia/tmp/.ansible/tmp/ host_key_checking = false forks = 5 @@ -19,4 +19,4 @@ connect_timeout = 180 [ssh_connection] retries = 3 -ssh_args = -o ControlMaster=auto -o ControlPersist=60 -o ConnectTimeout=60 \ No newline at end of file +ssh_args = -o ControlMaster=auto -o ControlPersist=60 -o ConnectTimeout=60 diff --git a/input_validation/roles/validate_input/tasks/main.yml b/src/playbooks/input_validation/roles/validate_input/tasks/main.yml similarity index 94% rename from input_validation/roles/validate_input/tasks/main.yml rename to src/playbooks/input_validation/roles/validate_input/tasks/main.yml index 45a6c68a22..1de5105614 100644 --- a/input_validation/roles/validate_input/tasks/main.yml +++ b/src/playbooks/input_validation/roles/validate_input/tasks/main.yml @@ -27,7 +27,7 @@ omnia_base_dir: "{{ (input_dir + '/../') | ansible.builtin.realpath }}" project_name: "{{ project_name }}" tag_names: "{{ input_validate_tags }}" - module_utils_path: "{{ (role_path + '/../../../common/library/module_utils/') | ansible.builtin.realpath }}" + module_utils_path: "{{ (role_path + '/../../../../common/library/module_utils/') | ansible.builtin.realpath }}" csv_file_path: "{{ csv_file_path }}" register: validation_status when: (input_validate_tags | length) > 0 or csv_file_path is defined diff --git a/input_validation/roles/validate_input/vars/main.yml b/src/playbooks/input_validation/roles/validate_input/vars/main.yml similarity index 100% rename from input_validation/roles/validate_input/vars/main.yml rename to src/playbooks/input_validation/roles/validate_input/vars/main.yml diff --git a/input_validation/roles/validate_subscription/tasks/check_rhel_subscription.yml b/src/playbooks/input_validation/roles/validate_subscription/tasks/check_rhel_subscription.yml similarity index 100% rename from input_validation/roles/validate_subscription/tasks/check_rhel_subscription.yml rename to src/playbooks/input_validation/roles/validate_subscription/tasks/check_rhel_subscription.yml diff --git a/input_validation/roles/validate_subscription/tasks/configure_rhel_os_urls.yml b/src/playbooks/input_validation/roles/validate_subscription/tasks/configure_rhel_os_urls.yml similarity index 100% rename from input_validation/roles/validate_subscription/tasks/configure_rhel_os_urls.yml rename to src/playbooks/input_validation/roles/validate_subscription/tasks/configure_rhel_os_urls.yml diff --git a/input_validation/roles/validate_subscription/vars/main.yml b/src/playbooks/input_validation/roles/validate_subscription/vars/main.yml similarity index 100% rename from input_validation/roles/validate_subscription/vars/main.yml rename to src/playbooks/input_validation/roles/validate_subscription/vars/main.yml diff --git a/input_validation/validate_config.yml b/src/playbooks/input_validation/validate_config.yml similarity index 100% rename from input_validation/validate_config.yml rename to src/playbooks/input_validation/validate_config.yml diff --git a/local_repo/ansible.cfg b/src/playbooks/local_repo/ansible.cfg similarity index 72% rename from local_repo/ansible.cfg rename to src/playbooks/local_repo/ansible.cfg index 677c2f78a3..2ec0d8ac39 100644 --- a/local_repo/ansible.cfg +++ b/src/playbooks/local_repo/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = roles/parse_and_download/library:../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = roles/parse_and_download/library:../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 @@ -19,4 +19,4 @@ connect_timeout = 180 [ssh_connection] retries = 3 -ssh_args = -o ControlMaster=auto -o ControlPersist=60 -o ConnectTimeout=60 \ No newline at end of file +ssh_args = -o ControlMaster=auto -o ControlPersist=60 -o ConnectTimeout=60 diff --git a/local_repo/local_repo.yml b/src/playbooks/local_repo/local_repo.yml similarity index 100% rename from local_repo/local_repo.yml rename to src/playbooks/local_repo/local_repo.yml diff --git a/local_repo/pulp_cleanup.yml b/src/playbooks/local_repo/pulp_cleanup.yml similarity index 100% rename from local_repo/pulp_cleanup.yml rename to src/playbooks/local_repo/pulp_cleanup.yml diff --git a/local_repo/roles/parse_and_download/tasks/arch_component_loop.yml b/src/playbooks/local_repo/roles/parse_and_download/tasks/arch_component_loop.yml similarity index 100% rename from local_repo/roles/parse_and_download/tasks/arch_component_loop.yml rename to src/playbooks/local_repo/roles/parse_and_download/tasks/arch_component_loop.yml diff --git a/local_repo/roles/parse_and_download/tasks/create_metadata.yml b/src/playbooks/local_repo/roles/parse_and_download/tasks/create_metadata.yml similarity index 100% rename from local_repo/roles/parse_and_download/tasks/create_metadata.yml rename to src/playbooks/local_repo/roles/parse_and_download/tasks/create_metadata.yml diff --git a/local_repo/roles/parse_and_download/tasks/execute_parallel_tasks.yml b/src/playbooks/local_repo/roles/parse_and_download/tasks/execute_parallel_tasks.yml similarity index 100% rename from local_repo/roles/parse_and_download/tasks/execute_parallel_tasks.yml rename to src/playbooks/local_repo/roles/parse_and_download/tasks/execute_parallel_tasks.yml diff --git a/local_repo/roles/parse_and_download/tasks/localrepo_completion.yml b/src/playbooks/local_repo/roles/parse_and_download/tasks/localrepo_completion.yml similarity index 100% rename from local_repo/roles/parse_and_download/tasks/localrepo_completion.yml rename to src/playbooks/local_repo/roles/parse_and_download/tasks/localrepo_completion.yml diff --git a/local_repo/roles/parse_and_download/tasks/main.yml b/src/playbooks/local_repo/roles/parse_and_download/tasks/main.yml similarity index 100% rename from local_repo/roles/parse_and_download/tasks/main.yml rename to src/playbooks/local_repo/roles/parse_and_download/tasks/main.yml diff --git a/local_repo/roles/parse_and_download/tasks/process_rpm_repo.yml b/src/playbooks/local_repo/roles/parse_and_download/tasks/process_rpm_repo.yml similarity index 100% rename from local_repo/roles/parse_and_download/tasks/process_rpm_repo.yml rename to src/playbooks/local_repo/roles/parse_and_download/tasks/process_rpm_repo.yml diff --git a/local_repo/roles/parse_and_download/tasks/pulp_repo_name_migration.yml b/src/playbooks/local_repo/roles/parse_and_download/tasks/pulp_repo_name_migration.yml similarity index 100% rename from local_repo/roles/parse_and_download/tasks/pulp_repo_name_migration.yml rename to src/playbooks/local_repo/roles/parse_and_download/tasks/pulp_repo_name_migration.yml diff --git a/local_repo/roles/parse_and_download/templates/local_repo_access.yml.j2 b/src/playbooks/local_repo/roles/parse_and_download/templates/local_repo_access.yml.j2 similarity index 100% rename from local_repo/roles/parse_and_download/templates/local_repo_access.yml.j2 rename to src/playbooks/local_repo/roles/parse_and_download/templates/local_repo_access.yml.j2 diff --git a/local_repo/roles/parse_and_download/vars/main.yml b/src/playbooks/local_repo/roles/parse_and_download/vars/main.yml similarity index 100% rename from local_repo/roles/parse_and_download/vars/main.yml rename to src/playbooks/local_repo/roles/parse_and_download/vars/main.yml diff --git a/local_repo/roles/pulp_validation/tasks/check_pulp_status.yml b/src/playbooks/local_repo/roles/pulp_validation/tasks/check_pulp_status.yml similarity index 100% rename from local_repo/roles/pulp_validation/tasks/check_pulp_status.yml rename to src/playbooks/local_repo/roles/pulp_validation/tasks/check_pulp_status.yml diff --git a/local_repo/roles/pulp_validation/tasks/main.yml b/src/playbooks/local_repo/roles/pulp_validation/tasks/main.yml similarity index 100% rename from local_repo/roles/pulp_validation/tasks/main.yml rename to src/playbooks/local_repo/roles/pulp_validation/tasks/main.yml diff --git a/local_repo/roles/pulp_validation/tasks/read_network_spec.yml b/src/playbooks/local_repo/roles/pulp_validation/tasks/read_network_spec.yml similarity index 100% rename from local_repo/roles/pulp_validation/tasks/read_network_spec.yml rename to src/playbooks/local_repo/roles/pulp_validation/tasks/read_network_spec.yml diff --git a/local_repo/roles/pulp_validation/vars/main.yml b/src/playbooks/local_repo/roles/pulp_validation/vars/main.yml similarity index 100% rename from local_repo/roles/pulp_validation/vars/main.yml rename to src/playbooks/local_repo/roles/pulp_validation/vars/main.yml diff --git a/local_repo/roles/validation/tasks/check_additional_packages_images.yml b/src/playbooks/local_repo/roles/validation/tasks/check_additional_packages_images.yml similarity index 100% rename from local_repo/roles/validation/tasks/check_additional_packages_images.yml rename to src/playbooks/local_repo/roles/validation/tasks/check_additional_packages_images.yml diff --git a/local_repo/roles/validation/tasks/check_images_per_arch.yml b/src/playbooks/local_repo/roles/validation/tasks/check_images_per_arch.yml similarity index 100% rename from local_repo/roles/validation/tasks/check_images_per_arch.yml rename to src/playbooks/local_repo/roles/validation/tasks/check_images_per_arch.yml diff --git a/local_repo/roles/validation/tasks/display_msg.yml b/src/playbooks/local_repo/roles/validation/tasks/display_msg.yml similarity index 100% rename from local_repo/roles/validation/tasks/display_msg.yml rename to src/playbooks/local_repo/roles/validation/tasks/display_msg.yml diff --git a/local_repo/roles/validation/tasks/main.yml b/src/playbooks/local_repo/roles/validation/tasks/main.yml similarity index 100% rename from local_repo/roles/validation/tasks/main.yml rename to src/playbooks/local_repo/roles/validation/tasks/main.yml diff --git a/local_repo/roles/validation/tasks/prerequisites.yml b/src/playbooks/local_repo/roles/validation/tasks/prerequisites.yml similarity index 100% rename from local_repo/roles/validation/tasks/prerequisites.yml rename to src/playbooks/local_repo/roles/validation/tasks/prerequisites.yml diff --git a/local_repo/roles/validation/tasks/validate_metadata.yml b/src/playbooks/local_repo/roles/validation/tasks/validate_metadata.yml similarity index 100% rename from local_repo/roles/validation/tasks/validate_metadata.yml rename to src/playbooks/local_repo/roles/validation/tasks/validate_metadata.yml diff --git a/local_repo/roles/validation/tasks/validate_software_config_json.yml b/src/playbooks/local_repo/roles/validation/tasks/validate_software_config_json.yml similarity index 100% rename from local_repo/roles/validation/tasks/validate_software_config_json.yml rename to src/playbooks/local_repo/roles/validation/tasks/validate_software_config_json.yml diff --git a/local_repo/roles/validation/vars/main.yml b/src/playbooks/local_repo/roles/validation/vars/main.yml similarity index 100% rename from local_repo/roles/validation/vars/main.yml rename to src/playbooks/local_repo/roles/validation/vars/main.yml diff --git a/log_collector/ansible.cfg b/src/playbooks/log_collector/ansible.cfg similarity index 78% rename from log_collector/ansible.cfg rename to src/playbooks/log_collector/ansible.cfg index 9ebf18c08c..dc90a8cc96 100644 --- a/log_collector/ansible.cfg +++ b/src/playbooks/log_collector/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = ../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = ../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/log_collector/collect.yml b/src/playbooks/log_collector/collect.yml similarity index 100% rename from log_collector/collect.yml rename to src/playbooks/log_collector/collect.yml diff --git a/log_collector/roles/log_collector/tasks/bundle.yml b/src/playbooks/log_collector/roles/log_collector/tasks/bundle.yml similarity index 100% rename from log_collector/roles/log_collector/tasks/bundle.yml rename to src/playbooks/log_collector/roles/log_collector/tasks/bundle.yml diff --git a/log_collector/roles/log_collector/tasks/k8s_logs.yml b/src/playbooks/log_collector/roles/log_collector/tasks/k8s_logs.yml similarity index 100% rename from log_collector/roles/log_collector/tasks/k8s_logs.yml rename to src/playbooks/log_collector/roles/log_collector/tasks/k8s_logs.yml diff --git a/log_collector/roles/log_collector/tasks/main.yml b/src/playbooks/log_collector/roles/log_collector/tasks/main.yml similarity index 100% rename from log_collector/roles/log_collector/tasks/main.yml rename to src/playbooks/log_collector/roles/log_collector/tasks/main.yml diff --git a/log_collector/roles/log_collector/tasks/prepare.yml b/src/playbooks/log_collector/roles/log_collector/tasks/prepare.yml similarity index 100% rename from log_collector/roles/log_collector/tasks/prepare.yml rename to src/playbooks/log_collector/roles/log_collector/tasks/prepare.yml diff --git a/log_collector/roles/log_collector/tasks/setup.yml b/src/playbooks/log_collector/roles/log_collector/tasks/setup.yml similarity index 100% rename from log_collector/roles/log_collector/tasks/setup.yml rename to src/playbooks/log_collector/roles/log_collector/tasks/setup.yml diff --git a/log_collector/roles/log_collector/tasks/slurm_logs.yml b/src/playbooks/log_collector/roles/log_collector/tasks/slurm_logs.yml similarity index 100% rename from log_collector/roles/log_collector/tasks/slurm_logs.yml rename to src/playbooks/log_collector/roles/log_collector/tasks/slurm_logs.yml diff --git a/log_collector/roles/log_collector/templates/metadata.json.j2 b/src/playbooks/log_collector/roles/log_collector/templates/metadata.json.j2 similarity index 100% rename from log_collector/roles/log_collector/templates/metadata.json.j2 rename to src/playbooks/log_collector/roles/log_collector/templates/metadata.json.j2 diff --git a/log_collector/roles/log_collector/vars/main.yml b/src/playbooks/log_collector/roles/log_collector/vars/main.yml similarity index 100% rename from log_collector/roles/log_collector/vars/main.yml rename to src/playbooks/log_collector/roles/log_collector/vars/main.yml diff --git a/prepare_oim/ansible.cfg b/src/playbooks/prepare_oim/ansible.cfg similarity index 78% rename from prepare_oim/ansible.cfg rename to src/playbooks/prepare_oim/ansible.cfg index e04c90fd11..81cd92e335 100644 --- a/prepare_oim/ansible.cfg +++ b/src/playbooks/prepare_oim/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = ../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = ../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/prepare_oim/prepare_oim.yml b/src/playbooks/prepare_oim/prepare_oim.yml similarity index 100% rename from prepare_oim/prepare_oim.yml rename to src/playbooks/prepare_oim/prepare_oim.yml diff --git a/prepare_oim/roles/deploy_containers/auth/files/bootstrap.ldif b/src/playbooks/prepare_oim/roles/deploy_containers/auth/files/bootstrap.ldif similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/files/bootstrap.ldif rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/files/bootstrap.ldif diff --git a/prepare_oim/roles/deploy_containers/auth/files/slapd.conf b/src/playbooks/prepare_oim/roles/deploy_containers/auth/files/slapd.conf similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/files/slapd.conf rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/files/slapd.conf diff --git a/prepare_oim/roles/deploy_containers/auth/tasks/configure_bootstrap_ldif.yml b/src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/configure_bootstrap_ldif.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/tasks/configure_bootstrap_ldif.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/configure_bootstrap_ldif.yml diff --git a/prepare_oim/roles/deploy_containers/auth/tasks/configure_slapd_conf.yml b/src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/configure_slapd_conf.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/tasks/configure_slapd_conf.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/configure_slapd_conf.yml diff --git a/prepare_oim/roles/deploy_containers/auth/tasks/deploy_auth_service.yml b/src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/deploy_auth_service.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/tasks/deploy_auth_service.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/deploy_auth_service.yml diff --git a/prepare_oim/roles/deploy_containers/auth/tasks/generate_ldap_password_hashes.yml b/src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/generate_ldap_password_hashes.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/tasks/generate_ldap_password_hashes.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/generate_ldap_password_hashes.yml diff --git a/prepare_oim/roles/deploy_containers/auth/tasks/include_security_config.yml b/src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/include_security_config.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/tasks/include_security_config.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/include_security_config.yml diff --git a/prepare_oim/roles/deploy_containers/auth/tasks/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/tasks/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/tasks/main.yml diff --git a/prepare_oim/roles/deploy_containers/auth/templates/auth.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/auth/templates/auth.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/templates/auth.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/templates/auth.j2 diff --git a/prepare_oim/roles/deploy_containers/auth/vars/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/auth/vars/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/auth/vars/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/auth/vars/main.yml diff --git a/prepare_oim/roles/deploy_containers/build_stream/handlers/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/handlers/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/build_stream/handlers/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/build_stream/handlers/main.yml diff --git a/prepare_oim/roles/deploy_containers/build_stream/tasks/configure_automation.yml b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/tasks/configure_automation.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/build_stream/tasks/configure_automation.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/build_stream/tasks/configure_automation.yml diff --git a/prepare_oim/roles/deploy_containers/build_stream/tasks/deploy_build_stream.yml b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/tasks/deploy_build_stream.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/build_stream/tasks/deploy_build_stream.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/build_stream/tasks/deploy_build_stream.yml diff --git a/prepare_oim/roles/deploy_containers/build_stream/tasks/enable_watcher_service.yml b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/tasks/enable_watcher_service.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/build_stream/tasks/enable_watcher_service.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/build_stream/tasks/enable_watcher_service.yml diff --git a/prepare_oim/roles/deploy_containers/build_stream/tasks/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/tasks/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/build_stream/tasks/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/build_stream/tasks/main.yml diff --git a/prepare_oim/roles/deploy_containers/build_stream/templates/build_stream.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/templates/build_stream.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/build_stream/templates/build_stream.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/build_stream/templates/build_stream.j2 diff --git a/prepare_oim/roles/deploy_containers/build_stream/templates/omnia_test_config.yml.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/templates/omnia_test_config.yml.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/build_stream/templates/omnia_test_config.yml.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/build_stream/templates/omnia_test_config.yml.j2 diff --git a/prepare_oim/roles/deploy_containers/build_stream/templates/playbook_watcher.service.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/templates/playbook_watcher.service.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/build_stream/templates/playbook_watcher.service.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/build_stream/templates/playbook_watcher.service.j2 diff --git a/prepare_oim/roles/deploy_containers/build_stream/vars/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/vars/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/build_stream/vars/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/build_stream/vars/main.yml diff --git a/prepare_oim/roles/deploy_containers/common/tasks/aarch64_prereq.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/aarch64_prereq.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/tasks/aarch64_prereq.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/aarch64_prereq.yml diff --git a/prepare_oim/roles/deploy_containers/common/tasks/add_known_hosts.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/add_known_hosts.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/tasks/add_known_hosts.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/add_known_hosts.yml diff --git a/prepare_oim/roles/deploy_containers/common/tasks/configure_chrony.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/configure_chrony.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/tasks/configure_chrony.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/configure_chrony.yml diff --git a/prepare_oim/roles/deploy_containers/common/tasks/firewall_settings.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/firewall_settings.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/tasks/firewall_settings.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/firewall_settings.yml diff --git a/prepare_oim/roles/deploy_containers/common/tasks/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/tasks/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/main.yml diff --git a/prepare_oim/roles/deploy_containers/common/tasks/omnia_service.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/omnia_service.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/tasks/omnia_service.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/omnia_service.yml diff --git a/prepare_oim/roles/deploy_containers/common/tasks/package_installation.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/package_installation.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/tasks/package_installation.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/package_installation.yml diff --git a/prepare_oim/roles/deploy_containers/common/tasks/podman_login.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/podman_login.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/tasks/podman_login.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/podman_login.yml diff --git a/prepare_oim/roles/deploy_containers/common/tasks/prepare_oim_completion.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/prepare_oim_completion.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/tasks/prepare_oim_completion.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/tasks/prepare_oim_completion.yml diff --git a/prepare_oim/roles/deploy_containers/common/templates/bmc_group_data.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/common/templates/bmc_group_data.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/common/templates/bmc_group_data.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/common/templates/bmc_group_data.j2 diff --git a/prepare_oim/roles/deploy_containers/common/templates/omnia.service.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/common/templates/omnia.service.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/common/templates/omnia.service.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/common/templates/omnia.service.j2 diff --git a/prepare_oim/roles/deploy_containers/common/vars/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/common/vars/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/common/vars/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/common/vars/main.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/handlers/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/handlers/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/handlers/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/handlers/main.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/create_dirs.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/create_dirs.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/create_dirs.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/create_dirs.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/firewall.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/firewall.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/firewall.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/firewall.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/hosts.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/hosts.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/hosts.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/hosts.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/main.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/minio.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/minio.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/minio.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/minio.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/ochami.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/ochami.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/ochami.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/ochami.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/packages.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/packages.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/packages.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/packages.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/policy_update.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/policy_update.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/policy_update.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/policy_update.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/regctl.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/regctl.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/regctl.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/regctl.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/registry.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/registry.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/registry.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/registry.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/s3_bucket.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/s3_bucket.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/s3_bucket.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/s3_bucket.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/verify.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/verify.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/verify.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/verify.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/configs/verify_ochami.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/verify_ochami.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/configs/verify_ochami.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/configs/verify_ochami.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/deploy_openchami.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/deploy_openchami.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/deploy_openchami.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/deploy_openchami.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/deployment_prereq.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/deployment_prereq.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/deployment_prereq.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/deployment_prereq.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/main.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/refresh_openchami_configs.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/refresh_openchami_configs.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/tasks/refresh_openchami_configs.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/refresh_openchami_configs.yml diff --git a/prepare_oim/roles/deploy_containers/openchami/tasks/verify_openchami.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/verify_openchami.yml similarity index 95% rename from prepare_oim/roles/deploy_containers/openchami/tasks/verify_openchami.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/verify_openchami.yml index 3362b56a54..890ae4b50c 100644 --- a/prepare_oim/roles/deploy_containers/openchami/tasks/verify_openchami.yml +++ b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/tasks/verify_openchami.yml @@ -22,7 +22,7 @@ openchami_install_status: false - name: Openchami cluster authentication - ansible.builtin.include_tasks: "{{ role_path }}/../../../../common/tasks/common/openchami_auth.yml" + ansible.builtin.include_tasks: "{{ role_path }}/../../../../../common/tasks/common/openchami_auth.yml" - name: Verify ochami installation environment: "{{ ochami_env }}" diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/configs.yaml.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/configs.yaml.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/configs.yaml.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/configs.yaml.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/coredhcp/coredhcp.yaml.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/coredhcp/coredhcp.yaml.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/coredhcp/coredhcp.yaml.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/coredhcp/coredhcp.yaml.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/coredns/Corefile.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/coredns/Corefile.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/coredns/Corefile.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/coredns/Corefile.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/inventory.yaml.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/inventory.yaml.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/inventory.yaml.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/inventory.yaml.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/minio/minio.service.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/minio/minio.service.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/minio/minio.service.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/minio/minio.service.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/ochami/config.yaml.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/ochami/config.yaml.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/ochami/config.yaml.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/ochami/config.yaml.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/registry/registry.service.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/registry/registry.service.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/registry/registry.service.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/registry/registry.service.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/s3/s3-public-read-boot.json.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/s3/s3-public-read-boot.json.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/s3/s3-public-read-boot.json.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/s3/s3-public-read-boot.json.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/s3/s3-public-read-efi.json.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/s3/s3-public-read-efi.json.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/s3/s3-public-read-efi.json.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/s3/s3-public-read-efi.json.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/templates/s3/s3cfg.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/s3/s3cfg.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/templates/s3/s3cfg.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/s3/s3cfg.j2 diff --git a/prepare_oim/roles/deploy_containers/openchami/vars/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/vars/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/openchami/vars/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/openchami/vars/main.yml diff --git a/prepare_oim/roles/deploy_containers/postgres/tasks/deploy_postgres.yml b/src/playbooks/prepare_oim/roles/deploy_containers/postgres/tasks/deploy_postgres.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/postgres/tasks/deploy_postgres.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/postgres/tasks/deploy_postgres.yml diff --git a/prepare_oim/roles/deploy_containers/postgres/tasks/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/postgres/tasks/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/postgres/tasks/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/postgres/tasks/main.yml diff --git a/prepare_oim/roles/deploy_containers/postgres/templates/init_build_stream_db.sql.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/postgres/templates/init_build_stream_db.sql.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/postgres/templates/init_build_stream_db.sql.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/postgres/templates/init_build_stream_db.sql.j2 diff --git a/prepare_oim/roles/deploy_containers/postgres/templates/postgres.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/postgres/templates/postgres.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/postgres/templates/postgres.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/postgres/templates/postgres.j2 diff --git a/prepare_oim/roles/deploy_containers/postgres/vars/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/postgres/vars/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/postgres/vars/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/postgres/vars/main.yml diff --git a/prepare_oim/roles/deploy_containers/pulp/tasks/create_pulp_config_http.yml b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/create_pulp_config_http.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/tasks/create_pulp_config_http.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/create_pulp_config_http.yml diff --git a/prepare_oim/roles/deploy_containers/pulp/tasks/create_pulp_config_https.yml b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/create_pulp_config_https.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/tasks/create_pulp_config_https.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/create_pulp_config_https.yml diff --git a/prepare_oim/roles/deploy_containers/pulp/tasks/deploy_pulp_container_http.yml b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/deploy_pulp_container_http.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/tasks/deploy_pulp_container_http.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/deploy_pulp_container_http.yml diff --git a/prepare_oim/roles/deploy_containers/pulp/tasks/deploy_pulp_container_https.yml b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/deploy_pulp_container_https.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/tasks/deploy_pulp_container_https.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/deploy_pulp_container_https.yml diff --git a/prepare_oim/roles/deploy_containers/pulp/tasks/deployment_prereq.yml b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/deployment_prereq.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/tasks/deployment_prereq.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/deployment_prereq.yml diff --git a/prepare_oim/roles/deploy_containers/pulp/tasks/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/tasks/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/main.yml diff --git a/prepare_oim/roles/deploy_containers/pulp/tasks/reload_pulp_nginx.yml b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/reload_pulp_nginx.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/tasks/reload_pulp_nginx.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/tasks/reload_pulp_nginx.yml diff --git a/prepare_oim/roles/deploy_containers/pulp/templates/http_quadlet.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/templates/http_quadlet.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/templates/http_quadlet.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/templates/http_quadlet.j2 diff --git a/prepare_oim/roles/deploy_containers/pulp/templates/https_quadlet.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/templates/https_quadlet.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/templates/https_quadlet.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/templates/https_quadlet.j2 diff --git a/prepare_oim/roles/deploy_containers/pulp/templates/nginx_conf.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/templates/nginx_conf.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/templates/nginx_conf.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/templates/nginx_conf.j2 diff --git a/prepare_oim/roles/deploy_containers/pulp/templates/settings_template.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/templates/settings_template.j2 similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/templates/settings_template.j2 rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/templates/settings_template.j2 diff --git a/prepare_oim/roles/deploy_containers/pulp/vars/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/pulp/vars/main.yml similarity index 100% rename from prepare_oim/roles/deploy_containers/pulp/vars/main.yml rename to src/playbooks/prepare_oim/roles/deploy_containers/pulp/vars/main.yml diff --git a/prepare_oim/roles/prepare_oim_validation/tasks/check_k8s_support.yml b/src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/check_k8s_support.yml similarity index 100% rename from prepare_oim/roles/prepare_oim_validation/tasks/check_k8s_support.yml rename to src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/check_k8s_support.yml diff --git a/prepare_oim/roles/prepare_oim_validation/tasks/check_openldap_support.yml b/src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/check_openldap_support.yml similarity index 100% rename from prepare_oim/roles/prepare_oim_validation/tasks/check_openldap_support.yml rename to src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/check_openldap_support.yml diff --git a/prepare_oim/roles/prepare_oim_validation/tasks/include_local_repo_config.yml b/src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/include_local_repo_config.yml similarity index 100% rename from prepare_oim/roles/prepare_oim_validation/tasks/include_local_repo_config.yml rename to src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/include_local_repo_config.yml diff --git a/prepare_oim/roles/prepare_oim_validation/tasks/main.yml b/src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/main.yml similarity index 100% rename from prepare_oim/roles/prepare_oim_validation/tasks/main.yml rename to src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/main.yml diff --git a/prepare_oim/roles/prepare_oim_validation/tasks/powerscale_check.yml b/src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/powerscale_check.yml similarity index 100% rename from prepare_oim/roles/prepare_oim_validation/tasks/powerscale_check.yml rename to src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/powerscale_check.yml diff --git a/prepare_oim/roles/prepare_oim_validation/tasks/pre_requisite.yml b/src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/pre_requisite.yml similarity index 100% rename from prepare_oim/roles/prepare_oim_validation/tasks/pre_requisite.yml rename to src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/pre_requisite.yml diff --git a/prepare_oim/roles/prepare_oim_validation/tasks/validate_network_spec.yml b/src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/validate_network_spec.yml similarity index 100% rename from prepare_oim/roles/prepare_oim_validation/tasks/validate_network_spec.yml rename to src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/validate_network_spec.yml diff --git a/prepare_oim/roles/prepare_oim_validation/tasks/validate_passwordless_ssh_oim.yml b/src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/validate_passwordless_ssh_oim.yml similarity index 100% rename from prepare_oim/roles/prepare_oim_validation/tasks/validate_passwordless_ssh_oim.yml rename to src/playbooks/prepare_oim/roles/prepare_oim_validation/tasks/validate_passwordless_ssh_oim.yml diff --git a/prepare_oim/roles/prepare_oim_validation/vars/main.yml b/src/playbooks/prepare_oim/roles/prepare_oim_validation/vars/main.yml similarity index 100% rename from prepare_oim/roles/prepare_oim_validation/vars/main.yml rename to src/playbooks/prepare_oim/roles/prepare_oim_validation/vars/main.yml diff --git a/provision/ansible.cfg b/src/playbooks/provision/ansible.cfg similarity index 77% rename from provision/ansible.cfg rename to src/playbooks/provision/ansible.cfg index 0d728ce383..218a3dd8a3 100644 --- a/provision/ansible.cfg +++ b/src/playbooks/provision/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = library:../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = library:../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/provision/provision.yml b/src/playbooks/provision/provision.yml similarity index 98% rename from provision/provision.yml rename to src/playbooks/provision/provision.yml index 53868cfb68..6fb7c932eb 100644 --- a/provision/provision.yml +++ b/src/playbooks/provision/provision.yml @@ -131,7 +131,7 @@ connection: ssh tasks: - name: Openchami cluster authentication - ansible.builtin.include_tasks: "{{ playbook_dir }}/../common/tasks/common/openchami_auth.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/openchami_auth.yml" vars: oim_node_name: "{{ hostvars['localhost']['oim_node_name'] }}" diff --git a/provision/roles/README.md b/src/playbooks/provision/roles/README.md similarity index 100% rename from provision/roles/README.md rename to src/playbooks/provision/roles/README.md diff --git a/provision/roles/configure_ochami/README.md b/src/playbooks/provision/roles/configure_ochami/README.md similarity index 100% rename from provision/roles/configure_ochami/README.md rename to src/playbooks/provision/roles/configure_ochami/README.md diff --git a/provision/roles/configure_ochami/tasks/configure_bss_cloud_init.yml b/src/playbooks/provision/roles/configure_ochami/tasks/configure_bss_cloud_init.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/configure_bss_cloud_init.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/configure_bss_cloud_init.yml diff --git a/provision/roles/configure_ochami/tasks/configure_bss_group.yml b/src/playbooks/provision/roles/configure_ochami/tasks/configure_bss_group.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/configure_bss_group.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/configure_bss_group.yml diff --git a/provision/roles/configure_ochami/tasks/configure_cloud_init_additional.yml b/src/playbooks/provision/roles/configure_ochami/tasks/configure_cloud_init_additional.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/configure_cloud_init_additional.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/configure_cloud_init_additional.yml diff --git a/provision/roles/configure_ochami/tasks/configure_cloud_init_additional_fg.yml b/src/playbooks/provision/roles/configure_ochami/tasks/configure_cloud_init_additional_fg.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/configure_cloud_init_additional_fg.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/configure_cloud_init_additional_fg.yml diff --git a/provision/roles/configure_ochami/tasks/configure_cloud_init_common.yml b/src/playbooks/provision/roles/configure_ochami/tasks/configure_cloud_init_common.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/configure_cloud_init_common.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/configure_cloud_init_common.yml diff --git a/provision/roles/configure_ochami/tasks/configure_cloud_init_group.yml b/src/playbooks/provision/roles/configure_ochami/tasks/configure_cloud_init_group.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/configure_cloud_init_group.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/configure_cloud_init_group.yml diff --git a/provision/roles/configure_ochami/tasks/create_groups.yml b/src/playbooks/provision/roles/configure_ochami/tasks/create_groups.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/create_groups.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/create_groups.yml diff --git a/provision/roles/configure_ochami/tasks/create_groups_additional_fg.yml b/src/playbooks/provision/roles/configure_ochami/tasks/create_groups_additional_fg.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/create_groups_additional_fg.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/create_groups_additional_fg.yml diff --git a/provision/roles/configure_ochami/tasks/create_groups_common.yml b/src/playbooks/provision/roles/configure_ochami/tasks/create_groups_common.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/create_groups_common.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/create_groups_common.yml diff --git a/provision/roles/configure_ochami/tasks/delete_smd_config.yml b/src/playbooks/provision/roles/configure_ochami/tasks/delete_smd_config.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/delete_smd_config.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/delete_smd_config.yml diff --git a/provision/roles/configure_ochami/tasks/fetch_additional_images.yml b/src/playbooks/provision/roles/configure_ochami/tasks/fetch_additional_images.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/fetch_additional_images.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/fetch_additional_images.yml diff --git a/provision/roles/configure_ochami/tasks/main.yml b/src/playbooks/provision/roles/configure_ochami/tasks/main.yml similarity index 95% rename from provision/roles/configure_ochami/tasks/main.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/main.yml index 2c99d7a958..ab6827a27e 100644 --- a/provision/roles/configure_ochami/tasks/main.yml +++ b/src/playbooks/provision/roles/configure_ochami/tasks/main.yml @@ -14,7 +14,7 @@ --- - name: Refresh SMD access token before ochami operations - ansible.builtin.include_tasks: "{{ role_path }}/../../../common/tasks/common/openchami_auth.yml" + ansible.builtin.include_tasks: "{{ role_path }}/../../../../common/tasks/common/openchami_auth.yml" vars: oim_node_name: "{{ hostvars['localhost']['oim_node_name'] }}" diff --git a/provision/roles/configure_ochami/tasks/provision_completion.yml b/src/playbooks/provision/roles/configure_ochami/tasks/provision_completion.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/provision_completion.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/provision_completion.yml diff --git a/provision/roles/configure_ochami/tasks/provision_mapping_nodes.yml b/src/playbooks/provision/roles/configure_ochami/tasks/provision_mapping_nodes.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/provision_mapping_nodes.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/provision_mapping_nodes.yml diff --git a/provision/roles/configure_ochami/tasks/update_smd_groups.yaml b/src/playbooks/provision/roles/configure_ochami/tasks/update_smd_groups.yaml similarity index 100% rename from provision/roles/configure_ochami/tasks/update_smd_groups.yaml rename to src/playbooks/provision/roles/configure_ochami/tasks/update_smd_groups.yaml diff --git a/provision/roles/configure_ochami/tasks/validate_additional_cloud_init.yml b/src/playbooks/provision/roles/configure_ochami/tasks/validate_additional_cloud_init.yml similarity index 100% rename from provision/roles/configure_ochami/tasks/validate_additional_cloud_init.yml rename to src/playbooks/provision/roles/configure_ochami/tasks/validate_additional_cloud_init.yml diff --git a/provision/roles/configure_ochami/templates/bss/bss.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/bss/bss.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/bss/bss.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/bss/bss.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-defaults.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-defaults.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-defaults.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-defaults.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-additional_cloud_init.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-additional_cloud_init.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-additional_cloud_init.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-additional_cloud_init.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-common.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-common.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-common.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-common.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-default_x86_64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-default_x86_64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-default_x86_64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-default_x86_64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_aarch64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_compiler_node_x86_64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_node_aarch64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_node_aarch64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-login_node_aarch64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_node_aarch64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_node_x86_64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_node_x86_64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-login_node_x86_64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-login_node_x86_64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-os_aarch64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-os_aarch64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-os_aarch64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-os_aarch64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-os_x86_64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-os_x86_64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-os_x86_64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-os_x86_64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_first_x86_64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_first_x86_64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_first_x86_64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_first_x86_64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_x86_64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_x86_64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_x86_64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_control_plane_x86_64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_node_x86_64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_node_x86_64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_node_x86_64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-service_kube_node_x86_64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_control_node_x86_64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_control_node_x86_64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_control_node_x86_64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_control_node_x86_64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_aarch64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_aarch64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_aarch64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_aarch64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/ci-group-slurm_node_x86_64.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/cloud_init/configure_swap.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/cloud_init/configure_swap.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/cloud_init/configure_swap.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/cloud_init/configure_swap.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/doca-ofed/configure-ib-network.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/doca-ofed/configure-ib-network.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/doca-ofed/configure-ib-network.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/doca-ofed/configure-ib-network.sh.j2 diff --git a/provision/roles/configure_ochami/templates/doca-ofed/doca-install.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/doca-ofed/doca-install.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/doca-ofed/doca-install.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/doca-ofed/doca-install.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/configure_ucx_openmpi_env.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/configure_ucx_openmpi_env.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/configure_ucx_openmpi_env.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/configure_ucx_openmpi_env.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/cuda_lock_manager.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/cuda_lock_manager.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/cuda_lock_manager.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/cuda_lock_manager.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/generate_install_uuid.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/generate_install_uuid.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/generate_install_uuid.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/generate_install_uuid.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/install_cuda_driver.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_cuda_driver.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/install_cuda_driver.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_cuda_driver.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/install_cuda_toolkit.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_cuda_toolkit.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/install_cuda_toolkit.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_cuda_toolkit.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/install_dcgm.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_dcgm.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/install_dcgm.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_dcgm.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/install_nvidia_peermem.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_nvidia_peermem.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/install_nvidia_peermem.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_nvidia_peermem.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/install_openmpi.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_openmpi.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/install_openmpi.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_openmpi.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/install_ucx.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_ucx.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/install_ucx.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/install_ucx.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/setup_doca_mpi_env.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/setup_doca_mpi_env.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/setup_doca_mpi_env.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/setup_doca_mpi_env.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/setup_nvhpc_sdk.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/setup_nvhpc_sdk.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/setup_nvhpc_sdk.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/setup_nvhpc_sdk.sh.j2 diff --git a/provision/roles/configure_ochami/templates/hpc_tools/slurm_cuda_coordinator.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/slurm_cuda_coordinator.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/hpc_tools/slurm_cuda_coordinator.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/hpc_tools/slurm_cuda_coordinator.sh.j2 diff --git a/provision/roles/configure_ochami/templates/k8s-scripts/etcd-disk-setup.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/k8s-scripts/etcd-disk-setup.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/k8s-scripts/etcd-disk-setup.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/k8s-scripts/etcd-disk-setup.sh.j2 diff --git a/provision/roles/configure_ochami/templates/k8s-scripts/etcd-fstab-update.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/k8s-scripts/etcd-fstab-update.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/k8s-scripts/etcd-fstab-update.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/k8s-scripts/etcd-fstab-update.sh.j2 diff --git a/provision/roles/configure_ochami/templates/ldms/ldms_sampler.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/ldms/ldms_sampler.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/ldms/ldms_sampler.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/ldms/ldms_sampler.sh.j2 diff --git a/provision/roles/configure_ochami/templates/nodes/apptainer_mirror.conf.j2 b/src/playbooks/provision/roles/configure_ochami/templates/nodes/apptainer_mirror.conf.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/nodes/apptainer_mirror.conf.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/nodes/apptainer_mirror.conf.j2 diff --git a/provision/roles/configure_ochami/templates/nodes/bmc_group_data.csv.j2 b/src/playbooks/provision/roles/configure_ochami/templates/nodes/bmc_group_data.csv.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/nodes/bmc_group_data.csv.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/nodes/bmc_group_data.csv.j2 diff --git a/provision/roles/configure_ochami/templates/nodes/groups.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/nodes/groups.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/nodes/groups.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/nodes/groups.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/nodes/groups_additional_fg.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/nodes/groups_additional_fg.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/nodes/groups_additional_fg.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/nodes/groups_additional_fg.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/nodes/groups_common.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/nodes/groups_common.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/nodes/groups_common.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/nodes/groups_common.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/nodes/hostname.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/nodes/hostname.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/nodes/hostname.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/nodes/hostname.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/nodes/nodes.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/nodes/nodes.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/nodes/nodes.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/nodes/nodes.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/openldap/sssd.conf.j2 b/src/playbooks/provision/roles/configure_ochami/templates/openldap/sssd.conf.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/openldap/sssd.conf.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/openldap/sssd.conf.j2 diff --git a/provision/roles/configure_ochami/templates/openldap/update_ldap_conf.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/openldap/update_ldap_conf.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/openldap/update_ldap_conf.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/openldap/update_ldap_conf.sh.j2 diff --git a/provision/roles/configure_ochami/templates/powerscale/deploy_powerscale_csi.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/powerscale/deploy_powerscale_csi.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/powerscale/deploy_powerscale_csi.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/powerscale/deploy_powerscale_csi.sh.j2 diff --git a/provision/roles/configure_ochami/templates/pull_additional_images.yaml.j2 b/src/playbooks/provision/roles/configure_ochami/templates/pull_additional_images.yaml.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/pull_additional_images.yaml.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/pull_additional_images.yaml.j2 diff --git a/provision/roles/configure_ochami/templates/slurm/check_slurm_controller_status.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/slurm/check_slurm_controller_status.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/slurm/check_slurm_controller_status.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/slurm/check_slurm_controller_status.sh.j2 diff --git a/provision/roles/configure_ochami/templates/slurm/create_scratch.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/slurm/create_scratch.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/slurm/create_scratch.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/slurm/create_scratch.sh.j2 diff --git a/provision/roles/configure_ochami/templates/vast/configure_vast_installation.sh.j2 b/src/playbooks/provision/roles/configure_ochami/templates/vast/configure_vast_installation.sh.j2 similarity index 100% rename from provision/roles/configure_ochami/templates/vast/configure_vast_installation.sh.j2 rename to src/playbooks/provision/roles/configure_ochami/templates/vast/configure_vast_installation.sh.j2 diff --git a/provision/roles/configure_ochami/vars/main.yml b/src/playbooks/provision/roles/configure_ochami/vars/main.yml similarity index 100% rename from provision/roles/configure_ochami/vars/main.yml rename to src/playbooks/provision/roles/configure_ochami/vars/main.yml diff --git a/provision/roles/k8s_config/README.md b/src/playbooks/provision/roles/k8s_config/README.md similarity index 100% rename from provision/roles/k8s_config/README.md rename to src/playbooks/provision/roles/k8s_config/README.md diff --git a/provision/roles/k8s_config/files/empty_certificate_template.yml b/src/playbooks/provision/roles/k8s_config/files/empty_certificate_template.yml similarity index 100% rename from provision/roles/k8s_config/files/empty_certificate_template.yml rename to src/playbooks/provision/roles/k8s_config/files/empty_certificate_template.yml diff --git a/provision/roles/k8s_config/tasks/create_k8s_config_nfs.yml b/src/playbooks/provision/roles/k8s_config/tasks/create_k8s_config_nfs.yml similarity index 100% rename from provision/roles/k8s_config/tasks/create_k8s_config_nfs.yml rename to src/playbooks/provision/roles/k8s_config/tasks/create_k8s_config_nfs.yml diff --git a/provision/roles/k8s_config/tasks/create_node_dir.yml b/src/playbooks/provision/roles/k8s_config/tasks/create_node_dir.yml similarity index 100% rename from provision/roles/k8s_config/tasks/create_node_dir.yml rename to src/playbooks/provision/roles/k8s_config/tasks/create_node_dir.yml diff --git a/provision/roles/k8s_config/tasks/get_powerscale_dependencies.yml b/src/playbooks/provision/roles/k8s_config/tasks/get_powerscale_dependencies.yml similarity index 100% rename from provision/roles/k8s_config/tasks/get_powerscale_dependencies.yml rename to src/playbooks/provision/roles/k8s_config/tasks/get_powerscale_dependencies.yml diff --git a/provision/roles/k8s_config/tasks/main.yml b/src/playbooks/provision/roles/k8s_config/tasks/main.yml similarity index 100% rename from provision/roles/k8s_config/tasks/main.yml rename to src/playbooks/provision/roles/k8s_config/tasks/main.yml diff --git a/provision/roles/k8s_config/templates/ps_storage_class.j2 b/src/playbooks/provision/roles/k8s_config/templates/ps_storage_class.j2 similarity index 100% rename from provision/roles/k8s_config/templates/ps_storage_class.j2 rename to src/playbooks/provision/roles/k8s_config/templates/ps_storage_class.j2 diff --git a/provision/roles/k8s_config/vars/main.yml b/src/playbooks/provision/roles/k8s_config/vars/main.yml similarity index 100% rename from provision/roles/k8s_config/vars/main.yml rename to src/playbooks/provision/roles/k8s_config/vars/main.yml diff --git a/provision/roles/mount_config/README.md b/src/playbooks/provision/roles/mount_config/README.md similarity index 100% rename from provision/roles/mount_config/README.md rename to src/playbooks/provision/roles/mount_config/README.md diff --git a/provision/roles/mount_config/tasks/build_host_mount_map.yml b/src/playbooks/provision/roles/mount_config/tasks/build_host_mount_map.yml similarity index 100% rename from provision/roles/mount_config/tasks/build_host_mount_map.yml rename to src/playbooks/provision/roles/mount_config/tasks/build_host_mount_map.yml diff --git a/provision/roles/mount_config/tasks/cloud_init.yml b/src/playbooks/provision/roles/mount_config/tasks/cloud_init.yml similarity index 100% rename from provision/roles/mount_config/tasks/cloud_init.yml rename to src/playbooks/provision/roles/mount_config/tasks/cloud_init.yml diff --git a/provision/roles/mount_config/tasks/determine_target_groups.yml b/src/playbooks/provision/roles/mount_config/tasks/determine_target_groups.yml similarity index 100% rename from provision/roles/mount_config/tasks/determine_target_groups.yml rename to src/playbooks/provision/roles/mount_config/tasks/determine_target_groups.yml diff --git a/provision/roles/mount_config/tasks/main.yml b/src/playbooks/provision/roles/mount_config/tasks/main.yml similarity index 100% rename from provision/roles/mount_config/tasks/main.yml rename to src/playbooks/provision/roles/mount_config/tasks/main.yml diff --git a/provision/roles/mount_config/tasks/mount_on_oim.yml b/src/playbooks/provision/roles/mount_config/tasks/mount_on_oim.yml similarity index 100% rename from provision/roles/mount_config/tasks/mount_on_oim.yml rename to src/playbooks/provision/roles/mount_config/tasks/mount_on_oim.yml diff --git a/provision/roles/mount_config/tasks/nfs_client.yml b/src/playbooks/provision/roles/mount_config/tasks/nfs_client.yml similarity index 100% rename from provision/roles/mount_config/tasks/nfs_client.yml rename to src/playbooks/provision/roles/mount_config/tasks/nfs_client.yml diff --git a/provision/roles/mount_config/tasks/process_single_mount.yml b/src/playbooks/provision/roles/mount_config/tasks/process_single_mount.yml similarity index 100% rename from provision/roles/mount_config/tasks/process_single_mount.yml rename to src/playbooks/provision/roles/mount_config/tasks/process_single_mount.yml diff --git a/provision/roles/mount_config/tasks/process_single_powervault.yml b/src/playbooks/provision/roles/mount_config/tasks/process_single_powervault.yml similarity index 100% rename from provision/roles/mount_config/tasks/process_single_powervault.yml rename to src/playbooks/provision/roles/mount_config/tasks/process_single_powervault.yml diff --git a/provision/roles/mount_config/tasks/process_single_swap.yml b/src/playbooks/provision/roles/mount_config/tasks/process_single_swap.yml similarity index 100% rename from provision/roles/mount_config/tasks/process_single_swap.yml rename to src/playbooks/provision/roles/mount_config/tasks/process_single_swap.yml diff --git a/provision/roles/mount_config/tasks/swap_config.yml b/src/playbooks/provision/roles/mount_config/tasks/swap_config.yml similarity index 100% rename from provision/roles/mount_config/tasks/swap_config.yml rename to src/playbooks/provision/roles/mount_config/tasks/swap_config.yml diff --git a/provision/roles/mount_config/templates/setup_iscsi_storage.sh.j2 b/src/playbooks/provision/roles/mount_config/templates/setup_iscsi_storage.sh.j2 similarity index 100% rename from provision/roles/mount_config/templates/setup_iscsi_storage.sh.j2 rename to src/playbooks/provision/roles/mount_config/templates/setup_iscsi_storage.sh.j2 diff --git a/provision/roles/mount_config/vars/main.yml b/src/playbooks/provision/roles/mount_config/vars/main.yml similarity index 100% rename from provision/roles/mount_config/vars/main.yml rename to src/playbooks/provision/roles/mount_config/vars/main.yml diff --git a/provision/roles/openldap/README.md b/src/playbooks/provision/roles/openldap/README.md similarity index 100% rename from provision/roles/openldap/README.md rename to src/playbooks/provision/roles/openldap/README.md diff --git a/provision/roles/openldap/tasks/main.yml b/src/playbooks/provision/roles/openldap/tasks/main.yml similarity index 100% rename from provision/roles/openldap/tasks/main.yml rename to src/playbooks/provision/roles/openldap/tasks/main.yml diff --git a/provision/roles/openldap/vars/main.yml b/src/playbooks/provision/roles/openldap/vars/main.yml similarity index 100% rename from provision/roles/openldap/vars/main.yml rename to src/playbooks/provision/roles/openldap/vars/main.yml diff --git a/provision/roles/passwordless_ssh/tasks/build_host_lists.yml b/src/playbooks/provision/roles/passwordless_ssh/tasks/build_host_lists.yml similarity index 100% rename from provision/roles/passwordless_ssh/tasks/build_host_lists.yml rename to src/playbooks/provision/roles/passwordless_ssh/tasks/build_host_lists.yml diff --git a/provision/roles/passwordless_ssh/tasks/configure_oim_ssh.yml b/src/playbooks/provision/roles/passwordless_ssh/tasks/configure_oim_ssh.yml similarity index 100% rename from provision/roles/passwordless_ssh/tasks/configure_oim_ssh.yml rename to src/playbooks/provision/roles/passwordless_ssh/tasks/configure_oim_ssh.yml diff --git a/provision/roles/passwordless_ssh/tasks/main.yml b/src/playbooks/provision/roles/passwordless_ssh/tasks/main.yml similarity index 100% rename from provision/roles/passwordless_ssh/tasks/main.yml rename to src/playbooks/provision/roles/passwordless_ssh/tasks/main.yml diff --git a/provision/roles/passwordless_ssh/tasks/read_nodes_yaml.yml b/src/playbooks/provision/roles/passwordless_ssh/tasks/read_nodes_yaml.yml similarity index 100% rename from provision/roles/passwordless_ssh/tasks/read_nodes_yaml.yml rename to src/playbooks/provision/roles/passwordless_ssh/tasks/read_nodes_yaml.yml diff --git a/provision/roles/passwordless_ssh/vars/main.yml b/src/playbooks/provision/roles/passwordless_ssh/vars/main.yml similarity index 100% rename from provision/roles/passwordless_ssh/vars/main.yml rename to src/playbooks/provision/roles/passwordless_ssh/vars/main.yml diff --git a/provision/roles/provision_validations/README.md b/src/playbooks/provision/roles/provision_validations/README.md similarity index 100% rename from provision/roles/provision_validations/README.md rename to src/playbooks/provision/roles/provision_validations/README.md diff --git a/provision/roles/provision_validations/tasks/build_stream_prerequisite.yml b/src/playbooks/provision/roles/provision_validations/tasks/build_stream_prerequisite.yml similarity index 100% rename from provision/roles/provision_validations/tasks/build_stream_prerequisite.yml rename to src/playbooks/provision/roles/provision_validations/tasks/build_stream_prerequisite.yml diff --git a/provision/roles/provision_validations/tasks/include_inputs.yml b/src/playbooks/provision/roles/provision_validations/tasks/include_inputs.yml similarity index 100% rename from provision/roles/provision_validations/tasks/include_inputs.yml rename to src/playbooks/provision/roles/provision_validations/tasks/include_inputs.yml diff --git a/provision/roles/provision_validations/tasks/include_software_config.yml b/src/playbooks/provision/roles/provision_validations/tasks/include_software_config.yml similarity index 100% rename from provision/roles/provision_validations/tasks/include_software_config.yml rename to src/playbooks/provision/roles/provision_validations/tasks/include_software_config.yml diff --git a/provision/roles/provision_validations/tasks/main.yml b/src/playbooks/provision/roles/provision_validations/tasks/main.yml similarity index 100% rename from provision/roles/provision_validations/tasks/main.yml rename to src/playbooks/provision/roles/provision_validations/tasks/main.yml diff --git a/provision/roles/provision_validations/tasks/update_hosts.yml b/src/playbooks/provision/roles/provision_validations/tasks/update_hosts.yml similarity index 100% rename from provision/roles/provision_validations/tasks/update_hosts.yml rename to src/playbooks/provision/roles/provision_validations/tasks/update_hosts.yml diff --git a/provision/roles/provision_validations/tasks/validate_image.yml b/src/playbooks/provision/roles/provision_validations/tasks/validate_image.yml similarity index 100% rename from provision/roles/provision_validations/tasks/validate_image.yml rename to src/playbooks/provision/roles/provision_validations/tasks/validate_image.yml diff --git a/provision/roles/provision_validations/tasks/validate_mapping_file.yml b/src/playbooks/provision/roles/provision_validations/tasks/validate_mapping_file.yml similarity index 100% rename from provision/roles/provision_validations/tasks/validate_mapping_file.yml rename to src/playbooks/provision/roles/provision_validations/tasks/validate_mapping_file.yml diff --git a/provision/roles/provision_validations/tasks/validate_mapping_mechanism.yml b/src/playbooks/provision/roles/provision_validations/tasks/validate_mapping_mechanism.yml similarity index 100% rename from provision/roles/provision_validations/tasks/validate_mapping_mechanism.yml rename to src/playbooks/provision/roles/provision_validations/tasks/validate_mapping_mechanism.yml diff --git a/provision/roles/provision_validations/tasks/validate_oim_timezone.yml b/src/playbooks/provision/roles/provision_validations/tasks/validate_oim_timezone.yml similarity index 100% rename from provision/roles/provision_validations/tasks/validate_oim_timezone.yml rename to src/playbooks/provision/roles/provision_validations/tasks/validate_oim_timezone.yml diff --git a/provision/roles/provision_validations/tasks/validate_openldap_container.yml b/src/playbooks/provision/roles/provision_validations/tasks/validate_openldap_container.yml similarity index 100% rename from provision/roles/provision_validations/tasks/validate_openldap_container.yml rename to src/playbooks/provision/roles/provision_validations/tasks/validate_openldap_container.yml diff --git a/provision/roles/provision_validations/tasks/validate_telemetry_config.yml b/src/playbooks/provision/roles/provision_validations/tasks/validate_telemetry_config.yml similarity index 100% rename from provision/roles/provision_validations/tasks/validate_telemetry_config.yml rename to src/playbooks/provision/roles/provision_validations/tasks/validate_telemetry_config.yml diff --git a/provision/roles/provision_validations/vars/main.yml b/src/playbooks/provision/roles/provision_validations/vars/main.yml similarity index 100% rename from provision/roles/provision_validations/vars/main.yml rename to src/playbooks/provision/roles/provision_validations/vars/main.yml diff --git a/provision/roles/slurm_config/README.md b/src/playbooks/provision/roles/slurm_config/README.md similarity index 100% rename from provision/roles/slurm_config/README.md rename to src/playbooks/provision/roles/slurm_config/README.md diff --git a/provision/roles/slurm_config/defaults/main.yml b/src/playbooks/provision/roles/slurm_config/defaults/main.yml similarity index 100% rename from provision/roles/slurm_config/defaults/main.yml rename to src/playbooks/provision/roles/slurm_config/defaults/main.yml diff --git a/provision/roles/slurm_config/files/pull_benchmarks.sh b/src/playbooks/provision/roles/slurm_config/files/pull_benchmarks.sh similarity index 100% rename from provision/roles/slurm_config/files/pull_benchmarks.sh rename to src/playbooks/provision/roles/slurm_config/files/pull_benchmarks.sh diff --git a/provision/roles/slurm_config/tasks/backup_conf.yml b/src/playbooks/provision/roles/slurm_config/tasks/backup_conf.yml similarity index 100% rename from provision/roles/slurm_config/tasks/backup_conf.yml rename to src/playbooks/provision/roles/slurm_config/tasks/backup_conf.yml diff --git a/provision/roles/slurm_config/tasks/build_slurm_conf.yml b/src/playbooks/provision/roles/slurm_config/tasks/build_slurm_conf.yml similarity index 100% rename from provision/roles/slurm_config/tasks/build_slurm_conf.yml rename to src/playbooks/provision/roles/slurm_config/tasks/build_slurm_conf.yml diff --git a/provision/roles/slurm_config/tasks/check_ctld_running.yml b/src/playbooks/provision/roles/slurm_config/tasks/check_ctld_running.yml similarity index 100% rename from provision/roles/slurm_config/tasks/check_ctld_running.yml rename to src/playbooks/provision/roles/slurm_config/tasks/check_ctld_running.yml diff --git a/provision/roles/slurm_config/tasks/confs.yml b/src/playbooks/provision/roles/slurm_config/tasks/confs.yml similarity index 100% rename from provision/roles/slurm_config/tasks/confs.yml rename to src/playbooks/provision/roles/slurm_config/tasks/confs.yml diff --git a/provision/roles/slurm_config/tasks/create_slurm_dir.yml b/src/playbooks/provision/roles/slurm_config/tasks/create_slurm_dir.yml similarity index 100% rename from provision/roles/slurm_config/tasks/create_slurm_dir.yml rename to src/playbooks/provision/roles/slurm_config/tasks/create_slurm_dir.yml diff --git a/provision/roles/slurm_config/tasks/detect_busy_nodes.yml b/src/playbooks/provision/roles/slurm_config/tasks/detect_busy_nodes.yml similarity index 100% rename from provision/roles/slurm_config/tasks/detect_busy_nodes.yml rename to src/playbooks/provision/roles/slurm_config/tasks/detect_busy_nodes.yml diff --git a/provision/roles/slurm_config/tasks/drain_and_remove_node.yml b/src/playbooks/provision/roles/slurm_config/tasks/drain_and_remove_node.yml similarity index 100% rename from provision/roles/slurm_config/tasks/drain_and_remove_node.yml rename to src/playbooks/provision/roles/slurm_config/tasks/drain_and_remove_node.yml diff --git a/provision/roles/slurm_config/tasks/exist_dir.yml b/src/playbooks/provision/roles/slurm_config/tasks/exist_dir.yml similarity index 100% rename from provision/roles/slurm_config/tasks/exist_dir.yml rename to src/playbooks/provision/roles/slurm_config/tasks/exist_dir.yml diff --git a/provision/roles/slurm_config/tasks/extract_path_overrides.yml b/src/playbooks/provision/roles/slurm_config/tasks/extract_path_overrides.yml similarity index 100% rename from provision/roles/slurm_config/tasks/extract_path_overrides.yml rename to src/playbooks/provision/roles/slurm_config/tasks/extract_path_overrides.yml diff --git a/provision/roles/slurm_config/tasks/handle_extra_confs.yml b/src/playbooks/provision/roles/slurm_config/tasks/handle_extra_confs.yml similarity index 100% rename from provision/roles/slurm_config/tasks/handle_extra_confs.yml rename to src/playbooks/provision/roles/slurm_config/tasks/handle_extra_confs.yml diff --git a/provision/roles/slurm_config/tasks/hpc_tools.yml b/src/playbooks/provision/roles/slurm_config/tasks/hpc_tools.yml similarity index 100% rename from provision/roles/slurm_config/tasks/hpc_tools.yml rename to src/playbooks/provision/roles/slurm_config/tasks/hpc_tools.yml diff --git a/provision/roles/slurm_config/tasks/main.yml b/src/playbooks/provision/roles/slurm_config/tasks/main.yml similarity index 100% rename from provision/roles/slurm_config/tasks/main.yml rename to src/playbooks/provision/roles/slurm_config/tasks/main.yml diff --git a/provision/roles/slurm_config/tasks/openldap_config.yml b/src/playbooks/provision/roles/slurm_config/tasks/openldap_config.yml similarity index 100% rename from provision/roles/slurm_config/tasks/openldap_config.yml rename to src/playbooks/provision/roles/slurm_config/tasks/openldap_config.yml diff --git a/provision/roles/slurm_config/tasks/read_node_homogeneous.yml b/src/playbooks/provision/roles/slurm_config/tasks/read_node_homogeneous.yml similarity index 100% rename from provision/roles/slurm_config/tasks/read_node_homogeneous.yml rename to src/playbooks/provision/roles/slurm_config/tasks/read_node_homogeneous.yml diff --git a/provision/roles/slurm_config/tasks/read_node_idrac.yml b/src/playbooks/provision/roles/slurm_config/tasks/read_node_idrac.yml similarity index 100% rename from provision/roles/slurm_config/tasks/read_node_idrac.yml rename to src/playbooks/provision/roles/slurm_config/tasks/read_node_idrac.yml diff --git a/provision/roles/slurm_config/tasks/read_node_idrac_group.yml b/src/playbooks/provision/roles/slurm_config/tasks/read_node_idrac_group.yml similarity index 100% rename from provision/roles/slurm_config/tasks/read_node_idrac_group.yml rename to src/playbooks/provision/roles/slurm_config/tasks/read_node_idrac_group.yml diff --git a/provision/roles/slurm_config/tasks/read_slurm_hostnames.yml b/src/playbooks/provision/roles/slurm_config/tasks/read_slurm_hostnames.yml similarity index 100% rename from provision/roles/slurm_config/tasks/read_slurm_hostnames.yml rename to src/playbooks/provision/roles/slurm_config/tasks/read_slurm_hostnames.yml diff --git a/provision/roles/slurm_config/tasks/remove_node.yml b/src/playbooks/provision/roles/slurm_config/tasks/remove_node.yml similarity index 100% rename from provision/roles/slurm_config/tasks/remove_node.yml rename to src/playbooks/provision/roles/slurm_config/tasks/remove_node.yml diff --git a/provision/roles/slurm_config/tasks/update_hosts_munge.yml b/src/playbooks/provision/roles/slurm_config/tasks/update_hosts_munge.yml similarity index 100% rename from provision/roles/slurm_config/tasks/update_hosts_munge.yml rename to src/playbooks/provision/roles/slurm_config/tasks/update_hosts_munge.yml diff --git a/provision/roles/slurm_config/tasks/upgrade_conf_db_backup.yml b/src/playbooks/provision/roles/slurm_config/tasks/upgrade_conf_db_backup.yml similarity index 100% rename from provision/roles/slurm_config/tasks/upgrade_conf_db_backup.yml rename to src/playbooks/provision/roles/slurm_config/tasks/upgrade_conf_db_backup.yml diff --git a/provision/roles/slurm_config/tasks/validate_path_overrides.yml b/src/playbooks/provision/roles/slurm_config/tasks/validate_path_overrides.yml similarity index 100% rename from provision/roles/slurm_config/tasks/validate_path_overrides.yml rename to src/playbooks/provision/roles/slurm_config/tasks/validate_path_overrides.yml diff --git a/provision/roles/slurm_config/templates/all_other.conf.j2 b/src/playbooks/provision/roles/slurm_config/templates/all_other.conf.j2 similarity index 100% rename from provision/roles/slurm_config/templates/all_other.conf.j2 rename to src/playbooks/provision/roles/slurm_config/templates/all_other.conf.j2 diff --git a/provision/roles/slurm_config/templates/benchmark_tools.list.j2 b/src/playbooks/provision/roles/slurm_config/templates/benchmark_tools.list.j2 similarity index 100% rename from provision/roles/slurm_config/templates/benchmark_tools.list.j2 rename to src/playbooks/provision/roles/slurm_config/templates/benchmark_tools.list.j2 diff --git a/provision/roles/slurm_config/templates/container_image.list.j2 b/src/playbooks/provision/roles/slurm_config/templates/container_image.list.j2 similarity index 100% rename from provision/roles/slurm_config/templates/container_image.list.j2 rename to src/playbooks/provision/roles/slurm_config/templates/container_image.list.j2 diff --git a/provision/roles/slurm_config/templates/download_container_image.sh.j2 b/src/playbooks/provision/roles/slurm_config/templates/download_container_image.sh.j2 similarity index 100% rename from provision/roles/slurm_config/templates/download_container_image.sh.j2 rename to src/playbooks/provision/roles/slurm_config/templates/download_container_image.sh.j2 diff --git a/provision/roles/slurm_config/templates/logout_user.sh.j2 b/src/playbooks/provision/roles/slurm_config/templates/logout_user.sh.j2 similarity index 100% rename from provision/roles/slurm_config/templates/logout_user.sh.j2 rename to src/playbooks/provision/roles/slurm_config/templates/logout_user.sh.j2 diff --git a/provision/roles/slurm_config/templates/mariadb-server.cnf.j2 b/src/playbooks/provision/roles/slurm_config/templates/mariadb-server.cnf.j2 similarity index 100% rename from provision/roles/slurm_config/templates/mariadb-server.cnf.j2 rename to src/playbooks/provision/roles/slurm_config/templates/mariadb-server.cnf.j2 diff --git a/provision/roles/slurm_config/templates/pull_benchmarks.sh.j2 b/src/playbooks/provision/roles/slurm_config/templates/pull_benchmarks.sh.j2 similarity index 100% rename from provision/roles/slurm_config/templates/pull_benchmarks.sh.j2 rename to src/playbooks/provision/roles/slurm_config/templates/pull_benchmarks.sh.j2 diff --git a/provision/roles/slurm_config/vars/main.yml b/src/playbooks/provision/roles/slurm_config/vars/main.yml similarity index 100% rename from provision/roles/slurm_config/vars/main.yml rename to src/playbooks/provision/roles/slurm_config/vars/main.yml diff --git a/provision/roles/telemetry/README.md b/src/playbooks/provision/roles/telemetry/README.md similarity index 100% rename from provision/roles/telemetry/README.md rename to src/playbooks/provision/roles/telemetry/README.md diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/.gitignore b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/.gitignore similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/.gitignore rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/.gitignore diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/Makefile b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/Makefile similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/Makefile rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/Makefile diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/README.md b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/README.md similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/README.md rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/README.md diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/health_check.bash b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/health_check.bash similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/health_check.bash rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/health_check.bash diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/host_map.slurm-cluster.json b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/host_map.slurm-cluster.json similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/host_map.slurm-cluster.json rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/host_map.slurm-cluster.json diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/make_host_map.bash b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/make_host_map.bash similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/make_host_map.bash rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/make_host_map.bash diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/make_host_map.dell.py b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/make_host_map.dell.py similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/make_host_map.dell.py rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/make_host_map.dell.py diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/manifest.yaml.in b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/manifest.yaml.in similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/manifest.yaml.in rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/manifest.yaml.in diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/mkmanifest.py b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/mkmanifest.py similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/mkmanifest.py rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/mkmanifest.py diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/Chart.yaml b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/Chart.yaml similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/Chart.yaml rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/Chart.yaml diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/NetworkAttachmentDefinition.yaml b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/NetworkAttachmentDefinition.yaml similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/NetworkAttachmentDefinition.yaml rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/NetworkAttachmentDefinition.yaml diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-agg.yaml b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-agg.yaml similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-agg.yaml rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-agg.yaml diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-store.yaml b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-store.yaml similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-store.yaml rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Service.nersc-ldms-store.yaml diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-agg.yaml b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-agg.yaml similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-agg.yaml rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-agg.yaml diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-store.yaml b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-store.yaml similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-store.yaml rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc-ldms-aggr/templates/Statefulset.nersc-ldms-store.yaml diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/nersc_ldms_make_ldms_config.py b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc_ldms_make_ldms_config.py similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/nersc_ldms_make_ldms_config.py rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/nersc_ldms_make_ldms_config.py diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/decomp.json b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/decomp.json similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/scripts/decomp.json rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/decomp.json diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/kafka.conf b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/kafka.conf similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/scripts/kafka.conf rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/kafka.conf diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_ls.bash b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_ls.bash similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_ls.bash rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_ls.bash diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_publish.py b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_publish.py similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_publish.py rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_publish.py diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_subscribe.py b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_subscribe.py similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_subscribe.py rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_msg_subscribe.py diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_stats.bash b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_stats.bash similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_stats.bash rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldms_stats.bash diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd.bash b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd.bash similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd.bash rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd.bash diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd_stream.bash b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd_stream.bash similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd_stream.bash rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/ldmsd_stream.bash diff --git a/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/start_munge.bash b/src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/start_munge.bash similarity index 100% rename from provision/roles/telemetry/files/nersc-ldms-aggr/scripts/start_munge.bash rename to src/playbooks/provision/roles/telemetry/files/nersc-ldms-aggr/scripts/start_munge.bash diff --git a/provision/roles/telemetry/tasks/check_pxe_changes.yml b/src/playbooks/provision/roles/telemetry/tasks/check_pxe_changes.yml similarity index 100% rename from provision/roles/telemetry/tasks/check_pxe_changes.yml rename to src/playbooks/provision/roles/telemetry/tasks/check_pxe_changes.yml diff --git a/provision/roles/telemetry/tasks/deploy_powerscale_metrics.yml b/src/playbooks/provision/roles/telemetry/tasks/deploy_powerscale_metrics.yml similarity index 100% rename from provision/roles/telemetry/tasks/deploy_powerscale_metrics.yml rename to src/playbooks/provision/roles/telemetry/tasks/deploy_powerscale_metrics.yml diff --git a/provision/roles/telemetry/tasks/deploy_ufm_telemetry.yml b/src/playbooks/provision/roles/telemetry/tasks/deploy_ufm_telemetry.yml similarity index 100% rename from provision/roles/telemetry/tasks/deploy_ufm_telemetry.yml rename to src/playbooks/provision/roles/telemetry/tasks/deploy_ufm_telemetry.yml diff --git a/provision/roles/telemetry/tasks/deploy_vast_telemetry.yml b/src/playbooks/provision/roles/telemetry/tasks/deploy_vast_telemetry.yml similarity index 100% rename from provision/roles/telemetry/tasks/deploy_vast_telemetry.yml rename to src/playbooks/provision/roles/telemetry/tasks/deploy_vast_telemetry.yml diff --git a/provision/roles/telemetry/tasks/deploy_vector_ldms.yml b/src/playbooks/provision/roles/telemetry/tasks/deploy_vector_ldms.yml similarity index 100% rename from provision/roles/telemetry/tasks/deploy_vector_ldms.yml rename to src/playbooks/provision/roles/telemetry/tasks/deploy_vector_ldms.yml diff --git a/provision/roles/telemetry/tasks/deploy_vector_ome.yml b/src/playbooks/provision/roles/telemetry/tasks/deploy_vector_ome.yml similarity index 100% rename from provision/roles/telemetry/tasks/deploy_vector_ome.yml rename to src/playbooks/provision/roles/telemetry/tasks/deploy_vector_ome.yml diff --git a/provision/roles/telemetry/tasks/derive_sink_support_flags.yml b/src/playbooks/provision/roles/telemetry/tasks/derive_sink_support_flags.yml similarity index 100% rename from provision/roles/telemetry/tasks/derive_sink_support_flags.yml rename to src/playbooks/provision/roles/telemetry/tasks/derive_sink_support_flags.yml diff --git a/provision/roles/telemetry/tasks/generate_service_cluster_metadata.yml b/src/playbooks/provision/roles/telemetry/tasks/generate_service_cluster_metadata.yml similarity index 100% rename from provision/roles/telemetry/tasks/generate_service_cluster_metadata.yml rename to src/playbooks/provision/roles/telemetry/tasks/generate_service_cluster_metadata.yml diff --git a/provision/roles/telemetry/tasks/generate_telemetry_deployments.yml b/src/playbooks/provision/roles/telemetry/tasks/generate_telemetry_deployments.yml similarity index 100% rename from provision/roles/telemetry/tasks/generate_telemetry_deployments.yml rename to src/playbooks/provision/roles/telemetry/tasks/generate_telemetry_deployments.yml diff --git a/provision/roles/telemetry/tasks/generate_telemetry_script.yml b/src/playbooks/provision/roles/telemetry/tasks/generate_telemetry_script.yml similarity index 100% rename from provision/roles/telemetry/tasks/generate_telemetry_script.yml rename to src/playbooks/provision/roles/telemetry/tasks/generate_telemetry_script.yml diff --git a/provision/roles/telemetry/tasks/get_powerscale_telemetry_dependencies.yml b/src/playbooks/provision/roles/telemetry/tasks/get_powerscale_telemetry_dependencies.yml similarity index 100% rename from provision/roles/telemetry/tasks/get_powerscale_telemetry_dependencies.yml rename to src/playbooks/provision/roles/telemetry/tasks/get_powerscale_telemetry_dependencies.yml diff --git a/provision/roles/telemetry/tasks/load_service_images.yml b/src/playbooks/provision/roles/telemetry/tasks/load_service_images.yml similarity index 100% rename from provision/roles/telemetry/tasks/load_service_images.yml rename to src/playbooks/provision/roles/telemetry/tasks/load_service_images.yml diff --git a/provision/roles/telemetry/tasks/main.yml b/src/playbooks/provision/roles/telemetry/tasks/main.yml similarity index 98% rename from provision/roles/telemetry/tasks/main.yml rename to src/playbooks/provision/roles/telemetry/tasks/main.yml index 8a7e9f6ab2..a24880ee0f 100644 --- a/provision/roles/telemetry/tasks/main.yml +++ b/src/playbooks/provision/roles/telemetry/tasks/main.yml @@ -57,7 +57,7 @@ ansible.builtin.include_tasks: load_service_images.yml - name: Check kube_vip reachability for validation - ansible.builtin.include_tasks: "{{ playbook_dir }}/../common/tasks/common/check_kube_vip_reachability.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/check_kube_vip_reachability.yml" when: - victoria_metrics_support | default(false) | bool - kube_vip is defined diff --git a/provision/roles/telemetry/tasks/read_software_config.yml b/src/playbooks/provision/roles/telemetry/tasks/read_software_config.yml similarity index 100% rename from provision/roles/telemetry/tasks/read_software_config.yml rename to src/playbooks/provision/roles/telemetry/tasks/read_software_config.yml diff --git a/provision/roles/telemetry/tasks/restart_ldms_configs.yml b/src/playbooks/provision/roles/telemetry/tasks/restart_ldms_configs.yml similarity index 100% rename from provision/roles/telemetry/tasks/restart_ldms_configs.yml rename to src/playbooks/provision/roles/telemetry/tasks/restart_ldms_configs.yml diff --git a/provision/roles/telemetry/tasks/telemetry_prereq.yml b/src/playbooks/provision/roles/telemetry/tasks/telemetry_prereq.yml similarity index 100% rename from provision/roles/telemetry/tasks/telemetry_prereq.yml rename to src/playbooks/provision/roles/telemetry/tasks/telemetry_prereq.yml diff --git a/provision/roles/telemetry/tasks/update_ldms_agg_config.yml b/src/playbooks/provision/roles/telemetry/tasks/update_ldms_agg_config.yml similarity index 100% rename from provision/roles/telemetry/tasks/update_ldms_agg_config.yml rename to src/playbooks/provision/roles/telemetry/tasks/update_ldms_agg_config.yml diff --git a/provision/roles/telemetry/tasks/update_ldms_sampler.yml b/src/playbooks/provision/roles/telemetry/tasks/update_ldms_sampler.yml similarity index 100% rename from provision/roles/telemetry/tasks/update_ldms_sampler.yml rename to src/playbooks/provision/roles/telemetry/tasks/update_ldms_sampler.yml diff --git a/provision/roles/telemetry/tasks/validate_idrac_inventory.yml b/src/playbooks/provision/roles/telemetry/tasks/validate_idrac_inventory.yml similarity index 100% rename from provision/roles/telemetry/tasks/validate_idrac_inventory.yml rename to src/playbooks/provision/roles/telemetry/tasks/validate_idrac_inventory.yml diff --git a/provision/roles/telemetry/templates/telemetry/cleanup_telemetry.sh.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/cleanup_telemetry.sh.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/cleanup_telemetry.sh.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/cleanup_telemetry.sh.j2 diff --git a/provision/roles/telemetry/templates/telemetry/common/telemetry_cleaner_rbac.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/common/telemetry_cleaner_rbac.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/common/telemetry_cleaner_rbac.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/common/telemetry_cleaner_rbac.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/common/telemetry_namespace_creation.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/common/telemetry_namespace_creation.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/common/telemetry_namespace_creation.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/common/telemetry_namespace_creation.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/common/telemetry_pod_cleanup.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/common/telemetry_pod_cleanup.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/common/telemetry_pod_cleanup.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/common/telemetry_pod_cleanup.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/common/telemetry_secret_creation.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/common/telemetry_secret_creation.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/common/telemetry_secret_creation.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/common/telemetry_secret_creation.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/idrac_telemetry/idrac_telemetry_statefulset.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/idrac_telemetry/idrac_telemetry_statefulset.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/idrac_telemetry/idrac_telemetry_statefulset.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/idrac_telemetry/idrac_telemetry_statefulset.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge_lb.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge_lb.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge_lb.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge_lb.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafkapump_user.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafkapump_user.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/kafka/kafka.kafkapump_user.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafkapump_user.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/kafka/kafka.tls_test_job.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.tls_test_job.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/kafka/kafka.tls_test_job.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.tls_test_job.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/kafka/kafka.topic.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.topic.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/kafka/kafka.topic.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.topic.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/kustomization.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kustomization.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/kustomization.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/kustomization.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/ldms/host_map.slurm-cluster.json.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/host_map.slurm-cluster.json.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/ldms/host_map.slurm-cluster.json.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/host_map.slurm-cluster.json.j2 diff --git a/provision/roles/telemetry/templates/telemetry/ldms/ldms_machine_config.json.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/ldms_machine_config.json.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/ldms/ldms_machine_config.json.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/ldms_machine_config.json.j2 diff --git a/provision/roles/telemetry/templates/telemetry/ldms/ldmsauth.conf.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/ldmsauth.conf.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/ldms/ldmsauth.conf.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/ldmsauth.conf.j2 diff --git a/provision/roles/telemetry/templates/telemetry/ldms/ldmsd.sampler.env.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/ldmsd.sampler.env.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/ldms/ldmsd.sampler.env.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/ldmsd.sampler.env.j2 diff --git a/provision/roles/telemetry/templates/telemetry/ldms/sampler.conf.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/sampler.conf.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/ldms/sampler.conf.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/sampler.conf.j2 diff --git a/provision/roles/telemetry/templates/telemetry/ldms/values.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/values.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/ldms/values.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/ldms/values.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/powerscale/csi-volume-exporter.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/csi-volume-exporter.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/powerscale/csi-volume-exporter.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/csi-volume-exporter.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/powerscale/csm-metrics-deployment-direct.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/csm-metrics-deployment-direct.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/powerscale/csm-metrics-deployment-direct.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/csm-metrics-deployment-direct.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/powerscale/deploy_powerscale_telemetry.sh.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/deploy_powerscale_telemetry.sh.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/powerscale/deploy_powerscale_telemetry.sh.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/deploy_powerscale_telemetry.sh.j2 diff --git a/provision/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_syslog.sh.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_syslog.sh.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_syslog.sh.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_syslog.sh.j2 diff --git a/provision/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_telemetry.sh.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_telemetry.sh.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_telemetry.sh.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/powerscale/verify_powerscale_telemetry.sh.j2 diff --git a/provision/roles/telemetry/templates/telemetry/telemetry.sh.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/telemetry.sh.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/telemetry.sh.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/telemetry.sh.j2 diff --git a/provision/roles/telemetry/templates/telemetry/ufm/ufm-external-service.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/ufm/ufm-external-service.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/ufm/ufm-external-service.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/ufm/ufm-external-service.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/ufm/ufm-telemetry-secret.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/ufm/ufm-telemetry-secret.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/ufm/ufm-telemetry-secret.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/ufm/ufm-telemetry-secret.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vast/vast-external-service.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vast/vast-external-service.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vast/vast-external-service.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vast/vast-external-service.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vast/vast-telemetry-secret.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vast/vast-telemetry-secret.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vast/vast-telemetry-secret.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vast/vast-telemetry-secret.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-config.toml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-config.toml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vector-ldms-config.toml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-config.toml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-configmap.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-configmap.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vector-ldms-configmap.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-configmap.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-deployment.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-deployment.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vector-ldms-deployment.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-deployment.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-service.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-service.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vector-ldms-service.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ldms-service.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vector-ome-config.toml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-config.toml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vector-ome-config.toml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-config.toml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vector-ome-configmap.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-configmap.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vector-ome-configmap.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-configmap.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vector-ome-deployment.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-deployment.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vector-ome-deployment.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-deployment.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vector-ome-kafkauser.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-kafkauser.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vector-ome-kafkauser.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-kafkauser.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vector-ome-service.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-service.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vector-ome-service.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-service.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vlagent-vector-deployment.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vlagent-vector-deployment.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vlagent-vector-deployment.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vlagent-vector-deployment.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vlagent-vector-service.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vlagent-vector-service.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vlagent-vector-service.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vlagent-vector-service.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vmagent-vector-deployment.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vmagent-vector-deployment.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vmagent-vector-deployment.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vmagent-vector-deployment.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vmagent-vector-service.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vmagent-vector-service.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vmagent-vector-service.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vmagent-vector-service.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/vector/vmagent-vector.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vmagent-vector.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/vector/vmagent-vector.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vmagent-vector.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/gen_victoria_certs.sh.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/gen_victoria_certs.sh.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/gen_victoria_certs.sh.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/gen_victoria_certs.sh.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victoria-agent-deployment.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-agent-deployment.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victoria-agent-deployment.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-agent-deployment.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmagent.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmagent.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmagent.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmagent.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmcluster.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmcluster.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmcluster.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmcluster.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmscrape.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmscrape.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmscrape.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmscrape.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmsingle.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmsingle.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmsingle.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-operator-vmsingle.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victoria-statefulset.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-statefulset.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victoria-statefulset.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-statefulset.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victoria-tls-secret.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-tls-secret.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victoria-tls-secret.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-tls-secret.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victoria-tls-test-job.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-tls-test-job.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victoria-tls-test-job.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-tls-test-job.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victoria-vmagent-rbac.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-vmagent-rbac.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victoria-vmagent-rbac.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victoria-vmagent-rbac.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlagent.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlagent.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlagent.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlagent.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlcluster.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlcluster.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlcluster.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victorialogs-operator-vlcluster.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/victorialogs-vlagent-config.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victorialogs-vlagent-config.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/victorialogs-vlagent-config.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/victorialogs-vlagent-config.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/vlagent-syslog-tls-secret.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/vlagent-syslog-tls-secret.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/vlagent-syslog-tls-secret.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/vlagent-syslog-tls-secret.yaml.j2 diff --git a/provision/roles/telemetry/templates/telemetry/victoria/vmagent-scrape-config.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/vmagent-scrape-config.yaml.j2 similarity index 100% rename from provision/roles/telemetry/templates/telemetry/victoria/vmagent-scrape-config.yaml.j2 rename to src/playbooks/provision/roles/telemetry/templates/telemetry/victoria/vmagent-scrape-config.yaml.j2 diff --git a/provision/roles/telemetry/vars/main.yml b/src/playbooks/provision/roles/telemetry/vars/main.yml similarity index 100% rename from provision/roles/telemetry/vars/main.yml rename to src/playbooks/provision/roles/telemetry/vars/main.yml diff --git a/rollback/ansible.cfg b/src/playbooks/rollback/ansible.cfg similarity index 79% rename from rollback/ansible.cfg rename to src/playbooks/rollback/ansible.cfg index c4795ac63f..79242b79e4 100644 --- a/rollback/ansible.cfg +++ b/src/playbooks/rollback/ansible.cfg @@ -9,10 +9,10 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins +callback_plugins = ../../common/callback_plugins roles_path = roles:../upgrade/roles:../utils/roles -library = ../common/library/modules -module_utils = ../common/library/module_utils +library = ../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/rollback/playbooks/archive_upgrade_artifacts.yml b/src/playbooks/rollback/playbooks/archive_upgrade_artifacts.yml similarity index 100% rename from rollback/playbooks/archive_upgrade_artifacts.yml rename to src/playbooks/rollback/playbooks/archive_upgrade_artifacts.yml diff --git a/rollback/playbooks/load_rollback_credentials.yml b/src/playbooks/rollback/playbooks/load_rollback_credentials.yml similarity index 100% rename from rollback/playbooks/load_rollback_credentials.yml rename to src/playbooks/rollback/playbooks/load_rollback_credentials.yml diff --git a/rollback/playbooks/rollback_build_stream.yml b/src/playbooks/rollback/playbooks/rollback_build_stream.yml similarity index 100% rename from rollback/playbooks/rollback_build_stream.yml rename to src/playbooks/rollback/playbooks/rollback_build_stream.yml diff --git a/rollback/playbooks/rollback_k8s.yml b/src/playbooks/rollback/playbooks/rollback_k8s.yml similarity index 100% rename from rollback/playbooks/rollback_k8s.yml rename to src/playbooks/rollback/playbooks/rollback_k8s.yml diff --git a/rollback/playbooks/rollback_oim.yml b/src/playbooks/rollback/playbooks/rollback_oim.yml similarity index 100% rename from rollback/playbooks/rollback_oim.yml rename to src/playbooks/rollback/playbooks/rollback_oim.yml diff --git a/rollback/playbooks/rollback_slurm.yml b/src/playbooks/rollback/playbooks/rollback_slurm.yml similarity index 99% rename from rollback/playbooks/rollback_slurm.yml rename to src/playbooks/rollback/playbooks/rollback_slurm.yml index 821f54d2c9..14fae6522e 100644 --- a/rollback/playbooks/rollback_slurm.yml +++ b/src/playbooks/rollback/playbooks/rollback_slurm.yml @@ -244,7 +244,7 @@ when: hostvars['localhost']['oim_node_name'] is not defined - name: Refresh OpenCHAMI access token - ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/openchami_auth.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../../common/tasks/common/openchami_auth.yml" vars: oim_node_name: "{{ hostvars['localhost']['oim_node_name'] }}" diff --git a/rollback/roles/rollback_buildstream/defaults/main.yml b/src/playbooks/rollback/roles/rollback_buildstream/defaults/main.yml similarity index 100% rename from rollback/roles/rollback_buildstream/defaults/main.yml rename to src/playbooks/rollback/roles/rollback_buildstream/defaults/main.yml diff --git a/rollback/roles/rollback_buildstream/handlers/main.yml b/src/playbooks/rollback/roles/rollback_buildstream/handlers/main.yml similarity index 100% rename from rollback/roles/rollback_buildstream/handlers/main.yml rename to src/playbooks/rollback/roles/rollback_buildstream/handlers/main.yml diff --git a/rollback/roles/rollback_buildstream/tasks/buildstream.yml b/src/playbooks/rollback/roles/rollback_buildstream/tasks/buildstream.yml similarity index 100% rename from rollback/roles/rollback_buildstream/tasks/buildstream.yml rename to src/playbooks/rollback/roles/rollback_buildstream/tasks/buildstream.yml diff --git a/rollback/roles/rollback_buildstream/tasks/gitlab.yml b/src/playbooks/rollback/roles/rollback_buildstream/tasks/gitlab.yml similarity index 100% rename from rollback/roles/rollback_buildstream/tasks/gitlab.yml rename to src/playbooks/rollback/roles/rollback_buildstream/tasks/gitlab.yml diff --git a/rollback/roles/rollback_buildstream/tasks/main.yml b/src/playbooks/rollback/roles/rollback_buildstream/tasks/main.yml similarity index 100% rename from rollback/roles/rollback_buildstream/tasks/main.yml rename to src/playbooks/rollback/roles/rollback_buildstream/tasks/main.yml diff --git a/rollback/roles/rollback_buildstream/tasks/postgres.yml b/src/playbooks/rollback/roles/rollback_buildstream/tasks/postgres.yml similarity index 100% rename from rollback/roles/rollback_buildstream/tasks/postgres.yml rename to src/playbooks/rollback/roles/rollback_buildstream/tasks/postgres.yml diff --git a/rollback/roles/rollback_buildstream/tasks/preflight.yml b/src/playbooks/rollback/roles/rollback_buildstream/tasks/preflight.yml similarity index 100% rename from rollback/roles/rollback_buildstream/tasks/preflight.yml rename to src/playbooks/rollback/roles/rollback_buildstream/tasks/preflight.yml diff --git a/rollback/roles/rollback_buildstream/tasks/status_update.yml b/src/playbooks/rollback/roles/rollback_buildstream/tasks/status_update.yml similarity index 100% rename from rollback/roles/rollback_buildstream/tasks/status_update.yml rename to src/playbooks/rollback/roles/rollback_buildstream/tasks/status_update.yml diff --git a/rollback/roles/rollback_buildstream/templates/rollback_summary.j2 b/src/playbooks/rollback/roles/rollback_buildstream/templates/rollback_summary.j2 similarity index 100% rename from rollback/roles/rollback_buildstream/templates/rollback_summary.j2 rename to src/playbooks/rollback/roles/rollback_buildstream/templates/rollback_summary.j2 diff --git a/rollback/roles/rollback_buildstream/vars/main.yml b/src/playbooks/rollback/roles/rollback_buildstream/vars/main.yml similarity index 100% rename from rollback/roles/rollback_buildstream/vars/main.yml rename to src/playbooks/rollback/roles/rollback_buildstream/vars/main.yml diff --git a/rollback/roles/rollback_k8s/defaults/main.yml b/src/playbooks/rollback/roles/rollback_k8s/defaults/main.yml similarity index 100% rename from rollback/roles/rollback_k8s/defaults/main.yml rename to src/playbooks/rollback/roles/rollback_k8s/defaults/main.yml diff --git a/rollback/roles/rollback_k8s/tasks/acquire_rollback_lock.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/acquire_rollback_lock.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/acquire_rollback_lock.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/acquire_rollback_lock.yml diff --git a/rollback/roles/rollback_k8s/tasks/add_nodes_to_inventory.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/add_nodes_to_inventory.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/add_nodes_to_inventory.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/add_nodes_to_inventory.yml diff --git a/rollback/roles/rollback_k8s/tasks/cleanup_metallb_ips.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/cleanup_metallb_ips.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/cleanup_metallb_ips.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/cleanup_metallb_ips.yml diff --git a/rollback/roles/rollback_k8s/tasks/cleanup_stale_volume_attachments.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/cleanup_stale_volume_attachments.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/cleanup_stale_volume_attachments.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/cleanup_stale_volume_attachments.yml diff --git a/rollback/roles/rollback_k8s/tasks/downgrade_cp_packages.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/downgrade_cp_packages.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/downgrade_cp_packages.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/downgrade_cp_packages.yml diff --git a/rollback/roles/rollback_k8s/tasks/downgrade_packages_single_node.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/downgrade_packages_single_node.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/downgrade_packages_single_node.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/downgrade_packages_single_node.yml diff --git a/rollback/roles/rollback_k8s/tasks/downgrade_worker_packages.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/downgrade_worker_packages.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/downgrade_worker_packages.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/downgrade_worker_packages.yml diff --git a/rollback/roles/rollback_k8s/tasks/fix_vip_split_brain.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/fix_vip_split_brain.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/fix_vip_split_brain.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/fix_vip_split_brain.yml diff --git a/rollback/roles/rollback_k8s/tasks/identify_vip_leader.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/identify_vip_leader.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/identify_vip_leader.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/identify_vip_leader.yml diff --git a/rollback/roles/rollback_k8s/tasks/load_rollback_status.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/load_rollback_status.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/load_rollback_status.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/load_rollback_status.yml diff --git a/rollback/roles/rollback_k8s/tasks/load_version_vars.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/load_version_vars.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/load_version_vars.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/load_version_vars.yml diff --git a/rollback/roles/rollback_k8s/tasks/main.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/main.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/main.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/main.yml diff --git a/rollback/roles/rollback_k8s/tasks/post_validation.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/post_validation.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/post_validation.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/post_validation.yml diff --git a/rollback/roles/rollback_k8s/tasks/preflight_checks.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/preflight_checks.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/preflight_checks.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/preflight_checks.yml diff --git a/rollback/roles/rollback_k8s/tasks/release_rollback_lock.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/release_rollback_lock.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/release_rollback_lock.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/release_rollback_lock.yml diff --git a/rollback/roles/rollback_k8s/tasks/remove_kubelet_feature_gates.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/remove_kubelet_feature_gates.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/remove_kubelet_feature_gates.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/remove_kubelet_feature_gates.yml diff --git a/rollback/roles/rollback_k8s/tasks/restart_network_pods.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/restart_network_pods.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/restart_network_pods.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/restart_network_pods.yml diff --git a/rollback/roles/rollback_k8s/tasks/restore_bss_cloud_init.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/restore_bss_cloud_init.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/restore_bss_cloud_init.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/restore_bss_cloud_init.yml diff --git a/rollback/roles/rollback_k8s/tasks/restore_etcd.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/restore_etcd.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/restore_etcd.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/restore_etcd.yml diff --git a/rollback/roles/rollback_k8s/tasks/restore_etcd_single_cp.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/restore_etcd_single_cp.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/restore_etcd_single_cp.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/restore_etcd_single_cp.yml diff --git a/rollback/roles/rollback_k8s/tasks/restore_helm.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/restore_helm.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/restore_helm.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/restore_helm.yml diff --git a/rollback/roles/rollback_k8s/tasks/restore_k8s_configs.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/restore_k8s_configs.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/restore_k8s_configs.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/restore_k8s_configs.yml diff --git a/rollback/roles/rollback_k8s/tasks/restore_k8s_configs_single_cp.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/restore_k8s_configs_single_cp.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/restore_k8s_configs_single_cp.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/restore_k8s_configs_single_cp.yml diff --git a/rollback/roles/rollback_k8s/tasks/start_control_plane.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/start_control_plane.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/start_control_plane.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/start_control_plane.yml diff --git a/rollback/roles/rollback_k8s/tasks/start_single_node.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/start_single_node.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/start_single_node.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/start_single_node.yml diff --git a/rollback/roles/rollback_k8s/tasks/start_workers.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/start_workers.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/start_workers.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/start_workers.yml diff --git a/rollback/roles/rollback_k8s/tasks/stop_cluster.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/stop_cluster.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/stop_cluster.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/stop_cluster.yml diff --git a/rollback/roles/rollback_k8s/tasks/update_kubelet_config.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/update_kubelet_config.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/update_kubelet_config.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/update_kubelet_config.yml diff --git a/rollback/roles/rollback_k8s/tasks/update_status.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/update_status.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/update_status.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/update_status.yml diff --git a/rollback/roles/rollback_k8s/tasks/verify_telemetry_rollback.yml b/src/playbooks/rollback/roles/rollback_k8s/tasks/verify_telemetry_rollback.yml similarity index 100% rename from rollback/roles/rollback_k8s/tasks/verify_telemetry_rollback.yml rename to src/playbooks/rollback/roles/rollback_k8s/tasks/verify_telemetry_rollback.yml diff --git a/rollback/roles/rollback_k8s/vars/main.yml b/src/playbooks/rollback/roles/rollback_k8s/vars/main.yml similarity index 100% rename from rollback/roles/rollback_k8s/vars/main.yml rename to src/playbooks/rollback/roles/rollback_k8s/vars/main.yml diff --git a/rollback/roles/rollback_openchami/tasks/main.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/main.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/main.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/main.yml diff --git a/rollback/roles/rollback_openchami/tasks/normalize_permissions.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/normalize_permissions.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/normalize_permissions.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/normalize_permissions.yml diff --git a/rollback/roles/rollback_openchami/tasks/post_rollback_health_check.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/post_rollback_health_check.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/post_rollback_health_check.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/post_rollback_health_check.yml diff --git a/rollback/roles/rollback_openchami/tasks/pre_rollback_checks.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/pre_rollback_checks.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/pre_rollback_checks.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/pre_rollback_checks.yml diff --git a/rollback/roles/rollback_openchami/tasks/reload_cloud_init_data.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/reload_cloud_init_data.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/reload_cloud_init_data.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/reload_cloud_init_data.yml diff --git a/rollback/roles/rollback_openchami/tasks/renew_certificates.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/renew_certificates.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/renew_certificates.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/renew_certificates.yml diff --git a/rollback/roles/rollback_openchami/tasks/resolve_admin_ip.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/resolve_admin_ip.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/resolve_admin_ip.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/resolve_admin_ip.yml diff --git a/rollback/roles/rollback_openchami/tasks/resolve_backup_dir.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/resolve_backup_dir.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/resolve_backup_dir.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/resolve_backup_dir.yml diff --git a/rollback/roles/rollback_openchami/tasks/restore_database.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/restore_database.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/restore_database.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/restore_database.yml diff --git a/rollback/roles/rollback_openchami/tasks/restore_quadlets_and_configs.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/restore_quadlets_and_configs.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/restore_quadlets_and_configs.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/restore_quadlets_and_configs.yml diff --git a/rollback/roles/rollback_openchami/tasks/rollback_status.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/rollback_status.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/rollback_status.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/rollback_status.yml diff --git a/rollback/roles/rollback_openchami/tasks/start_postgres_only.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/start_postgres_only.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/start_postgres_only.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/start_postgres_only.yml diff --git a/rollback/roles/rollback_openchami/tasks/start_v21_containers.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/start_v21_containers.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/start_v21_containers.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/start_v21_containers.yml diff --git a/rollback/roles/rollback_openchami/tasks/stop_current_containers.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/stop_current_containers.yml similarity index 100% rename from rollback/roles/rollback_openchami/tasks/stop_current_containers.yml rename to src/playbooks/rollback/roles/rollback_openchami/tasks/stop_current_containers.yml diff --git a/rollback/roles/rollback_openchami/vars/main.yml b/src/playbooks/rollback/roles/rollback_openchami/vars/main.yml similarity index 100% rename from rollback/roles/rollback_openchami/vars/main.yml rename to src/playbooks/rollback/roles/rollback_openchami/vars/main.yml diff --git a/rollback/roles/rollback_slurm/tasks/check_slurm_cluster.yml b/src/playbooks/rollback/roles/rollback_slurm/tasks/check_slurm_cluster.yml similarity index 100% rename from rollback/roles/rollback_slurm/tasks/check_slurm_cluster.yml rename to src/playbooks/rollback/roles/rollback_slurm/tasks/check_slurm_cluster.yml diff --git a/rollback/roles/rollback_slurm/tasks/main.yml b/src/playbooks/rollback/roles/rollback_slurm/tasks/main.yml similarity index 100% rename from rollback/roles/rollback_slurm/tasks/main.yml rename to src/playbooks/rollback/roles/rollback_slurm/tasks/main.yml diff --git a/rollback/roles/rollback_slurm/tasks/nfs_client.yml b/src/playbooks/rollback/roles/rollback_slurm/tasks/nfs_client.yml similarity index 100% rename from rollback/roles/rollback_slurm/tasks/nfs_client.yml rename to src/playbooks/rollback/roles/rollback_slurm/tasks/nfs_client.yml diff --git a/rollback/roles/rollback_slurm/tasks/slurm_backup.yml b/src/playbooks/rollback/roles/rollback_slurm/tasks/slurm_backup.yml similarity index 100% rename from rollback/roles/rollback_slurm/tasks/slurm_backup.yml rename to src/playbooks/rollback/roles/rollback_slurm/tasks/slurm_backup.yml diff --git a/rollback/roles/rollback_slurm/vars/main.yml b/src/playbooks/rollback/roles/rollback_slurm/vars/main.yml similarity index 100% rename from rollback/roles/rollback_slurm/vars/main.yml rename to src/playbooks/rollback/roles/rollback_slurm/vars/main.yml diff --git a/rollback/rollback.yml b/src/playbooks/rollback/rollback.yml similarity index 100% rename from rollback/rollback.yml rename to src/playbooks/rollback/rollback.yml diff --git a/telemetry/ansible.cfg b/src/playbooks/telemetry/ansible.cfg similarity index 78% rename from telemetry/ansible.cfg rename to src/playbooks/telemetry/ansible.cfg index 4e21bb4a8a..f64c90b140 100644 --- a/telemetry/ansible.cfg +++ b/src/playbooks/telemetry/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = ../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = ../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/telemetry/roles/idrac_telemetry/tasks/create_telemetry_report.yml b/src/playbooks/telemetry/roles/idrac_telemetry/tasks/create_telemetry_report.yml similarity index 100% rename from telemetry/roles/idrac_telemetry/tasks/create_telemetry_report.yml rename to src/playbooks/telemetry/roles/idrac_telemetry/tasks/create_telemetry_report.yml diff --git a/telemetry/roles/idrac_telemetry/tasks/initiate_telemetry_service_cluster.yml b/src/playbooks/telemetry/roles/idrac_telemetry/tasks/initiate_telemetry_service_cluster.yml similarity index 100% rename from telemetry/roles/idrac_telemetry/tasks/initiate_telemetry_service_cluster.yml rename to src/playbooks/telemetry/roles/idrac_telemetry/tasks/initiate_telemetry_service_cluster.yml diff --git a/telemetry/roles/idrac_telemetry/tasks/main.yml b/src/playbooks/telemetry/roles/idrac_telemetry/tasks/main.yml similarity index 100% rename from telemetry/roles/idrac_telemetry/tasks/main.yml rename to src/playbooks/telemetry/roles/idrac_telemetry/tasks/main.yml diff --git a/telemetry/roles/idrac_telemetry/tasks/remove_deleted_nodes.yml b/src/playbooks/telemetry/roles/idrac_telemetry/tasks/remove_deleted_nodes.yml similarity index 100% rename from telemetry/roles/idrac_telemetry/tasks/remove_deleted_nodes.yml rename to src/playbooks/telemetry/roles/idrac_telemetry/tasks/remove_deleted_nodes.yml diff --git a/telemetry/roles/idrac_telemetry/tasks/trigger_telemetry_collection.yml b/src/playbooks/telemetry/roles/idrac_telemetry/tasks/trigger_telemetry_collection.yml similarity index 100% rename from telemetry/roles/idrac_telemetry/tasks/trigger_telemetry_collection.yml rename to src/playbooks/telemetry/roles/idrac_telemetry/tasks/trigger_telemetry_collection.yml diff --git a/telemetry/roles/idrac_telemetry/tasks/validate_bmcips_reachability.yml b/src/playbooks/telemetry/roles/idrac_telemetry/tasks/validate_bmcips_reachability.yml similarity index 100% rename from telemetry/roles/idrac_telemetry/tasks/validate_bmcips_reachability.yml rename to src/playbooks/telemetry/roles/idrac_telemetry/tasks/validate_bmcips_reachability.yml diff --git a/telemetry/roles/idrac_telemetry/templates/telemetry_report.j2 b/src/playbooks/telemetry/roles/idrac_telemetry/templates/telemetry_report.j2 similarity index 100% rename from telemetry/roles/idrac_telemetry/templates/telemetry_report.j2 rename to src/playbooks/telemetry/roles/idrac_telemetry/templates/telemetry_report.j2 diff --git a/telemetry/roles/idrac_telemetry/vars/main.yml b/src/playbooks/telemetry/roles/idrac_telemetry/vars/main.yml similarity index 100% rename from telemetry/roles/idrac_telemetry/vars/main.yml rename to src/playbooks/telemetry/roles/idrac_telemetry/vars/main.yml diff --git a/telemetry/roles/service_k8s_telemetry/tasks/main.yml b/src/playbooks/telemetry/roles/service_k8s_telemetry/tasks/main.yml similarity index 100% rename from telemetry/roles/service_k8s_telemetry/tasks/main.yml rename to src/playbooks/telemetry/roles/service_k8s_telemetry/tasks/main.yml diff --git a/telemetry/roles/service_k8s_telemetry/tasks/update_metadata_file.yml b/src/playbooks/telemetry/roles/service_k8s_telemetry/tasks/update_metadata_file.yml similarity index 100% rename from telemetry/roles/service_k8s_telemetry/tasks/update_metadata_file.yml rename to src/playbooks/telemetry/roles/service_k8s_telemetry/tasks/update_metadata_file.yml diff --git a/telemetry/roles/service_k8s_telemetry/vars/main.yml b/src/playbooks/telemetry/roles/service_k8s_telemetry/vars/main.yml similarity index 100% rename from telemetry/roles/service_k8s_telemetry/vars/main.yml rename to src/playbooks/telemetry/roles/service_k8s_telemetry/vars/main.yml diff --git a/telemetry/roles/telemetry_disable/tasks/disable_powerscale_metrics.yml b/src/playbooks/telemetry/roles/telemetry_disable/tasks/disable_powerscale_metrics.yml similarity index 100% rename from telemetry/roles/telemetry_disable/tasks/disable_powerscale_metrics.yml rename to src/playbooks/telemetry/roles/telemetry_disable/tasks/disable_powerscale_metrics.yml diff --git a/telemetry/roles/telemetry_disable/tasks/main.yml b/src/playbooks/telemetry/roles/telemetry_disable/tasks/main.yml similarity index 92% rename from telemetry/roles/telemetry_disable/tasks/main.yml rename to src/playbooks/telemetry/roles/telemetry_disable/tasks/main.yml index 79bbc62bb4..4f9d1b819b 100644 --- a/telemetry/roles/telemetry_disable/tasks/main.yml +++ b/src/playbooks/telemetry/roles/telemetry_disable/tasks/main.yml @@ -26,7 +26,7 @@ file: "{{ telemetry_config_file }}" - name: Load HA configuration - ansible.builtin.include_tasks: "{{ playbook_dir }}/../common/tasks/common/load_ha_config.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/load_ha_config.yml" - name: Disable PowerScale metrics tags: diff --git a/telemetry/roles/telemetry_disable/vars/main.yml b/src/playbooks/telemetry/roles/telemetry_disable/vars/main.yml similarity index 100% rename from telemetry/roles/telemetry_disable/vars/main.yml rename to src/playbooks/telemetry/roles/telemetry_disable/vars/main.yml diff --git a/telemetry/roles/telemetry_enable/tasks/enable_powerscale_metrics.yml b/src/playbooks/telemetry/roles/telemetry_enable/tasks/enable_powerscale_metrics.yml similarity index 100% rename from telemetry/roles/telemetry_enable/tasks/enable_powerscale_metrics.yml rename to src/playbooks/telemetry/roles/telemetry_enable/tasks/enable_powerscale_metrics.yml diff --git a/telemetry/roles/telemetry_enable/tasks/main.yml b/src/playbooks/telemetry/roles/telemetry_enable/tasks/main.yml similarity index 92% rename from telemetry/roles/telemetry_enable/tasks/main.yml rename to src/playbooks/telemetry/roles/telemetry_enable/tasks/main.yml index 0914a08bc2..58cacbcfdf 100644 --- a/telemetry/roles/telemetry_enable/tasks/main.yml +++ b/src/playbooks/telemetry/roles/telemetry_enable/tasks/main.yml @@ -26,7 +26,7 @@ file: "{{ telemetry_config_file }}" - name: Load HA configuration - ansible.builtin.include_tasks: "{{ playbook_dir }}/../common/tasks/common/load_ha_config.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/load_ha_config.yml" - name: Enable PowerScale metrics tags: diff --git a/telemetry/roles/telemetry_enable/vars/main.yml b/src/playbooks/telemetry/roles/telemetry_enable/vars/main.yml similarity index 100% rename from telemetry/roles/telemetry_enable/vars/main.yml rename to src/playbooks/telemetry/roles/telemetry_enable/vars/main.yml diff --git a/telemetry/roles/telemetry_validation/files/timezone.txt b/src/playbooks/telemetry/roles/telemetry_validation/files/timezone.txt similarity index 100% rename from telemetry/roles/telemetry_validation/files/timezone.txt rename to src/playbooks/telemetry/roles/telemetry_validation/files/timezone.txt diff --git a/telemetry/roles/telemetry_validation/tasks/main.yml b/src/playbooks/telemetry/roles/telemetry_validation/tasks/main.yml similarity index 100% rename from telemetry/roles/telemetry_validation/tasks/main.yml rename to src/playbooks/telemetry/roles/telemetry_validation/tasks/main.yml diff --git a/telemetry/roles/telemetry_validation/tasks/validate_idrac_inventory.yml b/src/playbooks/telemetry/roles/telemetry_validation/tasks/validate_idrac_inventory.yml similarity index 100% rename from telemetry/roles/telemetry_validation/tasks/validate_idrac_inventory.yml rename to src/playbooks/telemetry/roles/telemetry_validation/tasks/validate_idrac_inventory.yml diff --git a/telemetry/roles/telemetry_validation/tasks/validate_telemetry_config.yml b/src/playbooks/telemetry/roles/telemetry_validation/tasks/validate_telemetry_config.yml similarity index 100% rename from telemetry/roles/telemetry_validation/tasks/validate_telemetry_config.yml rename to src/playbooks/telemetry/roles/telemetry_validation/tasks/validate_telemetry_config.yml diff --git a/telemetry/roles/telemetry_validation/tasks/validation_status_check.yml b/src/playbooks/telemetry/roles/telemetry_validation/tasks/validation_status_check.yml similarity index 100% rename from telemetry/roles/telemetry_validation/tasks/validation_status_check.yml rename to src/playbooks/telemetry/roles/telemetry_validation/tasks/validation_status_check.yml diff --git a/telemetry/roles/telemetry_validation/vars/main.yml b/src/playbooks/telemetry/roles/telemetry_validation/vars/main.yml similarity index 100% rename from telemetry/roles/telemetry_validation/vars/main.yml rename to src/playbooks/telemetry/roles/telemetry_validation/vars/main.yml diff --git a/telemetry/telemetry.yml b/src/playbooks/telemetry/telemetry.yml similarity index 100% rename from telemetry/telemetry.yml rename to src/playbooks/telemetry/telemetry.yml diff --git a/telemetry/telemetry_disable.yml b/src/playbooks/telemetry/telemetry_disable.yml similarity index 100% rename from telemetry/telemetry_disable.yml rename to src/playbooks/telemetry/telemetry_disable.yml diff --git a/telemetry/telemetry_enable.yml b/src/playbooks/telemetry/telemetry_enable.yml similarity index 100% rename from telemetry/telemetry_enable.yml rename to src/playbooks/telemetry/telemetry_enable.yml diff --git a/upgrade/ansible.cfg b/src/playbooks/upgrade/ansible.cfg similarity index 79% rename from upgrade/ansible.cfg rename to src/playbooks/upgrade/ansible.cfg index 48e778585b..4512adce29 100644 --- a/upgrade/ansible.cfg +++ b/src/playbooks/upgrade/ansible.cfg @@ -9,10 +9,10 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins +callback_plugins = ../../common/callback_plugins roles_path = roles:../utils/roles:../prepare_oim/roles -library = ../common/library/modules -module_utils = ../common/library/module_utils +library = ../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/upgrade/playbooks/reboot_and_verify_cloud_init.yml b/src/playbooks/upgrade/playbooks/reboot_and_verify_cloud_init.yml similarity index 100% rename from upgrade/playbooks/reboot_and_verify_cloud_init.yml rename to src/playbooks/upgrade/playbooks/reboot_and_verify_cloud_init.yml diff --git a/upgrade/playbooks/update_k8s_cloud_init_bss.yml b/src/playbooks/upgrade/playbooks/update_k8s_cloud_init_bss.yml similarity index 97% rename from upgrade/playbooks/update_k8s_cloud_init_bss.yml rename to src/playbooks/upgrade/playbooks/update_k8s_cloud_init_bss.yml index 4fc3a06485..1b00a3aab4 100644 --- a/upgrade/playbooks/update_k8s_cloud_init_bss.yml +++ b/src/playbooks/upgrade/playbooks/update_k8s_cloud_init_bss.yml @@ -68,7 +68,7 @@ msg: "Updating cloud-init and BSS for functional group: {{ functional_group_name }}" - name: Refresh OpenCHAMI access token - ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/openchami_auth.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../../common/tasks/common/openchami_auth.yml" vars: oim_node_name: "{{ hostvars['localhost']['oim_node_name'] }}" diff --git a/upgrade/playbooks/upgrade_build_image.yml b/src/playbooks/upgrade/playbooks/upgrade_build_image.yml similarity index 100% rename from upgrade/playbooks/upgrade_build_image.yml rename to src/playbooks/upgrade/playbooks/upgrade_build_image.yml diff --git a/upgrade/playbooks/upgrade_build_stream.yml b/src/playbooks/upgrade/playbooks/upgrade_build_stream.yml similarity index 100% rename from upgrade/playbooks/upgrade_build_stream.yml rename to src/playbooks/upgrade/playbooks/upgrade_build_stream.yml diff --git a/upgrade/playbooks/upgrade_cp.yml b/src/playbooks/upgrade/playbooks/upgrade_cp.yml similarity index 100% rename from upgrade/playbooks/upgrade_cp.yml rename to src/playbooks/upgrade/playbooks/upgrade_cp.yml diff --git a/upgrade/playbooks/upgrade_cp_first.yml b/src/playbooks/upgrade/playbooks/upgrade_cp_first.yml similarity index 100% rename from upgrade/playbooks/upgrade_cp_first.yml rename to src/playbooks/upgrade/playbooks/upgrade_cp_first.yml diff --git a/upgrade/playbooks/upgrade_k8s.yml b/src/playbooks/upgrade/playbooks/upgrade_k8s.yml similarity index 99% rename from upgrade/playbooks/upgrade_k8s.yml rename to src/playbooks/upgrade/playbooks/upgrade_k8s.yml index 2a57eb69b7..5c492c5b43 100644 --- a/upgrade/playbooks/upgrade_k8s.yml +++ b/src/playbooks/upgrade/playbooks/upgrade_k8s.yml @@ -31,7 +31,7 @@ tasks: - name: "Load upgrade_vars.yml for supported versions" ansible.builtin.include_vars: - file: "{{ playbook_dir }}/../../common/vars/upgrade_vars.yml" + file: "{{ playbook_dir }}/../../../common/vars/upgrade_vars.yml" - name: "Load software_config.json" ansible.builtin.slurp: @@ -118,7 +118,7 @@ - name: "Load upgrade_vars.yml" ansible.builtin.include_vars: - file: "{{ playbook_dir }}/../../common/vars/upgrade_vars.yml" + file: "{{ playbook_dir }}/../../../common/vars/upgrade_vars.yml" - name: "Extract K8s target version from upgrade configuration" ansible.builtin.set_fact: @@ -366,7 +366,7 @@ - name: "Load upgrade_vars.yml" ansible.builtin.include_vars: - file: "{{ playbook_dir }}/../../common/vars/upgrade_vars.yml" + file: "{{ playbook_dir }}/../../../common/vars/upgrade_vars.yml" - name: Set k8s_from_version from kube_vip ansible.builtin.set_fact: @@ -411,7 +411,7 @@ - name: "Load upgrade_vars.yml" ansible.builtin.include_vars: - file: "{{ playbook_dir }}/../../common/vars/upgrade_vars.yml" + file: "{{ playbook_dir }}/../../../common/vars/upgrade_vars.yml" - name: "Get current cluster version" ansible.builtin.command: /usr/bin/kubectl get nodes -o jsonpath='{.items[*].status.nodeInfo.kubeletVersion}' @@ -1347,7 +1347,7 @@ - name: Load upgrade_vars.yml ansible.builtin.slurp: - path: "{{ playbook_dir }}/../../common/vars/upgrade_vars.yml" + path: "{{ playbook_dir }}/../../../common/vars/upgrade_vars.yml" register: _upgrade_config_slurp - name: Parse upgrade_vars.yml @@ -1647,7 +1647,7 @@ - name: Load upgrade_vars.yml ansible.builtin.include_vars: - file: "{{ playbook_dir }}/../../common/vars/upgrade_vars.yml" + file: "{{ playbook_dir }}/../../../common/vars/upgrade_vars.yml" - name: Set k8s_target_version ansible.builtin.set_fact: diff --git a/upgrade/playbooks/upgrade_local_repo.yml b/src/playbooks/upgrade/playbooks/upgrade_local_repo.yml similarity index 100% rename from upgrade/playbooks/upgrade_local_repo.yml rename to src/playbooks/upgrade/playbooks/upgrade_local_repo.yml diff --git a/upgrade/playbooks/upgrade_oim.yml b/src/playbooks/upgrade/playbooks/upgrade_oim.yml similarity index 100% rename from upgrade/playbooks/upgrade_oim.yml rename to src/playbooks/upgrade/playbooks/upgrade_oim.yml diff --git a/upgrade/playbooks/upgrade_provision.yml b/src/playbooks/upgrade/playbooks/upgrade_provision.yml similarity index 100% rename from upgrade/playbooks/upgrade_provision.yml rename to src/playbooks/upgrade/playbooks/upgrade_provision.yml diff --git a/upgrade/playbooks/upgrade_slurm.yml b/src/playbooks/upgrade/playbooks/upgrade_slurm.yml similarity index 99% rename from upgrade/playbooks/upgrade_slurm.yml rename to src/playbooks/upgrade/playbooks/upgrade_slurm.yml index 538892c5e7..fbb470e5c6 100644 --- a/upgrade/playbooks/upgrade_slurm.yml +++ b/src/playbooks/upgrade/playbooks/upgrade_slurm.yml @@ -240,7 +240,7 @@ when: hostvars['localhost']['oim_node_name'] is not defined - name: Refresh OpenCHAMI access token - ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/openchami_auth.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../../common/tasks/common/openchami_auth.yml" vars: oim_node_name: "{{ hostvars['localhost']['oim_node_name'] }}" diff --git a/upgrade/playbooks/upgrade_telemetry.yml b/src/playbooks/upgrade/playbooks/upgrade_telemetry.yml similarity index 100% rename from upgrade/playbooks/upgrade_telemetry.yml rename to src/playbooks/upgrade/playbooks/upgrade_telemetry.yml diff --git a/upgrade/playbooks/upgrade_validations.yml b/src/playbooks/upgrade/playbooks/upgrade_validations.yml similarity index 100% rename from upgrade/playbooks/upgrade_validations.yml rename to src/playbooks/upgrade/playbooks/upgrade_validations.yml diff --git a/upgrade/playbooks/upgrade_worker_first.yml b/src/playbooks/upgrade/playbooks/upgrade_worker_first.yml similarity index 100% rename from upgrade/playbooks/upgrade_worker_first.yml rename to src/playbooks/upgrade/playbooks/upgrade_worker_first.yml diff --git a/upgrade/playbooks/upgrade_workers.yml b/src/playbooks/upgrade/playbooks/upgrade_workers.yml similarity index 100% rename from upgrade/playbooks/upgrade_workers.yml rename to src/playbooks/upgrade/playbooks/upgrade_workers.yml diff --git a/upgrade/prepare_upgrade.yml b/src/playbooks/upgrade/prepare_upgrade.yml similarity index 100% rename from upgrade/prepare_upgrade.yml rename to src/playbooks/upgrade/prepare_upgrade.yml diff --git a/upgrade/roles/import_input_parameters/scripts/merge_powerscale_values.py b/src/playbooks/upgrade/roles/import_input_parameters/scripts/merge_powerscale_values.py similarity index 100% rename from upgrade/roles/import_input_parameters/scripts/merge_powerscale_values.py rename to src/playbooks/upgrade/roles/import_input_parameters/scripts/merge_powerscale_values.py diff --git a/upgrade/roles/import_input_parameters/scripts/transform_software_config.py b/src/playbooks/upgrade/roles/import_input_parameters/scripts/transform_software_config.py similarity index 100% rename from upgrade/roles/import_input_parameters/scripts/transform_software_config.py rename to src/playbooks/upgrade/roles/import_input_parameters/scripts/transform_software_config.py diff --git a/upgrade/roles/import_input_parameters/tasks/display_warnings.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/display_warnings.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/display_warnings.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/display_warnings.yml diff --git a/upgrade/roles/import_input_parameters/tasks/main.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/main.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/main.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/main.yml diff --git a/upgrade/roles/import_input_parameters/tasks/precheck_backup_location.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/precheck_backup_location.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/precheck_backup_location.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/precheck_backup_location.yml diff --git a/upgrade/roles/import_input_parameters/tasks/restore_input_files.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/restore_input_files.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/restore_input_files.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/restore_input_files.yml diff --git a/upgrade/roles/import_input_parameters/tasks/restore_omnia_config_credentials.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/restore_omnia_config_credentials.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/restore_omnia_config_credentials.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/restore_omnia_config_credentials.yml diff --git a/upgrade/roles/import_input_parameters/tasks/restore_single_input_file.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/restore_single_input_file.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/restore_single_input_file.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/restore_single_input_file.yml diff --git a/upgrade/roles/import_input_parameters/tasks/restore_user_registry_credential.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/restore_user_registry_credential.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/restore_user_registry_credential.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/restore_user_registry_credential.yml diff --git a/upgrade/roles/import_input_parameters/tasks/set_backup_location.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/set_backup_location.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/set_backup_location.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/set_backup_location.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_build_stream_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_build_stream_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_build_stream_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_build_stream_config.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_gitlab_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_gitlab_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_gitlab_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_gitlab_config.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_high_availability_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_high_availability_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_high_availability_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_high_availability_config.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_local_repo_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_local_repo_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_local_repo_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_local_repo_config.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_network_spec.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_network_spec.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_network_spec.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_network_spec.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_omnia_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_omnia_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_omnia_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_omnia_config.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_powerscale_values.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_powerscale_values.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_powerscale_values.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_powerscale_values.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_provision_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_provision_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_provision_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_provision_config.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_pxe_mapping_file.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_pxe_mapping_file.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_pxe_mapping_file.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_pxe_mapping_file.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_software_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_software_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_software_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_software_config.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_storage_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_storage_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_storage_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_storage_config.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_telemetry_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_telemetry_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_telemetry_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_telemetry_config.yml diff --git a/upgrade/roles/import_input_parameters/tasks/transform_telemetry_storage_config.yml b/src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_telemetry_storage_config.yml similarity index 100% rename from upgrade/roles/import_input_parameters/tasks/transform_telemetry_storage_config.yml rename to src/playbooks/upgrade/roles/import_input_parameters/tasks/transform_telemetry_storage_config.yml diff --git a/upgrade/roles/import_input_parameters/templates/build_stream_config.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/build_stream_config.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/build_stream_config.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/build_stream_config.j2 diff --git a/upgrade/roles/import_input_parameters/templates/gitlab_config.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/gitlab_config.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/gitlab_config.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/gitlab_config.j2 diff --git a/upgrade/roles/import_input_parameters/templates/high_availability_config.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/high_availability_config.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/high_availability_config.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/high_availability_config.j2 diff --git a/upgrade/roles/import_input_parameters/templates/local_repo_config.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/local_repo_config.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/local_repo_config.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/local_repo_config.j2 diff --git a/upgrade/roles/import_input_parameters/templates/network_spec.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/network_spec.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/network_spec.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/network_spec.j2 diff --git a/upgrade/roles/import_input_parameters/templates/omnia_config.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/omnia_config.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/omnia_config.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/omnia_config.j2 diff --git a/upgrade/roles/import_input_parameters/templates/omnia_config_credentials.yml.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/omnia_config_credentials.yml.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/omnia_config_credentials.yml.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/omnia_config_credentials.yml.j2 diff --git a/upgrade/roles/import_input_parameters/templates/provision_config.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/provision_config.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/provision_config.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/provision_config.j2 diff --git a/upgrade/roles/import_input_parameters/templates/pxe_mapping_file.csv.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/pxe_mapping_file.csv.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/pxe_mapping_file.csv.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/pxe_mapping_file.csv.j2 diff --git a/upgrade/roles/import_input_parameters/templates/storage_config.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/storage_config.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/storage_config.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/storage_config.j2 diff --git a/upgrade/roles/import_input_parameters/templates/telemetry_config.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/telemetry_config.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/telemetry_config.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/telemetry_config.j2 diff --git a/upgrade/roles/import_input_parameters/templates/telemetry_storage_config.j2 b/src/playbooks/upgrade/roles/import_input_parameters/templates/telemetry_storage_config.j2 similarity index 100% rename from upgrade/roles/import_input_parameters/templates/telemetry_storage_config.j2 rename to src/playbooks/upgrade/roles/import_input_parameters/templates/telemetry_storage_config.j2 diff --git a/upgrade/roles/import_input_parameters/vars/main.yml b/src/playbooks/upgrade/roles/import_input_parameters/vars/main.yml similarity index 100% rename from upgrade/roles/import_input_parameters/vars/main.yml rename to src/playbooks/upgrade/roles/import_input_parameters/vars/main.yml diff --git a/upgrade/roles/manage_localrepo_inputs/tasks/load_and_validate.yml b/src/playbooks/upgrade/roles/manage_localrepo_inputs/tasks/load_and_validate.yml similarity index 96% rename from upgrade/roles/manage_localrepo_inputs/tasks/load_and_validate.yml rename to src/playbooks/upgrade/roles/manage_localrepo_inputs/tasks/load_and_validate.yml index 00edfe3458..e98795bb02 100644 --- a/upgrade/roles/manage_localrepo_inputs/tasks/load_and_validate.yml +++ b/src/playbooks/upgrade/roles/manage_localrepo_inputs/tasks/load_and_validate.yml @@ -45,17 +45,17 @@ - name: "Load — Check upgrade_vars.yml exists" ansible.builtin.stat: - path: "{{ role_path }}/../../../common/vars/upgrade_vars.yml" + path: "{{ role_path }}/../../../../common/vars/upgrade_vars.yml" register: _upgrade_config_stat - name: "Load — Fail if upgrade_vars.yml not found" ansible.builtin.fail: - msg: "upgrade_vars.yml not found at {{ role_path }}/../../../common/vars/upgrade_vars.yml" + msg: "upgrade_vars.yml not found at {{ role_path }}/../../../../common/vars/upgrade_vars.yml" when: not _upgrade_config_stat.stat.exists - name: "Load — Load upgrade_vars.yml" ansible.builtin.include_vars: - file: "{{ role_path }}/../../../common/vars/upgrade_vars.yml" + file: "{{ role_path }}/../../../../common/vars/upgrade_vars.yml" name: upgrade_config # --- Extract metadata --- diff --git a/upgrade/roles/manage_localrepo_inputs/tasks/main.yml b/src/playbooks/upgrade/roles/manage_localrepo_inputs/tasks/main.yml similarity index 100% rename from upgrade/roles/manage_localrepo_inputs/tasks/main.yml rename to src/playbooks/upgrade/roles/manage_localrepo_inputs/tasks/main.yml diff --git a/upgrade/roles/manage_localrepo_inputs/tasks/process_hop_chains.yml b/src/playbooks/upgrade/roles/manage_localrepo_inputs/tasks/process_hop_chains.yml similarity index 100% rename from upgrade/roles/manage_localrepo_inputs/tasks/process_hop_chains.yml rename to src/playbooks/upgrade/roles/manage_localrepo_inputs/tasks/process_hop_chains.yml diff --git a/upgrade/roles/manage_localrepo_inputs/tasks/validate_software_config.yml b/src/playbooks/upgrade/roles/manage_localrepo_inputs/tasks/validate_software_config.yml similarity index 100% rename from upgrade/roles/manage_localrepo_inputs/tasks/validate_software_config.yml rename to src/playbooks/upgrade/roles/manage_localrepo_inputs/tasks/validate_software_config.yml diff --git a/upgrade/roles/manage_localrepo_inputs/vars/main.yml b/src/playbooks/upgrade/roles/manage_localrepo_inputs/vars/main.yml similarity index 100% rename from upgrade/roles/manage_localrepo_inputs/vars/main.yml rename to src/playbooks/upgrade/roles/manage_localrepo_inputs/vars/main.yml diff --git a/upgrade/roles/prep_local_repo/README.md b/src/playbooks/upgrade/roles/prep_local_repo/README.md similarity index 100% rename from upgrade/roles/prep_local_repo/README.md rename to src/playbooks/upgrade/roles/prep_local_repo/README.md diff --git a/upgrade/roles/prep_local_repo/artifacts/repos.yml b/src/playbooks/upgrade/roles/prep_local_repo/artifacts/repos.yml similarity index 100% rename from upgrade/roles/prep_local_repo/artifacts/repos.yml rename to src/playbooks/upgrade/roles/prep_local_repo/artifacts/repos.yml diff --git a/upgrade/roles/prep_local_repo/tasks/create_staging.yml b/src/playbooks/upgrade/roles/prep_local_repo/tasks/create_staging.yml similarity index 100% rename from upgrade/roles/prep_local_repo/tasks/create_staging.yml rename to src/playbooks/upgrade/roles/prep_local_repo/tasks/create_staging.yml diff --git a/upgrade/roles/prep_local_repo/tasks/main.yml b/src/playbooks/upgrade/roles/prep_local_repo/tasks/main.yml similarity index 100% rename from upgrade/roles/prep_local_repo/tasks/main.yml rename to src/playbooks/upgrade/roles/prep_local_repo/tasks/main.yml diff --git a/upgrade/roles/prep_local_repo/tasks/sync_local_repo.yml b/src/playbooks/upgrade/roles/prep_local_repo/tasks/sync_local_repo.yml similarity index 100% rename from upgrade/roles/prep_local_repo/tasks/sync_local_repo.yml rename to src/playbooks/upgrade/roles/prep_local_repo/tasks/sync_local_repo.yml diff --git a/upgrade/roles/prep_local_repo/tasks/validate_prerequisites.yml b/src/playbooks/upgrade/roles/prep_local_repo/tasks/validate_prerequisites.yml similarity index 100% rename from upgrade/roles/prep_local_repo/tasks/validate_prerequisites.yml rename to src/playbooks/upgrade/roles/prep_local_repo/tasks/validate_prerequisites.yml diff --git a/upgrade/roles/prep_local_repo/vars/main.yml b/src/playbooks/upgrade/roles/prep_local_repo/vars/main.yml similarity index 100% rename from upgrade/roles/prep_local_repo/vars/main.yml rename to src/playbooks/upgrade/roles/prep_local_repo/vars/main.yml diff --git a/upgrade/roles/upgrade_build_stream/tasks/fresh_install.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/tasks/fresh_install.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/tasks/fresh_install.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/tasks/fresh_install.yml diff --git a/upgrade/roles/upgrade_build_stream/tasks/gitlab_ci_file.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_ci_file.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/tasks/gitlab_ci_file.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_ci_file.yml diff --git a/upgrade/roles/upgrade_build_stream/tasks/gitlab_config_upgrade.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_config_upgrade.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/tasks/gitlab_config_upgrade.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_config_upgrade.yml diff --git a/upgrade/roles/upgrade_build_stream/tasks/gitlab_example_catalog.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_example_catalog.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/tasks/gitlab_example_catalog.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_example_catalog.yml diff --git a/upgrade/roles/upgrade_build_stream/tasks/gitlab_input_file.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_input_file.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/tasks/gitlab_input_file.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_input_file.yml diff --git a/upgrade/roles/upgrade_build_stream/tasks/gitlab_load_config.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_load_config.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/tasks/gitlab_load_config.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/tasks/gitlab_load_config.yml diff --git a/upgrade/roles/upgrade_build_stream/tasks/main.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/tasks/main.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/tasks/main.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/tasks/main.yml diff --git a/upgrade/roles/upgrade_build_stream/tasks/upgrade_existing.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/tasks/upgrade_existing.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/tasks/upgrade_existing.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/tasks/upgrade_existing.yml diff --git a/upgrade/roles/upgrade_build_stream/tasks/validate.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/tasks/validate.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/tasks/validate.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/tasks/validate.yml diff --git a/upgrade/roles/upgrade_build_stream/vars/main.yml b/src/playbooks/upgrade/roles/upgrade_build_stream/vars/main.yml similarity index 100% rename from upgrade/roles/upgrade_build_stream/vars/main.yml rename to src/playbooks/upgrade/roles/upgrade_build_stream/vars/main.yml diff --git a/upgrade/roles/upgrade_cluster/tasks/main.yml b/src/playbooks/upgrade/roles/upgrade_cluster/tasks/main.yml similarity index 100% rename from upgrade/roles/upgrade_cluster/tasks/main.yml rename to src/playbooks/upgrade/roles/upgrade_cluster/tasks/main.yml diff --git a/upgrade/roles/upgrade_cluster/vars/main.yml b/src/playbooks/upgrade/roles/upgrade_cluster/vars/main.yml similarity index 100% rename from upgrade/roles/upgrade_cluster/vars/main.yml rename to src/playbooks/upgrade/roles/upgrade_cluster/vars/main.yml diff --git a/upgrade/roles/upgrade_k8s/defaults/main.yml b/src/playbooks/upgrade/roles/upgrade_k8s/defaults/main.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/defaults/main.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/defaults/main.yml diff --git a/upgrade/roles/upgrade_k8s/handlers/main.yml b/src/playbooks/upgrade/roles/upgrade_k8s/handlers/main.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/handlers/main.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/handlers/main.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/acquire_lock.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/acquire_lock.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/acquire_lock.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/acquire_lock.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/add_nodes_to_inventory.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/add_nodes_to_inventory.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/add_nodes_to_inventory.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/add_nodes_to_inventory.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/backup_etcd.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/backup_etcd.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/backup_etcd.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/backup_etcd.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/backup_k8s_config.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/backup_k8s_config.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/backup_k8s_config.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/backup_k8s_config.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/build_squashfs.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/build_squashfs.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/build_squashfs.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/build_squashfs.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/check_and_mark_hop_completed.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/check_and_mark_hop_completed.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/check_and_mark_hop_completed.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/check_and_mark_hop_completed.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/detect_addon_versions.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/detect_addon_versions.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/detect_addon_versions.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/detect_addon_versions.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/detect_hop_chain_from_manifest.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/detect_hop_chain_from_manifest.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/detect_hop_chain_from_manifest.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/detect_hop_chain_from_manifest.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/execute_single_hop.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/execute_single_hop.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/execute_single_hop.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/execute_single_hop.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/load_status.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/load_status.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/load_status.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/load_status.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/load_version_vars.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/load_version_vars.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/load_version_vars.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/load_version_vars.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/main.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/main.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/main.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/main.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/post_validation.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/post_validation.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/post_validation.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/post_validation.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/powerscale_backup_folder.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/powerscale_backup_folder.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/powerscale_backup_folder.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/powerscale_backup_folder.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/powerscale_prepare_upgrade.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/powerscale_prepare_upgrade.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/powerscale_prepare_upgrade.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/powerscale_prepare_upgrade.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/preflight_checks_pulp.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/preflight_checks_pulp.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/preflight_checks_pulp.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/preflight_checks_pulp.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/preflight_checks_storage.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/preflight_checks_storage.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/preflight_checks_storage.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/preflight_checks_storage.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/prep_merge_configs.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/prep_merge_configs.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/prep_merge_configs.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/prep_merge_configs.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/prep_phase.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/prep_phase.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/prep_phase.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/prep_phase.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/prep_phase_single_hop.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/prep_phase_single_hop.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/prep_phase_single_hop.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/prep_phase_single_hop.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/prep_sync_all_repos.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/prep_sync_all_repos.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/prep_sync_all_repos.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/prep_sync_all_repos.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/release_lock.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/release_lock.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/release_lock.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/release_lock.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_addon_validation.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_addon_validation.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_addon_validation.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_addon_validation.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_calico_upgrade.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_calico_upgrade.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_calico_upgrade.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_calico_upgrade.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_crio_install.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_crio_install.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_crio_install.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_crio_install.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_drain.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_drain.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_drain.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_drain.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_etcd_health_check.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_etcd_health_check.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_etcd_health_check.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_etcd_health_check.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_helm_upgrade.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_helm_upgrade.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_helm_upgrade.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_helm_upgrade.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_kubeadm_install.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_kubeadm_install.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_kubeadm_install.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_kubeadm_install.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_kubelet_install.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_kubelet_install.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_kubelet_install.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_kubelet_install.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_kubelet_restart.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_kubelet_restart.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_kubelet_restart.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_kubelet_restart.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_metallb_upgrade.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_metallb_upgrade.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_metallb_upgrade.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_metallb_upgrade.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_uncordon.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_uncordon.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_uncordon.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_uncordon.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_upgrade_apply.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_upgrade_apply.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_upgrade_apply.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_upgrade_apply.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_upgrade_node.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_upgrade_node.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_upgrade_node.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_upgrade_node.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/step_validate_node.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_validate_node.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/step_validate_node.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/step_validate_node.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/sync_local_repo.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/sync_local_repo.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/sync_local_repo.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/sync_local_repo.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/update_addon_step.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_addon_step.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/update_addon_step.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_addon_step.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/update_kcm_arguments.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_kcm_arguments.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/update_kcm_arguments.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_kcm_arguments.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/update_kubelet_config.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_kubelet_config.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/update_kubelet_config.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_kubelet_config.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/update_kubelet_feature_gates.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_kubelet_feature_gates.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/update_kubelet_feature_gates.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_kubelet_feature_gates.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/update_node_status.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_node_status.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/update_node_status.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_node_status.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/update_node_step.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_node_step.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/update_node_step.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_node_step.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/update_status.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_status.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/update_status.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/update_status.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/upgrade_addons.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_addons.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/upgrade_addons.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_addons.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/upgrade_cp_node.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_cp_node.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/upgrade_cp_node.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_cp_node.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/upgrade_powerscale.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_powerscale.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/upgrade_powerscale.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_powerscale.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/upgrade_worker.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_worker.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/upgrade_worker.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_worker.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/upgrade_worker_node.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_worker_node.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/upgrade_worker_node.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_worker_node.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/upgrade_workers_batch_inner.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_workers_batch_inner.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/upgrade_workers_batch_inner.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/upgrade_workers_batch_inner.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/validate_cluster_nodes.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/validate_cluster_nodes.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/validate_cluster_nodes.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/validate_cluster_nodes.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/validate_worker_ready.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/validate_worker_ready.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/validate_worker_ready.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/validate_worker_ready.yml diff --git a/upgrade/roles/upgrade_k8s/tasks/verify_images.yml b/src/playbooks/upgrade/roles/upgrade_k8s/tasks/verify_images.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/tasks/verify_images.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/tasks/verify_images.yml diff --git a/upgrade/roles/upgrade_k8s/templates/upgrade_repo.j2 b/src/playbooks/upgrade/roles/upgrade_k8s/templates/upgrade_repo.j2 similarity index 100% rename from upgrade/roles/upgrade_k8s/templates/upgrade_repo.j2 rename to src/playbooks/upgrade/roles/upgrade_k8s/templates/upgrade_repo.j2 diff --git a/upgrade/roles/upgrade_k8s/vars/main.yml b/src/playbooks/upgrade/roles/upgrade_k8s/vars/main.yml similarity index 100% rename from upgrade/roles/upgrade_k8s/vars/main.yml rename to src/playbooks/upgrade/roles/upgrade_k8s/vars/main.yml diff --git a/upgrade/roles/upgrade_oim/tasks/main.yml b/src/playbooks/upgrade/roles/upgrade_oim/tasks/main.yml similarity index 100% rename from upgrade/roles/upgrade_oim/tasks/main.yml rename to src/playbooks/upgrade/roles/upgrade_oim/tasks/main.yml diff --git a/upgrade/roles/upgrade_oim/vars/main.yml b/src/playbooks/upgrade/roles/upgrade_oim/vars/main.yml similarity index 100% rename from upgrade/roles/upgrade_oim/vars/main.yml rename to src/playbooks/upgrade/roles/upgrade_oim/vars/main.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/backup_openchami.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/backup_openchami.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/backup_openchami.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/backup_openchami.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/main.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/main.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/main.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/main.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/migrate_database.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/migrate_database.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/migrate_database.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/migrate_database.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/post_upgrade_health_check.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/post_upgrade_health_check.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/post_upgrade_health_check.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/post_upgrade_health_check.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/pre_upgrade_health_check.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/pre_upgrade_health_check.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/pre_upgrade_health_check.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/pre_upgrade_health_check.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/reload_cloud_init_data.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/reload_cloud_init_data.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/reload_cloud_init_data.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/reload_cloud_init_data.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/renew_certificates.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/renew_certificates.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/renew_certificates.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/renew_certificates.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/resolve_admin_ip.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/resolve_admin_ip.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/resolve_admin_ip.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/resolve_admin_ip.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/retrieve_postgres_credentials.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/retrieve_postgres_credentials.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/retrieve_postgres_credentials.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/retrieve_postgres_credentials.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/upgrade_openchami_containers.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/upgrade_openchami_containers.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/upgrade_openchami_containers.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/upgrade_openchami_containers.yml diff --git a/upgrade/roles/upgrade_openchami/tasks/upgrade_status.yml b/src/playbooks/upgrade/roles/upgrade_openchami/tasks/upgrade_status.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/tasks/upgrade_status.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/tasks/upgrade_status.yml diff --git a/upgrade/roles/upgrade_openchami/vars/main.yml b/src/playbooks/upgrade/roles/upgrade_openchami/vars/main.yml similarity index 100% rename from upgrade/roles/upgrade_openchami/vars/main.yml rename to src/playbooks/upgrade/roles/upgrade_openchami/vars/main.yml diff --git a/upgrade/roles/upgrade_slurm/tasks/check_slurm_cluster.yml b/src/playbooks/upgrade/roles/upgrade_slurm/tasks/check_slurm_cluster.yml similarity index 100% rename from upgrade/roles/upgrade_slurm/tasks/check_slurm_cluster.yml rename to src/playbooks/upgrade/roles/upgrade_slurm/tasks/check_slurm_cluster.yml diff --git a/upgrade/roles/upgrade_slurm/tasks/main.yml b/src/playbooks/upgrade/roles/upgrade_slurm/tasks/main.yml similarity index 100% rename from upgrade/roles/upgrade_slurm/tasks/main.yml rename to src/playbooks/upgrade/roles/upgrade_slurm/tasks/main.yml diff --git a/upgrade/roles/upgrade_slurm/tasks/nfs_client.yml b/src/playbooks/upgrade/roles/upgrade_slurm/tasks/nfs_client.yml similarity index 100% rename from upgrade/roles/upgrade_slurm/tasks/nfs_client.yml rename to src/playbooks/upgrade/roles/upgrade_slurm/tasks/nfs_client.yml diff --git a/upgrade/roles/upgrade_slurm/tasks/slurm_backup.yml b/src/playbooks/upgrade/roles/upgrade_slurm/tasks/slurm_backup.yml similarity index 100% rename from upgrade/roles/upgrade_slurm/tasks/slurm_backup.yml rename to src/playbooks/upgrade/roles/upgrade_slurm/tasks/slurm_backup.yml diff --git a/upgrade/roles/upgrade_slurm/vars/main.yml b/src/playbooks/upgrade/roles/upgrade_slurm/vars/main.yml similarity index 100% rename from upgrade/roles/upgrade_slurm/vars/main.yml rename to src/playbooks/upgrade/roles/upgrade_slurm/vars/main.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/apply_victoria_crs.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/apply_victoria_crs.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/apply_victoria_crs.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/apply_victoria_crs.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/backup_telemetry.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/backup_telemetry.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/backup_telemetry.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/backup_telemetry.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/backup_victoria.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/backup_victoria.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/backup_victoria.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/backup_victoria.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/detect_victoria_state.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/detect_victoria_state.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/detect_victoria_state.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/detect_victoria_state.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/detect_victoria_upgrade_needed.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/detect_victoria_upgrade_needed.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/detect_victoria_upgrade_needed.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/detect_victoria_upgrade_needed.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/execute_telemetry_sh.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/execute_telemetry_sh.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/execute_telemetry_sh.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/execute_telemetry_sh.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/include_required_input.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/include_required_input.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/include_required_input.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/include_required_input.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/main.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/main.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/main.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/main.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/migrate_statefulset.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/migrate_statefulset.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/migrate_statefulset.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/migrate_statefulset.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/migrate_vmsingle_to_vmcluster.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/migrate_vmsingle_to_vmcluster.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/migrate_vmsingle_to_vmcluster.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/migrate_vmsingle_to_vmcluster.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/patch_idrac_termination_grace_period.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/patch_idrac_termination_grace_period.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/patch_idrac_termination_grace_period.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/patch_idrac_termination_grace_period.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/relabel_pvc.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/relabel_pvc.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/relabel_pvc.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/relabel_pvc.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/upgrade_operator.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/upgrade_operator.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/upgrade_operator.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/upgrade_operator.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/verify_victoria.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/verify_victoria.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/verify_victoria.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/verify_victoria.yml diff --git a/upgrade/roles/upgrade_telemetry/tasks/victoria_metrics_upgrade.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/victoria_metrics_upgrade.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/tasks/victoria_metrics_upgrade.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/tasks/victoria_metrics_upgrade.yml diff --git a/upgrade/roles/upgrade_telemetry/templates/find_ip_conflict_svcs.sh.j2 b/src/playbooks/upgrade/roles/upgrade_telemetry/templates/find_ip_conflict_svcs.sh.j2 similarity index 100% rename from upgrade/roles/upgrade_telemetry/templates/find_ip_conflict_svcs.sh.j2 rename to src/playbooks/upgrade/roles/upgrade_telemetry/templates/find_ip_conflict_svcs.sh.j2 diff --git a/upgrade/roles/upgrade_telemetry/templates/inject_vm_lb_ips.py.j2 b/src/playbooks/upgrade/roles/upgrade_telemetry/templates/inject_vm_lb_ips.py.j2 similarity index 100% rename from upgrade/roles/upgrade_telemetry/templates/inject_vm_lb_ips.py.j2 rename to src/playbooks/upgrade/roles/upgrade_telemetry/templates/inject_vm_lb_ips.py.j2 diff --git a/upgrade/roles/upgrade_telemetry/vars/main.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/vars/main.yml similarity index 100% rename from upgrade/roles/upgrade_telemetry/vars/main.yml rename to src/playbooks/upgrade/roles/upgrade_telemetry/vars/main.yml diff --git a/upgrade/upgrade.yml b/src/playbooks/upgrade/upgrade.yml similarity index 100% rename from upgrade/upgrade.yml rename to src/playbooks/upgrade/upgrade.yml diff --git a/utils/ansible.cfg b/src/playbooks/utils/ansible.cfg similarity index 77% rename from utils/ansible.cfg rename to src/playbooks/utils/ansible.cfg index e22c6ad50f..0b64e5bbfb 100644 --- a/utils/ansible.cfg +++ b/src/playbooks/utils/ansible.cfg @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = ../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../common/callback_plugins +library = ../../common/library/modules +module_utils = ../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/utils/create_container_group.yml b/src/playbooks/utils/create_container_group.yml similarity index 100% rename from utils/create_container_group.yml rename to src/playbooks/utils/create_container_group.yml diff --git a/input_validation/ansible.cfg b/src/playbooks/utils/credential_utility/ansible.cfg similarity index 67% rename from input_validation/ansible.cfg rename to src/playbooks/utils/credential_utility/ansible.cfg index ad2f32eb86..ea3be3ddb9 100644 --- a/input_validation/ansible.cfg +++ b/src/playbooks/utils/credential_utility/ansible.cfg @@ -1,5 +1,5 @@ [defaults] -log_path = /opt/omnia/log/core/playbooks/input_validation.log +log_path = /opt/omnia/log/core/playbooks/credential_utility.log remote_tmp = /opt/omnia/tmp/.ansible/tmp/ host_key_checking = false forks = 5 @@ -9,9 +9,9 @@ interpreter_python = /usr/bin/python3 deprecation_warnings = false show_task_path_on_failure = false stdout_callback = omnia_default -callback_plugins = ../common/callback_plugins -library = ../common/library/modules -module_utils = ../common/library/module_utils +callback_plugins = ../../../common/callback_plugins +library = ../../../common/library/modules +module_utils = ../../../common/library/module_utils [persistent_connection] command_timeout = 180 diff --git a/utils/credential_utility/get_config_credentials.yml b/src/playbooks/utils/credential_utility/get_config_credentials.yml similarity index 100% rename from utils/credential_utility/get_config_credentials.yml rename to src/playbooks/utils/credential_utility/get_config_credentials.yml diff --git a/utils/credential_utility/roles/create_config/tasks/create_credential_file.yml b/src/playbooks/utils/credential_utility/roles/create_config/tasks/create_credential_file.yml similarity index 100% rename from utils/credential_utility/roles/create_config/tasks/create_credential_file.yml rename to src/playbooks/utils/credential_utility/roles/create_config/tasks/create_credential_file.yml diff --git a/utils/credential_utility/roles/create_config/tasks/main.yml b/src/playbooks/utils/credential_utility/roles/create_config/tasks/main.yml similarity index 92% rename from utils/credential_utility/roles/create_config/tasks/main.yml rename to src/playbooks/utils/credential_utility/roles/create_config/tasks/main.yml index 2d5d6c43aa..50967019d9 100644 --- a/utils/credential_utility/roles/create_config/tasks/main.yml +++ b/src/playbooks/utils/credential_utility/roles/create_config/tasks/main.yml @@ -14,7 +14,7 @@ --- - name: Include vars for encrypted credentials - ansible.builtin.include_tasks: "{{ role_path }}/../../../../common/tasks/common/decrypt_include_encrypt.yml" + ansible.builtin.include_tasks: "{{ role_path }}/../../../../../common/tasks/common/decrypt_include_encrypt.yml" loop: "{{ credential_files }}" loop_control: loop_var: cred_config diff --git a/utils/credential_utility/roles/create_config/templates/build_stream_credential.j2 b/src/playbooks/utils/credential_utility/roles/create_config/templates/build_stream_credential.j2 similarity index 100% rename from utils/credential_utility/roles/create_config/templates/build_stream_credential.j2 rename to src/playbooks/utils/credential_utility/roles/create_config/templates/build_stream_credential.j2 diff --git a/utils/credential_utility/roles/create_config/templates/omnia_credential.j2 b/src/playbooks/utils/credential_utility/roles/create_config/templates/omnia_credential.j2 similarity index 100% rename from utils/credential_utility/roles/create_config/templates/omnia_credential.j2 rename to src/playbooks/utils/credential_utility/roles/create_config/templates/omnia_credential.j2 diff --git a/utils/credential_utility/roles/create_config/vars/main.yml b/src/playbooks/utils/credential_utility/roles/create_config/vars/main.yml similarity index 100% rename from utils/credential_utility/roles/create_config/vars/main.yml rename to src/playbooks/utils/credential_utility/roles/create_config/vars/main.yml diff --git a/utils/credential_utility/roles/update_config/tasks/credential_status.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/credential_status.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/credential_status.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/credential_status.yml diff --git a/utils/credential_utility/roles/update_config/tasks/fetch_conditional_mandatory_credentials.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/fetch_conditional_mandatory_credentials.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/fetch_conditional_mandatory_credentials.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/fetch_conditional_mandatory_credentials.yml diff --git a/utils/credential_utility/roles/update_config/tasks/fetch_credentials.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/fetch_credentials.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/fetch_credentials.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/fetch_credentials.yml diff --git a/utils/credential_utility/roles/update_config/tasks/fetch_mandatory_credentials.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/fetch_mandatory_credentials.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/fetch_mandatory_credentials.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/fetch_mandatory_credentials.yml diff --git a/utils/credential_utility/roles/update_config/tasks/fetch_optional_credentials.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/fetch_optional_credentials.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/fetch_optional_credentials.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/fetch_optional_credentials.yml diff --git a/utils/credential_utility/roles/update_config/tasks/main.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/main.yml similarity index 89% rename from utils/credential_utility/roles/update_config/tasks/main.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/main.yml index 66d56c3b0e..62ef91266b 100644 --- a/utils/credential_utility/roles/update_config/tasks/main.yml +++ b/src/playbooks/utils/credential_utility/roles/update_config/tasks/main.yml @@ -15,7 +15,7 @@ - name: Set common library path ansible.builtin.set_fact: - module_utils_path: "{{ role_path }}/../../../../common/library/module_utils/" + module_utils_path: "{{ role_path }}/../../../../../common/library/module_utils/" - name: Pre-load build stream credentials if they exist when: @@ -28,7 +28,7 @@ cred_vault_path: "{{ credential_files[1].vault_path }}" - name: Include build stream credentials using common task - ansible.builtin.include_tasks: "{{ role_path }}/../../../../common/tasks/common/decrypt_include_encrypt.yml" + ansible.builtin.include_tasks: "{{ role_path }}/../../../../../common/tasks/common/decrypt_include_encrypt.yml" vars: credential_file_path: "{{ cred_file_path }}" vault_password_file: "{{ cred_vault_path }}" @@ -47,7 +47,7 @@ loop_var: service - name: Include updated credentials - ansible.builtin.include_tasks: "{{ role_path }}/../../../../common/tasks/common/decrypt_include_encrypt.yml" + ansible.builtin.include_tasks: "{{ role_path }}/../../../../../common/tasks/common/decrypt_include_encrypt.yml" loop: "{{ credential_files }}" loop_control: loop_var: cred_config diff --git a/utils/credential_utility/roles/update_config/tasks/prompt_credentials.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/prompt_credentials.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/prompt_credentials.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/prompt_credentials.yml diff --git a/utils/credential_utility/roles/update_config/tasks/prompt_password.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/prompt_password.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/prompt_password.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/prompt_password.yml diff --git a/utils/credential_utility/roles/update_config/tasks/prompt_username.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/prompt_username.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/prompt_username.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/prompt_username.yml diff --git a/utils/credential_utility/roles/update_config/tasks/update_bs_credential_file.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/update_bs_credential_file.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/update_bs_credential_file.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/update_bs_credential_file.yml diff --git a/utils/credential_utility/roles/update_config/tasks/update_credentials.yml b/src/playbooks/utils/credential_utility/roles/update_config/tasks/update_credentials.yml similarity index 100% rename from utils/credential_utility/roles/update_config/tasks/update_credentials.yml rename to src/playbooks/utils/credential_utility/roles/update_config/tasks/update_credentials.yml diff --git a/utils/credential_utility/roles/update_config/vars/main.yml b/src/playbooks/utils/credential_utility/roles/update_config/vars/main.yml similarity index 100% rename from utils/credential_utility/roles/update_config/vars/main.yml rename to src/playbooks/utils/credential_utility/roles/update_config/vars/main.yml diff --git a/utils/credential_utility/roles/validation/tasks/main.yml b/src/playbooks/utils/credential_utility/roles/validation/tasks/main.yml similarity index 100% rename from utils/credential_utility/roles/validation/tasks/main.yml rename to src/playbooks/utils/credential_utility/roles/validation/tasks/main.yml diff --git a/utils/credential_utility/roles/validation/tasks/pre_requisite.yml b/src/playbooks/utils/credential_utility/roles/validation/tasks/pre_requisite.yml similarity index 100% rename from utils/credential_utility/roles/validation/tasks/pre_requisite.yml rename to src/playbooks/utils/credential_utility/roles/validation/tasks/pre_requisite.yml diff --git a/utils/credential_utility/roles/validation/tasks/validate_cred_file.yml b/src/playbooks/utils/credential_utility/roles/validation/tasks/validate_cred_file.yml similarity index 100% rename from utils/credential_utility/roles/validation/tasks/validate_cred_file.yml rename to src/playbooks/utils/credential_utility/roles/validation/tasks/validate_cred_file.yml diff --git a/utils/credential_utility/roles/validation/vars/main.yml b/src/playbooks/utils/credential_utility/roles/validation/vars/main.yml similarity index 100% rename from utils/credential_utility/roles/validation/vars/main.yml rename to src/playbooks/utils/credential_utility/roles/validation/vars/main.yml diff --git a/utils/delete_migrated_pulp_rpm_repos.yml b/src/playbooks/utils/delete_migrated_pulp_rpm_repos.yml similarity index 100% rename from utils/delete_migrated_pulp_rpm_repos.yml rename to src/playbooks/utils/delete_migrated_pulp_rpm_repos.yml diff --git a/utils/external_kafka_connect_details.yml b/src/playbooks/utils/external_kafka_connect_details.yml similarity index 100% rename from utils/external_kafka_connect_details.yml rename to src/playbooks/utils/external_kafka_connect_details.yml diff --git a/utils/external_victoria_connect_details.yml b/src/playbooks/utils/external_victoria_connect_details.yml similarity index 100% rename from utils/external_victoria_connect_details.yml rename to src/playbooks/utils/external_victoria_connect_details.yml diff --git a/utils/generate_functional_groups.yml b/src/playbooks/utils/generate_functional_groups.yml similarity index 100% rename from utils/generate_functional_groups.yml rename to src/playbooks/utils/generate_functional_groups.yml diff --git a/utils/include_input_dir.yml b/src/playbooks/utils/include_input_dir.yml similarity index 100% rename from utils/include_input_dir.yml rename to src/playbooks/utils/include_input_dir.yml diff --git a/utils/oim_cleanup.yml b/src/playbooks/utils/oim_cleanup.yml similarity index 100% rename from utils/oim_cleanup.yml rename to src/playbooks/utils/oim_cleanup.yml diff --git a/utils/roles/common/tasks/include_omnia_config.yml b/src/playbooks/utils/roles/common/tasks/include_omnia_config.yml similarity index 100% rename from utils/roles/common/tasks/include_omnia_config.yml rename to src/playbooks/utils/roles/common/tasks/include_omnia_config.yml diff --git a/utils/roles/common/tasks/include_omnia_config_credentials.yml b/src/playbooks/utils/roles/common/tasks/include_omnia_config_credentials.yml similarity index 100% rename from utils/roles/common/tasks/include_omnia_config_credentials.yml rename to src/playbooks/utils/roles/common/tasks/include_omnia_config_credentials.yml diff --git a/utils/roles/common/tasks/main.yml b/src/playbooks/utils/roles/common/tasks/main.yml similarity index 100% rename from utils/roles/common/tasks/main.yml rename to src/playbooks/utils/roles/common/tasks/main.yml diff --git a/utils/roles/common/vars/main.yml b/src/playbooks/utils/roles/common/vars/main.yml similarity index 100% rename from utils/roles/common/vars/main.yml rename to src/playbooks/utils/roles/common/vars/main.yml diff --git a/utils/roles/create_container_group/tasks/main.yml b/src/playbooks/utils/roles/create_container_group/tasks/main.yml similarity index 100% rename from utils/roles/create_container_group/tasks/main.yml rename to src/playbooks/utils/roles/create_container_group/tasks/main.yml diff --git a/utils/roles/create_container_group/vars/main.yml b/src/playbooks/utils/roles/create_container_group/vars/main.yml similarity index 100% rename from utils/roles/create_container_group/vars/main.yml rename to src/playbooks/utils/roles/create_container_group/vars/main.yml diff --git a/utils/roles/external_kafka_connect_details/tasks/main.yml b/src/playbooks/utils/roles/external_kafka_connect_details/tasks/main.yml similarity index 100% rename from utils/roles/external_kafka_connect_details/tasks/main.yml rename to src/playbooks/utils/roles/external_kafka_connect_details/tasks/main.yml diff --git a/utils/roles/external_kafka_connect_details/vars/main.yml b/src/playbooks/utils/roles/external_kafka_connect_details/vars/main.yml similarity index 100% rename from utils/roles/external_kafka_connect_details/vars/main.yml rename to src/playbooks/utils/roles/external_kafka_connect_details/vars/main.yml diff --git a/utils/roles/external_victoria_connect_details/tasks/main.yml b/src/playbooks/utils/roles/external_victoria_connect_details/tasks/main.yml similarity index 100% rename from utils/roles/external_victoria_connect_details/tasks/main.yml rename to src/playbooks/utils/roles/external_victoria_connect_details/tasks/main.yml diff --git a/utils/roles/external_victoria_connect_details/vars/main.yml b/src/playbooks/utils/roles/external_victoria_connect_details/vars/main.yml similarity index 100% rename from utils/roles/external_victoria_connect_details/vars/main.yml rename to src/playbooks/utils/roles/external_victoria_connect_details/vars/main.yml diff --git a/utils/roles/generate_functional_groups/tasks/main.yml b/src/playbooks/utils/roles/generate_functional_groups/tasks/main.yml similarity index 100% rename from utils/roles/generate_functional_groups/tasks/main.yml rename to src/playbooks/utils/roles/generate_functional_groups/tasks/main.yml diff --git a/utils/roles/generate_functional_groups/vars/main.yml b/src/playbooks/utils/roles/generate_functional_groups/vars/main.yml similarity index 100% rename from utils/roles/generate_functional_groups/vars/main.yml rename to src/playbooks/utils/roles/generate_functional_groups/vars/main.yml diff --git a/utils/roles/idrac_pxe_boot/tasks/generate_bmc_inventory.yml b/src/playbooks/utils/roles/idrac_pxe_boot/tasks/generate_bmc_inventory.yml similarity index 100% rename from utils/roles/idrac_pxe_boot/tasks/generate_bmc_inventory.yml rename to src/playbooks/utils/roles/idrac_pxe_boot/tasks/generate_bmc_inventory.yml diff --git a/utils/roles/idrac_pxe_boot/tasks/main.yml b/src/playbooks/utils/roles/idrac_pxe_boot/tasks/main.yml similarity index 100% rename from utils/roles/idrac_pxe_boot/tasks/main.yml rename to src/playbooks/utils/roles/idrac_pxe_boot/tasks/main.yml diff --git a/utils/roles/idrac_pxe_boot/tasks/pre_checks.yml b/src/playbooks/utils/roles/idrac_pxe_boot/tasks/pre_checks.yml similarity index 100% rename from utils/roles/idrac_pxe_boot/tasks/pre_checks.yml rename to src/playbooks/utils/roles/idrac_pxe_boot/tasks/pre_checks.yml diff --git a/utils/roles/idrac_pxe_boot/templates/bmc_inventory.j2 b/src/playbooks/utils/roles/idrac_pxe_boot/templates/bmc_inventory.j2 similarity index 100% rename from utils/roles/idrac_pxe_boot/templates/bmc_inventory.j2 rename to src/playbooks/utils/roles/idrac_pxe_boot/templates/bmc_inventory.j2 diff --git a/utils/roles/idrac_pxe_boot/vars/main.yml b/src/playbooks/utils/roles/idrac_pxe_boot/vars/main.yml similarity index 100% rename from utils/roles/idrac_pxe_boot/vars/main.yml rename to src/playbooks/utils/roles/idrac_pxe_boot/vars/main.yml diff --git a/utils/roles/include_input_dir/tasks/main.yml b/src/playbooks/utils/roles/include_input_dir/tasks/main.yml similarity index 90% rename from utils/roles/include_input_dir/tasks/main.yml rename to src/playbooks/utils/roles/include_input_dir/tasks/main.yml index 497febae7c..f870d61b69 100644 --- a/utils/roles/include_input_dir/tasks/main.yml +++ b/src/playbooks/utils/roles/include_input_dir/tasks/main.yml @@ -43,11 +43,11 @@ tags: always - name: Include common vars - ansible.builtin.include_vars: "{{ role_path }}/../../../common/vars/common_vars.yml" + ansible.builtin.include_vars: "{{ role_path }}/../../../../common/vars/common_vars.yml" tags: always - name: Include openchami vars - ansible.builtin.include_vars: "{{ role_path }}/../../../common/vars/openchami_vars.yml" + ansible.builtin.include_vars: "{{ role_path }}/../../../../common/vars/openchami_vars.yml" when: openchami_vars_suppport | default(false) tags: always diff --git a/utils/roles/include_input_dir/vars/main.yml b/src/playbooks/utils/roles/include_input_dir/vars/main.yml similarity index 100% rename from utils/roles/include_input_dir/vars/main.yml rename to src/playbooks/utils/roles/include_input_dir/vars/main.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_auth.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_auth.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_auth.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_auth.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_automation.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_automation.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_automation.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_automation.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_build_stream.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_build_stream.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_build_stream.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_build_stream.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_common.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_common.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_common.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_common.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_k8s.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_note.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_note.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_note.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_note.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_omnia_postgres.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_omnia_postgres.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_omnia_postgres.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_omnia_postgres.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_openchami.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_openchami.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_openchami.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_openchami.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_pulp.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_pulp.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_pulp.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_pulp.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_slurm.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_slurm.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_slurm.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/cleanup_slurm.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/tasks/main.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/main.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/tasks/main.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/tasks/main.yml diff --git a/utils/roles/oim_cleanup/oim_container_cleanup/vars/main.yml b/src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/vars/main.yml similarity index 100% rename from utils/roles/oim_cleanup/oim_container_cleanup/vars/main.yml rename to src/playbooks/utils/roles/oim_cleanup/oim_container_cleanup/vars/main.yml diff --git a/utils/roles/oim_cleanup/omnia_credential_cleanup/tasks/cleanup_credentials.yml b/src/playbooks/utils/roles/oim_cleanup/omnia_credential_cleanup/tasks/cleanup_credentials.yml similarity index 100% rename from utils/roles/oim_cleanup/omnia_credential_cleanup/tasks/cleanup_credentials.yml rename to src/playbooks/utils/roles/oim_cleanup/omnia_credential_cleanup/tasks/cleanup_credentials.yml diff --git a/utils/roles/oim_cleanup/omnia_credential_cleanup/tasks/main.yml b/src/playbooks/utils/roles/oim_cleanup/omnia_credential_cleanup/tasks/main.yml similarity index 100% rename from utils/roles/oim_cleanup/omnia_credential_cleanup/tasks/main.yml rename to src/playbooks/utils/roles/oim_cleanup/omnia_credential_cleanup/tasks/main.yml diff --git a/utils/roles/oim_cleanup/omnia_credential_cleanup/vars/main.yml b/src/playbooks/utils/roles/oim_cleanup/omnia_credential_cleanup/vars/main.yml similarity index 100% rename from utils/roles/oim_cleanup/omnia_credential_cleanup/vars/main.yml rename to src/playbooks/utils/roles/oim_cleanup/omnia_credential_cleanup/vars/main.yml diff --git a/utils/roles/oim_cleanup/pre_requisite/tasks/main.yml b/src/playbooks/utils/roles/oim_cleanup/pre_requisite/tasks/main.yml similarity index 100% rename from utils/roles/oim_cleanup/pre_requisite/tasks/main.yml rename to src/playbooks/utils/roles/oim_cleanup/pre_requisite/tasks/main.yml diff --git a/utils/roles/oim_cleanup/pre_requisite/tasks/pre_requisite.yml b/src/playbooks/utils/roles/oim_cleanup/pre_requisite/tasks/pre_requisite.yml similarity index 100% rename from utils/roles/oim_cleanup/pre_requisite/tasks/pre_requisite.yml rename to src/playbooks/utils/roles/oim_cleanup/pre_requisite/tasks/pre_requisite.yml diff --git a/utils/roles/oim_cleanup/pre_requisite/vars/main.yml b/src/playbooks/utils/roles/oim_cleanup/pre_requisite/vars/main.yml similarity index 100% rename from utils/roles/oim_cleanup/pre_requisite/vars/main.yml rename to src/playbooks/utils/roles/oim_cleanup/pre_requisite/vars/main.yml diff --git a/utils/roles/pxe_buildstream_manager/tasks/cloudinit_phone_home.yml b/src/playbooks/utils/roles/pxe_buildstream_manager/tasks/cloudinit_phone_home.yml similarity index 100% rename from utils/roles/pxe_buildstream_manager/tasks/cloudinit_phone_home.yml rename to src/playbooks/utils/roles/pxe_buildstream_manager/tasks/cloudinit_phone_home.yml diff --git a/utils/roles/pxe_buildstream_manager/tasks/compute_effective_inventory.yml b/src/playbooks/utils/roles/pxe_buildstream_manager/tasks/compute_effective_inventory.yml similarity index 100% rename from utils/roles/pxe_buildstream_manager/tasks/compute_effective_inventory.yml rename to src/playbooks/utils/roles/pxe_buildstream_manager/tasks/compute_effective_inventory.yml diff --git a/utils/roles/pxe_buildstream_manager/tasks/gitlab_host.yml b/src/playbooks/utils/roles/pxe_buildstream_manager/tasks/gitlab_host.yml similarity index 100% rename from utils/roles/pxe_buildstream_manager/tasks/gitlab_host.yml rename to src/playbooks/utils/roles/pxe_buildstream_manager/tasks/gitlab_host.yml diff --git a/utils/roles/pxe_buildstream_manager/tasks/main.yml b/src/playbooks/utils/roles/pxe_buildstream_manager/tasks/main.yml similarity index 100% rename from utils/roles/pxe_buildstream_manager/tasks/main.yml rename to src/playbooks/utils/roles/pxe_buildstream_manager/tasks/main.yml diff --git a/utils/roles/pxe_buildstream_manager/tasks/update_restart_state.yml b/src/playbooks/utils/roles/pxe_buildstream_manager/tasks/update_restart_state.yml similarity index 100% rename from utils/roles/pxe_buildstream_manager/tasks/update_restart_state.yml rename to src/playbooks/utils/roles/pxe_buildstream_manager/tasks/update_restart_state.yml diff --git a/utils/roles/pxe_buildstream_manager/tasks/upload_to_gitlab.yml b/src/playbooks/utils/roles/pxe_buildstream_manager/tasks/upload_to_gitlab.yml similarity index 100% rename from utils/roles/pxe_buildstream_manager/tasks/upload_to_gitlab.yml rename to src/playbooks/utils/roles/pxe_buildstream_manager/tasks/upload_to_gitlab.yml diff --git a/utils/roles/pxe_buildstream_manager/tasks/write_node_results.yml b/src/playbooks/utils/roles/pxe_buildstream_manager/tasks/write_node_results.yml similarity index 100% rename from utils/roles/pxe_buildstream_manager/tasks/write_node_results.yml rename to src/playbooks/utils/roles/pxe_buildstream_manager/tasks/write_node_results.yml diff --git a/utils/roles/pxe_buildstream_manager/vars/main.yml b/src/playbooks/utils/roles/pxe_buildstream_manager/vars/main.yml similarity index 100% rename from utils/roles/pxe_buildstream_manager/vars/main.yml rename to src/playbooks/utils/roles/pxe_buildstream_manager/vars/main.yml diff --git a/utils/roles/slurm_cleanup/defaults/main.yml b/src/playbooks/utils/roles/slurm_cleanup/defaults/main.yml similarity index 100% rename from utils/roles/slurm_cleanup/defaults/main.yml rename to src/playbooks/utils/roles/slurm_cleanup/defaults/main.yml diff --git a/utils/roles/slurm_cleanup/tasks/main.yml b/src/playbooks/utils/roles/slurm_cleanup/tasks/main.yml similarity index 100% rename from utils/roles/slurm_cleanup/tasks/main.yml rename to src/playbooks/utils/roles/slurm_cleanup/tasks/main.yml diff --git a/utils/roles/slurm_config_backup/defaults/main.yml b/src/playbooks/utils/roles/slurm_config_backup/defaults/main.yml similarity index 100% rename from utils/roles/slurm_config_backup/defaults/main.yml rename to src/playbooks/utils/roles/slurm_config_backup/defaults/main.yml diff --git a/utils/roles/slurm_config_backup/tasks/main.yml b/src/playbooks/utils/roles/slurm_config_backup/tasks/main.yml similarity index 100% rename from utils/roles/slurm_config_backup/tasks/main.yml rename to src/playbooks/utils/roles/slurm_config_backup/tasks/main.yml diff --git a/utils/roles/slurm_config_rollback/defaults/main.yml b/src/playbooks/utils/roles/slurm_config_rollback/defaults/main.yml similarity index 100% rename from utils/roles/slurm_config_rollback/defaults/main.yml rename to src/playbooks/utils/roles/slurm_config_rollback/defaults/main.yml diff --git a/utils/roles/slurm_config_rollback/tasks/main.yml b/src/playbooks/utils/roles/slurm_config_rollback/tasks/main.yml similarity index 100% rename from utils/roles/slurm_config_rollback/tasks/main.yml rename to src/playbooks/utils/roles/slurm_config_rollback/tasks/main.yml diff --git a/utils/roles/update_cloud_init_bss/tasks/main.yml b/src/playbooks/utils/roles/update_cloud_init_bss/tasks/main.yml similarity index 100% rename from utils/roles/update_cloud_init_bss/tasks/main.yml rename to src/playbooks/utils/roles/update_cloud_init_bss/tasks/main.yml diff --git a/utils/roles/update_cloud_init_bss/tasks/update_bss.yml b/src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_bss.yml similarity index 100% rename from utils/roles/update_cloud_init_bss/tasks/update_bss.yml rename to src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_bss.yml diff --git a/utils/roles/update_cloud_init_bss/tasks/update_ci_common.yml b/src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_ci_common.yml similarity index 100% rename from utils/roles/update_cloud_init_bss/tasks/update_ci_common.yml rename to src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_ci_common.yml diff --git a/utils/roles/update_cloud_init_bss/tasks/update_ci_defaults.yml b/src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_ci_defaults.yml similarity index 100% rename from utils/roles/update_cloud_init_bss/tasks/update_ci_defaults.yml rename to src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_ci_defaults.yml diff --git a/utils/roles/update_cloud_init_bss/tasks/update_cloud_init.yml b/src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_cloud_init.yml similarity index 100% rename from utils/roles/update_cloud_init_bss/tasks/update_cloud_init.yml rename to src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_cloud_init.yml diff --git a/utils/roles/update_cloud_init_bss/tasks/update_hostname.yml b/src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_hostname.yml similarity index 100% rename from utils/roles/update_cloud_init_bss/tasks/update_hostname.yml rename to src/playbooks/utils/roles/update_cloud_init_bss/tasks/update_hostname.yml diff --git a/utils/roles/update_cloud_init_bss/vars/main.yml b/src/playbooks/utils/roles/update_cloud_init_bss/vars/main.yml similarity index 100% rename from utils/roles/update_cloud_init_bss/vars/main.yml rename to src/playbooks/utils/roles/update_cloud_init_bss/vars/main.yml diff --git a/utils/set_pxe_boot.yml b/src/playbooks/utils/set_pxe_boot.yml similarity index 100% rename from utils/set_pxe_boot.yml rename to src/playbooks/utils/set_pxe_boot.yml diff --git a/utils/slurm_config_util.yml b/src/playbooks/utils/slurm_config_util.yml similarity index 100% rename from utils/slurm_config_util.yml rename to src/playbooks/utils/slurm_config_util.yml diff --git a/utils/update_cloud_init_bss.yml b/src/playbooks/utils/update_cloud_init_bss.yml similarity index 97% rename from utils/update_cloud_init_bss.yml rename to src/playbooks/utils/update_cloud_init_bss.yml index f40c86f99a..ae8db7d66f 100644 --- a/utils/update_cloud_init_bss.yml +++ b/src/playbooks/utils/update_cloud_init_bss.yml @@ -88,7 +88,7 @@ gather_facts: false tasks: - name: Refresh OpenCHAMI access token - ansible.builtin.include_tasks: "{{ playbook_dir }}/../common/tasks/common/openchami_auth.yml" + ansible.builtin.include_tasks: "{{ playbook_dir }}/../../common/tasks/common/openchami_auth.yml" vars: oim_node_name: "{{ hostvars['localhost']['oim_node_name'] }}" diff --git a/utils/upgrade_checkup.yml b/src/playbooks/utils/upgrade_checkup.yml similarity index 100% rename from utils/upgrade_checkup.yml rename to src/playbooks/utils/upgrade_checkup.yml From b34a4ca171997ec3c57dc1eab7b1ed0774bdcbaf Mon Sep 17 00:00:00 2001 From: Abhishek S A Date: Thu, 25 Jun 2026 08:55:25 +0530 Subject: [PATCH 06/24] PR2: Move build_stream/ to src/build_stream/ - git mv build_stream -> src/build_stream/ - Self-contained Python code, no path updates needed - build_images.sh stays separate (not merged into omnia.sh) Part of: Monorepo Migration Plan - Phase 1 Signed-off-by: Abhishek S A --- {build_stream => src/build_stream}/.env.test | 0 {build_stream => src/build_stream}/.gitignore | 0 {build_stream => src/build_stream}/README.md | 0 {build_stream => src/build_stream}/__init__.py | 0 {build_stream => src/build_stream}/api/__init__.py | 0 {build_stream => src/build_stream}/api/auth/__init__.py | 0 {build_stream => src/build_stream}/api/auth/jwt_handler.py | 0 {build_stream => src/build_stream}/api/auth/password_handler.py | 0 {build_stream => src/build_stream}/api/auth/routes.py | 0 {build_stream => src/build_stream}/api/auth/schemas.py | 0 {build_stream => src/build_stream}/api/auth/service.py | 0 {build_stream => src/build_stream}/api/build_image/__init__.py | 0 .../build_stream}/api/build_image/dependencies.py | 0 {build_stream => src/build_stream}/api/build_image/routes.py | 0 {build_stream => src/build_stream}/api/build_image/schemas.py | 0 {build_stream => src/build_stream}/api/catalog_roles/__init__.py | 0 .../build_stream}/api/catalog_roles/dependencies.py | 0 {build_stream => src/build_stream}/api/catalog_roles/routes.py | 0 {build_stream => src/build_stream}/api/catalog_roles/schemas.py | 0 {build_stream => src/build_stream}/api/catalog_roles/service.py | 0 {build_stream => src/build_stream}/api/cleanup/__init__.py | 0 {build_stream => src/build_stream}/api/cleanup/dependencies.py | 0 {build_stream => src/build_stream}/api/dependencies.py | 0 {build_stream => src/build_stream}/api/deploy/__init__.py | 0 {build_stream => src/build_stream}/api/deploy/dependencies.py | 0 {build_stream => src/build_stream}/api/deploy/routes.py | 0 {build_stream => src/build_stream}/api/deploy/schemas.py | 0 .../build_stream}/api/generate_input_files/__init__.py | 0 .../build_stream}/api/generate_input_files/dependencies.py | 0 .../build_stream}/api/generate_input_files/routes.py | 0 .../build_stream}/api/generate_input_files/schemas.py | 0 {build_stream => src/build_stream}/api/images/__init__.py | 0 {build_stream => src/build_stream}/api/images/dependencies.py | 0 {build_stream => src/build_stream}/api/images/routes.py | 0 {build_stream => src/build_stream}/api/images/schemas.py | 0 {build_stream => src/build_stream}/api/jobs/__init__.py | 0 {build_stream => src/build_stream}/api/jobs/dependencies.py | 0 {build_stream => src/build_stream}/api/jobs/routes.py | 0 {build_stream => src/build_stream}/api/jobs/schemas.py | 0 {build_stream => src/build_stream}/api/local_repo/__init__.py | 0 {build_stream => src/build_stream}/api/local_repo/dependencies.py | 0 {build_stream => src/build_stream}/api/local_repo/routes.py | 0 {build_stream => src/build_stream}/api/local_repo/schemas.py | 0 {build_stream => src/build_stream}/api/logging_utils.py | 0 {build_stream => src/build_stream}/api/parse_catalog/__init__.py | 0 .../build_stream}/api/parse_catalog/dependencies.py | 0 {build_stream => src/build_stream}/api/parse_catalog/routes.py | 0 {build_stream => src/build_stream}/api/parse_catalog/schemas.py | 0 {build_stream => src/build_stream}/api/parse_catalog/service.py | 0 {build_stream => src/build_stream}/api/restart/__init__.py | 0 {build_stream => src/build_stream}/api/restart/dependencies.py | 0 {build_stream => src/build_stream}/api/restart/routes.py | 0 {build_stream => src/build_stream}/api/restart/schemas.py | 0 {build_stream => src/build_stream}/api/router.py | 0 {build_stream => src/build_stream}/api/upload/__init__.py | 0 {build_stream => src/build_stream}/api/upload/dependencies.py | 0 {build_stream => src/build_stream}/api/upload/routes.py | 0 {build_stream => src/build_stream}/api/upload/schemas.py | 0 {build_stream => src/build_stream}/api/validate/__init__.py | 0 {build_stream => src/build_stream}/api/validate/dependencies.py | 0 {build_stream => src/build_stream}/api/validate/routes.py | 0 {build_stream => src/build_stream}/api/validate/schemas.py | 0 {build_stream => src/build_stream}/api/vault_client.py | 0 {build_stream => src/build_stream}/build_stream.ini | 0 {build_stream => src/build_stream}/cleanup_cron.py | 0 {build_stream => src/build_stream}/common/__init__.py | 0 {build_stream => src/build_stream}/common/config.py | 0 {build_stream => src/build_stream}/common/constants.py | 0 {build_stream => src/build_stream}/common/logging.py | 0 {build_stream => src/build_stream}/common/user_messages.py | 0 {build_stream => src/build_stream}/container.py | 0 {build_stream => src/build_stream}/core/__init__.py | 0 {build_stream => src/build_stream}/core/artifacts/__init__.py | 0 {build_stream => src/build_stream}/core/artifacts/entities.py | 0 {build_stream => src/build_stream}/core/artifacts/exceptions.py | 0 {build_stream => src/build_stream}/core/artifacts/interfaces.py | 0 {build_stream => src/build_stream}/core/artifacts/ports.py | 0 .../build_stream}/core/artifacts/value_objects.py | 0 {build_stream => src/build_stream}/core/build/__init__.py | 0 {build_stream => src/build_stream}/core/build_image/__init__.py | 0 {build_stream => src/build_stream}/core/build_image/entities.py | 0 {build_stream => src/build_stream}/core/build_image/exceptions.py | 0 .../build_stream}/core/build_image/repositories.py | 0 {build_stream => src/build_stream}/core/build_image/services.py | 0 .../build_stream}/core/build_image/value_objects.py | 0 .../build_stream}/core/catalog/ADAPTER_POLICY_GUIDE.md | 0 .../build_stream}/core/catalog/CATALOG_GENERATOR.md | 0 {build_stream => src/build_stream}/core/catalog/README.md | 0 {build_stream => src/build_stream}/core/catalog/__init__.py | 0 {build_stream => src/build_stream}/core/catalog/adapter.py | 0 {build_stream => src/build_stream}/core/catalog/adapter_policy.py | 0 .../build_stream}/core/catalog/adapter_policy_schema_consts.py | 0 {build_stream => src/build_stream}/core/catalog/exceptions.py | 0 {build_stream => src/build_stream}/core/catalog/generator.py | 0 {build_stream => src/build_stream}/core/catalog/models.py | 0 {build_stream => src/build_stream}/core/catalog/parser.py | 0 .../build_stream}/core/catalog/resources/AdapterPolicySchema.json | 0 .../build_stream}/core/catalog/resources/CatalogSchema.json | 0 .../build_stream}/core/catalog/resources/RootLevelSchema.json | 0 .../core/catalog/resources/adapter_policy_default.json | 0 .../core/catalog/test_fixtures/adapter_policy_test.json | 0 .../core/catalog/test_fixtures/functional_layer.json | 0 .../build_stream}/core/catalog/tests/diff_input_configs.py | 0 {build_stream => src/build_stream}/core/catalog/tests/sample.py | 0 .../build_stream}/core/catalog/tests/test_adapter_cli_defaults.py | 0 .../build_stream}/core/catalog/tests/test_adapter_policy.py | 0 .../core/catalog/tests/test_catalog_diff_regression.py | 0 .../build_stream}/core/catalog/tests/test_generate_catalog_id.py | 0 .../core/catalog/tests/test_generator_cli_defaults.py | 0 .../core/catalog/tests/test_generator_package_list.py | 0 .../build_stream}/core/catalog/tests/test_generator_roles.py | 0 .../build_stream}/core/catalog/tests/test_parser_defaults.py | 0 {build_stream => src/build_stream}/core/catalog/utils.py | 0 {build_stream => src/build_stream}/core/cleanup/__init__.py | 0 {build_stream => src/build_stream}/core/cleanup/exceptions.py | 0 {build_stream => src/build_stream}/core/cleanup/s3_service.py | 0 {build_stream => src/build_stream}/core/common/__init__.py | 0 {build_stream => src/build_stream}/core/deploy/__init__.py | 0 {build_stream => src/build_stream}/core/deploy/entities.py | 0 {build_stream => src/build_stream}/core/deploy/exceptions.py | 0 {build_stream => src/build_stream}/core/deploy/services.py | 0 {build_stream => src/build_stream}/core/exceptions.py | 0 {build_stream => src/build_stream}/core/image_group/__init__.py | 0 {build_stream => src/build_stream}/core/image_group/entities.py | 0 {build_stream => src/build_stream}/core/image_group/exceptions.py | 0 .../build_stream}/core/image_group/repositories.py | 0 .../build_stream}/core/image_group/state_machine.py | 0 .../build_stream}/core/image_group/value_objects.py | 0 {build_stream => src/build_stream}/core/jobs/__init__.py | 0 {build_stream => src/build_stream}/core/jobs/entities/__init__.py | 0 {build_stream => src/build_stream}/core/jobs/entities/audit.py | 0 .../build_stream}/core/jobs/entities/idempotency.py | 0 {build_stream => src/build_stream}/core/jobs/entities/job.py | 0 {build_stream => src/build_stream}/core/jobs/entities/stage.py | 0 {build_stream => src/build_stream}/core/jobs/exceptions.py | 0 {build_stream => src/build_stream}/core/jobs/repositories.py | 0 {build_stream => src/build_stream}/core/jobs/services.py | 0 {build_stream => src/build_stream}/core/jobs/value_objects.py | 0 {build_stream => src/build_stream}/core/localrepo/__init__.py | 0 {build_stream => src/build_stream}/core/localrepo/entities.py | 0 {build_stream => src/build_stream}/core/localrepo/exceptions.py | 0 {build_stream => src/build_stream}/core/localrepo/repositories.py | 0 {build_stream => src/build_stream}/core/localrepo/services.py | 0 .../build_stream}/core/localrepo/value_objects.py | 0 {build_stream => src/build_stream}/core/utils/__init__.py | 0 {build_stream => src/build_stream}/core/validate/__init__.py | 0 {build_stream => src/build_stream}/core/validate/entities.py | 0 {build_stream => src/build_stream}/core/validate/exceptions.py | 0 {build_stream => src/build_stream}/core/validate/services.py | 0 {build_stream => src/build_stream}/doc/README.md | 0 {build_stream => src/build_stream}/doc/__init__.py | 0 {build_stream => src/build_stream}/doc/build_image.md | 0 {build_stream => src/build_stream}/doc/catalog.md | 0 {build_stream => src/build_stream}/doc/jobs.md | 0 {build_stream => src/build_stream}/doc/local_repo.md | 0 {build_stream => src/build_stream}/doc/validation.md | 0 {build_stream => src/build_stream}/generate_catalog.py | 0 {build_stream => src/build_stream}/generate_catalog_examples.py | 0 {build_stream => src/build_stream}/infra/__init__.py | 0 .../build_stream}/infra/artifact_store/__init__.py | 0 .../build_stream}/infra/artifact_store/file_artifact_store.py | 0 .../infra/artifact_store/in_memory_artifact_metadata.py | 0 .../infra/artifact_store/in_memory_artifact_store.py | 0 {build_stream => src/build_stream}/infra/db/__init__.py | 0 {build_stream => src/build_stream}/infra/db/alembic.ini | 0 {build_stream => src/build_stream}/infra/db/alembic/env.py | 0 .../build_stream}/infra/db/alembic/script.py.mako | 0 .../infra/db/alembic/versions/20260219_001_create_jobs_table.py | 0 .../infra/db/alembic/versions/20260219_002_create_stages_table.py | 0 .../versions/20260219_003_create_idempotency_keys_table.py | 0 .../db/alembic/versions/20260219_004_create_audit_events_table.py | 0 .../versions/20260219_005_create_artifact_metadata_table.py | 0 .../alembic/versions/20260408_006_release2_image_groups_images.py | 0 .../versions/20260507_007_add_last_attempt_at_to_stages.py | 0 {build_stream => src/build_stream}/infra/db/config.py | 0 {build_stream => src/build_stream}/infra/db/mappers.py | 0 {build_stream => src/build_stream}/infra/db/models.py | 0 {build_stream => src/build_stream}/infra/db/repositories.py | 0 {build_stream => src/build_stream}/infra/db/session.py | 0 {build_stream => src/build_stream}/infra/id_generator.py | 0 {build_stream => src/build_stream}/infra/repositories/__init__.py | 0 .../build_stream}/infra/repositories/in_memory.py | 0 .../infra/repositories/nfs_build_image_inventory_repository.py | 0 .../build_stream}/infra/repositories/nfs_input_repository.py | 0 .../infra/repositories/nfs_playbook_queue_request_repository.py | 0 .../infra/repositories/nfs_playbook_queue_result_repository.py | 0 {build_stream => src/build_stream}/infra/s3/__init__.py | 0 {build_stream => src/build_stream}/infra/s3/s3cmd_cleanup.py | 0 {build_stream => src/build_stream}/main.py | 0 {build_stream => src/build_stream}/orchestrator/__init__.py | 0 .../build_stream}/orchestrator/build_image/__init__.py | 0 .../build_stream}/orchestrator/build_image/commands/__init__.py | 0 .../orchestrator/build_image/commands/create_build_image.py | 0 .../build_stream}/orchestrator/build_image/dtos/__init__.py | 0 .../orchestrator/build_image/dtos/build_image_response.py | 0 .../build_stream}/orchestrator/build_image/use_cases/__init__.py | 0 .../orchestrator/build_image/use_cases/create_build_image.py | 0 .../orchestrator/catalog/commands/generate_input_files.py | 0 .../build_stream}/orchestrator/catalog/commands/parse_catalog.py | 0 {build_stream => src/build_stream}/orchestrator/catalog/dtos.py | 0 .../build_stream}/orchestrator/catalog/use_cases/__init__.py | 0 .../orchestrator/catalog/use_cases/generate_input_files.py | 0 .../build_stream}/orchestrator/catalog/use_cases/parse_catalog.py | 0 .../build_stream}/orchestrator/cleanup/__init__.py | 0 .../build_stream}/orchestrator/cleanup/commands/__init__.py | 0 .../build_stream}/orchestrator/cleanup/commands/cleanup_job.py | 0 .../build_stream}/orchestrator/cleanup/dtos/__init__.py | 0 .../build_stream}/orchestrator/cleanup/dtos/cleanup_response.py | 0 .../build_stream}/orchestrator/cleanup/use_cases/__init__.py | 0 .../build_stream}/orchestrator/cleanup/use_cases/cleanup_job.py | 0 .../build_stream}/orchestrator/common/__init__.py | 0 .../build_stream}/orchestrator/common/result_poller.py | 0 .../build_stream}/orchestrator/deploy/__init__.py | 0 .../build_stream}/orchestrator/deploy/commands/__init__.py | 0 .../build_stream}/orchestrator/deploy/commands/deploy_command.py | 0 .../build_stream}/orchestrator/deploy/dtos/__init__.py | 0 .../build_stream}/orchestrator/deploy/dtos/deploy_response.py | 0 .../build_stream}/orchestrator/deploy/use_cases/__init__.py | 0 .../orchestrator/deploy/use_cases/deploy_use_case.py | 0 .../build_stream}/orchestrator/images/__init__.py | 0 .../build_stream}/orchestrator/images/use_cases/__init__.py | 0 .../orchestrator/images/use_cases/list_images_use_case.py | 0 {build_stream => src/build_stream}/orchestrator/jobs/__init__.py | 0 .../build_stream}/orchestrator/jobs/commands/__init__.py | 0 .../build_stream}/orchestrator/jobs/commands/create_job.py | 0 .../build_stream}/orchestrator/jobs/dtos/__init__.py | 0 .../build_stream}/orchestrator/jobs/dtos/job_response.py | 0 .../build_stream}/orchestrator/jobs/use_cases/__init__.py | 0 .../build_stream}/orchestrator/jobs/use_cases/create_job.py | 0 .../build_stream}/orchestrator/local_repo/__init__.py | 0 .../build_stream}/orchestrator/local_repo/commands/__init__.py | 0 .../orchestrator/local_repo/commands/create_local_repo.py | 0 .../build_stream}/orchestrator/local_repo/dtos/__init__.py | 0 .../orchestrator/local_repo/dtos/local_repo_response.py | 0 .../build_stream}/orchestrator/local_repo/result_poller.py | 0 .../build_stream}/orchestrator/local_repo/use_cases/__init__.py | 0 .../orchestrator/local_repo/use_cases/create_local_repo.py | 0 .../build_stream}/orchestrator/restart/__init__.py | 0 .../build_stream}/orchestrator/restart/commands/__init__.py | 0 .../build_stream}/orchestrator/restart/commands/create_restart.py | 0 .../build_stream}/orchestrator/restart/dtos/__init__.py | 0 .../build_stream}/orchestrator/restart/dtos/restart_response.py | 0 .../build_stream}/orchestrator/restart/use_cases/__init__.py | 0 .../orchestrator/restart/use_cases/create_restart.py | 0 .../build_stream}/orchestrator/upload/__init__.py | 0 .../build_stream}/orchestrator/upload/commands/__init__.py | 0 .../build_stream}/orchestrator/upload/commands/upload_files.py | 0 .../build_stream}/orchestrator/upload/exceptions.py | 0 .../build_stream}/orchestrator/upload/results/__init__.py | 0 .../build_stream}/orchestrator/upload/results/upload_files.py | 0 .../build_stream}/orchestrator/upload/use_cases/__init__.py | 0 .../build_stream}/orchestrator/upload/use_cases/upload_files.py | 0 .../build_stream}/orchestrator/validate/__init__.py | 0 .../build_stream}/orchestrator/validate/commands/__init__.py | 0 .../build_stream}/orchestrator/validate/commands/validate.py | 0 .../build_stream}/orchestrator/validate/dtos/__init__.py | 0 .../build_stream}/orchestrator/validate/dtos/validate_response.py | 0 .../build_stream}/orchestrator/validate/use_cases/__init__.py | 0 .../build_stream}/orchestrator/validate/use_cases/validate.py | 0 .../build_stream}/playbook-watcher/playbook_watcher_service.py | 0 {build_stream => src/build_stream}/pytest.ini | 0 {build_stream => src/build_stream}/requirements-dev.txt | 0 {build_stream => src/build_stream}/requirements.txt | 0 {build_stream => src/build_stream}/scripts/generate_jwt_keys.sh | 0 {build_stream => src/build_stream}/tests/README.md | 0 {build_stream => src/build_stream}/tests/__init__.py | 0 {build_stream => src/build_stream}/tests/conftest.py | 0 {build_stream => src/build_stream}/tests/demo/buildstream_demo.py | 0 {build_stream => src/build_stream}/tests/demo/test_restart_api.sh | 0 .../build_stream}/tests/end_to_end/api/conftest.py | 0 .../build_stream}/tests/end_to_end/api/test_api_flow_e2e.py | 0 .../build_stream}/tests/end_to_end/api/test_build_image_e2e.py | 0 .../tests/end_to_end/api/test_generate_input_files_e2e.py | 0 .../build_stream}/tests/end_to_end/api/test_parse_catalog_e2e.py | 0 .../build_stream}/tests/end_to_end/api/test_register_e2e.py | 0 .../build_stream}/tests/end_to_end/api/test_token_e2e.py | 0 {build_stream => src/build_stream}/tests/integration/__init__.py | 0 .../build_stream}/tests/integration/api/__init__.py | 0 .../build_stream}/tests/integration/api/auth/conftest.py | 0 .../build_stream}/tests/integration/api/auth/test_register.py | 0 .../build_stream}/tests/integration/api/auth/test_token.py | 0 .../build_stream}/tests/integration/api/build_image/__init__.py | 0 .../build_stream}/tests/integration/api/build_image/conftest.py | 0 .../tests/integration/api/build_image/test_build_image_api.py | 0 .../build_stream}/tests/integration/api/catalog_roles/__init__.py | 0 .../build_stream}/tests/integration/api/catalog_roles/conftest.py | 0 .../tests/integration/api/catalog_roles/test_catalog_roles_api.py | 0 .../build_stream}/tests/integration/api/conftest.py | 0 .../tests/integration/api/generate_input_files/conftest.py | 0 .../api/generate_input_files/test_generate_input_files_api.py | 0 .../test_generate_input_files_artifact_integration.py | 0 .../api/generate_input_files/test_generate_input_files_routes.py | 0 .../build_stream}/tests/integration/api/jobs/conftest.py | 0 .../tests/integration/api/jobs/test_create_job_api.py | 0 .../tests/integration/api/jobs/test_delete_job_api.py | 0 .../build_stream}/tests/integration/api/jobs/test_get_job_api.py | 0 .../build_stream}/tests/integration/api/local_repo/__init__.py | 0 .../build_stream}/tests/integration/api/local_repo/conftest.py | 0 .../integration/api/local_repo/test_create_local_repo_api.py | 0 .../api/local_repo/test_create_local_repo_edge_cases.py | 0 .../build_stream}/tests/integration/api/parse_catalog/conftest.py | 0 .../tests/integration/api/parse_catalog/test_parse_catalog_api.py | 0 .../api/parse_catalog/test_parse_catalog_artifact_integration.py | 0 .../integration/api/parse_catalog/test_parse_catalog_routes.py | 0 .../build_stream}/tests/integration/api/restart/__init__.py | 0 .../build_stream}/tests/integration/api/restart/conftest.py | 0 .../tests/integration/api/restart/test_restart_api.py | 0 .../build_stream}/tests/integration/api/validate/__init__.py | 0 .../build_stream}/tests/integration/api/validate/conftest.py | 0 .../build_stream}/tests/integration/api/validate/test_models.py | 0 .../tests/integration/api/validate/test_validate_api.py | 0 {build_stream => src/build_stream}/tests/integration/conftest.py | 0 .../tests/integration/core/catalog/test_adapter_cli_defaults.py | 0 .../tests/integration/core/catalog/test_adapter_policy.py | 0 .../tests/integration/core/catalog/test_generator_cli_defaults.py | 0 .../tests/integration/core/catalog/test_generator_package_list.py | 0 .../tests/integration/core/catalog/test_generator_roles.py | 0 .../build_stream}/tests/integration/core/image_group/__init__.py | 0 .../integration/core/image_group/test_image_group_data_model.py | 0 .../integration/infra/artifact_store/test_file_artifact_store.py | 0 .../build_stream}/tests/integration/infra/db/conftest.py | 0 .../tests/integration/infra/db/test_sql_repositories.py | 0 {build_stream => src/build_stream}/tests/mocks/__init__.py | 0 .../build_stream}/tests/mocks/mock_jwt_handler.py | 0 .../build_stream}/tests/mocks/mock_vault_client.py | 0 {build_stream => src/build_stream}/tests/others/__init__.py | 0 .../build_stream}/tests/others/test_dependency_rules.py | 0 .../tests/performance/test_local_repo_performance.py | 0 {build_stream => src/build_stream}/tests/unit/__init__.py | 0 {build_stream => src/build_stream}/tests/unit/api/__init__.py | 0 .../build_stream}/tests/unit/api/auth/test_password_handler.py | 0 .../build_stream}/tests/unit/api/auth/test_service.py | 0 .../build_stream}/tests/unit/api/auth/test_token_service.py | 0 .../build_stream}/tests/unit/api/build_image/__init__.py | 0 .../build_stream}/tests/unit/api/build_image/test_routes.py | 0 .../build_stream}/tests/unit/api/catalog_roles/__init__.py | 0 .../tests/unit/api/catalog_roles/test_catalog_roles_service.py | 0 .../build_stream}/tests/unit/api/deploy/__init__.py | 0 .../build_stream}/tests/unit/api/deploy/test_routes.py | 0 .../build_stream}/tests/unit/api/generate_input_files/__init__.py | 0 .../tests/unit/api/generate_input_files/test_routes.py | 0 .../build_stream}/tests/unit/api/images/__init__.py | 0 .../build_stream}/tests/unit/api/images/test_routes.py | 0 .../build_stream}/tests/unit/api/jobs/test_dependencies.py | 0 .../build_stream}/tests/unit/api/jobs/test_schemas.py | 0 .../tests/unit/api/local_repo/test_local_repo_dependencies.py | 0 .../tests/unit/api/local_repo/test_local_repo_schemas.py | 0 .../build_stream}/tests/unit/api/local_repo/test_routes.py | 0 .../build_stream}/tests/unit/api/parse_catalog/__init__.py | 0 .../build_stream}/tests/unit/api/parse_catalog/test_routes.py | 0 .../build_stream}/tests/unit/api/restart/__init__.py | 0 .../build_stream}/tests/unit/api/restart/test_routes.py | 0 .../build_stream}/tests/unit/api/validate/__init__.py | 0 .../build_stream}/tests/unit/api/validate/test_routes.py | 0 {build_stream => src/build_stream}/tests/unit/core/__init__.py | 0 .../build_stream}/tests/unit/core/artifacts/__init__.py | 0 .../build_stream}/tests/unit/core/artifacts/conftest.py | 0 .../build_stream}/tests/unit/core/artifacts/test_exceptions.py | 0 .../build_stream}/tests/unit/core/artifacts/test_value_objects.py | 0 .../build_stream}/tests/unit/core/build_image/__init__.py | 0 .../build_stream}/tests/unit/core/build_image/test_entities.py | 0 .../build_stream}/tests/unit/core/build_image/test_services.py | 0 .../tests/unit/core/build_image/test_value_objects.py | 0 .../build_stream}/tests/unit/core/catalog/test_exceptions.py | 0 .../tests/unit/core/catalog/test_generate_software_config.py | 0 .../build_stream}/tests/unit/core/catalog/test_parser.py | 0 .../build_stream}/tests/unit/core/catalog/test_parser_defaults.py | 0 .../build_stream}/tests/unit/core/image_group/__init__.py | 0 .../build_stream}/tests/unit/core/image_group/test_entities.py | 0 .../build_stream}/tests/unit/core/image_group/test_exceptions.py | 0 .../tests/unit/core/image_group/test_state_machine.py | 0 .../tests/unit/core/image_group/test_value_objects.py | 0 .../build_stream}/tests/unit/core/jobs/__init__.py | 0 .../build_stream}/tests/unit/core/jobs/entities/__init__.py | 0 .../build_stream}/tests/unit/core/jobs/entities/conftest.py | 0 .../build_stream}/tests/unit/core/jobs/entities/test_audit.py | 0 .../tests/unit/core/jobs/entities/test_idempotency.py | 0 .../build_stream}/tests/unit/core/jobs/entities/test_job.py | 0 .../build_stream}/tests/unit/core/jobs/entities/test_stage.py | 0 .../build_stream}/tests/unit/core/jobs/test_exceptions.py | 0 .../build_stream}/tests/unit/core/jobs/test_value_objects.py | 0 .../build_stream}/tests/unit/core/localrepo/__init__.py | 0 .../build_stream}/tests/unit/core/localrepo/test_entities.py | 0 .../build_stream}/tests/unit/core/localrepo/test_exceptions.py | 0 .../build_stream}/tests/unit/core/localrepo/test_services.py | 0 .../build_stream}/tests/unit/core/localrepo/test_value_objects.py | 0 .../build_stream}/tests/unit/core/validate/__init__.py | 0 .../build_stream}/tests/unit/core/validate/test_entities.py | 0 .../build_stream}/tests/unit/core/validate/test_exceptions.py | 0 .../build_stream}/tests/unit/core/validate/test_services.py | 0 {build_stream => src/build_stream}/tests/unit/infra/__init__.py | 0 .../build_stream}/tests/unit/infra/artifact_store/__init__.py | 0 .../build_stream}/tests/unit/infra/artifact_store/conftest.py | 0 .../unit/infra/artifact_store/test_in_memory_artifact_metadata.py | 0 .../unit/infra/artifact_store/test_in_memory_artifact_store.py | 0 .../build_stream}/tests/unit/infra/db/test_mappers.py | 0 .../build_stream}/tests/unit/infra/db/test_repositories_unit.py | 0 .../build_stream}/tests/unit/infra/s3/__init__.py | 0 .../build_stream}/tests/unit/infra/s3/test_s3cmd_cleanup.py | 0 .../build_stream}/tests/unit/infra/test_id_generator.py | 0 .../build_stream}/tests/unit/infra/test_in_memory_image_repos.py | 0 .../tests/unit/infra/test_nfs_input_directory_repository.py | 0 .../tests/unit/infra/test_nfs_playbook_queue_result_service.py | 0 .../build_stream}/tests/unit/infra/test_nfs_repositories.py | 0 .../build_stream}/tests/unit/orchestrator/__init__.py | 0 .../build_stream}/tests/unit/orchestrator/build_image/__init__.py | 0 .../orchestrator/build_image/test_create_build_image_use_case.py | 0 .../build_stream}/tests/unit/orchestrator/catalog/conftest.py | 0 .../orchestrator/catalog/test_generate_input_files_command.py | 0 .../orchestrator/catalog/test_generate_input_files_use_case.py | 0 .../tests/unit/orchestrator/catalog/test_parse_catalog_command.py | 0 .../unit/orchestrator/catalog/test_parse_catalog_use_case.py | 0 .../tests/unit/orchestrator/catalog/test_s1_4_api_enhancements.py | 0 .../build_stream}/tests/unit/orchestrator/cleanup/__init__.py | 0 .../tests/unit/orchestrator/cleanup/test_cleanup_job_use_case.py | 0 .../build_stream}/tests/unit/orchestrator/common/__init__.py | 0 .../tests/unit/orchestrator/common/test_result_poller.py | 0 .../build_stream}/tests/unit/orchestrator/deploy/__init__.py | 0 .../tests/unit/orchestrator/deploy/test_deploy_use_case.py | 0 .../build_stream}/tests/unit/orchestrator/images/__init__.py | 0 .../tests/unit/orchestrator/images/test_list_images_use_case.py | 0 .../build_stream}/tests/unit/orchestrator/jobs/__init__.py | 0 .../tests/unit/orchestrator/jobs/use_cases/__init__.py | 0 .../tests/unit/orchestrator/jobs/use_cases/conftest.py | 0 .../tests/unit/orchestrator/jobs/use_cases/test_create_job.py | 0 .../build_stream}/tests/unit/orchestrator/local_repo/__init__.py | 0 .../tests/unit/orchestrator/local_repo/test_commands.py | 0 .../build_stream}/tests/unit/orchestrator/local_repo/test_dtos.py | 0 .../tests/unit/orchestrator/local_repo/test_result_poller.py | 0 .../tests/unit/orchestrator/local_repo/test_use_case.py | 0 .../build_stream}/tests/unit/orchestrator/restart/__init__.py | 0 .../unit/orchestrator/restart/test_create_restart_use_case.py | 0 .../build_stream}/tests/unit/orchestrator/upload/__init__.py | 0 .../tests/unit/orchestrator/upload/test_upload_use_case.py | 0 .../build_stream}/tests/unit/orchestrator/validate/__init__.py | 0 .../tests/unit/orchestrator/validate/test_validate_use_case.py | 0 {build_stream => src/build_stream}/tests/utils/__init__.py | 0 {build_stream => src/build_stream}/tests/utils/test_data.py | 0 {build_stream => src/build_stream}/utils/__init__.py | 0 439 files changed, 0 insertions(+), 0 deletions(-) rename {build_stream => src/build_stream}/.env.test (100%) rename {build_stream => src/build_stream}/.gitignore (100%) rename {build_stream => src/build_stream}/README.md (100%) rename {build_stream => src/build_stream}/__init__.py (100%) rename {build_stream => src/build_stream}/api/__init__.py (100%) rename {build_stream => src/build_stream}/api/auth/__init__.py (100%) rename {build_stream => src/build_stream}/api/auth/jwt_handler.py (100%) rename {build_stream => src/build_stream}/api/auth/password_handler.py (100%) rename {build_stream => src/build_stream}/api/auth/routes.py (100%) rename {build_stream => src/build_stream}/api/auth/schemas.py (100%) rename {build_stream => src/build_stream}/api/auth/service.py (100%) rename {build_stream => src/build_stream}/api/build_image/__init__.py (100%) rename {build_stream => src/build_stream}/api/build_image/dependencies.py (100%) rename {build_stream => src/build_stream}/api/build_image/routes.py (100%) rename {build_stream => src/build_stream}/api/build_image/schemas.py (100%) rename {build_stream => src/build_stream}/api/catalog_roles/__init__.py (100%) rename {build_stream => src/build_stream}/api/catalog_roles/dependencies.py (100%) rename {build_stream => src/build_stream}/api/catalog_roles/routes.py (100%) rename {build_stream => src/build_stream}/api/catalog_roles/schemas.py (100%) rename {build_stream => src/build_stream}/api/catalog_roles/service.py (100%) rename {build_stream => src/build_stream}/api/cleanup/__init__.py (100%) rename {build_stream => src/build_stream}/api/cleanup/dependencies.py (100%) rename {build_stream => src/build_stream}/api/dependencies.py (100%) rename {build_stream => src/build_stream}/api/deploy/__init__.py (100%) rename {build_stream => src/build_stream}/api/deploy/dependencies.py (100%) rename {build_stream => src/build_stream}/api/deploy/routes.py (100%) rename {build_stream => src/build_stream}/api/deploy/schemas.py (100%) rename {build_stream => src/build_stream}/api/generate_input_files/__init__.py (100%) rename {build_stream => src/build_stream}/api/generate_input_files/dependencies.py (100%) rename {build_stream => src/build_stream}/api/generate_input_files/routes.py (100%) rename {build_stream => src/build_stream}/api/generate_input_files/schemas.py (100%) rename {build_stream => src/build_stream}/api/images/__init__.py (100%) rename {build_stream => src/build_stream}/api/images/dependencies.py (100%) rename {build_stream => src/build_stream}/api/images/routes.py (100%) rename {build_stream => src/build_stream}/api/images/schemas.py (100%) rename {build_stream => src/build_stream}/api/jobs/__init__.py (100%) rename {build_stream => src/build_stream}/api/jobs/dependencies.py (100%) rename {build_stream => src/build_stream}/api/jobs/routes.py (100%) rename {build_stream => src/build_stream}/api/jobs/schemas.py (100%) rename {build_stream => src/build_stream}/api/local_repo/__init__.py (100%) rename {build_stream => src/build_stream}/api/local_repo/dependencies.py (100%) rename {build_stream => src/build_stream}/api/local_repo/routes.py (100%) rename {build_stream => src/build_stream}/api/local_repo/schemas.py (100%) rename {build_stream => src/build_stream}/api/logging_utils.py (100%) rename {build_stream => src/build_stream}/api/parse_catalog/__init__.py (100%) rename {build_stream => src/build_stream}/api/parse_catalog/dependencies.py (100%) rename {build_stream => src/build_stream}/api/parse_catalog/routes.py (100%) rename {build_stream => src/build_stream}/api/parse_catalog/schemas.py (100%) rename {build_stream => src/build_stream}/api/parse_catalog/service.py (100%) rename {build_stream => src/build_stream}/api/restart/__init__.py (100%) rename {build_stream => src/build_stream}/api/restart/dependencies.py (100%) rename {build_stream => src/build_stream}/api/restart/routes.py (100%) rename {build_stream => src/build_stream}/api/restart/schemas.py (100%) rename {build_stream => src/build_stream}/api/router.py (100%) rename {build_stream => src/build_stream}/api/upload/__init__.py (100%) rename {build_stream => src/build_stream}/api/upload/dependencies.py (100%) rename {build_stream => src/build_stream}/api/upload/routes.py (100%) rename {build_stream => src/build_stream}/api/upload/schemas.py (100%) rename {build_stream => src/build_stream}/api/validate/__init__.py (100%) rename {build_stream => src/build_stream}/api/validate/dependencies.py (100%) rename {build_stream => src/build_stream}/api/validate/routes.py (100%) rename {build_stream => src/build_stream}/api/validate/schemas.py (100%) rename {build_stream => src/build_stream}/api/vault_client.py (100%) rename {build_stream => src/build_stream}/build_stream.ini (100%) rename {build_stream => src/build_stream}/cleanup_cron.py (100%) rename {build_stream => src/build_stream}/common/__init__.py (100%) rename {build_stream => src/build_stream}/common/config.py (100%) rename {build_stream => src/build_stream}/common/constants.py (100%) rename {build_stream => src/build_stream}/common/logging.py (100%) rename {build_stream => src/build_stream}/common/user_messages.py (100%) rename {build_stream => src/build_stream}/container.py (100%) rename {build_stream => src/build_stream}/core/__init__.py (100%) rename {build_stream => src/build_stream}/core/artifacts/__init__.py (100%) rename {build_stream => src/build_stream}/core/artifacts/entities.py (100%) rename {build_stream => src/build_stream}/core/artifacts/exceptions.py (100%) rename {build_stream => src/build_stream}/core/artifacts/interfaces.py (100%) rename {build_stream => src/build_stream}/core/artifacts/ports.py (100%) rename {build_stream => src/build_stream}/core/artifacts/value_objects.py (100%) rename {build_stream => src/build_stream}/core/build/__init__.py (100%) rename {build_stream => src/build_stream}/core/build_image/__init__.py (100%) rename {build_stream => src/build_stream}/core/build_image/entities.py (100%) rename {build_stream => src/build_stream}/core/build_image/exceptions.py (100%) rename {build_stream => src/build_stream}/core/build_image/repositories.py (100%) rename {build_stream => src/build_stream}/core/build_image/services.py (100%) rename {build_stream => src/build_stream}/core/build_image/value_objects.py (100%) rename {build_stream => src/build_stream}/core/catalog/ADAPTER_POLICY_GUIDE.md (100%) rename {build_stream => src/build_stream}/core/catalog/CATALOG_GENERATOR.md (100%) rename {build_stream => src/build_stream}/core/catalog/README.md (100%) rename {build_stream => src/build_stream}/core/catalog/__init__.py (100%) rename {build_stream => src/build_stream}/core/catalog/adapter.py (100%) rename {build_stream => src/build_stream}/core/catalog/adapter_policy.py (100%) rename {build_stream => src/build_stream}/core/catalog/adapter_policy_schema_consts.py (100%) rename {build_stream => src/build_stream}/core/catalog/exceptions.py (100%) rename {build_stream => src/build_stream}/core/catalog/generator.py (100%) rename {build_stream => src/build_stream}/core/catalog/models.py (100%) rename {build_stream => src/build_stream}/core/catalog/parser.py (100%) rename {build_stream => src/build_stream}/core/catalog/resources/AdapterPolicySchema.json (100%) rename {build_stream => src/build_stream}/core/catalog/resources/CatalogSchema.json (100%) rename {build_stream => src/build_stream}/core/catalog/resources/RootLevelSchema.json (100%) rename {build_stream => src/build_stream}/core/catalog/resources/adapter_policy_default.json (100%) rename {build_stream => src/build_stream}/core/catalog/test_fixtures/adapter_policy_test.json (100%) rename {build_stream => src/build_stream}/core/catalog/test_fixtures/functional_layer.json (100%) rename {build_stream => src/build_stream}/core/catalog/tests/diff_input_configs.py (100%) rename {build_stream => src/build_stream}/core/catalog/tests/sample.py (100%) rename {build_stream => src/build_stream}/core/catalog/tests/test_adapter_cli_defaults.py (100%) rename {build_stream => src/build_stream}/core/catalog/tests/test_adapter_policy.py (100%) rename {build_stream => src/build_stream}/core/catalog/tests/test_catalog_diff_regression.py (100%) rename {build_stream => src/build_stream}/core/catalog/tests/test_generate_catalog_id.py (100%) rename {build_stream => src/build_stream}/core/catalog/tests/test_generator_cli_defaults.py (100%) rename {build_stream => src/build_stream}/core/catalog/tests/test_generator_package_list.py (100%) rename {build_stream => src/build_stream}/core/catalog/tests/test_generator_roles.py (100%) rename {build_stream => src/build_stream}/core/catalog/tests/test_parser_defaults.py (100%) rename {build_stream => src/build_stream}/core/catalog/utils.py (100%) rename {build_stream => src/build_stream}/core/cleanup/__init__.py (100%) rename {build_stream => src/build_stream}/core/cleanup/exceptions.py (100%) rename {build_stream => src/build_stream}/core/cleanup/s3_service.py (100%) rename {build_stream => src/build_stream}/core/common/__init__.py (100%) rename {build_stream => src/build_stream}/core/deploy/__init__.py (100%) rename {build_stream => src/build_stream}/core/deploy/entities.py (100%) rename {build_stream => src/build_stream}/core/deploy/exceptions.py (100%) rename {build_stream => src/build_stream}/core/deploy/services.py (100%) rename {build_stream => src/build_stream}/core/exceptions.py (100%) rename {build_stream => src/build_stream}/core/image_group/__init__.py (100%) rename {build_stream => src/build_stream}/core/image_group/entities.py (100%) rename {build_stream => src/build_stream}/core/image_group/exceptions.py (100%) rename {build_stream => src/build_stream}/core/image_group/repositories.py (100%) rename {build_stream => src/build_stream}/core/image_group/state_machine.py (100%) rename {build_stream => src/build_stream}/core/image_group/value_objects.py (100%) rename {build_stream => src/build_stream}/core/jobs/__init__.py (100%) rename {build_stream => src/build_stream}/core/jobs/entities/__init__.py (100%) rename {build_stream => src/build_stream}/core/jobs/entities/audit.py (100%) rename {build_stream => src/build_stream}/core/jobs/entities/idempotency.py (100%) rename {build_stream => src/build_stream}/core/jobs/entities/job.py (100%) rename {build_stream => src/build_stream}/core/jobs/entities/stage.py (100%) rename {build_stream => src/build_stream}/core/jobs/exceptions.py (100%) rename {build_stream => src/build_stream}/core/jobs/repositories.py (100%) rename {build_stream => src/build_stream}/core/jobs/services.py (100%) rename {build_stream => src/build_stream}/core/jobs/value_objects.py (100%) rename {build_stream => src/build_stream}/core/localrepo/__init__.py (100%) rename {build_stream => src/build_stream}/core/localrepo/entities.py (100%) rename {build_stream => src/build_stream}/core/localrepo/exceptions.py (100%) rename {build_stream => src/build_stream}/core/localrepo/repositories.py (100%) rename {build_stream => src/build_stream}/core/localrepo/services.py (100%) rename {build_stream => src/build_stream}/core/localrepo/value_objects.py (100%) rename {build_stream => src/build_stream}/core/utils/__init__.py (100%) rename {build_stream => src/build_stream}/core/validate/__init__.py (100%) rename {build_stream => src/build_stream}/core/validate/entities.py (100%) rename {build_stream => src/build_stream}/core/validate/exceptions.py (100%) rename {build_stream => src/build_stream}/core/validate/services.py (100%) rename {build_stream => src/build_stream}/doc/README.md (100%) rename {build_stream => src/build_stream}/doc/__init__.py (100%) rename {build_stream => src/build_stream}/doc/build_image.md (100%) rename {build_stream => src/build_stream}/doc/catalog.md (100%) rename {build_stream => src/build_stream}/doc/jobs.md (100%) rename {build_stream => src/build_stream}/doc/local_repo.md (100%) rename {build_stream => src/build_stream}/doc/validation.md (100%) rename {build_stream => src/build_stream}/generate_catalog.py (100%) rename {build_stream => src/build_stream}/generate_catalog_examples.py (100%) rename {build_stream => src/build_stream}/infra/__init__.py (100%) rename {build_stream => src/build_stream}/infra/artifact_store/__init__.py (100%) rename {build_stream => src/build_stream}/infra/artifact_store/file_artifact_store.py (100%) rename {build_stream => src/build_stream}/infra/artifact_store/in_memory_artifact_metadata.py (100%) rename {build_stream => src/build_stream}/infra/artifact_store/in_memory_artifact_store.py (100%) rename {build_stream => src/build_stream}/infra/db/__init__.py (100%) rename {build_stream => src/build_stream}/infra/db/alembic.ini (100%) rename {build_stream => src/build_stream}/infra/db/alembic/env.py (100%) rename {build_stream => src/build_stream}/infra/db/alembic/script.py.mako (100%) rename {build_stream => src/build_stream}/infra/db/alembic/versions/20260219_001_create_jobs_table.py (100%) rename {build_stream => src/build_stream}/infra/db/alembic/versions/20260219_002_create_stages_table.py (100%) rename {build_stream => src/build_stream}/infra/db/alembic/versions/20260219_003_create_idempotency_keys_table.py (100%) rename {build_stream => src/build_stream}/infra/db/alembic/versions/20260219_004_create_audit_events_table.py (100%) rename {build_stream => src/build_stream}/infra/db/alembic/versions/20260219_005_create_artifact_metadata_table.py (100%) rename {build_stream => src/build_stream}/infra/db/alembic/versions/20260408_006_release2_image_groups_images.py (100%) rename {build_stream => src/build_stream}/infra/db/alembic/versions/20260507_007_add_last_attempt_at_to_stages.py (100%) rename {build_stream => src/build_stream}/infra/db/config.py (100%) rename {build_stream => src/build_stream}/infra/db/mappers.py (100%) rename {build_stream => src/build_stream}/infra/db/models.py (100%) rename {build_stream => src/build_stream}/infra/db/repositories.py (100%) rename {build_stream => src/build_stream}/infra/db/session.py (100%) rename {build_stream => src/build_stream}/infra/id_generator.py (100%) rename {build_stream => src/build_stream}/infra/repositories/__init__.py (100%) rename {build_stream => src/build_stream}/infra/repositories/in_memory.py (100%) rename {build_stream => src/build_stream}/infra/repositories/nfs_build_image_inventory_repository.py (100%) rename {build_stream => src/build_stream}/infra/repositories/nfs_input_repository.py (100%) rename {build_stream => src/build_stream}/infra/repositories/nfs_playbook_queue_request_repository.py (100%) rename {build_stream => src/build_stream}/infra/repositories/nfs_playbook_queue_result_repository.py (100%) rename {build_stream => src/build_stream}/infra/s3/__init__.py (100%) rename {build_stream => src/build_stream}/infra/s3/s3cmd_cleanup.py (100%) rename {build_stream => src/build_stream}/main.py (100%) rename {build_stream => src/build_stream}/orchestrator/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/build_image/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/build_image/commands/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/build_image/commands/create_build_image.py (100%) rename {build_stream => src/build_stream}/orchestrator/build_image/dtos/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/build_image/dtos/build_image_response.py (100%) rename {build_stream => src/build_stream}/orchestrator/build_image/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/build_image/use_cases/create_build_image.py (100%) rename {build_stream => src/build_stream}/orchestrator/catalog/commands/generate_input_files.py (100%) rename {build_stream => src/build_stream}/orchestrator/catalog/commands/parse_catalog.py (100%) rename {build_stream => src/build_stream}/orchestrator/catalog/dtos.py (100%) rename {build_stream => src/build_stream}/orchestrator/catalog/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/catalog/use_cases/generate_input_files.py (100%) rename {build_stream => src/build_stream}/orchestrator/catalog/use_cases/parse_catalog.py (100%) rename {build_stream => src/build_stream}/orchestrator/cleanup/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/cleanup/commands/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/cleanup/commands/cleanup_job.py (100%) rename {build_stream => src/build_stream}/orchestrator/cleanup/dtos/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/cleanup/dtos/cleanup_response.py (100%) rename {build_stream => src/build_stream}/orchestrator/cleanup/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/cleanup/use_cases/cleanup_job.py (100%) rename {build_stream => src/build_stream}/orchestrator/common/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/common/result_poller.py (100%) rename {build_stream => src/build_stream}/orchestrator/deploy/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/deploy/commands/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/deploy/commands/deploy_command.py (100%) rename {build_stream => src/build_stream}/orchestrator/deploy/dtos/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/deploy/dtos/deploy_response.py (100%) rename {build_stream => src/build_stream}/orchestrator/deploy/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/deploy/use_cases/deploy_use_case.py (100%) rename {build_stream => src/build_stream}/orchestrator/images/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/images/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/images/use_cases/list_images_use_case.py (100%) rename {build_stream => src/build_stream}/orchestrator/jobs/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/jobs/commands/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/jobs/commands/create_job.py (100%) rename {build_stream => src/build_stream}/orchestrator/jobs/dtos/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/jobs/dtos/job_response.py (100%) rename {build_stream => src/build_stream}/orchestrator/jobs/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/jobs/use_cases/create_job.py (100%) rename {build_stream => src/build_stream}/orchestrator/local_repo/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/local_repo/commands/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/local_repo/commands/create_local_repo.py (100%) rename {build_stream => src/build_stream}/orchestrator/local_repo/dtos/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/local_repo/dtos/local_repo_response.py (100%) rename {build_stream => src/build_stream}/orchestrator/local_repo/result_poller.py (100%) rename {build_stream => src/build_stream}/orchestrator/local_repo/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/local_repo/use_cases/create_local_repo.py (100%) rename {build_stream => src/build_stream}/orchestrator/restart/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/restart/commands/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/restart/commands/create_restart.py (100%) rename {build_stream => src/build_stream}/orchestrator/restart/dtos/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/restart/dtos/restart_response.py (100%) rename {build_stream => src/build_stream}/orchestrator/restart/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/restart/use_cases/create_restart.py (100%) rename {build_stream => src/build_stream}/orchestrator/upload/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/upload/commands/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/upload/commands/upload_files.py (100%) rename {build_stream => src/build_stream}/orchestrator/upload/exceptions.py (100%) rename {build_stream => src/build_stream}/orchestrator/upload/results/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/upload/results/upload_files.py (100%) rename {build_stream => src/build_stream}/orchestrator/upload/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/upload/use_cases/upload_files.py (100%) rename {build_stream => src/build_stream}/orchestrator/validate/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/validate/commands/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/validate/commands/validate.py (100%) rename {build_stream => src/build_stream}/orchestrator/validate/dtos/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/validate/dtos/validate_response.py (100%) rename {build_stream => src/build_stream}/orchestrator/validate/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/orchestrator/validate/use_cases/validate.py (100%) rename {build_stream => src/build_stream}/playbook-watcher/playbook_watcher_service.py (100%) rename {build_stream => src/build_stream}/pytest.ini (100%) rename {build_stream => src/build_stream}/requirements-dev.txt (100%) rename {build_stream => src/build_stream}/requirements.txt (100%) rename {build_stream => src/build_stream}/scripts/generate_jwt_keys.sh (100%) rename {build_stream => src/build_stream}/tests/README.md (100%) rename {build_stream => src/build_stream}/tests/__init__.py (100%) rename {build_stream => src/build_stream}/tests/conftest.py (100%) rename {build_stream => src/build_stream}/tests/demo/buildstream_demo.py (100%) rename {build_stream => src/build_stream}/tests/demo/test_restart_api.sh (100%) rename {build_stream => src/build_stream}/tests/end_to_end/api/conftest.py (100%) rename {build_stream => src/build_stream}/tests/end_to_end/api/test_api_flow_e2e.py (100%) rename {build_stream => src/build_stream}/tests/end_to_end/api/test_build_image_e2e.py (100%) rename {build_stream => src/build_stream}/tests/end_to_end/api/test_generate_input_files_e2e.py (100%) rename {build_stream => src/build_stream}/tests/end_to_end/api/test_parse_catalog_e2e.py (100%) rename {build_stream => src/build_stream}/tests/end_to_end/api/test_register_e2e.py (100%) rename {build_stream => src/build_stream}/tests/end_to_end/api/test_token_e2e.py (100%) rename {build_stream => src/build_stream}/tests/integration/__init__.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/__init__.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/auth/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/auth/test_register.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/auth/test_token.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/build_image/__init__.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/build_image/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/build_image/test_build_image_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/catalog_roles/__init__.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/catalog_roles/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/catalog_roles/test_catalog_roles_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/generate_input_files/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/generate_input_files/test_generate_input_files_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/generate_input_files/test_generate_input_files_artifact_integration.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/generate_input_files/test_generate_input_files_routes.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/jobs/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/jobs/test_create_job_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/jobs/test_delete_job_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/jobs/test_get_job_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/local_repo/__init__.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/local_repo/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/local_repo/test_create_local_repo_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/local_repo/test_create_local_repo_edge_cases.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/parse_catalog/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/parse_catalog/test_parse_catalog_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/parse_catalog/test_parse_catalog_artifact_integration.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/parse_catalog/test_parse_catalog_routes.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/restart/__init__.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/restart/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/restart/test_restart_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/validate/__init__.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/validate/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/validate/test_models.py (100%) rename {build_stream => src/build_stream}/tests/integration/api/validate/test_validate_api.py (100%) rename {build_stream => src/build_stream}/tests/integration/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/core/catalog/test_adapter_cli_defaults.py (100%) rename {build_stream => src/build_stream}/tests/integration/core/catalog/test_adapter_policy.py (100%) rename {build_stream => src/build_stream}/tests/integration/core/catalog/test_generator_cli_defaults.py (100%) rename {build_stream => src/build_stream}/tests/integration/core/catalog/test_generator_package_list.py (100%) rename {build_stream => src/build_stream}/tests/integration/core/catalog/test_generator_roles.py (100%) rename {build_stream => src/build_stream}/tests/integration/core/image_group/__init__.py (100%) rename {build_stream => src/build_stream}/tests/integration/core/image_group/test_image_group_data_model.py (100%) rename {build_stream => src/build_stream}/tests/integration/infra/artifact_store/test_file_artifact_store.py (100%) rename {build_stream => src/build_stream}/tests/integration/infra/db/conftest.py (100%) rename {build_stream => src/build_stream}/tests/integration/infra/db/test_sql_repositories.py (100%) rename {build_stream => src/build_stream}/tests/mocks/__init__.py (100%) rename {build_stream => src/build_stream}/tests/mocks/mock_jwt_handler.py (100%) rename {build_stream => src/build_stream}/tests/mocks/mock_vault_client.py (100%) rename {build_stream => src/build_stream}/tests/others/__init__.py (100%) rename {build_stream => src/build_stream}/tests/others/test_dependency_rules.py (100%) rename {build_stream => src/build_stream}/tests/performance/test_local_repo_performance.py (100%) rename {build_stream => src/build_stream}/tests/unit/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/auth/test_password_handler.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/auth/test_service.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/auth/test_token_service.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/build_image/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/build_image/test_routes.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/catalog_roles/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/catalog_roles/test_catalog_roles_service.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/deploy/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/deploy/test_routes.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/generate_input_files/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/generate_input_files/test_routes.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/images/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/images/test_routes.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/jobs/test_dependencies.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/jobs/test_schemas.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/local_repo/test_local_repo_dependencies.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/local_repo/test_local_repo_schemas.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/local_repo/test_routes.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/parse_catalog/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/parse_catalog/test_routes.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/restart/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/restart/test_routes.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/validate/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/api/validate/test_routes.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/artifacts/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/artifacts/conftest.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/artifacts/test_exceptions.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/artifacts/test_value_objects.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/build_image/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/build_image/test_entities.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/build_image/test_services.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/build_image/test_value_objects.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/catalog/test_exceptions.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/catalog/test_generate_software_config.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/catalog/test_parser.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/catalog/test_parser_defaults.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/image_group/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/image_group/test_entities.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/image_group/test_exceptions.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/image_group/test_state_machine.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/image_group/test_value_objects.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/jobs/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/jobs/entities/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/jobs/entities/conftest.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/jobs/entities/test_audit.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/jobs/entities/test_idempotency.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/jobs/entities/test_job.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/jobs/entities/test_stage.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/jobs/test_exceptions.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/jobs/test_value_objects.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/localrepo/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/localrepo/test_entities.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/localrepo/test_exceptions.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/localrepo/test_services.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/localrepo/test_value_objects.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/validate/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/validate/test_entities.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/validate/test_exceptions.py (100%) rename {build_stream => src/build_stream}/tests/unit/core/validate/test_services.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/artifact_store/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/artifact_store/conftest.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/artifact_store/test_in_memory_artifact_metadata.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/artifact_store/test_in_memory_artifact_store.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/db/test_mappers.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/db/test_repositories_unit.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/s3/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/s3/test_s3cmd_cleanup.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/test_id_generator.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/test_in_memory_image_repos.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/test_nfs_input_directory_repository.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/test_nfs_playbook_queue_result_service.py (100%) rename {build_stream => src/build_stream}/tests/unit/infra/test_nfs_repositories.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/build_image/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/build_image/test_create_build_image_use_case.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/catalog/conftest.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/catalog/test_generate_input_files_command.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/catalog/test_generate_input_files_use_case.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/catalog/test_parse_catalog_command.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/catalog/test_parse_catalog_use_case.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/catalog/test_s1_4_api_enhancements.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/cleanup/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/cleanup/test_cleanup_job_use_case.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/common/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/common/test_result_poller.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/deploy/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/deploy/test_deploy_use_case.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/images/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/images/test_list_images_use_case.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/jobs/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/jobs/use_cases/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/jobs/use_cases/conftest.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/jobs/use_cases/test_create_job.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/local_repo/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/local_repo/test_commands.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/local_repo/test_dtos.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/local_repo/test_result_poller.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/local_repo/test_use_case.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/restart/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/restart/test_create_restart_use_case.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/upload/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/upload/test_upload_use_case.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/validate/__init__.py (100%) rename {build_stream => src/build_stream}/tests/unit/orchestrator/validate/test_validate_use_case.py (100%) rename {build_stream => src/build_stream}/tests/utils/__init__.py (100%) rename {build_stream => src/build_stream}/tests/utils/test_data.py (100%) rename {build_stream => src/build_stream}/utils/__init__.py (100%) diff --git a/build_stream/.env.test b/src/build_stream/.env.test similarity index 100% rename from build_stream/.env.test rename to src/build_stream/.env.test diff --git a/build_stream/.gitignore b/src/build_stream/.gitignore similarity index 100% rename from build_stream/.gitignore rename to src/build_stream/.gitignore diff --git a/build_stream/README.md b/src/build_stream/README.md similarity index 100% rename from build_stream/README.md rename to src/build_stream/README.md diff --git a/build_stream/__init__.py b/src/build_stream/__init__.py similarity index 100% rename from build_stream/__init__.py rename to src/build_stream/__init__.py diff --git a/build_stream/api/__init__.py b/src/build_stream/api/__init__.py similarity index 100% rename from build_stream/api/__init__.py rename to src/build_stream/api/__init__.py diff --git a/build_stream/api/auth/__init__.py b/src/build_stream/api/auth/__init__.py similarity index 100% rename from build_stream/api/auth/__init__.py rename to src/build_stream/api/auth/__init__.py diff --git a/build_stream/api/auth/jwt_handler.py b/src/build_stream/api/auth/jwt_handler.py similarity index 100% rename from build_stream/api/auth/jwt_handler.py rename to src/build_stream/api/auth/jwt_handler.py diff --git a/build_stream/api/auth/password_handler.py b/src/build_stream/api/auth/password_handler.py similarity index 100% rename from build_stream/api/auth/password_handler.py rename to src/build_stream/api/auth/password_handler.py diff --git a/build_stream/api/auth/routes.py b/src/build_stream/api/auth/routes.py similarity index 100% rename from build_stream/api/auth/routes.py rename to src/build_stream/api/auth/routes.py diff --git a/build_stream/api/auth/schemas.py b/src/build_stream/api/auth/schemas.py similarity index 100% rename from build_stream/api/auth/schemas.py rename to src/build_stream/api/auth/schemas.py diff --git a/build_stream/api/auth/service.py b/src/build_stream/api/auth/service.py similarity index 100% rename from build_stream/api/auth/service.py rename to src/build_stream/api/auth/service.py diff --git a/build_stream/api/build_image/__init__.py b/src/build_stream/api/build_image/__init__.py similarity index 100% rename from build_stream/api/build_image/__init__.py rename to src/build_stream/api/build_image/__init__.py diff --git a/build_stream/api/build_image/dependencies.py b/src/build_stream/api/build_image/dependencies.py similarity index 100% rename from build_stream/api/build_image/dependencies.py rename to src/build_stream/api/build_image/dependencies.py diff --git a/build_stream/api/build_image/routes.py b/src/build_stream/api/build_image/routes.py similarity index 100% rename from build_stream/api/build_image/routes.py rename to src/build_stream/api/build_image/routes.py diff --git a/build_stream/api/build_image/schemas.py b/src/build_stream/api/build_image/schemas.py similarity index 100% rename from build_stream/api/build_image/schemas.py rename to src/build_stream/api/build_image/schemas.py diff --git a/build_stream/api/catalog_roles/__init__.py b/src/build_stream/api/catalog_roles/__init__.py similarity index 100% rename from build_stream/api/catalog_roles/__init__.py rename to src/build_stream/api/catalog_roles/__init__.py diff --git a/build_stream/api/catalog_roles/dependencies.py b/src/build_stream/api/catalog_roles/dependencies.py similarity index 100% rename from build_stream/api/catalog_roles/dependencies.py rename to src/build_stream/api/catalog_roles/dependencies.py diff --git a/build_stream/api/catalog_roles/routes.py b/src/build_stream/api/catalog_roles/routes.py similarity index 100% rename from build_stream/api/catalog_roles/routes.py rename to src/build_stream/api/catalog_roles/routes.py diff --git a/build_stream/api/catalog_roles/schemas.py b/src/build_stream/api/catalog_roles/schemas.py similarity index 100% rename from build_stream/api/catalog_roles/schemas.py rename to src/build_stream/api/catalog_roles/schemas.py diff --git a/build_stream/api/catalog_roles/service.py b/src/build_stream/api/catalog_roles/service.py similarity index 100% rename from build_stream/api/catalog_roles/service.py rename to src/build_stream/api/catalog_roles/service.py diff --git a/build_stream/api/cleanup/__init__.py b/src/build_stream/api/cleanup/__init__.py similarity index 100% rename from build_stream/api/cleanup/__init__.py rename to src/build_stream/api/cleanup/__init__.py diff --git a/build_stream/api/cleanup/dependencies.py b/src/build_stream/api/cleanup/dependencies.py similarity index 100% rename from build_stream/api/cleanup/dependencies.py rename to src/build_stream/api/cleanup/dependencies.py diff --git a/build_stream/api/dependencies.py b/src/build_stream/api/dependencies.py similarity index 100% rename from build_stream/api/dependencies.py rename to src/build_stream/api/dependencies.py diff --git a/build_stream/api/deploy/__init__.py b/src/build_stream/api/deploy/__init__.py similarity index 100% rename from build_stream/api/deploy/__init__.py rename to src/build_stream/api/deploy/__init__.py diff --git a/build_stream/api/deploy/dependencies.py b/src/build_stream/api/deploy/dependencies.py similarity index 100% rename from build_stream/api/deploy/dependencies.py rename to src/build_stream/api/deploy/dependencies.py diff --git a/build_stream/api/deploy/routes.py b/src/build_stream/api/deploy/routes.py similarity index 100% rename from build_stream/api/deploy/routes.py rename to src/build_stream/api/deploy/routes.py diff --git a/build_stream/api/deploy/schemas.py b/src/build_stream/api/deploy/schemas.py similarity index 100% rename from build_stream/api/deploy/schemas.py rename to src/build_stream/api/deploy/schemas.py diff --git a/build_stream/api/generate_input_files/__init__.py b/src/build_stream/api/generate_input_files/__init__.py similarity index 100% rename from build_stream/api/generate_input_files/__init__.py rename to src/build_stream/api/generate_input_files/__init__.py diff --git a/build_stream/api/generate_input_files/dependencies.py b/src/build_stream/api/generate_input_files/dependencies.py similarity index 100% rename from build_stream/api/generate_input_files/dependencies.py rename to src/build_stream/api/generate_input_files/dependencies.py diff --git a/build_stream/api/generate_input_files/routes.py b/src/build_stream/api/generate_input_files/routes.py similarity index 100% rename from build_stream/api/generate_input_files/routes.py rename to src/build_stream/api/generate_input_files/routes.py diff --git a/build_stream/api/generate_input_files/schemas.py b/src/build_stream/api/generate_input_files/schemas.py similarity index 100% rename from build_stream/api/generate_input_files/schemas.py rename to src/build_stream/api/generate_input_files/schemas.py diff --git a/build_stream/api/images/__init__.py b/src/build_stream/api/images/__init__.py similarity index 100% rename from build_stream/api/images/__init__.py rename to src/build_stream/api/images/__init__.py diff --git a/build_stream/api/images/dependencies.py b/src/build_stream/api/images/dependencies.py similarity index 100% rename from build_stream/api/images/dependencies.py rename to src/build_stream/api/images/dependencies.py diff --git a/build_stream/api/images/routes.py b/src/build_stream/api/images/routes.py similarity index 100% rename from build_stream/api/images/routes.py rename to src/build_stream/api/images/routes.py diff --git a/build_stream/api/images/schemas.py b/src/build_stream/api/images/schemas.py similarity index 100% rename from build_stream/api/images/schemas.py rename to src/build_stream/api/images/schemas.py diff --git a/build_stream/api/jobs/__init__.py b/src/build_stream/api/jobs/__init__.py similarity index 100% rename from build_stream/api/jobs/__init__.py rename to src/build_stream/api/jobs/__init__.py diff --git a/build_stream/api/jobs/dependencies.py b/src/build_stream/api/jobs/dependencies.py similarity index 100% rename from build_stream/api/jobs/dependencies.py rename to src/build_stream/api/jobs/dependencies.py diff --git a/build_stream/api/jobs/routes.py b/src/build_stream/api/jobs/routes.py similarity index 100% rename from build_stream/api/jobs/routes.py rename to src/build_stream/api/jobs/routes.py diff --git a/build_stream/api/jobs/schemas.py b/src/build_stream/api/jobs/schemas.py similarity index 100% rename from build_stream/api/jobs/schemas.py rename to src/build_stream/api/jobs/schemas.py diff --git a/build_stream/api/local_repo/__init__.py b/src/build_stream/api/local_repo/__init__.py similarity index 100% rename from build_stream/api/local_repo/__init__.py rename to src/build_stream/api/local_repo/__init__.py diff --git a/build_stream/api/local_repo/dependencies.py b/src/build_stream/api/local_repo/dependencies.py similarity index 100% rename from build_stream/api/local_repo/dependencies.py rename to src/build_stream/api/local_repo/dependencies.py diff --git a/build_stream/api/local_repo/routes.py b/src/build_stream/api/local_repo/routes.py similarity index 100% rename from build_stream/api/local_repo/routes.py rename to src/build_stream/api/local_repo/routes.py diff --git a/build_stream/api/local_repo/schemas.py b/src/build_stream/api/local_repo/schemas.py similarity index 100% rename from build_stream/api/local_repo/schemas.py rename to src/build_stream/api/local_repo/schemas.py diff --git a/build_stream/api/logging_utils.py b/src/build_stream/api/logging_utils.py similarity index 100% rename from build_stream/api/logging_utils.py rename to src/build_stream/api/logging_utils.py diff --git a/build_stream/api/parse_catalog/__init__.py b/src/build_stream/api/parse_catalog/__init__.py similarity index 100% rename from build_stream/api/parse_catalog/__init__.py rename to src/build_stream/api/parse_catalog/__init__.py diff --git a/build_stream/api/parse_catalog/dependencies.py b/src/build_stream/api/parse_catalog/dependencies.py similarity index 100% rename from build_stream/api/parse_catalog/dependencies.py rename to src/build_stream/api/parse_catalog/dependencies.py diff --git a/build_stream/api/parse_catalog/routes.py b/src/build_stream/api/parse_catalog/routes.py similarity index 100% rename from build_stream/api/parse_catalog/routes.py rename to src/build_stream/api/parse_catalog/routes.py diff --git a/build_stream/api/parse_catalog/schemas.py b/src/build_stream/api/parse_catalog/schemas.py similarity index 100% rename from build_stream/api/parse_catalog/schemas.py rename to src/build_stream/api/parse_catalog/schemas.py diff --git a/build_stream/api/parse_catalog/service.py b/src/build_stream/api/parse_catalog/service.py similarity index 100% rename from build_stream/api/parse_catalog/service.py rename to src/build_stream/api/parse_catalog/service.py diff --git a/build_stream/api/restart/__init__.py b/src/build_stream/api/restart/__init__.py similarity index 100% rename from build_stream/api/restart/__init__.py rename to src/build_stream/api/restart/__init__.py diff --git a/build_stream/api/restart/dependencies.py b/src/build_stream/api/restart/dependencies.py similarity index 100% rename from build_stream/api/restart/dependencies.py rename to src/build_stream/api/restart/dependencies.py diff --git a/build_stream/api/restart/routes.py b/src/build_stream/api/restart/routes.py similarity index 100% rename from build_stream/api/restart/routes.py rename to src/build_stream/api/restart/routes.py diff --git a/build_stream/api/restart/schemas.py b/src/build_stream/api/restart/schemas.py similarity index 100% rename from build_stream/api/restart/schemas.py rename to src/build_stream/api/restart/schemas.py diff --git a/build_stream/api/router.py b/src/build_stream/api/router.py similarity index 100% rename from build_stream/api/router.py rename to src/build_stream/api/router.py diff --git a/build_stream/api/upload/__init__.py b/src/build_stream/api/upload/__init__.py similarity index 100% rename from build_stream/api/upload/__init__.py rename to src/build_stream/api/upload/__init__.py diff --git a/build_stream/api/upload/dependencies.py b/src/build_stream/api/upload/dependencies.py similarity index 100% rename from build_stream/api/upload/dependencies.py rename to src/build_stream/api/upload/dependencies.py diff --git a/build_stream/api/upload/routes.py b/src/build_stream/api/upload/routes.py similarity index 100% rename from build_stream/api/upload/routes.py rename to src/build_stream/api/upload/routes.py diff --git a/build_stream/api/upload/schemas.py b/src/build_stream/api/upload/schemas.py similarity index 100% rename from build_stream/api/upload/schemas.py rename to src/build_stream/api/upload/schemas.py diff --git a/build_stream/api/validate/__init__.py b/src/build_stream/api/validate/__init__.py similarity index 100% rename from build_stream/api/validate/__init__.py rename to src/build_stream/api/validate/__init__.py diff --git a/build_stream/api/validate/dependencies.py b/src/build_stream/api/validate/dependencies.py similarity index 100% rename from build_stream/api/validate/dependencies.py rename to src/build_stream/api/validate/dependencies.py diff --git a/build_stream/api/validate/routes.py b/src/build_stream/api/validate/routes.py similarity index 100% rename from build_stream/api/validate/routes.py rename to src/build_stream/api/validate/routes.py diff --git a/build_stream/api/validate/schemas.py b/src/build_stream/api/validate/schemas.py similarity index 100% rename from build_stream/api/validate/schemas.py rename to src/build_stream/api/validate/schemas.py diff --git a/build_stream/api/vault_client.py b/src/build_stream/api/vault_client.py similarity index 100% rename from build_stream/api/vault_client.py rename to src/build_stream/api/vault_client.py diff --git a/build_stream/build_stream.ini b/src/build_stream/build_stream.ini similarity index 100% rename from build_stream/build_stream.ini rename to src/build_stream/build_stream.ini diff --git a/build_stream/cleanup_cron.py b/src/build_stream/cleanup_cron.py similarity index 100% rename from build_stream/cleanup_cron.py rename to src/build_stream/cleanup_cron.py diff --git a/build_stream/common/__init__.py b/src/build_stream/common/__init__.py similarity index 100% rename from build_stream/common/__init__.py rename to src/build_stream/common/__init__.py diff --git a/build_stream/common/config.py b/src/build_stream/common/config.py similarity index 100% rename from build_stream/common/config.py rename to src/build_stream/common/config.py diff --git a/build_stream/common/constants.py b/src/build_stream/common/constants.py similarity index 100% rename from build_stream/common/constants.py rename to src/build_stream/common/constants.py diff --git a/build_stream/common/logging.py b/src/build_stream/common/logging.py similarity index 100% rename from build_stream/common/logging.py rename to src/build_stream/common/logging.py diff --git a/build_stream/common/user_messages.py b/src/build_stream/common/user_messages.py similarity index 100% rename from build_stream/common/user_messages.py rename to src/build_stream/common/user_messages.py diff --git a/build_stream/container.py b/src/build_stream/container.py similarity index 100% rename from build_stream/container.py rename to src/build_stream/container.py diff --git a/build_stream/core/__init__.py b/src/build_stream/core/__init__.py similarity index 100% rename from build_stream/core/__init__.py rename to src/build_stream/core/__init__.py diff --git a/build_stream/core/artifacts/__init__.py b/src/build_stream/core/artifacts/__init__.py similarity index 100% rename from build_stream/core/artifacts/__init__.py rename to src/build_stream/core/artifacts/__init__.py diff --git a/build_stream/core/artifacts/entities.py b/src/build_stream/core/artifacts/entities.py similarity index 100% rename from build_stream/core/artifacts/entities.py rename to src/build_stream/core/artifacts/entities.py diff --git a/build_stream/core/artifacts/exceptions.py b/src/build_stream/core/artifacts/exceptions.py similarity index 100% rename from build_stream/core/artifacts/exceptions.py rename to src/build_stream/core/artifacts/exceptions.py diff --git a/build_stream/core/artifacts/interfaces.py b/src/build_stream/core/artifacts/interfaces.py similarity index 100% rename from build_stream/core/artifacts/interfaces.py rename to src/build_stream/core/artifacts/interfaces.py diff --git a/build_stream/core/artifacts/ports.py b/src/build_stream/core/artifacts/ports.py similarity index 100% rename from build_stream/core/artifacts/ports.py rename to src/build_stream/core/artifacts/ports.py diff --git a/build_stream/core/artifacts/value_objects.py b/src/build_stream/core/artifacts/value_objects.py similarity index 100% rename from build_stream/core/artifacts/value_objects.py rename to src/build_stream/core/artifacts/value_objects.py diff --git a/build_stream/core/build/__init__.py b/src/build_stream/core/build/__init__.py similarity index 100% rename from build_stream/core/build/__init__.py rename to src/build_stream/core/build/__init__.py diff --git a/build_stream/core/build_image/__init__.py b/src/build_stream/core/build_image/__init__.py similarity index 100% rename from build_stream/core/build_image/__init__.py rename to src/build_stream/core/build_image/__init__.py diff --git a/build_stream/core/build_image/entities.py b/src/build_stream/core/build_image/entities.py similarity index 100% rename from build_stream/core/build_image/entities.py rename to src/build_stream/core/build_image/entities.py diff --git a/build_stream/core/build_image/exceptions.py b/src/build_stream/core/build_image/exceptions.py similarity index 100% rename from build_stream/core/build_image/exceptions.py rename to src/build_stream/core/build_image/exceptions.py diff --git a/build_stream/core/build_image/repositories.py b/src/build_stream/core/build_image/repositories.py similarity index 100% rename from build_stream/core/build_image/repositories.py rename to src/build_stream/core/build_image/repositories.py diff --git a/build_stream/core/build_image/services.py b/src/build_stream/core/build_image/services.py similarity index 100% rename from build_stream/core/build_image/services.py rename to src/build_stream/core/build_image/services.py diff --git a/build_stream/core/build_image/value_objects.py b/src/build_stream/core/build_image/value_objects.py similarity index 100% rename from build_stream/core/build_image/value_objects.py rename to src/build_stream/core/build_image/value_objects.py diff --git a/build_stream/core/catalog/ADAPTER_POLICY_GUIDE.md b/src/build_stream/core/catalog/ADAPTER_POLICY_GUIDE.md similarity index 100% rename from build_stream/core/catalog/ADAPTER_POLICY_GUIDE.md rename to src/build_stream/core/catalog/ADAPTER_POLICY_GUIDE.md diff --git a/build_stream/core/catalog/CATALOG_GENERATOR.md b/src/build_stream/core/catalog/CATALOG_GENERATOR.md similarity index 100% rename from build_stream/core/catalog/CATALOG_GENERATOR.md rename to src/build_stream/core/catalog/CATALOG_GENERATOR.md diff --git a/build_stream/core/catalog/README.md b/src/build_stream/core/catalog/README.md similarity index 100% rename from build_stream/core/catalog/README.md rename to src/build_stream/core/catalog/README.md diff --git a/build_stream/core/catalog/__init__.py b/src/build_stream/core/catalog/__init__.py similarity index 100% rename from build_stream/core/catalog/__init__.py rename to src/build_stream/core/catalog/__init__.py diff --git a/build_stream/core/catalog/adapter.py b/src/build_stream/core/catalog/adapter.py similarity index 100% rename from build_stream/core/catalog/adapter.py rename to src/build_stream/core/catalog/adapter.py diff --git a/build_stream/core/catalog/adapter_policy.py b/src/build_stream/core/catalog/adapter_policy.py similarity index 100% rename from build_stream/core/catalog/adapter_policy.py rename to src/build_stream/core/catalog/adapter_policy.py diff --git a/build_stream/core/catalog/adapter_policy_schema_consts.py b/src/build_stream/core/catalog/adapter_policy_schema_consts.py similarity index 100% rename from build_stream/core/catalog/adapter_policy_schema_consts.py rename to src/build_stream/core/catalog/adapter_policy_schema_consts.py diff --git a/build_stream/core/catalog/exceptions.py b/src/build_stream/core/catalog/exceptions.py similarity index 100% rename from build_stream/core/catalog/exceptions.py rename to src/build_stream/core/catalog/exceptions.py diff --git a/build_stream/core/catalog/generator.py b/src/build_stream/core/catalog/generator.py similarity index 100% rename from build_stream/core/catalog/generator.py rename to src/build_stream/core/catalog/generator.py diff --git a/build_stream/core/catalog/models.py b/src/build_stream/core/catalog/models.py similarity index 100% rename from build_stream/core/catalog/models.py rename to src/build_stream/core/catalog/models.py diff --git a/build_stream/core/catalog/parser.py b/src/build_stream/core/catalog/parser.py similarity index 100% rename from build_stream/core/catalog/parser.py rename to src/build_stream/core/catalog/parser.py diff --git a/build_stream/core/catalog/resources/AdapterPolicySchema.json b/src/build_stream/core/catalog/resources/AdapterPolicySchema.json similarity index 100% rename from build_stream/core/catalog/resources/AdapterPolicySchema.json rename to src/build_stream/core/catalog/resources/AdapterPolicySchema.json diff --git a/build_stream/core/catalog/resources/CatalogSchema.json b/src/build_stream/core/catalog/resources/CatalogSchema.json similarity index 100% rename from build_stream/core/catalog/resources/CatalogSchema.json rename to src/build_stream/core/catalog/resources/CatalogSchema.json diff --git a/build_stream/core/catalog/resources/RootLevelSchema.json b/src/build_stream/core/catalog/resources/RootLevelSchema.json similarity index 100% rename from build_stream/core/catalog/resources/RootLevelSchema.json rename to src/build_stream/core/catalog/resources/RootLevelSchema.json diff --git a/build_stream/core/catalog/resources/adapter_policy_default.json b/src/build_stream/core/catalog/resources/adapter_policy_default.json similarity index 100% rename from build_stream/core/catalog/resources/adapter_policy_default.json rename to src/build_stream/core/catalog/resources/adapter_policy_default.json diff --git a/build_stream/core/catalog/test_fixtures/adapter_policy_test.json b/src/build_stream/core/catalog/test_fixtures/adapter_policy_test.json similarity index 100% rename from build_stream/core/catalog/test_fixtures/adapter_policy_test.json rename to src/build_stream/core/catalog/test_fixtures/adapter_policy_test.json diff --git a/build_stream/core/catalog/test_fixtures/functional_layer.json b/src/build_stream/core/catalog/test_fixtures/functional_layer.json similarity index 100% rename from build_stream/core/catalog/test_fixtures/functional_layer.json rename to src/build_stream/core/catalog/test_fixtures/functional_layer.json diff --git a/build_stream/core/catalog/tests/diff_input_configs.py b/src/build_stream/core/catalog/tests/diff_input_configs.py similarity index 100% rename from build_stream/core/catalog/tests/diff_input_configs.py rename to src/build_stream/core/catalog/tests/diff_input_configs.py diff --git a/build_stream/core/catalog/tests/sample.py b/src/build_stream/core/catalog/tests/sample.py similarity index 100% rename from build_stream/core/catalog/tests/sample.py rename to src/build_stream/core/catalog/tests/sample.py diff --git a/build_stream/core/catalog/tests/test_adapter_cli_defaults.py b/src/build_stream/core/catalog/tests/test_adapter_cli_defaults.py similarity index 100% rename from build_stream/core/catalog/tests/test_adapter_cli_defaults.py rename to src/build_stream/core/catalog/tests/test_adapter_cli_defaults.py diff --git a/build_stream/core/catalog/tests/test_adapter_policy.py b/src/build_stream/core/catalog/tests/test_adapter_policy.py similarity index 100% rename from build_stream/core/catalog/tests/test_adapter_policy.py rename to src/build_stream/core/catalog/tests/test_adapter_policy.py diff --git a/build_stream/core/catalog/tests/test_catalog_diff_regression.py b/src/build_stream/core/catalog/tests/test_catalog_diff_regression.py similarity index 100% rename from build_stream/core/catalog/tests/test_catalog_diff_regression.py rename to src/build_stream/core/catalog/tests/test_catalog_diff_regression.py diff --git a/build_stream/core/catalog/tests/test_generate_catalog_id.py b/src/build_stream/core/catalog/tests/test_generate_catalog_id.py similarity index 100% rename from build_stream/core/catalog/tests/test_generate_catalog_id.py rename to src/build_stream/core/catalog/tests/test_generate_catalog_id.py diff --git a/build_stream/core/catalog/tests/test_generator_cli_defaults.py b/src/build_stream/core/catalog/tests/test_generator_cli_defaults.py similarity index 100% rename from build_stream/core/catalog/tests/test_generator_cli_defaults.py rename to src/build_stream/core/catalog/tests/test_generator_cli_defaults.py diff --git a/build_stream/core/catalog/tests/test_generator_package_list.py b/src/build_stream/core/catalog/tests/test_generator_package_list.py similarity index 100% rename from build_stream/core/catalog/tests/test_generator_package_list.py rename to src/build_stream/core/catalog/tests/test_generator_package_list.py diff --git a/build_stream/core/catalog/tests/test_generator_roles.py b/src/build_stream/core/catalog/tests/test_generator_roles.py similarity index 100% rename from build_stream/core/catalog/tests/test_generator_roles.py rename to src/build_stream/core/catalog/tests/test_generator_roles.py diff --git a/build_stream/core/catalog/tests/test_parser_defaults.py b/src/build_stream/core/catalog/tests/test_parser_defaults.py similarity index 100% rename from build_stream/core/catalog/tests/test_parser_defaults.py rename to src/build_stream/core/catalog/tests/test_parser_defaults.py diff --git a/build_stream/core/catalog/utils.py b/src/build_stream/core/catalog/utils.py similarity index 100% rename from build_stream/core/catalog/utils.py rename to src/build_stream/core/catalog/utils.py diff --git a/build_stream/core/cleanup/__init__.py b/src/build_stream/core/cleanup/__init__.py similarity index 100% rename from build_stream/core/cleanup/__init__.py rename to src/build_stream/core/cleanup/__init__.py diff --git a/build_stream/core/cleanup/exceptions.py b/src/build_stream/core/cleanup/exceptions.py similarity index 100% rename from build_stream/core/cleanup/exceptions.py rename to src/build_stream/core/cleanup/exceptions.py diff --git a/build_stream/core/cleanup/s3_service.py b/src/build_stream/core/cleanup/s3_service.py similarity index 100% rename from build_stream/core/cleanup/s3_service.py rename to src/build_stream/core/cleanup/s3_service.py diff --git a/build_stream/core/common/__init__.py b/src/build_stream/core/common/__init__.py similarity index 100% rename from build_stream/core/common/__init__.py rename to src/build_stream/core/common/__init__.py diff --git a/build_stream/core/deploy/__init__.py b/src/build_stream/core/deploy/__init__.py similarity index 100% rename from build_stream/core/deploy/__init__.py rename to src/build_stream/core/deploy/__init__.py diff --git a/build_stream/core/deploy/entities.py b/src/build_stream/core/deploy/entities.py similarity index 100% rename from build_stream/core/deploy/entities.py rename to src/build_stream/core/deploy/entities.py diff --git a/build_stream/core/deploy/exceptions.py b/src/build_stream/core/deploy/exceptions.py similarity index 100% rename from build_stream/core/deploy/exceptions.py rename to src/build_stream/core/deploy/exceptions.py diff --git a/build_stream/core/deploy/services.py b/src/build_stream/core/deploy/services.py similarity index 100% rename from build_stream/core/deploy/services.py rename to src/build_stream/core/deploy/services.py diff --git a/build_stream/core/exceptions.py b/src/build_stream/core/exceptions.py similarity index 100% rename from build_stream/core/exceptions.py rename to src/build_stream/core/exceptions.py diff --git a/build_stream/core/image_group/__init__.py b/src/build_stream/core/image_group/__init__.py similarity index 100% rename from build_stream/core/image_group/__init__.py rename to src/build_stream/core/image_group/__init__.py diff --git a/build_stream/core/image_group/entities.py b/src/build_stream/core/image_group/entities.py similarity index 100% rename from build_stream/core/image_group/entities.py rename to src/build_stream/core/image_group/entities.py diff --git a/build_stream/core/image_group/exceptions.py b/src/build_stream/core/image_group/exceptions.py similarity index 100% rename from build_stream/core/image_group/exceptions.py rename to src/build_stream/core/image_group/exceptions.py diff --git a/build_stream/core/image_group/repositories.py b/src/build_stream/core/image_group/repositories.py similarity index 100% rename from build_stream/core/image_group/repositories.py rename to src/build_stream/core/image_group/repositories.py diff --git a/build_stream/core/image_group/state_machine.py b/src/build_stream/core/image_group/state_machine.py similarity index 100% rename from build_stream/core/image_group/state_machine.py rename to src/build_stream/core/image_group/state_machine.py diff --git a/build_stream/core/image_group/value_objects.py b/src/build_stream/core/image_group/value_objects.py similarity index 100% rename from build_stream/core/image_group/value_objects.py rename to src/build_stream/core/image_group/value_objects.py diff --git a/build_stream/core/jobs/__init__.py b/src/build_stream/core/jobs/__init__.py similarity index 100% rename from build_stream/core/jobs/__init__.py rename to src/build_stream/core/jobs/__init__.py diff --git a/build_stream/core/jobs/entities/__init__.py b/src/build_stream/core/jobs/entities/__init__.py similarity index 100% rename from build_stream/core/jobs/entities/__init__.py rename to src/build_stream/core/jobs/entities/__init__.py diff --git a/build_stream/core/jobs/entities/audit.py b/src/build_stream/core/jobs/entities/audit.py similarity index 100% rename from build_stream/core/jobs/entities/audit.py rename to src/build_stream/core/jobs/entities/audit.py diff --git a/build_stream/core/jobs/entities/idempotency.py b/src/build_stream/core/jobs/entities/idempotency.py similarity index 100% rename from build_stream/core/jobs/entities/idempotency.py rename to src/build_stream/core/jobs/entities/idempotency.py diff --git a/build_stream/core/jobs/entities/job.py b/src/build_stream/core/jobs/entities/job.py similarity index 100% rename from build_stream/core/jobs/entities/job.py rename to src/build_stream/core/jobs/entities/job.py diff --git a/build_stream/core/jobs/entities/stage.py b/src/build_stream/core/jobs/entities/stage.py similarity index 100% rename from build_stream/core/jobs/entities/stage.py rename to src/build_stream/core/jobs/entities/stage.py diff --git a/build_stream/core/jobs/exceptions.py b/src/build_stream/core/jobs/exceptions.py similarity index 100% rename from build_stream/core/jobs/exceptions.py rename to src/build_stream/core/jobs/exceptions.py diff --git a/build_stream/core/jobs/repositories.py b/src/build_stream/core/jobs/repositories.py similarity index 100% rename from build_stream/core/jobs/repositories.py rename to src/build_stream/core/jobs/repositories.py diff --git a/build_stream/core/jobs/services.py b/src/build_stream/core/jobs/services.py similarity index 100% rename from build_stream/core/jobs/services.py rename to src/build_stream/core/jobs/services.py diff --git a/build_stream/core/jobs/value_objects.py b/src/build_stream/core/jobs/value_objects.py similarity index 100% rename from build_stream/core/jobs/value_objects.py rename to src/build_stream/core/jobs/value_objects.py diff --git a/build_stream/core/localrepo/__init__.py b/src/build_stream/core/localrepo/__init__.py similarity index 100% rename from build_stream/core/localrepo/__init__.py rename to src/build_stream/core/localrepo/__init__.py diff --git a/build_stream/core/localrepo/entities.py b/src/build_stream/core/localrepo/entities.py similarity index 100% rename from build_stream/core/localrepo/entities.py rename to src/build_stream/core/localrepo/entities.py diff --git a/build_stream/core/localrepo/exceptions.py b/src/build_stream/core/localrepo/exceptions.py similarity index 100% rename from build_stream/core/localrepo/exceptions.py rename to src/build_stream/core/localrepo/exceptions.py diff --git a/build_stream/core/localrepo/repositories.py b/src/build_stream/core/localrepo/repositories.py similarity index 100% rename from build_stream/core/localrepo/repositories.py rename to src/build_stream/core/localrepo/repositories.py diff --git a/build_stream/core/localrepo/services.py b/src/build_stream/core/localrepo/services.py similarity index 100% rename from build_stream/core/localrepo/services.py rename to src/build_stream/core/localrepo/services.py diff --git a/build_stream/core/localrepo/value_objects.py b/src/build_stream/core/localrepo/value_objects.py similarity index 100% rename from build_stream/core/localrepo/value_objects.py rename to src/build_stream/core/localrepo/value_objects.py diff --git a/build_stream/core/utils/__init__.py b/src/build_stream/core/utils/__init__.py similarity index 100% rename from build_stream/core/utils/__init__.py rename to src/build_stream/core/utils/__init__.py diff --git a/build_stream/core/validate/__init__.py b/src/build_stream/core/validate/__init__.py similarity index 100% rename from build_stream/core/validate/__init__.py rename to src/build_stream/core/validate/__init__.py diff --git a/build_stream/core/validate/entities.py b/src/build_stream/core/validate/entities.py similarity index 100% rename from build_stream/core/validate/entities.py rename to src/build_stream/core/validate/entities.py diff --git a/build_stream/core/validate/exceptions.py b/src/build_stream/core/validate/exceptions.py similarity index 100% rename from build_stream/core/validate/exceptions.py rename to src/build_stream/core/validate/exceptions.py diff --git a/build_stream/core/validate/services.py b/src/build_stream/core/validate/services.py similarity index 100% rename from build_stream/core/validate/services.py rename to src/build_stream/core/validate/services.py diff --git a/build_stream/doc/README.md b/src/build_stream/doc/README.md similarity index 100% rename from build_stream/doc/README.md rename to src/build_stream/doc/README.md diff --git a/build_stream/doc/__init__.py b/src/build_stream/doc/__init__.py similarity index 100% rename from build_stream/doc/__init__.py rename to src/build_stream/doc/__init__.py diff --git a/build_stream/doc/build_image.md b/src/build_stream/doc/build_image.md similarity index 100% rename from build_stream/doc/build_image.md rename to src/build_stream/doc/build_image.md diff --git a/build_stream/doc/catalog.md b/src/build_stream/doc/catalog.md similarity index 100% rename from build_stream/doc/catalog.md rename to src/build_stream/doc/catalog.md diff --git a/build_stream/doc/jobs.md b/src/build_stream/doc/jobs.md similarity index 100% rename from build_stream/doc/jobs.md rename to src/build_stream/doc/jobs.md diff --git a/build_stream/doc/local_repo.md b/src/build_stream/doc/local_repo.md similarity index 100% rename from build_stream/doc/local_repo.md rename to src/build_stream/doc/local_repo.md diff --git a/build_stream/doc/validation.md b/src/build_stream/doc/validation.md similarity index 100% rename from build_stream/doc/validation.md rename to src/build_stream/doc/validation.md diff --git a/build_stream/generate_catalog.py b/src/build_stream/generate_catalog.py similarity index 100% rename from build_stream/generate_catalog.py rename to src/build_stream/generate_catalog.py diff --git a/build_stream/generate_catalog_examples.py b/src/build_stream/generate_catalog_examples.py similarity index 100% rename from build_stream/generate_catalog_examples.py rename to src/build_stream/generate_catalog_examples.py diff --git a/build_stream/infra/__init__.py b/src/build_stream/infra/__init__.py similarity index 100% rename from build_stream/infra/__init__.py rename to src/build_stream/infra/__init__.py diff --git a/build_stream/infra/artifact_store/__init__.py b/src/build_stream/infra/artifact_store/__init__.py similarity index 100% rename from build_stream/infra/artifact_store/__init__.py rename to src/build_stream/infra/artifact_store/__init__.py diff --git a/build_stream/infra/artifact_store/file_artifact_store.py b/src/build_stream/infra/artifact_store/file_artifact_store.py similarity index 100% rename from build_stream/infra/artifact_store/file_artifact_store.py rename to src/build_stream/infra/artifact_store/file_artifact_store.py diff --git a/build_stream/infra/artifact_store/in_memory_artifact_metadata.py b/src/build_stream/infra/artifact_store/in_memory_artifact_metadata.py similarity index 100% rename from build_stream/infra/artifact_store/in_memory_artifact_metadata.py rename to src/build_stream/infra/artifact_store/in_memory_artifact_metadata.py diff --git a/build_stream/infra/artifact_store/in_memory_artifact_store.py b/src/build_stream/infra/artifact_store/in_memory_artifact_store.py similarity index 100% rename from build_stream/infra/artifact_store/in_memory_artifact_store.py rename to src/build_stream/infra/artifact_store/in_memory_artifact_store.py diff --git a/build_stream/infra/db/__init__.py b/src/build_stream/infra/db/__init__.py similarity index 100% rename from build_stream/infra/db/__init__.py rename to src/build_stream/infra/db/__init__.py diff --git a/build_stream/infra/db/alembic.ini b/src/build_stream/infra/db/alembic.ini similarity index 100% rename from build_stream/infra/db/alembic.ini rename to src/build_stream/infra/db/alembic.ini diff --git a/build_stream/infra/db/alembic/env.py b/src/build_stream/infra/db/alembic/env.py similarity index 100% rename from build_stream/infra/db/alembic/env.py rename to src/build_stream/infra/db/alembic/env.py diff --git a/build_stream/infra/db/alembic/script.py.mako b/src/build_stream/infra/db/alembic/script.py.mako similarity index 100% rename from build_stream/infra/db/alembic/script.py.mako rename to src/build_stream/infra/db/alembic/script.py.mako diff --git a/build_stream/infra/db/alembic/versions/20260219_001_create_jobs_table.py b/src/build_stream/infra/db/alembic/versions/20260219_001_create_jobs_table.py similarity index 100% rename from build_stream/infra/db/alembic/versions/20260219_001_create_jobs_table.py rename to src/build_stream/infra/db/alembic/versions/20260219_001_create_jobs_table.py diff --git a/build_stream/infra/db/alembic/versions/20260219_002_create_stages_table.py b/src/build_stream/infra/db/alembic/versions/20260219_002_create_stages_table.py similarity index 100% rename from build_stream/infra/db/alembic/versions/20260219_002_create_stages_table.py rename to src/build_stream/infra/db/alembic/versions/20260219_002_create_stages_table.py diff --git a/build_stream/infra/db/alembic/versions/20260219_003_create_idempotency_keys_table.py b/src/build_stream/infra/db/alembic/versions/20260219_003_create_idempotency_keys_table.py similarity index 100% rename from build_stream/infra/db/alembic/versions/20260219_003_create_idempotency_keys_table.py rename to src/build_stream/infra/db/alembic/versions/20260219_003_create_idempotency_keys_table.py diff --git a/build_stream/infra/db/alembic/versions/20260219_004_create_audit_events_table.py b/src/build_stream/infra/db/alembic/versions/20260219_004_create_audit_events_table.py similarity index 100% rename from build_stream/infra/db/alembic/versions/20260219_004_create_audit_events_table.py rename to src/build_stream/infra/db/alembic/versions/20260219_004_create_audit_events_table.py diff --git a/build_stream/infra/db/alembic/versions/20260219_005_create_artifact_metadata_table.py b/src/build_stream/infra/db/alembic/versions/20260219_005_create_artifact_metadata_table.py similarity index 100% rename from build_stream/infra/db/alembic/versions/20260219_005_create_artifact_metadata_table.py rename to src/build_stream/infra/db/alembic/versions/20260219_005_create_artifact_metadata_table.py diff --git a/build_stream/infra/db/alembic/versions/20260408_006_release2_image_groups_images.py b/src/build_stream/infra/db/alembic/versions/20260408_006_release2_image_groups_images.py similarity index 100% rename from build_stream/infra/db/alembic/versions/20260408_006_release2_image_groups_images.py rename to src/build_stream/infra/db/alembic/versions/20260408_006_release2_image_groups_images.py diff --git a/build_stream/infra/db/alembic/versions/20260507_007_add_last_attempt_at_to_stages.py b/src/build_stream/infra/db/alembic/versions/20260507_007_add_last_attempt_at_to_stages.py similarity index 100% rename from build_stream/infra/db/alembic/versions/20260507_007_add_last_attempt_at_to_stages.py rename to src/build_stream/infra/db/alembic/versions/20260507_007_add_last_attempt_at_to_stages.py diff --git a/build_stream/infra/db/config.py b/src/build_stream/infra/db/config.py similarity index 100% rename from build_stream/infra/db/config.py rename to src/build_stream/infra/db/config.py diff --git a/build_stream/infra/db/mappers.py b/src/build_stream/infra/db/mappers.py similarity index 100% rename from build_stream/infra/db/mappers.py rename to src/build_stream/infra/db/mappers.py diff --git a/build_stream/infra/db/models.py b/src/build_stream/infra/db/models.py similarity index 100% rename from build_stream/infra/db/models.py rename to src/build_stream/infra/db/models.py diff --git a/build_stream/infra/db/repositories.py b/src/build_stream/infra/db/repositories.py similarity index 100% rename from build_stream/infra/db/repositories.py rename to src/build_stream/infra/db/repositories.py diff --git a/build_stream/infra/db/session.py b/src/build_stream/infra/db/session.py similarity index 100% rename from build_stream/infra/db/session.py rename to src/build_stream/infra/db/session.py diff --git a/build_stream/infra/id_generator.py b/src/build_stream/infra/id_generator.py similarity index 100% rename from build_stream/infra/id_generator.py rename to src/build_stream/infra/id_generator.py diff --git a/build_stream/infra/repositories/__init__.py b/src/build_stream/infra/repositories/__init__.py similarity index 100% rename from build_stream/infra/repositories/__init__.py rename to src/build_stream/infra/repositories/__init__.py diff --git a/build_stream/infra/repositories/in_memory.py b/src/build_stream/infra/repositories/in_memory.py similarity index 100% rename from build_stream/infra/repositories/in_memory.py rename to src/build_stream/infra/repositories/in_memory.py diff --git a/build_stream/infra/repositories/nfs_build_image_inventory_repository.py b/src/build_stream/infra/repositories/nfs_build_image_inventory_repository.py similarity index 100% rename from build_stream/infra/repositories/nfs_build_image_inventory_repository.py rename to src/build_stream/infra/repositories/nfs_build_image_inventory_repository.py diff --git a/build_stream/infra/repositories/nfs_input_repository.py b/src/build_stream/infra/repositories/nfs_input_repository.py similarity index 100% rename from build_stream/infra/repositories/nfs_input_repository.py rename to src/build_stream/infra/repositories/nfs_input_repository.py diff --git a/build_stream/infra/repositories/nfs_playbook_queue_request_repository.py b/src/build_stream/infra/repositories/nfs_playbook_queue_request_repository.py similarity index 100% rename from build_stream/infra/repositories/nfs_playbook_queue_request_repository.py rename to src/build_stream/infra/repositories/nfs_playbook_queue_request_repository.py diff --git a/build_stream/infra/repositories/nfs_playbook_queue_result_repository.py b/src/build_stream/infra/repositories/nfs_playbook_queue_result_repository.py similarity index 100% rename from build_stream/infra/repositories/nfs_playbook_queue_result_repository.py rename to src/build_stream/infra/repositories/nfs_playbook_queue_result_repository.py diff --git a/build_stream/infra/s3/__init__.py b/src/build_stream/infra/s3/__init__.py similarity index 100% rename from build_stream/infra/s3/__init__.py rename to src/build_stream/infra/s3/__init__.py diff --git a/build_stream/infra/s3/s3cmd_cleanup.py b/src/build_stream/infra/s3/s3cmd_cleanup.py similarity index 100% rename from build_stream/infra/s3/s3cmd_cleanup.py rename to src/build_stream/infra/s3/s3cmd_cleanup.py diff --git a/build_stream/main.py b/src/build_stream/main.py similarity index 100% rename from build_stream/main.py rename to src/build_stream/main.py diff --git a/build_stream/orchestrator/__init__.py b/src/build_stream/orchestrator/__init__.py similarity index 100% rename from build_stream/orchestrator/__init__.py rename to src/build_stream/orchestrator/__init__.py diff --git a/build_stream/orchestrator/build_image/__init__.py b/src/build_stream/orchestrator/build_image/__init__.py similarity index 100% rename from build_stream/orchestrator/build_image/__init__.py rename to src/build_stream/orchestrator/build_image/__init__.py diff --git a/build_stream/orchestrator/build_image/commands/__init__.py b/src/build_stream/orchestrator/build_image/commands/__init__.py similarity index 100% rename from build_stream/orchestrator/build_image/commands/__init__.py rename to src/build_stream/orchestrator/build_image/commands/__init__.py diff --git a/build_stream/orchestrator/build_image/commands/create_build_image.py b/src/build_stream/orchestrator/build_image/commands/create_build_image.py similarity index 100% rename from build_stream/orchestrator/build_image/commands/create_build_image.py rename to src/build_stream/orchestrator/build_image/commands/create_build_image.py diff --git a/build_stream/orchestrator/build_image/dtos/__init__.py b/src/build_stream/orchestrator/build_image/dtos/__init__.py similarity index 100% rename from build_stream/orchestrator/build_image/dtos/__init__.py rename to src/build_stream/orchestrator/build_image/dtos/__init__.py diff --git a/build_stream/orchestrator/build_image/dtos/build_image_response.py b/src/build_stream/orchestrator/build_image/dtos/build_image_response.py similarity index 100% rename from build_stream/orchestrator/build_image/dtos/build_image_response.py rename to src/build_stream/orchestrator/build_image/dtos/build_image_response.py diff --git a/build_stream/orchestrator/build_image/use_cases/__init__.py b/src/build_stream/orchestrator/build_image/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/build_image/use_cases/__init__.py rename to src/build_stream/orchestrator/build_image/use_cases/__init__.py diff --git a/build_stream/orchestrator/build_image/use_cases/create_build_image.py b/src/build_stream/orchestrator/build_image/use_cases/create_build_image.py similarity index 100% rename from build_stream/orchestrator/build_image/use_cases/create_build_image.py rename to src/build_stream/orchestrator/build_image/use_cases/create_build_image.py diff --git a/build_stream/orchestrator/catalog/commands/generate_input_files.py b/src/build_stream/orchestrator/catalog/commands/generate_input_files.py similarity index 100% rename from build_stream/orchestrator/catalog/commands/generate_input_files.py rename to src/build_stream/orchestrator/catalog/commands/generate_input_files.py diff --git a/build_stream/orchestrator/catalog/commands/parse_catalog.py b/src/build_stream/orchestrator/catalog/commands/parse_catalog.py similarity index 100% rename from build_stream/orchestrator/catalog/commands/parse_catalog.py rename to src/build_stream/orchestrator/catalog/commands/parse_catalog.py diff --git a/build_stream/orchestrator/catalog/dtos.py b/src/build_stream/orchestrator/catalog/dtos.py similarity index 100% rename from build_stream/orchestrator/catalog/dtos.py rename to src/build_stream/orchestrator/catalog/dtos.py diff --git a/build_stream/orchestrator/catalog/use_cases/__init__.py b/src/build_stream/orchestrator/catalog/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/catalog/use_cases/__init__.py rename to src/build_stream/orchestrator/catalog/use_cases/__init__.py diff --git a/build_stream/orchestrator/catalog/use_cases/generate_input_files.py b/src/build_stream/orchestrator/catalog/use_cases/generate_input_files.py similarity index 100% rename from build_stream/orchestrator/catalog/use_cases/generate_input_files.py rename to src/build_stream/orchestrator/catalog/use_cases/generate_input_files.py diff --git a/build_stream/orchestrator/catalog/use_cases/parse_catalog.py b/src/build_stream/orchestrator/catalog/use_cases/parse_catalog.py similarity index 100% rename from build_stream/orchestrator/catalog/use_cases/parse_catalog.py rename to src/build_stream/orchestrator/catalog/use_cases/parse_catalog.py diff --git a/build_stream/orchestrator/cleanup/__init__.py b/src/build_stream/orchestrator/cleanup/__init__.py similarity index 100% rename from build_stream/orchestrator/cleanup/__init__.py rename to src/build_stream/orchestrator/cleanup/__init__.py diff --git a/build_stream/orchestrator/cleanup/commands/__init__.py b/src/build_stream/orchestrator/cleanup/commands/__init__.py similarity index 100% rename from build_stream/orchestrator/cleanup/commands/__init__.py rename to src/build_stream/orchestrator/cleanup/commands/__init__.py diff --git a/build_stream/orchestrator/cleanup/commands/cleanup_job.py b/src/build_stream/orchestrator/cleanup/commands/cleanup_job.py similarity index 100% rename from build_stream/orchestrator/cleanup/commands/cleanup_job.py rename to src/build_stream/orchestrator/cleanup/commands/cleanup_job.py diff --git a/build_stream/orchestrator/cleanup/dtos/__init__.py b/src/build_stream/orchestrator/cleanup/dtos/__init__.py similarity index 100% rename from build_stream/orchestrator/cleanup/dtos/__init__.py rename to src/build_stream/orchestrator/cleanup/dtos/__init__.py diff --git a/build_stream/orchestrator/cleanup/dtos/cleanup_response.py b/src/build_stream/orchestrator/cleanup/dtos/cleanup_response.py similarity index 100% rename from build_stream/orchestrator/cleanup/dtos/cleanup_response.py rename to src/build_stream/orchestrator/cleanup/dtos/cleanup_response.py diff --git a/build_stream/orchestrator/cleanup/use_cases/__init__.py b/src/build_stream/orchestrator/cleanup/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/cleanup/use_cases/__init__.py rename to src/build_stream/orchestrator/cleanup/use_cases/__init__.py diff --git a/build_stream/orchestrator/cleanup/use_cases/cleanup_job.py b/src/build_stream/orchestrator/cleanup/use_cases/cleanup_job.py similarity index 100% rename from build_stream/orchestrator/cleanup/use_cases/cleanup_job.py rename to src/build_stream/orchestrator/cleanup/use_cases/cleanup_job.py diff --git a/build_stream/orchestrator/common/__init__.py b/src/build_stream/orchestrator/common/__init__.py similarity index 100% rename from build_stream/orchestrator/common/__init__.py rename to src/build_stream/orchestrator/common/__init__.py diff --git a/build_stream/orchestrator/common/result_poller.py b/src/build_stream/orchestrator/common/result_poller.py similarity index 100% rename from build_stream/orchestrator/common/result_poller.py rename to src/build_stream/orchestrator/common/result_poller.py diff --git a/build_stream/orchestrator/deploy/__init__.py b/src/build_stream/orchestrator/deploy/__init__.py similarity index 100% rename from build_stream/orchestrator/deploy/__init__.py rename to src/build_stream/orchestrator/deploy/__init__.py diff --git a/build_stream/orchestrator/deploy/commands/__init__.py b/src/build_stream/orchestrator/deploy/commands/__init__.py similarity index 100% rename from build_stream/orchestrator/deploy/commands/__init__.py rename to src/build_stream/orchestrator/deploy/commands/__init__.py diff --git a/build_stream/orchestrator/deploy/commands/deploy_command.py b/src/build_stream/orchestrator/deploy/commands/deploy_command.py similarity index 100% rename from build_stream/orchestrator/deploy/commands/deploy_command.py rename to src/build_stream/orchestrator/deploy/commands/deploy_command.py diff --git a/build_stream/orchestrator/deploy/dtos/__init__.py b/src/build_stream/orchestrator/deploy/dtos/__init__.py similarity index 100% rename from build_stream/orchestrator/deploy/dtos/__init__.py rename to src/build_stream/orchestrator/deploy/dtos/__init__.py diff --git a/build_stream/orchestrator/deploy/dtos/deploy_response.py b/src/build_stream/orchestrator/deploy/dtos/deploy_response.py similarity index 100% rename from build_stream/orchestrator/deploy/dtos/deploy_response.py rename to src/build_stream/orchestrator/deploy/dtos/deploy_response.py diff --git a/build_stream/orchestrator/deploy/use_cases/__init__.py b/src/build_stream/orchestrator/deploy/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/deploy/use_cases/__init__.py rename to src/build_stream/orchestrator/deploy/use_cases/__init__.py diff --git a/build_stream/orchestrator/deploy/use_cases/deploy_use_case.py b/src/build_stream/orchestrator/deploy/use_cases/deploy_use_case.py similarity index 100% rename from build_stream/orchestrator/deploy/use_cases/deploy_use_case.py rename to src/build_stream/orchestrator/deploy/use_cases/deploy_use_case.py diff --git a/build_stream/orchestrator/images/__init__.py b/src/build_stream/orchestrator/images/__init__.py similarity index 100% rename from build_stream/orchestrator/images/__init__.py rename to src/build_stream/orchestrator/images/__init__.py diff --git a/build_stream/orchestrator/images/use_cases/__init__.py b/src/build_stream/orchestrator/images/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/images/use_cases/__init__.py rename to src/build_stream/orchestrator/images/use_cases/__init__.py diff --git a/build_stream/orchestrator/images/use_cases/list_images_use_case.py b/src/build_stream/orchestrator/images/use_cases/list_images_use_case.py similarity index 100% rename from build_stream/orchestrator/images/use_cases/list_images_use_case.py rename to src/build_stream/orchestrator/images/use_cases/list_images_use_case.py diff --git a/build_stream/orchestrator/jobs/__init__.py b/src/build_stream/orchestrator/jobs/__init__.py similarity index 100% rename from build_stream/orchestrator/jobs/__init__.py rename to src/build_stream/orchestrator/jobs/__init__.py diff --git a/build_stream/orchestrator/jobs/commands/__init__.py b/src/build_stream/orchestrator/jobs/commands/__init__.py similarity index 100% rename from build_stream/orchestrator/jobs/commands/__init__.py rename to src/build_stream/orchestrator/jobs/commands/__init__.py diff --git a/build_stream/orchestrator/jobs/commands/create_job.py b/src/build_stream/orchestrator/jobs/commands/create_job.py similarity index 100% rename from build_stream/orchestrator/jobs/commands/create_job.py rename to src/build_stream/orchestrator/jobs/commands/create_job.py diff --git a/build_stream/orchestrator/jobs/dtos/__init__.py b/src/build_stream/orchestrator/jobs/dtos/__init__.py similarity index 100% rename from build_stream/orchestrator/jobs/dtos/__init__.py rename to src/build_stream/orchestrator/jobs/dtos/__init__.py diff --git a/build_stream/orchestrator/jobs/dtos/job_response.py b/src/build_stream/orchestrator/jobs/dtos/job_response.py similarity index 100% rename from build_stream/orchestrator/jobs/dtos/job_response.py rename to src/build_stream/orchestrator/jobs/dtos/job_response.py diff --git a/build_stream/orchestrator/jobs/use_cases/__init__.py b/src/build_stream/orchestrator/jobs/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/jobs/use_cases/__init__.py rename to src/build_stream/orchestrator/jobs/use_cases/__init__.py diff --git a/build_stream/orchestrator/jobs/use_cases/create_job.py b/src/build_stream/orchestrator/jobs/use_cases/create_job.py similarity index 100% rename from build_stream/orchestrator/jobs/use_cases/create_job.py rename to src/build_stream/orchestrator/jobs/use_cases/create_job.py diff --git a/build_stream/orchestrator/local_repo/__init__.py b/src/build_stream/orchestrator/local_repo/__init__.py similarity index 100% rename from build_stream/orchestrator/local_repo/__init__.py rename to src/build_stream/orchestrator/local_repo/__init__.py diff --git a/build_stream/orchestrator/local_repo/commands/__init__.py b/src/build_stream/orchestrator/local_repo/commands/__init__.py similarity index 100% rename from build_stream/orchestrator/local_repo/commands/__init__.py rename to src/build_stream/orchestrator/local_repo/commands/__init__.py diff --git a/build_stream/orchestrator/local_repo/commands/create_local_repo.py b/src/build_stream/orchestrator/local_repo/commands/create_local_repo.py similarity index 100% rename from build_stream/orchestrator/local_repo/commands/create_local_repo.py rename to src/build_stream/orchestrator/local_repo/commands/create_local_repo.py diff --git a/build_stream/orchestrator/local_repo/dtos/__init__.py b/src/build_stream/orchestrator/local_repo/dtos/__init__.py similarity index 100% rename from build_stream/orchestrator/local_repo/dtos/__init__.py rename to src/build_stream/orchestrator/local_repo/dtos/__init__.py diff --git a/build_stream/orchestrator/local_repo/dtos/local_repo_response.py b/src/build_stream/orchestrator/local_repo/dtos/local_repo_response.py similarity index 100% rename from build_stream/orchestrator/local_repo/dtos/local_repo_response.py rename to src/build_stream/orchestrator/local_repo/dtos/local_repo_response.py diff --git a/build_stream/orchestrator/local_repo/result_poller.py b/src/build_stream/orchestrator/local_repo/result_poller.py similarity index 100% rename from build_stream/orchestrator/local_repo/result_poller.py rename to src/build_stream/orchestrator/local_repo/result_poller.py diff --git a/build_stream/orchestrator/local_repo/use_cases/__init__.py b/src/build_stream/orchestrator/local_repo/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/local_repo/use_cases/__init__.py rename to src/build_stream/orchestrator/local_repo/use_cases/__init__.py diff --git a/build_stream/orchestrator/local_repo/use_cases/create_local_repo.py b/src/build_stream/orchestrator/local_repo/use_cases/create_local_repo.py similarity index 100% rename from build_stream/orchestrator/local_repo/use_cases/create_local_repo.py rename to src/build_stream/orchestrator/local_repo/use_cases/create_local_repo.py diff --git a/build_stream/orchestrator/restart/__init__.py b/src/build_stream/orchestrator/restart/__init__.py similarity index 100% rename from build_stream/orchestrator/restart/__init__.py rename to src/build_stream/orchestrator/restart/__init__.py diff --git a/build_stream/orchestrator/restart/commands/__init__.py b/src/build_stream/orchestrator/restart/commands/__init__.py similarity index 100% rename from build_stream/orchestrator/restart/commands/__init__.py rename to src/build_stream/orchestrator/restart/commands/__init__.py diff --git a/build_stream/orchestrator/restart/commands/create_restart.py b/src/build_stream/orchestrator/restart/commands/create_restart.py similarity index 100% rename from build_stream/orchestrator/restart/commands/create_restart.py rename to src/build_stream/orchestrator/restart/commands/create_restart.py diff --git a/build_stream/orchestrator/restart/dtos/__init__.py b/src/build_stream/orchestrator/restart/dtos/__init__.py similarity index 100% rename from build_stream/orchestrator/restart/dtos/__init__.py rename to src/build_stream/orchestrator/restart/dtos/__init__.py diff --git a/build_stream/orchestrator/restart/dtos/restart_response.py b/src/build_stream/orchestrator/restart/dtos/restart_response.py similarity index 100% rename from build_stream/orchestrator/restart/dtos/restart_response.py rename to src/build_stream/orchestrator/restart/dtos/restart_response.py diff --git a/build_stream/orchestrator/restart/use_cases/__init__.py b/src/build_stream/orchestrator/restart/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/restart/use_cases/__init__.py rename to src/build_stream/orchestrator/restart/use_cases/__init__.py diff --git a/build_stream/orchestrator/restart/use_cases/create_restart.py b/src/build_stream/orchestrator/restart/use_cases/create_restart.py similarity index 100% rename from build_stream/orchestrator/restart/use_cases/create_restart.py rename to src/build_stream/orchestrator/restart/use_cases/create_restart.py diff --git a/build_stream/orchestrator/upload/__init__.py b/src/build_stream/orchestrator/upload/__init__.py similarity index 100% rename from build_stream/orchestrator/upload/__init__.py rename to src/build_stream/orchestrator/upload/__init__.py diff --git a/build_stream/orchestrator/upload/commands/__init__.py b/src/build_stream/orchestrator/upload/commands/__init__.py similarity index 100% rename from build_stream/orchestrator/upload/commands/__init__.py rename to src/build_stream/orchestrator/upload/commands/__init__.py diff --git a/build_stream/orchestrator/upload/commands/upload_files.py b/src/build_stream/orchestrator/upload/commands/upload_files.py similarity index 100% rename from build_stream/orchestrator/upload/commands/upload_files.py rename to src/build_stream/orchestrator/upload/commands/upload_files.py diff --git a/build_stream/orchestrator/upload/exceptions.py b/src/build_stream/orchestrator/upload/exceptions.py similarity index 100% rename from build_stream/orchestrator/upload/exceptions.py rename to src/build_stream/orchestrator/upload/exceptions.py diff --git a/build_stream/orchestrator/upload/results/__init__.py b/src/build_stream/orchestrator/upload/results/__init__.py similarity index 100% rename from build_stream/orchestrator/upload/results/__init__.py rename to src/build_stream/orchestrator/upload/results/__init__.py diff --git a/build_stream/orchestrator/upload/results/upload_files.py b/src/build_stream/orchestrator/upload/results/upload_files.py similarity index 100% rename from build_stream/orchestrator/upload/results/upload_files.py rename to src/build_stream/orchestrator/upload/results/upload_files.py diff --git a/build_stream/orchestrator/upload/use_cases/__init__.py b/src/build_stream/orchestrator/upload/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/upload/use_cases/__init__.py rename to src/build_stream/orchestrator/upload/use_cases/__init__.py diff --git a/build_stream/orchestrator/upload/use_cases/upload_files.py b/src/build_stream/orchestrator/upload/use_cases/upload_files.py similarity index 100% rename from build_stream/orchestrator/upload/use_cases/upload_files.py rename to src/build_stream/orchestrator/upload/use_cases/upload_files.py diff --git a/build_stream/orchestrator/validate/__init__.py b/src/build_stream/orchestrator/validate/__init__.py similarity index 100% rename from build_stream/orchestrator/validate/__init__.py rename to src/build_stream/orchestrator/validate/__init__.py diff --git a/build_stream/orchestrator/validate/commands/__init__.py b/src/build_stream/orchestrator/validate/commands/__init__.py similarity index 100% rename from build_stream/orchestrator/validate/commands/__init__.py rename to src/build_stream/orchestrator/validate/commands/__init__.py diff --git a/build_stream/orchestrator/validate/commands/validate.py b/src/build_stream/orchestrator/validate/commands/validate.py similarity index 100% rename from build_stream/orchestrator/validate/commands/validate.py rename to src/build_stream/orchestrator/validate/commands/validate.py diff --git a/build_stream/orchestrator/validate/dtos/__init__.py b/src/build_stream/orchestrator/validate/dtos/__init__.py similarity index 100% rename from build_stream/orchestrator/validate/dtos/__init__.py rename to src/build_stream/orchestrator/validate/dtos/__init__.py diff --git a/build_stream/orchestrator/validate/dtos/validate_response.py b/src/build_stream/orchestrator/validate/dtos/validate_response.py similarity index 100% rename from build_stream/orchestrator/validate/dtos/validate_response.py rename to src/build_stream/orchestrator/validate/dtos/validate_response.py diff --git a/build_stream/orchestrator/validate/use_cases/__init__.py b/src/build_stream/orchestrator/validate/use_cases/__init__.py similarity index 100% rename from build_stream/orchestrator/validate/use_cases/__init__.py rename to src/build_stream/orchestrator/validate/use_cases/__init__.py diff --git a/build_stream/orchestrator/validate/use_cases/validate.py b/src/build_stream/orchestrator/validate/use_cases/validate.py similarity index 100% rename from build_stream/orchestrator/validate/use_cases/validate.py rename to src/build_stream/orchestrator/validate/use_cases/validate.py diff --git a/build_stream/playbook-watcher/playbook_watcher_service.py b/src/build_stream/playbook-watcher/playbook_watcher_service.py similarity index 100% rename from build_stream/playbook-watcher/playbook_watcher_service.py rename to src/build_stream/playbook-watcher/playbook_watcher_service.py diff --git a/build_stream/pytest.ini b/src/build_stream/pytest.ini similarity index 100% rename from build_stream/pytest.ini rename to src/build_stream/pytest.ini diff --git a/build_stream/requirements-dev.txt b/src/build_stream/requirements-dev.txt similarity index 100% rename from build_stream/requirements-dev.txt rename to src/build_stream/requirements-dev.txt diff --git a/build_stream/requirements.txt b/src/build_stream/requirements.txt similarity index 100% rename from build_stream/requirements.txt rename to src/build_stream/requirements.txt diff --git a/build_stream/scripts/generate_jwt_keys.sh b/src/build_stream/scripts/generate_jwt_keys.sh similarity index 100% rename from build_stream/scripts/generate_jwt_keys.sh rename to src/build_stream/scripts/generate_jwt_keys.sh diff --git a/build_stream/tests/README.md b/src/build_stream/tests/README.md similarity index 100% rename from build_stream/tests/README.md rename to src/build_stream/tests/README.md diff --git a/build_stream/tests/__init__.py b/src/build_stream/tests/__init__.py similarity index 100% rename from build_stream/tests/__init__.py rename to src/build_stream/tests/__init__.py diff --git a/build_stream/tests/conftest.py b/src/build_stream/tests/conftest.py similarity index 100% rename from build_stream/tests/conftest.py rename to src/build_stream/tests/conftest.py diff --git a/build_stream/tests/demo/buildstream_demo.py b/src/build_stream/tests/demo/buildstream_demo.py similarity index 100% rename from build_stream/tests/demo/buildstream_demo.py rename to src/build_stream/tests/demo/buildstream_demo.py diff --git a/build_stream/tests/demo/test_restart_api.sh b/src/build_stream/tests/demo/test_restart_api.sh similarity index 100% rename from build_stream/tests/demo/test_restart_api.sh rename to src/build_stream/tests/demo/test_restart_api.sh diff --git a/build_stream/tests/end_to_end/api/conftest.py b/src/build_stream/tests/end_to_end/api/conftest.py similarity index 100% rename from build_stream/tests/end_to_end/api/conftest.py rename to src/build_stream/tests/end_to_end/api/conftest.py diff --git a/build_stream/tests/end_to_end/api/test_api_flow_e2e.py b/src/build_stream/tests/end_to_end/api/test_api_flow_e2e.py similarity index 100% rename from build_stream/tests/end_to_end/api/test_api_flow_e2e.py rename to src/build_stream/tests/end_to_end/api/test_api_flow_e2e.py diff --git a/build_stream/tests/end_to_end/api/test_build_image_e2e.py b/src/build_stream/tests/end_to_end/api/test_build_image_e2e.py similarity index 100% rename from build_stream/tests/end_to_end/api/test_build_image_e2e.py rename to src/build_stream/tests/end_to_end/api/test_build_image_e2e.py diff --git a/build_stream/tests/end_to_end/api/test_generate_input_files_e2e.py b/src/build_stream/tests/end_to_end/api/test_generate_input_files_e2e.py similarity index 100% rename from build_stream/tests/end_to_end/api/test_generate_input_files_e2e.py rename to src/build_stream/tests/end_to_end/api/test_generate_input_files_e2e.py diff --git a/build_stream/tests/end_to_end/api/test_parse_catalog_e2e.py b/src/build_stream/tests/end_to_end/api/test_parse_catalog_e2e.py similarity index 100% rename from build_stream/tests/end_to_end/api/test_parse_catalog_e2e.py rename to src/build_stream/tests/end_to_end/api/test_parse_catalog_e2e.py diff --git a/build_stream/tests/end_to_end/api/test_register_e2e.py b/src/build_stream/tests/end_to_end/api/test_register_e2e.py similarity index 100% rename from build_stream/tests/end_to_end/api/test_register_e2e.py rename to src/build_stream/tests/end_to_end/api/test_register_e2e.py diff --git a/build_stream/tests/end_to_end/api/test_token_e2e.py b/src/build_stream/tests/end_to_end/api/test_token_e2e.py similarity index 100% rename from build_stream/tests/end_to_end/api/test_token_e2e.py rename to src/build_stream/tests/end_to_end/api/test_token_e2e.py diff --git a/build_stream/tests/integration/__init__.py b/src/build_stream/tests/integration/__init__.py similarity index 100% rename from build_stream/tests/integration/__init__.py rename to src/build_stream/tests/integration/__init__.py diff --git a/build_stream/tests/integration/api/__init__.py b/src/build_stream/tests/integration/api/__init__.py similarity index 100% rename from build_stream/tests/integration/api/__init__.py rename to src/build_stream/tests/integration/api/__init__.py diff --git a/build_stream/tests/integration/api/auth/conftest.py b/src/build_stream/tests/integration/api/auth/conftest.py similarity index 100% rename from build_stream/tests/integration/api/auth/conftest.py rename to src/build_stream/tests/integration/api/auth/conftest.py diff --git a/build_stream/tests/integration/api/auth/test_register.py b/src/build_stream/tests/integration/api/auth/test_register.py similarity index 100% rename from build_stream/tests/integration/api/auth/test_register.py rename to src/build_stream/tests/integration/api/auth/test_register.py diff --git a/build_stream/tests/integration/api/auth/test_token.py b/src/build_stream/tests/integration/api/auth/test_token.py similarity index 100% rename from build_stream/tests/integration/api/auth/test_token.py rename to src/build_stream/tests/integration/api/auth/test_token.py diff --git a/build_stream/tests/integration/api/build_image/__init__.py b/src/build_stream/tests/integration/api/build_image/__init__.py similarity index 100% rename from build_stream/tests/integration/api/build_image/__init__.py rename to src/build_stream/tests/integration/api/build_image/__init__.py diff --git a/build_stream/tests/integration/api/build_image/conftest.py b/src/build_stream/tests/integration/api/build_image/conftest.py similarity index 100% rename from build_stream/tests/integration/api/build_image/conftest.py rename to src/build_stream/tests/integration/api/build_image/conftest.py diff --git a/build_stream/tests/integration/api/build_image/test_build_image_api.py b/src/build_stream/tests/integration/api/build_image/test_build_image_api.py similarity index 100% rename from build_stream/tests/integration/api/build_image/test_build_image_api.py rename to src/build_stream/tests/integration/api/build_image/test_build_image_api.py diff --git a/build_stream/tests/integration/api/catalog_roles/__init__.py b/src/build_stream/tests/integration/api/catalog_roles/__init__.py similarity index 100% rename from build_stream/tests/integration/api/catalog_roles/__init__.py rename to src/build_stream/tests/integration/api/catalog_roles/__init__.py diff --git a/build_stream/tests/integration/api/catalog_roles/conftest.py b/src/build_stream/tests/integration/api/catalog_roles/conftest.py similarity index 100% rename from build_stream/tests/integration/api/catalog_roles/conftest.py rename to src/build_stream/tests/integration/api/catalog_roles/conftest.py diff --git a/build_stream/tests/integration/api/catalog_roles/test_catalog_roles_api.py b/src/build_stream/tests/integration/api/catalog_roles/test_catalog_roles_api.py similarity index 100% rename from build_stream/tests/integration/api/catalog_roles/test_catalog_roles_api.py rename to src/build_stream/tests/integration/api/catalog_roles/test_catalog_roles_api.py diff --git a/build_stream/tests/integration/api/conftest.py b/src/build_stream/tests/integration/api/conftest.py similarity index 100% rename from build_stream/tests/integration/api/conftest.py rename to src/build_stream/tests/integration/api/conftest.py diff --git a/build_stream/tests/integration/api/generate_input_files/conftest.py b/src/build_stream/tests/integration/api/generate_input_files/conftest.py similarity index 100% rename from build_stream/tests/integration/api/generate_input_files/conftest.py rename to src/build_stream/tests/integration/api/generate_input_files/conftest.py diff --git a/build_stream/tests/integration/api/generate_input_files/test_generate_input_files_api.py b/src/build_stream/tests/integration/api/generate_input_files/test_generate_input_files_api.py similarity index 100% rename from build_stream/tests/integration/api/generate_input_files/test_generate_input_files_api.py rename to src/build_stream/tests/integration/api/generate_input_files/test_generate_input_files_api.py diff --git a/build_stream/tests/integration/api/generate_input_files/test_generate_input_files_artifact_integration.py b/src/build_stream/tests/integration/api/generate_input_files/test_generate_input_files_artifact_integration.py similarity index 100% rename from build_stream/tests/integration/api/generate_input_files/test_generate_input_files_artifact_integration.py rename to src/build_stream/tests/integration/api/generate_input_files/test_generate_input_files_artifact_integration.py diff --git a/build_stream/tests/integration/api/generate_input_files/test_generate_input_files_routes.py b/src/build_stream/tests/integration/api/generate_input_files/test_generate_input_files_routes.py similarity index 100% rename from build_stream/tests/integration/api/generate_input_files/test_generate_input_files_routes.py rename to src/build_stream/tests/integration/api/generate_input_files/test_generate_input_files_routes.py diff --git a/build_stream/tests/integration/api/jobs/conftest.py b/src/build_stream/tests/integration/api/jobs/conftest.py similarity index 100% rename from build_stream/tests/integration/api/jobs/conftest.py rename to src/build_stream/tests/integration/api/jobs/conftest.py diff --git a/build_stream/tests/integration/api/jobs/test_create_job_api.py b/src/build_stream/tests/integration/api/jobs/test_create_job_api.py similarity index 100% rename from build_stream/tests/integration/api/jobs/test_create_job_api.py rename to src/build_stream/tests/integration/api/jobs/test_create_job_api.py diff --git a/build_stream/tests/integration/api/jobs/test_delete_job_api.py b/src/build_stream/tests/integration/api/jobs/test_delete_job_api.py similarity index 100% rename from build_stream/tests/integration/api/jobs/test_delete_job_api.py rename to src/build_stream/tests/integration/api/jobs/test_delete_job_api.py diff --git a/build_stream/tests/integration/api/jobs/test_get_job_api.py b/src/build_stream/tests/integration/api/jobs/test_get_job_api.py similarity index 100% rename from build_stream/tests/integration/api/jobs/test_get_job_api.py rename to src/build_stream/tests/integration/api/jobs/test_get_job_api.py diff --git a/build_stream/tests/integration/api/local_repo/__init__.py b/src/build_stream/tests/integration/api/local_repo/__init__.py similarity index 100% rename from build_stream/tests/integration/api/local_repo/__init__.py rename to src/build_stream/tests/integration/api/local_repo/__init__.py diff --git a/build_stream/tests/integration/api/local_repo/conftest.py b/src/build_stream/tests/integration/api/local_repo/conftest.py similarity index 100% rename from build_stream/tests/integration/api/local_repo/conftest.py rename to src/build_stream/tests/integration/api/local_repo/conftest.py diff --git a/build_stream/tests/integration/api/local_repo/test_create_local_repo_api.py b/src/build_stream/tests/integration/api/local_repo/test_create_local_repo_api.py similarity index 100% rename from build_stream/tests/integration/api/local_repo/test_create_local_repo_api.py rename to src/build_stream/tests/integration/api/local_repo/test_create_local_repo_api.py diff --git a/build_stream/tests/integration/api/local_repo/test_create_local_repo_edge_cases.py b/src/build_stream/tests/integration/api/local_repo/test_create_local_repo_edge_cases.py similarity index 100% rename from build_stream/tests/integration/api/local_repo/test_create_local_repo_edge_cases.py rename to src/build_stream/tests/integration/api/local_repo/test_create_local_repo_edge_cases.py diff --git a/build_stream/tests/integration/api/parse_catalog/conftest.py b/src/build_stream/tests/integration/api/parse_catalog/conftest.py similarity index 100% rename from build_stream/tests/integration/api/parse_catalog/conftest.py rename to src/build_stream/tests/integration/api/parse_catalog/conftest.py diff --git a/build_stream/tests/integration/api/parse_catalog/test_parse_catalog_api.py b/src/build_stream/tests/integration/api/parse_catalog/test_parse_catalog_api.py similarity index 100% rename from build_stream/tests/integration/api/parse_catalog/test_parse_catalog_api.py rename to src/build_stream/tests/integration/api/parse_catalog/test_parse_catalog_api.py diff --git a/build_stream/tests/integration/api/parse_catalog/test_parse_catalog_artifact_integration.py b/src/build_stream/tests/integration/api/parse_catalog/test_parse_catalog_artifact_integration.py similarity index 100% rename from build_stream/tests/integration/api/parse_catalog/test_parse_catalog_artifact_integration.py rename to src/build_stream/tests/integration/api/parse_catalog/test_parse_catalog_artifact_integration.py diff --git a/build_stream/tests/integration/api/parse_catalog/test_parse_catalog_routes.py b/src/build_stream/tests/integration/api/parse_catalog/test_parse_catalog_routes.py similarity index 100% rename from build_stream/tests/integration/api/parse_catalog/test_parse_catalog_routes.py rename to src/build_stream/tests/integration/api/parse_catalog/test_parse_catalog_routes.py diff --git a/build_stream/tests/integration/api/restart/__init__.py b/src/build_stream/tests/integration/api/restart/__init__.py similarity index 100% rename from build_stream/tests/integration/api/restart/__init__.py rename to src/build_stream/tests/integration/api/restart/__init__.py diff --git a/build_stream/tests/integration/api/restart/conftest.py b/src/build_stream/tests/integration/api/restart/conftest.py similarity index 100% rename from build_stream/tests/integration/api/restart/conftest.py rename to src/build_stream/tests/integration/api/restart/conftest.py diff --git a/build_stream/tests/integration/api/restart/test_restart_api.py b/src/build_stream/tests/integration/api/restart/test_restart_api.py similarity index 100% rename from build_stream/tests/integration/api/restart/test_restart_api.py rename to src/build_stream/tests/integration/api/restart/test_restart_api.py diff --git a/build_stream/tests/integration/api/validate/__init__.py b/src/build_stream/tests/integration/api/validate/__init__.py similarity index 100% rename from build_stream/tests/integration/api/validate/__init__.py rename to src/build_stream/tests/integration/api/validate/__init__.py diff --git a/build_stream/tests/integration/api/validate/conftest.py b/src/build_stream/tests/integration/api/validate/conftest.py similarity index 100% rename from build_stream/tests/integration/api/validate/conftest.py rename to src/build_stream/tests/integration/api/validate/conftest.py diff --git a/build_stream/tests/integration/api/validate/test_models.py b/src/build_stream/tests/integration/api/validate/test_models.py similarity index 100% rename from build_stream/tests/integration/api/validate/test_models.py rename to src/build_stream/tests/integration/api/validate/test_models.py diff --git a/build_stream/tests/integration/api/validate/test_validate_api.py b/src/build_stream/tests/integration/api/validate/test_validate_api.py similarity index 100% rename from build_stream/tests/integration/api/validate/test_validate_api.py rename to src/build_stream/tests/integration/api/validate/test_validate_api.py diff --git a/build_stream/tests/integration/conftest.py b/src/build_stream/tests/integration/conftest.py similarity index 100% rename from build_stream/tests/integration/conftest.py rename to src/build_stream/tests/integration/conftest.py diff --git a/build_stream/tests/integration/core/catalog/test_adapter_cli_defaults.py b/src/build_stream/tests/integration/core/catalog/test_adapter_cli_defaults.py similarity index 100% rename from build_stream/tests/integration/core/catalog/test_adapter_cli_defaults.py rename to src/build_stream/tests/integration/core/catalog/test_adapter_cli_defaults.py diff --git a/build_stream/tests/integration/core/catalog/test_adapter_policy.py b/src/build_stream/tests/integration/core/catalog/test_adapter_policy.py similarity index 100% rename from build_stream/tests/integration/core/catalog/test_adapter_policy.py rename to src/build_stream/tests/integration/core/catalog/test_adapter_policy.py diff --git a/build_stream/tests/integration/core/catalog/test_generator_cli_defaults.py b/src/build_stream/tests/integration/core/catalog/test_generator_cli_defaults.py similarity index 100% rename from build_stream/tests/integration/core/catalog/test_generator_cli_defaults.py rename to src/build_stream/tests/integration/core/catalog/test_generator_cli_defaults.py diff --git a/build_stream/tests/integration/core/catalog/test_generator_package_list.py b/src/build_stream/tests/integration/core/catalog/test_generator_package_list.py similarity index 100% rename from build_stream/tests/integration/core/catalog/test_generator_package_list.py rename to src/build_stream/tests/integration/core/catalog/test_generator_package_list.py diff --git a/build_stream/tests/integration/core/catalog/test_generator_roles.py b/src/build_stream/tests/integration/core/catalog/test_generator_roles.py similarity index 100% rename from build_stream/tests/integration/core/catalog/test_generator_roles.py rename to src/build_stream/tests/integration/core/catalog/test_generator_roles.py diff --git a/build_stream/tests/integration/core/image_group/__init__.py b/src/build_stream/tests/integration/core/image_group/__init__.py similarity index 100% rename from build_stream/tests/integration/core/image_group/__init__.py rename to src/build_stream/tests/integration/core/image_group/__init__.py diff --git a/build_stream/tests/integration/core/image_group/test_image_group_data_model.py b/src/build_stream/tests/integration/core/image_group/test_image_group_data_model.py similarity index 100% rename from build_stream/tests/integration/core/image_group/test_image_group_data_model.py rename to src/build_stream/tests/integration/core/image_group/test_image_group_data_model.py diff --git a/build_stream/tests/integration/infra/artifact_store/test_file_artifact_store.py b/src/build_stream/tests/integration/infra/artifact_store/test_file_artifact_store.py similarity index 100% rename from build_stream/tests/integration/infra/artifact_store/test_file_artifact_store.py rename to src/build_stream/tests/integration/infra/artifact_store/test_file_artifact_store.py diff --git a/build_stream/tests/integration/infra/db/conftest.py b/src/build_stream/tests/integration/infra/db/conftest.py similarity index 100% rename from build_stream/tests/integration/infra/db/conftest.py rename to src/build_stream/tests/integration/infra/db/conftest.py diff --git a/build_stream/tests/integration/infra/db/test_sql_repositories.py b/src/build_stream/tests/integration/infra/db/test_sql_repositories.py similarity index 100% rename from build_stream/tests/integration/infra/db/test_sql_repositories.py rename to src/build_stream/tests/integration/infra/db/test_sql_repositories.py diff --git a/build_stream/tests/mocks/__init__.py b/src/build_stream/tests/mocks/__init__.py similarity index 100% rename from build_stream/tests/mocks/__init__.py rename to src/build_stream/tests/mocks/__init__.py diff --git a/build_stream/tests/mocks/mock_jwt_handler.py b/src/build_stream/tests/mocks/mock_jwt_handler.py similarity index 100% rename from build_stream/tests/mocks/mock_jwt_handler.py rename to src/build_stream/tests/mocks/mock_jwt_handler.py diff --git a/build_stream/tests/mocks/mock_vault_client.py b/src/build_stream/tests/mocks/mock_vault_client.py similarity index 100% rename from build_stream/tests/mocks/mock_vault_client.py rename to src/build_stream/tests/mocks/mock_vault_client.py diff --git a/build_stream/tests/others/__init__.py b/src/build_stream/tests/others/__init__.py similarity index 100% rename from build_stream/tests/others/__init__.py rename to src/build_stream/tests/others/__init__.py diff --git a/build_stream/tests/others/test_dependency_rules.py b/src/build_stream/tests/others/test_dependency_rules.py similarity index 100% rename from build_stream/tests/others/test_dependency_rules.py rename to src/build_stream/tests/others/test_dependency_rules.py diff --git a/build_stream/tests/performance/test_local_repo_performance.py b/src/build_stream/tests/performance/test_local_repo_performance.py similarity index 100% rename from build_stream/tests/performance/test_local_repo_performance.py rename to src/build_stream/tests/performance/test_local_repo_performance.py diff --git a/build_stream/tests/unit/__init__.py b/src/build_stream/tests/unit/__init__.py similarity index 100% rename from build_stream/tests/unit/__init__.py rename to src/build_stream/tests/unit/__init__.py diff --git a/build_stream/tests/unit/api/__init__.py b/src/build_stream/tests/unit/api/__init__.py similarity index 100% rename from build_stream/tests/unit/api/__init__.py rename to src/build_stream/tests/unit/api/__init__.py diff --git a/build_stream/tests/unit/api/auth/test_password_handler.py b/src/build_stream/tests/unit/api/auth/test_password_handler.py similarity index 100% rename from build_stream/tests/unit/api/auth/test_password_handler.py rename to src/build_stream/tests/unit/api/auth/test_password_handler.py diff --git a/build_stream/tests/unit/api/auth/test_service.py b/src/build_stream/tests/unit/api/auth/test_service.py similarity index 100% rename from build_stream/tests/unit/api/auth/test_service.py rename to src/build_stream/tests/unit/api/auth/test_service.py diff --git a/build_stream/tests/unit/api/auth/test_token_service.py b/src/build_stream/tests/unit/api/auth/test_token_service.py similarity index 100% rename from build_stream/tests/unit/api/auth/test_token_service.py rename to src/build_stream/tests/unit/api/auth/test_token_service.py diff --git a/build_stream/tests/unit/api/build_image/__init__.py b/src/build_stream/tests/unit/api/build_image/__init__.py similarity index 100% rename from build_stream/tests/unit/api/build_image/__init__.py rename to src/build_stream/tests/unit/api/build_image/__init__.py diff --git a/build_stream/tests/unit/api/build_image/test_routes.py b/src/build_stream/tests/unit/api/build_image/test_routes.py similarity index 100% rename from build_stream/tests/unit/api/build_image/test_routes.py rename to src/build_stream/tests/unit/api/build_image/test_routes.py diff --git a/build_stream/tests/unit/api/catalog_roles/__init__.py b/src/build_stream/tests/unit/api/catalog_roles/__init__.py similarity index 100% rename from build_stream/tests/unit/api/catalog_roles/__init__.py rename to src/build_stream/tests/unit/api/catalog_roles/__init__.py diff --git a/build_stream/tests/unit/api/catalog_roles/test_catalog_roles_service.py b/src/build_stream/tests/unit/api/catalog_roles/test_catalog_roles_service.py similarity index 100% rename from build_stream/tests/unit/api/catalog_roles/test_catalog_roles_service.py rename to src/build_stream/tests/unit/api/catalog_roles/test_catalog_roles_service.py diff --git a/build_stream/tests/unit/api/deploy/__init__.py b/src/build_stream/tests/unit/api/deploy/__init__.py similarity index 100% rename from build_stream/tests/unit/api/deploy/__init__.py rename to src/build_stream/tests/unit/api/deploy/__init__.py diff --git a/build_stream/tests/unit/api/deploy/test_routes.py b/src/build_stream/tests/unit/api/deploy/test_routes.py similarity index 100% rename from build_stream/tests/unit/api/deploy/test_routes.py rename to src/build_stream/tests/unit/api/deploy/test_routes.py diff --git a/build_stream/tests/unit/api/generate_input_files/__init__.py b/src/build_stream/tests/unit/api/generate_input_files/__init__.py similarity index 100% rename from build_stream/tests/unit/api/generate_input_files/__init__.py rename to src/build_stream/tests/unit/api/generate_input_files/__init__.py diff --git a/build_stream/tests/unit/api/generate_input_files/test_routes.py b/src/build_stream/tests/unit/api/generate_input_files/test_routes.py similarity index 100% rename from build_stream/tests/unit/api/generate_input_files/test_routes.py rename to src/build_stream/tests/unit/api/generate_input_files/test_routes.py diff --git a/build_stream/tests/unit/api/images/__init__.py b/src/build_stream/tests/unit/api/images/__init__.py similarity index 100% rename from build_stream/tests/unit/api/images/__init__.py rename to src/build_stream/tests/unit/api/images/__init__.py diff --git a/build_stream/tests/unit/api/images/test_routes.py b/src/build_stream/tests/unit/api/images/test_routes.py similarity index 100% rename from build_stream/tests/unit/api/images/test_routes.py rename to src/build_stream/tests/unit/api/images/test_routes.py diff --git a/build_stream/tests/unit/api/jobs/test_dependencies.py b/src/build_stream/tests/unit/api/jobs/test_dependencies.py similarity index 100% rename from build_stream/tests/unit/api/jobs/test_dependencies.py rename to src/build_stream/tests/unit/api/jobs/test_dependencies.py diff --git a/build_stream/tests/unit/api/jobs/test_schemas.py b/src/build_stream/tests/unit/api/jobs/test_schemas.py similarity index 100% rename from build_stream/tests/unit/api/jobs/test_schemas.py rename to src/build_stream/tests/unit/api/jobs/test_schemas.py diff --git a/build_stream/tests/unit/api/local_repo/test_local_repo_dependencies.py b/src/build_stream/tests/unit/api/local_repo/test_local_repo_dependencies.py similarity index 100% rename from build_stream/tests/unit/api/local_repo/test_local_repo_dependencies.py rename to src/build_stream/tests/unit/api/local_repo/test_local_repo_dependencies.py diff --git a/build_stream/tests/unit/api/local_repo/test_local_repo_schemas.py b/src/build_stream/tests/unit/api/local_repo/test_local_repo_schemas.py similarity index 100% rename from build_stream/tests/unit/api/local_repo/test_local_repo_schemas.py rename to src/build_stream/tests/unit/api/local_repo/test_local_repo_schemas.py diff --git a/build_stream/tests/unit/api/local_repo/test_routes.py b/src/build_stream/tests/unit/api/local_repo/test_routes.py similarity index 100% rename from build_stream/tests/unit/api/local_repo/test_routes.py rename to src/build_stream/tests/unit/api/local_repo/test_routes.py diff --git a/build_stream/tests/unit/api/parse_catalog/__init__.py b/src/build_stream/tests/unit/api/parse_catalog/__init__.py similarity index 100% rename from build_stream/tests/unit/api/parse_catalog/__init__.py rename to src/build_stream/tests/unit/api/parse_catalog/__init__.py diff --git a/build_stream/tests/unit/api/parse_catalog/test_routes.py b/src/build_stream/tests/unit/api/parse_catalog/test_routes.py similarity index 100% rename from build_stream/tests/unit/api/parse_catalog/test_routes.py rename to src/build_stream/tests/unit/api/parse_catalog/test_routes.py diff --git a/build_stream/tests/unit/api/restart/__init__.py b/src/build_stream/tests/unit/api/restart/__init__.py similarity index 100% rename from build_stream/tests/unit/api/restart/__init__.py rename to src/build_stream/tests/unit/api/restart/__init__.py diff --git a/build_stream/tests/unit/api/restart/test_routes.py b/src/build_stream/tests/unit/api/restart/test_routes.py similarity index 100% rename from build_stream/tests/unit/api/restart/test_routes.py rename to src/build_stream/tests/unit/api/restart/test_routes.py diff --git a/build_stream/tests/unit/api/validate/__init__.py b/src/build_stream/tests/unit/api/validate/__init__.py similarity index 100% rename from build_stream/tests/unit/api/validate/__init__.py rename to src/build_stream/tests/unit/api/validate/__init__.py diff --git a/build_stream/tests/unit/api/validate/test_routes.py b/src/build_stream/tests/unit/api/validate/test_routes.py similarity index 100% rename from build_stream/tests/unit/api/validate/test_routes.py rename to src/build_stream/tests/unit/api/validate/test_routes.py diff --git a/build_stream/tests/unit/core/__init__.py b/src/build_stream/tests/unit/core/__init__.py similarity index 100% rename from build_stream/tests/unit/core/__init__.py rename to src/build_stream/tests/unit/core/__init__.py diff --git a/build_stream/tests/unit/core/artifacts/__init__.py b/src/build_stream/tests/unit/core/artifacts/__init__.py similarity index 100% rename from build_stream/tests/unit/core/artifacts/__init__.py rename to src/build_stream/tests/unit/core/artifacts/__init__.py diff --git a/build_stream/tests/unit/core/artifacts/conftest.py b/src/build_stream/tests/unit/core/artifacts/conftest.py similarity index 100% rename from build_stream/tests/unit/core/artifacts/conftest.py rename to src/build_stream/tests/unit/core/artifacts/conftest.py diff --git a/build_stream/tests/unit/core/artifacts/test_exceptions.py b/src/build_stream/tests/unit/core/artifacts/test_exceptions.py similarity index 100% rename from build_stream/tests/unit/core/artifacts/test_exceptions.py rename to src/build_stream/tests/unit/core/artifacts/test_exceptions.py diff --git a/build_stream/tests/unit/core/artifacts/test_value_objects.py b/src/build_stream/tests/unit/core/artifacts/test_value_objects.py similarity index 100% rename from build_stream/tests/unit/core/artifacts/test_value_objects.py rename to src/build_stream/tests/unit/core/artifacts/test_value_objects.py diff --git a/build_stream/tests/unit/core/build_image/__init__.py b/src/build_stream/tests/unit/core/build_image/__init__.py similarity index 100% rename from build_stream/tests/unit/core/build_image/__init__.py rename to src/build_stream/tests/unit/core/build_image/__init__.py diff --git a/build_stream/tests/unit/core/build_image/test_entities.py b/src/build_stream/tests/unit/core/build_image/test_entities.py similarity index 100% rename from build_stream/tests/unit/core/build_image/test_entities.py rename to src/build_stream/tests/unit/core/build_image/test_entities.py diff --git a/build_stream/tests/unit/core/build_image/test_services.py b/src/build_stream/tests/unit/core/build_image/test_services.py similarity index 100% rename from build_stream/tests/unit/core/build_image/test_services.py rename to src/build_stream/tests/unit/core/build_image/test_services.py diff --git a/build_stream/tests/unit/core/build_image/test_value_objects.py b/src/build_stream/tests/unit/core/build_image/test_value_objects.py similarity index 100% rename from build_stream/tests/unit/core/build_image/test_value_objects.py rename to src/build_stream/tests/unit/core/build_image/test_value_objects.py diff --git a/build_stream/tests/unit/core/catalog/test_exceptions.py b/src/build_stream/tests/unit/core/catalog/test_exceptions.py similarity index 100% rename from build_stream/tests/unit/core/catalog/test_exceptions.py rename to src/build_stream/tests/unit/core/catalog/test_exceptions.py diff --git a/build_stream/tests/unit/core/catalog/test_generate_software_config.py b/src/build_stream/tests/unit/core/catalog/test_generate_software_config.py similarity index 100% rename from build_stream/tests/unit/core/catalog/test_generate_software_config.py rename to src/build_stream/tests/unit/core/catalog/test_generate_software_config.py diff --git a/build_stream/tests/unit/core/catalog/test_parser.py b/src/build_stream/tests/unit/core/catalog/test_parser.py similarity index 100% rename from build_stream/tests/unit/core/catalog/test_parser.py rename to src/build_stream/tests/unit/core/catalog/test_parser.py diff --git a/build_stream/tests/unit/core/catalog/test_parser_defaults.py b/src/build_stream/tests/unit/core/catalog/test_parser_defaults.py similarity index 100% rename from build_stream/tests/unit/core/catalog/test_parser_defaults.py rename to src/build_stream/tests/unit/core/catalog/test_parser_defaults.py diff --git a/build_stream/tests/unit/core/image_group/__init__.py b/src/build_stream/tests/unit/core/image_group/__init__.py similarity index 100% rename from build_stream/tests/unit/core/image_group/__init__.py rename to src/build_stream/tests/unit/core/image_group/__init__.py diff --git a/build_stream/tests/unit/core/image_group/test_entities.py b/src/build_stream/tests/unit/core/image_group/test_entities.py similarity index 100% rename from build_stream/tests/unit/core/image_group/test_entities.py rename to src/build_stream/tests/unit/core/image_group/test_entities.py diff --git a/build_stream/tests/unit/core/image_group/test_exceptions.py b/src/build_stream/tests/unit/core/image_group/test_exceptions.py similarity index 100% rename from build_stream/tests/unit/core/image_group/test_exceptions.py rename to src/build_stream/tests/unit/core/image_group/test_exceptions.py diff --git a/build_stream/tests/unit/core/image_group/test_state_machine.py b/src/build_stream/tests/unit/core/image_group/test_state_machine.py similarity index 100% rename from build_stream/tests/unit/core/image_group/test_state_machine.py rename to src/build_stream/tests/unit/core/image_group/test_state_machine.py diff --git a/build_stream/tests/unit/core/image_group/test_value_objects.py b/src/build_stream/tests/unit/core/image_group/test_value_objects.py similarity index 100% rename from build_stream/tests/unit/core/image_group/test_value_objects.py rename to src/build_stream/tests/unit/core/image_group/test_value_objects.py diff --git a/build_stream/tests/unit/core/jobs/__init__.py b/src/build_stream/tests/unit/core/jobs/__init__.py similarity index 100% rename from build_stream/tests/unit/core/jobs/__init__.py rename to src/build_stream/tests/unit/core/jobs/__init__.py diff --git a/build_stream/tests/unit/core/jobs/entities/__init__.py b/src/build_stream/tests/unit/core/jobs/entities/__init__.py similarity index 100% rename from build_stream/tests/unit/core/jobs/entities/__init__.py rename to src/build_stream/tests/unit/core/jobs/entities/__init__.py diff --git a/build_stream/tests/unit/core/jobs/entities/conftest.py b/src/build_stream/tests/unit/core/jobs/entities/conftest.py similarity index 100% rename from build_stream/tests/unit/core/jobs/entities/conftest.py rename to src/build_stream/tests/unit/core/jobs/entities/conftest.py diff --git a/build_stream/tests/unit/core/jobs/entities/test_audit.py b/src/build_stream/tests/unit/core/jobs/entities/test_audit.py similarity index 100% rename from build_stream/tests/unit/core/jobs/entities/test_audit.py rename to src/build_stream/tests/unit/core/jobs/entities/test_audit.py diff --git a/build_stream/tests/unit/core/jobs/entities/test_idempotency.py b/src/build_stream/tests/unit/core/jobs/entities/test_idempotency.py similarity index 100% rename from build_stream/tests/unit/core/jobs/entities/test_idempotency.py rename to src/build_stream/tests/unit/core/jobs/entities/test_idempotency.py diff --git a/build_stream/tests/unit/core/jobs/entities/test_job.py b/src/build_stream/tests/unit/core/jobs/entities/test_job.py similarity index 100% rename from build_stream/tests/unit/core/jobs/entities/test_job.py rename to src/build_stream/tests/unit/core/jobs/entities/test_job.py diff --git a/build_stream/tests/unit/core/jobs/entities/test_stage.py b/src/build_stream/tests/unit/core/jobs/entities/test_stage.py similarity index 100% rename from build_stream/tests/unit/core/jobs/entities/test_stage.py rename to src/build_stream/tests/unit/core/jobs/entities/test_stage.py diff --git a/build_stream/tests/unit/core/jobs/test_exceptions.py b/src/build_stream/tests/unit/core/jobs/test_exceptions.py similarity index 100% rename from build_stream/tests/unit/core/jobs/test_exceptions.py rename to src/build_stream/tests/unit/core/jobs/test_exceptions.py diff --git a/build_stream/tests/unit/core/jobs/test_value_objects.py b/src/build_stream/tests/unit/core/jobs/test_value_objects.py similarity index 100% rename from build_stream/tests/unit/core/jobs/test_value_objects.py rename to src/build_stream/tests/unit/core/jobs/test_value_objects.py diff --git a/build_stream/tests/unit/core/localrepo/__init__.py b/src/build_stream/tests/unit/core/localrepo/__init__.py similarity index 100% rename from build_stream/tests/unit/core/localrepo/__init__.py rename to src/build_stream/tests/unit/core/localrepo/__init__.py diff --git a/build_stream/tests/unit/core/localrepo/test_entities.py b/src/build_stream/tests/unit/core/localrepo/test_entities.py similarity index 100% rename from build_stream/tests/unit/core/localrepo/test_entities.py rename to src/build_stream/tests/unit/core/localrepo/test_entities.py diff --git a/build_stream/tests/unit/core/localrepo/test_exceptions.py b/src/build_stream/tests/unit/core/localrepo/test_exceptions.py similarity index 100% rename from build_stream/tests/unit/core/localrepo/test_exceptions.py rename to src/build_stream/tests/unit/core/localrepo/test_exceptions.py diff --git a/build_stream/tests/unit/core/localrepo/test_services.py b/src/build_stream/tests/unit/core/localrepo/test_services.py similarity index 100% rename from build_stream/tests/unit/core/localrepo/test_services.py rename to src/build_stream/tests/unit/core/localrepo/test_services.py diff --git a/build_stream/tests/unit/core/localrepo/test_value_objects.py b/src/build_stream/tests/unit/core/localrepo/test_value_objects.py similarity index 100% rename from build_stream/tests/unit/core/localrepo/test_value_objects.py rename to src/build_stream/tests/unit/core/localrepo/test_value_objects.py diff --git a/build_stream/tests/unit/core/validate/__init__.py b/src/build_stream/tests/unit/core/validate/__init__.py similarity index 100% rename from build_stream/tests/unit/core/validate/__init__.py rename to src/build_stream/tests/unit/core/validate/__init__.py diff --git a/build_stream/tests/unit/core/validate/test_entities.py b/src/build_stream/tests/unit/core/validate/test_entities.py similarity index 100% rename from build_stream/tests/unit/core/validate/test_entities.py rename to src/build_stream/tests/unit/core/validate/test_entities.py diff --git a/build_stream/tests/unit/core/validate/test_exceptions.py b/src/build_stream/tests/unit/core/validate/test_exceptions.py similarity index 100% rename from build_stream/tests/unit/core/validate/test_exceptions.py rename to src/build_stream/tests/unit/core/validate/test_exceptions.py diff --git a/build_stream/tests/unit/core/validate/test_services.py b/src/build_stream/tests/unit/core/validate/test_services.py similarity index 100% rename from build_stream/tests/unit/core/validate/test_services.py rename to src/build_stream/tests/unit/core/validate/test_services.py diff --git a/build_stream/tests/unit/infra/__init__.py b/src/build_stream/tests/unit/infra/__init__.py similarity index 100% rename from build_stream/tests/unit/infra/__init__.py rename to src/build_stream/tests/unit/infra/__init__.py diff --git a/build_stream/tests/unit/infra/artifact_store/__init__.py b/src/build_stream/tests/unit/infra/artifact_store/__init__.py similarity index 100% rename from build_stream/tests/unit/infra/artifact_store/__init__.py rename to src/build_stream/tests/unit/infra/artifact_store/__init__.py diff --git a/build_stream/tests/unit/infra/artifact_store/conftest.py b/src/build_stream/tests/unit/infra/artifact_store/conftest.py similarity index 100% rename from build_stream/tests/unit/infra/artifact_store/conftest.py rename to src/build_stream/tests/unit/infra/artifact_store/conftest.py diff --git a/build_stream/tests/unit/infra/artifact_store/test_in_memory_artifact_metadata.py b/src/build_stream/tests/unit/infra/artifact_store/test_in_memory_artifact_metadata.py similarity index 100% rename from build_stream/tests/unit/infra/artifact_store/test_in_memory_artifact_metadata.py rename to src/build_stream/tests/unit/infra/artifact_store/test_in_memory_artifact_metadata.py diff --git a/build_stream/tests/unit/infra/artifact_store/test_in_memory_artifact_store.py b/src/build_stream/tests/unit/infra/artifact_store/test_in_memory_artifact_store.py similarity index 100% rename from build_stream/tests/unit/infra/artifact_store/test_in_memory_artifact_store.py rename to src/build_stream/tests/unit/infra/artifact_store/test_in_memory_artifact_store.py diff --git a/build_stream/tests/unit/infra/db/test_mappers.py b/src/build_stream/tests/unit/infra/db/test_mappers.py similarity index 100% rename from build_stream/tests/unit/infra/db/test_mappers.py rename to src/build_stream/tests/unit/infra/db/test_mappers.py diff --git a/build_stream/tests/unit/infra/db/test_repositories_unit.py b/src/build_stream/tests/unit/infra/db/test_repositories_unit.py similarity index 100% rename from build_stream/tests/unit/infra/db/test_repositories_unit.py rename to src/build_stream/tests/unit/infra/db/test_repositories_unit.py diff --git a/build_stream/tests/unit/infra/s3/__init__.py b/src/build_stream/tests/unit/infra/s3/__init__.py similarity index 100% rename from build_stream/tests/unit/infra/s3/__init__.py rename to src/build_stream/tests/unit/infra/s3/__init__.py diff --git a/build_stream/tests/unit/infra/s3/test_s3cmd_cleanup.py b/src/build_stream/tests/unit/infra/s3/test_s3cmd_cleanup.py similarity index 100% rename from build_stream/tests/unit/infra/s3/test_s3cmd_cleanup.py rename to src/build_stream/tests/unit/infra/s3/test_s3cmd_cleanup.py diff --git a/build_stream/tests/unit/infra/test_id_generator.py b/src/build_stream/tests/unit/infra/test_id_generator.py similarity index 100% rename from build_stream/tests/unit/infra/test_id_generator.py rename to src/build_stream/tests/unit/infra/test_id_generator.py diff --git a/build_stream/tests/unit/infra/test_in_memory_image_repos.py b/src/build_stream/tests/unit/infra/test_in_memory_image_repos.py similarity index 100% rename from build_stream/tests/unit/infra/test_in_memory_image_repos.py rename to src/build_stream/tests/unit/infra/test_in_memory_image_repos.py diff --git a/build_stream/tests/unit/infra/test_nfs_input_directory_repository.py b/src/build_stream/tests/unit/infra/test_nfs_input_directory_repository.py similarity index 100% rename from build_stream/tests/unit/infra/test_nfs_input_directory_repository.py rename to src/build_stream/tests/unit/infra/test_nfs_input_directory_repository.py diff --git a/build_stream/tests/unit/infra/test_nfs_playbook_queue_result_service.py b/src/build_stream/tests/unit/infra/test_nfs_playbook_queue_result_service.py similarity index 100% rename from build_stream/tests/unit/infra/test_nfs_playbook_queue_result_service.py rename to src/build_stream/tests/unit/infra/test_nfs_playbook_queue_result_service.py diff --git a/build_stream/tests/unit/infra/test_nfs_repositories.py b/src/build_stream/tests/unit/infra/test_nfs_repositories.py similarity index 100% rename from build_stream/tests/unit/infra/test_nfs_repositories.py rename to src/build_stream/tests/unit/infra/test_nfs_repositories.py diff --git a/build_stream/tests/unit/orchestrator/__init__.py b/src/build_stream/tests/unit/orchestrator/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/__init__.py rename to src/build_stream/tests/unit/orchestrator/__init__.py diff --git a/build_stream/tests/unit/orchestrator/build_image/__init__.py b/src/build_stream/tests/unit/orchestrator/build_image/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/build_image/__init__.py rename to src/build_stream/tests/unit/orchestrator/build_image/__init__.py diff --git a/build_stream/tests/unit/orchestrator/build_image/test_create_build_image_use_case.py b/src/build_stream/tests/unit/orchestrator/build_image/test_create_build_image_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/build_image/test_create_build_image_use_case.py rename to src/build_stream/tests/unit/orchestrator/build_image/test_create_build_image_use_case.py diff --git a/build_stream/tests/unit/orchestrator/catalog/conftest.py b/src/build_stream/tests/unit/orchestrator/catalog/conftest.py similarity index 100% rename from build_stream/tests/unit/orchestrator/catalog/conftest.py rename to src/build_stream/tests/unit/orchestrator/catalog/conftest.py diff --git a/build_stream/tests/unit/orchestrator/catalog/test_generate_input_files_command.py b/src/build_stream/tests/unit/orchestrator/catalog/test_generate_input_files_command.py similarity index 100% rename from build_stream/tests/unit/orchestrator/catalog/test_generate_input_files_command.py rename to src/build_stream/tests/unit/orchestrator/catalog/test_generate_input_files_command.py diff --git a/build_stream/tests/unit/orchestrator/catalog/test_generate_input_files_use_case.py b/src/build_stream/tests/unit/orchestrator/catalog/test_generate_input_files_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/catalog/test_generate_input_files_use_case.py rename to src/build_stream/tests/unit/orchestrator/catalog/test_generate_input_files_use_case.py diff --git a/build_stream/tests/unit/orchestrator/catalog/test_parse_catalog_command.py b/src/build_stream/tests/unit/orchestrator/catalog/test_parse_catalog_command.py similarity index 100% rename from build_stream/tests/unit/orchestrator/catalog/test_parse_catalog_command.py rename to src/build_stream/tests/unit/orchestrator/catalog/test_parse_catalog_command.py diff --git a/build_stream/tests/unit/orchestrator/catalog/test_parse_catalog_use_case.py b/src/build_stream/tests/unit/orchestrator/catalog/test_parse_catalog_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/catalog/test_parse_catalog_use_case.py rename to src/build_stream/tests/unit/orchestrator/catalog/test_parse_catalog_use_case.py diff --git a/build_stream/tests/unit/orchestrator/catalog/test_s1_4_api_enhancements.py b/src/build_stream/tests/unit/orchestrator/catalog/test_s1_4_api_enhancements.py similarity index 100% rename from build_stream/tests/unit/orchestrator/catalog/test_s1_4_api_enhancements.py rename to src/build_stream/tests/unit/orchestrator/catalog/test_s1_4_api_enhancements.py diff --git a/build_stream/tests/unit/orchestrator/cleanup/__init__.py b/src/build_stream/tests/unit/orchestrator/cleanup/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/cleanup/__init__.py rename to src/build_stream/tests/unit/orchestrator/cleanup/__init__.py diff --git a/build_stream/tests/unit/orchestrator/cleanup/test_cleanup_job_use_case.py b/src/build_stream/tests/unit/orchestrator/cleanup/test_cleanup_job_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/cleanup/test_cleanup_job_use_case.py rename to src/build_stream/tests/unit/orchestrator/cleanup/test_cleanup_job_use_case.py diff --git a/build_stream/tests/unit/orchestrator/common/__init__.py b/src/build_stream/tests/unit/orchestrator/common/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/common/__init__.py rename to src/build_stream/tests/unit/orchestrator/common/__init__.py diff --git a/build_stream/tests/unit/orchestrator/common/test_result_poller.py b/src/build_stream/tests/unit/orchestrator/common/test_result_poller.py similarity index 100% rename from build_stream/tests/unit/orchestrator/common/test_result_poller.py rename to src/build_stream/tests/unit/orchestrator/common/test_result_poller.py diff --git a/build_stream/tests/unit/orchestrator/deploy/__init__.py b/src/build_stream/tests/unit/orchestrator/deploy/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/deploy/__init__.py rename to src/build_stream/tests/unit/orchestrator/deploy/__init__.py diff --git a/build_stream/tests/unit/orchestrator/deploy/test_deploy_use_case.py b/src/build_stream/tests/unit/orchestrator/deploy/test_deploy_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/deploy/test_deploy_use_case.py rename to src/build_stream/tests/unit/orchestrator/deploy/test_deploy_use_case.py diff --git a/build_stream/tests/unit/orchestrator/images/__init__.py b/src/build_stream/tests/unit/orchestrator/images/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/images/__init__.py rename to src/build_stream/tests/unit/orchestrator/images/__init__.py diff --git a/build_stream/tests/unit/orchestrator/images/test_list_images_use_case.py b/src/build_stream/tests/unit/orchestrator/images/test_list_images_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/images/test_list_images_use_case.py rename to src/build_stream/tests/unit/orchestrator/images/test_list_images_use_case.py diff --git a/build_stream/tests/unit/orchestrator/jobs/__init__.py b/src/build_stream/tests/unit/orchestrator/jobs/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/jobs/__init__.py rename to src/build_stream/tests/unit/orchestrator/jobs/__init__.py diff --git a/build_stream/tests/unit/orchestrator/jobs/use_cases/__init__.py b/src/build_stream/tests/unit/orchestrator/jobs/use_cases/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/jobs/use_cases/__init__.py rename to src/build_stream/tests/unit/orchestrator/jobs/use_cases/__init__.py diff --git a/build_stream/tests/unit/orchestrator/jobs/use_cases/conftest.py b/src/build_stream/tests/unit/orchestrator/jobs/use_cases/conftest.py similarity index 100% rename from build_stream/tests/unit/orchestrator/jobs/use_cases/conftest.py rename to src/build_stream/tests/unit/orchestrator/jobs/use_cases/conftest.py diff --git a/build_stream/tests/unit/orchestrator/jobs/use_cases/test_create_job.py b/src/build_stream/tests/unit/orchestrator/jobs/use_cases/test_create_job.py similarity index 100% rename from build_stream/tests/unit/orchestrator/jobs/use_cases/test_create_job.py rename to src/build_stream/tests/unit/orchestrator/jobs/use_cases/test_create_job.py diff --git a/build_stream/tests/unit/orchestrator/local_repo/__init__.py b/src/build_stream/tests/unit/orchestrator/local_repo/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/local_repo/__init__.py rename to src/build_stream/tests/unit/orchestrator/local_repo/__init__.py diff --git a/build_stream/tests/unit/orchestrator/local_repo/test_commands.py b/src/build_stream/tests/unit/orchestrator/local_repo/test_commands.py similarity index 100% rename from build_stream/tests/unit/orchestrator/local_repo/test_commands.py rename to src/build_stream/tests/unit/orchestrator/local_repo/test_commands.py diff --git a/build_stream/tests/unit/orchestrator/local_repo/test_dtos.py b/src/build_stream/tests/unit/orchestrator/local_repo/test_dtos.py similarity index 100% rename from build_stream/tests/unit/orchestrator/local_repo/test_dtos.py rename to src/build_stream/tests/unit/orchestrator/local_repo/test_dtos.py diff --git a/build_stream/tests/unit/orchestrator/local_repo/test_result_poller.py b/src/build_stream/tests/unit/orchestrator/local_repo/test_result_poller.py similarity index 100% rename from build_stream/tests/unit/orchestrator/local_repo/test_result_poller.py rename to src/build_stream/tests/unit/orchestrator/local_repo/test_result_poller.py diff --git a/build_stream/tests/unit/orchestrator/local_repo/test_use_case.py b/src/build_stream/tests/unit/orchestrator/local_repo/test_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/local_repo/test_use_case.py rename to src/build_stream/tests/unit/orchestrator/local_repo/test_use_case.py diff --git a/build_stream/tests/unit/orchestrator/restart/__init__.py b/src/build_stream/tests/unit/orchestrator/restart/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/restart/__init__.py rename to src/build_stream/tests/unit/orchestrator/restart/__init__.py diff --git a/build_stream/tests/unit/orchestrator/restart/test_create_restart_use_case.py b/src/build_stream/tests/unit/orchestrator/restart/test_create_restart_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/restart/test_create_restart_use_case.py rename to src/build_stream/tests/unit/orchestrator/restart/test_create_restart_use_case.py diff --git a/build_stream/tests/unit/orchestrator/upload/__init__.py b/src/build_stream/tests/unit/orchestrator/upload/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/upload/__init__.py rename to src/build_stream/tests/unit/orchestrator/upload/__init__.py diff --git a/build_stream/tests/unit/orchestrator/upload/test_upload_use_case.py b/src/build_stream/tests/unit/orchestrator/upload/test_upload_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/upload/test_upload_use_case.py rename to src/build_stream/tests/unit/orchestrator/upload/test_upload_use_case.py diff --git a/build_stream/tests/unit/orchestrator/validate/__init__.py b/src/build_stream/tests/unit/orchestrator/validate/__init__.py similarity index 100% rename from build_stream/tests/unit/orchestrator/validate/__init__.py rename to src/build_stream/tests/unit/orchestrator/validate/__init__.py diff --git a/build_stream/tests/unit/orchestrator/validate/test_validate_use_case.py b/src/build_stream/tests/unit/orchestrator/validate/test_validate_use_case.py similarity index 100% rename from build_stream/tests/unit/orchestrator/validate/test_validate_use_case.py rename to src/build_stream/tests/unit/orchestrator/validate/test_validate_use_case.py diff --git a/build_stream/tests/utils/__init__.py b/src/build_stream/tests/utils/__init__.py similarity index 100% rename from build_stream/tests/utils/__init__.py rename to src/build_stream/tests/utils/__init__.py diff --git a/build_stream/tests/utils/test_data.py b/src/build_stream/tests/utils/test_data.py similarity index 100% rename from build_stream/tests/utils/test_data.py rename to src/build_stream/tests/utils/test_data.py diff --git a/build_stream/utils/__init__.py b/src/build_stream/utils/__init__.py similarity index 100% rename from build_stream/utils/__init__.py rename to src/build_stream/utils/__init__.py From 10c32e22d2725d7c6b5eec001c550ba5b2821802 Mon Sep 17 00:00:00 2001 From: Abhishek S A Date: Thu, 25 Jun 2026 09:15:54 +0530 Subject: [PATCH 07/24] PR3: Move input/ and examples/ to src/, add q3_main to CI workflows - git mv input -> src/input - git mv examples -> src/examples - Update omnia.sh container repo paths: /omnia/input -> /omnia/src/input - Add pub/q3_main to ansible-lint.yml and pylint.yml (CI branch triggers) - Remove obsolete pub/q2_dev and pub/q2_ansible from CI workflows - Host data paths (/opt/omnia/input) unchanged Part of: Monorepo Migration Plan - Phase 1 Signed-off-by: Abhishek S A --- .github/workflows/ansible-lint.yml | 3 +-- .github/workflows/pylint.yml | 3 +-- omnia.sh | 6 +++--- {examples => src/examples}/additional_cloud_init.yml | 0 {examples => src/examples}/catalog/catalog_rhel.json | 0 .../catalog/catalog_rhel_aarch64_with_slurm_only.json | 0 .../catalog/catalog_rhel_with_nfs_provisioner.json | 0 {examples => src/examples}/catalog/catalog_rhel_x86_64.json | 0 .../catalog/catalog_rhel_x86_64_with_slurm_only.json | 0 .../pxe_mapping_file.csv | 0 .../software_config.json | 0 .../catalog_rhel_json/pxe_mapping_file.csv | 0 .../catalog_rhel_json/software_config.json | 0 .../pxe_mapping_file.csv | 0 .../software_config.json | 0 .../catalog_rhel_x86_64_json/pxe_mapping_file.csv | 0 .../catalog_rhel_x86_64_json/software_config.json | 0 .../additional_packages.json | 0 .../pxe_mapping_file.csv | 0 .../software_config.json | 0 {examples => src/examples}/inventory/bmc_inventory_file | 0 .../powerscale_reference_files/CSI_driver/secret.yaml | 0 .../powerscale_reference_files/CSI_driver/values.yaml | 0 .../powerscale_metrics/values.yaml | 0 {examples => src/examples}/pxe_mapping_file.csv | 0 {examples => src/examples}/rhel_software_config.json | 0 {examples => src/examples}/slurm_conf/cgroup.conf | 0 {examples => src/examples}/slurm_conf/slurm.conf | 0 {examples => src/examples}/slurm_conf/slurmdbd.conf | 0 .../template_rhel_10.0_multi_arch_software_config.json | 0 .../template_rhel_10.0_x86-64_software_config.json | 0 .../examples}/storage_config/storage_config.yml | 0 {input => src/input}/additional_cloud_init.yml | 0 {input => src/input}/build_stream_config.yml | 0 .../config/aarch64/rhel/10.0/additional_packages.json | 0 .../config/aarch64/rhel/10.0/admin_debug_packages.json | 0 .../input}/config/aarch64/rhel/10.0/default_packages.json | 0 {input => src/input}/config/aarch64/rhel/10.0/ldms.json | 0 {input => src/input}/config/aarch64/rhel/10.0/openldap.json | 0 {input => src/input}/config/aarch64/rhel/10.0/openmpi.json | 0 .../input}/config/aarch64/rhel/10.0/slurm_custom.json | 0 {input => src/input}/config/aarch64/rhel/10.0/ucx.json | 0 .../input}/config/x86_64/rhel/10.0/additional_packages.json | 0 .../config/x86_64/rhel/10.0/admin_debug_packages.json | 0 .../config/x86_64/rhel/10.0/csi_driver_powerscale.json | 0 .../input}/config/x86_64/rhel/10.0/default_packages.json | 0 {input => src/input}/config/x86_64/rhel/10.0/ldms.json | 0 {input => src/input}/config/x86_64/rhel/10.0/openldap.json | 0 {input => src/input}/config/x86_64/rhel/10.0/openmpi.json | 0 .../input}/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json | 0 .../input}/config/x86_64/rhel/10.0/slurm_custom.json | 0 {input => src/input}/config/x86_64/rhel/10.0/ucx.json | 0 {input => src/input}/discovery_config.yml | 0 {input => src/input}/gitlab_config.yml | 0 {input => src/input}/high_availability_config.yml | 0 {input => src/input}/local_repo_config.yml | 0 {input => src/input}/network_spec.yml | 0 {input => src/input}/omnia_config.yml | 0 {input => src/input}/provision_config.yml | 0 {input => src/input}/pxe_mapping_file.csv | 0 {input => src/input}/security_config.yml | 0 {input => src/input}/software_config.json | 0 {input => src/input}/storage_config.yml | 0 {input => src/input}/telemetry_config.yml | 0 {input => src/input}/telemetry_storage_config.yml | 0 {input => src/input}/user_registry_credential.yml | 0 66 files changed, 5 insertions(+), 7 deletions(-) rename {examples => src/examples}/additional_cloud_init.yml (100%) rename {examples => src/examples}/catalog/catalog_rhel.json (100%) rename {examples => src/examples}/catalog/catalog_rhel_aarch64_with_slurm_only.json (100%) rename {examples => src/examples}/catalog/catalog_rhel_with_nfs_provisioner.json (100%) rename {examples => src/examples}/catalog/catalog_rhel_x86_64.json (100%) rename {examples => src/examples}/catalog/catalog_rhel_x86_64_with_slurm_only.json (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/pxe_mapping_file.csv (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/software_config.json (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_json/pxe_mapping_file.csv (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_json/software_config.json (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/pxe_mapping_file.csv (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/software_config.json (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/pxe_mapping_file.csv (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/software_config.json (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/additional_packages.json (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/pxe_mapping_file.csv (100%) rename {examples => src/examples}/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/software_config.json (100%) rename {examples => src/examples}/inventory/bmc_inventory_file (100%) rename {examples => src/examples}/powerscale_reference_files/CSI_driver/secret.yaml (100%) rename {examples => src/examples}/powerscale_reference_files/CSI_driver/values.yaml (100%) rename {examples => src/examples}/powerscale_reference_files/powerscale_metrics/values.yaml (100%) rename {examples => src/examples}/pxe_mapping_file.csv (100%) rename {examples => src/examples}/rhel_software_config.json (100%) rename {examples => src/examples}/slurm_conf/cgroup.conf (100%) rename {examples => src/examples}/slurm_conf/slurm.conf (100%) rename {examples => src/examples}/slurm_conf/slurmdbd.conf (100%) rename {examples => src/examples}/software_config_template/template_rhel_10.0_multi_arch_software_config.json (100%) rename {examples => src/examples}/software_config_template/template_rhel_10.0_x86-64_software_config.json (100%) rename {examples => src/examples}/storage_config/storage_config.yml (100%) rename {input => src/input}/additional_cloud_init.yml (100%) rename {input => src/input}/build_stream_config.yml (100%) rename {input => src/input}/config/aarch64/rhel/10.0/additional_packages.json (100%) rename {input => src/input}/config/aarch64/rhel/10.0/admin_debug_packages.json (100%) rename {input => src/input}/config/aarch64/rhel/10.0/default_packages.json (100%) rename {input => src/input}/config/aarch64/rhel/10.0/ldms.json (100%) rename {input => src/input}/config/aarch64/rhel/10.0/openldap.json (100%) rename {input => src/input}/config/aarch64/rhel/10.0/openmpi.json (100%) rename {input => src/input}/config/aarch64/rhel/10.0/slurm_custom.json (100%) rename {input => src/input}/config/aarch64/rhel/10.0/ucx.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/additional_packages.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/admin_debug_packages.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/csi_driver_powerscale.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/default_packages.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/ldms.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/openldap.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/openmpi.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/slurm_custom.json (100%) rename {input => src/input}/config/x86_64/rhel/10.0/ucx.json (100%) rename {input => src/input}/discovery_config.yml (100%) rename {input => src/input}/gitlab_config.yml (100%) rename {input => src/input}/high_availability_config.yml (100%) rename {input => src/input}/local_repo_config.yml (100%) rename {input => src/input}/network_spec.yml (100%) rename {input => src/input}/omnia_config.yml (100%) rename {input => src/input}/provision_config.yml (100%) rename {input => src/input}/pxe_mapping_file.csv (100%) rename {input => src/input}/security_config.yml (100%) rename {input => src/input}/software_config.json (100%) rename {input => src/input}/storage_config.yml (100%) rename {input => src/input}/telemetry_config.yml (100%) rename {input => src/input}/telemetry_storage_config.yml (100%) rename {input => src/input}/user_registry_credential.yml (100%) diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml index aea0698715..6bb3186850 100644 --- a/.github/workflows/ansible-lint.yml +++ b/.github/workflows/ansible-lint.yml @@ -7,10 +7,9 @@ on: - staging - release_1.7.1 - pub/build_stream - - pub/q2_dev - pub/telemetry - pub/q2_upgrade - - pub/q2_ansible + - q3_main jobs: build: diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 3aaded93be..01320db68b 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -7,10 +7,9 @@ on: - staging - release_1.7.1 - pub/build_stream - - pub/q2_dev - pub/telemetry - pub/q2_upgrade - - pub/q2_ansible + - q3_main jobs: build: diff --git a/omnia.sh b/omnia.sh index 783d3766e9..f0f1b1a9ce 100755 --- a/omnia.sh +++ b/omnia.sh @@ -1296,8 +1296,8 @@ post_setup_config() { echo -e "${BLUE} Moving input files from /omnia dir to project_default folder.${NC}" podman exec -u root omnia_core bash -c " mkdir -p /opt/omnia/input/project_default - cp -r /omnia/input/* /opt/omnia/input/project_default - rm -rf /omnia/input + cp -r /omnia/src/input/* /opt/omnia/input/project_default + rm -rf /omnia/src/input rm -rf /omnia/omnia.sh" } @@ -1359,7 +1359,7 @@ init_ssh_config() { remove_container_omnia_sh() { podman exec -u root omnia_core bash -c 'if [ -f /omnia/omnia.sh ]; then rm -f /omnia/omnia.sh; fi' >/dev/null 2>&1 || true - podman exec -u root omnia_core bash -c 'if [ -d /omnia/input ]; then rm -rf /omnia/input; fi' >/dev/null 2>&1 || true + podman exec -u root omnia_core bash -c 'if [ -d /omnia/src/input ]; then rm -rf /omnia/src/input; fi' >/dev/null 2>&1 || true } start_container_session() { diff --git a/examples/additional_cloud_init.yml b/src/examples/additional_cloud_init.yml similarity index 100% rename from examples/additional_cloud_init.yml rename to src/examples/additional_cloud_init.yml diff --git a/examples/catalog/catalog_rhel.json b/src/examples/catalog/catalog_rhel.json similarity index 100% rename from examples/catalog/catalog_rhel.json rename to src/examples/catalog/catalog_rhel.json diff --git a/examples/catalog/catalog_rhel_aarch64_with_slurm_only.json b/src/examples/catalog/catalog_rhel_aarch64_with_slurm_only.json similarity index 100% rename from examples/catalog/catalog_rhel_aarch64_with_slurm_only.json rename to src/examples/catalog/catalog_rhel_aarch64_with_slurm_only.json diff --git a/examples/catalog/catalog_rhel_with_nfs_provisioner.json b/src/examples/catalog/catalog_rhel_with_nfs_provisioner.json similarity index 100% rename from examples/catalog/catalog_rhel_with_nfs_provisioner.json rename to src/examples/catalog/catalog_rhel_with_nfs_provisioner.json diff --git a/examples/catalog/catalog_rhel_x86_64.json b/src/examples/catalog/catalog_rhel_x86_64.json similarity index 100% rename from examples/catalog/catalog_rhel_x86_64.json rename to src/examples/catalog/catalog_rhel_x86_64.json diff --git a/examples/catalog/catalog_rhel_x86_64_with_slurm_only.json b/src/examples/catalog/catalog_rhel_x86_64_with_slurm_only.json similarity index 100% rename from examples/catalog/catalog_rhel_x86_64_with_slurm_only.json rename to src/examples/catalog/catalog_rhel_x86_64_with_slurm_only.json diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/pxe_mapping_file.csv b/src/examples/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/pxe_mapping_file.csv similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/pxe_mapping_file.csv rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/pxe_mapping_file.csv diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/software_config.json b/src/examples/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/software_config.json similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/software_config.json rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_aarch64_with_slurm_only_json/software_config.json diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_json/pxe_mapping_file.csv b/src/examples/catalog/mapping_file_software_config/catalog_rhel_json/pxe_mapping_file.csv similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_json/pxe_mapping_file.csv rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_json/pxe_mapping_file.csv diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_json/software_config.json b/src/examples/catalog/mapping_file_software_config/catalog_rhel_json/software_config.json similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_json/software_config.json rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_json/software_config.json diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/pxe_mapping_file.csv b/src/examples/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/pxe_mapping_file.csv similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/pxe_mapping_file.csv rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/pxe_mapping_file.csv diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/software_config.json b/src/examples/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/software_config.json similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/software_config.json rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_with_nfs_provisioner_json/software_config.json diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/pxe_mapping_file.csv b/src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/pxe_mapping_file.csv similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/pxe_mapping_file.csv rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/pxe_mapping_file.csv diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/software_config.json b/src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/software_config.json similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/software_config.json rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_json/software_config.json diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/additional_packages.json b/src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/additional_packages.json similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/additional_packages.json rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/additional_packages.json diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/pxe_mapping_file.csv b/src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/pxe_mapping_file.csv similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/pxe_mapping_file.csv rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/pxe_mapping_file.csv diff --git a/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/software_config.json b/src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/software_config.json similarity index 100% rename from examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/software_config.json rename to src/examples/catalog/mapping_file_software_config/catalog_rhel_x86_64_with_slurm_only_json/software_config.json diff --git a/examples/inventory/bmc_inventory_file b/src/examples/inventory/bmc_inventory_file similarity index 100% rename from examples/inventory/bmc_inventory_file rename to src/examples/inventory/bmc_inventory_file diff --git a/examples/powerscale_reference_files/CSI_driver/secret.yaml b/src/examples/powerscale_reference_files/CSI_driver/secret.yaml similarity index 100% rename from examples/powerscale_reference_files/CSI_driver/secret.yaml rename to src/examples/powerscale_reference_files/CSI_driver/secret.yaml diff --git a/examples/powerscale_reference_files/CSI_driver/values.yaml b/src/examples/powerscale_reference_files/CSI_driver/values.yaml similarity index 100% rename from examples/powerscale_reference_files/CSI_driver/values.yaml rename to src/examples/powerscale_reference_files/CSI_driver/values.yaml diff --git a/examples/powerscale_reference_files/powerscale_metrics/values.yaml b/src/examples/powerscale_reference_files/powerscale_metrics/values.yaml similarity index 100% rename from examples/powerscale_reference_files/powerscale_metrics/values.yaml rename to src/examples/powerscale_reference_files/powerscale_metrics/values.yaml diff --git a/examples/pxe_mapping_file.csv b/src/examples/pxe_mapping_file.csv similarity index 100% rename from examples/pxe_mapping_file.csv rename to src/examples/pxe_mapping_file.csv diff --git a/examples/rhel_software_config.json b/src/examples/rhel_software_config.json similarity index 100% rename from examples/rhel_software_config.json rename to src/examples/rhel_software_config.json diff --git a/examples/slurm_conf/cgroup.conf b/src/examples/slurm_conf/cgroup.conf similarity index 100% rename from examples/slurm_conf/cgroup.conf rename to src/examples/slurm_conf/cgroup.conf diff --git a/examples/slurm_conf/slurm.conf b/src/examples/slurm_conf/slurm.conf similarity index 100% rename from examples/slurm_conf/slurm.conf rename to src/examples/slurm_conf/slurm.conf diff --git a/examples/slurm_conf/slurmdbd.conf b/src/examples/slurm_conf/slurmdbd.conf similarity index 100% rename from examples/slurm_conf/slurmdbd.conf rename to src/examples/slurm_conf/slurmdbd.conf diff --git a/examples/software_config_template/template_rhel_10.0_multi_arch_software_config.json b/src/examples/software_config_template/template_rhel_10.0_multi_arch_software_config.json similarity index 100% rename from examples/software_config_template/template_rhel_10.0_multi_arch_software_config.json rename to src/examples/software_config_template/template_rhel_10.0_multi_arch_software_config.json diff --git a/examples/software_config_template/template_rhel_10.0_x86-64_software_config.json b/src/examples/software_config_template/template_rhel_10.0_x86-64_software_config.json similarity index 100% rename from examples/software_config_template/template_rhel_10.0_x86-64_software_config.json rename to src/examples/software_config_template/template_rhel_10.0_x86-64_software_config.json diff --git a/examples/storage_config/storage_config.yml b/src/examples/storage_config/storage_config.yml similarity index 100% rename from examples/storage_config/storage_config.yml rename to src/examples/storage_config/storage_config.yml diff --git a/input/additional_cloud_init.yml b/src/input/additional_cloud_init.yml similarity index 100% rename from input/additional_cloud_init.yml rename to src/input/additional_cloud_init.yml diff --git a/input/build_stream_config.yml b/src/input/build_stream_config.yml similarity index 100% rename from input/build_stream_config.yml rename to src/input/build_stream_config.yml diff --git a/input/config/aarch64/rhel/10.0/additional_packages.json b/src/input/config/aarch64/rhel/10.0/additional_packages.json similarity index 100% rename from input/config/aarch64/rhel/10.0/additional_packages.json rename to src/input/config/aarch64/rhel/10.0/additional_packages.json diff --git a/input/config/aarch64/rhel/10.0/admin_debug_packages.json b/src/input/config/aarch64/rhel/10.0/admin_debug_packages.json similarity index 100% rename from input/config/aarch64/rhel/10.0/admin_debug_packages.json rename to src/input/config/aarch64/rhel/10.0/admin_debug_packages.json diff --git a/input/config/aarch64/rhel/10.0/default_packages.json b/src/input/config/aarch64/rhel/10.0/default_packages.json similarity index 100% rename from input/config/aarch64/rhel/10.0/default_packages.json rename to src/input/config/aarch64/rhel/10.0/default_packages.json diff --git a/input/config/aarch64/rhel/10.0/ldms.json b/src/input/config/aarch64/rhel/10.0/ldms.json similarity index 100% rename from input/config/aarch64/rhel/10.0/ldms.json rename to src/input/config/aarch64/rhel/10.0/ldms.json diff --git a/input/config/aarch64/rhel/10.0/openldap.json b/src/input/config/aarch64/rhel/10.0/openldap.json similarity index 100% rename from input/config/aarch64/rhel/10.0/openldap.json rename to src/input/config/aarch64/rhel/10.0/openldap.json diff --git a/input/config/aarch64/rhel/10.0/openmpi.json b/src/input/config/aarch64/rhel/10.0/openmpi.json similarity index 100% rename from input/config/aarch64/rhel/10.0/openmpi.json rename to src/input/config/aarch64/rhel/10.0/openmpi.json diff --git a/input/config/aarch64/rhel/10.0/slurm_custom.json b/src/input/config/aarch64/rhel/10.0/slurm_custom.json similarity index 100% rename from input/config/aarch64/rhel/10.0/slurm_custom.json rename to src/input/config/aarch64/rhel/10.0/slurm_custom.json diff --git a/input/config/aarch64/rhel/10.0/ucx.json b/src/input/config/aarch64/rhel/10.0/ucx.json similarity index 100% rename from input/config/aarch64/rhel/10.0/ucx.json rename to src/input/config/aarch64/rhel/10.0/ucx.json diff --git a/input/config/x86_64/rhel/10.0/additional_packages.json b/src/input/config/x86_64/rhel/10.0/additional_packages.json similarity index 100% rename from input/config/x86_64/rhel/10.0/additional_packages.json rename to src/input/config/x86_64/rhel/10.0/additional_packages.json diff --git a/input/config/x86_64/rhel/10.0/admin_debug_packages.json b/src/input/config/x86_64/rhel/10.0/admin_debug_packages.json similarity index 100% rename from input/config/x86_64/rhel/10.0/admin_debug_packages.json rename to src/input/config/x86_64/rhel/10.0/admin_debug_packages.json diff --git a/input/config/x86_64/rhel/10.0/csi_driver_powerscale.json b/src/input/config/x86_64/rhel/10.0/csi_driver_powerscale.json similarity index 100% rename from input/config/x86_64/rhel/10.0/csi_driver_powerscale.json rename to src/input/config/x86_64/rhel/10.0/csi_driver_powerscale.json diff --git a/input/config/x86_64/rhel/10.0/default_packages.json b/src/input/config/x86_64/rhel/10.0/default_packages.json similarity index 100% rename from input/config/x86_64/rhel/10.0/default_packages.json rename to src/input/config/x86_64/rhel/10.0/default_packages.json diff --git a/input/config/x86_64/rhel/10.0/ldms.json b/src/input/config/x86_64/rhel/10.0/ldms.json similarity index 100% rename from input/config/x86_64/rhel/10.0/ldms.json rename to src/input/config/x86_64/rhel/10.0/ldms.json diff --git a/input/config/x86_64/rhel/10.0/openldap.json b/src/input/config/x86_64/rhel/10.0/openldap.json similarity index 100% rename from input/config/x86_64/rhel/10.0/openldap.json rename to src/input/config/x86_64/rhel/10.0/openldap.json diff --git a/input/config/x86_64/rhel/10.0/openmpi.json b/src/input/config/x86_64/rhel/10.0/openmpi.json similarity index 100% rename from input/config/x86_64/rhel/10.0/openmpi.json rename to src/input/config/x86_64/rhel/10.0/openmpi.json diff --git a/input/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json b/src/input/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json similarity index 100% rename from input/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json rename to src/input/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json diff --git a/input/config/x86_64/rhel/10.0/slurm_custom.json b/src/input/config/x86_64/rhel/10.0/slurm_custom.json similarity index 100% rename from input/config/x86_64/rhel/10.0/slurm_custom.json rename to src/input/config/x86_64/rhel/10.0/slurm_custom.json diff --git a/input/config/x86_64/rhel/10.0/ucx.json b/src/input/config/x86_64/rhel/10.0/ucx.json similarity index 100% rename from input/config/x86_64/rhel/10.0/ucx.json rename to src/input/config/x86_64/rhel/10.0/ucx.json diff --git a/input/discovery_config.yml b/src/input/discovery_config.yml similarity index 100% rename from input/discovery_config.yml rename to src/input/discovery_config.yml diff --git a/input/gitlab_config.yml b/src/input/gitlab_config.yml similarity index 100% rename from input/gitlab_config.yml rename to src/input/gitlab_config.yml diff --git a/input/high_availability_config.yml b/src/input/high_availability_config.yml similarity index 100% rename from input/high_availability_config.yml rename to src/input/high_availability_config.yml diff --git a/input/local_repo_config.yml b/src/input/local_repo_config.yml similarity index 100% rename from input/local_repo_config.yml rename to src/input/local_repo_config.yml diff --git a/input/network_spec.yml b/src/input/network_spec.yml similarity index 100% rename from input/network_spec.yml rename to src/input/network_spec.yml diff --git a/input/omnia_config.yml b/src/input/omnia_config.yml similarity index 100% rename from input/omnia_config.yml rename to src/input/omnia_config.yml diff --git a/input/provision_config.yml b/src/input/provision_config.yml similarity index 100% rename from input/provision_config.yml rename to src/input/provision_config.yml diff --git a/input/pxe_mapping_file.csv b/src/input/pxe_mapping_file.csv similarity index 100% rename from input/pxe_mapping_file.csv rename to src/input/pxe_mapping_file.csv diff --git a/input/security_config.yml b/src/input/security_config.yml similarity index 100% rename from input/security_config.yml rename to src/input/security_config.yml diff --git a/input/software_config.json b/src/input/software_config.json similarity index 100% rename from input/software_config.json rename to src/input/software_config.json diff --git a/input/storage_config.yml b/src/input/storage_config.yml similarity index 100% rename from input/storage_config.yml rename to src/input/storage_config.yml diff --git a/input/telemetry_config.yml b/src/input/telemetry_config.yml similarity index 100% rename from input/telemetry_config.yml rename to src/input/telemetry_config.yml diff --git a/input/telemetry_storage_config.yml b/src/input/telemetry_storage_config.yml similarity index 100% rename from input/telemetry_storage_config.yml rename to src/input/telemetry_storage_config.yml diff --git a/input/user_registry_credential.yml b/src/input/user_registry_credential.yml similarity index 100% rename from input/user_registry_credential.yml rename to src/input/user_registry_credential.yml From 3685502acc72a8734807836b002a5c4d895ce168 Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Thu, 25 Jun 2026 06:06:35 -0400 Subject: [PATCH 08/24] Add SDD CI/CD workflows for Omnia Public Code Repo Signed-off-by: Rajeshkumar S --- .github/workflows/ansible-lint.yml | 42 ++++++++++++-- .github/workflows/bandit.yml | 64 +++++++++++++++++++++ .github/workflows/gitleaks.yml | 28 ++++++++++ .github/workflows/pip-audit.yml | 49 ++++++++++++++++ .github/workflows/pytest.yml | 90 ++++++++++++++++++++++++++++++ .github/workflows/shellcheck.yml | 54 ++++++++++++++++++ .github/workflows/yamllint.yml | 54 ++++++++++++++++++ 7 files changed, 376 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/bandit.yml create mode 100644 .github/workflows/gitleaks.yml create mode 100644 .github/workflows/pip-audit.yml create mode 100644 .github/workflows/pytest.yml create mode 100644 .github/workflows/shellcheck.yml create mode 100644 .github/workflows/yamllint.yml diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml index aea0698715..a5ed934e03 100644 --- a/.github/workflows/ansible-lint.yml +++ b/.github/workflows/ansible-lint.yml @@ -19,22 +19,54 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get changed Ansible files (excluding deleted) + id: changed-files + run: | + git fetch origin ${{ github.base_ref }} + CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- '*.yml' '*.yaml' || true) + + FILES="" + for f in $CHANGED; do + if [ -f "$f" ]; then + # Include only Ansible-relevant files (playbooks, roles, tasks, handlers, vars, defaults, meta, templates) + # Exclude CI workflow files, config files, and other non-Ansible YAML + case "$f" in + .github/*|.config/*|.readthedocs*|build_stream/*) continue ;; + *) FILES="$FILES $f" ;; + esac + fi + done + + FILES=$(echo "$FILES" | xargs) + echo "Filtered files: $FILES" + echo "files=$FILES" >> "$GITHUB_OUTPUT" - name: Set up Python + if: steps.changed-files.outputs.files != '' uses: actions/setup-python@v4 with: python-version: '3.x' - name: Install Ansible and Ansible Lint + if: steps.changed-files.outputs.files != '' run: | python -m pip install --upgrade pip - pip install ansible-core + pip install ansible-core ansible-lint - name: Install Ansible Collections from requirements.yml + if: steps.changed-files.outputs.files != '' run: | ansible-galaxy collection install -r .config/requirements.yml --force --clear-response-cache - - name: Run ansible-lint - uses: ansible/ansible-lint@main - with: - args: --config=.config/ansible-lint.yml + - name: Run ansible-lint on changed files + if: steps.changed-files.outputs.files != '' + run: | + echo "Running ansible-lint on: ${{ steps.changed-files.outputs.files }}" + ansible-lint --config=.config/ansible-lint.yml ${{ steps.changed-files.outputs.files }} + + - name: No Ansible files changed + if: steps.changed-files.outputs.files == '' + run: echo "No Ansible files changed in this PR. Skipping ansible-lint." diff --git a/.github/workflows/bandit.yml b/.github/workflows/bandit.yml new file mode 100644 index 0000000000..6820151637 --- /dev/null +++ b/.github/workflows/bandit.yml @@ -0,0 +1,64 @@ +name: Bandit Security Scan + +on: + pull_request: + branches: + - main + - staging + - release_1.7.1 + - pub/build_stream + - pub/q2_dev + - pub/telemetry + - pub/q2_upgrade + - pub/q2_ansible + +jobs: + bandit: + name: Bandit Python SAST + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get changed Python files (excluding deleted) + id: changed-files + run: | + git fetch origin ${{ github.base_ref }} + CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- '*.py' || true) + + FILES="" + for f in $CHANGED; do + if [ -f "$f" ]; then + # Exclude test files — Bandit SAST is for product code + case "$f" in + */tests/*|*/test_*|*_test.py) continue ;; + *) FILES="$FILES $f" ;; + esac + fi + done + + FILES=$(echo "$FILES" | xargs) + echo "Filtered files: $FILES" + echo "files=$FILES" >> "$GITHUB_OUTPUT" + + - name: Set up Python + if: steps.changed-files.outputs.files != '' + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install Bandit + if: steps.changed-files.outputs.files != '' + run: pip install bandit + + - name: Run Bandit on changed files + if: steps.changed-files.outputs.files != '' + run: | + echo "Running Bandit on: ${{ steps.changed-files.outputs.files }}" + bandit ${{ steps.changed-files.outputs.files }} -ll -ii -f txt + + - name: No Python product files changed + if: steps.changed-files.outputs.files == '' + run: echo "No Python product files changed in this PR. Skipping Bandit." diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml new file mode 100644 index 0000000000..07167ea6be --- /dev/null +++ b/.github/workflows/gitleaks.yml @@ -0,0 +1,28 @@ +name: Secret Leak Scan + +on: + pull_request: + branches: + - main + - staging + - release_1.7.1 + - pub/build_stream + - pub/q2_dev + - pub/telemetry + - pub/q2_upgrade + - pub/q2_ansible + +jobs: + gitleaks: + name: Gitleaks Secret Scan + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Run Gitleaks on PR changes + uses: gitleaks/gitleaks-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml new file mode 100644 index 0000000000..ab02fbd8a8 --- /dev/null +++ b/.github/workflows/pip-audit.yml @@ -0,0 +1,49 @@ +name: Dependency Vulnerability Scan + +on: + pull_request: + branches: + - main + - staging + - release_1.7.1 + - pub/build_stream + - pub/q2_dev + - pub/telemetry + - pub/q2_upgrade + - pub/q2_ansible + +jobs: + pip-audit: + name: pip-audit Dependency Scan + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check for changed requirements files + id: changed-files + run: | + git fetch origin ${{ github.base_ref }} + CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- 'build_stream/requirements*.txt' || true) + + FILES=$(echo "$CHANGED" | xargs) + echo "Changed requirements files: $FILES" + echo "files=$FILES" >> "$GITHUB_OUTPUT" + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install pip-audit + run: pip install pip-audit + + - name: Audit build_stream dependencies + run: | + echo "Auditing build_stream/requirements.txt for known vulnerabilities..." + pip-audit -r build_stream/requirements.txt --desc on || true + echo "" + echo "Auditing build_stream/requirements-dev.txt for known vulnerabilities..." + pip-audit -r build_stream/requirements-dev.txt --desc on || true diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml new file mode 100644 index 0000000000..a4a3e2c1b0 --- /dev/null +++ b/.github/workflows/pytest.yml @@ -0,0 +1,90 @@ +name: Unit Tests & Coverage + +on: + pull_request: + branches: + - main + - staging + - release_1.7.1 + - pub/build_stream + - pub/q2_dev + - pub/telemetry + - pub/q2_upgrade + - pub/q2_ansible + +jobs: + test: + name: Unit Tests & Coverage + runs-on: ubuntu-latest + env: + COVERAGE_THRESHOLD: 70 + strategy: + matrix: + python-version: ["3.11"] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check for changed build_stream files + id: changed-files + run: | + git fetch origin ${{ github.base_ref }} + CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- 'build_stream/**/*.py' || true) + + FILES=$(echo "$CHANGED" | xargs) + echo "Changed build_stream Python files: $FILES" + echo "files=$FILES" >> "$GITHUB_OUTPUT" + + - name: Set up Python ${{ matrix.python-version }} + if: steps.changed-files.outputs.files != '' + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + if: steps.changed-files.outputs.files != '' + run: | + python -m pip install --upgrade pip + pip install -r build_stream/requirements.txt + pip install -r build_stream/requirements-dev.txt + + - name: Run unit tests with coverage + if: steps.changed-files.outputs.files != '' + working-directory: build_stream + run: | + python -m pytest tests/unit/ -v --tb=short \ + --junitxml=test-results.xml \ + --cov=. \ + --cov-report=xml:coverage.xml \ + --cov-report=term-missing \ + -m unit + + - name: Check coverage threshold + if: steps.changed-files.outputs.files != '' + working-directory: build_stream + run: | + python -m pytest tests/unit/ \ + --cov=. \ + --cov-fail-under=${COVERAGE_THRESHOLD} \ + -m unit -q --no-header 2>&1 | tail -5 + echo "Coverage threshold check: ${COVERAGE_THRESHOLD}% minimum" + + - name: Upload test results + if: steps.changed-files.outputs.files != '' && always() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: build_stream/test-results.xml + + - name: Upload coverage report + if: steps.changed-files.outputs.files != '' && always() + uses: actions/upload-artifact@v4 + with: + name: coverage-report + path: build_stream/coverage.xml + + - name: No build_stream files changed + if: steps.changed-files.outputs.files == '' + run: echo "No build_stream Python files changed in this PR. Skipping tests." diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml new file mode 100644 index 0000000000..479d34bf2a --- /dev/null +++ b/.github/workflows/shellcheck.yml @@ -0,0 +1,54 @@ +name: ShellCheck + +on: + pull_request: + branches: + - main + - staging + - release_1.7.1 + - pub/build_stream + - pub/q2_dev + - pub/telemetry + - pub/q2_upgrade + - pub/q2_ansible + +jobs: + shellcheck: + name: ShellCheck + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get changed shell files (excluding deleted) + id: changed-files + run: | + git fetch origin ${{ github.base_ref }} + CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- '*.sh' '*.bash' '*.sh.j2' || true) + + FILES="" + for f in $CHANGED; do + if [ -f "$f" ]; then + FILES="$FILES $f" + fi + done + + FILES=$(echo "$FILES" | xargs) + echo "Filtered files: $FILES" + echo "files=$FILES" >> "$GITHUB_OUTPUT" + + - name: Install ShellCheck + if: steps.changed-files.outputs.files != '' + run: sudo apt-get install -y shellcheck + + - name: Run ShellCheck on changed files + if: steps.changed-files.outputs.files != '' + run: | + echo "Running ShellCheck on: ${{ steps.changed-files.outputs.files }}" + shellcheck ${{ steps.changed-files.outputs.files }} + + - name: No shell files changed + if: steps.changed-files.outputs.files == '' + run: echo "No shell files changed in this PR. Skipping ShellCheck." diff --git a/.github/workflows/yamllint.yml b/.github/workflows/yamllint.yml new file mode 100644 index 0000000000..04ccd5abbc --- /dev/null +++ b/.github/workflows/yamllint.yml @@ -0,0 +1,54 @@ +name: YAML Lint + +on: + pull_request: + branches: + - main + - staging + - release_1.7.1 + - pub/build_stream + - pub/q2_dev + - pub/telemetry + - pub/q2_upgrade + - pub/q2_ansible + +jobs: + yamllint: + name: YAML Lint + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get changed YAML files (excluding deleted) + id: changed-files + run: | + git fetch origin ${{ github.base_ref }} + CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- '*.yml' '*.yaml' || true) + + FILES="" + for f in $CHANGED; do + if [ -f "$f" ]; then + FILES="$FILES $f" + fi + done + + FILES=$(echo "$FILES" | xargs) + echo "Filtered files: $FILES" + echo "files=$FILES" >> "$GITHUB_OUTPUT" + + - name: Install yamllint + if: steps.changed-files.outputs.files != '' + run: pip install yamllint + + - name: Run yamllint on changed files + if: steps.changed-files.outputs.files != '' + run: | + echo "Running yamllint on: ${{ steps.changed-files.outputs.files }}" + yamllint -c .yamllint.yml ${{ steps.changed-files.outputs.files }} || yamllint ${{ steps.changed-files.outputs.files }} + + - name: No YAML files changed + if: steps.changed-files.outputs.files == '' + run: echo "No YAML files changed in this PR. Skipping yamllint." From 8c68e4574d34a6848864f8d6d5e84a6ffc953da1 Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Mon, 29 Jun 2026 02:12:26 -0400 Subject: [PATCH 09/24] Dummy changes to invoke CI/CD pipeline Signed-off-by: Rajeshkumar S --- build_stream/container.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build_stream/container.py b/build_stream/container.py index ba2cdcbb5c..97e8741492 100644 --- a/build_stream/container.py +++ b/build_stream/container.py @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +#dummy change to invoke CI/CD scans. + """Dependency Injector containers for the Build Stream API.""" # pylint: disable=c-extension-no-member From 77e2cdc4d2bc8f08e2b74bea23fc5afef9607898 Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Mon, 29 Jun 2026 02:31:22 -0400 Subject: [PATCH 10/24] Fix the lint failures and add gitleaks license Signed-off-by: Rajeshkumar S --- .github/workflows/ansible-lint.yml | 25 ++++++++++++++++++------- .github/workflows/bandit.yml | 7 +++++-- .github/workflows/gitleaks.yml | 1 + .github/workflows/pip-audit.yml | 16 +++++++++++----- .github/workflows/pylint.yml | 26 ++++++++++++++++++-------- .github/workflows/pytest.yml | 16 ++++++++++++++-- .github/workflows/shellcheck.yml | 8 ++++++-- .github/workflows/yamllint.yml | 15 +++++++++++---- 8 files changed, 84 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml index a5ed934e03..10ade85537 100644 --- a/.github/workflows/ansible-lint.yml +++ b/.github/workflows/ansible-lint.yml @@ -26,13 +26,18 @@ jobs: id: changed-files run: | git fetch origin ${{ github.base_ref }} - CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- '*.yml' '*.yaml' || true) + CHANGED=$(git diff --name-only --diff-filter=d \ + origin/${{ github.base_ref }} HEAD -- \ + '*.yml' '*.yaml' || true) FILES="" for f in $CHANGED; do if [ -f "$f" ]; then - # Include only Ansible-relevant files (playbooks, roles, tasks, handlers, vars, defaults, meta, templates) - # Exclude CI workflow files, config files, and other non-Ansible YAML + # Include only Ansible-relevant files + # (playbooks, roles, tasks, handlers, vars, + # defaults, meta, templates) + # Exclude CI workflow files, config files, + # and other non-Ansible YAML case "$f" in .github/*|.config/*|.readthedocs*|build_stream/*) continue ;; *) FILES="$FILES $f" ;; @@ -59,14 +64,20 @@ jobs: - name: Install Ansible Collections from requirements.yml if: steps.changed-files.outputs.files != '' run: | - ansible-galaxy collection install -r .config/requirements.yml --force --clear-response-cache + ansible-galaxy collection install \ + -r .config/requirements.yml \ + --force --clear-response-cache - name: Run ansible-lint on changed files if: steps.changed-files.outputs.files != '' run: | - echo "Running ansible-lint on: ${{ steps.changed-files.outputs.files }}" - ansible-lint --config=.config/ansible-lint.yml ${{ steps.changed-files.outputs.files }} + echo "Running ansible-lint on:" + echo "${{ steps.changed-files.outputs.files }}" + ansible-lint --config=.config/ansible-lint.yml \ + ${{ steps.changed-files.outputs.files }} - name: No Ansible files changed if: steps.changed-files.outputs.files == '' - run: echo "No Ansible files changed in this PR. Skipping ansible-lint." + run: | + echo "No Ansible files changed in this PR." + echo "Skipping ansible-lint." diff --git a/.github/workflows/bandit.yml b/.github/workflows/bandit.yml index 6820151637..7f47c3a3dc 100644 --- a/.github/workflows/bandit.yml +++ b/.github/workflows/bandit.yml @@ -26,7 +26,8 @@ jobs: id: changed-files run: | git fetch origin ${{ github.base_ref }} - CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- '*.py' || true) + CHANGED=$(git diff --name-only --diff-filter=d \ + origin/${{ github.base_ref }} HEAD -- '*.py' || true) FILES="" for f in $CHANGED; do @@ -61,4 +62,6 @@ jobs: - name: No Python product files changed if: steps.changed-files.outputs.files == '' - run: echo "No Python product files changed in this PR. Skipping Bandit." + run: | + echo "No Python product files changed in this PR." + echo "Skipping Bandit." diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml index 07167ea6be..db623b98a2 100644 --- a/.github/workflows/gitleaks.yml +++ b/.github/workflows/gitleaks.yml @@ -26,3 +26,4 @@ jobs: uses: gitleaks/gitleaks-action@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }} diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index ab02fbd8a8..9c4c18f150 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -26,7 +26,9 @@ jobs: id: changed-files run: | git fetch origin ${{ github.base_ref }} - CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- 'build_stream/requirements*.txt' || true) + CHANGED=$(git diff --name-only --diff-filter=d \ + origin/${{ github.base_ref }} HEAD -- \ + 'build_stream/requirements*.txt' || true) FILES=$(echo "$CHANGED" | xargs) echo "Changed requirements files: $FILES" @@ -42,8 +44,12 @@ jobs: - name: Audit build_stream dependencies run: | - echo "Auditing build_stream/requirements.txt for known vulnerabilities..." - pip-audit -r build_stream/requirements.txt --desc on || true + echo "Auditing build_stream/requirements.txt" + echo "for known vulnerabilities..." + pip-audit -r build_stream/requirements.txt \ + --desc on || true echo "" - echo "Auditing build_stream/requirements-dev.txt for known vulnerabilities..." - pip-audit -r build_stream/requirements-dev.txt --desc on || true + echo "Auditing build_stream/requirements-dev.txt" + echo "for known vulnerabilities..." + pip-audit -r build_stream/requirements-dev.txt \ + --desc on || true diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 3aaded93be..a7b8c5f80b 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -31,13 +31,16 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install ansible pylint kubernetes prettytable requests passlib fastapi uvicorn sqlalchemy pytest httpx argon2-cffi pyyaml dependency-injector + pip install ansible pylint kubernetes prettytable \ + requests passlib fastapi uvicorn sqlalchemy pytest \ + httpx argon2-cffi pyyaml dependency-injector - name: Get changed Python files (excluding deleted) id: changed-files run: | git fetch origin ${{ github.base_ref }} - CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- '*.py' || true) + CHANGED=$(git diff --name-only --diff-filter=d \ + origin/${{ github.base_ref }} HEAD -- '*.py' || true) FILES="" for f in $CHANGED; do @@ -54,15 +57,22 @@ jobs: - name: Run pylint on changed files if: steps.changed-files.outputs.files != '' run: | - echo "Running pylint on: ${{ steps.changed-files.outputs.files }}" - + echo "Running pylint on:" + echo "${{ steps.changed-files.outputs.files }}" + # Filter out files from the excluded directory - FILES=$(echo "${{ steps.changed-files.outputs.files }}" | tr ' ' '\n' | grep -v '^discovery/roles/telemetry/files/nersc-ldms-aggr/' | xargs) + FILES=$(echo "${{ steps.changed-files.outputs.files }}" | \ + tr ' ' '\n' | \ + grep -v '^discovery/roles/telemetry/files/nersc-ldms-aggr/' | \ + xargs) if [ -n "$FILES" ]; then - # Set PYTHONPATH to include build_stream directory for proper import resolution - # This allows pylint to resolve both relative imports in build_stream and regular imports elsewhere - PYTHONPATH=.:./build_stream pylint $FILES --fail-under=${PYLINT_THRESHOLD} + # Set PYTHONPATH to include build_stream directory + # for proper import resolution + # This allows pylint to resolve both relative imports + # in build_stream and regular imports elsewhere + PYTHONPATH=.:./build_stream pylint $FILES \ + --fail-under=${PYLINT_THRESHOLD} else echo "No files to lint after filtering." fi diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index a4a3e2c1b0..91eae69b67 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -31,10 +31,20 @@ jobs: id: changed-files run: | git fetch origin ${{ github.base_ref }} - CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- 'build_stream/**/*.py' || true) + # Get all changed Python files in build_stream directory + # (including root level) + CHANGED=$(git diff --name-only --diff-filter=d \ + origin/${{ github.base_ref }} HEAD | \ + grep '^build_stream/.*\.py$' || true) FILES=$(echo "$CHANGED" | xargs) echo "Changed build_stream Python files: $FILES" + + # Debug: show all changed files for troubleshooting + echo "All changed files in PR:" + git diff --name-only --diff-filter=d \ + origin/${{ github.base_ref }} HEAD || true + echo "files=$FILES" >> "$GITHUB_OUTPUT" - name: Set up Python ${{ matrix.python-version }} @@ -87,4 +97,6 @@ jobs: - name: No build_stream files changed if: steps.changed-files.outputs.files == '' - run: echo "No build_stream Python files changed in this PR. Skipping tests." + run: | + echo "No build_stream Python files changed in this PR." + echo "Skipping tests." diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index 479d34bf2a..e209a22a10 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -26,7 +26,9 @@ jobs: id: changed-files run: | git fetch origin ${{ github.base_ref }} - CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- '*.sh' '*.bash' '*.sh.j2' || true) + CHANGED=$(git diff --name-only --diff-filter=d \ + origin/${{ github.base_ref }} HEAD -- \ + '*.sh' '*.bash' '*.sh.j2' || true) FILES="" for f in $CHANGED; do @@ -51,4 +53,6 @@ jobs: - name: No shell files changed if: steps.changed-files.outputs.files == '' - run: echo "No shell files changed in this PR. Skipping ShellCheck." + run: | + echo "No shell files changed in this PR." + echo "Skipping ShellCheck." diff --git a/.github/workflows/yamllint.yml b/.github/workflows/yamllint.yml index 04ccd5abbc..700d72eebe 100644 --- a/.github/workflows/yamllint.yml +++ b/.github/workflows/yamllint.yml @@ -26,7 +26,9 @@ jobs: id: changed-files run: | git fetch origin ${{ github.base_ref }} - CHANGED=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} HEAD -- '*.yml' '*.yaml' || true) + CHANGED=$(git diff --name-only --diff-filter=d \ + origin/${{ github.base_ref }} HEAD -- \ + '*.yml' '*.yaml' || true) FILES="" for f in $CHANGED; do @@ -46,9 +48,14 @@ jobs: - name: Run yamllint on changed files if: steps.changed-files.outputs.files != '' run: | - echo "Running yamllint on: ${{ steps.changed-files.outputs.files }}" - yamllint -c .yamllint.yml ${{ steps.changed-files.outputs.files }} || yamllint ${{ steps.changed-files.outputs.files }} + echo "Running yamllint on:" + echo "${{ steps.changed-files.outputs.files }}" + yamllint -c .yamllint.yml \ + ${{ steps.changed-files.outputs.files }} || \ + yamllint ${{ steps.changed-files.outputs.files }} - name: No YAML files changed if: steps.changed-files.outputs.files == '' - run: echo "No YAML files changed in this PR. Skipping yamllint." + run: | + echo "No YAML files changed in this PR." + echo "Skipping yamllint." From 51d379dfe949e64c916e2393a6c986b282e42329 Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Mon, 29 Jun 2026 05:37:35 -0400 Subject: [PATCH 11/24] Fix the lint warnings and use gitleaks binary Signed-off-by: Rajeshkumar S --- .github/workflows/.gitleaks.toml | 42 ++++++++++++++++++++++++++++++ .github/workflows/ansible-lint.yml | 3 ++- .github/workflows/bandit.yml | 3 ++- .github/workflows/gitleaks.yml | 31 ++++++++++++++++------ .github/workflows/pip-audit.yml | 3 ++- .github/workflows/pylint.yml | 3 ++- .github/workflows/pytest.yml | 3 ++- .github/workflows/shellcheck.yml | 3 ++- .github/workflows/yamllint.yml | 3 ++- 9 files changed, 79 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/.gitleaks.toml diff --git a/.github/workflows/.gitleaks.toml b/.github/workflows/.gitleaks.toml new file mode 100644 index 0000000000..3e7d1acafe --- /dev/null +++ b/.github/workflows/.gitleaks.toml @@ -0,0 +1,42 @@ +title = "Gitleaks config for Omnia" + +[allowlist] + description = "Ignore known false positives for infra repos" + + paths = [ + '''(^|/)examples/''', + '''(^|/)docs/''' + ] + + regexTarget = "match" + regexes = [ + '''example[_-]?(password|secret|token|key)''', + '''dummy[_-]?(password|secret|token|key)''', + '''test[_-]?(password|secret|token|key)''', + '''CHANGEME''', + '''password:\s*"?\{\{.*\}\}"?''' + ] + +[[rules]] +id = "generic-password" +description = "Generic Password Detection" +regex = '''(?i)(password|passwd|pwd)\s*[:=]\s*["']?[A-Za-z0-9!@#$%^&*()_+=\-]{8,}["']?''' +tags = ["password"] + +[[rules]] +id = "credentials-in-url" +description = "Credentials in URL" +regex = '''(?i)\b\w+:\/\/[^:\s]+:[^@\s]+@[^:\s]+''' +tags = ["credentials", "url"] + +[[rules]] +id = "generic-token" +description = "Generic Token/Secret" +regex = '''(?i)(secret|token|api[_-]?key)\s*[:=]\s*["']?[A-Za-z0-9_\-]{16,}["']?''' +tags = ["token", "secret"] + +[[rules]] +id = "ansible-secret" +description = "Ansible hardcoded secret" +regex = '''(?i)(ansible_.*password|vault_password)\s*[:=]\s*["'][^"']{6,}["']''' +tags = ["ansible", "secret"] diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml index 10ade85537..eb1566f1fc 100644 --- a/.github/workflows/ansible-lint.yml +++ b/.github/workflows/ansible-lint.yml @@ -1,6 +1,7 @@ +--- name: Ansible Lint -on: +'on': pull_request: branches: - main diff --git a/.github/workflows/bandit.yml b/.github/workflows/bandit.yml index 7f47c3a3dc..51c07e855b 100644 --- a/.github/workflows/bandit.yml +++ b/.github/workflows/bandit.yml @@ -1,6 +1,7 @@ +--- name: Bandit Security Scan -on: +'on': pull_request: branches: - main diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml index db623b98a2..044c5113fc 100644 --- a/.github/workflows/gitleaks.yml +++ b/.github/workflows/gitleaks.yml @@ -1,6 +1,7 @@ +--- name: Secret Leak Scan -on: +'on': pull_request: branches: - main @@ -14,16 +15,30 @@ on: jobs: gitleaks: - name: Gitleaks Secret Scan + name: Scan for secrets runs-on: ubuntu-latest + continue-on-error: true + + permissions: + contents: read + steps: - - name: Checkout repository + - name: Checkout repo uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Run Gitleaks on PR changes - uses: gitleaks/gitleaks-action@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }} + - name: Install Gitleaks + run: | + REPO="https://api.github.com/repos/gitleaks/gitleaks" + VERSION=$(curl -s ${REPO}/releases/latest | \ + grep tag_name | cut -d '"' -f 4) + BASE="https://github.com/gitleaks/gitleaks/releases" + FILE="gitleaks_${VERSION#v}_linux_x64.tar.gz" + wget ${BASE}/download/${VERSION}/${FILE} + tar -xzf ${FILE} + chmod +x gitleaks + + - name: Run Gitleaks scan + run: | + ./gitleaks detect --source . --log-opts="--all" diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index 9c4c18f150..63ba51b431 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -1,6 +1,7 @@ +--- name: Dependency Vulnerability Scan -on: +'on': pull_request: branches: - main diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index a7b8c5f80b..8154832f85 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -1,6 +1,7 @@ +--- name: Pylint -on: +'on': pull_request: branches: - main diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 91eae69b67..3d3bff8021 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -1,6 +1,7 @@ +--- name: Unit Tests & Coverage -on: +'on': pull_request: branches: - main diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index e209a22a10..4af666d371 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -1,6 +1,7 @@ +--- name: ShellCheck -on: +'on': pull_request: branches: - main diff --git a/.github/workflows/yamllint.yml b/.github/workflows/yamllint.yml index 700d72eebe..53998778af 100644 --- a/.github/workflows/yamllint.yml +++ b/.github/workflows/yamllint.yml @@ -1,6 +1,7 @@ +--- name: YAML Lint -on: +'on': pull_request: branches: - main From cf11cf30601c10da253bc2f6086b13245740bac9 Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Mon, 29 Jun 2026 05:50:45 -0400 Subject: [PATCH 12/24] Update to use gitleaks binary Signed-off-by: Rajeshkumar S --- .github/workflows/.gitleaks.toml | 29 +++++++++++++++++++++++++++-- .github/workflows/gitleaks.yml | 13 +++++++++++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/.github/workflows/.gitleaks.toml b/.github/workflows/.gitleaks.toml index 3e7d1acafe..04656236e0 100644 --- a/.github/workflows/.gitleaks.toml +++ b/.github/workflows/.gitleaks.toml @@ -5,7 +5,11 @@ title = "Gitleaks config for Omnia" paths = [ '''(^|/)examples/''', - '''(^|/)docs/''' + '''(^|/)docs/''', + '''(^|/)telemetry/''', + '''(^|/)platforms/roles/jupyterhub/files/''', + '''(^|/)platforms/roles/polyaxon/files/''', + '''(^|/)roles/startservices/files/''' ] regexTarget = "match" @@ -14,7 +18,28 @@ title = "Gitleaks config for Omnia" '''dummy[_-]?(password|secret|token|key)''', '''test[_-]?(password|secret|token|key)''', '''CHANGEME''', - '''password:\s*"?\{\{.*\}\}"?''' + '''changeme''', + '''password:\s*"?\{\{.*\}\}"?''', + '''success_msg.*password.*validated''', + '''fail_msg.*password''', + '''_password.*successfully.*validated''', + '''_password.*validated''', + '''msg.*password.*valid''', + '''password=.*changeme''', + '''1c8572f630701e8792bede122ec9c417''', + '''secretToken.*1c8572f6''', + '''cookieSecret.*1c8572f6''', + '''timescaledb_password:\s*postgres''', + '''password:\s*postgres''', + '''(token|secret|password)\s*=\s*[a-z_]+''', + '''password:\s*"password"''', + '''ansible_.*password.*\{\{''', + '''docker_password_cipher''', + '''load_docker_credentials''', + '''password:\s*[a-z_]+(password|secret|key|token)''', + '''secret:\s*[a-z_]+(password|secret|key|token)''', + '''token:\s*[a-z_]+(password|secret|key|token)''', + '''password:\s*\{\s*password:''' ] [[rules]] diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml index 044c5113fc..d66cfbfef0 100644 --- a/.github/workflows/gitleaks.yml +++ b/.github/workflows/gitleaks.yml @@ -39,6 +39,15 @@ jobs: tar -xzf ${FILE} chmod +x gitleaks - - name: Run Gitleaks scan + - name: Run Gitleaks scan on PR changes only run: | - ./gitleaks detect --source . --log-opts="--all" + # Scan only commits in this PR, not entire history + BASE_REF="origin/${{ github.base_ref }}" + HEAD_REF="${{ github.sha }}" + + echo "Scanning commits from ${BASE_REF} to ${HEAD_REF}" + ./gitleaks detect \ + --source . \ + --config .github/workflows/.gitleaks.toml \ + --log-opts="${BASE_REF}..${HEAD_REF}" \ + --verbose From 92ccba280808f7c4cb58c18947a1b9bb88319355 Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Mon, 29 Jun 2026 06:21:42 -0400 Subject: [PATCH 13/24] Use opensource gitleaks (non enterprise without license) Signed-off-by: Rajeshkumar S --- .github/workflows/gitleaks.yml | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml index d66cfbfef0..2377a2d4f7 100644 --- a/.github/workflows/gitleaks.yml +++ b/.github/workflows/gitleaks.yml @@ -28,26 +28,9 @@ jobs: with: fetch-depth: 0 - - name: Install Gitleaks - run: | - REPO="https://api.github.com/repos/gitleaks/gitleaks" - VERSION=$(curl -s ${REPO}/releases/latest | \ - grep tag_name | cut -d '"' -f 4) - BASE="https://github.com/gitleaks/gitleaks/releases" - FILE="gitleaks_${VERSION#v}_linux_x64.tar.gz" - wget ${BASE}/download/${VERSION}/${FILE} - tar -xzf ${FILE} - chmod +x gitleaks - - - name: Run Gitleaks scan on PR changes only - run: | - # Scan only commits in this PR, not entire history - BASE_REF="origin/${{ github.base_ref }}" - HEAD_REF="${{ github.sha }}" - - echo "Scanning commits from ${BASE_REF} to ${HEAD_REF}" - ./gitleaks detect \ - --source . \ - --config .github/workflows/.gitleaks.toml \ - --log-opts="${BASE_REF}..${HEAD_REF}" \ - --verbose + - name: Run Gitleaks scan + uses: gitleaks/gitleaks-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITLEAKS_CONFIG: .github/workflows/.gitleaks.toml + GITLEAKS_ENABLE_COMMENTS: false From 725b29c4833c6d0315bd040998dac40015879eed Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Mon, 29 Jun 2026 06:27:49 -0400 Subject: [PATCH 14/24] Using open source gitleaks from docker Signed-off-by: Rajeshkumar S --- .github/workflows/gitleaks.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml index 2377a2d4f7..3eaf54d18d 100644 --- a/.github/workflows/gitleaks.yml +++ b/.github/workflows/gitleaks.yml @@ -28,9 +28,15 @@ jobs: with: fetch-depth: 0 - - name: Run Gitleaks scan - uses: gitleaks/gitleaks-action@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITLEAKS_CONFIG: .github/workflows/.gitleaks.toml - GITLEAKS_ENABLE_COMMENTS: false + - name: Run Gitleaks scan using Docker + run: | + docker run --rm \ + -v ${{ github.workspace }}:/repo \ + -w /repo \ + ghcr.io/gitleaks/gitleaks:latest \ + detect \ + --source /repo \ + --config /repo/.github/workflows/.gitleaks.toml \ + --log-opts="origin/${{ github.base_ref }}..${{ github.sha }}" \ + --verbose \ + --no-git From 8a11abedee01195de552f51732eba788bb4afed9 Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Mon, 29 Jun 2026 06:42:58 -0400 Subject: [PATCH 15/24] Update gitleaks.toml config Signed-off-by: Rajeshkumar S --- .github/workflows/.gitleaks.toml | 45 ++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/.github/workflows/.gitleaks.toml b/.github/workflows/.gitleaks.toml index 04656236e0..a211080096 100644 --- a/.github/workflows/.gitleaks.toml +++ b/.github/workflows/.gitleaks.toml @@ -9,7 +9,19 @@ title = "Gitleaks config for Omnia" '''(^|/)telemetry/''', '''(^|/)platforms/roles/jupyterhub/files/''', '''(^|/)platforms/roles/polyaxon/files/''', - '''(^|/)roles/startservices/files/''' + '''(^|/)roles/startservices/files/''', + '''(^|/)build_stream/tests/''', + '''(^|/)test_postgres_integration\.py''', + '''(^|/)test\.sh''', + '''(^|/)omnia_startup\.sh''', + '''(^|/)input/omnia_config\.yml''', + '''(^|/)prepare_oim/''', + '''(^|/)local_repo/roles/pulp_validation/''', + '''(^|/)utils/credential_utility/''', + '''(^|/)scheduler/roles/slurm/''', + '''(^|/)discovery/roles/ome_discovery/''', + '''(^|/)common/library/modules/ome_server_inventory\.py''', + '''(^|/)common/library/module_utils/local_repo/user_image_utility\.py''' ] regexTarget = "match" @@ -39,7 +51,36 @@ title = "Gitleaks config for Omnia" '''password:\s*[a-z_]+(password|secret|key|token)''', '''secret:\s*[a-z_]+(password|secret|key|token)''', '''token:\s*[a-z_]+(password|secret|key|token)''', - '''password:\s*\{\s*password:''' + '''password:\s*\{\s*password:''', + '''postgresql://.*@localhost''', + '''postgresql://.*@127\.0\.0\.1''', + '''%\([^)]+\)s''', + '''secret:.*-cert''', + '''passwd:\s*\$''', + '''password:\s*"hostvars''', + '''password:\s*"Registration''', + '''password\s*=\s*IntegrationTestConfig''', + '''password:\s*Optional''', + '''password:\s*Password''', + '''password:\s*"Password''', + '''password:\s*"Openldap''', + '''password:\s*"kerberos_admin_password''', + '''password:\s*"directory_manager_password''', + '''password:\s*"grafana_.*_password''', + '''password:\s*"mysql_.*_password''', + '''secret:\s*"grafana_.*''', + '''password:\s*"switch_.*_password''', + '''VAULT_PASSWORD.*omnia_test''', + '''passwd:\$\(''', + '''passwd:key=''', + '''password:\s*dell\d+''', + '''password:\s*slurmPassword''', + '''password\s*=\s*"correct_password"''', + '''PASSWORD:\s*postgres''', + '''password:\s*\$\{''', + '''password:\s*"password"''', + '''PASSWORD\s*=\s*"omnia_test''', + '''PASSWORD\s*=\s*dell\d+''' ] [[rules]] From e04ddc5fb9f49c40e8574e6348f7fe0452bd2e06 Mon Sep 17 00:00:00 2001 From: Abhishek S A Date: Mon, 29 Jun 2026 19:12:30 +0530 Subject: [PATCH 16/24] Feature/mono pr4 build and path fixes (#4795) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * PR4: monorepo path fixes — omnia.sh, containers, playbook paths, .gitignore BATS helpers * PR4: remove legacy test_pr4_validation.sh (replaced by BATS test) * feat(PR4): migrate containers to src/containers/ + fix .gitignore paths - Migrate container build scripts and Containerfiles to src/containers/ - Add build_images.sh, _common.sh, README.md for container build infra - Add per-container build.sh for: omnia_core, omnia_auth, omnia_build_stream, ldms, kafkapump, victoriapump, telemetry_receiver, image_builder - Replace Dockerfile with Containerfile naming convention - Fix .gitignore: stale build_stream/ paths updated to src/build_stream/ * Update omnia.sh Signed-off-by: Abhishek S A --------- Signed-off-by: Abhishek S A --- .gitignore | 22 +- src/containers/README.md | 234 +++ src/containers/_common.sh | 183 ++ src/containers/build_images.sh | 293 +++ .../image_builder/Containerfile.el10 | 100 + src/containers/image_builder/build.sh | 68 + src/containers/image_builder/requirements.txt | 9 + src/containers/kafkapump/build.sh | 29 + .../ldms/Containerfile.bld_n_run.ubuntu26.04 | 132 ++ src/containers/ldms/build.sh | 17 + src/containers/ldms/configure.aggregator.sh | 26 + src/containers/omnia_auth/Containerfile | 23 + src/containers/omnia_auth/build.sh | 16 + .../omnia_build_stream/Containerfile | 144 ++ src/containers/omnia_build_stream/build.sh | 20 + .../omnia_build_stream/init_s3cfg.sh | 43 + .../omnia_build_stream/pyproject.toml | 36 + src/containers/omnia_build_stream/uv.lock | 1637 +++++++++++++++++ src/containers/omnia_core/Containerfile | 181 ++ src/containers/omnia_core/build.sh | 17 + src/containers/omnia_core/cert-copy.sh | 25 + src/containers/omnia_core/entrypoint.sh | 12 + src/containers/omnia_core/pyproject.toml | 43 + src/containers/omnia_core/uv.lock | 1549 ++++++++++++++++ src/containers/telemetry_receiver/build.sh | 28 + src/containers/victoriapump/build.sh | 29 + omnia.sh => src/main/omnia.sh | 68 +- .../tasks/push_example_catalogs.yml | 2 +- .../gitlab/roles/hosted_gitlab/vars/main.yml | 2 +- .../deploy_containers/auth/vars/main.yml | 6 +- .../build_stream/vars/main.yml | 5 +- .../playbooks/upgrade_build_stream.yml | 4 +- src/playbooks/utils/upgrade_checkup.yml | 2 +- 33 files changed, 4968 insertions(+), 37 deletions(-) create mode 100644 src/containers/README.md create mode 100644 src/containers/_common.sh create mode 100644 src/containers/build_images.sh create mode 100644 src/containers/image_builder/Containerfile.el10 create mode 100644 src/containers/image_builder/build.sh create mode 100644 src/containers/image_builder/requirements.txt create mode 100644 src/containers/kafkapump/build.sh create mode 100644 src/containers/ldms/Containerfile.bld_n_run.ubuntu26.04 create mode 100644 src/containers/ldms/build.sh create mode 100644 src/containers/ldms/configure.aggregator.sh create mode 100644 src/containers/omnia_auth/Containerfile create mode 100644 src/containers/omnia_auth/build.sh create mode 100644 src/containers/omnia_build_stream/Containerfile create mode 100644 src/containers/omnia_build_stream/build.sh create mode 100644 src/containers/omnia_build_stream/init_s3cfg.sh create mode 100644 src/containers/omnia_build_stream/pyproject.toml create mode 100644 src/containers/omnia_build_stream/uv.lock create mode 100644 src/containers/omnia_core/Containerfile create mode 100644 src/containers/omnia_core/build.sh create mode 100644 src/containers/omnia_core/cert-copy.sh create mode 100644 src/containers/omnia_core/entrypoint.sh create mode 100644 src/containers/omnia_core/pyproject.toml create mode 100644 src/containers/omnia_core/uv.lock create mode 100644 src/containers/telemetry_receiver/build.sh create mode 100644 src/containers/victoriapump/build.sh rename omnia.sh => src/main/omnia.sh (98%) mode change 100755 => 100644 diff --git a/.gitignore b/.gitignore index 116f89e651..74bdd9e246 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /docs/build/ **/__pycache__/ .venv +*.pyc # IDE .vscode/ @@ -9,8 +10,21 @@ # Documentation AGENTS.md +# BATS test helpers (installed locally via test/test_helper/install.sh) +test/test_helper/bats-support/ +test/test_helper/bats-assert/ + # BuildStream -build_stream/MagicMock/ -build_stream/pyproject.toml -build_stream/tests/demo/demo_client_credentials.json -build_stream/update_playbook_watcher.sh +src/build_stream/MagicMock/ +src/build_stream/pyproject.toml +src/build_stream/tests/demo/demo_client_credentials.json +src/build_stream/update_playbook_watcher.sh + +# RPM build artifacts +src/rpm_build/**/*.rpm +src/rpm_build/**/*.tar.gz +src/rpm_build/**/ovis-code/ + +# Container build artifacts +*.tar +*.img diff --git a/src/containers/README.md b/src/containers/README.md new file mode 100644 index 0000000000..a1b0e2b7fc --- /dev/null +++ b/src/containers/README.md @@ -0,0 +1,234 @@ +# Omnia Container Image Builder + +Build Omnia container images for deployment. + +## Quick Start + +Build the Omnia core container: + +```bash +./build_images.sh core core_tag=2.2 omnia_branch=v2.2.0.0 +``` + +The image will be available locally as `omnia_core:2.2`. + +--- + +## Prerequisites + +**Podman** must be installed. + +Install Podman: [podman.io/getting-started/installation](https://podman.io/getting-started/installation) + +*Note: Script supports Podman and Docker build tools (default: Podman)* + +--- + +## Directory Structure + +Each container has its own directory with a `build.sh` and a `Containerfile`: + +``` +src/containers/ +├── _common.sh # Shared utilities (colors, build function, summary) +├── build_images.sh # Wrapper script (CLI, dispatch, summary) +├── README.md # This file +├── omnia_core/ +│ ├── build.sh # build_omnia_core() +│ ├── Containerfile # Fedora 42, Python 3.13, Ansible, Go, Git LFS +│ ├── cert-copy.sh +│ ├── entrypoint.sh +│ ├── pyproject.toml +│ └── uv.lock +├── omnia_auth/ +│ ├── build.sh # build_omnia_auth() +│ └── Containerfile # Fedora 42, OpenLDAP +├── omnia_build_stream/ +│ ├── build.sh # build_omnia_build_stream() +│ ├── Containerfile # Fedora 42, FastAPI, uv, s3cmd +│ ├── init_s3cfg.sh +│ ├── pyproject.toml +│ └── uv.lock +├── ldms/ +│ ├── build.sh # build_ldms() +│ ├── Containerfile.bld_n_run.ubuntu26.04 # Multi-stage: OVIS LDMS builder + runner +│ └── configure.aggregator.sh +├── image_builder/ +│ ├── build.sh # build_image_builder() (clones OpenCHAMI) +│ ├── Containerfile.el10 # AlmaLinux 10, Buildah, Go, Python +│ └── requirements.txt +├── kafkapump/ +│ └── build.sh # build_kafkapump() (clones iDRAC Telemetry) +├── victoriapump/ +│ └── build.sh # build_victoriapump() (clones iDRAC Telemetry) +└── telemetry_receiver/ + └── build.sh # build_telemetry_receiver() (clones iDRAC Telemetry) +``` + +--- + +## Common Build Commands + +### Build Core Container + +```bash +# Build with specific Omnia tag (recommended) +./build_images.sh core omnia_branch=v2.2.0.0 + +# Build with specific Omnia branch and default tag +./build_images.sh core omnia_branch=main + +# Build with default settings (uses main branch and core tag 2.2) +./build_images.sh core +``` + +### Build OIM Group (Core + Auth + Image Builder) + +```bash +./build_images.sh oim omnia_branch=v2.2.0.0 +``` + +### Build ALL Containers + +```bash +./build_images.sh all omnia_branch=v2.2.0.0 +``` + +### Build Specific Combinations + +```bash +# Comma-separated list +./build_images.sh core,auth omnia_branch=v2.2.0.0 core_tag=2.2 auth_tag=1.1 + +# Build telemetry group +./build_images.sh telemetry + +# Build LDMS +./build_images.sh ldms ldms_tag=1.1 +``` + +--- + +## Available Containers + +| Container | CLI Name | Default Tag | Description | +|-----------|----------|-------------|-------------| +| omnia_core | `core` | 2.2 | Core Omnia container (Ansible, Python, SSH) | +| omnia_auth | `auth` | 1.1 | OpenLDAP authentication service | +| omnia_build_stream | `build-stream` | 1.1 | FastAPI build automation service | +| ldms | `ldms` | 1.1 | OVIS LDMS monitoring (multi-stage Ubuntu build) | +| image_builder | `image-builder` | 1.1 | OpenCHAMI image builder (AlmaLinux 10, Buildah) | +| kafkapump | `kafkapump` | 1.3 | iDRAC telemetry → Kafka | +| victoriapump | `victoriapump` | 1.3 | iDRAC telemetry → VictoriaMetrics | +| telemetry_receiver | `telemetry-receiver` | 1.3 | iDRAC telemetry collector | + +### Build Groups + +| Group | Containers | +|-------|-----------| +| `oim` | core, auth, image-builder (default if no arg) | +| `all` | core, auth, ldms, kafkapump, victoriapump, telemetry-receiver, image-builder | +| `pipeline` | core, auth, ldms, kafkapump, victoriapump, telemetry-receiver, image-builder | +| `telemetry` | kafkapump, victoriapump, telemetry-receiver | + +--- + +## Parameters Reference + +### Common (valid for all containers) + +| Parameter | Values | Default | Description | +|-----------|--------|---------|-------------| +| `build_tool` | `podman`, `docker` | `podman` | Container build tool | +| `build_action` | `load`, `push` | `load` | Load locally or push to registry | + +### Container-specific tags + +| Parameter | Default | Container | +|-----------|---------|-----------| +| `core_tag` | `2.2` | omnia_core | +| `auth_tag` | `1.1` | omnia_auth | +| `build_stream_tag` | `1.1` | omnia_build_stream | +| `ldms_tag` | `1.1` | ldms | +| `image_builder_tag` | `1.1` | image_builder | +| `kafkapump_tag` | `1.3` | kafkapump | +| `victoriapump_tag` | `1.3` | victoriapump | +| `telemetry_receiver_tag` | `1.3` | telemetry_receiver | +| `omnia_branch` | `main` | omnia_core (branch/tag to clone) | + +### Push to Registry + +```bash +# Requires Docker (Podman push not supported via this script) +./build_images.sh core core_tag=2.2 omnia_branch=v2.2.0.0 build_tool=docker build_action=push +``` + +--- + +## Parameter Validation + +The script validates parameters and shows context-specific errors: + +```bash +# Invalid parameter +./build_images.sh core invalid_param=value +# Error: Invalid parameter(s): invalid_param +# Valid parameters for 'core': build_tool build_action core_tag omnia_branch + +# Wrong container-specific parameter +./build_images.sh core auth_tag=1.0 +# Error: Parameter 'auth_tag' is not valid for container 'core' +``` + +--- + +## Docker vs Podman + +**Podman (default):** +- No daemon required +- Rootless by default + +**Docker:** +- Required for `build_action=push` +- Requires buildx for multi-platform builds + +### Docker Setup + +```bash +sudo systemctl start docker +sudo systemctl enable docker +docker buildx create --name mybuilder --driver docker-container --use +docker buildx inspect --bootstrap +``` + +--- + +## Updating Python Packages + +For containers using uv (omnia_core, omnia_build_stream): + +1. **Install uv**: `pip install uv` +2. **Update pyproject.toml**: Navigate to the container folder and update +3. **Update the lock file**: Run `uv lock` from the same directory + +--- + +## Troubleshooting + +**Issue:** Warning about default branch +``` +⚠️ Warning: omnia_branch not specified, using default branch: main +``` +**Solution:** Always specify `omnia_branch` for production builds. + +**Issue:** Build fails +**Solution:** Ensure Podman/Docker is running and you have internet access to pull base images. + +**Issue:** Permission errors with Podman +**Solution:** Run as non-root user or configure subuid/subgid mappings. + +--- + +## Support + +For issues or questions, refer to the [Omnia documentation](https://omnia.readthedocs.io/en/latest/). diff --git a/src/containers/_common.sh b/src/containers/_common.sh new file mode 100644 index 0000000000..6daaa0cc82 --- /dev/null +++ b/src/containers/_common.sh @@ -0,0 +1,183 @@ +#!/bin/bash +# ============================================================================= +# _common.sh — Shared utilities for container build scripts +# ============================================================================= +# Sourced by build_images.sh and per-container build.sh scripts. +# Provides: color codes, status arrays, print_build_info(), container_build() +# ============================================================================= + +# ── Color codes ── +RED='\033[0;31m' +GREEN='\033[0;32m' +BLUE='\033[34m' +YELLOW='\033[1;33m' +MAGENTA='\033[0;35m' +NC='\033[0m' # No Color + +# ── Build status tracking ── +SUCCESSFUL_BUILDS=() +FAILED_BUILDS=() +LOADED_IMAGES=() +PUSHED_IMAGES=() + +# ── Resolve paths ── +CONTAINERS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${CONTAINERS_DIR}/../.." && pwd)" + +# ── Helper: print build info banner ── +print_build_info() { + local image_name="$1" + local image_tag="$2" + local extra_info="${3:-}" + + echo "Building ${image_name} image..." + echo -e "Using Build Tool: ${YELLOW}${BUILD_TOOL}${NC}" + echo -e "Using Build Action: ${YELLOW}${BUILD_ACTION}${NC}" + echo -e "Using Tag: ${YELLOW}${image_tag}${NC}" + [ -n "$extra_info" ] && echo -e "$extra_info" + if [ "$BUILD_TOOL" = "docker" ] && [ "$BUILD_ACTION" = "push" ]; then + echo -e "Registry: ${YELLOW}${OMNIA_DOCKER_REGISTERY}${NC}" + echo -e "Full Image Name: ${YELLOW}${OMNIA_DOCKER_REGISTERY}/${image_name}:${image_tag}${NC}" + fi + echo -e "${RED}---------------------------------${NC}" +} + +# ── Helper: generic container build ── +# Usage: container_build [extra_args] [extra_flags] [platform] +# +# Args: +# image_name — e.g. "omnia_core", "kafkapump" +# image_tag — e.g. "2.2", "1.3" +# build_dir — absolute path to build context directory +# containerfile — Containerfile path (relative to build_dir or absolute) +# extra_args — extra build args, e.g. "--build-arg CMD=kafkapump" (optional) +# extra_flags — extra flags, e.g. "--network=host" (optional) +# platform — platform override, default "linux/amd64" (optional) +container_build() { + local image_name="$1" + local image_tag="$2" + local build_dir="$3" + local containerfile="$4" + local extra_args="${5:-}" + local extra_flags="${6:-}" + local platform="${7:-linux/amd64}" + + cd "$build_dir" || exit 1 + + local BUILD_RESULT + local IMAGE_DESTINATION + + if [ "$BUILD_TOOL" = "podman" ]; then + # shellcheck disable=SC2086 + podman build ${extra_args} -t "${image_name}:${image_tag}" -f "${containerfile}" ${extra_flags} . + BUILD_RESULT=$? + IMAGE_DESTINATION="Local (Podman): ${image_name}:${image_tag}" + elif [ "$BUILD_TOOL" = "docker" ]; then + if [ "$BUILD_ACTION" = "load" ]; then + # shellcheck disable=SC2086 + docker buildx build --no-cache ${extra_args} -t "${image_name}:${image_tag}" \ + --file "${containerfile}" --platform "${platform}" ${extra_flags} --load . + BUILD_RESULT=$? + IMAGE_DESTINATION="Local (Docker): ${image_name}:${image_tag}" + elif [ "$BUILD_ACTION" = "push" ]; then + # shellcheck disable=SC2086 + docker buildx build --no-cache ${extra_args} \ + -t "${OMNIA_DOCKER_REGISTERY}/${image_name}:${image_tag}" \ + --file "${containerfile}" --platform "${platform}" \ + --provenance=true --sbom=true ${extra_flags} --push . + BUILD_RESULT=$? + IMAGE_DESTINATION="Registry: ${OMNIA_DOCKER_REGISTERY}/${image_name}:${image_tag}" + else + echo -e "${RED}Invalid BUILD_ACTION. Please enter 'load' or 'push'.${NC}" + exit 1 + fi + else + echo -e "${RED}Invalid BUILD_TOOL. Please enter 'podman' or 'docker'.${NC}" + exit 1 + fi + + if [ $BUILD_RESULT -eq 0 ]; then + echo -e "${GREEN}${image_name} image built successfully.${NC}" + SUCCESSFUL_BUILDS+=("${image_name}") + if [ "$BUILD_TOOL" = "docker" ] && [ "$BUILD_ACTION" = "push" ]; then + PUSHED_IMAGES+=("$IMAGE_DESTINATION") + else + LOADED_IMAGES+=("$IMAGE_DESTINATION") + fi + else + echo -e "${RED}${image_name} image build failed.${NC}" + FAILED_BUILDS+=("${image_name}") + fi + + cd - > /dev/null || exit 1 +} + +# ── Helper: clone a git repo at a specific commit ── +# Usage: clone_repo_at_commit +clone_repo_at_commit() { + local repo_url="$1" + local clone_dir="$2" + local commit="$3" + + if [ ! -d "$clone_dir" ]; then + echo -e "${YELLOW}Cloning ${repo_url} at commit ${commit}...${NC}" + git clone "$repo_url" "$clone_dir" + cd "$clone_dir" || exit 1 + git fetch --all + git checkout "$commit" + cd - > /dev/null || exit 1 + echo -e "${GREEN}Repository cloned and checked out to ${commit}.${NC}" + else + echo -e "${YELLOW}$(basename "$clone_dir") already cloned.${NC}" + fi +} + +# ── Helper: print build summary ── +print_build_summary() { + echo -e "\n${BLUE}=== BUILD SUMMARY ===${NC}" + if [ ${#SUCCESSFUL_BUILDS[@]} -ne 0 ]; then + echo -e "${GREEN}Successfully built containers:${YELLOW} ${SUCCESSFUL_BUILDS[*]} ${NC}" + + if [ ${#LOADED_IMAGES[@]} -ne 0 ]; then + echo -e "\n${BLUE}📦 Images loaded locally:${NC}" + for image in "${LOADED_IMAGES[@]}"; do + echo -e " ${GREEN}✓${NC} ${image}" + done + fi + + if [ ${#PUSHED_IMAGES[@]} -ne 0 ]; then + echo -e "\n${BLUE}🚀 Images pushed to registry:${NC}" + for image in "${PUSHED_IMAGES[@]}"; do + echo -e " ${GREEN}✓${NC} ${image}" + done + echo -e "\n${YELLOW}Registry Images Available:${NC}" + echo -e "You can now pull these images from the registry using:" + for image in "${PUSHED_IMAGES[@]}"; do + registry_image=$(echo "$image" | sed 's/Registry: //') + echo -e " ${BLUE}docker pull ${registry_image}${NC}" + done + fi + + if [[ " ${SUCCESSFUL_BUILDS[*]} " =~ " omnia_core " ]]; then + echo -e "\n${GREEN}🎉 omnia_core image built successfully!${NC}" + echo -e "${YELLOW}Next step:${NC}" + echo -e "Execute the script to create the core container and configure passwordless SSH:" + echo -e " ${BLUE}./omnia.sh --install${NC}" + fi + fi + + if [ ${#FAILED_BUILDS[@]} -ne 0 ]; then + echo -e "\n${RED}❌ Failed builds:${MAGENTA} ${FAILED_BUILDS[*]} ${NC}" + exit 1 + else + if [ ${#SUCCESSFUL_BUILDS[@]} -ne 0 ]; then + echo -e "\n${GREEN}🎉 All requested images built successfully!${NC}" + total_local=${#LOADED_IMAGES[@]} + total_pushed=${#PUSHED_IMAGES[@]} + echo -e "\n${BLUE}📊 Build Statistics:${NC}" + echo -e " • Total containers built: ${YELLOW}${#SUCCESSFUL_BUILDS[@]}${NC}" + echo -e " • Images loaded locally: ${YELLOW}${total_local}${NC}" + echo -e " • Images pushed to registry: ${YELLOW}${total_pushed}${NC}" + fi + fi +} diff --git a/src/containers/build_images.sh b/src/containers/build_images.sh new file mode 100644 index 0000000000..d6f579b104 --- /dev/null +++ b/src/containers/build_images.sh @@ -0,0 +1,293 @@ +#!/bin/bash +# ============================================================================= +# build_images.sh — Container Image Build Wrapper +# ============================================================================= +# Entry point for building all Omnia container images. +# Delegates to per-container build.sh scripts in each subdirectory. +# +# Usage: +# ./build_images.sh [container] [param=value ...] +# ./build_images.sh oim # core + auth + image-builder (default) +# ./build_images.sh all # all containers +# ./build_images.sh core build_tool=docker # single container +# ./build_images.sh core,auth # comma-separated +# +# Available containers: +# oim, all, core, auth, ldms, pipeline, telemetry, +# kafkapump, victoriapump, telemetry-receiver, image-builder, build-stream +# ============================================================================= + +# ── Source shared utilities ── +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck source=_common.sh +source "${SCRIPT_DIR}/_common.sh" + +# ── Source per-container build scripts ── +source "${SCRIPT_DIR}/omnia_core/build.sh" +source "${SCRIPT_DIR}/omnia_auth/build.sh" +source "${SCRIPT_DIR}/omnia_build_stream/build.sh" +source "${SCRIPT_DIR}/ldms/build.sh" +source "${SCRIPT_DIR}/kafkapump/build.sh" +source "${SCRIPT_DIR}/victoriapump/build.sh" +source "${SCRIPT_DIR}/telemetry_receiver/build.sh" +source "${SCRIPT_DIR}/image_builder/build.sh" + +# ── Install git if not present ── +echo -e "${BLUE}Installing git...${NC}" +dnf install -y git +echo -e "${GREEN}Git installation complete.${NC}\n" + +# ============================================================================= +# Default parameterized values +# ============================================================================= +BUILD_TOOL="podman" +BUILD_ACTION="load" +OMNIA_DOCKER_REGISTERY="docker.io/dellhpcomniaaisolution" + +# Default image tags for each container (can be overridden individually) +CORE_TAG="2.2" +AUTH_TAG="1.1" +LDMS_TAG="1.1" +KAFKAPUMP_TAG="1.3" +VICTORIAPUMP_TAG="1.3" +TELEMETRY_RECEIVER_TAG="1.3" +IMAGE_BUILDER_TAG="1.1" +BUILD_STREAM_TAG="1.1" + +# Valid parameter names +VALID_PARAMS=("build_tool" "build_action" "core_tag" "auth_tag" "ldms_tag" "kafkapump_tag" "victoriapump_tag" "telemetry_receiver_tag" "image_builder_tag" "build_stream_tag") + +VALID_CONTAINERS=("all" "core" "auth" "ldms" "pipeline" "telemetry" "kafkapump" "victoriapump" "telemetry-receiver" "image-builder" "build-stream") + +# Common parameters valid for all container types +COMMON_PARAMS=("build_tool" "build_action") + +# Store container-specific parameters for later validation +CONTAINER_PARAMS=() +INVALID_PARAMS=() + +# ============================================================================= +# Parse command line arguments — first pass to collect parameters +# ============================================================================= +for arg in "$@"; do + if [[ "$arg" != *"="* ]]; then + continue + fi + + param_name="${arg%%=*}" + + if [[ ! " ${VALID_PARAMS[@]} " =~ " ${param_name} " ]]; then + INVALID_PARAMS+=("$param_name") + fi + + CONTAINER_PARAMS+=("$param_name") + + if [[ "$arg" =~ ^build_tool=.*$ ]]; then + BUILD_TOOL="${arg#build_tool=}" + elif [[ "$arg" =~ ^build_action=.*$ ]]; then + BUILD_ACTION="${arg#build_action=}" + elif [[ "$arg" =~ ^core_tag=.*$ ]]; then + CORE_TAG="${arg#core_tag=}" + elif [[ "$arg" =~ ^auth_tag=.*$ ]]; then + AUTH_TAG="${arg#auth_tag=}" + elif [[ "$arg" =~ ^ldms_tag=.*$ ]]; then + LDMS_TAG="${arg#ldms_tag=}" + elif [[ "$arg" =~ ^kafkapump_tag=.*$ ]]; then + KAFKAPUMP_TAG="${arg#kafkapump_tag=}" + elif [[ "$arg" =~ ^victoriapump_tag=.*$ ]]; then + VICTORIAPUMP_TAG="${arg#victoriapump_tag=}" + elif [[ "$arg" =~ ^telemetry_receiver_tag=.*$ ]]; then + TELEMETRY_RECEIVER_TAG="${arg#telemetry_receiver_tag=}" + elif [[ "$arg" =~ ^image_builder_tag=.*$ ]]; then + IMAGE_BUILDER_TAG="${arg#image_builder_tag=}" + elif [[ "$arg" =~ ^build_stream_tag=.*$ ]]; then + BUILD_STREAM_TAG="${arg#build_stream_tag=}" + fi +done + +# ============================================================================= +# Validate inputs +# ============================================================================= +if [[ "$BUILD_TOOL" != "podman" && "$BUILD_TOOL" != "docker" ]]; then + echo -e "${RED}Error: Invalid build_tool value '${BUILD_TOOL}'${NC}" + echo -e "${YELLOW}Valid values are: podman, docker${NC}" + exit 1 +fi + +if [[ "$BUILD_ACTION" != "load" && "$BUILD_ACTION" != "push" ]]; then + echo -e "${RED}Error: Invalid build_action value '${BUILD_ACTION}'${NC}" + echo -e "${YELLOW}Valid values are: load, push${NC}" + exit 1 +fi + +if [[ "$BUILD_ACTION" == "push" && "$BUILD_TOOL" != "docker" ]]; then + echo -e "${RED}Error: build_action=push requires build_tool=docker${NC}" + echo -e "${YELLOW}Please set build_tool=docker when using build_action=push${NC}" + exit 1 +fi + +# ============================================================================= +# Validate container-specific parameters +# ============================================================================= +validate_container_params() { + local container=$1 + local allowed_params=("${@:2}") + + for param in "${CONTAINER_PARAMS[@]}"; do + if [[ " ${COMMON_PARAMS[@]} " =~ " ${param} " ]]; then + continue + fi + if [[ ! " ${allowed_params[@]} " =~ " ${param} " ]]; then + echo -e "${RED}Error: Parameter '${param}' is not valid for container '${container}'${NC}" + echo -e "${YELLOW}Valid parameters for '${container}': ${COMMON_PARAMS[*]} ${allowed_params[*]}${NC}" + exit 1 + fi + done +} + +# ============================================================================= +# Dispatch — select which containers to build +# ============================================================================= +CONTAINER_ARG="${1:-oim}" + +case "$CONTAINER_ARG" in + oim) + ALLOWED_TAG_PARAMS=("core_tag" "auth_tag" "image_builder_tag") + if [ ${#INVALID_PARAMS[@]} -ne 0 ]; then + echo -e "${RED}Error: Invalid parameter(s): ${INVALID_PARAMS[*]}${NC}" + echo -e "${YELLOW}Valid parameters for 'oim': ${COMMON_PARAMS[*]} ${ALLOWED_TAG_PARAMS[*]}${NC}" + exit 1 + fi + validate_container_params "oim" "${ALLOWED_TAG_PARAMS[@]}" + build_omnia_core + build_omnia_auth + build_image_builder + ;; + + all) + ALLOWED_TAG_PARAMS=("core_tag" "auth_tag" "ldms_tag" "kafkapump_tag" "victoriapump_tag" "telemetry_receiver_tag" "image_builder_tag") + if [ ${#INVALID_PARAMS[@]} -ne 0 ]; then + echo -e "${RED}Error: Invalid parameter(s): ${INVALID_PARAMS[*]}${NC}" + echo -e "${YELLOW}Valid parameters for 'all': ${COMMON_PARAMS[*]} ${ALLOWED_TAG_PARAMS[*]}${NC}" + exit 1 + fi + validate_container_params "all" "${ALLOWED_TAG_PARAMS[@]}" + build_omnia_core + build_omnia_auth + build_ldms + build_kafkapump + build_victoriapump + build_telemetry_receiver + build_image_builder + ;; + + pipeline) + ALLOWED_TAG_PARAMS=("core_tag" "auth_tag" "ldms_tag" "kafkapump_tag" "victoriapump_tag" "telemetry_receiver_tag" "image_builder_tag") + if [ ${#INVALID_PARAMS[@]} -ne 0 ]; then + echo -e "${RED}Error: Invalid parameter(s): ${INVALID_PARAMS[*]}${NC}" + echo -e "${YELLOW}Valid parameters for 'pipeline': ${COMMON_PARAMS[*]} ${ALLOWED_TAG_PARAMS[*]}${NC}" + exit 1 + fi + validate_container_params "pipeline" "${ALLOWED_TAG_PARAMS[@]}" + build_omnia_core + build_omnia_auth + build_ldms + build_kafkapump + build_victoriapump + build_telemetry_receiver + build_image_builder + ;; + + telemetry) + ALLOWED_TAG_PARAMS=("kafkapump_tag" "victoriapump_tag" "telemetry_receiver_tag") + if [ ${#INVALID_PARAMS[@]} -ne 0 ]; then + echo -e "${RED}Error: Invalid parameter(s): ${INVALID_PARAMS[*]}${NC}" + echo -e "${YELLOW}Valid parameters for 'telemetry': ${COMMON_PARAMS[*]} ${ALLOWED_TAG_PARAMS[*]}${NC}" + exit 1 + fi + validate_container_params "telemetry" "${ALLOWED_TAG_PARAMS[@]}" + build_kafkapump + build_victoriapump + build_telemetry_receiver + ;; + + image-builder) + ALLOWED_TAG_PARAMS=("image_builder_tag") + if [ ${#INVALID_PARAMS[@]} -ne 0 ]; then + echo -e "${RED}Error: Invalid parameter(s): ${INVALID_PARAMS[*]}${NC}" + echo -e "${YELLOW}Valid parameters for 'image-builder': ${COMMON_PARAMS[*]} ${ALLOWED_TAG_PARAMS[*]}${NC}" + exit 1 + fi + validate_container_params "image-builder" "${ALLOWED_TAG_PARAMS[@]}" + build_image_builder + ;; + + build-stream) + ALLOWED_TAG_PARAMS=("build_stream_tag") + if [ ${#INVALID_PARAMS[@]} -ne 0 ]; then + echo -e "${RED}Error: Invalid parameter(s): ${INVALID_PARAMS[*]}${NC}" + echo -e "${YELLOW}Valid parameters for 'build-stream': ${COMMON_PARAMS[*]} ${ALLOWED_TAG_PARAMS[*]}${NC}" + exit 1 + fi + validate_container_params "build-stream" "${ALLOWED_TAG_PARAMS[@]}" + build_omnia_build_stream + ;; + + *) + # Handle individual containers or comma-separated lists + IFS=',' read -r -a containers <<< "$CONTAINER_ARG" + + ALLOWED_TAG_PARAMS=() + BUILDING_CORE=false + + for container in "${containers[@]}"; do + case "$container" in + all) ALLOWED_TAG_PARAMS+=("core_tag" "auth_tag" "ldms_tag" "kafkapump_tag" "victoriapump_tag" "telemetry_receiver_tag"); BUILDING_CORE=true ;; + oim) ALLOWED_TAG_PARAMS+=("core_tag" "auth_tag" "image_builder_tag"); BUILDING_CORE=true ;; + core) ALLOWED_TAG_PARAMS+=("core_tag"); BUILDING_CORE=true ;; + auth) ALLOWED_TAG_PARAMS+=("auth_tag") ;; + ldms) ALLOWED_TAG_PARAMS+=("ldms_tag") ;; + pipeline) ALLOWED_TAG_PARAMS+=("core_tag" "auth_tag" "ldms_tag" "kafkapump_tag" "victoriapump_tag" "telemetry_receiver_tag"); BUILDING_CORE=true ;; + telemetry) ALLOWED_TAG_PARAMS+=("kafkapump_tag" "victoriapump_tag" "telemetry_receiver_tag") ;; + kafkapump) ALLOWED_TAG_PARAMS+=("kafkapump_tag") ;; + victoriapump) ALLOWED_TAG_PARAMS+=("victoriapump_tag") ;; + telemetry-receiver) ALLOWED_TAG_PARAMS+=("telemetry_receiver_tag") ;; + image-builder) ALLOWED_TAG_PARAMS+=("image_builder_tag") ;; + build-stream) ALLOWED_TAG_PARAMS+=("build_stream_tag") ;; + *) + echo -e "${RED}Invalid container: $container. Available options: oim, all, core, auth, ldms, pipeline, telemetry, kafkapump, victoriapump, telemetry-receiver, image-builder, build-stream.${NC}" + exit 1 + ;; + esac + done + + if [ ${#INVALID_PARAMS[@]} -ne 0 ]; then + echo -e "${RED}Error: Invalid parameter(s): ${INVALID_PARAMS[*]}${NC}" + echo -e "${YELLOW}Valid parameters for '$1': ${COMMON_PARAMS[*]} ${ALLOWED_TAG_PARAMS[*]}${NC}" + exit 1 + fi + validate_container_params "$1" "${ALLOWED_TAG_PARAMS[@]}" + + for container in "${containers[@]}"; do + case "$container" in + all) build_omnia_core; build_omnia_auth; build_ldms; build_kafkapump; build_victoriapump; build_telemetry_receiver; build_omnia_build_stream ;; + oim) build_omnia_core; build_omnia_auth; build_image_builder; build_omnia_build_stream ;; + core) build_omnia_core ;; + auth) build_omnia_auth ;; + ldms) build_ldms ;; + pipeline) build_omnia_core; build_omnia_auth; build_ldms; build_kafkapump; build_victoriapump; build_telemetry_receiver; build_omnia_build_stream ;; + telemetry) build_kafkapump; build_victoriapump; build_telemetry_receiver ;; + kafkapump) build_kafkapump ;; + victoriapump) build_victoriapump ;; + telemetry-receiver) build_telemetry_receiver ;; + image-builder) build_image_builder ;; + build-stream) build_omnia_build_stream ;; + esac + done + ;; +esac + +# ============================================================================= +# Build Summary +# ============================================================================= +print_build_summary diff --git a/src/containers/image_builder/Containerfile.el10 b/src/containers/image_builder/Containerfile.el10 new file mode 100644 index 0000000000..f53b94ac8e --- /dev/null +++ b/src/containers/image_builder/Containerfile.el10 @@ -0,0 +1,100 @@ +FROM docker.io/library/almalinux:10.0 + +ARG BUILDAH_VERSION=1.42.2 +ARG GO_VERSION=1.25.11 + +RUN dnf clean all && \ + dnf update -y --releasever=10.0 --nogpgcheck && \ + dnf install -y dnf-plugins-core epel-release && \ + dnf config-manager -y --set-enabled crb && \ + dnf clean all + +RUN dnf install -y \ + bash \ + python3.12 \ + fuse-overlayfs \ + tar \ + squashfs-tools \ + make \ + gcc \ + glib2-devel \ + gpgme-devel \ + libseccomp-devel \ + libselinux-devel \ + device-mapper-devel \ + btrfs-progs-devel \ + git \ + wget + +# Determine architecture and download matching Go tarball +RUN ARCH=$(uname -m) && \ + if [ "$ARCH" = "x86_64" ]; then \ + GOARCH=amd64; \ + elif [ "$ARCH" = "aarch64" ]; then \ + GOARCH=arm64; \ + else \ + echo "Unsupported architecture: $ARCH" && exit 1; \ + fi && \ + curl -LO https://go.dev/dl/go${GO_VERSION}.linux-${GOARCH}.tar.gz && \ + tar -C /usr/local -xzf go${GO_VERSION}.linux-${GOARCH}.tar.gz && \ + rm go${GO_VERSION}.linux-${GOARCH}.tar.gz + +ENV PATH="/usr/local/go/bin:${PATH}" + +RUN git clone --branch v${BUILDAH_VERSION} --depth 1 https://github.com/containers/buildah.git /tmp/buildah && \ + cd /tmp/buildah && \ + go get github.com/sigstore/fulcio@v1.8.5 && \ + go get golang.org/x/crypto@v0.52.0 && \ + go get golang.org/x/net@v0.55.0 && \ + go get golang.org/x/sys@v0.45.0 && \ + go get google.golang.org/grpc@v1.79.3 && \ + go get go.opentelemetry.io/otel@v1.41.0 && \ + go get github.com/go-jose/go-jose/v4@v4.1.4 && \ + go get github.com/containernetworking/plugins@v1.9.0 && \ + go mod tidy && \ + go get github.com/sigstore/fulcio@v1.8.5 && \ + go get github.com/sigstore/sigstore@v1.10.4 && \ + go get golang.org/x/crypto@v0.52.0 && \ + go get golang.org/x/net@v0.55.0 && \ + go mod vendor && \ + make buildah && \ + cp bin/buildah /usr/bin/buildah && \ + rm -rf /tmp/buildah /usr/local/go /root/go && \ + dnf remove -y --noautoremove make gcc git wget glib2-devel gpgme-devel libseccomp-devel libselinux-devel device-mapper-devel btrfs-progs-devel && \ + dnf clean all && \ + rm -rf /var/cache/dnf + +RUN dnf install -y \ + containers-common \ + crun \ + slirp4netns \ + fuse-overlayfs + +COPY requirements.txt / +RUN python3.12 -m ensurepip && \ + python3.12 -m pip install --upgrade 'pip>=26.1.0' && \ + python3.12 -m pip install -r /requirements.txt + +COPY src/ /usr/local/bin/ +RUN chmod -R 0755 /usr/local/bin/ + +# Allow non-root to run buildah commands +RUN setcap cap_setuid=ep "$(command -v newuidmap)" && \ + setcap cap_setgid=ep "$(command -v newgidmap)" &&\ + chmod 0755 "$(command -v newuidmap)" && \ + chmod 0755 "$(command -v newgidmap)" && \ + rpm --restore shadow-utils && \ + echo "builder:2000:50000" > /etc/subuid && \ + echo "builder:2000:50000" > /etc/subgid + +# Create local user for rootless image builds +RUN useradd --uid 1002 builder && \ + chown -R builder /home/builder + +# Make builder the default user when running container +USER builder +WORKDIR /home/builder + +ENV BUILDAH_ISOLATION=chroot + +ENTRYPOINT ["/usr/bin/buildah", "unshare"] diff --git a/src/containers/image_builder/build.sh b/src/containers/image_builder/build.sh new file mode 100644 index 0000000000..cff5722aaf --- /dev/null +++ b/src/containers/image_builder/build.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# ============================================================================= +# image_builder — Container Build Script (OpenCHAMI) +# ============================================================================= +# Sourced by build_images.sh. Defines build_image_builder(). +# Requires: OpenCHAMI/image-builder repo clone + Containerfile.el10 overlay +# ============================================================================= + +# Image Builder repo settings +IMAGE_BUILDER_COMMIT="70702bd3d76d066d18441bc0b2fbb89020544d8f" +IMAGE_BUILDER_CLONE_DIR=".image-builder-tools" +IMAGE_BUILDER_DIR="${CONTAINERS_DIR}/image_builder" + +# Clone and configure the image-builder repo +clone_image_builder_repo() { + if [ ! -d "$IMAGE_BUILDER_CLONE_DIR" ]; then + echo -e "${YELLOW}Cloning OpenCHAMI/image-builder at commit ${IMAGE_BUILDER_COMMIT}...${NC}" + git clone "https://github.com/OpenCHAMI/image-builder.git" "$IMAGE_BUILDER_CLONE_DIR" + cd "$IMAGE_BUILDER_CLONE_DIR" || exit 1 + git fetch --all + git checkout "$IMAGE_BUILDER_COMMIT" + + # Copy Containerfile.el10 from image_builder/ + echo -e "${YELLOW}Copying Containerfile.el10 to dockerfiles/dnf/...${NC}" + cp "${IMAGE_BUILDER_DIR}/Containerfile.el10" "dockerfiles/dnf/Containerfile.el10" + + # Copy requirements.txt from image_builder/ + echo -e "${YELLOW}Copying requirements.txt from image_builder/...${NC}" + cp "${IMAGE_BUILDER_DIR}/requirements.txt" "requirements.txt" + + # Modify utils.py to remove Setting from import + echo -e "${YELLOW}Modifying src/utils.py import statement...${NC}" + sed -i 's/from ansible.config.manager import ConfigManager, Setting/from ansible.config.manager import ConfigManager/' src/utils.py + + cd - > /dev/null || exit 1 + echo -e "${GREEN}Repository cloned and configured at ${IMAGE_BUILDER_COMMIT}.${NC}" + else + echo -e "${YELLOW}OpenCHAMI/image-builder already cloned.${NC}" + fi +} + +build_image_builder() { + local detected_platform="linux/amd64" + + if [ "$BUILD_TOOL" = "docker" ]; then + # Dynamic platform detection for image-builder (only when using docker) + detected_platform="$(docker info --format '{{.OSType}}/{{.Architecture}}')" || { + echo -e "${RED}Error: Failed to detect platform. Docker info command failed.${NC}" + echo -e "${YELLOW}Please ensure Docker is installed and running.${NC}" + exit 1 + } + fi + + print_build_info "image-build-el10" "${IMAGE_BUILDER_TAG}" \ + "Using Image Builder Commit: ${YELLOW}${IMAGE_BUILDER_COMMIT}${NC}\nUsing Detected Platform: ${YELLOW}${detected_platform}${NC}" + + # Clone repo if needed + clone_image_builder_repo + + container_build \ + "image-build-el10" \ + "${IMAGE_BUILDER_TAG}" \ + "${IMAGE_BUILDER_CLONE_DIR}" \ + "dockerfiles/dnf/Containerfile.el10" \ + "" \ + "" \ + "${detected_platform}" +} diff --git a/src/containers/image_builder/requirements.txt b/src/containers/image_builder/requirements.txt new file mode 100644 index 0000000000..e77211d12c --- /dev/null +++ b/src/containers/image_builder/requirements.txt @@ -0,0 +1,9 @@ +ansible-core==2.20.7 +boto3 +cryptography>=48.0.0 +dnspython +idna>=3.15 +jinja2_ansible_filters +PyYAML +requests>=2.33.0 +urllib3>=2.7.0 diff --git a/src/containers/kafkapump/build.sh b/src/containers/kafkapump/build.sh new file mode 100644 index 0000000000..4d01edc9e0 --- /dev/null +++ b/src/containers/kafkapump/build.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# ============================================================================= +# kafkapump — Container Build Script (iDRAC Telemetry) +# ============================================================================= +# Sourced by build_images.sh. Defines build_kafkapump(). +# Requires: iDRAC-Telemetry-Reference-Tools repo clone +# ============================================================================= + +# iDRAC Telemetry repo settings +IDRAC_TELEMETRY_COMMIT="cfa9102a900a76afe9de578d080e98f685625814" +IDRAC_TELEMETRY_CLONE_DIR=".idrac-telemetry-tools" + +build_kafkapump() { + print_build_info "kafkapump" "${KAFKAPUMP_TAG}" \ + "Using iDRAC Commit: ${YELLOW}${IDRAC_TELEMETRY_COMMIT}${NC}" + + # Clone repo if needed + clone_repo_at_commit \ + "https://github.com/dell/iDRAC-Telemetry-Reference-Tools.git" \ + "${IDRAC_TELEMETRY_CLONE_DIR}" \ + "${IDRAC_TELEMETRY_COMMIT}" + + container_build \ + "kafkapump" \ + "${KAFKAPUMP_TAG}" \ + "${IDRAC_TELEMETRY_CLONE_DIR}" \ + "docker-compose-files/Dockerfile" \ + "--build-arg CMD=kafkapump" +} diff --git a/src/containers/ldms/Containerfile.bld_n_run.ubuntu26.04 b/src/containers/ldms/Containerfile.bld_n_run.ubuntu26.04 new file mode 100644 index 0000000000..761d66db40 --- /dev/null +++ b/src/containers/ldms/Containerfile.bld_n_run.ubuntu26.04 @@ -0,0 +1,132 @@ +# syntax=docker/dockerfile:1 +# ============================================================================ +# OVIS LDMS builder + runner — Ubuntu 26.04 +# Multi-stage: build libserdes & OVIS from source, then copy into slim runner +# ============================================================================ + +# ── Stage 1: Builder ─────────────────────────────────────────────────────── +FROM ubuntu:26.04 AS ldms_builder + +ARG OVIS_TAG="v4.5.2" +ENV TAG=${OVIS_TAG} +ARG OVIS_REPO="https://github.com/ovis-hpc/ovis.git" +ENV REPO=${OVIS_REPO} +ENV PYTHONPATH="/opt/ovis-ldms/lib/python3.14/site-packages" +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt-get upgrade -y \ + && apt-get install -y --no-install-recommends \ + automake autotools-dev bison build-essential bzip2 ca-certificates \ + curl dnsutils doxygen flex gcc gettext git gzip hostname \ + libibverbs-dev libjansson-dev libavro-dev libavro24 librdkafka-dev \ + python3-pyverbs librdmacm-dev libcurl4-openssl-dev iputils-ping \ + libmunge-dev jq less libpapi-dev libpfm4 libpfm4-dev libssl3t64 \ + libssl-dev libtool m4 make openssl papi-tools pkg-config \ + python3 python3-dev python3-pip python3-docutils traceroute tree vim \ + && rm -rf /var/lib/apt/lists/* + +# Upgrade pip to fix CVE-2025-8869 and remove vulnerable Debian package metadata +RUN python3 -m pip install --break-system-packages --upgrade --ignore-installed pip==26.1.1 \ + && apt-get remove -y python3-pip \ + && apt-get autoremove -y \ + && pip3 --version + +# Fix CVE-2026-24049: upgrade wheel to 0.46.2 to fix path traversal +RUN pip3 install --break-system-packages --upgrade \ + setuptools==80.10.2 wheel==0.46.2 Cython==3.0.12 \ + && ln -sf /usr/local/bin/cython /usr/local/bin/cython3 + +# ── Build libserdes (needed by avro_kafka) ───────────────────────────────── +# GCC 15 / glibc C23: now provides once_flag, ONCE_FLAG_INIT, and +# call_once (C23 §7.28). tinycthread's POSIX #defines for the same symbols +# conflict (once_flag=pthread_once_t is int vs glibc unsigned int, and the +# call_once macro turns the void-returning C23 call_once into a reference to +# the int-returning pthread_once, producing "conflicting types for pthread_once"). +# Fix: strip the three redundant POSIX-only #defines from tinycthread.h using +# fixed-string grep so the C library's native implementations are used instead. +RUN git clone https://github.com/confluentinc/libserdes.git \ + && cd libserdes \ + && grep -v -F -e '#define once_flag pthread_once_t' \ + -e '#define ONCE_FLAG_INIT PTHREAD_ONCE_INIT' \ + -e '#define call_once(flag,func) pthread_once(flag,func)' \ + src/tinycthread.h > /tmp/tinycthread_fixed.h \ + && mv /tmp/tinycthread_fixed.h src/tinycthread.h \ + && CFLAGS="-Wno-error=incompatible-pointer-types -Wno-error=int-conversion" \ + ./configure \ + && make \ + && make install \ + && ls -alF /usr/local/lib/libserdes.so \ + && cd / && rm -rf /libserdes + +# ── Build OVIS LDMS ─────────────────────────────────────────────────────── +RUN mkdir -p /build/scripts +COPY configure.aggregator.sh /build/scripts/configure.sh +RUN chmod +x /build/scripts/configure.sh + +RUN cd /build \ + && git clone --depth 1 --branch ${TAG} ${REPO} + +RUN cd /build/ovis \ + && rm -rf .version \ + && autoreconf --install \ + && ./autogen.sh \ + && ../scripts/configure.sh \ + && make \ + && make install \ + && du -sh /opt/ovis-ldms + +# ── Stage 2: Runner preparation ────────────────────────────────────────── +# Build the full runtime in an intermediate stage, then copy to a FROM scratch +# final image so no base-image layer carries the vulnerable pebble Go binary. +FROM ubuntu:26.04 AS runner_prep + +ENV DEBIAN_FRONTEND=noninteractive + +# Remove pebble FIRST — Go binary baked into ubuntu:26.04 base that carries +# Go stdlib 1.26.2 and golang.org/x/net 0.40.0 CVEs. +RUN rm -f /usr/bin/pebble + +RUN apt-get update \ + && apt-get upgrade -y \ + && apt-get install -y --no-install-recommends \ + bzip2 curl dnsutils fping gzip hostname ibverbs-providers \ + iputils-ping iproute2 jq less libavro24 libpapi-dev libpfm4 \ + librdkafka1 libssl3t64 munge net-tools openssl papi-tools pdsh \ + python3 python3-dev python3-pip traceroute \ + && rm -rf /var/lib/apt/lists/* + +# Upgrade pip to fix CVE-2026-6357, CVE-2026-3219, CVE-2026-1703 +RUN python3 -m pip install --break-system-packages --upgrade --ignore-installed pip==26.1.1 \ + && apt-get remove -y python3-pip \ + && apt-get autoremove -y \ + && pip3 --version + +# Fix CVE-2026-24049: upgrade wheel to 0.46.2 to fix path traversal +RUN pip3 install --break-system-packages --upgrade \ + setuptools==80.10.2 wheel==0.46.2 Cython==3.0.12 \ + && ln -sf /usr/local/bin/cython /usr/local/bin/cython3 + +# LDMS exporter dependencies +RUN pip3 install --break-system-packages click prometheus_client \ + && rm -rf /root/.cache/pip + +# Copy built artifacts from builder +COPY --from=ldms_builder /opt/ovis-ldms /opt/ovis-ldms +COPY --from=ldms_builder /usr/local/lib/libserdes* /usr/local/lib/ + +# Refresh shared library cache +RUN ldconfig + +# ── Stage 3: Final clean image (FROM scratch) ─────────────────────────── +# Copies the fully-prepared filesystem into a layer-clean image so Docker +# Scout finds zero trace of the removed Go binary in any layer. +FROM scratch AS runner +COPY --from=runner_prep / / + +ENV VER="0.1" +ENV DEBIAN_FRONTEND=noninteractive +ENV PYTHONUNBUFFERED=1 +ENV PYTHONPATH="/opt/ovis-ldms/lib/python3.14/site-packages" + +CMD ["/bin/bash"] \ No newline at end of file diff --git a/src/containers/ldms/build.sh b/src/containers/ldms/build.sh new file mode 100644 index 0000000000..9337918548 --- /dev/null +++ b/src/containers/ldms/build.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# ============================================================================= +# ldms — Container Build Script +# ============================================================================= +# Sourced by build_images.sh. Defines build_ldms(). +# Build context: src/containers/ldms/ +# ============================================================================= + +build_ldms() { + print_build_info "ldms" "${LDMS_TAG}" + + container_build \ + "ldms" \ + "${LDMS_TAG}" \ + "${CONTAINERS_DIR}/ldms" \ + "Containerfile.bld_n_run.ubuntu26.04" +} diff --git a/src/containers/ldms/configure.aggregator.sh b/src/containers/ldms/configure.aggregator.sh new file mode 100644 index 0000000000..e86a02a68c --- /dev/null +++ b/src/containers/ldms/configure.aggregator.sh @@ -0,0 +1,26 @@ +#!/bin/bash +echo "[>>] configure" +CFLAGS="-std=gnu17 -ggdb3 -O0" \ +CYTHON=cython3 \ +./configure \ + --prefix="/opt/ovis-ldms" \ + --with-slurm="/usr/include/slurm" \ + --with-libevent="/opt/ovis-ldms/lib" \ + --disable-mmap \ + --enable-doc \ + --enable-doc-html \ + --enable-doc-man \ + --enable-etc \ + --enable-genderssystemd \ + --enable-influx \ + --enable-jobinfo-sampler \ + --enable-kgnilnd \ + --enable-lustre \ + --enable-munge \ + --enable-papi \ + --enable-slurm \ + --enable-spank-plugin \ + --enable-swig \ + --enable-sysclassib \ + --enable-tsampler \ + --enable-store-avro-kafka \ No newline at end of file diff --git a/src/containers/omnia_auth/Containerfile b/src/containers/omnia_auth/Containerfile new file mode 100644 index 0000000000..dcd8114e64 --- /dev/null +++ b/src/containers/omnia_auth/Containerfile @@ -0,0 +1,23 @@ +FROM fedora:42 + +# Update system packages to fix CVEs: openssl, libssh, curl, libxml2, systemd, vim, etc. +RUN dnf -y update && \ + dnf -y install openldap-servers openldap-clients && \ + dnf clean all + + +RUN mkdir -p /var/lib/openldap/openldap-data && \ + chown -R ldap:ldap /var/lib/openldap +EXPOSE 389 636 +CMD ["/bin/sh", "-c", "\ + mkdir -p /var/lib/openldap/openldap-data && \ + chown ldap:ldap /var/lib/openldap/openldap-data; \ + if [ ! -f /var/lib/openldap/openldap-data/__initialized ]; then \ + slapadd -f /etc/openldap/slapd.conf -l /container-init/bootstrap.ldif && \ + chown -R ldap:ldap /var/lib/openldap && \ + touch /var/lib/openldap/openldap-data/__initialized; \ + fi; \ + cp /etc/openldap/certs/ldapserver.crt /etc/pki/ca-trust/source/anchors/ && \ + update-ca-trust; \ + exec /usr/sbin/slapd -f /etc/openldap/slapd.conf -h 'ldap:/// ldaps:///' -d 0 \ +"] diff --git a/src/containers/omnia_auth/build.sh b/src/containers/omnia_auth/build.sh new file mode 100644 index 0000000000..90419ff0c6 --- /dev/null +++ b/src/containers/omnia_auth/build.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# ============================================================================= +# omnia_auth — Container Build Script +# ============================================================================= +# Sourced by build_images.sh. Defines build_omnia_auth(). +# Build context: src/containers/omnia_auth/ +# ============================================================================= +build_omnia_auth() { + print_build_info "omnia_auth" "${AUTH_TAG}" + + container_build \ + "omnia_auth" \ + "${AUTH_TAG}" \ + "${CONTAINERS_DIR}/omnia_auth" \ + "Containerfile" +} diff --git a/src/containers/omnia_build_stream/Containerfile b/src/containers/omnia_build_stream/Containerfile new file mode 100644 index 0000000000..f556f735b8 --- /dev/null +++ b/src/containers/omnia_build_stream/Containerfile @@ -0,0 +1,144 @@ +# Copyright 2026 Dell Inc. or its subsidiaries. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Containerfile for omnia_build_stream FastAPI service +FROM fedora:42 + +# Metadata - OCI Standard Labels +LABEL org.opencontainers.image.title="Omnia Build Stream API Server" +LABEL org.opencontainers.image.description="API server for Omnia Build Stream automation" +LABEL org.opencontainers.image.vendor="Dell Technologies" +LABEL org.opencontainers.image.base.name="fedora:42" +LABEL omnia.component="build_stream" +LABEL omnia.type="api_service" + +# Install system dependencies including s3cmd for MinIO access +RUN dnf -y install python3 python3-pip curl ca-certificates s3cmd \ + gcc gcc-c++ make python3-devel openssh openssh-server passwd && \ + dnf clean all && rm -rf /var/cache/dnf + +# Verify Python version (Fedora 42 ships Python 3.13) +RUN python3 --version + +# ------------------------------------------------------- +# FIX: CVE-2025-8869 (Medium 5.9) & CVE-2026-1703 (Low 2.0) +# Upgrade pip to >=26.0 AND remove the old RPM pip 24.3.1 +# metadata so Docker Scout no longer detects it +# ------------------------------------------------------- +RUN python3 -m pip install --no-cache-dir --upgrade "pip>=26.0" \ + --break-system-packages && \ + rm -rf /usr/lib/python3.13/site-packages/pip-24.3.1.dist-info && \ + rm -rf /usr/lib/python3.13/site-packages/pip && \ + python3 -m pip --version + +# ------------------------------------------------------- +# FIX: GHSA-pjjw-68hj-v9mw (Low 2.1) + cargo CVEs +# CVE-2023-49092 (rsa crate) +# GHSA-cq8v-f236-94qc (rand crate) +# GHSA-965h-392x-2mh5 (rustls-webpki) +# GHSA-xgp8-3hg3-c2mh (rustls-webpki) +# GHSA-fp55-jw48-c537 (astral-tokio-tar) +# GHSA-xx64-wwv2-hcqq (astral-tokio-tar) +# GHSA-vfvv-c25p-m7mm (rkyv) +# GHSA-82j2-j2ch-gfr8 (rustls-webpki) +# +# WHY pin to 0.11.15? +# Using "latest" breaks build reproducibility — the same +# Dockerfile could produce different results on different +# days. Pinning ensures auditable, deterministic builds. +# Ref: https://docs.astral.sh/uv/guides/integration/docker/ +# ------------------------------------------------------- +RUN curl -LsSf https://astral.sh/uv/0.11.15/install.sh | \ + env UV_INSTALL_DIR=/usr/local/bin UV_NO_MODIFY_PATH=1 sh && \ + uv --version + +# ======================================================= +# PYTHON ENVIRONMENT CONFIGURATION +# +# UV_PYTHON_DOWNLOADS=never +# Prevents uv from downloading its own managed CPython. +# Forces uv to use Fedora's system Python 3.13 instead. +# (Managed CPython bundles vulnerable pip 25.3 internally) +# +# UV_SYSTEM_PYTHON=1 +# Allows uv pip commands (uv pip install, uv pip compile) +# to target the system Python at /usr/bin/python3. +# Without this, uv pip refuses to modify non-venv Python. +# +# NOTE: This does NOT affect project-mode commands +# (uv sync, uv run, uv add) — those ALWAYS create a +# .venv regardless of this setting. That is why we use +# "uv pip install --system" instead of "uv sync" here. +# ======================================================= +ENV UV_PYTHON_DOWNLOADS=never +ENV UV_SYSTEM_PYTHON=1 + +# ======================================================= +# DEPENDENCIES: Install production packages from committed +# and audited lock file into system Python. +# +# Copy pyproject.toml + uv.lock BEFORE source code so Docker +# caches the dependency layer. Only a change to these files +# triggers a re-install; source code changes skip this step. +# +# uv export --locked +# Reads uv.lock, verifies it matches pyproject.toml, and +# exports exact pinned versions to requirements.txt. +# FAILS if uv.lock is out of sync — this is the safety gate. +# +# uv pip install --system +# Installs into system Python (/usr/lib/python3.13/...) so +# the ENTRYPOINT command (/usr/bin/python3 -m uvicorn) can +# find all packages including uvicorn. +# +# NOTE: Do NOT use "uv sync --locked" here — it installs into +# a .venv/ which the system Python cannot access at runtime. +# ======================================================= +COPY pyproject.toml uv.lock ./ +RUN uv export --locked --no-hashes -o requirements.txt && \ + uv pip install --system -r requirements.txt + +# Optionally install dev dependencies +ARG BUILD_ENV=production +RUN if [ "$BUILD_ENV" = "development" ]; then \ + uv export --locked --no-hashes --extra dev -o requirements-dev.txt && \ + uv pip install --system -r requirements-dev.txt; \ + fi + +# ----------------------------- +# S3 Configuration Setup +# ----------------------------- +# Copy s3cmd initialization script +COPY init_s3cfg.sh /usr/local/bin/init_s3cfg.sh +RUN chmod +x /usr/local/bin/init_s3cfg.sh + +# Create app and SSL directories +WORKDIR /opt/omnia/build_stream +RUN mkdir -p /etc/ssl/omnia + +# Runtime environment +ENV APP_DIR=/opt/omnia/build_stream +ENV SSL_KEYFILE=/etc/ssl/omnia/bs_key.pem +ENV SSL_CERTFILE=/etc/ssl/omnia/bs_cert.pem + +# MinIO S3 configuration (will be overridden by Quadlet at runtime) +ENV MINIO_ACCESS_KEY=admin +ENV MINIO_SECRET_KEY= +ENV MINIO_HOST=localhost:9000 +ENV MINIO_USE_HTTPS=False + +WORKDIR ${APP_DIR} + +# Entrypoint initializes s3cmd config and starts FastAPI service +ENTRYPOINT ["/bin/bash", "-c", "/usr/local/bin/init_s3cfg.sh || true && exec python3 -Xfrozen_modules=off -m uvicorn main:app --host \"${HOST:?HOST env required}\" --port \"${PORT:?PORT env required}\" --ssl-keyfile \"${SSL_KEYFILE}\" --ssl-certfile \"${SSL_CERTFILE}\""] diff --git a/src/containers/omnia_build_stream/build.sh b/src/containers/omnia_build_stream/build.sh new file mode 100644 index 0000000000..9bf239144b --- /dev/null +++ b/src/containers/omnia_build_stream/build.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# ============================================================================= +# omnia_build_stream — Container Build Script +# ============================================================================= +# Sourced by build_images.sh. Defines build_omnia_build_stream(). +# Build context: src/containers/omnia_build_stream/ +# Note: Uses --network=host for docker builds +# ============================================================================= + +build_omnia_build_stream() { + print_build_info "omnia_build_stream" "${BUILD_STREAM_TAG}" + + container_build \ + "omnia_build_stream" \ + "${BUILD_STREAM_TAG}" \ + "${CONTAINERS_DIR}/omnia_build_stream" \ + "Containerfile" \ + "" \ + "--network=host" +} diff --git a/src/containers/omnia_build_stream/init_s3cfg.sh b/src/containers/omnia_build_stream/init_s3cfg.sh new file mode 100644 index 0000000000..9db763b787 --- /dev/null +++ b/src/containers/omnia_build_stream/init_s3cfg.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# Copyright 2026 Dell Inc. or its subsidiaries. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +S3CFG_FILE="${S3CFG_FILE:-/root/.s3cfg}" +MINIO_ACCESS_KEY="${MINIO_ACCESS_KEY:-admin}" +MINIO_SECRET_KEY="${MINIO_SECRET_KEY:-}" +MINIO_HOST="${MINIO_HOST:-localhost:9000}" +MINIO_USE_HTTPS="${MINIO_USE_HTTPS:-False}" + +if [ -z "$MINIO_SECRET_KEY" ]; then + echo "WARNING: MINIO_SECRET_KEY not set. s3cmd will not work without valid credentials." + echo "Please set MINIO_SECRET_KEY environment variable or mount a valid .s3cfg file." + exit 0 +fi + +cat > "$S3CFG_FILE" <=0.115.6", + "starlette>=1.0.1", + "uvicorn[standard]>=0.34.0", + "ansible-core>=2.16.0", + "python-multipart>=0.0.26", + "requests>=2.33.0", + "pyyaml==6.0.3", + "jmespath==1.0.1", + "urllib3>=2.7.0", + "jsonschema>=4.0.0", + "argon2-cffi>=21.0.0", + "PyJWT>=2.13.0", + "dependency-injector>=4.41.0", + "pydantic-settings>=2.0.0", + "pydantic>=2.0.0,<2.10.0", + "cryptography>=48.0.0", + "httpx>=0.25.0", + "sqlalchemy>=2.0.0", + "alembic>=1.13.0", + "psycopg2-binary>=2.9.0", + "python-dotenv>=1.0.0", + "debugpy==1.8.20", + "pytest>=9.0.3", + "pytest-asyncio>=0.21.0", + "pytest-cov>=4.1.0", + "pylint>=3.0.0", + "black>=26.3.1", + "isort>=5.12.0", + "pygments>=2.20.0" +] diff --git a/src/containers/omnia_build_stream/uv.lock b/src/containers/omnia_build_stream/uv.lock new file mode 100644 index 0000000000..b142c7f1b2 --- /dev/null +++ b/src/containers/omnia_build_stream/uv.lock @@ -0,0 +1,1637 @@ +version = 1 +revision = 3 +requires-python = ">=3.12" +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version == '3.13.*'", + "python_full_version < '3.13'", +] + +[[package]] +name = "alembic" +version = "1.18.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mako" }, + { name = "sqlalchemy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/13/8b084e0f2efb0275a1d534838844926f798bd766566b1375174e2448cd31/alembic-1.18.4.tar.gz", hash = "sha256:cb6e1fd84b6174ab8dbb2329f86d631ba9559dd78df550b57804d607672cedbc", size = 2056725, upload-time = "2026-02-10T16:00:47.195Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/29/6533c317b74f707ea28f8d633734dbda2119bbadfc61b2f3640ba835d0f7/alembic-1.18.4-py3-none-any.whl", hash = "sha256:a5ed4adcf6d8a4cb575f3d759f071b03cd6e5c7618eb796cb52497be25bfe19a", size = 263893, upload-time = "2026-02-10T16:00:49.997Z" }, +] + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "ansible-core" +version = "2.21.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "resolvelib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/f6/8da4912a93e1319292bada5e5185e82b1a12cf212da7a7cc4589064f3247/ansible_core-2.21.0.tar.gz", hash = "sha256:28ccd0e2d1849f1c7272cec39a74a8a5c83f3d51314658fa5ca57ea85a87f454", size = 3387206, upload-time = "2026-05-18T20:52:31.677Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/5c/75152a7ec51634bdc90b262a74cd6ca8b81cd6e264e19389c4c471e9f4df/ansible_core-2.21.0-py3-none-any.whl", hash = "sha256:fed7dd076365aad9ccf885c6b8f938e0fd508f5dcdffe5d2ca87cfb5fac47940", size = 2443954, upload-time = "2026-05-18T20:52:29.679Z" }, +] + +[[package]] +name = "anyio" +version = "4.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/2d/db8af0df73c1cf454f71b2bbe5e356b8c1f8041c979f505b3d3186e520a9/argon2_cffi_bindings-25.1.0.tar.gz", hash = "sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d", size = 1783441, upload-time = "2025-07-30T10:02:05.147Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/3c0a35f46e52108d4707c44b95cfe2afcafc50800b5450c197454569b776/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f", size = 54393, upload-time = "2025-07-30T10:01:40.97Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f4/98bbd6ee89febd4f212696f13c03ca302b8552e7dbf9c8efa11ea4a388c3/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b", size = 29328, upload-time = "2025-07-30T10:01:41.916Z" }, + { url = "https://files.pythonhosted.org/packages/43/24/90a01c0ef12ac91a6be05969f29944643bc1e5e461155ae6559befa8f00b/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a", size = 31269, upload-time = "2025-07-30T10:01:42.716Z" }, + { url = "https://files.pythonhosted.org/packages/d4/d3/942aa10782b2697eee7af5e12eeff5ebb325ccfb86dd8abda54174e377e4/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44", size = 86558, upload-time = "2025-07-30T10:01:43.943Z" }, + { url = "https://files.pythonhosted.org/packages/0d/82/b484f702fec5536e71836fc2dbc8c5267b3f6e78d2d539b4eaa6f0db8bf8/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb", size = 92364, upload-time = "2025-07-30T10:01:44.887Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c1/a606ff83b3f1735f3759ad0f2cd9e038a0ad11a3de3b6c673aa41c24bb7b/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92", size = 85637, upload-time = "2025-07-30T10:01:46.225Z" }, + { url = "https://files.pythonhosted.org/packages/44/b4/678503f12aceb0262f84fa201f6027ed77d71c5019ae03b399b97caa2f19/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85", size = 91934, upload-time = "2025-07-30T10:01:47.203Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c7/f36bd08ef9bd9f0a9cff9428406651f5937ce27b6c5b07b92d41f91ae541/argon2_cffi_bindings-25.1.0-cp314-cp314t-win32.whl", hash = "sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f", size = 28158, upload-time = "2025-07-30T10:01:48.341Z" }, + { url = "https://files.pythonhosted.org/packages/b3/80/0106a7448abb24a2c467bf7d527fe5413b7fdfa4ad6d6a96a43a62ef3988/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6", size = 32597, upload-time = "2025-07-30T10:01:49.112Z" }, + { url = "https://files.pythonhosted.org/packages/05/b8/d663c9caea07e9180b2cb662772865230715cbd573ba3b5e81793d580316/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623", size = 28231, upload-time = "2025-07-30T10:01:49.92Z" }, + { url = "https://files.pythonhosted.org/packages/1d/57/96b8b9f93166147826da5f90376e784a10582dd39a393c99bb62cfcf52f0/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500", size = 54121, upload-time = "2025-07-30T10:01:50.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/08/a9bebdb2e0e602dde230bdde8021b29f71f7841bd54801bcfd514acb5dcf/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44", size = 29177, upload-time = "2025-07-30T10:01:51.681Z" }, + { url = "https://files.pythonhosted.org/packages/b6/02/d297943bcacf05e4f2a94ab6f462831dc20158614e5d067c35d4e63b9acb/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0", size = 31090, upload-time = "2025-07-30T10:01:53.184Z" }, + { url = "https://files.pythonhosted.org/packages/c1/93/44365f3d75053e53893ec6d733e4a5e3147502663554b4d864587c7828a7/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6", size = 81246, upload-time = "2025-07-30T10:01:54.145Z" }, + { url = "https://files.pythonhosted.org/packages/09/52/94108adfdd6e2ddf58be64f959a0b9c7d4ef2fa71086c38356d22dc501ea/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a", size = 87126, upload-time = "2025-07-30T10:01:55.074Z" }, + { url = "https://files.pythonhosted.org/packages/72/70/7a2993a12b0ffa2a9271259b79cc616e2389ed1a4d93842fac5a1f923ffd/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d", size = 80343, upload-time = "2025-07-30T10:01:56.007Z" }, + { url = "https://files.pythonhosted.org/packages/78/9a/4e5157d893ffc712b74dbd868c7f62365618266982b64accab26bab01edc/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99", size = 86777, upload-time = "2025-07-30T10:01:56.943Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/15777dfde1c29d96de7f18edf4cc94c385646852e7c7b0320aa91ccca583/argon2_cffi_bindings-25.1.0-cp39-abi3-win32.whl", hash = "sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2", size = 27180, upload-time = "2025-07-30T10:01:57.759Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c6/a759ece8f1829d1f162261226fbfd2c6832b3ff7657384045286d2afa384/argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl", hash = "sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98", size = 31715, upload-time = "2025-07-30T10:01:58.56Z" }, + { url = "https://files.pythonhosted.org/packages/42/b9/f8d6fa329ab25128b7e98fd83a3cb34d9db5b059a9847eddb840a0af45dd/argon2_cffi_bindings-25.1.0-cp39-abi3-win_arm64.whl", hash = "sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94", size = 27149, upload-time = "2025-07-30T10:01:59.329Z" }, +] + +[[package]] +name = "astroid" +version = "4.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/63/0adf26577da5eff6eb7a177876c1cfa213856be9926a000f65c4add9692b/astroid-4.0.4.tar.gz", hash = "sha256:986fed8bcf79fb82c78b18a53352a0b287a73817d6dbcfba3162da36667c49a0", size = 406358, upload-time = "2026-02-07T23:35:07.509Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/cf/1c5f42b110e57bc5502eb80dbc3b03d256926062519224835ef08134f1f9/astroid-4.0.4-py3-none-any.whl", hash = "sha256:52f39653876c7dec3e3afd4c2696920e05c83832b9737afc21928f2d2eb7a753", size = 276445, upload-time = "2026-02-07T23:35:05.344Z" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "black" +version = "26.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, + { name = "pytokens" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/37/5628dd55bf2b34257fc7603f0fe97c40e3aaf24265f416a9c85c95ca1436/black-26.5.1.tar.gz", hash = "sha256:dd321f668053961824bcc1be1cc1df748b2d7e4fa28086b08331e577b0100a73", size = 679439, upload-time = "2026-05-18T16:53:36.107Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/99/7744b906703228264ef73bdd534df88ec1ef3de45c4e78f6d31b9e32d0c9/black-26.5.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4ad6fa01f941920f54f2bbb35f3df7673428a0ef98a0b0840c2eaef3b110efa8", size = 2012518, upload-time = "2026-05-18T17:05:20.108Z" }, + { url = "https://files.pythonhosted.org/packages/b7/c0/c5a3b1636dfd09c42534f2b3cf33506814f6d3e066fb0879ffa16c1ae860/black-26.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3915f256e75a2d7cf88d8953d37f780455dc586cc72dee059c528fe77f581217", size = 1816016, upload-time = "2026-05-18T17:05:21.84Z" }, + { url = "https://files.pythonhosted.org/packages/1f/0e/36044316b65ca471d3bb6d3703fd06fb50c6b727c3562f6a5a3153634f88/black-26.5.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d98d4137277c75dfb898ec8d846c4fd68ba1e9cf77f95e2865c203dc18f4c3d", size = 1884150, upload-time = "2026-05-18T17:05:23.546Z" }, + { url = "https://files.pythonhosted.org/packages/b3/33/dafc5808c2af43672912111d7c3354af1615f7e2be3bed7a878461abbe4d/black-26.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:a1dca32d9f1784af512a13410ec204c6f7f0aa9797a111c42e1c03449821c264", size = 1486825, upload-time = "2026-05-18T17:05:25.004Z" }, + { url = "https://files.pythonhosted.org/packages/82/14/b965ee6ad2a311f28bdbf692def3ee9848d2ae289dab28b27657fcee3e78/black-26.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:1037d5ac7b7b310b2632ad867ec8d0e4c4819dcdb0b820f63135da746a24e418", size = 1288646, upload-time = "2026-05-18T17:05:26.477Z" }, + { url = "https://files.pythonhosted.org/packages/3f/5c/c384363980e11e25ca6b93205949bb331fbf35f4e0dbec376dfa6326cec8/black-26.5.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2b36cf2ddf5566e205f6535f782a62194a184d33e175b64ae8c40b1737522be3", size = 2009020, upload-time = "2026-05-18T17:05:28.132Z" }, + { url = "https://files.pythonhosted.org/packages/0b/df/9f31c5e0babbfed77d505fc5d120beb98b21b33feaeded3924ea941fe360/black-26.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f7ea64ebfa01b50f693508fc39f875e264446d3b097088f84f203b9d09618a0", size = 1813335, upload-time = "2026-05-18T17:05:31.266Z" }, + { url = "https://files.pythonhosted.org/packages/fb/24/8e7b9a2fa61b0afd82209efe937557d180a1fa055bd7f6161eb9defc3719/black-26.5.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecb3e624844c798144e9bd986954e0adc81d8911a1f30f375e1252fe26e8c294", size = 1881614, upload-time = "2026-05-18T17:05:32.718Z" }, + { url = "https://files.pythonhosted.org/packages/49/ad/b4e0d9365ba8ac34f6bbab62a4b1b2dd5d618fac3fa1b8db968c844201b5/black-26.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:e1a26503279b6b310669fb0b219c39e4820b77e8189fe80f522bb511f247db0a", size = 1488925, upload-time = "2026-05-18T17:05:34.259Z" }, + { url = "https://files.pythonhosted.org/packages/a1/4b/652b859bf5df88a751c30451b09338f7fd26a77d1271c666992f836b7711/black-26.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:5c34b25da232ead53a6f335b76dbea124f4d152ad568b9080d6f944bc2b34b52", size = 1289883, upload-time = "2026-05-18T17:05:36.019Z" }, + { url = "https://files.pythonhosted.org/packages/a6/16/a8da8eb208c51c7f4ce74609a45d0dcc6d8a2141e45e81ee5289d1bb0d59/black-26.5.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e88976690a64b0af98312ca958415849cb42423423c5f2ee74af4b49a97a2168", size = 2004800, upload-time = "2026-05-18T17:05:38.182Z" }, + { url = "https://files.pythonhosted.org/packages/11/8a/a479296a19e383b70a725882a6cf3d786540601ff03cabbaaf1cce864c5a/black-26.5.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32d5ea7f6c8bdfa6e648326ebca1f02b0764e2a029edc6f8dce2627e19d468c3", size = 1815576, upload-time = "2026-05-18T17:05:40.309Z" }, + { url = "https://files.pythonhosted.org/packages/81/6b/cfaf3d39f25132c156a068f6b805576c9103a84086019507c70e1911ee7d/black-26.5.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ea8d16dc41655aa113cd64665e7219446cd7e4ff2248d7178eaa905190c86b18", size = 1877927, upload-time = "2026-05-18T17:05:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/66/76/302e313964bcff7e28df329d39f84f5270095730d85ff0acc260610a0d82/black-26.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:577f21094ea469ef92ec1adaf2c9441a226d2144d01a5be2fa823cecf6543e50", size = 1511860, upload-time = "2026-05-18T17:05:43.943Z" }, + { url = "https://files.pythonhosted.org/packages/27/4e/a3827e35e0e567f9f9ee59e2a0ab979267dca98718f25547ca8c6733afd4/black-26.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:ed1a20af114c301a0269bf01163d51dbef72737fd65f850001e7cbe7f3c7abae", size = 1316632, upload-time = "2026-05-18T17:05:45.521Z" }, + { url = "https://files.pythonhosted.org/packages/94/51/f975cae76d44274cc2868dc9040ac5d58d464784610234455b4e7b19c6ef/black-26.5.1-py3-none-any.whl", hash = "sha256:4ed7f7da04046d2e488437170797d3b4a4ad83906683bcb7dfc68b673bbce5e2", size = 213693, upload-time = "2026-05-18T16:53:33.964Z" }, +] + +[[package]] +name = "certifi" +version = "2026.5.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/ce/ee2ecad540810a79593028e88299baeae54d346cc7a0d94b6199988b89b1/certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d", size = 135422, upload-time = "2026-05-20T11:46:50.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897", size = 134134, upload-time = "2026-05-20T11:46:48.578Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", size = 208061, upload-time = "2026-04-02T09:26:25.568Z" }, + { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", size = 229031, upload-time = "2026-04-02T09:26:26.865Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", size = 225239, upload-time = "2026-04-02T09:26:28.044Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", size = 216589, upload-time = "2026-04-02T09:26:29.239Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", size = 202733, upload-time = "2026-04-02T09:26:30.5Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", size = 212652, upload-time = "2026-04-02T09:26:31.709Z" }, + { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", size = 211229, upload-time = "2026-04-02T09:26:33.282Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", size = 203552, upload-time = "2026-04-02T09:26:34.845Z" }, + { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", size = 230806, upload-time = "2026-04-02T09:26:36.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", size = 212316, upload-time = "2026-04-02T09:26:37.672Z" }, + { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464", size = 227274, upload-time = "2026-04-02T09:26:38.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", size = 218468, upload-time = "2026-04-02T09:26:40.17Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", size = 148460, upload-time = "2026-04-02T09:26:41.416Z" }, + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", size = 159330, upload-time = "2026-04-02T09:26:42.554Z" }, + { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", size = 147828, upload-time = "2026-04-02T09:26:44.075Z" }, + { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" }, + { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" }, + { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" }, + { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" }, + { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" }, + { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" }, + { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" }, + { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, +] + +[[package]] +name = "click" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96", size = 353007, upload-time = "2026-05-22T04:08:37.769Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "coverage" +version = "7.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/fd/0ab2772530e946e1be1abd0bc09e647ec9b02e88f0867857601fefca8953/coverage-7.14.1.tar.gz", hash = "sha256:30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be", size = 920132, upload-time = "2026-05-26T20:41:36.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/b7/bdbb725ba02c5b42825b200c940f38b7a54fcad24627b7192f78f8110d76/coverage-7.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a06c76364a9360e33d6d23769aefdf7f66f38e2ffb60ceb1baaa4989d83b695c", size = 220022, upload-time = "2026-05-26T20:39:03.702Z" }, + { url = "https://files.pythonhosted.org/packages/72/81/fdc0898a55c6219223291ec1a1fe89966ef212ce82276aa0899df84b5de0/coverage-7.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fad54e871165f6ec2f536063ac74c3104508a12963e64072ba44bd822de52b0c", size = 220379, upload-time = "2026-05-26T20:39:05.381Z" }, + { url = "https://files.pythonhosted.org/packages/de/72/de048c4a25e13bce59ac6a339351c10bdf2515e07459afcdaf04dc3143a2/coverage-7.14.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:84b535f00655ecafe1d929d1fb00ed5d6fa3051ea643ab2c161a3887b86f294b", size = 251888, upload-time = "2026-05-26T20:39:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/28/30/300c343f68beb9d4cbb64ec81e58c5b6b80b56927f72d2b38654ac26e013/coverage-7.14.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6b6b0853b895fe0e98cbfc580d1ec3393d9302b4b1e96a77b3f5c91fdab899e6", size = 254624, upload-time = "2026-05-26T20:39:09.037Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ed/7b25642496e8170b6bac14adce00537c6e5fa2d586159401a4de3e8b49e6/coverage-7.14.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:442cc9c952b2df400cda54bb04ab87330cf2cd08a8692cbbea36773531eb6f37", size = 255739, upload-time = "2026-05-26T20:39:10.889Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a2/abd210b8c4e29c24e4624916db97bb519097a91034aaeb767f937e7da794/coverage-7.14.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8270544c361ed405a27a060dbc9ed2c124b084d96dfdc2d9a2510482aef981ad", size = 257998, upload-time = "2026-05-26T20:39:12.722Z" }, + { url = "https://files.pythonhosted.org/packages/7f/24/7c50beed3792fe62f6ce0545c6686ce83379719e2c0276179333d97eae92/coverage-7.14.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:48b283b1dd6372e8de2a7a9a4c4d5dc06f4d4fd209b876f3c88a7a205a0c8f84", size = 252296, upload-time = "2026-05-26T20:39:14.259Z" }, + { url = "https://files.pythonhosted.org/packages/15/05/0f874628ebcbfc77ead559ff210281ef06a97db08481832e7dd39274a135/coverage-7.14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5b0c99ba93a07d56f6df340bb79be53202a082b2fdb81bfe6190b741a3470d54", size = 253658, upload-time = "2026-05-26T20:39:15.923Z" }, + { url = "https://files.pythonhosted.org/packages/99/6f/ca6ad067364b337ef997802115e7ecad2abd2248b05471464b0dea02b4d4/coverage-7.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e471bc5769ff073b058cfadb0d736b56ce067c8560eabeb0da88462df98c23e7", size = 251803, upload-time = "2026-05-26T20:39:17.537Z" }, + { url = "https://files.pythonhosted.org/packages/c0/30/b9b4d377cd9f40baf228068f5a81faf8450c6228503011bd499708483a50/coverage-7.14.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f497a1ea81d4cd7c10ddcaa685135b9aabd291af3d55775a9ddf3cb7a364cdd9", size = 255873, upload-time = "2026-05-26T20:39:19.414Z" }, + { url = "https://files.pythonhosted.org/packages/3c/21/7c721a9e5e6bb88547d30a787aefb97512d3f54c1324c7488d9b3743f7f9/coverage-7.14.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2222be86d0b54f5dd5a38f45f17f315f737245e857bf0bdedc70734f84a13c02", size = 251372, upload-time = "2026-05-26T20:39:21.169Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f8ae5a2200130e1503cd7661a6cd3b2b7bacef98277fbf3571fb13f8b766/coverage-7.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:85e85586565842f6932abebd4c18bcb1074223dc0b3576e7d173ca710622813a", size = 253245, upload-time = "2026-05-26T20:39:23.097Z" }, + { url = "https://files.pythonhosted.org/packages/34/62/70a9024672a5f6910517d9628c52c9afbdd3cf8f46426af52bb148a56fff/coverage-7.14.1-cp312-cp312-win32.whl", hash = "sha256:4a28fd227808366b196a75476dced2eb35b351d6766ba9c858dc93319e87f4f1", size = 222567, upload-time = "2026-05-26T20:39:24.868Z" }, + { url = "https://files.pythonhosted.org/packages/f6/81/8b7cd386839b039ebe1855733b9f9449a8dec5d79564018234f185a7fa70/coverage-7.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:54acdb6674a4661768d7bf7db32dfb9f46ab1d764f8aba6df75ce1a6a088724e", size = 223372, upload-time = "2026-05-26T20:39:26.603Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ba/b44d472022f620d289d95fa830143235c0c36461c6f2437ea8d51e5481ed/coverage-7.14.1-cp312-cp312-win_arm64.whl", hash = "sha256:99cd41ff91afd94896fea3bc002706b6ae4ce95727d06e4a0f39c0a8d8bd8b1a", size = 221989, upload-time = "2026-05-26T20:39:28.242Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9e/5f6d56327c62b185225d145191c607e07515294a0aa6338e58805cd4a5ac/coverage-7.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:be9f2c802dcfce3f71298303aa5dad0dce440a76c52f2f60dacd8656dab78793", size = 220044, upload-time = "2026-05-26T20:39:29.902Z" }, + { url = "https://files.pythonhosted.org/packages/75/92/e82aca356744cbbc0f77a0b623e38918c1872361963413a3bab5d0340393/coverage-7.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6223a72fd0e4c7156353ec0f08a5f93623e1d3034d0e2683b9bb8ea674131b1d", size = 220412, upload-time = "2026-05-26T20:39:31.561Z" }, + { url = "https://files.pythonhosted.org/packages/27/c9/385bde0bf7ed0f4bf3a7ee5367060a86b5d218718cfd6fb943c0f836b34f/coverage-7.14.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7279d2110a28cebc738b6459ecda2771735a4c18465fbbd36b3288fe5ed92247", size = 251412, upload-time = "2026-05-26T20:39:33.337Z" }, + { url = "https://files.pythonhosted.org/packages/51/8c/23faf6a2343a0d17f960a4bd56c43bc7eb4cf312f774dd6ceebd82c7d8fc/coverage-7.14.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9eeb3fcbc13ba40dfbdb22d01d196a28e9cef9ed4c29b60061a1e0e823a9929d", size = 254008, upload-time = "2026-05-26T20:39:35.009Z" }, + { url = "https://files.pythonhosted.org/packages/42/06/36f4aa9ca8a815e6036156e80706a67828bb97bd826948244f6996dda957/coverage-7.14.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f0cfc27c539f07cf5c0a4cfe211d0b6cae039f8f40526dbaa71944e64b50a7b", size = 255241, upload-time = "2026-05-26T20:39:36.71Z" }, + { url = "https://files.pythonhosted.org/packages/ca/79/95266316352f90f6b1c6736bb413302edfde2453fb32422d3911642691b3/coverage-7.14.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:221c70f316241a78e77e607c227cefc8808d4e08f28d99c04f35694690e940be", size = 257373, upload-time = "2026-05-26T20:39:38.412Z" }, + { url = "https://files.pythonhosted.org/packages/e3/9c/58316d1f66c488b5fca8a0eb3e98348807813efa8a0d0833b9021be27488/coverage-7.14.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:da028256b04ec30e5e0114b6f76172938c313991f0a2d3d894271315cf5d5e43", size = 251635, upload-time = "2026-05-26T20:39:40.268Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5a/ca2398a568e16fed7bb713e84ba3603a7164fb65779abe645c565ec890d5/coverage-7.14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76a085d7005236a767e3426148b2c407e53ad61695c562f8a81da2d373324901", size = 253373, upload-time = "2026-05-26T20:39:42.145Z" }, + { url = "https://files.pythonhosted.org/packages/6e/2c/0396562c32deaebe7be51d865b3a41e9a87d7561acafe1a28f53b07e019a/coverage-7.14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b553d04b5e778a8e56d57eb134aff42a92718ecba45e79c4764ecfa40efd92ff", size = 251341, upload-time = "2026-05-26T20:39:43.907Z" }, + { url = "https://files.pythonhosted.org/packages/fd/8f/a94f9221184c9cae1ee115820e3798e48b6b17777a9f19e46fb9a0c8dc74/coverage-7.14.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:46f714d2fb8ae2f4f29f23ada7f1e79b759fff5a70f94a1dac23af204c3ec9e4", size = 255497, upload-time = "2026-05-26T20:39:46.166Z" }, + { url = "https://files.pythonhosted.org/packages/71/69/505d70e47db1eaebcd002c39759707621ef184cd6b1ae084d9f41293f323/coverage-7.14.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:1896f5e19ff3f0431c7ce2172adc54890fd97f86b59ced8ca1649145d9ffe35d", size = 251159, upload-time = "2026-05-26T20:39:48.03Z" }, + { url = "https://files.pythonhosted.org/packages/e0/aa/58681c383aa33a9d2ed40a02d7a22fbf780d1fa4d575396365777828198c/coverage-7.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:62fd185ef9df3c33d1c8178c5af105f762afbad96038de9a4ae100aa6297ca33", size = 252934, upload-time = "2026-05-26T20:39:49.872Z" }, + { url = "https://files.pythonhosted.org/packages/eb/fd/11c928cd6bdffc7074bb5965c173d9ebf517fb00205e1da524b98d29ef92/coverage-7.14.1-cp313-cp313-win32.whl", hash = "sha256:ab4af6352741a604c431c6072fce5bee33bf0f20dc7a56618d6bf6bb89e9810c", size = 222584, upload-time = "2026-05-26T20:39:51.68Z" }, + { url = "https://files.pythonhosted.org/packages/6f/92/fb416fc26d340dcba19518c418d6048e913186e17243982c5e435e41fa7a/coverage-7.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:7af486dabe8954d03b087f0021540897afe084f04e16ff5579e08cc46f871416", size = 223394, upload-time = "2026-05-26T20:39:53.472Z" }, + { url = "https://files.pythonhosted.org/packages/73/c6/02d56e3867972f77d5036de924643f26c056e848f00452cafb4dbc3c29b4/coverage-7.14.1-cp313-cp313-win_arm64.whl", hash = "sha256:2224f89ffd0c5605ccce1ed7a584da162bc7c55f601ab1c946bc9de31a486b42", size = 222015, upload-time = "2026-05-26T20:39:55.374Z" }, + { url = "https://files.pythonhosted.org/packages/4d/9e/fcc77914050df73f7662fa1f00902774c79c075a8388ab334074574bf77e/coverage-7.14.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:de286598cc65d2b489411174b1faec2f5a7775fb3201fd925db2a76b4030f37d", size = 220733, upload-time = "2026-05-26T20:39:57.189Z" }, + { url = "https://files.pythonhosted.org/packages/f7/67/2963cbdaf5cbadec44efa3a1e39eaa1f02df4079585f05387607a221e126/coverage-7.14.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:042c46ded7c288aeb07cf14a28b6c1e10b78fcba40171c3fa1e939377eeef0b5", size = 221086, upload-time = "2026-05-26T20:39:59.019Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c5/8701645574e11881f2f47d8930f98bc48b5d43b25eb5b4430dfc4a2f9f48/coverage-7.14.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f4ddbe407477f04c45115d1a4e5bc480f753553b534d338d4c3358b1cdd0ea52", size = 262381, upload-time = "2026-05-26T20:40:00.822Z" }, + { url = "https://files.pythonhosted.org/packages/7c/28/7a64d73598263e0c5abd5084211a8474488d31b3c552ff531c719dfcff62/coverage-7.14.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d13e6725992e2d2fd7d81d4f5241952d13740121dfd501da09201be39b2c003a", size = 264458, upload-time = "2026-05-26T20:40:02.506Z" }, + { url = "https://files.pythonhosted.org/packages/fa/d8/4969179db9f7eb4df218e69540adf829d1c835f59452513d065d15446802/coverage-7.14.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f747dc8edcfe740130f28f32f3995e955494285717e86ee25af51db2219df08a", size = 266884, upload-time = "2026-05-26T20:40:04.421Z" }, + { url = "https://files.pythonhosted.org/packages/a6/78/a45d5794dbc9bafd97afc96a4377c86c7820d78b6cf51b89bc1d4e919275/coverage-7.14.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ced2f09ef276fd58611a1ef502164ad266d2b75174e5a40cabbdb4033f9f6cf2", size = 268022, upload-time = "2026-05-26T20:40:06.298Z" }, + { url = "https://files.pythonhosted.org/packages/21/cb/4f5e354e9e3e67af96bd4e57113e6db6b22298c7168b13eec408a549903d/coverage-7.14.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b84800013769a78ccb9ef4659402e26d06867e337b61ec365f77ad008adea80e", size = 261631, upload-time = "2026-05-26T20:40:08.226Z" }, + { url = "https://files.pythonhosted.org/packages/ec/49/eced49af4cb996d5d8b7e94e736175c513e4facd3398507b89892b4326d8/coverage-7.14.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ea8cd6ca0ee9f616aaef3afc6882e32c2cbf18b00d96313ffd76af650574034d", size = 264443, upload-time = "2026-05-26T20:40:10.137Z" }, + { url = "https://files.pythonhosted.org/packages/f1/d8/5603a88a7c5913a6b54f6cb1a8c46f7b39cbb30f27cd3f492908da09b2d7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:aa5e304a873fabddc11e484e9b6b738bd38bd7bed17b09aa84eecf5332e8b8bb", size = 262069, upload-time = "2026-05-26T20:40:11.999Z" }, + { url = "https://files.pythonhosted.org/packages/f0/59/2ae3cb79da554a06c8619d6c88ea19dd1e4aed4b834b6a83bb1fa243bdc5/coverage-7.14.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:5a1c5215be81035e629d5bc756650634d0bf31991038db7a0eccb90f025ce16d", size = 265780, upload-time = "2026-05-26T20:40:13.858Z" }, + { url = "https://files.pythonhosted.org/packages/af/5f/b130c1dc999031f2648bd25317fbce505ad8d5562079b4ed81e736a84967/coverage-7.14.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:79058c47dae6788504b5effb319961bcd72d7240551464b91d474bc0ed186d69", size = 260970, upload-time = "2026-05-26T20:40:16.142Z" }, + { url = "https://files.pythonhosted.org/packages/87/d1/ec13ccddeb48ec963bdfa72a11224bac2584bd045ba13beca82f8113e9c7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:370c5afae3fa0658e11694a32b24c2778f6bc2d17718121f94ee185e69f26b54", size = 263157, upload-time = "2026-05-26T20:40:18.382Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c2/cd91ead503045161092d3845f7bb95ea2f25131ce96d3e314dd835d91b9c/coverage-7.14.1-cp313-cp313t-win32.whl", hash = "sha256:3758dd0a7f1fa57365ef2e781df0f0731d38b6e3772259d13dae4bd8a958d4b1", size = 223259, upload-time = "2026-05-26T20:40:20.381Z" }, + { url = "https://files.pythonhosted.org/packages/71/9f/1e28d97e6bd2c76b07f38b7c02870f1371255ff6717f54eca578fcbbdd0e/coverage-7.14.1-cp313-cp313t-win_amd64.whl", hash = "sha256:6ff665fb023a77386fe11685190cee1f60a7d635994a30d9b0a061533d470fce", size = 224320, upload-time = "2026-05-26T20:40:22.316Z" }, + { url = "https://files.pythonhosted.org/packages/a9/e0/d936e908f0e1efa55e52b91e01b52f1055cef5e1ab2718493390ed8e2fb8/coverage-7.14.1-cp313-cp313t-win_arm64.whl", hash = "sha256:17a5a241e5997621a956a7f402a7433ef4221e5152809b785bec79e2323799f1", size = 222577, upload-time = "2026-05-26T20:40:24.894Z" }, + { url = "https://files.pythonhosted.org/packages/d6/34/fc2f101b151af3799a101f0550b0454aa008afdc0add677394ec4aa8ea10/coverage-7.14.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d5ed429d0b8edaac649e889b4ffcedb6c80b06629a3f93050e3dddfb99235bee", size = 220091, upload-time = "2026-05-26T20:40:27.249Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a7/1ebae2ab5b961b5c79bb09fe7b3ac99edb190d8be4a8c510b2cf66f46468/coverage-7.14.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8011224a62280e50dab346960c03cf47aca1a1e09e608c0fb33fd6e0cc8e9500", size = 220421, upload-time = "2026-05-26T20:40:30.084Z" }, + { url = "https://files.pythonhosted.org/packages/5e/90/92aca9cf0acc95123c96cd1eb1f08917897a7f5dee01e15738922971ec31/coverage-7.14.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:12c42ec1e14f553c4f817e989365982e646e27211f10a0f717855b94a79c8906", size = 251466, upload-time = "2026-05-26T20:40:32.542Z" }, + { url = "https://files.pythonhosted.org/packages/26/2b/78048cbe3b999f6cbf9cc0d90abba6a88a3e0863a8c1c6cbc762f3f8802f/coverage-7.14.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:06144cd511cf2624873a035c5069cf297144f6e77a73ee3d7a55b605ec5efb42", size = 253973, upload-time = "2026-05-26T20:40:34.473Z" }, + { url = "https://files.pythonhosted.org/packages/8e/21/c2e33b29d1cfde484a19d437afc343c6cd30b08d78cbbf9f5aff14e57b2b/coverage-7.14.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a311d8e1da24be5c1ccf85cbfb06315dbaa1703d5a1eab3f6432c72b837917c8", size = 255318, upload-time = "2026-05-26T20:40:38.154Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ee/aad2f108d63b769121005302f16bf66db8625c88ceaba466942e09a2607e/coverage-7.14.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c79cead5b5bc584d9c71451cb984d0e3a84e0c0937379c8efcbf27c8d661b851", size = 257633, upload-time = "2026-05-26T20:40:40.164Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f8/11a2c29b4fd76d9849f81d0bb812ec0017a9396df3217214e38934a8c837/coverage-7.14.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dcbf65f1f66a26cdd88c35cf68fb4729c5d1cd2e88added72420541dfb212034", size = 251488, upload-time = "2026-05-26T20:40:42.631Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b8/9a5820de4b8ac2b71d85e3b5fb49108d7469c665f0e2ad0dd7569023e305/coverage-7.14.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fd86572566fb40189a8260446158235159bc7a82dfbc87a3b39cf4fb57fcec1c", size = 253329, upload-time = "2026-05-26T20:40:45.208Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ff/f33e4823667e27548e8fd8df44217515303f9808d0ff29817db56f87d990/coverage-7.14.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:7771b601718fdde84832c3a434ca9bbf4ae9adbc49d84198b4110700c3c77c36", size = 251291, upload-time = "2026-05-26T20:40:47.502Z" }, + { url = "https://files.pythonhosted.org/packages/68/9b/489db0ebb209054766b90a9014a45f6d26eb724c02ec21311c3733b5a644/coverage-7.14.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:39b21e212c55af06fa375e3dbf90a8a8e38792f3a910c580066d23563830ddd5", size = 255564, upload-time = "2026-05-26T20:40:49.372Z" }, + { url = "https://files.pythonhosted.org/packages/27/b5/16bc2d4c2409b23c7737edb68c83bc89e345f378050549fe1d75ac7d34d5/coverage-7.14.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f2302660e32562a532b442480121aef8aa61a5bdb20b30bf0adab29f10a5a4b4", size = 251107, upload-time = "2026-05-26T20:40:51.677Z" }, + { url = "https://files.pythonhosted.org/packages/7d/0c/2629997469a00cd069d588a41c9dc887610f2775ae89d250c4791e65272a/coverage-7.14.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:03a6f93c1ec3b7f2e77b5dbcc5573a2c21f12529a5c6bbe0f16f72303cc2fa4d", size = 252764, upload-time = "2026-05-26T20:40:54.267Z" }, + { url = "https://files.pythonhosted.org/packages/d2/ee/f78d63c8f079e0d7211c7e2401fa17e311514534ba61bae03e4b287ce4ab/coverage-7.14.1-cp314-cp314-win32.whl", hash = "sha256:8a3ce026d73290f42f08dafecbd82c193a74df280461fbf97300fec51fd133ee", size = 222837, upload-time = "2026-05-26T20:40:56.496Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b9/be539854f93a70dfbeec69117f33ec70dc42ff0b65b5b07ab8d40d04228e/coverage-7.14.1-cp314-cp314-win_amd64.whl", hash = "sha256:114c95ef29302423b87d159075805f4ab973254a2638a5d7d046c94887cc87d7", size = 223650, upload-time = "2026-05-26T20:40:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/fe/9e/24e2842fef40f35ac82ba3a7719c8023d011bf3bf652d0675316a9d088a1/coverage-7.14.1-cp314-cp314-win_arm64.whl", hash = "sha256:a07891c3f4805442b31b71e84ba3cf29ed1aa9a428284e06deeb4b23e5b46343", size = 222218, upload-time = "2026-05-26T20:41:00.321Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1d/ac0a9df5fe31c1e8bdd658074905fc12844a05c1a7e3fdb8417e97c31e23/coverage-7.14.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1101a5ebb083aecb625ebb6209d4105b58f647b093cb2dc8122d7b33f743cfe1", size = 220822, upload-time = "2026-05-26T20:41:02.281Z" }, + { url = "https://files.pythonhosted.org/packages/32/cf/f964fd9aff20323f9f1a726c97135f8a76bcd87b92dad141a456a43f3c64/coverage-7.14.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:851b9e1e4e8a4608e77c79714b2e77c0970d2ed7202a05e92ae407817481887b", size = 221084, upload-time = "2026-05-26T20:41:04.593Z" }, + { url = "https://files.pythonhosted.org/packages/d8/5e/7e5ef2aba844de2b80d678619fcf0841b42e3f37f16411226f3fe4c1016f/coverage-7.14.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d5b89cdfb2ee051b71e8c3c70bd81a9eff81100f736a269136fe1a68efe00474", size = 262454, upload-time = "2026-05-26T20:41:06.641Z" }, + { url = "https://files.pythonhosted.org/packages/64/62/75809bded87015cc4935524218a2a8ed8dd1a8498bfed30a2f4f7a4b4d34/coverage-7.14.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0177614a0370f227888b4e436a7c55686d6a9f90eb1ade2b624ba685a1686e86", size = 264578, upload-time = "2026-05-26T20:41:08.556Z" }, + { url = "https://files.pythonhosted.org/packages/f3/42/d33392dc14633525012d2d504fa1a33b05538bf535f5c1d64675e5754b78/coverage-7.14.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d69af5dea2de76fc485a83032a630523f985198b7e25be901ec60181587b01e", size = 266981, upload-time = "2026-05-26T20:41:10.824Z" }, + { url = "https://files.pythonhosted.org/packages/2a/49/0157c4428c2aca7f1e09d5565930586fd5ae36f1655f08b0daa7cf1fcae1/coverage-7.14.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:35ab22d91de736e8966b980dc355cbcdd2c6dbbcfe275f9a2991bc8a91b3df65", size = 268112, upload-time = "2026-05-26T20:41:12.966Z" }, + { url = "https://files.pythonhosted.org/packages/96/26/86b9ce71f4092b1ed325ce1421698081df1286b833400b6836912834d6e0/coverage-7.14.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:357d4e32935c36588aaba057d734fa32428c360c9fc2e4442afbf1b646beee6e", size = 261558, upload-time = "2026-05-26T20:41:15Z" }, + { url = "https://files.pythonhosted.org/packages/20/4c/c311210c5472cf5401d8422b0d7812cdd520f24417673afabda6c323faca/coverage-7.14.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:51bd64741cc6fa065abd300ede1afe5a5291ece9c31da8b24884deda48bcc3f8", size = 264447, upload-time = "2026-05-26T20:41:17.369Z" }, + { url = "https://files.pythonhosted.org/packages/fb/71/59513f8710ed3e6b0ac0a050a5b7e977bb9c9e880354863b5d00d8809256/coverage-7.14.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:9132cd363a68a4c3daa7c8704a654b1e39d3360f6f5b8ddd470608a945236c07", size = 262048, upload-time = "2026-05-26T20:41:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/84/8d/bceed32dc494f5bbf50f775cd2e78ca814953942b5ea28d3c1c3ac316f14/coverage-7.14.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:07c6290b1697b862c0478eab545eec949a0d0e4d6d03497f446d706da3b4f2de", size = 265781, upload-time = "2026-05-26T20:41:21.559Z" }, + { url = "https://files.pythonhosted.org/packages/e7/c5/9348fe40dbfd4991aaf78df2c6c3098bfb2cc834d1fd362a64b4efef855a/coverage-7.14.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:5ea0c297e27133853b4d8a3eb799bff5a2dbd9f2f41537a240d337ac9b4df890", size = 260896, upload-time = "2026-05-26T20:41:23.428Z" }, + { url = "https://files.pythonhosted.org/packages/ca/92/1ea0f03929da7cf87206b1fa24f4c8e9c158be0455481af29ec0a1f3503f/coverage-7.14.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:01b7733daad0237daa01ef80fe2dfceffc911e6a17fa7b55d14aa8214eaaaecd", size = 263214, upload-time = "2026-05-26T20:41:25.419Z" }, + { url = "https://files.pythonhosted.org/packages/f6/a9/b2493c054c0e01a643266742ab45e15744e60743f9260cd930c7142b1124/coverage-7.14.1-cp314-cp314t-win32.whl", hash = "sha256:6adc5a36984624a70bf11d7184e20fa0a49aa7c47ffab43804106a1a695ea22e", size = 223624, upload-time = "2026-05-26T20:41:27.795Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bd/3e1e6a57fccd2d7c83fcdf338e93ba98eb85c6e877dd34731ac585375490/coverage-7.14.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ddf799247318f34dbcd2efa8c95a8d0642674e926bb1774cf9b63dfd2a389d1c", size = 224728, upload-time = "2026-05-26T20:41:30.098Z" }, + { url = "https://files.pythonhosted.org/packages/bb/d7/31066cf1d2f0c6c797fce911bcfa01dd35642dc6da992a950256097c5860/coverage-7.14.1-cp314-cp314t-win_arm64.whl", hash = "sha256:145986fe66647eb489f18d9a997567a3fd358584c4b5a808769113abc07466af", size = 222752, upload-time = "2026-05-26T20:41:32.123Z" }, + { url = "https://files.pythonhosted.org/packages/8a/3c/1a983b9a745d7f83d53f057bcc5bf79ba6a2bbc08266b3f0c7d6fe630c9b/coverage-7.14.1-py3-none-any.whl", hash = "sha256:a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2", size = 211815, upload-time = "2026-05-26T20:41:34.078Z" }, +] + +[[package]] +name = "cryptography" +version = "48.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/a9/db8f313fdcd85d767d4973515e1db101f9c71f95fced83233de224673757/cryptography-48.0.0.tar.gz", hash = "sha256:5c3932f4436d1cccb036cb0eaef46e6e2db91035166f1ad6505c3c9d5a635920", size = 832984, upload-time = "2026-05-04T22:59:38.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/3d/01f6dd9190170a5a241e0e98c2d04be3664a9e6f5b9b872cde63aff1c3dd/cryptography-48.0.0-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:0c558d2cdffd8f4bbb30fc7134c74d2ca9a476f830bb053074498fbc86f41ed6", size = 8001587, upload-time = "2026-05-04T22:57:36.803Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6e/e90527eef33f309beb811cf7c982c3aeffcce8e3edb178baa4ca3ae4a6fa/cryptography-48.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f5333311663ea94f75dd408665686aaf426563556bb5283554a3539177e03b8c", size = 4690433, upload-time = "2026-05-04T22:57:40.373Z" }, + { url = "https://files.pythonhosted.org/packages/90/04/673510ed51ddff56575f306cf1617d80411ee76831ccd3097599140efdfe/cryptography-48.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7995ef305d7165c3f11ae07f2517e5a4f1d5c18da1376a0a9ed496336b69e5f3", size = 4710620, upload-time = "2026-05-04T22:57:42.935Z" }, + { url = "https://files.pythonhosted.org/packages/14/d5/e9c4ef932c8d800490c34d8bd589d64a31d5890e27ec9e9ad532be893294/cryptography-48.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:40ba1f85eaa6959837b1d51c9767e230e14612eea4ef110ee8854ada22da1bf5", size = 4696283, upload-time = "2026-05-04T22:57:45.294Z" }, + { url = "https://files.pythonhosted.org/packages/0c/29/174b9dfb60b12d59ecfc6cfa04bc88c21b42a54f01b8aae09bb6e51e4c7f/cryptography-48.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:369a6348999f94bbd53435c894377b20ab95f25a9065c283570e70150d8abc3c", size = 5296573, upload-time = "2026-05-04T22:57:47.933Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/0d29a6fd7d0d1373f0c0c88a04ba20e359b257753ac497564cd660fc1d55/cryptography-48.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a0e692c683f4df67815a2d258b324e66f4738bd7a96a218c826dce4f4bd05d8f", size = 4743677, upload-time = "2026-05-04T22:57:50.067Z" }, + { url = "https://files.pythonhosted.org/packages/30/be/eef653013d5c63b6a490529e0316f9ac14a37602965d4903efed1399f32b/cryptography-48.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:18349bbc56f4743c8b12dc32e2bccb2cf83ee8b69a3bba74ef8ae857e26b3d25", size = 4330808, upload-time = "2026-05-04T22:57:52.301Z" }, + { url = "https://files.pythonhosted.org/packages/84/9e/500463e87abb7a0a0f9f256ec21123ecde0a7b5541a15e840ea54551fd81/cryptography-48.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:7e8eac43dfca5c4cccc6dad9a80504436fca53bb9bc3100a2386d730fbe6b602", size = 4695941, upload-time = "2026-05-04T22:57:54.603Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dc/7303087450c2ec9e7fbb750e17c2abfbc658f23cbd0e54009509b7cc4091/cryptography-48.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9ccdac7d40688ecb5a3b4a604b8a88c8002e3442d6c60aead1db2a89a041560c", size = 5252579, upload-time = "2026-05-04T22:57:57.207Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c0/7101d3b7215edcdc90c45da544961fd8ed2d6448f77577460fa75a8443f7/cryptography-48.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:bd72e68b06bb1e96913f97dd4901119bc17f39d4586a5adf2d3e47bc2b9d58b5", size = 4743326, upload-time = "2026-05-04T22:57:59.535Z" }, + { url = "https://files.pythonhosted.org/packages/ac/d8/5b833bad13016f562ab9d063d68199a4bd121d18458e439515601d3357ec/cryptography-48.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:59baa2cb386c4f0b9905bd6eb4c2a79a69a128408fd31d32ca4d7102d4156321", size = 4826672, upload-time = "2026-05-04T22:58:01.996Z" }, + { url = "https://files.pythonhosted.org/packages/98/e1/7074eb8bf3c135558c73fc2bcf0f5633f912e6fb87e868a55c454080ef09/cryptography-48.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9249e3cd978541d665967ac2cb2787fd6a62bddf1e75b3e347a594d7dacf4f74", size = 4972574, upload-time = "2026-05-04T22:58:03.968Z" }, + { url = "https://files.pythonhosted.org/packages/04/70/e5a1b41d325f797f39427aa44ef8baf0be500065ab6d8e10369d850d4a4f/cryptography-48.0.0-cp311-abi3-win32.whl", hash = "sha256:9c459db21422be75e2809370b829a87eb37f74cd785fc4aa9ea1e5f43b47cda4", size = 3294868, upload-time = "2026-05-04T22:58:06.467Z" }, + { url = "https://files.pythonhosted.org/packages/f4/ac/8ac51b4a5fc5932eb7ee5c517ba7dc8cd834f0048962b6b352f00f41ebf9/cryptography-48.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:5b012212e08b8dd5edc78ef54da83dd9892fd9105323b3993eff6bea65dc21d7", size = 3817107, upload-time = "2026-05-04T22:58:08.845Z" }, + { url = "https://files.pythonhosted.org/packages/6b/84/70e3feea9feea87fd7cbe77efb2712ae1e3e6edf10749dc6e95f4e60e455/cryptography-48.0.0-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:3cb07a3ed6431663cd321ea8a000a1314c74211f823e4177fefa2255e057d1ec", size = 7986556, upload-time = "2026-05-04T22:58:11.172Z" }, + { url = "https://files.pythonhosted.org/packages/89/6e/18e07a618bb5442ba10cf4df16e99c071365528aa570dfcb8c02e25a303b/cryptography-48.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8c7378637d7d88016fa6791c159f698b3d3eed28ebf844ac36b9dc04a14dae18", size = 4684776, upload-time = "2026-05-04T22:58:13.712Z" }, + { url = "https://files.pythonhosted.org/packages/be/6a/4ea3b4c6c6759794d5ee2103c304a5076dc4b19ae1f9fe47dba439e159e9/cryptography-48.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc90c0b39b2e3c65ef52c804b72e3c58f8a04ab2a1871272798e5f9572c17d20", size = 4698121, upload-time = "2026-05-04T22:58:16.448Z" }, + { url = "https://files.pythonhosted.org/packages/2f/59/6ff6ad6cae03bb887da2a5860b2c9805f8dac969ef01ce563336c49bd1d1/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:76341972e1eff8b4bea859f09c0d3e64b96ce931b084f9b9b7db8ef364c30eff", size = 4690042, upload-time = "2026-05-04T22:58:18.544Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b4/fc334ed8cfd705aca282fe4d8f5ae64a8e0f74932e9feecb344610cf6e4d/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:55b7718303bf06a5753dcdccf2f3945cf18ad7bffde41b61226e4db31ab89a9c", size = 5282526, upload-time = "2026-05-04T22:58:20.75Z" }, + { url = "https://files.pythonhosted.org/packages/11/08/9f8c5386cc4cd90d8255c7cdd0f5baf459a08502a09de30dc51f553d38dc/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:a64697c641c7b1b2178e573cbc31c7c6684cd56883a478d75143dbb7118036db", size = 4733116, upload-time = "2026-05-04T22:58:23.627Z" }, + { url = "https://files.pythonhosted.org/packages/b8/77/99307d7574045699f8805aa500fa0fb83422d115b5400a064ddd306d7750/cryptography-48.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:561215ea3879cb1cbbf272867e2efda62476f240fb58c64de6b393ae19246741", size = 4316030, upload-time = "2026-05-04T22:58:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/fd/36/a608b98337af3cb2aff4818e406649d30572b7031918b04c87d979495348/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ad64688338ed4bc1a6618076ba75fd7194a5f1797ac60b47afe926285adb3166", size = 4689640, upload-time = "2026-05-04T22:58:27.747Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a6/825010a291b4438aecc1f568bc428189fc1175515223632477c07dc0a6df/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:906cbf0670286c6e0044156bc7d4af9cbb0ef6db9f73e52c3ec56ba6bdde5336", size = 5237657, upload-time = "2026-05-04T22:58:29.848Z" }, + { url = "https://files.pythonhosted.org/packages/b9/09/4e76a09b4caa29aad535ddc806f5d4c5d01885bd978bd984fbc6ca032cae/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:ea8990436d914540a40ab24b6a77c0969695ed52f4a4874c5137ccf7045a7057", size = 4732362, upload-time = "2026-05-04T22:58:32.009Z" }, + { url = "https://files.pythonhosted.org/packages/18/78/444fa04a77d0cb95f417dda20d450e13c56ba8e5220fc892a1658f44f882/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c18684a7f0cc9a3cb60328f496b8e3372def7c5d2df39ac267878b05565aaaae", size = 4819580, upload-time = "2026-05-04T22:58:34.254Z" }, + { url = "https://files.pythonhosted.org/packages/38/85/ea67067c70a1fd4be2c63d35eeed82658023021affccc7b17705f8527dd2/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9be5aafa5736574f8f15f262adc81b2a9869e2cfe9014d52a44633905b40d52c", size = 4963283, upload-time = "2026-05-04T22:58:36.376Z" }, + { url = "https://files.pythonhosted.org/packages/75/54/cc6d0f3deac3e81c7f847e8a189a12b6cdd65059b43dad25d4316abd849a/cryptography-48.0.0-cp314-cp314t-win32.whl", hash = "sha256:c17dfe85494deaeddc5ce251aebd1d60bbe6afc8b62071bb0b469431a000124f", size = 3270954, upload-time = "2026-05-04T22:58:38.791Z" }, + { url = "https://files.pythonhosted.org/packages/49/67/cc947e288c0758a4e5473d1dcb743037ab7785541265a969240b8885441a/cryptography-48.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27241b1dc9962e056062a8eef1991d02c3a24569c95975bd2322a8a52c6e5e12", size = 3797313, upload-time = "2026-05-04T22:58:40.746Z" }, + { url = "https://files.pythonhosted.org/packages/f2/63/61d4a4e1c6b6bab6ce1e213cd36a24c415d90e76d78c5eb8577c5541d2e8/cryptography-48.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:58d00498e8933e4a194f3076aee1b4a97dfec1a6da444535755822fe5d8b0b86", size = 7983482, upload-time = "2026-05-04T22:58:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ac/f5b5995b87770c693e2596559ffafe195b4033a57f14a82268a2842953f3/cryptography-48.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:614d0949f4790582d2cc25553abd09dd723025f0c0e7c67376a1d77196743d6e", size = 4683266, upload-time = "2026-05-04T22:58:46.064Z" }, + { url = "https://files.pythonhosted.org/packages/ec/c6/8b14f67e18338fbc4adb76f66c001f5c3610b3e2d1837f268f47a347dbbb/cryptography-48.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ce4bfae76319a532a2dc68f82cc32f5676ee792a983187dac07183690e5c66f", size = 4696228, upload-time = "2026-05-04T22:58:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/ea/73/f808fbae9514bd91b47875b003f13e284c8c6bdfd904b7944e803937eec1/cryptography-48.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:2eb992bbd4661238c5a397594c83f5b4dc2bc5b848c365c8f991b6780efcc5c7", size = 4689097, upload-time = "2026-05-04T22:58:50.9Z" }, + { url = "https://files.pythonhosted.org/packages/93/01/d86632d7d28db8ae83221995752eeb6639ffb374c2d22955648cf8d52797/cryptography-48.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:22a5cb272895dce158b2cacdfdc3debd299019659f42947dbdac6f32d68fe832", size = 5283582, upload-time = "2026-05-04T22:58:53.017Z" }, + { url = "https://files.pythonhosted.org/packages/02/e1/50edc7a50334807cc4791fc4a0ce7468b4a1416d9138eab358bfc9a3d70b/cryptography-48.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2b4d59804e8408e2fea7d1fbaf218e5ec984325221db76e6a241a9abd6cdd95c", size = 4730479, upload-time = "2026-05-04T22:58:55.611Z" }, + { url = "https://files.pythonhosted.org/packages/6f/af/99a582b1b1641ff5911ac559beb45097cf79efd4ead4657f578ef1af2d47/cryptography-48.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:984a20b0f62a26f48a3396c72e4bc34c66e356d356bf370053066b3b6d54634a", size = 4326481, upload-time = "2026-05-04T22:58:57.607Z" }, + { url = "https://files.pythonhosted.org/packages/90/ee/89aa26a06ef0a7d7611788ffd571a7c50e368cc6a4d5eef8b4884e866edb/cryptography-48.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5a5ed8fde7a1d09376ca0b40e68cd59c69fe23b1f9768bd5824f54681626032a", size = 4688713, upload-time = "2026-05-04T22:59:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/70/ba/bcb1b0bb7a33d4c7c0c4d4c7874b4a62ae4f56113a5f4baefa362dfb1f0f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:8cd666227ef7af430aa5914a9910e0ddd703e75f039cef0825cd0da71b6b711a", size = 5238165, upload-time = "2026-05-04T22:59:02.317Z" }, + { url = "https://files.pythonhosted.org/packages/c9/70/ca4003b1ce5ca3dc3186ada51908c8a9b9ff7d5cab83cc0d43ee14ec144f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9071196d81abc88b3516ac8cdfad32e2b66dd4a5393a8e68a961e9161ddc6239", size = 4729947, upload-time = "2026-05-04T22:59:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/4ec7cf774207905aef1a8d11c3750d5a1db805eb380ee4e16df317870128/cryptography-48.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1e2d54c8be6152856a36f0882ab231e70f8ec7f14e93cf87db8a2ed056bf160c", size = 4822059, upload-time = "2026-05-04T22:59:07.802Z" }, + { url = "https://files.pythonhosted.org/packages/1e/75/a2e55f99c16fcac7b5d6c1eb19ad8e00799854d6be5ca845f9259eae1681/cryptography-48.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5da777e32ffed6f85a7b2b3f7c5cbc88c146bfcd0a1d7baf5fcc6c52ee35dd4", size = 4960575, upload-time = "2026-05-04T22:59:09.851Z" }, + { url = "https://files.pythonhosted.org/packages/b8/23/6e6f32143ab5d8b36ca848a502c4bcd477ae75b9e1677e3530d669062578/cryptography-48.0.0-cp39-abi3-win32.whl", hash = "sha256:77a2ccbbe917f6710e05ba9adaa25fb5075620bf3ea6fb751997875aff4ae4bd", size = 3279117, upload-time = "2026-05-04T22:59:12.019Z" }, + { url = "https://files.pythonhosted.org/packages/9d/9a/0fea98a70cf1749d41d738836f6349d97945f7c89433a259a6c2642eefeb/cryptography-48.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:16cd65b9330583e4619939b3a3843eec1e6e789744bb01e7c7e2e62e33c239c8", size = 3792100, upload-time = "2026-05-04T22:59:14.884Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/b7/cd8080344452e4874aae67c40d8940e2b4d47b01601a8fd9f44786c757c7/debugpy-1.8.20.tar.gz", hash = "sha256:55bc8701714969f1ab89a6d5f2f3d40c36f91b2cbe2f65d98bf8196f6a6a2c33", size = 1645207, upload-time = "2026-01-29T23:03:28.199Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/57/7f34f4736bfb6e00f2e4c96351b07805d83c9a7b33d28580ae01374430f7/debugpy-1.8.20-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:4ae3135e2089905a916909ef31922b2d733d756f66d87345b3e5e52b7a55f13d", size = 2550686, upload-time = "2026-01-29T23:03:42.023Z" }, + { url = "https://files.pythonhosted.org/packages/ab/78/b193a3975ca34458f6f0e24aaf5c3e3da72f5401f6054c0dfd004b41726f/debugpy-1.8.20-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:88f47850a4284b88bd2bfee1f26132147d5d504e4e86c22485dfa44b97e19b4b", size = 4310588, upload-time = "2026-01-29T23:03:43.314Z" }, + { url = "https://files.pythonhosted.org/packages/c1/55/f14deb95eaf4f30f07ef4b90a8590fc05d9e04df85ee379712f6fb6736d7/debugpy-1.8.20-cp312-cp312-win32.whl", hash = "sha256:4057ac68f892064e5f98209ab582abfee3b543fb55d2e87610ddc133a954d390", size = 5331372, upload-time = "2026-01-29T23:03:45.526Z" }, + { url = "https://files.pythonhosted.org/packages/a1/39/2bef246368bd42f9bd7cba99844542b74b84dacbdbea0833e610f384fee8/debugpy-1.8.20-cp312-cp312-win_amd64.whl", hash = "sha256:a1a8f851e7cf171330679ef6997e9c579ef6dd33c9098458bd9986a0f4ca52e3", size = 5372835, upload-time = "2026-01-29T23:03:47.245Z" }, + { url = "https://files.pythonhosted.org/packages/15/e2/fc500524cc6f104a9d049abc85a0a8b3f0d14c0a39b9c140511c61e5b40b/debugpy-1.8.20-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:5dff4bb27027821fdfcc9e8f87309a28988231165147c31730128b1c983e282a", size = 2539560, upload-time = "2026-01-29T23:03:48.738Z" }, + { url = "https://files.pythonhosted.org/packages/90/83/fb33dcea789ed6018f8da20c5a9bc9d82adc65c0c990faed43f7c955da46/debugpy-1.8.20-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:84562982dd7cf5ebebfdea667ca20a064e096099997b175fe204e86817f64eaf", size = 4293272, upload-time = "2026-01-29T23:03:50.169Z" }, + { url = "https://files.pythonhosted.org/packages/a6/25/b1e4a01bfb824d79a6af24b99ef291e24189080c93576dfd9b1a2815cd0f/debugpy-1.8.20-cp313-cp313-win32.whl", hash = "sha256:da11dea6447b2cadbf8ce2bec59ecea87cc18d2c574980f643f2d2dfe4862393", size = 5331208, upload-time = "2026-01-29T23:03:51.547Z" }, + { url = "https://files.pythonhosted.org/packages/13/f7/a0b368ce54ffff9e9028c098bd2d28cfc5b54f9f6c186929083d4c60ba58/debugpy-1.8.20-cp313-cp313-win_amd64.whl", hash = "sha256:eb506e45943cab2efb7c6eafdd65b842f3ae779f020c82221f55aca9de135ed7", size = 5372930, upload-time = "2026-01-29T23:03:53.585Z" }, + { url = "https://files.pythonhosted.org/packages/33/2e/f6cb9a8a13f5058f0a20fe09711a7b726232cd5a78c6a7c05b2ec726cff9/debugpy-1.8.20-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:9c74df62fc064cd5e5eaca1353a3ef5a5d50da5eb8058fcef63106f7bebe6173", size = 2538066, upload-time = "2026-01-29T23:03:54.999Z" }, + { url = "https://files.pythonhosted.org/packages/c5/56/6ddca50b53624e1ca3ce1d1e49ff22db46c47ea5fb4c0cc5c9b90a616364/debugpy-1.8.20-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:077a7447589ee9bc1ff0cdf443566d0ecf540ac8aa7333b775ebcb8ce9f4ecad", size = 4269425, upload-time = "2026-01-29T23:03:56.518Z" }, + { url = "https://files.pythonhosted.org/packages/c5/d9/d64199c14a0d4c476df46c82470a3ce45c8d183a6796cfb5e66533b3663c/debugpy-1.8.20-cp314-cp314-win32.whl", hash = "sha256:352036a99dd35053b37b7803f748efc456076f929c6a895556932eaf2d23b07f", size = 5331407, upload-time = "2026-01-29T23:03:58.481Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d9/1f07395b54413432624d61524dfd98c1a7c7827d2abfdb8829ac92638205/debugpy-1.8.20-cp314-cp314-win_amd64.whl", hash = "sha256:a98eec61135465b062846112e5ecf2eebb855305acc1dfbae43b72903b8ab5be", size = 5372521, upload-time = "2026-01-29T23:03:59.864Z" }, + { url = "https://files.pythonhosted.org/packages/e0/c3/7f67dea8ccf8fdcb9c99033bbe3e90b9e7395415843accb81428c441be2d/debugpy-1.8.20-py2.py3-none-any.whl", hash = "sha256:5be9bed9ae3be00665a06acaa48f8329d2b9632f15fd09f6a9a8c8d9907e54d7", size = 5337658, upload-time = "2026-01-29T23:04:17.404Z" }, +] + +[[package]] +name = "dependency-injector" +version = "4.49.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/be/26bb530d06618fb0bb34244d46b0d0ccc53d0974e680d8653f1b1b313a0e/dependency_injector-4.49.0.tar.gz", hash = "sha256:17a04dbfaa8159f1dc068fc26bc2fa0af9774cdd87f99e3b61bd74c9e7171589", size = 1168930, upload-time = "2026-03-22T21:20:05.524Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/5d/cc49fb34e0c03aa56d7583de00e2f8f5aa1b8a878b695e970dcdb751a477/dependency_injector-4.49.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:9690192fd5aed07f21dfdfae07696fef12c68bf98e4c0e1af8f8128b255a74a7", size = 1769395, upload-time = "2026-03-22T21:19:14.163Z" }, + { url = "https://files.pythonhosted.org/packages/7f/97/b3b144c96e1f7fff0a7e2e83eb0767bd23b6bacffd0ac8cff397d350e94d/dependency_injector-4.49.0-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f91f2a191bdb17bd3068f32fe65f04128bc162c6237ea554c117b303c22aaabb", size = 1852089, upload-time = "2026-03-22T21:19:16.354Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e7/33061f427bcb56c8936d5db464d757d926bf752a874683fb64b2ee225463/dependency_injector-4.49.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:733c0d88b26be17a48e5741cc3e3956080112e40c07a38ff38e99dfa772f9772", size = 1765608, upload-time = "2026-03-22T21:19:19.217Z" }, + { url = "https://files.pythonhosted.org/packages/1e/4d/2751a6c055de4a200d65af297ecd926d6b6107f66f3849e8122928abf461/dependency_injector-4.49.0-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:45720b30a2a3df6e5e2320e242f6dd94540ba27c3da57cafdc37fdeec59d5ce3", size = 1746555, upload-time = "2026-03-22T21:19:21.231Z" }, + { url = "https://files.pythonhosted.org/packages/02/6f/f74fee9629528f0879295b9f89a5c751d3ad931eca0c78407f715e5472a6/dependency_injector-4.49.0-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b5d2f1be2dc971db47b1305a83b5a8c24d0eba7fb4cea7845679f9c9f24a0a9", size = 1843223, upload-time = "2026-03-22T21:19:23.356Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f0/45948c7c933f063039a44afb4bd61747a7bafd50693e6ccdc972fac0839c/dependency_injector-4.49.0-cp310-abi3-win32.whl", hash = "sha256:0593c8aaade651a5a88ff8ba1271a8364773e76d3aa2efbeacc3be4969cafd1c", size = 1546172, upload-time = "2026-03-22T21:19:25.392Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b5/1d8e5627137cb9a6812ecaa468eaf39154f6605c5088da4749e5a8579483/dependency_injector-4.49.0-cp310-abi3-win_amd64.whl", hash = "sha256:fa4b587158b0d65a1f9681ca648da3f9bf90f312f68c2f2e73cc58296ec2bf45", size = 1674743, upload-time = "2026-03-22T21:19:27.018Z" }, +] + +[[package]] +name = "dill" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/81/e1/56027a71e31b02ddc53c7d65b01e68edf64dea2932122fe7746a516f75d5/dill-0.4.1.tar.gz", hash = "sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa", size = 187315, upload-time = "2026-01-19T02:36:56.85Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" }, +] + +[[package]] +name = "fastapi" +version = "0.136.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/2d/ff8d91d7b564d464629a0fd50a4489c97fcb836ac230bf3a7269232a9b1f/fastapi-0.136.3.tar.gz", hash = "sha256:e487fae93ad408e6f47641ee4dfe389864fd7bec92e547ea8498fc13f43e83ab", size = 396410, upload-time = "2026-05-23T18:53:15.192Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/82/45359b62a067409bd929ae8a56b8ed13e5a8c8a61194b3c236920999ab83/fastapi-0.136.3-py3-none-any.whl", hash = "sha256:3d2a69bdf04b7e9f3afa292c3bc7a98816bbfafa10bc9b45f3f3700d2f761620", size = 117481, upload-time = "2026-05-23T18:53:16.924Z" }, +] + +[[package]] +name = "greenlet" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/6e/802acd792aebb2256fbbee8cacf2727faaeb6f240ac11008f09eae4414bc/greenlet-3.5.1.tar.gz", hash = "sha256:5a56aeb7d5d9cc4b3a735efb5095bd4b4f6f0e4f93e5ca876d0e2315137b7829", size = 197356, upload-time = "2026-05-20T15:05:03.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/37/4549f149c9797c21b32c2683c33522af22522099de128b2406672526d005/greenlet-3.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:fa4f98af3a528f0c3fd592a26df7f376f93329c8f4d987f6bb979057af8bf5e2", size = 286220, upload-time = "2026-05-20T13:07:28.463Z" }, + { url = "https://files.pythonhosted.org/packages/38/ff/a4f436709716965eaab9f36ea7b906c8a927fbe32fb1372a2071d964f6b1/greenlet-3.5.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffea73584b216150eab159b6d12348fb253e68757974de1e2c40d8a318ac89ed", size = 601585, upload-time = "2026-05-20T14:00:06.141Z" }, + { url = "https://files.pythonhosted.org/packages/65/ad/54bc3fcee3ad368a61b19b67d88117f7a8c29727bf71fffdeda81fbd946e/greenlet-3.5.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1072b4f9edcc1e192d9283a66a3e68d6b84c561de33a83d7858beb9ba1effe10", size = 614215, upload-time = "2026-05-20T14:05:42.675Z" }, + { url = "https://files.pythonhosted.org/packages/40/69/b91cda0647df839483201545913514c2827ebea5e5ccdf931842763bc127/greenlet-3.5.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:add5217d68b31130f0beca584d7fef4878327d2e31642b66618a14eef312b63b", size = 611358, upload-time = "2026-05-20T13:14:26.37Z" }, + { url = "https://files.pythonhosted.org/packages/59/90/3cf77e080350cd02fa307bb2abf05df48f4482c240275bbd2c203ba8bb1c/greenlet-3.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a5ea42a752d47a145eae922b605cd1634665ac3d5ec1e72402d5048e8d60d207", size = 1570475, upload-time = "2026-05-20T14:02:25.29Z" }, + { url = "https://files.pythonhosted.org/packages/65/2c/18cece62045e74598c3c393f70dce4a63f56222015ba29a5d4eeb04f764c/greenlet-3.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5551170cf4f5ff5623e9af81323751979fee2c731e2287b61f73cd27257b823", size = 1635625, upload-time = "2026-05-20T13:14:34.027Z" }, + { url = "https://files.pythonhosted.org/packages/30/f5/310d104ddf41eb5a70f4c268d22508dfb0c3c8e86fec152be34d0d2ed819/greenlet-3.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c8bb982ad117d29478ef8f5533e97df21f1e2befd17a299257b0c96d1371c0b", size = 238791, upload-time = "2026-05-20T13:10:39.018Z" }, + { url = "https://files.pythonhosted.org/packages/62/90/ceca11f504cd23a8047a3dea31919adc48df9b626dd0c13f0d858734fdfd/greenlet-3.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:80eb4b04dadc4e67df3fae179a32c4706a3f495bc7f22fc8a81115d5f5512188", size = 235580, upload-time = "2026-05-20T13:08:45.056Z" }, + { url = "https://files.pythonhosted.org/packages/27/69/7f7e5372d998b81001899b1c0823c957aa413ba0f2662e65821611cc31e4/greenlet-3.5.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:51518ff74664078fc51bffcc6fc529b0df5ae58da192691cee765d45ce944a2b", size = 285060, upload-time = "2026-05-20T13:08:51.899Z" }, + { url = "https://files.pythonhosted.org/packages/b1/bf/387f9b6b865fd2ae0d0be09e0004827295a01b71be76ed350dd1e28a91a4/greenlet-3.5.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ffdb3c0bb002c99cd8f298957e046c3dbf6006b5b7cdf11a4e19194624a0a0a", size = 604370, upload-time = "2026-05-20T14:00:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/32/f5/169ce3d4e4c67291bd18f8cbe0299c9f3e45102c7f1fb3c14780c93e4532/greenlet-3.5.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7715a5a2c3378ba602c3a440558261e13a820bb53a82693aacd7b7f6d964e283", size = 616987, upload-time = "2026-05-20T14:05:44.237Z" }, + { url = "https://files.pythonhosted.org/packages/ee/e5/7f2e41d5273be07e77560d61ea4e56485b4d6c316d2a84518c62d1364061/greenlet-3.5.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc71ff466927a201b08305acac451ebe1aedfcea002f62f1f2f2ac2ac1e6a135", size = 613911, upload-time = "2026-05-20T13:14:27.539Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a4/fbdc67579b73615a1f91615e814303cc71e06128f7baaba87be79b8fb90c/greenlet-3.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd443683db272ebaaca03af98c0b063ab30db70ea8a31a1559f35e3f7b744ccd", size = 1570689, upload-time = "2026-05-20T14:02:27.225Z" }, + { url = "https://files.pythonhosted.org/packages/e6/b4/77abbe35078be39718a46cd49caf16bceb35662f97a34101dca28aa98e47/greenlet-3.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:089fff7a6ce8d9316d1f65ebc00273a56be258c1725b32b94de90a3a979557e1", size = 1635602, upload-time = "2026-05-20T13:14:36.344Z" }, + { url = "https://files.pythonhosted.org/packages/37/f7/129f27ca700845b8ee8ca88ce7f43435a1239c2eddb7677fc938822762cf/greenlet-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:110a1ca7b49b014b097f6078272c3f4ed31af45b254de5228b79adba879f6af9", size = 238683, upload-time = "2026-05-20T13:11:50.57Z" }, + { url = "https://files.pythonhosted.org/packages/6d/5c/a485a36e87df8d8fd0632ee01511244f5156a20ed3746cc6599340326395/greenlet-3.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:f16ba1efc0715b680a18b8123d90dad887c6112ae3555b4b5c32c149540c6b4e", size = 235499, upload-time = "2026-05-20T13:12:42.028Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/c62454606daf5640369c94d8a9dd540599b1bfc090e2d2180cb77f4038d2/greenlet-3.5.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d8ab31c9de8651a2facdd5c5bb0011f2380dd1a7af78ce2adf4b56095294fc07", size = 285579, upload-time = "2026-05-20T13:08:56.396Z" }, + { url = "https://files.pythonhosted.org/packages/ec/71/c4270398c2eba968a6071af1dfbdcaeee6ec1c24bc8b435b8cc452700da6/greenlet-3.5.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e300185139abc337ade480c327183adf42a875ac7181bfe66d7d4efea31fbea", size = 651106, upload-time = "2026-05-20T14:00:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ab/71e34b78a44ec271fb5f550c17bc46d301ddc5953890d935f270b0dcdb5a/greenlet-3.5.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7ffdb990dcaa0234cf9845aead5df2e3c3a8b6507d409274dd87e0d5ab05ffc2", size = 663478, upload-time = "2026-05-20T14:05:45.88Z" }, + { url = "https://files.pythonhosted.org/packages/77/96/4efd6fa5c62c85426a0c19077a586258ebc3a2a146ff2493e4312a697a22/greenlet-3.5.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f82b3597e9d83b63408affed0b48fd0f54935edac4302237b9a837be0dae33c", size = 660800, upload-time = "2026-05-20T13:14:29.129Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e0/6c71401a25cac7000261304e866a2f2cc04dc74810d40e2f118aa4799495/greenlet-3.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c0141e37414c10164e702b8fb1473304221ad98f71600850c6ef7ff4880feba0", size = 1617518, upload-time = "2026-05-20T14:02:28.662Z" }, + { url = "https://files.pythonhosted.org/packages/41/26/c5c06643e8c0af9e7bf18e16cb51d0ab7625155f0392e1c9015d66d556cd/greenlet-3.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:50ae25a67bea74ea41fb14b960bc532df73eb713417b2d61892dced82fe8d3bc", size = 1681593, upload-time = "2026-05-20T13:14:39.417Z" }, + { url = "https://files.pythonhosted.org/packages/8a/bd/e11a108317485075e68af9d23039619b86b28130c3b50d227d42edece64b/greenlet-3.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:8a17c42330e261299766b75ac1ea32caa437a9453c8f65d16a13140db378ecd3", size = 239800, upload-time = "2026-05-20T13:09:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/8e8e8417b7bf28639a5a56356ef934d0375e1d0c70a57e04d7701e870ffe/greenlet-3.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:7b5f5fae05b8ac6d176a61b60c394a8cbdc2b5b91b81793066e68745cf165e54", size = 236862, upload-time = "2026-05-20T13:09:10.498Z" }, + { url = "https://files.pythonhosted.org/packages/90/12/41bf27fde4d3605d3773ae57751eda182b8be2f5398011c041173b1d9534/greenlet-3.5.1-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:ea8da1e900d758d078810d4255d8c6aa572181896a31ec79d779eb79c3adc9ad", size = 293637, upload-time = "2026-05-20T13:12:35.529Z" }, + { url = "https://files.pythonhosted.org/packages/44/44/ba14b23e9757707050c2f397d305bbcae62e5d7cad122f8b6baec5ae4a1f/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a19570c52a21420dcbc94e661994bc325c0b5b11304540fed514586da5dc8f2e", size = 650840, upload-time = "2026-05-20T14:00:11.079Z" }, + { url = "https://files.pythonhosted.org/packages/a8/37/5ddc2b686a6844f91abecef43411842426da2e1573f60b49ecf2547f4ae1/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3d955c89b75eeca4723d7cc14135f393cd47c32e2a6cb4a8e4c6e760a26b0986", size = 656416, upload-time = "2026-05-20T14:05:47.118Z" }, + { url = "https://files.pythonhosted.org/packages/e1/f0/d17510297c35a2992712f0bf84de3779749999f7d3d63aa1f09db7c62dbe/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2daaaebd1a5aa88c49045b6baf9310b3263796bd88db713edf37cf53e7bb4e", size = 654397, upload-time = "2026-05-20T13:14:30.696Z" }, + { url = "https://files.pythonhosted.org/packages/37/eb/147387705bb89092645b012586e7273cb5ed3c90ef7eaf3a69173eaf0209/greenlet-3.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3bfbd69cc349e43bf3a8ae1c85548ff0718efc887615c2db16c3833d7b0b072d", size = 1614469, upload-time = "2026-05-20T14:02:30.192Z" }, + { url = "https://files.pythonhosted.org/packages/a6/4e/37ee0da7732b7aa9896f17e15579a9df34b9fcb9dd494f0adfa749af6623/greenlet-3.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4378720dd888136c27215a0214d32a4d37c3852765d45bc37aad0623423cfd78", size = 1675115, upload-time = "2026-05-20T13:14:40.972Z" }, + { url = "https://files.pythonhosted.org/packages/57/f3/97dfcf4a6eb5077f8a672234216fb5923eb89f2cab7081cb10b2cf75b605/greenlet-3.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:45718441607f9325d948db98cbc691276059316d0358c188c246da4e1d4d23d2", size = 245246, upload-time = "2026-05-20T13:12:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/5d/73/d7f72e34b582f694f4a9b248162db7b09cc458a259ba8f0c0bfa1a34ea7d/greenlet-3.5.1-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:2baee5ca02031757ffe8cc3d69f0cc0aec7065ce362622da74f32d3bcab1c541", size = 285575, upload-time = "2026-05-20T13:12:07.043Z" }, + { url = "https://files.pythonhosted.org/packages/df/59/fa9c6e87dc8ad27a95dabe2f29f372b733d05a8a67470f6c901ed9975655/greenlet-3.5.1-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b1ec3274918a81d3ea778b9e75b56b72b33f300edb6cf7f3a7fe1dae56683de", size = 656428, upload-time = "2026-05-20T14:00:12.556Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f9/e753408871eaa61dfe35e619cfc67512b036fde99893685d50eea9e07146/greenlet-3.5.1-cp315-cp315-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:111e2390ffffc47d5840b01711dd7fac07d4c09283d0283e7f3264b14e284c64", size = 667064, upload-time = "2026-05-20T14:05:48.662Z" }, + { url = "https://files.pythonhosted.org/packages/96/27/5565b5b40389f1c7753003a07e21892fda8660926787036d5bc0308b8113/greenlet-3.5.1-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e630136e905fe5ff43e86945ae41220b6d1470956a39220e708110ac48d01ea5", size = 665697, upload-time = "2026-05-20T13:14:32.943Z" }, + { url = "https://files.pythonhosted.org/packages/cf/82/e7de4178c0c2d1c9a5a3be3cc0b33e46a85b3ee4a77c071bf7ad8600e079/greenlet-3.5.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:975eac34b44a7077ca4d421348455b94f0f518246a7f14bc6d2fdcfe5b584368", size = 1621256, upload-time = "2026-05-20T14:02:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/00/10/f2dddcf7dacac17dfc68691809589adad06135eb28930429cf58a6467a2f/greenlet-3.5.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:9ab3c3a0b2ae6198e67c898dad5215a49f9ae0d0081b3c3ec59f333e39eeca26", size = 1685956, upload-time = "2026-05-20T13:14:42.55Z" }, + { url = "https://files.pythonhosted.org/packages/22/17/4a232b32133230ada52f70e9d7f5b65b0caef8772f01849bd8d149e7e4ca/greenlet-3.5.1-cp315-cp315-win_amd64.whl", hash = "sha256:cbfc69be86e10dcfef5b1e6269d1d6926552aa89ee39e1de3353360c1b6989ab", size = 239802, upload-time = "2026-05-20T13:13:15.481Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ae/4e623a7e6d4d2a5f4cb8e4c82de4169fc637942caae68d6e676b8a128ac5/greenlet-3.5.1-cp315-cp315-win_arm64.whl", hash = "sha256:92fd6d44ac5e5a887c8a5dc4a8ba0ba908527c31c12f78c6bc7dcfe8aab279f6", size = 236853, upload-time = "2026-05-20T13:15:37.301Z" }, + { url = "https://files.pythonhosted.org/packages/7a/57/816d9cff29119da3505b3d6a5e14a8af89006ac36f47f891ff293ee05af1/greenlet-3.5.1-cp315-cp315t-macosx_11_0_universal2.whl", hash = "sha256:a6fdf2433a5441ef9a95464f7c3e674775da1c8c1177fff311cee1acad4626ed", size = 293877, upload-time = "2026-05-20T13:10:19.078Z" }, + { url = "https://files.pythonhosted.org/packages/23/a1/59b0a7c7d140ff1a75626680b9a9899b79a9176cab298b394968fb023295/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7546556f0d649f99f6a361098a55f761181bb2ea12ff150bb16d26092ad88244", size = 655333, upload-time = "2026-05-20T14:00:14.758Z" }, + { url = "https://files.pythonhosted.org/packages/72/1b/5efe127597625042218939d01855109f352779050768b670b52edcc16a6c/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d5ee3ea898009fa898f85f9982255d35278c477bebe185beca249cab42d4526c", size = 659443, upload-time = "2026-05-20T14:05:50.159Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6d/c404246ea4d22d097a7426d0efb5b781bd7eb67715f09e79001bd552ab18/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5c81f74d204d3edd136ebfd50dce53acbb776995d721a0fe801626cfc93b8cd", size = 658356, upload-time = "2026-05-20T13:14:35.091Z" }, + { url = "https://files.pythonhosted.org/packages/51/02/f8ee37fb6d2219329f350af241c27fcf12df57e723d11f6fc6d3bacdadaa/greenlet-3.5.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:2c18ef16bf6d4dd410e4dd52996888ea1497be26892fe5bbc73580aba4287b8e", size = 1619216, upload-time = "2026-05-20T14:02:33.403Z" }, + { url = "https://files.pythonhosted.org/packages/93/c5/3dc9475ace2c7a3680da12372cddd7f1ac874eb410a1ac48d3e9dab83782/greenlet-3.5.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:17d86354f0ae6b61bf9be5148d0dd34e06c3cb7c602c671f79f29ac3b150e659", size = 1678427, upload-time = "2026-05-20T13:14:43.71Z" }, + { url = "https://files.pythonhosted.org/packages/df/4e/750c15c317a41ffb36f0bf40b933e3d744a7dede61889f74443ea69690cf/greenlet-3.5.1-cp315-cp315t-win_amd64.whl", hash = "sha256:e7516cf6ae6b8a582c2770a0caed47b8a48373ed732c33d69a72913ae6ac923e", size = 245225, upload-time = "2026-05-20T13:13:59.366Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/d3baea2eeb7b617efd47e87ca06e2ec2c6118d303aa9e918e0ce16eadc10/greenlet-3.5.1-cp315-cp315t-win_arm64.whl", hash = "sha256:5028648bf2253ec4745add746129d3904121fa7fe871a76bed23c5720573ce0a", size = 239590, upload-time = "2026-05-20T13:13:37.382Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httptools" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/e5/d471fcb0e14523fe1c3f4ba58ca52480e7bd70ad7109a3846bc75892f7fb/httptools-0.8.0.tar.gz", hash = "sha256:6b2a32f18d97e16e90827d7a819ffa8dbd8cc245fc4e1fa9d1095b54ef4bd999", size = 271342, upload-time = "2026-05-25T22:17:48.841Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/88/1d21a36da8f5cb0fa49eafd4b169eba5608d57e75bbcf61845cbc6243216/httptools-0.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:880490234c10f70a9830743097e8958d6e4b9f5a0ffc24515023afeef984054d", size = 208247, upload-time = "2026-05-25T22:17:07.843Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/cc4feea2945cb3051038f090c9b36bd5b8a9d7f5a894a506a8983e33fd1c/httptools-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5931891fb7b441b8a3853cf1b85c82c903defce084dd5f6771ca46e31bf862c5", size = 113064, upload-time = "2026-05-25T22:17:09.136Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a6/febbb8b8db0f58b38e44ad6cb946e6a255ae49b55f2e8543408fb7501ccd/httptools-0.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b15fc622b0f869d19207c4089a501d9bcc63ca5e071ffdd2f03f922df882dcb2", size = 523851, upload-time = "2026-05-25T22:17:10.106Z" }, + { url = "https://files.pythonhosted.org/packages/b7/e4/f90a0df0b83beff265b7e3b65f2a4cefd95792d4be0ac3e16049f2acd3c2/httptools-0.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:425f83884fd6343828d8c565f046cb72b6d19063f6924093e11bcd8e1548cd09", size = 518842, upload-time = "2026-05-25T22:17:11.218Z" }, + { url = "https://files.pythonhosted.org/packages/9e/2d/0c9ac76dd2c893841fbf6498d6acec4f2442e1b7067f6e3e316a80e494e8/httptools-0.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ef7c3c97f4311c7be57e2986629df89d49cb434dbff78eafcd48c2bff986b15a", size = 501238, upload-time = "2026-05-25T22:17:12.728Z" }, + { url = "https://files.pythonhosted.org/packages/ca/42/906adc91ae3a5fa9c59c0a2f21c139725bd7e5b41ae6acd485cd14123ebf/httptools-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a1afd7c9fbff0d9f5d489c4ce2768bd09c84a46ddefc7161e6aa82ae35c85745", size = 509567, upload-time = "2026-05-25T22:17:13.842Z" }, + { url = "https://files.pythonhosted.org/packages/05/0b/4240efeb672751ee5b9b380cb0e3fdc050bc05f68adc7a8aefc4fcd9a69a/httptools-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:cd96f29b4bab1d42fa6e3d008711c75e0f79e94e06827330160e3a304227f150", size = 90918, upload-time = "2026-05-25T22:17:15.155Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e5/8cfcabc5546e8022f168be28bcdaa128a240a0befdd03b59d558b4f18bd6/httptools-0.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:614ceea8ea606848bece2338ac03b3ce5324bcb4be8dc7d377ed708012fa4db8", size = 205148, upload-time = "2026-05-25T22:17:16.333Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0e/0fb14848c19a686c8062ff9067c1a48793e3224b47bc5b201535b6036fce/httptools-0.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2d689918c15a013c65ef52d9fd495d766893ab831a2c8d89f2ac5940a5df847c", size = 111368, upload-time = "2026-05-25T22:17:17.586Z" }, + { url = "https://files.pythonhosted.org/packages/2e/1b/46f1cecf06b9bbde8e4b8c88034ac7908989e5ff7a3a388ef38392949c1f/httptools-0.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:eb3028cca2fc0a6d720e52ef61d8ebb62fcbfeb1de56874546d858d3f25a26b7", size = 486447, upload-time = "2026-05-25T22:17:18.564Z" }, + { url = "https://files.pythonhosted.org/packages/77/00/258bfc0837221f81d9725c45f9b948a6a6b2994a147a4fb66e85100c668f/httptools-0.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:88bdd940f2b5d487b4d032c6afa5489a7dc4694410d43de3c38c4fb3af0dc45d", size = 482448, upload-time = "2026-05-25T22:17:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/04/ab/d1cef3b5523f4d272a70f42a776c3169a2dddfe3a54de4b2ce4a36341528/httptools-0.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a43c9dd399758ccc0531acb0a3c4a6c299ee893ee9400e9c893b7bdcfae0681", size = 464460, upload-time = "2026-05-25T22:17:20.882Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/5d1d072442277bb2b3434e0e60690b8e8c23840ef7de8b6ea54040a536d3/httptools-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0770728beb05094c809b98e814edff5fef69d26ad7d21185f2f6d5884a0ba683", size = 471312, upload-time = "2026-05-25T22:17:22.085Z" }, + { url = "https://files.pythonhosted.org/packages/0d/66/b96623b27e51a68199ef4efdda0613cced9233fe3062ac74e50749c5ad37/httptools-0.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:7685df791fad561384bfb139e77fde27a1ffd93134e016f95a0db424ffbf77b1", size = 90117, upload-time = "2026-05-25T22:17:23.074Z" }, + { url = "https://files.pythonhosted.org/packages/1a/12/fa3fbf5f9517b273edea2dc982aa82a8c634091e67c590792b729017bc6f/httptools-0.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:de242a49b5d18e0a8776e654e9f6bf6d89f3875a5c35b425a0e7ce940feb3fd6", size = 206183, upload-time = "2026-05-25T22:17:24.004Z" }, + { url = "https://files.pythonhosted.org/packages/30/fc/5e7c4cb443370f2090a3aba0453a07384d29ff66b7435bb90e77e1037599/httptools-0.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:159e9ab5f701ccd42e555a12f1ad8ff69702910fc1c996cf2bb66e5fcb7a231b", size = 112079, upload-time = "2026-05-25T22:17:25.216Z" }, + { url = "https://files.pythonhosted.org/packages/ba/53/771bd891eb0f236f32145d6a1775777ec85745f3cc983a1f23d1a3b8ddfe/httptools-0.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c4a9f1707e4823d54dfec6c33fa3697d302aed536ed352a7ebb5a061ddb869d0", size = 481596, upload-time = "2026-05-25T22:17:26.186Z" }, + { url = "https://files.pythonhosted.org/packages/62/42/94e15bc68ce3d423243c45d7f1b0c7561f13844f97dc52ae23182fb65628/httptools-0.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d76ad7b951387e3632c8716a9bb03ac5b45c5f16119aa409db0459520887944e", size = 480865, upload-time = "2026-05-25T22:17:27.542Z" }, + { url = "https://files.pythonhosted.org/packages/1c/7c/fe2980fc03723272e30f135b62360b075f513dfe7cc73aef36c7f04012bd/httptools-0.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a3b7387147361c3fd47a0bde763c5c91b5b4cd4dc9989b8ece84ff436c99843b", size = 463189, upload-time = "2026-05-25T22:17:28.546Z" }, + { url = "https://files.pythonhosted.org/packages/15/1b/47fc5fff68acd1bfa20b4734059c9a06cadb88119dcd5258b5b0d21d91c8/httptools-0.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f256d6ce930c52ca1cb2a960b7da03548c454e7d28b06059ad41bfe789036ce0", size = 466610, upload-time = "2026-05-25T22:17:29.816Z" }, + { url = "https://files.pythonhosted.org/packages/60/bd/07b13c93ffd9bec9546e0d43f8e19378dd696dbd278511406bc07371ef1f/httptools-0.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:19d1ee275bb59ba2643ba9a3a1e51cc0c788caf2b8df506368e03f56fdd08527", size = 92705, upload-time = "2026-05-25T22:17:31.133Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c4/121648f68ce066d7bd762d6b6d97e620847642d38d54f3d90ff11d947629/httptools-0.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:de1ed58a974e75d56560acc7e7fed01a454994429456f65209789992e41f2568", size = 215023, upload-time = "2026-05-25T22:17:32.401Z" }, + { url = "https://files.pythonhosted.org/packages/b9/b0/312a062ae741ae3e8baa8c8bf20be81b2e67337b259ab4349bebc7b6142e/httptools-0.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e93c227b595c6926c1acee96891dd9da4be338cfbe82e5cd3bb9d8dd7dc4ac0b", size = 117405, upload-time = "2026-05-25T22:17:33.742Z" }, + { url = "https://files.pythonhosted.org/packages/fc/37/fccd705f795386bb05bf413012fecff2a33e5aa8c2f069096de3e9fd8702/httptools-0.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2a021c3a8e65cc125390d72f59b968afca3bdcaff25bd67965e0a055a14946ca", size = 558497, upload-time = "2026-05-25T22:17:34.732Z" }, + { url = "https://files.pythonhosted.org/packages/bd/39/f172e8003576de35f5ba77ff417cf0e34429d35dc014deef15afa337a72c/httptools-0.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48774d39cbb70e2b1f71f88852a3087ae1d3a1eb80482bb48c13067ab080c14f", size = 571585, upload-time = "2026-05-25T22:17:35.813Z" }, + { url = "https://files.pythonhosted.org/packages/3e/b9/f5564760af99f3dbbf3f9104dc00e5da27e96cf433c6bdcf77617f70bf3f/httptools-0.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:88eead8ec8680a9f146c655bc88445a325bd7921cfd8194c7337e9467282427d", size = 543297, upload-time = "2026-05-25T22:17:37.08Z" }, + { url = "https://files.pythonhosted.org/packages/99/67/8d9f2c313618e161b82f3873188e7196126da1d6e29688df40eb3997c77a/httptools-0.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2c032fa028f46871ec7e1fc59fc15e8023eab3e6bbe6ece786a1611719a5d081", size = 539535, upload-time = "2026-05-25T22:17:38.032Z" }, + { url = "https://files.pythonhosted.org/packages/48/63/b906c01e53f50d432c0defe43ce52764a111dc1bdd028bafbeb54dcfd008/httptools-0.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:384c17174464c8e873398b7af24f0b1f44d992c820328413951a625323155d77", size = 108209, upload-time = "2026-05-25T22:17:39.473Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "isort" +version = "8.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/7c/ec4ab396d31b3b395e2e999c8f46dec78c5e29209fac49d1f4dace04041d/isort-8.0.1.tar.gz", hash = "sha256:171ac4ff559cdc060bcfff550bc8404a486fee0caab245679c2abe7cb253c78d", size = 769592, upload-time = "2026-02-28T10:08:20.685Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/95/c7c34aa53c16353c56d0b802fba48d5f5caa2cdee7958acbcb795c830416/isort-8.0.1-py3-none-any.whl", hash = "sha256:28b89bc70f751b559aeca209e6120393d43fbe2490de0559662be7a9787e3d75", size = 89733, upload-time = "2026-02-28T10:08:19.466Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "mako" +version = "1.3.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/62/791b31e69ae182791ec67f04850f2f062716bbd205483d63a215f3e062d3/mako-1.3.12.tar.gz", hash = "sha256:9f778e93289bd410bb35daadeb4fc66d95a746f0b75777b942088b7fd7af550a", size = 400219, upload-time = "2026-04-28T19:01:08.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/b1/a0ec7a5a9db730a08daef1fdfb8090435b82465abbf758a596f0ea88727e/mako-1.3.12-py3-none-any.whl", hash = "sha256:8f61569480282dbf557145ce441e4ba888be453c30989f879f0d652e39f53ea9", size = 78521, upload-time = "2026-04-28T19:01:10.393Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "omnia-build-stream" +version = "1.0.0" +source = { virtual = "." } +dependencies = [ + { name = "alembic" }, + { name = "ansible-core" }, + { name = "argon2-cffi" }, + { name = "black" }, + { name = "cryptography" }, + { name = "debugpy" }, + { name = "dependency-injector" }, + { name = "fastapi" }, + { name = "httpx" }, + { name = "isort" }, + { name = "jmespath" }, + { name = "jsonschema" }, + { name = "psycopg2-binary" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pygments" }, + { name = "pyjwt" }, + { name = "pylint" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, + { name = "pytest-cov" }, + { name = "python-dotenv" }, + { name = "python-multipart" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "sqlalchemy" }, + { name = "starlette" }, + { name = "urllib3" }, + { name = "uvicorn", extra = ["standard"] }, +] + +[package.metadata] +requires-dist = [ + { name = "alembic", specifier = ">=1.13.0" }, + { name = "ansible-core", specifier = ">=2.16.0" }, + { name = "argon2-cffi", specifier = ">=21.0.0" }, + { name = "black", specifier = ">=26.3.1" }, + { name = "cryptography", specifier = ">=48.0.0" }, + { name = "debugpy", specifier = "==1.8.20" }, + { name = "dependency-injector", specifier = ">=4.41.0" }, + { name = "fastapi", specifier = ">=0.115.6" }, + { name = "httpx", specifier = ">=0.25.0" }, + { name = "isort", specifier = ">=5.12.0" }, + { name = "jmespath", specifier = "==1.0.1" }, + { name = "jsonschema", specifier = ">=4.0.0" }, + { name = "psycopg2-binary", specifier = ">=2.9.0" }, + { name = "pydantic", specifier = ">=2.0.0,<2.10.0" }, + { name = "pydantic-settings", specifier = ">=2.0.0" }, + { name = "pygments", specifier = ">=2.20.0" }, + { name = "pyjwt", specifier = ">=2.13.0" }, + { name = "pylint", specifier = ">=3.0.0" }, + { name = "pytest", specifier = ">=9.0.3" }, + { name = "pytest-asyncio", specifier = ">=0.21.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "python-dotenv", specifier = ">=1.0.0" }, + { name = "python-multipart", specifier = ">=0.0.26" }, + { name = "pyyaml", specifier = "==6.0.3" }, + { name = "requests", specifier = ">=2.33.0" }, + { name = "sqlalchemy", specifier = ">=2.0.0" }, + { name = "starlette", specifier = ">=1.0.1" }, + { name = "urllib3", specifier = ">=2.7.0" }, + { name = "uvicorn", extras = ["standard"], specifier = ">=0.34.0" }, +] + +[[package]] +name = "packaging" +version = "26.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, +] + +[[package]] +name = "pathspec" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/47/e4501f49c178ae1d9f4a75073fda4204f52647993f075a9db4d14930e0c5/platformdirs-4.10.0.tar.gz", hash = "sha256:31e761a6a0ca04faf7353ea759bdba55652be214725111e5aac52dfa29d4bef7", size = 31224, upload-time = "2026-05-28T03:32:53.587Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl", hash = "sha256:fb516cdb12eb0d857d0cd85a7c57cea4d060bee4578d6cf5a14dfdf8cbf8784a", size = 22743, upload-time = "2026-05-28T03:32:52.175Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "psycopg2-binary" +version = "2.9.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/60/a3624f79acea344c16fbef3a94d28b89a8042ddfb8f3e4ca83f538671409/psycopg2_binary-2.9.12.tar.gz", hash = "sha256:5ac9444edc768c02a6b6a591f070b8aae28ff3a99be57560ac996001580f294c", size = 379686, upload-time = "2026-04-21T09:40:34.304Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/9f/ef4ef3c8e15083df90ca35265cfd1a081a2f0cc07bb229c6314c6af817f4/psycopg2_binary-2.9.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5cdc05117180c5fa9c40eea8ea559ce64d73824c39d928b7da9fb5f6a9392433", size = 3712459, upload-time = "2026-04-20T23:34:30.549Z" }, + { url = "https://files.pythonhosted.org/packages/b5/01/3dd14e46ba48c1e1a6ec58ee599fa1b5efa00c246d5046cd903d0eeb1af1/psycopg2_binary-2.9.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d3227a3bc228c10d21011a99245edca923e4e8bf461857e869a507d9a41fe9f6", size = 3822936, upload-time = "2026-04-20T23:34:32.77Z" }, + { url = "https://files.pythonhosted.org/packages/a6/f7/0640e4901119d8a9f7a1784b927f494e2198e213ceb593753d1f2c8b1b30/psycopg2_binary-2.9.12-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:995ce929eede89db6254b50827e2b7fd61e50d11f0b116b29fffe4a2e53c4580", size = 4578676, upload-time = "2026-04-20T23:34:35.18Z" }, + { url = "https://files.pythonhosted.org/packages/b0/55/44df3965b5f297c50cc0b1b594a31c67d6127a9d133045b8a66611b14dfb/psycopg2_binary-2.9.12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9fe06d93e72f1c048e731a2e3e7854a5bfaa58fc736068df90b352cefe66f03f", size = 4274917, upload-time = "2026-04-20T23:34:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/b0/4b/74535248b1eac0c9336862e8617c765ac94dac76f9e25d7c4a79588c8907/psycopg2_binary-2.9.12-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40e7b28b63aaf737cb3a1edc3a9bbc9a9f4ad3dcb7152e8c1130e4050eddcb7d", size = 5894843, upload-time = "2026-04-20T23:34:40.856Z" }, + { url = "https://files.pythonhosted.org/packages/f2/ba/f1bf8d2ae71868ad800b661099086ee52bc0f8d9f05be1acd8ebb06757cc/psycopg2_binary-2.9.12-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:89d19a9f7899e8eb0656a2b3a08e0da04c720a06db6e0033eab5928aabe60fa9", size = 4110556, upload-time = "2026-04-20T23:34:44.016Z" }, + { url = "https://files.pythonhosted.org/packages/45/46/c15706c338403b7c420bcc0c2905aad116cc064545686d8bf85f1999ea00/psycopg2_binary-2.9.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:612b965daee295ae2da8f8218ce1d274645dc76ef3f1abf6a0a94fd57eff876d", size = 3655714, upload-time = "2026-04-20T23:34:46.233Z" }, + { url = "https://files.pythonhosted.org/packages/b3/7c/a2d5dc09b64a4564db242a0fe418fde7d33f6f8259dd2c5b9d7def00fb5a/psycopg2_binary-2.9.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b9a339b79d37c1b45f3235265f07cdeb0cb5ad7acd2ac7720a5920989c17c24e", size = 3301154, upload-time = "2026-04-20T23:34:49.528Z" }, + { url = "https://files.pythonhosted.org/packages/c0/e8/cc8c9a4ce71461f9ec548d38cadc41dc184b34c73e6455450775a9334ccd/psycopg2_binary-2.9.12-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:3471336e1acfd9c7fe507b8bad5af9317b6a89294f9eb37bd9a030bb7bebcdc6", size = 3048882, upload-time = "2026-04-20T23:34:51.86Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/31e2296bc0787c5ab75d3d118e40b239db8151b5192b90b77c72bc9256e9/psycopg2_binary-2.9.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7af18183109e23502c8b2ae7f6926c0882766f35b5175a4cd737ad825e4d7a1b", size = 3351298, upload-time = "2026-04-20T23:34:54.124Z" }, + { url = "https://files.pythonhosted.org/packages/5f/a8/75f4e3e11203b590150abed2cf7794b9c9c9f7eceddae955191138b44dde/psycopg2_binary-2.9.12-cp312-cp312-win_amd64.whl", hash = "sha256:398fcd4db988c7d7d3713e2b8e18939776fd3fb447052daae4f24fa39daede4c", size = 2757230, upload-time = "2026-04-20T23:34:56.242Z" }, + { url = "https://files.pythonhosted.org/packages/91/bb/4608c96f970f6e0c56572e87027ef4404f709382a3503e9934526d7ba051/psycopg2_binary-2.9.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7c729a73c7b1b84de3582f73cdd27d905121dc2c531f3d9a3c32a3011033b965", size = 3712419, upload-time = "2026-04-20T23:34:58.754Z" }, + { url = "https://files.pythonhosted.org/packages/5e/af/48f76af9d50d61cf390f8cd657b503168b089e2e9298e48465d029fcc713/psycopg2_binary-2.9.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4413d0caef93c5cf50b96863df4c2efe8c269bf2267df353225595e7e15e8df7", size = 3822990, upload-time = "2026-04-20T23:35:00.821Z" }, + { url = "https://files.pythonhosted.org/packages/7a/df/aba0f99397cd811d32e06fc0cc781f1f3ce98bc0e729cb423925085d781a/psycopg2_binary-2.9.12-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:4dfcf8e45ebb0c663be34a3442f65e17311f3367089cd4e5e3a3e8e62c978777", size = 4578696, upload-time = "2026-04-20T23:35:03.409Z" }, + { url = "https://files.pythonhosted.org/packages/95/9c/eaa74021ac4e4d5c2f83d82fc6615a63f4fe6c94dc4e94c3990427053f67/psycopg2_binary-2.9.12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c41321a14dd74aceb6a9a643b9253a334521babfa763fa873e33d89cfa122fb5", size = 4274982, upload-time = "2026-04-20T23:35:05.583Z" }, + { url = "https://files.pythonhosted.org/packages/35/ed/c25deff98bd26187ba48b3b250a3ffc3037c46c5b89362534a15d200e0db/psycopg2_binary-2.9.12-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83946ba43979ebfdc99a3cd0ee775c89f221df026984ba19d46133d8d75d3cd9", size = 5894867, upload-time = "2026-04-20T23:35:07.902Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/8d0e21ca77373c6c9589e5c4528f6e8f0c08c62cafc76fb0bddb7a2cee22/psycopg2_binary-2.9.12-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:411e85815652d13560fbe731878daa5d92378c4995a22302071890ec3397d019", size = 4110578, upload-time = "2026-04-20T23:35:10.149Z" }, + { url = "https://files.pythonhosted.org/packages/00/fc/f481e2435bd8f742d0123309174aae4165160ad3ef17c1b99c3622c241d2/psycopg2_binary-2.9.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c8ad4c08e00f7679559eaed7aff1edfffc60c086b976f93972f686384a95e2c", size = 3655816, upload-time = "2026-04-20T23:35:12.56Z" }, + { url = "https://files.pythonhosted.org/packages/53/79/b9f46466bdbe9f239c96cde8be33c1aace4842f06013b47b730dc9759187/psycopg2_binary-2.9.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:00814e40fa23c2b37ef0a1e3c749d89982c73a9cb5046137f0752a22d432e82f", size = 3301307, upload-time = "2026-04-20T23:35:15.029Z" }, + { url = "https://files.pythonhosted.org/packages/3f/19/7dc003b32fe35024df89b658104f7c8538a8b2dcbde7a4e746ce929742e7/psycopg2_binary-2.9.12-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:98062447aebc20ed20add1f547a364fd0ef8933640d5372ff1873f8deb9b61be", size = 3048968, upload-time = "2026-04-20T23:35:16.757Z" }, + { url = "https://files.pythonhosted.org/packages/91/58/2dbd7db5c604d45f4950d988506aae672a14126ec22998ced5021cbb76bb/psycopg2_binary-2.9.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:66a7685d7e548f10fb4ce32fb01a7b7f4aa702134de92a292c7bd9e0d3dbd290", size = 3351369, upload-time = "2026-04-20T23:35:18.933Z" }, + { url = "https://files.pythonhosted.org/packages/42/ee/dee8dcaad07f735824de3d6563bc67119fa6c28257b17977a8d624f02fab/psycopg2_binary-2.9.12-cp313-cp313-win_amd64.whl", hash = "sha256:b6937f5fe4e180aeee87de907a2fa982ded6f7f15d7218f78a083e4e1d68f2a0", size = 2757347, upload-time = "2026-04-20T23:35:21.283Z" }, + { url = "https://files.pythonhosted.org/packages/13/1b/708c0dca874acfad6d65314271859899a79007686f3a1f74e82a2ed4b645/psycopg2_binary-2.9.12-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6f3b3de8a74ef8db215f22edffb19e32dc6fa41340456de7ec99efdc8a7b3ec2", size = 3712428, upload-time = "2026-04-20T23:35:23.453Z" }, + { url = "https://files.pythonhosted.org/packages/d6/39/ddbea9d4b4de6aca9431b6ed253f530f8a02d3b8f9bcfd0dbfe2b3de6fe4/psycopg2_binary-2.9.12-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1006fb62f0f0bc5ce256a832356c6262e91be43f5e4eb15b5eaf38079464caf2", size = 3823184, upload-time = "2026-04-20T23:35:25.92Z" }, + { url = "https://files.pythonhosted.org/packages/bf/a0/bc2fef74b106fa345567122a0659e6d94512ed7dc0131ec44c9e5aba3725/psycopg2_binary-2.9.12-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:840066105706cd2eb29b9a1c2329620056582a4bf3e8169dec5c447042d0869f", size = 4579157, upload-time = "2026-04-20T23:35:28.542Z" }, + { url = "https://files.pythonhosted.org/packages/57/d7/d4e3b2005d3de607ca4fbb0e8742e248056e52184a6b94ebda3c1c2c329b/psycopg2_binary-2.9.12-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:863f5d12241ebe1c76a72a04c2113b6dc905f90b9cef0e9be0efd994affd9354", size = 4274970, upload-time = "2026-04-20T23:35:30.418Z" }, + { url = "https://files.pythonhosted.org/packages/2e/42/c9853f8db3967fe08bcde11f53d53b85d351750cae726ce001cb68afa9c1/psycopg2_binary-2.9.12-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a99eaab34a9010f1a086b126de467466620a750634d114d20455f3a824aae033", size = 5895175, upload-time = "2026-04-20T23:35:33.584Z" }, + { url = "https://files.pythonhosted.org/packages/eb/fd/b82b5601a97630308bef079f545ffec481bbbc795c2ba5ec416a01d03f60/psycopg2_binary-2.9.12-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ffdd7dc5463ccd61845ac37b7012d0f35a1548df9febe14f8dd549be4a0bc81e", size = 4110658, upload-time = "2026-04-20T23:35:35.638Z" }, + { url = "https://files.pythonhosted.org/packages/62/8c/32ca69b0389ef25dd22937bf9e8fbe2ce27aea20b05ded48c4ce4cb42475/psycopg2_binary-2.9.12-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:54a0dfecab1b48731f934e06139dfe11e24219fb6d0ceb32177cf0375f14c7b5", size = 3656251, upload-time = "2026-04-20T23:35:37.854Z" }, + { url = "https://files.pythonhosted.org/packages/c4/29/96992a2b59e3b9d730fcf9612d0a387305025dc867a9fc490a9e496e074e/psycopg2_binary-2.9.12-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:96937c9c5d891f772430f418a7a8b4691a90c3e6b93cf72b5bd7cad8cbca32a5", size = 3301810, upload-time = "2026-04-20T23:35:39.927Z" }, + { url = "https://files.pythonhosted.org/packages/56/ad/44b06659949b243ae10112cd3b20a197f9bf3e81d5651379b9eb889bfaad/psycopg2_binary-2.9.12-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:77b348775efd4cdab410ec6609d81ccecd1139c90265fa583a7255c8064bc03d", size = 3048977, upload-time = "2026-04-20T23:35:41.806Z" }, + { url = "https://files.pythonhosted.org/packages/1d/f2/10a1bcebadb6aa55e280e1f58975c36a7b560ea525184c7aa4064c466633/psycopg2_binary-2.9.12-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:527e6342b3e44c2f0544f6b8e927d60de7f163f5723b8f1dfa7d2a84298738cd", size = 3351466, upload-time = "2026-04-20T23:35:43.993Z" }, + { url = "https://files.pythonhosted.org/packages/20/be/b732c8418ffa5bcfda002890f5dc4c869fc17db66ff11f53b17cfe44afc0/psycopg2_binary-2.9.12-cp314-cp314-win_amd64.whl", hash = "sha256:f12ae41fcafadb39b2785e64a40f9db05d6de2ac114077457e0e7c597f3af980", size = 2848762, upload-time = "2026-04-20T23:35:46.421Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pydantic" +version = "2.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/b7/d9e3f12af310e1120c21603644a1cd86f59060e040ec5c3a80b8f05fae30/pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f", size = 769917, upload-time = "2024-09-17T15:59:54.273Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/e4/ba44652d562cbf0bf320e0f3810206149c8a4e99cdbf66da82e97ab53a15/pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12", size = 434928, upload-time = "2024-09-17T15:59:51.827Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.23.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/aa/6b6a9b9f8537b872f552ddd46dd3da230367754b6f707b8e1e963f515ea3/pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863", size = 402156, upload-time = "2024-09-16T16:06:44.786Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/7b/8e315f80666194b354966ec84b7d567da77ad927ed6323db4006cf915f3f/pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231", size = 1856459, upload-time = "2024-09-16T16:04:38.438Z" }, + { url = "https://files.pythonhosted.org/packages/14/de/866bdce10ed808323d437612aca1ec9971b981e1c52e5e42ad9b8e17a6f6/pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee", size = 1770007, upload-time = "2024-09-16T16:04:40.229Z" }, + { url = "https://files.pythonhosted.org/packages/dc/69/8edd5c3cd48bb833a3f7ef9b81d7666ccddd3c9a635225214e044b6e8281/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87", size = 1790245, upload-time = "2024-09-16T16:04:41.794Z" }, + { url = "https://files.pythonhosted.org/packages/80/33/9c24334e3af796ce80d2274940aae38dd4e5676298b4398eff103a79e02d/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8", size = 1801260, upload-time = "2024-09-16T16:04:43.991Z" }, + { url = "https://files.pythonhosted.org/packages/a5/6f/e9567fd90104b79b101ca9d120219644d3314962caa7948dd8b965e9f83e/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327", size = 1996872, upload-time = "2024-09-16T16:04:45.593Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ad/b5f0fe9e6cfee915dd144edbd10b6e9c9c9c9d7a56b69256d124b8ac682e/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2", size = 2661617, upload-time = "2024-09-16T16:04:47.3Z" }, + { url = "https://files.pythonhosted.org/packages/06/c8/7d4b708f8d05a5cbfda3243aad468052c6e99de7d0937c9146c24d9f12e9/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36", size = 2071831, upload-time = "2024-09-16T16:04:48.893Z" }, + { url = "https://files.pythonhosted.org/packages/89/4d/3079d00c47f22c9a9a8220db088b309ad6e600a73d7a69473e3a8e5e3ea3/pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126", size = 1917453, upload-time = "2024-09-16T16:04:51.099Z" }, + { url = "https://files.pythonhosted.org/packages/e9/88/9df5b7ce880a4703fcc2d76c8c2d8eb9f861f79d0c56f4b8f5f2607ccec8/pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e", size = 1968793, upload-time = "2024-09-16T16:04:52.604Z" }, + { url = "https://files.pythonhosted.org/packages/e3/b9/41f7efe80f6ce2ed3ee3c2dcfe10ab7adc1172f778cc9659509a79518c43/pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24", size = 2116872, upload-time = "2024-09-16T16:04:54.41Z" }, + { url = "https://files.pythonhosted.org/packages/63/08/b59b7a92e03dd25554b0436554bf23e7c29abae7cce4b1c459cd92746811/pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84", size = 1738535, upload-time = "2024-09-16T16:04:55.828Z" }, + { url = "https://files.pythonhosted.org/packages/88/8d/479293e4d39ab409747926eec4329de5b7129beaedc3786eca070605d07f/pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9", size = 1917992, upload-time = "2024-09-16T16:04:57.395Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ef/16ee2df472bf0e419b6bc68c05bf0145c49247a1095e85cee1463c6a44a1/pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc", size = 1856143, upload-time = "2024-09-16T16:04:59.062Z" }, + { url = "https://files.pythonhosted.org/packages/da/fa/bc3dbb83605669a34a93308e297ab22be82dfb9dcf88c6cf4b4f264e0a42/pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd", size = 1770063, upload-time = "2024-09-16T16:05:00.522Z" }, + { url = "https://files.pythonhosted.org/packages/4e/48/e813f3bbd257a712303ebdf55c8dc46f9589ec74b384c9f652597df3288d/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05", size = 1790013, upload-time = "2024-09-16T16:05:02.619Z" }, + { url = "https://files.pythonhosted.org/packages/b4/e0/56eda3a37929a1d297fcab1966db8c339023bcca0b64c5a84896db3fcc5c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d", size = 1801077, upload-time = "2024-09-16T16:05:04.154Z" }, + { url = "https://files.pythonhosted.org/packages/04/be/5e49376769bfbf82486da6c5c1683b891809365c20d7c7e52792ce4c71f3/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510", size = 1996782, upload-time = "2024-09-16T16:05:06.931Z" }, + { url = "https://files.pythonhosted.org/packages/bc/24/e3ee6c04f1d58cc15f37bcc62f32c7478ff55142b7b3e6d42ea374ea427c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6", size = 2661375, upload-time = "2024-09-16T16:05:08.773Z" }, + { url = "https://files.pythonhosted.org/packages/c1/f8/11a9006de4e89d016b8de74ebb1db727dc100608bb1e6bbe9d56a3cbbcce/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b", size = 2071635, upload-time = "2024-09-16T16:05:10.456Z" }, + { url = "https://files.pythonhosted.org/packages/7c/45/bdce5779b59f468bdf262a5bc9eecbae87f271c51aef628d8c073b4b4b4c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327", size = 1916994, upload-time = "2024-09-16T16:05:12.051Z" }, + { url = "https://files.pythonhosted.org/packages/d8/fa/c648308fe711ee1f88192cad6026ab4f925396d1293e8356de7e55be89b5/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6", size = 1968877, upload-time = "2024-09-16T16:05:14.021Z" }, + { url = "https://files.pythonhosted.org/packages/16/16/b805c74b35607d24d37103007f899abc4880923b04929547ae68d478b7f4/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f", size = 2116814, upload-time = "2024-09-16T16:05:15.684Z" }, + { url = "https://files.pythonhosted.org/packages/d1/58/5305e723d9fcdf1c5a655e6a4cc2a07128bf644ff4b1d98daf7a9dbf57da/pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769", size = 1738360, upload-time = "2024-09-16T16:05:17.258Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ae/e14b0ff8b3f48e02394d8acd911376b7b66e164535687ef7dc24ea03072f/pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5", size = 1919411, upload-time = "2024-09-16T16:05:18.934Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/07/60/1d1e59c9c90d54591469ada7d268251f71c24bdb765f1a8a832cee8c6653/pydantic_settings-2.14.1.tar.gz", hash = "sha256:e874d3bec7e787b0c9958277956ed9b4dd5de6a80e162188fdaff7c5e26fd5fa", size = 235551, upload-time = "2026-05-08T13:40:06.542Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl", hash = "sha256:6e3c7edfd8277687cdc598f56e5cff0e9bfff0910a3749deaa8d4401c3a2b9de", size = 60964, upload-time = "2026-05-08T13:40:04.958Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pyjwt" +version = "2.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/81/58d0ac84e1ef3a3843791d6954d94c0b33d526c75eeb1efbce9d0a4c4077/pyjwt-2.13.0.tar.gz", hash = "sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423", size = 107515, upload-time = "2026-05-21T19:54:36.618Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl", hash = "sha256:66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728", size = 31274, upload-time = "2026-05-21T19:54:35.362Z" }, +] + +[[package]] +name = "pylint" +version = "4.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "astroid" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "dill" }, + { name = "isort" }, + { name = "mccabe" }, + { name = "platformdirs" }, + { name = "tomlkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e4/b6/74d9a8a68b8067efce8d07707fe6a236324ee1e7808d2eb3646ec8517c7d/pylint-4.0.5.tar.gz", hash = "sha256:8cd6a618df75deb013bd7eb98327a95f02a6fb839205a6bbf5456ef96afb317c", size = 1572474, upload-time = "2026-02-20T09:07:33.621Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/6f/9ac2548e290764781f9e7e2aaf0685b086379dabfb29ca38536985471eaf/pylint-4.0.5-py3-none-any.whl", hash = "sha256:00f51c9b14a3b3ae08cff6b2cdd43f28165c78b165b628692e428fb1f8dc2cf2", size = 536694, upload-time = "2026-02-20T09:07:31.028Z" }, +] + +[[package]] +name = "pytest" +version = "9.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, +] + +[[package]] +name = "pytest-asyncio" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/7c/d36d04db312ecf4298932ef77e6e4a9e8ad017906e24e34f0b0c361a2473/pytest_asyncio-1.4.0.tar.gz", hash = "sha256:c6c0d2259945122819f171a32ecea2c349ead889ee28176caaf492143424be42", size = 58514, upload-time = "2026-05-26T09:56:04.083Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl", hash = "sha256:933ca923a23075a87fb7070c0ec272a6848489824d887c85c812670932835aa1", size = 16930, upload-time = "2026-05-26T09:56:02.576Z" }, +] + +[[package]] +name = "pytest-cov" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "pluggy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/51/a849f96e117386044471c8ec2bd6cfebacda285da9525c9106aeb28da671/pytest_cov-7.1.0.tar.gz", hash = "sha256:30674f2b5f6351aa09702a9c8c364f6a01c27aae0c1366ae8016160d1efc56b2", size = 55592, upload-time = "2026-03-21T20:11:16.284Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/7a/d968e294073affff457b041c2be9868a40c1c71f4a35fcc1e45e5493067b/pytest_cov-7.1.0-py3-none-any.whl", hash = "sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678", size = 22876, upload-time = "2026-03-21T20:11:14.438Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.32" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/42/55c32bb9b12693c092ad250a0e82edb5b31ddeda6eb772de5f308b3804ad/python_multipart-0.0.32.tar.gz", hash = "sha256:be54b7f3fa167bb83e4fcd936b887b708f4e57fe75911c02aebf53efaf8d938e", size = 46881, upload-time = "2026-06-04T16:18:58.647Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl", hash = "sha256:ff6d3f776f16878c894e52e107296ffc890e913c611b1a4ec6c44e2821fe2e23", size = 30042, upload-time = "2026-06-04T16:18:57.319Z" }, +] + +[[package]] +name = "pytokens" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/34/b4e015b99031667a7b960f888889c5bd34ef585c85e1cb56a594b92836ac/pytokens-0.4.1.tar.gz", hash = "sha256:292052fe80923aae2260c073f822ceba21f3872ced9a68bb7953b348e561179a", size = 23015, upload-time = "2026-01-30T01:03:45.924Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/5d/e44573011401fb82e9d51e97f1290ceb377800fb4eed650b96f4753b499c/pytokens-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:140709331e846b728475786df8aeb27d24f48cbcf7bcd449f8de75cae7a45083", size = 160663, upload-time = "2026-01-30T01:03:06.473Z" }, + { url = "https://files.pythonhosted.org/packages/f0/e6/5bbc3019f8e6f21d09c41f8b8654536117e5e211a85d89212d59cbdab381/pytokens-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d6c4268598f762bc8e91f5dbf2ab2f61f7b95bdc07953b602db879b3c8c18e1", size = 255626, upload-time = "2026-01-30T01:03:08.177Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3c/2d5297d82286f6f3d92770289fd439956b201c0a4fc7e72efb9b2293758e/pytokens-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24afde1f53d95348b5a0eb19488661147285ca4dd7ed752bbc3e1c6242a304d1", size = 269779, upload-time = "2026-01-30T01:03:09.756Z" }, + { url = "https://files.pythonhosted.org/packages/20/01/7436e9ad693cebda0551203e0bf28f7669976c60ad07d6402098208476de/pytokens-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5ad948d085ed6c16413eb5fec6b3e02fa00dc29a2534f088d3302c47eb59adf9", size = 268076, upload-time = "2026-01-30T01:03:10.957Z" }, + { url = "https://files.pythonhosted.org/packages/2e/df/533c82a3c752ba13ae7ef238b7f8cdd272cf1475f03c63ac6cf3fcfb00b6/pytokens-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:3f901fe783e06e48e8cbdc82d631fca8f118333798193e026a50ce1b3757ea68", size = 103552, upload-time = "2026-01-30T01:03:12.066Z" }, + { url = "https://files.pythonhosted.org/packages/cb/dc/08b1a080372afda3cceb4f3c0a7ba2bde9d6a5241f1edb02a22a019ee147/pytokens-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8bdb9d0ce90cbf99c525e75a2fa415144fd570a1ba987380190e8b786bc6ef9b", size = 160720, upload-time = "2026-01-30T01:03:13.843Z" }, + { url = "https://files.pythonhosted.org/packages/64/0c/41ea22205da480837a700e395507e6a24425151dfb7ead73343d6e2d7ffe/pytokens-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5502408cab1cb18e128570f8d598981c68a50d0cbd7c61312a90507cd3a1276f", size = 254204, upload-time = "2026-01-30T01:03:14.886Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d2/afe5c7f8607018beb99971489dbb846508f1b8f351fcefc225fcf4b2adc0/pytokens-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29d1d8fb1030af4d231789959f21821ab6325e463f0503a61d204343c9b355d1", size = 268423, upload-time = "2026-01-30T01:03:15.936Z" }, + { url = "https://files.pythonhosted.org/packages/68/d4/00ffdbd370410c04e9591da9220a68dc1693ef7499173eb3e30d06e05ed1/pytokens-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:970b08dd6b86058b6dc07efe9e98414f5102974716232d10f32ff39701e841c4", size = 266859, upload-time = "2026-01-30T01:03:17.458Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c9/c3161313b4ca0c601eeefabd3d3b576edaa9afdefd32da97210700e47652/pytokens-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:9bd7d7f544d362576be74f9d5901a22f317efc20046efe2034dced238cbbfe78", size = 103520, upload-time = "2026-01-30T01:03:18.652Z" }, + { url = "https://files.pythonhosted.org/packages/8f/a7/b470f672e6fc5fee0a01d9e75005a0e617e162381974213a945fcd274843/pytokens-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4a14d5f5fc78ce85e426aa159489e2d5961acf0e47575e08f35584009178e321", size = 160821, upload-time = "2026-01-30T01:03:19.684Z" }, + { url = "https://files.pythonhosted.org/packages/80/98/e83a36fe8d170c911f864bfded690d2542bfcfacb9c649d11a9e6eb9dc41/pytokens-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f50fd18543be72da51dd505e2ed20d2228c74e0464e4262e4899797803d7fa", size = 254263, upload-time = "2026-01-30T01:03:20.834Z" }, + { url = "https://files.pythonhosted.org/packages/0f/95/70d7041273890f9f97a24234c00b746e8da86df462620194cef1d411ddeb/pytokens-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc74c035f9bfca0255c1af77ddd2d6ae8419012805453e4b0e7513e17904545d", size = 268071, upload-time = "2026-01-30T01:03:21.888Z" }, + { url = "https://files.pythonhosted.org/packages/da/79/76e6d09ae19c99404656d7db9c35dfd20f2086f3eb6ecb496b5b31163bad/pytokens-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f66a6bbe741bd431f6d741e617e0f39ec7257ca1f89089593479347cc4d13324", size = 271716, upload-time = "2026-01-30T01:03:23.633Z" }, + { url = "https://files.pythonhosted.org/packages/79/37/482e55fa1602e0a7ff012661d8c946bafdc05e480ea5a32f4f7e336d4aa9/pytokens-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:b35d7e5ad269804f6697727702da3c517bb8a5228afa450ab0fa787732055fc9", size = 104539, upload-time = "2026-01-30T01:03:24.788Z" }, + { url = "https://files.pythonhosted.org/packages/30/e8/20e7db907c23f3d63b0be3b8a4fd1927f6da2395f5bcc7f72242bb963dfe/pytokens-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8fcb9ba3709ff77e77f1c7022ff11d13553f3c30299a9fe246a166903e9091eb", size = 168474, upload-time = "2026-01-30T01:03:26.428Z" }, + { url = "https://files.pythonhosted.org/packages/d6/81/88a95ee9fafdd8f5f3452107748fd04c24930d500b9aba9738f3ade642cc/pytokens-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79fc6b8699564e1f9b521582c35435f1bd32dd06822322ec44afdeba666d8cb3", size = 290473, upload-time = "2026-01-30T01:03:27.415Z" }, + { url = "https://files.pythonhosted.org/packages/cf/35/3aa899645e29b6375b4aed9f8d21df219e7c958c4c186b465e42ee0a06bf/pytokens-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d31b97b3de0f61571a124a00ffe9a81fb9939146c122c11060725bd5aea79975", size = 303485, upload-time = "2026-01-30T01:03:28.558Z" }, + { url = "https://files.pythonhosted.org/packages/52/a0/07907b6ff512674d9b201859f7d212298c44933633c946703a20c25e9d81/pytokens-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:967cf6e3fd4adf7de8fc73cd3043754ae79c36475c1c11d514fc72cf5490094a", size = 306698, upload-time = "2026-01-30T01:03:29.653Z" }, + { url = "https://files.pythonhosted.org/packages/39/2a/cbbf9250020a4a8dd53ba83a46c097b69e5eb49dd14e708f496f548c6612/pytokens-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:584c80c24b078eec1e227079d56dc22ff755e0ba8654d8383b2c549107528918", size = 116287, upload-time = "2026-01-30T01:03:30.912Z" }, + { url = "https://files.pythonhosted.org/packages/c6/78/397db326746f0a342855b81216ae1f0a32965deccfd7c830a2dbc66d2483/pytokens-0.4.1-py3-none-any.whl", hash = "sha256:26cef14744a8385f35d0e095dc8b3a7583f6c953c2e3d269c7f82484bf5ad2de", size = 13729, upload-time = "2026-01-30T01:03:45.029Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "resolvelib" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/14/4669927e06631070edb968c78fdb6ce8992e27c9ab2cde4b3993e22ac7af/resolvelib-1.2.1.tar.gz", hash = "sha256:7d08a2022f6e16ce405d60b68c390f054efcfd0477d4b9bd019cc941c28fad1c", size = 24575, upload-time = "2025-10-11T01:07:44.582Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/23/c941a0d0353681ca138489983c4309e0f5095dfd902e1357004f2357ddf2/resolvelib-1.2.1-py3-none-any.whl", hash = "sha256:fb06b66c8da04172d9e72a21d7d06186d8919e32ae5ab5cdf5b9d920be805ac2", size = 18737, upload-time = "2025-10-11T01:07:43.081Z" }, +] + +[[package]] +name = "rpds-py" +version = "2026.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/43/25a8dcd3feedd735039a8f0b5b7e3b118232b5eae288c4fd9ab200d41094/rpds_py-2026.5.1.tar.gz", hash = "sha256:07b24fea40541e28570e5b795a4a38fbdcd12550c06bd0748005ecc8116ca256", size = 64459, upload-time = "2026-05-28T12:02:13.232Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/e7/a78582dc57caa592dcc7d4fb69b61390561e908eb3d2f5df5928a8e354c0/rpds_py-2026.5.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3abe24a66e57adcfa645d718063a5fa5103ecc71ddbf26d78af8f9368018ff1d", size = 353040, upload-time = "2026-05-28T11:59:12.531Z" }, + { url = "https://files.pythonhosted.org/packages/a3/43/35e3f136343aef451e545ce8c38d36c2f93c0ed88703db8b64ba2b205c68/rpds_py-2026.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b1d94308ddf0b1982f61f2eb54bf92997c9ece8a8093ef014250f4a517906c", size = 345775, upload-time = "2026-05-28T11:59:13.827Z" }, + { url = "https://files.pythonhosted.org/packages/20/e1/0f2160c5982d3157734d5cb3ed63d8b2d583a73c9864f77b666449f32cf8/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa92420128dadce7f54bd73ba1825a273e9268fe9e35dbf7e6362890efa4e08", size = 376329, upload-time = "2026-05-28T11:59:15.271Z" }, + { url = "https://files.pythonhosted.org/packages/d0/11/ee0ba42aff83bf4effdbc576673c6be64c5e173978c3f6d537e94482f77d/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca653c6546386227cd9800d1bef6a348099acf8db4250341da6d90f663d6dfcb", size = 383539, upload-time = "2026-05-28T11:59:16.665Z" }, + { url = "https://files.pythonhosted.org/packages/11/df/d94aa6a499d4ac40afe2d7620f2c597fd3c0f182e854ad7cf3f596a81cb6/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66c93681c4729e4e3ecba31b8179fae083ff3118841672835140338b4b9867c1", size = 494674, upload-time = "2026-05-28T11:59:17.991Z" }, + { url = "https://files.pythonhosted.org/packages/1f/75/33d30f43bb2f458de11979486a591b1bf6e5651765ed1704c6197c2dc773/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40ff257542e04796880e011e15cd4dc21c2599975df2aaa8f2c8495ca574e1a5", size = 389268, upload-time = "2026-05-28T11:59:19.434Z" }, + { url = "https://files.pythonhosted.org/packages/f4/1e/2c9096fc19d5fd084b0184ca2b651e659aa0a37e6fdbecf6ece47f147fe1/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6825cc329b290e93c5f6a9be2393118a763f6ccf6abd83704e0c102ca583644", size = 376280, upload-time = "2026-05-28T11:59:21Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e5/61ec9f8be8211ea7f48448195549e4aaf02004083475493b0e137702ecb2/rpds_py-2026.5.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:de42116e69cb53b911cc34aee5ab98f36c597b822545045d49e938818b99e5e4", size = 387233, upload-time = "2026-05-28T11:59:22.454Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ca/bcec1005c4f4a234f92a29078631fee49206c7265ccae966f18fd332e80e/rpds_py-2026.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0f920015df2a504bebaba6d4c31ccf3fcf942f92655c086da30b671aad19aa6", size = 405009, upload-time = "2026-05-28T11:59:23.845Z" }, + { url = "https://files.pythonhosted.org/packages/72/e6/4d5718c5cf26c522dc7c9999e238da1e77380b81d0c5d1df11e271ddfeb1/rpds_py-2026.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0408a24e44feb919423dc6d9da677cb5cddb894d2ca9e763967d156d9c60fab4", size = 553113, upload-time = "2026-05-28T11:59:25.184Z" }, + { url = "https://files.pythonhosted.org/packages/d4/25/2ee807bdb3e1f0b7eddf7782acd5665a8b5205a331a7d7244a52c4812fd9/rpds_py-2026.5.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cea68bcd53467561ae2f96a6bdad1544299ba97b5b0ddcd5ac3d376e5c781c24", size = 618838, upload-time = "2026-05-28T11:59:26.749Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c1/7d4c26f167f8c41501cc073d30ee22082b16ce358cf5b00ec97cbc7804ea/rpds_py-2026.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4be8b1d2a705cc37d08256004e1d07de143fa0075c8e85a3df020b776f62b732", size = 582436, upload-time = "2026-05-28T11:59:28.11Z" }, + { url = "https://files.pythonhosted.org/packages/04/1d/9d12b0a337bab46f4769f8857f4007e3b2d639e14f9a44a0efe157696e64/rpds_py-2026.5.1-cp312-cp312-win32.whl", hash = "sha256:6736718bd4fc49cbcb538ba30516fdbef161522acefb739657d48b97bd864fed", size = 212734, upload-time = "2026-05-28T11:59:29.689Z" }, + { url = "https://files.pythonhosted.org/packages/c5/93/e4116f2de7f56bc7406a76033dc501811ddeb22b7f056b92d632871ebb0c/rpds_py-2026.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:0a7d1eec967df0e9b22614a5e177622e0c89611d03727fa0cb48e45028907870", size = 229045, upload-time = "2026-05-28T11:59:31.033Z" }, + { url = "https://files.pythonhosted.org/packages/cb/53/6c3419d85eb2ec5938a37627c585b42d76a63bb731d6e42ed4b079ebf486/rpds_py-2026.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:1841d067089e117142d79b98aa0df2f08b52f2ecc1819dd2700636c0db74a473", size = 223967, upload-time = "2026-05-28T11:59:32.318Z" }, + { url = "https://files.pythonhosted.org/packages/6c/32/14c961ad295f490eb0849ada8b79683e93a59b9de3afdd983eaf55fa6867/rpds_py-2026.5.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:efef4ac29c6ff495531eb17ee705b62841ecaa291b7c7077e848ea03e237164d", size = 352787, upload-time = "2026-05-28T11:59:33.655Z" }, + { url = "https://files.pythonhosted.org/packages/ca/bb/d1b85117967c11191441a7274ae616c65d93901d082c588f89a50a8da5ae/rpds_py-2026.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c39f5b67a8a2e67179ada2a954227d670fe65fa9098457f698f56ddf248709b3", size = 345179, upload-time = "2026-05-28T11:59:35Z" }, + { url = "https://files.pythonhosted.org/packages/7c/46/d84105f062e626a1b233f863907288a4708c2d833b8b4c6fb2764bc080c0/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5c30f3f04eef4fbd362226a6f31d7c8895ca4fbb6e0b790f6890a98d8da8559", size = 376173, upload-time = "2026-05-28T11:59:36.43Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ae/469d7959ce5b1201e1de135dc735b86db3b35dd0d1734f6a44246d5f061c/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:277f6c82f0580848796c7ecc8a7173aa3bfb928e4ff831261c2f60a81dc270db", size = 383162, upload-time = "2026-05-28T11:59:37.995Z" }, + { url = "https://files.pythonhosted.org/packages/dc/a2/57853d31a1116a561aa072794602ad3f6341e18d70a8523f1bd5b9fc1e5a/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:63c2c4c213f1a4e3f3de28ecab029dbdee976324e729c0d7a55211be72576b02", size = 495093, upload-time = "2026-05-28T11:59:39.453Z" }, + { url = "https://files.pythonhosted.org/packages/99/63/3a8eabcad9314b7daf5c65f451d2c33d989235cd8a5762186cf2c3f5a4f8/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3350ec808fb538fe71a1f94dfaa0e29c598dfad805ce49f0caec5ae3183c652b", size = 389829, upload-time = "2026-05-28T11:59:40.896Z" }, + { url = "https://files.pythonhosted.org/packages/4b/25/05678d97fc25e2622df14dc530fb82023174ecfff6733991ed0d78f167bd/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1b964e3ab599e718dc46c018d104b1ebc007cbc6567d827c94a687fca56d77e", size = 374786, upload-time = "2026-05-28T11:59:42.626Z" }, + { url = "https://files.pythonhosted.org/packages/88/d1/8c90b6431e80a3b91b284a5c7c8c0c4f9c006444d90477a740d6e0f9c694/rpds_py-2026.5.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:19cb09fab7b7fc96b2a6e28f2e34b72a3705ff27b37edb77455316e5d3f3dc9b", size = 386920, upload-time = "2026-05-28T11:59:44.124Z" }, + { url = "https://files.pythonhosted.org/packages/ff/99/4638f672ab356682d633ee0da9255f5b67ce6efd0b85eb94ad3e255e65a5/rpds_py-2026.5.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:abe76bcdba31e576cb83eeb8797aa0d882b738fef6dc65d0601fc753806a5b46", size = 405059, upload-time = "2026-05-28T11:59:47.177Z" }, + { url = "https://files.pythonhosted.org/packages/66/3f/3546524b6eb4cc2e1f363a3d638fa52f6c24faae3500c25fb488b02f1740/rpds_py-2026.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8bff7073db3899158fff55ebf57b113a67030af26f80a18978f9f0aa60250ddf", size = 553030, upload-time = "2026-05-28T11:59:48.603Z" }, + { url = "https://files.pythonhosted.org/packages/c6/c3/7b3388c796fcf471bd17194242d4dc1a7608567c0fa422bcc1c5e79f9c1e/rpds_py-2026.5.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8ba264fa49be666cd9cc56bf34ec7002fb3d27a4aee5bcb4d43d0d18feb1bb6f", size = 618975, upload-time = "2026-05-28T11:59:50.314Z" }, + { url = "https://files.pythonhosted.org/packages/61/1e/a3cb07f2795075d1d88efddae2f541359fde5f08c81ee114c29c2949c90a/rpds_py-2026.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4860b603ddda0475a8885499b3729e90229d480105b42651962a5397d995fa89", size = 581178, upload-time = "2026-05-28T11:59:51.673Z" }, + { url = "https://files.pythonhosted.org/packages/a1/74/e758c03a5ef46f04c37f2651a2893db846d569ba8a7bca469d4b58939bcd/rpds_py-2026.5.1-cp313-cp313-win32.whl", hash = "sha256:7944270ae71383f6e2657dd7d5ce4eeb4ac2d0059a6738f0510583d462ab4842", size = 212481, upload-time = "2026-05-28T11:59:53.148Z" }, + { url = "https://files.pythonhosted.org/packages/70/ec/a2aca432db9c7359b40fa393eeeaa0d166c2f70175be956e75fa24197c44/rpds_py-2026.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:88647f43a73c4e01be19b04ceef0c8d3a1958153604d13c773becd8016f2a0cf", size = 228519, upload-time = "2026-05-28T11:59:54.505Z" }, + { url = "https://files.pythonhosted.org/packages/29/60/a73bfdd45b096574556acf303bbd9fa9eed36ca8a818b514e2a5d5fe2b9d/rpds_py-2026.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:453895624ecf7db7063b1004e44037522bbaef9ff6a945e59bc71662d7a03abd", size = 223446, upload-time = "2026-05-28T11:59:56.081Z" }, + { url = "https://files.pythonhosted.org/packages/18/e2/408105fd611823f00882aea810f3989a30d26b1bab8b6beb20f98c724e0e/rpds_py-2026.5.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:b4e4bc98639ec915f512fde3aa7a95e0041d95d9c3cc86eea841fa63cb1e8600", size = 355287, upload-time = "2026-05-28T11:59:57.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/58/5c4a43436843c90d0f6d19f82c200c80e3843ca9fa07b237623327f6d384/rpds_py-2026.5.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cacedb7a6e167680acba45ad5716e89067d225dc80da0d7040cae8c81d4572fa", size = 347033, upload-time = "2026-05-28T11:59:58.881Z" }, + { url = "https://files.pythonhosted.org/packages/fb/c2/1a71acdacaf4e259b10278fb87b039ded3cf80041bcd89dd8a3ea702ded6/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68700371c5d7ae1412862ddfa719090925c93ecf351c566d66f09d04b136ea00", size = 376891, upload-time = "2026-05-28T12:00:00.516Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c8/535f3d9b65addd8e28aa87b83c6e526799c3717a88273db8ea795beeef7a/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:296c799becfa849c779c8725494fe9ed94959ed886787df4364b058465bad7f0", size = 385646, upload-time = "2026-05-28T12:00:02.394Z" }, + { url = "https://files.pythonhosted.org/packages/1c/91/dc033f313345c354ade914dbe73cdb90b615a4409ea02430d5356794f3d8/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d3858b908218ee108d0bbfb2095ccc237648053c9bf98affad7cb079acaf1d97", size = 498830, upload-time = "2026-05-28T12:00:04.189Z" }, + { url = "https://files.pythonhosted.org/packages/27/fc/90fcbea459dbb8ddc18a2e0fd1de9412b48bc84ffff2db771cf714bacfd6/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4fb8d2e7cb2f850b169806d61d1b991738acec96500a75c30f49caf064ce7cef", size = 392830, upload-time = "2026-05-28T12:00:05.797Z" }, + { url = "https://files.pythonhosted.org/packages/b2/1d/46cd11a228c9750684a798d98f878be6f614aa762438da7378f035e79e35/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27b74c10ed6a8f190f4287f53bcfea348b92a84a9c9f70d30183d1e6172d580d", size = 379613, upload-time = "2026-05-28T12:00:07.433Z" }, + { url = "https://files.pythonhosted.org/packages/24/4a/d9b0c6af3a1de03eb93741bbe8be2bdce84d8fda8224f3005451d86df389/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:b9a6528956191c48c52294a592dbd4a8386d7048bdb25c0efcb6b966466c6d83", size = 388183, upload-time = "2026-05-28T12:00:09.227Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b4/db7aaabdda6d020afc87d981bcc2f57a434c7dec60ecfc2ab3dd50b20351/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:af03e34e860047bc7a352b842856fcf78798fbb81132cc98bd2f907ab4eb9cd2", size = 408578, upload-time = "2026-05-28T12:00:10.779Z" }, + { url = "https://files.pythonhosted.org/packages/08/d6/070f6a41cbb343e2ac4171859bf3f3623e0ab002f72619d6d505313ec2de/rpds_py-2026.5.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fea6e836d10abbe191d557d33bd58bd5987725fe63aa1eefe557d230209855bd", size = 553573, upload-time = "2026-05-28T12:00:12.443Z" }, + { url = "https://files.pythonhosted.org/packages/75/ab/1a71ea3589c4345dac0a0518f0e6a031cb42689277851b683c46d27463a5/rpds_py-2026.5.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:fc0c0f878ea770a0a8a462456c5ad36fc9fe6358e6b76fdadc7f17575e0b8bf1", size = 620861, upload-time = "2026-05-28T12:00:14.09Z" }, + { url = "https://files.pythonhosted.org/packages/8a/22/9bf80a56069c0c443fcfefac639a86a744550a2898817a6dfd3e26654924/rpds_py-2026.5.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e0b360f316d966b048b085857630b3cc51f3db2f07b06f440eac8f695374d1e3", size = 585633, upload-time = "2026-05-28T12:00:15.66Z" }, + { url = "https://files.pythonhosted.org/packages/da/68/3b2c0a75c9e04125696f84ebdbbf304acf5a40b58ba4481cdb98a922c3ba/rpds_py-2026.5.1-cp313-cp313t-win32.whl", hash = "sha256:a2999883eedf72fdfb7520b92c7d4ec2572a71ff40239377aa604cc529eecafc", size = 210074, upload-time = "2026-05-28T12:00:17.291Z" }, + { url = "https://files.pythonhosted.org/packages/e7/8b/609157d5a25d37d4f29f92840ba531f416907c34ae5c5739dd21fc2bef98/rpds_py-2026.5.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e07be2a9d7122bd6e82dea89814ef8dc893feb1aae97fec1630f3263bbb30e55", size = 228635, upload-time = "2026-05-28T12:00:18.73Z" }, + { url = "https://files.pythonhosted.org/packages/d4/6f/19c1918a4b590d8de87e712e4abe4b3875771eff60216fb6153cf6665c68/rpds_py-2026.5.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:1f2c391c3059798093b65df23aca2cac150460ae9c630d99dec83d703d9485b9", size = 349756, upload-time = "2026-05-28T12:00:20.217Z" }, + { url = "https://files.pythonhosted.org/packages/e5/60/a06fe7da34eca79dacbf958a2ba0c6eea85bc2b29de20080bf40f72f66fa/rpds_py-2026.5.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:413b424f7c4ee65ab5e5be91f5731be0f8b41a1ee2b12dfe810d716312e95a78", size = 343831, upload-time = "2026-05-28T12:00:21.711Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ec/b2333b97b90e2a6ef6ca8ad386ee284968e74bcfe113b3f1a8d9036429a9/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c595a1d9255dce0599e13130d1440ab2506654f2b50294226ee06402f8fef63", size = 375127, upload-time = "2026-05-28T12:00:23.326Z" }, + { url = "https://files.pythonhosted.org/packages/14/7f/e00aae54067f2b488c4637961d5f58204d470795fc791085fa3f15060d2e/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1c27c5f6102eac8c03e7595a00827a53b271ba40a53b59ff8709170e0855ea4a", size = 379034, upload-time = "2026-05-28T12:00:24.89Z" }, + { url = "https://files.pythonhosted.org/packages/be/cc/423999bbb8ae8dc93c77fc1d5e984ade5eb89d237d3bb884ccfa72ae2890/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c7fcf61d44cacecaf3aea542b0e053db77972a4573e7ceda16fb2b399161195", size = 490823, upload-time = "2026-05-28T12:00:26.676Z" }, + { url = "https://files.pythonhosted.org/packages/0f/aa/c671bf660f12e68d3c52ff86c7066ed1372df5a0f4f2ff584e419b8207e7/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c817a189d4ee14290420e5ff051e4dd6baa13f3edf84685071dee07a6d538ee", size = 388144, upload-time = "2026-05-28T12:00:28.577Z" }, + { url = "https://files.pythonhosted.org/packages/19/c8/d63bb75b68afe77b229e3021c6031bcaf01da5db5b0e69d0d10f9ba679a7/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21846aac0ed2e0589f38c12dc44e77bb64e494b771eadbcf169cba00566ba7ba", size = 371959, upload-time = "2026-05-28T12:00:30.304Z" }, + { url = "https://files.pythonhosted.org/packages/82/35/c51122014d8274ff37dc606d60049c3db7d83da02b5b282511e5a906a9a6/rpds_py-2026.5.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b317c87a13f769a4e787819bd508aaa5d69aa09b0880de9af6d3a8a54571cdec", size = 383558, upload-time = "2026-05-28T12:00:31.764Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f9/2790cb99c136a5363acdeacf5c27c56f3de0d4118a1f48fca83404c99c89/rpds_py-2026.5.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce87129d9f2c14fa6c4a8601fb80eb4488c80d38a20cd13758ef11123e14995d", size = 402789, upload-time = "2026-05-28T12:00:33.247Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1b/e4fb584f8c75d35c38150ff6a332cda949e6f97acba1f4fd123b14ab56fe/rpds_py-2026.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9cdddb6c1207d284d94fd1530adf57fbd797fe7c4b8704ba85f49414f2557e7d", size = 551405, upload-time = "2026-05-28T12:00:34.819Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f7/a6731b4216cb3793ea1af5391da240f5683dacc0d13e034fe5fc3503f240/rpds_py-2026.5.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:4e237e139f94d3c036fd28eb9f564c99055476ff4ff05cd42be55ce349b5aa02", size = 616975, upload-time = "2026-05-28T12:00:36.268Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/2e051a81d95d8e63f4b35a1c463a87e8766bc3d083c067c5dfb6bf220747/rpds_py-2026.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ed0954b524873214369184a9c82b0eaa45a3fbb9a798cd95b17e0d98499e7ea0", size = 578701, upload-time = "2026-05-28T12:00:37.82Z" }, + { url = "https://files.pythonhosted.org/packages/65/56/b5f6fdb2083e32bca8a8993d89e70db114b4756c9e2c38421328126689d2/rpds_py-2026.5.1-cp314-cp314-win32.whl", hash = "sha256:2d88621d6a7d4dfa633d21abe90f280bb205274e16b1d1e61c6ad4640b2453b7", size = 209806, upload-time = "2026-05-28T12:00:39.492Z" }, + { url = "https://files.pythonhosted.org/packages/fb/80/65a5aa96c155e611d1ed844e4e1f57f3e36b021f396d9f8585d756e6b90d/rpds_py-2026.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:cef8ac28d26f4dda3533060c20fbf80a325458fa9fd23ea72a73cdfa8e978838", size = 225985, upload-time = "2026-05-28T12:00:40.94Z" }, + { url = "https://files.pythonhosted.org/packages/27/7c/ad185212e87b05f196daef92bc5f3caf07298eb47c295b5585c3dd3093ac/rpds_py-2026.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:eaaea962c68cdc68d4a533ba985ab8e9484277910bbfaa2ab3ef7732667bfed8", size = 221219, upload-time = "2026-05-28T12:00:43.15Z" }, + { url = "https://files.pythonhosted.org/packages/23/58/e14ae18759020334646b031e708ab4158d653a938822bfb7b95ef2e93aa3/rpds_py-2026.5.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:21942f52dbbd5f8758bf021213d28bd45c39e873e65e2407faf5f1846f5761ad", size = 352148, upload-time = "2026-05-28T12:00:44.638Z" }, + { url = "https://files.pythonhosted.org/packages/31/9b/5f4a1e2f960bca3ac5d052b139dd31eed97b259f9d909173821760d542e8/rpds_py-2026.5.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f414556f6e3958300ff941e40c9f97e3dc9774ddd1b3434c475d73dd354bbed3", size = 345196, upload-time = "2026-05-28T12:00:46.14Z" }, + { url = "https://files.pythonhosted.org/packages/1a/71/1d9574d6a2fa20ab60eaa55c7467f5aa20cbc770f341a05f09c0876f59e2/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef1013a8625c74043210190b246f5b1551e09757c1f356c6e4160ef96c5bc081", size = 374981, upload-time = "2026-05-28T12:00:47.531Z" }, + { url = "https://files.pythonhosted.org/packages/0c/9a/37e99f4915a80aa71670263c1267f7ae0af95f53a3f61e6c3bdc016d4515/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cc68e231a77a5f0d774ae278a1f8e55c0456501820847c1e4efb3829f3441df6", size = 379961, upload-time = "2026-05-28T12:00:49.216Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ff/6e73f74b89d2e0715e0fc86b7dde893f9a61ae2f9b256ff3bdfe41ac4e94/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9baffb505aff33acc69b422a19f77806680f3c8632227d79f48de8a810d1c2c5", size = 495965, upload-time = "2026-05-28T12:00:51.111Z" }, + { url = "https://files.pythonhosted.org/packages/ea/e0/425faba25f59d74d4638b267f7c7a80e8649d2ef4db10a19b0c4a71e6e6f/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8d2f912928d426e8cfa396f7f3f8d29a59e6689c86dcca3c420730c1096322b", size = 389526, upload-time = "2026-05-28T12:00:52.77Z" }, + { url = "https://files.pythonhosted.org/packages/c6/76/7a41960e3fddae47fab43a28684d5da981401dffd88253de0944148654cb/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90f628283be835db980c941767d41c9a27b5239e54ba0a9c1335247e82406964", size = 376190, upload-time = "2026-05-28T12:00:54.215Z" }, + { url = "https://files.pythonhosted.org/packages/27/60/5f38dc70824fc6951b51d35377e577a3a3a4c81a6769cc5a2de25ebe0ad1/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:1ebb2f0ab7e16132995a72de805170e0203df0c3dd22e1ef1cd1fdd90bd7a131", size = 383921, upload-time = "2026-05-28T12:00:55.673Z" }, + { url = "https://files.pythonhosted.org/packages/60/1a/d60a38caa1505f4b9483c3fbbde12c94e1079154f4f401a6da96f7e77621/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f3df3d16ded76f1f8c9cdebd0e1ea55fdf4c23b812de189814da7cf229c22a81", size = 404766, upload-time = "2026-05-28T12:00:57.518Z" }, + { url = "https://files.pythonhosted.org/packages/87/ff/602fd3f174d6425f0bce05ad0dfbec0e96b38d0f7d08a79af5aa20083885/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9af8905b8f854990e40d5206aa5ac58d9b0fe0b7f351ff2bb086c20f6c8c6a47", size = 551343, upload-time = "2026-05-28T12:00:58.978Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c1/1be13327acdbead3eca1fde03b6a34dbb011f1e864e217f0d32cc1779a7f/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:036a36a87fb1cd3b214d11c4b3c4f7d2ddad933625dca1c900b56a057c07740a", size = 618502, upload-time = "2026-05-28T12:01:00.656Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d7/afb49b49d7f2be8b7ba1a9f0977fa5168003437b93086726f066544e8351/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:62ae3853454fe9ef283a03c96c2d835d39e84b14643a9d62c82ef0fb87d702ca", size = 581916, upload-time = "2026-05-28T12:01:02.22Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/dbef8c1f8a10f07beb62b5f054e20099fd9924b3ec001b8f0b6ac7813a85/rpds_py-2026.5.1-cp314-cp314t-win32.whl", hash = "sha256:6c3d771a46ec18b12af06ce36243a9a80b07a5d0515236332d90863ca8bb326a", size = 207855, upload-time = "2026-05-28T12:01:03.821Z" }, + { url = "https://files.pythonhosted.org/packages/2a/72/bfa4e61ab8e7dc1c8adf397e05e6cbdd4239357bd72b248d3de662f23915/rpds_py-2026.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c93c629be4636cf54337bd5f06c104d55e42ced54d681f6fe21ae510a65116f6", size = 225422, upload-time = "2026-05-28T12:01:05.194Z" }, + { url = "https://files.pythonhosted.org/packages/27/3a/7b5da92b640f67b6717ccafc83cdd06bfa7ff2395c3685c68922bb54d703/rpds_py-2026.5.1-cp315-cp315-macosx_10_12_x86_64.whl", hash = "sha256:3574b55c604b8f75dacb007136508bbc0db406e626301778096a133327e7f2fb", size = 349576, upload-time = "2026-05-28T12:01:06.722Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8a/2aafd7ad355a1bd48ca76e2262b74b15e6432b5a1efe150efd4d779cd55d/rpds_py-2026.5.1-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:94068eb3ae6d43f5a786b7db96a406a34e6d5c24489feef32fd6e8946ea7b291", size = 343640, upload-time = "2026-05-28T12:01:08.441Z" }, + { url = "https://files.pythonhosted.org/packages/f7/7d/6c9523c1abbe840a1b7fba3c516d48e1d3487cc80fea4366c4071cf56784/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a5b10e8ce894825f380a8f1b6444cf73c294dfea62afbb2d13e3a9e630cec1", size = 375322, upload-time = "2026-05-28T12:01:09.934Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5d/0b7b03fb1dc509321f01de3149784ab773e34c8573022029af8076afcb9c/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fc09f82e63d4bcd58149572f857a431bae851dc747e313c3b5bdf7abb907fda8", size = 379066, upload-time = "2026-05-28T12:01:11.48Z" }, + { url = "https://files.pythonhosted.org/packages/d7/e2/8ef6012999ebf1cb1c22f876d9ce5e63d960fd4631d2af3202d3f480aa25/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e10464d17df3b582745c25cec695cb9558bca2cb6ddb631aee1787fc72c767b2", size = 494586, upload-time = "2026-05-28T12:01:13.051Z" }, + { url = "https://files.pythonhosted.org/packages/80/af/1eeb029bec67582c226b7809172207cd005073af4ebd906e65ff494f4983/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba05adbf15d994c38ec0b7ab32e858e5110c21e9009a00a86545fd220f84e038", size = 388415, upload-time = "2026-05-28T12:01:14.631Z" }, + { url = "https://files.pythonhosted.org/packages/18/23/ffbe10711c4d766c1cab0557d6906c074f795814863c67b351355d29354a/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77c004fdc7b891967106f78ddfd7b076bfe6813c6139c6fff6aed3bcaa960b26", size = 372427, upload-time = "2026-05-28T12:01:16.153Z" }, + { url = "https://files.pythonhosted.org/packages/bd/3a/30ba4a6ad457e5b070c18d742a33fb77d8d922b565cc881f8a5313d63bfe/rpds_py-2026.5.1-cp315-cp315-manylinux_2_31_riscv64.whl", hash = "sha256:83bcf894486c9d78dd290d3c0124ff6dd8875d3025e2090a8ec49fcc37c55fdd", size = 383615, upload-time = "2026-05-28T12:01:17.809Z" }, + { url = "https://files.pythonhosted.org/packages/d3/69/62e242b53ce39c0814bd24e1a6e6eba6c92be716277745f317f9540a2e7b/rpds_py-2026.5.1-cp315-cp315-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3df104083952a0e0c6f10de33e440eabe98fb6317d23e1a58c68f6df08d01b9", size = 402786, upload-time = "2026-05-28T12:01:19.419Z" }, + { url = "https://files.pythonhosted.org/packages/38/c1/a770b9c186928a1ed0f7e6d7ae50e7f3950ed23e3f9e366dbc8e38cb55de/rpds_py-2026.5.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:980450826cf22e133c57e0835070bdd0dd3f73b9b708c3ce223def2cb9469e14", size = 551583, upload-time = "2026-05-28T12:01:21.013Z" }, + { url = "https://files.pythonhosted.org/packages/21/7c/68e8579b95375b70d2a963103c42e705856cdb98569258bd807f4423891c/rpds_py-2026.5.1-cp315-cp315-musllinux_1_2_i686.whl", hash = "sha256:205dde846f24332ab0c1188699a043b8d165b79bb84529ce272c45048ff6be01", size = 616941, upload-time = "2026-05-28T12:01:22.548Z" }, + { url = "https://files.pythonhosted.org/packages/70/a1/a6135aed5730ff03ab957182259987ac11e55fb392a28dc6f0592048a280/rpds_py-2026.5.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:3966b82dd563176396df030f3dd52a6e54cb69b718e95e78bd555ed3d1e0185d", size = 578349, upload-time = "2026-05-28T12:01:24.118Z" }, + { url = "https://files.pythonhosted.org/packages/09/6e/f24201a76a84e6c49d0bdfdfcb735210e21701e9b21c5bfc0ba497dd62f6/rpds_py-2026.5.1-cp315-cp315-win32.whl", hash = "sha256:7818f8d0a415be74d2be3590b0a1c1f463a642f4d0217e7d10602dceef5b79aa", size = 209922, upload-time = "2026-05-28T12:01:25.522Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e4/966bc240bb0485fc265278f6de44d05834bf0b3618886e0b22e33d54c49a/rpds_py-2026.5.1-cp315-cp315-win_amd64.whl", hash = "sha256:b3cc20c0d800af78fd0fac68086e28c1856cec51ea528bb81ea851aa40d39325", size = 226003, upload-time = "2026-05-28T12:01:27.062Z" }, + { url = "https://files.pythonhosted.org/packages/5c/5c/a15a59269cd5e74472734516c73795c15eccfc841b3d4b0228c3f53f19d0/rpds_py-2026.5.1-cp315-cp315-win_arm64.whl", hash = "sha256:3609e9939a8a76cd904cf98a3f1f13b5dc7e150adeaee89e0ea09652ea213e16", size = 221245, upload-time = "2026-05-28T12:01:28.51Z" }, + { url = "https://files.pythonhosted.org/packages/e0/22/135ce03804e179a71ceb13be095deda4a279bc88f7a6b8fa161c5ad44e12/rpds_py-2026.5.1-cp315-cp315t-macosx_10_12_x86_64.whl", hash = "sha256:5d333a7127d4b307601ac37792bee01bb95c867cbfacf21b6375b804d6bbd723", size = 352015, upload-time = "2026-05-28T12:01:30.214Z" }, + { url = "https://files.pythonhosted.org/packages/3b/5f/f1f6d2652eb9d848f6eb369d8db83a2da6249bb49ad2c2a48f45d54538d3/rpds_py-2026.5.1-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:b5f077b44a4f7808520f66dae234988d867deb9aed9be5da057ce9ba831b2a41", size = 345016, upload-time = "2026-05-28T12:01:31.656Z" }, + { url = "https://files.pythonhosted.org/packages/88/66/b74182775691ea2290c99e52ac8d5db844e56fbec90ce421f107658c8314/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d8f9b7b78c9538fc9e04e82ec0e888ff0c3cffcfad152c77e57cd09351a98a", size = 374775, upload-time = "2026-05-28T12:01:33.136Z" }, + { url = "https://files.pythonhosted.org/packages/ff/8f/15e5a61d9f0a43902d36561d4f07cae6ae9f4716be825159fd72717f33af/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e3a8ae58895ac107ed934a6bf51e5846f95c53b9b940c2c6d310838fd5846358", size = 380270, upload-time = "2026-05-28T12:01:34.574Z" }, + { url = "https://files.pythonhosted.org/packages/02/c3/f859b12763a80540cdf2af0f15b19904cf756a71d7bdd3f82ff3e5b1bbf9/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0957cf3c2b8632ec7aaebffebea8005b353cc2a237b6e2ae3c2cac0820704cfb", size = 495285, upload-time = "2026-05-28T12:01:36.127Z" }, + { url = "https://files.pythonhosted.org/packages/1c/c7/ff27c2ac8411d30b03b1829fd88cae8dad1a4d0da48dd25e57c4038042e6/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c396c1304de421050b3681ea70f371874b54d41b0151e96109758144c231e30b", size = 389581, upload-time = "2026-05-28T12:01:37.635Z" }, + { url = "https://files.pythonhosted.org/packages/6e/67/fe92ee32a6cc05c77228a2f8b1762e7124f386ec20ff83d0757b762d58d0/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad1bff7f666b9598e573815affd666aac6a13a585dde336f843e33350c7fadc", size = 376041, upload-time = "2026-05-28T12:01:39.307Z" }, + { url = "https://files.pythonhosted.org/packages/f8/91/b4d6685c27aba55bd82f25b278be8237038117d05f9659a6213ad3408130/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_31_riscv64.whl", hash = "sha256:656a042550878f12d45752452d47094b7cfe5ad1e9d7b87b5a22ad3ae5ff8015", size = 383946, upload-time = "2026-05-28T12:01:41.043Z" }, + { url = "https://files.pythonhosted.org/packages/bd/79/2c1d832a53c8e0f8e98fc970ec257b950fecd4f62be2ab7182b500a0cbc8/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73c4bd4f70294737b5206a3e8e30ccadbf8a60301831c8ea23eec5dbeea1ecfa", size = 405526, upload-time = "2026-05-28T12:01:43.032Z" }, + { url = "https://files.pythonhosted.org/packages/78/c4/c98117b03c6a8581ab2c2dfccfe9a5ad82bd8128a3c28b46a6ad2d97c393/rpds_py-2026.5.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:43bca78665423cabae77146f2fe7ce55272b6c8d55d82cca83effd42c7e13972", size = 551165, upload-time = "2026-05-28T12:01:44.648Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c1/bc479ca069200af730881b1bd525e3114b2b391a351509fcb1b772f28086/rpds_py-2026.5.1-cp315-cp315t-musllinux_1_2_i686.whl", hash = "sha256:42d0f20e85e549c870749d0e247f0c10d318a45b7e9676d575d2dcb04a1b2e66", size = 618778, upload-time = "2026-05-28T12:01:46.337Z" }, + { url = "https://files.pythonhosted.org/packages/77/65/38ab2f90df44c2febfb63cc10ced40763d9b4bc94d173e734528663fe7f5/rpds_py-2026.5.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:b1be5c35683684d5331b93600c210e8367c254683d8a6df6bd21bd2da3a334fb", size = 581839, upload-time = "2026-05-28T12:01:48.109Z" }, + { url = "https://files.pythonhosted.org/packages/15/2d/ce1f605fe036aadd460e5822e578c6c7ec3a860936cca37d6e0f299daa77/rpds_py-2026.5.1-cp315-cp315t-win32.whl", hash = "sha256:75808f6c38ce7749bb68cc2770161aae5045e6c6f6781a9782e74b93304399df", size = 207866, upload-time = "2026-05-28T12:01:49.648Z" }, + { url = "https://files.pythonhosted.org/packages/79/cb/966040123eb102371559746908ef2c9471f4d43e17ec9a645a2258dab64b/rpds_py-2026.5.1-cp315-cp315t-win_amd64.whl", hash = "sha256:90bd6630002a1c7f09e7843dd79f0d24f3d2897cc25a753480917865d14f15b3", size = 225441, upload-time = "2026-05-28T12:01:51.408Z" }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.50" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/57/da/6fbf010c8ebb347679d0d100b22fe9ba5e13fd04046c5df7280d2f0bf706/sqlalchemy-2.0.50.tar.gz", hash = "sha256:af5607d11ef90fd6a5c0549fe0045dce1663d427426bcfb506dcb5346a85a3b9", size = 9907424, upload-time = "2026-05-24T19:20:04.018Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/b0/a9d19b43f38f878b1278bca5b00b909f7540d41494396dd2561f9ad0956d/sqlalchemy-2.0.50-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23ae23d8b9d344d30d0a92f06d45825024a5790f1c1dd4cf452636a50d3e58cb", size = 2159807, upload-time = "2026-05-24T19:27:53.086Z" }, + { url = "https://files.pythonhosted.org/packages/f5/2c/191dd58a248fd2cfd4780fa82c375c505e4ad98c8b522fa69ec492130d77/sqlalchemy-2.0.50-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:47b71b933e7b4ebad407c8fdfd70d2c4f08b78b3238bb30eebdd6eb32ca51b89", size = 3343358, upload-time = "2026-05-24T20:09:29.279Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2b/514fce8a7df81cf5bad7ff7865de7ac0c5776a38cc043475c4703eb7fe8b/sqlalchemy-2.0.50-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:110fdac56ace278949f00de805edacbd6141e382d992f9ba28238b3a0827a600", size = 3357994, upload-time = "2026-05-24T20:17:13.495Z" }, + { url = "https://files.pythonhosted.org/packages/35/a6/a0e283f5494f92b0d77e319ff77e437b1ffe4a051ba67c81d53234825475/sqlalchemy-2.0.50-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0f5e4ac70e9e757f6b3e87c0491ff034442ecd8dfd36d041a50564c322dafc0e", size = 3289399, upload-time = "2026-05-24T20:09:32.239Z" }, + { url = "https://files.pythonhosted.org/packages/b7/96/1b07325ba71752d6a028b77d07bed1483ad545f794e8b1dc89b3ba3b3c68/sqlalchemy-2.0.50-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:724f3dcbe53dd0151e3cb5e7ec4ba4c620bede579caacd16275dc35ce06e8615", size = 3321216, upload-time = "2026-05-24T20:17:15.581Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8e/bad6ed253e8a99edfc99af02f7173ec48a1d3ed1b9b35a1b8bc1700900cc/sqlalchemy-2.0.50-cp312-cp312-win32.whl", hash = "sha256:1208050441471d003b7c8cb4054fb084f185cf35ac3f0ea270803865bca9939a", size = 2119194, upload-time = "2026-05-24T19:50:04.943Z" }, + { url = "https://files.pythonhosted.org/packages/b6/2d/314a6690dda4b9cfc571eab1a63cf6fe6e1470aa3759ccda6aa016ee0f5a/sqlalchemy-2.0.50-cp312-cp312-win_amd64.whl", hash = "sha256:9d1af51558029a156a70986b7df88f042b3d158d7c8d8fb5072912d4b32d89c7", size = 2146186, upload-time = "2026-05-24T19:50:06.74Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c4/c42356b527296e9862f67990efce31ef78b4cf69cd3f80873a528a060320/sqlalchemy-2.0.50-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:06a9210bdc5f4298cff0781087e2ff45683922252dacc452846373a58761f093", size = 2156697, upload-time = "2026-05-24T19:27:54.764Z" }, + { url = "https://files.pythonhosted.org/packages/60/a1/b1a70e3c4365ac7fe9e347f3710f19b562c866fb96d45e3c891588789a7b/sqlalchemy-2.0.50-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b53784972ade4f8174b9aa661f31a06f8a936d2cfdd602913ff3c6dd40ae873", size = 3284260, upload-time = "2026-05-24T20:09:34.195Z" }, + { url = "https://files.pythonhosted.org/packages/3f/4a/f3ac3caa19f263d57b0a47f8c91bbf56583dc2d3fc63acfbf644abb24fe0/sqlalchemy-2.0.50-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31648fa14460537e768a7303b078e4344d208e0d23e06867c1f376a227ed82db", size = 3302280, upload-time = "2026-05-24T20:17:17.825Z" }, + { url = "https://files.pythonhosted.org/packages/66/55/ccada3e3d62254587819749a0bc69f41173eb48a6e385d10e66d32a9c88e/sqlalchemy-2.0.50-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:03f4323c980ad0e918cc9e5369b015f759f4e534db5bbaf4dc36832c10d05064", size = 3231580, upload-time = "2026-05-24T20:09:36.406Z" }, + { url = "https://files.pythonhosted.org/packages/05/f6/6809349130a2de0e109e7f00fd7d431da9565b9b2868b32ee684754f672b/sqlalchemy-2.0.50-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2b9dcc43afef8ac157cd92fce96985d6b8b0cfbd3df4d666f66b4d55a75d202f", size = 3269375, upload-time = "2026-05-24T20:17:20.34Z" }, + { url = "https://files.pythonhosted.org/packages/48/84/278a811ef4e07be9c89dc5cdd7be833268509a66a68c4897cf585e67428f/sqlalchemy-2.0.50-cp313-cp313-win32.whl", hash = "sha256:60922d6599065ddca2c6f376b9aa2f41a6b85a271725e0909490bbc50b1998a5", size = 2117229, upload-time = "2026-05-24T19:50:08.215Z" }, + { url = "https://files.pythonhosted.org/packages/f6/1c/067cc6187ed32d2ec222fe6d2643acc1659a6d0659f8a7cbc5ad3ae83280/sqlalchemy-2.0.50-cp313-cp313-win_amd64.whl", hash = "sha256:287086e67275a212c4582d166a6fb03a65ccc5551d80866270ce0dd9f34eccd3", size = 2143126, upload-time = "2026-05-24T19:50:09.691Z" }, + { url = "https://files.pythonhosted.org/packages/df/32/10ac51b4be7cdecd7e93d069251c86dfbf70b7adbd7c67b48ccea6c49e1c/sqlalchemy-2.0.50-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c966932507a4d7d0a37314927dbfcd89720e3f37d2a1e3352e7ae7939fa8e8a0", size = 2158519, upload-time = "2026-05-24T19:27:56.472Z" }, + { url = "https://files.pythonhosted.org/packages/5a/76/e703d2f7681d7d66c4c891af3f07c7ccf4c76ad7f18351de035b5eda007a/sqlalchemy-2.0.50-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:faffef4bcc20a1892e65e155293d99d60855bbbc79250ab712819cfd56a8e6bb", size = 3282063, upload-time = "2026-05-24T20:09:38.57Z" }, + { url = "https://files.pythonhosted.org/packages/31/26/ef168b184a25701f9995e8fb7e503fafd7a99c1c77cda1bc1a26ea2ed486/sqlalchemy-2.0.50-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c206aec519a2e7bd08abbfb33436e325fd22c632d9c21a9047e376ce241646e", size = 3287069, upload-time = "2026-05-24T20:17:21.942Z" }, + { url = "https://files.pythonhosted.org/packages/c2/15/765acc2bc693bccc43ca4a95d5b69750da8aaf6db1b5c616536e087f8920/sqlalchemy-2.0.50-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bef4ac756363227ef6402a75fee025a4bc690f92328e825868939b3b3a446a6d", size = 3230453, upload-time = "2026-05-24T20:09:40.398Z" }, + { url = "https://files.pythonhosted.org/packages/63/61/08e03c3adbf5db0087a0b6816746fec8f3032fb2f7fc899a9bb9b2a48ce4/sqlalchemy-2.0.50-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:96fbee6b19c19cd1556c8bf9419447cf2ec149ffcab7ab64348c23e54ef8547f", size = 3252413, upload-time = "2026-05-24T20:17:24.067Z" }, + { url = "https://files.pythonhosted.org/packages/03/0c/370a1f2db38436c615e10134c8a37de3688e74084792380695f3f5083860/sqlalchemy-2.0.50-cp314-cp314-win32.whl", hash = "sha256:8f00e3eb43ba30eb1b238ee03a8a62309486d1321eda3328bb611e0340033ad8", size = 2120063, upload-time = "2026-05-24T19:50:11.08Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a0/fe92bb9817863bc13ba093bda931979a26cc2ca69f8e8f26d07add3d7c6f/sqlalchemy-2.0.50-cp314-cp314-win_amd64.whl", hash = "sha256:15708c613cd5005b7dffe1f66ee6a63ee8f5e46799f71c70ebad74178c676a39", size = 2145830, upload-time = "2026-05-24T19:50:12.452Z" }, + { url = "https://files.pythonhosted.org/packages/cc/ff/e5640a98a0b2f491eb8fde10fb6c773621a2e44340de231fafcc9370f4a9/sqlalchemy-2.0.50-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3699dac4be410e97049a1658e9480da9cde956594aa0f3aebc60b88f21c5ba70", size = 2178435, upload-time = "2026-05-24T19:42:58.889Z" }, + { url = "https://files.pythonhosted.org/packages/b7/85/337116e186f1236375b5fb70c21cfac98e8e8ab0d3a47be838dc47a59e08/sqlalchemy-2.0.50-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f96233858e3df43932ac11589e22520da6e8aeb624b03fedfeebb0e8ea213086", size = 3566059, upload-time = "2026-05-24T20:01:20.848Z" }, + { url = "https://files.pythonhosted.org/packages/96/34/bb0e190e161c3c2c24314a65add57218be14a4a9486886b7f5047c1ff7c8/sqlalchemy-2.0.50-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c4e70c46fad30c3bcc6a4708bc0130a3173e11a5b25f0ea4a9d8911b450f1f52", size = 3535366, upload-time = "2026-05-24T20:03:56.768Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/a7f759f97e4fd499c5d4e4488c760d5a7fbecf3028b465a04274fcd52384/sqlalchemy-2.0.50-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1918a3cf564d16d95bca7301005f41ab2ad50b07cd3b9da50d3ed986db148d6a", size = 3474879, upload-time = "2026-05-24T20:01:23.058Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d9/2907ea38eb60687d297bf9c39e5ee58053c87b57fe8a9cae97090cecbf10/sqlalchemy-2.0.50-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b00098cdbdbd38c7be3d568b0c9c3122b8c0ec62b911b57cd5e6e0254d60a76d", size = 3486117, upload-time = "2026-05-24T20:03:59.052Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e3/5aa06f167559f8c0bdae487e297d23ba548150ab016a3418265d617a4985/sqlalchemy-2.0.50-cp314-cp314t-win32.whl", hash = "sha256:1fbd55a969d7ac44a98e3dec75016074f809fa08f871585ace58dde110d1bf3e", size = 2150823, upload-time = "2026-05-24T20:08:58.644Z" }, + { url = "https://files.pythonhosted.org/packages/65/9b/112fb8f977582d7489d036e409e3723948bcf5320b3ac465f3c481bbe8f9/sqlalchemy-2.0.50-cp314-cp314t-win_amd64.whl", hash = "sha256:c5c3cdb753a9004183e1ccb634b41611654c989e61bc68617ce878e46d6f1e51", size = 2185794, upload-time = "2026-05-24T20:09:00.319Z" }, + { url = "https://files.pythonhosted.org/packages/d0/10/f7220e9b784d295d241c86ed99aeb537f92afcd469a64861f2717e9bb077/sqlalchemy-2.0.50-py3-none-any.whl", hash = "sha256:92064363517a3ff8212b5a93b8c62876579d8dfd1ca5b561335f30152d884fa9", size = 1943861, upload-time = "2026-05-24T19:59:01.119Z" }, +] + +[[package]] +name = "starlette" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/44/ec35f1b6e83094b997da438a02c8c9b0ade2b1e84cfc48bd4656780760a6/starlette-1.2.1.tar.gz", hash = "sha256:9b9b5ebb992e67d6093741e63c2f59e4f6fff986f81163c087867bd7b924b3f6", size = 2701854, upload-time = "2026-05-31T01:07:51.847Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/54/196d0c1db10af76baa4f64894448505d60d3cdf70ef92cbb35f46a4e4c71/starlette-1.2.1-py3-none-any.whl", hash = "sha256:4de0082d08c8f6764a85a54cf1120d6939507a19905c7768acad2a9f875d2b89", size = 73350, upload-time = "2026-05-31T01:07:50.09Z" }, +] + +[[package]] +name = "tomlkit" +version = "0.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/db/03eaf4331631ef6b27d6e3c9b68c54dc6f0d63d87201fed600cc409307fd/tomlkit-0.15.0.tar.gz", hash = "sha256:7d1a9ecba3086638211b13814ea79c90dd54dd11993564376f3aa92271f5c7a3", size = 161875, upload-time = "2026-05-10T07:38:22.245Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/43/8bd850ee71a191bf072e31302c73a66be413fecdd98fdcd111ecbcce13ca/tomlkit-0.15.0-py3-none-any.whl", hash = "sha256:4dbc8f0fc024412b57ced8757ac7461305126a648ff8c2c807fcb8e133a78738", size = 41328, upload-time = "2026-05-10T07:38:23.517Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.49.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/1f/fa18009dea8469069cca78a4e877a008ab78f08b064bfc9ab891579077ff/uvicorn-0.49.0.tar.gz", hash = "sha256:ebf4271aa580d9de97f93192d4595176df6e91f9aae919ca73e4fc07df1e66a3", size = 91284, upload-time = "2026-06-03T22:01:30.448Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/fa/e1388bbcf24ef3274f45c0c1c7b501fd14971037c1b6ee23610553307497/uvicorn-0.49.0-py3-none-any.whl", hash = "sha256:ba3d14c3ee7e41c6c654c46c9eb489d33213cdd30aa1696eab1374337c13f68f", size = 71376, upload-time = "2026-06-03T22:01:29.037Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchfiles" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/ff/7f72e8170be527b4977b033239a83a68d5c881cc4775fca255c677f7ac5d/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42", size = 1359936, upload-time = "2025-10-16T22:16:29.436Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c6/e5d433f88fd54d81ef4be58b2b7b0cea13c442454a1db703a1eea0db1a59/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6", size = 752769, upload-time = "2025-10-16T22:16:30.493Z" }, + { url = "https://files.pythonhosted.org/packages/24/68/a6ac446820273e71aa762fa21cdcc09861edd3536ff47c5cd3b7afb10eeb/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370", size = 4317413, upload-time = "2025-10-16T22:16:31.644Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/e62b4dfc7ad6518e7eff2516f680d02a0f6eb62c0c212e152ca708a0085e/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4", size = 4426307, upload-time = "2025-10-16T22:16:32.917Z" }, + { url = "https://files.pythonhosted.org/packages/90/60/97362554ac21e20e81bcef1150cb2a7e4ffdaf8ea1e5b2e8bf7a053caa18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2", size = 4131970, upload-time = "2025-10-16T22:16:34.015Z" }, + { url = "https://files.pythonhosted.org/packages/99/39/6b3f7d234ba3964c428a6e40006340f53ba37993f46ed6e111c6e9141d18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0", size = 4296343, upload-time = "2025-10-16T22:16:35.149Z" }, + { url = "https://files.pythonhosted.org/packages/89/8c/182a2a593195bfd39842ea68ebc084e20c850806117213f5a299dfc513d9/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705", size = 1358611, upload-time = "2025-10-16T22:16:36.833Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/e301ee96a6dc95224b6f1162cd3312f6d1217be3907b79173b06785f2fe7/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8", size = 751811, upload-time = "2025-10-16T22:16:38.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/654426ce265ac19e2980bfd9ea6590ca96a56f10c76e63801a2df01c0486/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d", size = 4288562, upload-time = "2025-10-16T22:16:39.375Z" }, + { url = "https://files.pythonhosted.org/packages/15/c0/0be24758891ef825f2065cd5db8741aaddabe3e248ee6acc5e8a80f04005/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e", size = 4366890, upload-time = "2025-10-16T22:16:40.547Z" }, + { url = "https://files.pythonhosted.org/packages/d2/53/8369e5219a5855869bcee5f4d317f6da0e2c669aecf0ef7d371e3d084449/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e", size = 4119472, upload-time = "2025-10-16T22:16:41.694Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ba/d69adbe699b768f6b29a5eec7b47dd610bd17a69de51b251126a801369ea/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad", size = 4239051, upload-time = "2025-10-16T22:16:43.224Z" }, + { url = "https://files.pythonhosted.org/packages/90/cd/b62bdeaa429758aee8de8b00ac0dd26593a9de93d302bff3d21439e9791d/uvloop-0.22.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3879b88423ec7e97cd4eba2a443aa26ed4e59b45e6b76aabf13fe2f27023a142", size = 1362067, upload-time = "2025-10-16T22:16:44.503Z" }, + { url = "https://files.pythonhosted.org/packages/0d/f8/a132124dfda0777e489ca86732e85e69afcd1ff7686647000050ba670689/uvloop-0.22.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4baa86acedf1d62115c1dc6ad1e17134476688f08c6efd8a2ab076e815665c74", size = 752423, upload-time = "2025-10-16T22:16:45.968Z" }, + { url = "https://files.pythonhosted.org/packages/a3/94/94af78c156f88da4b3a733773ad5ba0b164393e357cc4bd0ab2e2677a7d6/uvloop-0.22.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:297c27d8003520596236bdb2335e6b3f649480bd09e00d1e3a99144b691d2a35", size = 4272437, upload-time = "2025-10-16T22:16:47.451Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/60249e9fd07b32c665192cec7af29e06c7cd96fa1d08b84f012a56a0b38e/uvloop-0.22.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1955d5a1dd43198244d47664a5858082a3239766a839b2102a269aaff7a4e25", size = 4292101, upload-time = "2025-10-16T22:16:49.318Z" }, + { url = "https://files.pythonhosted.org/packages/02/62/67d382dfcb25d0a98ce73c11ed1a6fba5037a1a1d533dcbb7cab033a2636/uvloop-0.22.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b31dc2fccbd42adc73bc4e7cdbae4fc5086cf378979e53ca5d0301838c5682c6", size = 4114158, upload-time = "2025-10-16T22:16:50.517Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/f1171b4a882a5d13c8b7576f348acfe6074d72eaf52cccef752f748d4a9f/uvloop-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:93f617675b2d03af4e72a5333ef89450dfaa5321303ede6e67ba9c9d26878079", size = 4177360, upload-time = "2025-10-16T22:16:52.646Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/b01414f31546caf0919da80ad57cbfe24c56b151d12af68cee1b04922ca8/uvloop-0.22.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:37554f70528f60cad66945b885eb01f1bb514f132d92b6eeed1c90fd54ed6289", size = 1454790, upload-time = "2025-10-16T22:16:54.355Z" }, + { url = "https://files.pythonhosted.org/packages/d4/31/0bb232318dd838cad3fa8fb0c68c8b40e1145b32025581975e18b11fab40/uvloop-0.22.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b76324e2dc033a0b2f435f33eb88ff9913c156ef78e153fb210e03c13da746b3", size = 796783, upload-time = "2025-10-16T22:16:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/42/38/c9b09f3271a7a723a5de69f8e237ab8e7803183131bc57c890db0b6bb872/uvloop-0.22.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:badb4d8e58ee08dad957002027830d5c3b06aea446a6a3744483c2b3b745345c", size = 4647548, upload-time = "2025-10-16T22:16:57.008Z" }, + { url = "https://files.pythonhosted.org/packages/c1/37/945b4ca0ac27e3dc4952642d4c900edd030b3da6c9634875af6e13ae80e5/uvloop-0.22.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b91328c72635f6f9e0282e4a57da7470c7350ab1c9f48546c0f2866205349d21", size = 4467065, upload-time = "2025-10-16T22:16:58.206Z" }, + { url = "https://files.pythonhosted.org/packages/97/cc/48d232f33d60e2e2e0b42f4e73455b146b76ebe216487e862700457fbf3c/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:daf620c2995d193449393d6c62131b3fbd40a63bf7b307a1527856ace637fe88", size = 4328384, upload-time = "2025-10-16T22:16:59.36Z" }, + { url = "https://files.pythonhosted.org/packages/e4/16/c1fd27e9549f3c4baf1dc9c20c456cd2f822dbf8de9f463824b0c0357e06/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e", size = 4296730, upload-time = "2025-10-16T22:17:00.744Z" }, +] + +[[package]] +name = "watchfiles" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/41/5e1a4bb12aac5f1493fa1bdc11154eca3b258ca4eba65d39c473fe19d8e9/watchfiles-1.2.0.tar.gz", hash = "sha256:c995fba777f1ea992f090f9236e9284cf7a5d1a0130dd5a3d82c598cacd76838", size = 108252, upload-time = "2026-05-18T04:32:04.251Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/2f/e42c992d2afda3108ea1c02acecc991b9f31d05c14adc2a7cee9ee211fc4/watchfiles-1.2.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:bc13eb17538be00c874699dc0abe4ee2bc8d50bb1166a6b9e175ef3fd7eb8f26", size = 400115, upload-time = "2026-05-18T04:32:02.06Z" }, + { url = "https://files.pythonhosted.org/packages/5f/8f/6af2ea19065c91d8b0ea3516fdfc8c0d349f407e8e9fbf4e5a17360de8ad/watchfiles-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d95ddc1eb6914154253d239089900813f6a767e174b8e6a50e7fdacb7e4236c", size = 393659, upload-time = "2026-05-18T04:30:50.951Z" }, + { url = "https://files.pythonhosted.org/packages/13/01/b32a967c56fb3e3e5be3db52c3d3b87fa4513aa367d8ed1ad96d42952e5f/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f70d8b291ef6e88d19b1f297a6905ddb978888d9272b0d05e6f53309856bcfc", size = 453207, upload-time = "2026-05-18T04:31:04.231Z" }, + { url = "https://files.pythonhosted.org/packages/04/98/97557a812180338cb1abd32e1cffcc4588f59b5f23e0cb006b2ba95ba64a/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:56d8641cf834c2836922899105bd3ce3d0dfc69291d52edf0b4d0436829b34c0", size = 459273, upload-time = "2026-05-18T04:31:50.377Z" }, + { url = "https://files.pythonhosted.org/packages/e8/a8/b4b08dcb7653b8087c6586f7ce649505900e866bbcfe40dc9587af02e686/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2581a94056e55d7d0a31a823ea92bf73749c489ca2285bfdc0fbe6b2bb49d50c", size = 489927, upload-time = "2026-05-18T04:31:42.485Z" }, + { url = "https://files.pythonhosted.org/packages/50/94/3dceea03545d2e5ddfd839f0ddd5e1cecbf1697b5a428d5ba11cef6af95d/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41bc1199f7523b3f82843c88cbb979180c949caef0342cf90968f178e5d49b01", size = 570476, upload-time = "2026-05-18T04:31:03.071Z" }, + { url = "https://files.pythonhosted.org/packages/cc/f2/d39a5450c3532092b91f81d274360e613c2371bc874a89c7a1a3c5e8d138/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7571e4464cb6e434958f867f7f730b8ab0b75e3f8e5eac0499168486ab3c33a8", size = 465650, upload-time = "2026-05-18T04:30:12.701Z" }, + { url = "https://files.pythonhosted.org/packages/22/24/ed72f68cbc1333ca9b9f2200aa048bb6658ae41709bc1caad4310f4bdffd/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e53a384f76b631c3ae5334ce6a52f0baa3a911eb94a4eac7f160079868b716d5", size = 456398, upload-time = "2026-05-18T04:30:13.784Z" }, + { url = "https://files.pythonhosted.org/packages/0d/64/982ef4a4e5bab5b6e5b6becc8cd5e732f6130a78b855f0abec6439a9a135/watchfiles-1.2.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:d20029a60a71a052a24c4db7673bc4de39ab89adbaccbfb5d67987c5d73f424d", size = 465140, upload-time = "2026-05-18T04:31:52.111Z" }, + { url = "https://files.pythonhosted.org/packages/a0/0c/95282abf4ed680b6096010bcfc30c5fa7a041fc5aa5a2ad17a2cc6c75bba/watchfiles-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2cb93af48550faf1cea04c303107c8b75833de7013e57ce27d3b8d21d8d0f58c", size = 630259, upload-time = "2026-05-18T04:31:25.676Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/607c1de1530c4bdcf2cf1d1ecc2505ddba5d96bd43ba9f2b0e79876f850f/watchfiles-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2995c176de7692b86a2e4c58d9ec718f753150a979cb4a754e2b4ffa38e70906", size = 659859, upload-time = "2026-05-18T04:30:24.333Z" }, + { url = "https://files.pythonhosted.org/packages/fa/08/d9e2e0f9e8e6791d33aefc694ad7eefa7f901f63caff84a81ded38692f9c/watchfiles-1.2.0-cp312-cp312-win32.whl", hash = "sha256:7a2cffd17d27d2ecbb310c2b1d8174f222a5495b1a721894afa88ec11e25b898", size = 275480, upload-time = "2026-05-18T04:30:31.307Z" }, + { url = "https://files.pythonhosted.org/packages/1c/e6/9d42569c0102645cc8cea5d8c7d8a1e9d4ada2cb7f05f75e554b8aa2202a/watchfiles-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:f155b3a1b2a5fc89cdc70d47ee5d54e3b75e88efa34982028a35daef9ba00379", size = 288718, upload-time = "2026-05-18T04:32:10.745Z" }, + { url = "https://files.pythonhosted.org/packages/0a/26/88e0dc6ee3898169d7fa22bb6a69cabf2502d2ee25cb8c876d1262d204f8/watchfiles-1.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:8fa585ede612ee9f9e91b18bebf9ba11b9ae29a4e3a0d0cf6fca3e382133f0d5", size = 281026, upload-time = "2026-05-18T04:30:22.23Z" }, + { url = "https://files.pythonhosted.org/packages/d1/4d/70a7feced9f87e2ff26dba42667290f41694fc64646c67261fbb8cab5d5c/watchfiles-1.2.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:01ea8d66f0693b9b60a6541c8d10263091ca9a9060d242f3c1f3143f9aad2c98", size = 399730, upload-time = "2026-05-18T04:31:38.162Z" }, + { url = "https://files.pythonhosted.org/packages/31/3a/0da302f2307aee316922806ebd5726c542cbd787c938271cf14a074c7daf/watchfiles-1.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ba0480b9a74af058f43b337e937a451e109295c420916d68ad24e3dc02f5e44", size = 392842, upload-time = "2026-05-18T04:30:27.051Z" }, + { url = "https://files.pythonhosted.org/packages/db/ef/d5bdb705c224dbc256aa0c1ec47bf4e61ec52558f2afb44a71a1fe4d7015/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f34e26a19f91f710c08e0183429f0d1d15df734e6bc78c31e77b9ea9c433658", size = 452989, upload-time = "2026-05-18T04:31:11.945Z" }, + { url = "https://files.pythonhosted.org/packages/71/29/5495f2c1661949ef7a35e4d71111d129cfe7606414a26887a919d0a55406/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b4e77f6a55f858504069abd35d336a637555c09bca453dde1ee1e5ada8a6a1fb", size = 458978, upload-time = "2026-05-18T04:30:52.606Z" }, + { url = "https://files.pythonhosted.org/packages/d5/8c/7f9c07c433811c2fffd93e13fdfb7135de9aab5f2ae41be08960fa0047dc/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0cb4d80e212f116474a545c21c912b445f16bb0cef9e6a73a498164223e14e2f", size = 490248, upload-time = "2026-05-18T04:31:36.003Z" }, + { url = "https://files.pythonhosted.org/packages/3c/11/d93632febc52fbc21be90231bb7c17fd5387f46c9076fd40a5f9c2ae6910/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b974946a10af379d425e2eef5b62f5c6ebeaccf91d45eaad6f5b27ecd4f91aa0", size = 571847, upload-time = "2026-05-18T04:31:10.862Z" }, + { url = "https://files.pythonhosted.org/packages/55/b4/383173e73aabb07ad1d9c7aa859d95437ac46a6d6a1e11005facda0c9d19/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86bc13c25a8d1fcd70b51d0ce7c9b65e90de5666fcbfd3e34957cc73ee19aeb5", size = 465974, upload-time = "2026-05-18T04:30:17.006Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6c/89b1a230a78f57c52dd8893adb1f92f94411721b6ec12596c56d98c74356/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca148d73dea36c9763aaa351e4d7a51780ec1584217c45276f4fe8239c768b71", size = 454782, upload-time = "2026-05-18T04:30:35.656Z" }, + { url = "https://files.pythonhosted.org/packages/24/62/1732118367cfff0a9fce3bf62ff4bfded09ef5df21d9d446b858b3f70a96/watchfiles-1.2.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:c525543d91961c6955b2636b308569e84a1d1c5f5f2932041ab9ef46422f43e3", size = 465182, upload-time = "2026-05-18T04:30:20.846Z" }, + { url = "https://files.pythonhosted.org/packages/28/96/716f7e5f51339bf22963f3345f9f27d7f3b30e2eadc597e257c881dd3c53/watchfiles-1.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a204794696ffb8f9b10fba6f7cb5216d42f3b2b71860ccac6b6e42f5f10973b0", size = 629841, upload-time = "2026-05-18T04:31:05.397Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fe/c40783950fd771ccf66ab3ec2722d188a9af1c7f96c6e811f36e40c6e03f/watchfiles-1.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:10d86db20695afe7997ac9e1717637d6714a8d0220458c33f3d2061f54cec427", size = 658028, upload-time = "2026-05-18T04:31:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/71/72/4508db1856d1d87fcbb3b63f4839bab1b5682cb0e8d224d122263c09654a/watchfiles-1.2.0-cp313-cp313-win32.whl", hash = "sha256:eb283ee99e21ad6443c8cdb06ac5b34b1308c329cbdf03fa02b445363714c799", size = 275183, upload-time = "2026-05-18T04:30:59.57Z" }, + { url = "https://files.pythonhosted.org/packages/f9/36/14b76ca57652e5cc5fd1c11f32a261292c08a0d19a00351013c2549cbfb2/watchfiles-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a0f27f01bee51861392bb6b7c4fdb290b27d1eb194e9e28788d68102a0e898d9", size = 288059, upload-time = "2026-05-18T04:32:07.937Z" }, + { url = "https://files.pythonhosted.org/packages/1b/8d/0a85e395398d8d20fadfe5c5d32c726eee17a519e78fb356f2cf7531bffe/watchfiles-1.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:3651aa7058595e9cfb75d35dd5ada2bf9f48a5b8a0f3562821d3e210c507e077", size = 280186, upload-time = "2026-05-18T04:31:54.484Z" }, + { url = "https://files.pythonhosted.org/packages/37/68/36db056f1fdcc5f07302f56e631774d6835bcd6fa3ace402304621d5f9e5/watchfiles-1.2.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:faea288b6f0ab1902ef08f4ca6de005dccf856c4e0c4f21b8c5fce02d90a1b08", size = 399031, upload-time = "2026-05-18T04:30:44.576Z" }, + { url = "https://files.pythonhosted.org/packages/c1/64/01a9d6f66a82a5c101ce939274106cc72759d62427e153f01edd2b9f87c2/watchfiles-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01859b11fd9fbca670f4d5da00fbac282cfea9bd67a2125d8b2833a3b5617ea9", size = 391205, upload-time = "2026-05-18T04:30:25.413Z" }, + { url = "https://files.pythonhosted.org/packages/84/2c/0a44fe058cb4bb7b8ede6b6670698bbb7c0400740e378d00022189b7b31d/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fff610d7bb2256a317bb1e96f0d7862c7aa8076733ee5df0fd41bbe76a24a4f4", size = 451892, upload-time = "2026-05-18T04:32:14.005Z" }, + { url = "https://files.pythonhosted.org/packages/67/a1/351e0d56cd35e6488b5c8b4fb11a809a5bc923e8fe8fed9faf8920be0c89/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b141a4891c995a039cd89e9a49e62df1dc8a559a5d1a6e4c7106d16c12777a55", size = 458867, upload-time = "2026-05-18T04:31:22.279Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7d/9d09605187f1b838998624049fcf8bf47b73c1a3b76901fcac1782f62277/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f22943b7770483f6ea0721c6b11d022947a98eb0acae14694de034f4d0d38925", size = 490217, upload-time = "2026-05-18T04:31:43.657Z" }, + { url = "https://files.pythonhosted.org/packages/60/5d/a17a16eccb182f04188cd308ec24b1a71a9b5c4e7098269cf35d9fa56d02/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1bc6195825b7dcd217968bb1f801a60fd4c16e8eeab5bedc7fe917d7d5995ab4", size = 571458, upload-time = "2026-05-18T04:32:11.875Z" }, + { url = "https://files.pythonhosted.org/packages/d3/3d/4dd457062083ab1938e5dfd45032eb425cee2ac817287ca8ff4356183e5d/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4a4b147f5dca2a5d325a06a832fb43f345751adfbc63204aec30e0d9ca965a2", size = 464707, upload-time = "2026-05-18T04:30:43.492Z" }, + { url = "https://files.pythonhosted.org/packages/c6/71/ea8c57b128f5383de74d0c7d2d9c57ad7c9a65a930c451bd25d524b295b7/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4543579a9bdb0c9560039b4ffddbdb39545707659fbc430ce4c10f3f68d557f9", size = 454663, upload-time = "2026-05-18T04:30:16.061Z" }, + { url = "https://files.pythonhosted.org/packages/53/fd/2e812bf938406d7db351f0703ddd3fc6c061cf30d96153a77bc79a943a44/watchfiles-1.2.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:20aa0e708b920bde876a4aa82dc7dd6ebea228a63a67cda6632c2fc87b787efa", size = 463537, upload-time = "2026-05-18T04:31:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/86/56/d17a7f1dd1bc3035f1072694a551301272f1739c2d8e319c927cb9e29b38/watchfiles-1.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:d413349d565dab74297f2a63e84a097936be69bf8f3b3801f27f380e32040f44", size = 629194, upload-time = "2026-05-18T04:31:14.141Z" }, + { url = "https://files.pythonhosted.org/packages/be/06/f1ff66bf5cae50aa4062779a0ecd0bbaf15e466195719074078947d9a17d/watchfiles-1.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f28b2725eb8cce327b9b3ab02415c853011dc55c95832fe90de6bc56f5315f72", size = 656194, upload-time = "2026-05-18T04:31:47.14Z" }, + { url = "https://files.pythonhosted.org/packages/e7/54/a9c7ea9a82a4ac65e7004c0a03920b5cdd2f9c3b678757d9cd425aa51d53/watchfiles-1.2.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:b8c8358484d5fa12ef34f05b7f4168eaf1932f408725ff6d023c33ec17bd79d4", size = 400205, upload-time = "2026-05-18T04:32:05.153Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5d/c9ab3534374a4a67450696905d6ef16a04405448b8dc52bd752ae50423d4/watchfiles-1.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f04b092229ad2c50126dd3c922c8822e51e605993764a33058d4a791ab42281", size = 392508, upload-time = "2026-05-18T04:30:54.849Z" }, + { url = "https://files.pythonhosted.org/packages/26/ca/1ad30103535cf0cecd7b993e8d50edc5351b1820e38f2d22e3df58962feb/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a7ce236284f002a156f70add88efe5c70879cccbb658be0822c54b1306fc09d", size = 452448, upload-time = "2026-05-18T04:30:53.727Z" }, + { url = "https://files.pythonhosted.org/packages/37/a1/ceee2cdf2afbd715fa07758d39c9859513eae411b23196f7fd039e5feedd/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b9909cc2b48468b575eefa944919e1fe8a36c5849d5c7c168f80a8c1db69398e", size = 459605, upload-time = "2026-05-18T04:30:23.312Z" }, + { url = "https://files.pythonhosted.org/packages/e8/f6/421e30fd1cb3907a84ed92ab3f1983e37ba2dca015e9a894a048418417a2/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a37faaed405c67e28e6be45a1fa4f206ef5a2860f27c237db9fa30704c38242", size = 490757, upload-time = "2026-05-18T04:30:47.358Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/55ed1b97ed08be7bba6f9a541cac15f2a858e1d74d2b07b6da70a82aab00/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9649193aa27bd9ff2e80ff29bfaa93085496c7a3a377592823cc58b77ee88add", size = 568672, upload-time = "2026-05-18T04:30:38.915Z" }, + { url = "https://files.pythonhosted.org/packages/d1/cf/d8ae8a80dd7bafab395ea7681c10237311bbf34d37704a8c744e7cf31fc7/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e4ff8e37f99cf1da89e255e07c9c4b37c214038c4283707bdec308cb1b0ea1f", size = 464197, upload-time = "2026-05-18T04:30:09.914Z" }, + { url = "https://files.pythonhosted.org/packages/7c/8a/3076c496ca8dafe0e8cd03fcebdfc47be4b1174b4e5b24ff6e396e6b3af2/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:054dc20fd2e3132b4c3883b4a00d72fd6e1f56fdaf89fccd12e8057d74cd74d7", size = 453181, upload-time = "2026-05-18T04:30:14.829Z" }, + { url = "https://files.pythonhosted.org/packages/e5/10/9745e17c98e7b8a86454df0a3c7b5686bd650383f1e9f26e4ebcbd6cc0c0/watchfiles-1.2.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:e140ed30ebde76796b686e67c182cff10ea2fbab186fafd1560f74bb5a473a6e", size = 465109, upload-time = "2026-05-18T04:30:28.123Z" }, + { url = "https://files.pythonhosted.org/packages/8f/95/8ef4a95481d3e0cb52d62a06fa6e972e81424be2d9698b91a2fecca9904c/watchfiles-1.2.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:bb7e52ecf68ba46d22df23467b87cffeb2146908aa523ebfe803019618cfda06", size = 630653, upload-time = "2026-05-18T04:31:49.304Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e4/3b3bf36b0f829b50c6ebcb8d031583863c59f923d6a6af3d485e470d0fac/watchfiles-1.2.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:23282a321c8baf9b3a3c4afff673f9fe65eb7fdc2338d765ccad9d3d1916a5ba", size = 657838, upload-time = "2026-05-18T04:31:06.497Z" }, + { url = "https://files.pythonhosted.org/packages/21/b1/6cbbb50c1f3002ab568777d44aa21206dfb8807a840990c4037523b51812/watchfiles-1.2.0-cp314-cp314-win32.whl", hash = "sha256:c0db965c5f79aa49fe672d297cf1febc5ad149b658594944f49a54a2b96270a7", size = 275108, upload-time = "2026-05-18T04:30:06.891Z" }, + { url = "https://files.pythonhosted.org/packages/92/45/190ce6db8dcb4536682cf75d3889ff1a27182a58cb519d343cb6d9ea63d8/watchfiles-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:71283b39fd17e5408eb123bd37aeecfd9d54c81fc184421943208aadb879d103", size = 288441, upload-time = "2026-05-18T04:32:12.901Z" }, + { url = "https://files.pythonhosted.org/packages/74/0d/3eae1c2313ab08378431d907c3f8095ecca00f3eda33111cf4f0f2591799/watchfiles-1.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:c5c19526f4e54a00f2666a6c0e9e40d582c09e865055ea7378bf0009aab857b3", size = 280684, upload-time = "2026-05-18T04:31:26.902Z" }, + { url = "https://files.pythonhosted.org/packages/b1/75/fb64e6c25d6b5ca636d03df34ffb1c6e9873303e76d27967e045f8df088f/watchfiles-1.2.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:d73a585accffa5ae39c17264c36ec3166d2fad7000c780f5ef83b2722afb9dd2", size = 398857, upload-time = "2026-05-18T04:32:17.108Z" }, + { url = "https://files.pythonhosted.org/packages/73/4e/9f7adf01754cbf81843722ccfec169d8f26c69778281a302855cecd2ee08/watchfiles-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ae99b14c5f21e026e0e9d96f40e07d8570ebee6cafd9d8fc318354606daa7a28", size = 392413, upload-time = "2026-05-18T04:31:07.911Z" }, + { url = "https://files.pythonhosted.org/packages/47/c8/bec626bcc2d69f44b9acb24ce7d60ed7b16b73628eea747fcbd169d8edda/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4429f3b105524a10b72c3a819b091c495d2811d419c1e1e8df773a5a5974f831", size = 452409, upload-time = "2026-05-18T04:31:20.142Z" }, + { url = "https://files.pythonhosted.org/packages/00/b7/b6362068e81e7c556d155a34c35d40ac3ef42d747b06d7f6e5bf58e359c2/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:43d818978d06062d9b22c4fab2ebe44cf5213d42dc8e62bda8c2760cfa2eeb33", size = 458827, upload-time = "2026-05-18T04:32:06.219Z" }, + { url = "https://files.pythonhosted.org/packages/67/f8/9a813fa42afb1e0b4625e75f0479826644d3ee8dc287e093799bc01f390c/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9f732dc58b2dbe69e464ccf8fff7a03b0dd0be439da4c0720d3558527d3d6b4", size = 490104, upload-time = "2026-05-18T04:31:56.034Z" }, + { url = "https://files.pythonhosted.org/packages/2f/bf/27dfb6094ca4c9aad21298b5525b6c53cb36121ee454331d05161e58d130/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f200104103feb097de4cab8fe4f5dd18a2026934c7dea98c55a2f5fd6d5a33b", size = 571360, upload-time = "2026-05-18T04:31:57.133Z" }, + { url = "https://files.pythonhosted.org/packages/fb/39/44a096d67270ea93df91d33877dbe91fbda3aa4f8ec2edf799d93eda8736/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63ac26eefbf4af1741247d6fb68b11c49a25b2f7413fbd318a83a12aaa9cf666", size = 464644, upload-time = "2026-05-18T04:30:57.33Z" }, + { url = "https://files.pythonhosted.org/packages/0e/80/c7472203bad6268e3ef1ad260739704847898938ad7ea8b63a5131f46b50/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c4997d4e4a55f0d02b6cde327322daf3a0400e5df6c6b15948994bf72497925", size = 454771, upload-time = "2026-05-18T04:30:48.736Z" }, + { url = "https://files.pythonhosted.org/packages/51/cf/3b10b268b4b7f0fc26e9debb5eef1998b515887840f444cd3ec80c688755/watchfiles-1.2.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:4c887eba18b7945ac73067a8b4a66f21cd46c2539b2bc68588f7be6c7eb6d26b", size = 463494, upload-time = "2026-05-18T04:31:33.826Z" }, + { url = "https://files.pythonhosted.org/packages/3d/3e/a4302545cd589262a0dc7d140e86f7688eba3f9c72776c27f7e23b8864c4/watchfiles-1.2.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:3416ff151bb6b5a8d8d11664974fbef4d9305b9b2957839ab5a270468fd8df30", size = 629383, upload-time = "2026-05-18T04:31:15.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/99/d5649df0a9a410d45b7c882304d0b790903ac9b6e8f2cfd12114e0c6b9f2/watchfiles-1.2.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:0e831a271c035d89789cffc386b6aa1375f39f1cd25eb7ca0997e4970d152fc5", size = 656093, upload-time = "2026-05-18T04:31:58.707Z" }, + { url = "https://files.pythonhosted.org/packages/92/b9/362702539275019a54dd2e94511b31a9b89c5f9e6a21966de7eb692549fc/watchfiles-1.2.0-cp315-cp315-macosx_10_12_x86_64.whl", hash = "sha256:37a6721cdf3f65dbb13aa9503510ccb4451603ac837e44d265d7992a597e1374", size = 400109, upload-time = "2026-05-18T04:31:16.879Z" }, + { url = "https://files.pythonhosted.org/packages/8f/75/71d5ba62db781e5587bded1d944c675374bc4aa37ff33d5018d98e8b6538/watchfiles-1.2.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:2b37d10b5a63bd4d87e18472d80fa525bd670586fae62e5dd580452764879b65", size = 392167, upload-time = "2026-05-18T04:31:28.058Z" }, + { url = "https://files.pythonhosted.org/packages/3c/01/c66dd95d0423fe30d31820e2d1d5bda773764131bbb6ac0cb1cf303ac328/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a105bc2283f67e8fbec74253ec2d94925de92ed72c0393f1206bf326b7b7b69", size = 452372, upload-time = "2026-05-18T04:31:00.836Z" }, + { url = "https://files.pythonhosted.org/packages/91/15/2fe99557e72f85627c6a8eed50d889e8d101623e060a22ad75b875cb932d/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5327989a465505f05cfe06f04fa9d0c2fd5432bb243e10e6f012b1bdca3c8579", size = 459596, upload-time = "2026-05-18T04:31:34.96Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/d4acfa0023367428ed48351b3b9b267893037b6cadae55620c61c24bcfd4/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecb47f183a8025b2aa18b546725c3657e542112ae9c0613a2af79b4fa8d04ad7", size = 490869, upload-time = "2026-05-18T04:31:59.923Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5f/3164cbdce06c9fb95c4f7b9e2f9760b5e2797af43a9ecc317ef42a23a278/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8520a4ab0e37f770afc34459c4f8f7019e153f9124dc101c15538365875d1ab2", size = 571641, upload-time = "2026-05-18T04:32:00.948Z" }, + { url = "https://files.pythonhosted.org/packages/41/e6/85d3731c55e65cd7690f3f803d24c139588aaf863e4bf2148fe7a7fa1a19/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71cd71740ed2c15211ebb237ced4e39a1cdf6f80566e5fe95428da1626f4fde6", size = 464444, upload-time = "2026-05-18T04:30:34.298Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7d/562641012b8b09872742c3b8adf9629ec479fd78f8d68ae4a0c13da8add6/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f88af53d6ddaf72179ef613ddc905e6f4785f712b49b80b3bef9f3525e6194b4", size = 453593, upload-time = "2026-05-18T04:31:23.464Z" }, + { url = "https://files.pythonhosted.org/packages/56/fe/cb8ef3d6f929d14158fdaaad9925985b7310abc9384dcd4d82dd0016fb59/watchfiles-1.2.0-cp315-cp315-manylinux_2_31_riscv64.whl", hash = "sha256:cee9d5efd929efdac5f7e58f72b3376f676b64050a91c5b99a7094c5b2317488", size = 465096, upload-time = "2026-05-18T04:31:30.384Z" }, + { url = "https://files.pythonhosted.org/packages/25/91/80908e835e100527a9267147b08c0eee1fa6ab0ffec15edc04d1d44885f7/watchfiles-1.2.0-cp315-cp315-musllinux_1_1_aarch64.whl", hash = "sha256:b718bf356bbc15e559bd8ef41782b573b8ae0e3f177ab244b440568d7ea02cfb", size = 630638, upload-time = "2026-05-18T04:30:49.89Z" }, + { url = "https://files.pythonhosted.org/packages/46/4b/95ab2f256bb4af3cb2eb23b9317bda984ee6e0f11733a5c004a6c95b06e3/watchfiles-1.2.0-cp315-cp315-musllinux_1_1_x86_64.whl", hash = "sha256:922c0e019fe68b3ae392965a766b02a71ba1168c932cebc3733cd52c5fe5b377", size = 657684, upload-time = "2026-05-18T04:31:32.027Z" }, +] + +[[package]] +name = "websockets" +version = "16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00", size = 177365, upload-time = "2026-01-10T09:22:46.787Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79", size = 175038, upload-time = "2026-01-10T09:22:47.999Z" }, + { url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39", size = 175328, upload-time = "2026-01-10T09:22:49.809Z" }, + { url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c", size = 184915, upload-time = "2026-01-10T09:22:51.071Z" }, + { url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f", size = 186152, upload-time = "2026-01-10T09:22:52.224Z" }, + { url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1", size = 185583, upload-time = "2026-01-10T09:22:53.443Z" }, + { url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2", size = 184880, upload-time = "2026-01-10T09:22:55.033Z" }, + { url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89", size = 178261, upload-time = "2026-01-10T09:22:56.251Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea", size = 178693, upload-time = "2026-01-10T09:22:57.478Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload-time = "2026-01-10T09:22:59.333Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload-time = "2026-01-10T09:23:01.171Z" }, + { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload-time = "2026-01-10T09:23:02.341Z" }, + { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload-time = "2026-01-10T09:23:03.756Z" }, + { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload-time = "2026-01-10T09:23:05.01Z" }, + { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload-time = "2026-01-10T09:23:06.301Z" }, + { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload-time = "2026-01-10T09:23:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload-time = "2026-01-10T09:23:09.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload-time = "2026-01-10T09:23:10.483Z" }, + { url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0", size = 177406, upload-time = "2026-01-10T09:23:12.178Z" }, + { url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904", size = 175085, upload-time = "2026-01-10T09:23:13.511Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4", size = 175328, upload-time = "2026-01-10T09:23:14.727Z" }, + { url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e", size = 185044, upload-time = "2026-01-10T09:23:15.939Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4", size = 186279, upload-time = "2026-01-10T09:23:17.148Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1", size = 185711, upload-time = "2026-01-10T09:23:18.372Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3", size = 184982, upload-time = "2026-01-10T09:23:19.652Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8", size = 177915, upload-time = "2026-01-10T09:23:21.458Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d", size = 178381, upload-time = "2026-01-10T09:23:22.715Z" }, + { url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244", size = 177737, upload-time = "2026-01-10T09:23:24.523Z" }, + { url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e", size = 175268, upload-time = "2026-01-10T09:23:25.781Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641", size = 175486, upload-time = "2026-01-10T09:23:27.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8", size = 185331, upload-time = "2026-01-10T09:23:28.259Z" }, + { url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e", size = 186501, upload-time = "2026-01-10T09:23:29.449Z" }, + { url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944", size = 186062, upload-time = "2026-01-10T09:23:31.368Z" }, + { url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206", size = 185356, upload-time = "2026-01-10T09:23:32.627Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6", size = 178085, upload-time = "2026-01-10T09:23:33.816Z" }, + { url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd", size = 178531, upload-time = "2026-01-10T09:23:35.016Z" }, + { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, +] diff --git a/src/containers/omnia_core/Containerfile b/src/containers/omnia_core/Containerfile new file mode 100644 index 0000000000..0085f66b59 --- /dev/null +++ b/src/containers/omnia_core/Containerfile @@ -0,0 +1,181 @@ +# Use Fedora 42 as the base image +FROM fedora:42 + +# Update the system and install Python 3.13 (Fedora 42 default; ansible-core 2.20 requires 3.12+) +RUN dnf -y update && \ + dnf -y install python3 python3-pip git openssh-server sshpass \ + iproute systemd passwd openssl jq createrepo yum-utils \ + wget unzip tar dnf-plugins-core rsync iputils nano && \ + dnf clean all + +# Install latest Go version with specific crypto version +RUN curl -LO https://go.dev/dl/go1.25.10.linux-amd64.tar.gz && \ + tar -C /usr/local -xzf go1.25.10.linux-amd64.tar.gz && \ + rm go1.25.10.linux-amd64.tar.gz +ENV PATH="/usr/local/go/bin:${PATH}" +ENV GOPATH="/go" +ENV GOCACHE="/go/cache" + +# Create persistent project with patched golang.org/x/crypto@v0.52.0 and golang.org/x/net@v0.54.0 +# IMPORTANT: x/net must be v0.54.0+ to avoid Go module resolver downgrading x/crypto. +# Scanners detect this from go.mod/go.sum files and module cache. +RUN mkdir -p /opt/go-crypto-patch && \ + cd /opt/go-crypto-patch && \ + go mod init crypto-patch && \ + go get golang.org/x/net@v0.54.0 && \ + go get golang.org/x/crypto@v0.52.0 && \ + go mod edit -require=golang.org/x/crypto@v0.52.0 && \ + go mod edit -require=golang.org/x/net@v0.54.0 && \ + printf 'package main\nimport _ "golang.org/x/crypto/ssh"\nimport _ "golang.org/x/net/html"\nfunc main() {}\n' > main.go && \ + go mod tidy && \ + echo "=== Verifying resolved versions ===" && \ + go list -m golang.org/x/crypto && \ + go list -m golang.org/x/net && \ + go list -m golang.org/x/crypto | grep -q "v0.52.0" || (echo "FATAL: x/crypto downgraded below v0.52.0 — CVE-2025-58181 and CVE-2025-47914 NOT fixed" && exit 1) && \ + go list -m golang.org/x/net | grep -q "v0.54.0" || (echo "FATAL: x/net is not v0.54.0" && exit 1) && \ + go build -o crypto-patch . && \ + echo "Crypto-patch built with Go $(go version)" && \ + cd / && \ + chmod -R 755 /opt/go-crypto-patch && \ + chmod -R 777 /go + +# Build Git LFS from source with patched Go 1.25.10, golang.org/x/crypto@v0.52.0, and golang.org/x/net@v0.54.0 +RUN git clone https://github.com/git-lfs/git-lfs.git /tmp/git-lfs && \ + cd /tmp/git-lfs && \ + git checkout v3.7.1 && \ + go mod edit -replace golang.org/x/crypto=golang.org/x/crypto@v0.52.0 && \ + go mod edit -replace golang.org/x/net=golang.org/x/net@v0.54.0 && \ + go mod tidy && \ + echo "=== Git LFS: Verifying resolved module versions ===" && \ + go list -m golang.org/x/crypto && \ + go list -m golang.org/x/net && \ + go list -m golang.org/x/crypto | grep -q "v0.52.0" || (echo "FATAL: git-lfs x/crypto downgraded below v0.52.0 — CVE-2025-58181 and CVE-2025-47914 NOT fixed" && exit 1) && \ + go list -m golang.org/x/net | grep -q "v0.54.0" || (echo "FATAL: git-lfs x/net is not v0.54.0" && exit 1) && \ + go build -o /usr/local/bin/git-lfs . && \ + git lfs install && \ + cd / && rm -rf /tmp/git-lfs + +# Verify Git LFS version and that it was built with patched Go +RUN git lfs version && \ + echo "Git LFS built with Go $(go version)" + +RUN dnf install --setopt=install_weak_deps=False ipcalc -y + +# Verify Python version +RUN python3 --version + +# Upgrade pip to fix CVE-2025-8869 and CVE-2025-68121 (system pip vulnerability) +# Use dynamic site-packages detection (Fedora 42 ships Python 3.13) +RUN SITE_PKGS=$(python3 -c "import sysconfig; print(sysconfig.get_path('purelib'))") && \ + python3 -m pip install --upgrade pip==26.0 --target "$SITE_PKGS" --force-reinstall && \ + find "$SITE_PKGS" -name "pip-23.*" -exec rm -rf {} + 2>/dev/null || true + +# Install/sync python packages using pyproject.toml (includes all security-patched packages) +RUN pip3 install uv==0.11.15 +COPY src/containers/omnia_core/pyproject.toml src/containers/omnia_core/uv.lock ./ +ENV UV_PROJECT_ENVIRONMENT="/usr" +RUN uv lock && uv sync && \ + rm -rf /root/.cache/uv /root/.cache/pip + +# Allow root login by enabling it in the SSH configuration +RUN sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config && \ + sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config + +# Expose port 22 for SSH +RUN sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config +EXPOSE 2222 + +# Generate host keys if they don't exist +RUN ssh-keygen -A + +# Configure workdir for ssh +RUN echo "cd /omnia/src" >> /root/.bashrc + +# Create the /tmp/omnia_core directory +RUN mkdir -p /tmp/omnia_core + +# Create the pulp config directory +RUN mkdir -p /root/.config/pulp + +# Dynamically create the Ansible Galaxy requirements file +RUN echo "collections:" > /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: ansible.utils" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 5.1.1" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: community.crypto" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 2.23.0" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: community.docker" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 3.12.1" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: community.general" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 10.3.0" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: community.grafana" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 2.1.0" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: community.mysql" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 3.10.3" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: dellemc.os10" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 1.1.1" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: dellemc.openmanage" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 10.0.2" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: ansible.posix" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 2.0.0" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: containers.podman" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 1.16.2" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: community.postgresql" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 3.10.2" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " - name: kubernetes.core" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " version: 5.2.0" >> /tmp/omnia_core/galaxy_requirements.yml && \ + echo " # community.kubernetes removed — deprecated, use kubernetes.core instead" >> /tmp/omnia_core/galaxy_requirements.yml + +# Install ansible-galaxy collections from galaxy_requirements.yml +# Note: ansible-core is installed via pyproject.toml +RUN ansible-galaxy collection install -r /tmp/omnia_core/galaxy_requirements.yml + +# Additional security: Clean up any cached vulnerable packages +RUN dnf -y autoremove && \ + rm -rf /var/cache/dnf/* /tmp/* /var/tmp/* && \ + # Secure permissions on sensitive directories + chmod 600 /root/.ssh/* 2>/dev/null || true && \ + chmod 700 /root/.ssh 2>/dev/null || true + +# Copy src/ directory from the monorepo into the container +RUN mkdir -p /omnia +COPY src/ /omnia/src/ + +# Copy the entrypoint script to / and make it executable +COPY src/containers/omnia_core/entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +# Configure workdir for podman +WORKDIR /omnia/src + +# Copy pulp certificate to core container's trust +COPY src/containers/omnia_core/cert-copy.sh /cert-copy.sh +RUN chmod +x /cert-copy.sh + +# Document security patches applied +LABEL security.go.version="1.25.10" \ + security.go.cves="CVE-2025-61729-fixed,CVE-2025-61727-fixed,CVE-2026-32282-fixed,CVE-2026-32288-fixed,CVE-2026-32283-fixed,CVE-2026-42501-fixed,CVE-2026-33811-fixed" \ + security.golang.crypto.version="0.52.0" \ + security.golang.crypto.cves="CVE-2025-47913-fixed,CVE-2025-58181-fixed,CVE-2025-47914-fixed" \ + security.golang.net.version="0.54.0" \ + security.golang.net.cves="CVE-2025-47911-fixed,CVE-2025-58190-fixed" \ + security.git-lfs.version="3.7.1-patched" \ + security.git-lfs.note="Built from source with Go 1.25.10, golang.org/x/crypto v0.52.0, and golang.org/x/net v0.54.0; build-time verified" \ + security.urllib3.version="2.7.0" \ + security.urllib3.cves="CVE-2026-21441-fixed,CVE-2025-66471-fixed,CVE-2025-66418-fixed,GHSA-2xpw-w6gg-jr37-fixed,GHSA-gm62-xv2j-4w53-fixed" \ + security.pyasn1.version="0.6.3" \ + security.pyasn1.cves="CVE-2026-23490-fixed,CVE-2026-30922-fixed,GHSA-63vm-454h-vhhq-fixed,GHSA-jr27-m4p2-rc6r-fixed" \ + security.filelock.version="3.20.3" \ + security.filelock.cves="CVE-2025-68146-fixed,CVE-2026-22701-fixed" \ + security.cryptography.version="48.0.0" \ + security.cryptography.cves="CVE-2026-26007-fixed,GHSA-r6ph-v2qm-q3c2-fixed" \ + security.gitpython.version="3.1.50" \ + security.gitpython.cves="GHSA-x2qx-6953-8485-fixed,GHSA-rpm5-65cw-6hj4-fixed" \ + security.pip.version="26.0" \ + security.pip.cves="CVE-2025-8869-fixed,CVE-2025-68121-fixed" \ + security.wheel.version="0.46.2" \ + security.wheel.note="Upgraded wheel and cleared uv cache to remove vendored vulnerable version" \ + security.ansible.version="2.20.7" \ + security.ansible.note="Upgraded from EOL ansible-core 2.16 to stable 2.20.7 (supported through ~May 2027)" + +# Set the entrypoint script as the entrypoint +ENTRYPOINT ["/entrypoint.sh"] diff --git a/src/containers/omnia_core/build.sh b/src/containers/omnia_core/build.sh new file mode 100644 index 0000000000..12e0498626 --- /dev/null +++ b/src/containers/omnia_core/build.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# ============================================================================= +# omnia_core — Container Build Script +# ============================================================================= +# Sourced by build_images.sh. Defines build_omnia_core(). +# Build context: repo root (for COPY src/ /omnia/src/) +# ============================================================================= + +build_omnia_core() { + print_build_info "omnia_core" "${CORE_TAG}" + + container_build \ + "omnia_core" \ + "${CORE_TAG}" \ + "${REPO_ROOT}" \ + "src/containers/omnia_core/Containerfile" +} diff --git a/src/containers/omnia_core/cert-copy.sh b/src/containers/omnia_core/cert-copy.sh new file mode 100644 index 0000000000..b77b1e5321 --- /dev/null +++ b/src/containers/omnia_core/cert-copy.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +CERT_PATH="/opt/omnia/pulp/settings/certs/pulp_webserver.crt" +ANCHOR_PATH="/etc/pki/ca-trust/source/anchors" +LOG_DIR="/opt/omnia/log/core" +LOG_FILE="${LOG_DIR}/pulp_cert_log" + +mkdir -p "$LOG_DIR" +: > "$LOG_FILE" + +echo "$(date '+%Y-%m-%d %H:%M:%S'): Container started" >> "$LOG_FILE" + +if [ -f "$CERT_PATH" ]; then + echo "$(date '+%Y-%m-%d %H:%M:%S'): Cert found at $CERT_PATH" >> "$LOG_FILE" + + cp -f "$CERT_PATH" "$ANCHOR_PATH/" + echo "$(date '+%Y-%m-%d %H:%M:%S'): Copied cert to $ANCHOR_PATH" >> "$LOG_FILE" + + update-ca-trust extract + echo "$(date '+%Y-%m-%d %H:%M:%S'): Ran update-ca-trust" >> "$LOG_FILE" +else + echo "$(date '+%Y-%m-%d %H:%M:%S'): Cert not found at $CERT_PATH" >> "$LOG_FILE" +fi + +exec "$@" diff --git a/src/containers/omnia_core/entrypoint.sh b/src/containers/omnia_core/entrypoint.sh new file mode 100644 index 0000000000..d50e068104 --- /dev/null +++ b/src/containers/omnia_core/entrypoint.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# Call script to copy pulp cert +/cert-copy.sh + +# Grab the hashed password +omnia_core_hashed_passwd=$(grep omnia_core_hashed_passwd /opt/omnia/.data/oim_metadata.yml | awk -F: '{print $2}' | tr -d ' ') + +echo "root:$omnia_core_hashed_passwd" | chpasswd -e + +# Start SSH daemon +/usr/sbin/sshd -D diff --git a/src/containers/omnia_core/pyproject.toml b/src/containers/omnia_core/pyproject.toml new file mode 100644 index 0000000000..1f3b16bf04 --- /dev/null +++ b/src/containers/omnia_core/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "omnia_core" +version = "0.1.0" +description = "Python environment for the Omnia Core container." +requires-python = ">= 3.12" +dependencies = [ + "psycopg2-binary==2.9.11", + "requests>=2.33.0", + "pyarrow==22.0.0", + "pandas==2.3.3", + "passlib==1.7.4", + "pulp-cli==0.40.1", + "pygments>=2.20.0", + "netaddr==1.3.0", + "pexpect==4.9.0", + "psutil==7.1.3", + "pyyaml==6.0.3", + "PyMySQL==1.1.2", + "omsdk==1.2.518", + "pysnmp==7.1.22", + "kubernetes==32.0.1", + "cryptography==48.0.0", + "logger==1.4", + "prettytable==3.14.0", + "toml==0.10.2", + "http_client==0.1.22", + "gitPython==3.1.50", + "ansible-lint==25.6.1", + "jmespath==1.0.1", + "urllib3==2.7.0", + "pyasn1==0.6.3", + "filelock==3.20.3", + "wheel==0.46.2", + "ansible-core==2.20.7", + "jaraco.context>=6.1.0" +] + + +[tool.uv] +override-dependencies = [ + "requests>=2.33.0", + "click>=8.4.1", +] diff --git a/src/containers/omnia_core/uv.lock b/src/containers/omnia_core/uv.lock new file mode 100644 index 0000000000..423c8f43f4 --- /dev/null +++ b/src/containers/omnia_core/uv.lock @@ -0,0 +1,1549 @@ +version = 1 +revision = 4 +requires-python = ">=3.12" + +[manifest] +overrides = [{ name = "requests", specifier = ">=2.33.0" }, { name = "click", specifier = ">=8.4.1" }] + +[[package]] +name = "ansible-compat" +version = "25.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ansible-core" }, + { name = "jsonschema" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "subprocess-tee" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/8f/14e8566b9a0cd5393150719db218a7b332308456b003b289f21e5812000a/ansible_compat-25.12.1.tar.gz", hash = "sha256:509a42fbfc65acad90b4e62c311ec0b37447e497b9b2a19cc38a625e458f2afd", size = 214925, upload-time = "2026-02-25T15:47:02.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/05/5f889ab2b104426630e40a13c121594756047c06ebcaa5bf046883550e09/ansible_compat-25.12.1-py3-none-any.whl", hash = "sha256:9246bef1b8d89bdd18cc1f07d2711dcc6e09daf51f6e15880415dd4312d788f1", size = 27773, upload-time = "2026-02-25T15:47:00.249Z" }, +] + +[[package]] +name = "ansible-core" +version = "2.20.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "resolvelib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/39/f41e3432e5cfbf039ee7c1288661d679cb4b25440f06712f9ee3fe4dd31b/ansible_core-2.20.7.tar.gz", hash = "sha256:84d4097a28e816e8bf8066307088f833837db9efdc9dc6716b43253de3b14106", size = 3338904, upload-time = "2026-06-18T19:36:23.660454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/9e/07afc00c1789d6ab40eb5e38ca5b258ff5ecded657ccf100a874e22d3b12/ansible_core-2.20.7-py3-none-any.whl", hash = "sha256:f4be63a9a8b6bb5f4fc68d41f8582f5b289b1ee1db0600caab8b3a660b9d7ddc", size = 2427099, upload-time = "2026-06-18T19:36:22.129746Z" }, +] + +[[package]] +name = "ansible-lint" +version = "25.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ansible-compat" }, + { name = "ansible-core" }, + { name = "black" }, + { name = "filelock" }, + { name = "importlib-metadata" }, + { name = "jsonschema" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "ruamel-yaml" }, + { name = "subprocess-tee" }, + { name = "wcmatch" }, + { name = "yamllint" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/27/f04e69b710efbfde20cfdcdb8eec3b3b1d4b6d480a80afa803386304e829/ansible_lint-25.6.1.tar.gz", hash = "sha256:6a1dd2b7a9f3f202c9e92a6c80296ff33ca863348c3acf978f80fb0d4536dce4", size = 559349, upload-time = "2025-06-19T07:34:23.206Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/1d/8e4972bc37bc6a2ac87a687076775e631350dd05c3d0517f88e0c46176a6/ansible_lint-25.6.1-py3-none-any.whl", hash = "sha256:69fe294a3cc30d8819b5a30625a7e25225f48558cadb83ad3d4dec597c1b8c2c", size = 316902, upload-time = "2025-06-19T07:34:21.1Z" }, +] + +[[package]] +name = "attrs" +version = "25.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, +] + +[[package]] +name = "black" +version = "26.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, + { name = "pytokens" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/5f/25b7b149b8b7d3b958efa4faa56446560408c0f2651108a517526de0320a/black-26.3.0.tar.gz", hash = "sha256:4d438dfdba1c807c6c7c63c4f15794dda0820d2222e7c4105042ac9ddfc5dd0b", size = 664127, upload-time = "2026-03-06T17:42:33.7Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/76/b21711045b7f4c4f1774048d0b34dd10a265c42255658b251ce3303ae3c7/black-26.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c2b1e5eec220b419e3591a0aaa6351bd3a9c01fe6291fbaf76d84308eb7a2ede", size = 1895944, upload-time = "2026-03-06T17:46:24.841Z" }, + { url = "https://files.pythonhosted.org/packages/f2/c3/8c56e73283326bc92a36101c660228fff09a2403a57a03cacf3f7f84cf62/black-26.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1bab64de70bccc992432bee56cdffbe004ceeaa07352127c386faa87e81f9261", size = 1718669, upload-time = "2026-03-06T17:46:26.639Z" }, + { url = "https://files.pythonhosted.org/packages/7b/8b/712a3ae8f17c1f3cd6f9ac2fffb167a27192f5c7aba68724e8c4ab8474ad/black-26.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b6c5f734290803b7b26493ffd734b02b72e6c90d82d45ac4d5b862b9bdf7720", size = 1794844, upload-time = "2026-03-06T17:46:28.334Z" }, + { url = "https://files.pythonhosted.org/packages/ba/5b/ee955040e446df86473287dd24dc69c80dd05e02cc358bca90e22059f7b1/black-26.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:7c767396af15b54e1a6aae99ddf241ae97e589f666b1d22c4b6618282a04e4ca", size = 1420461, upload-time = "2026-03-06T17:46:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/12/77/40b8bd44f032bb34c9ebf47ffc5bb47a2520d29e0a4b8a780ab515223b5a/black-26.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:765fd6ddd00f35c55250fdc6b790c272d54ac3f44da719cc42df428269b45980", size = 1229667, upload-time = "2026-03-06T17:46:31.654Z" }, + { url = "https://files.pythonhosted.org/packages/28/c3/21a834ce3de02c64221243f2adac63fa3c3f441efdb3adbf4136b33dfeb0/black-26.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:59754fd8f43ef457be190594c07a52c999e22cb1534dc5344bff1d46fdf1027d", size = 1895195, upload-time = "2026-03-06T17:46:33.12Z" }, + { url = "https://files.pythonhosted.org/packages/1c/f9/212d9697dd78362dadb778d4616b74c8c2cf7f2e4a55aac2adeb0576f2e9/black-26.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1fd94cfee67b8d336761a0b08629a25938e4a491c440951ce517a7209c99b5ff", size = 1718472, upload-time = "2026-03-06T17:46:34.576Z" }, + { url = "https://files.pythonhosted.org/packages/a2/dd/da980b2f512441375b73cb511f38a2c3db4be83ccaa1302b8d39c9fa2dff/black-26.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f7b3e653a90ca1ef4e821c20f8edaee80b649c38d2532ed2e9073a9534b14a7", size = 1793741, upload-time = "2026-03-06T17:46:36.261Z" }, + { url = "https://files.pythonhosted.org/packages/93/11/cd69ae8826fe3bc6eaf525c8c557266d522b258154a2968eb46d6d25fac7/black-26.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:f8fb9d7c2496adc83614856e1f6e55a9ce4b7ae7fc7f45b46af9189ddb493464", size = 1422522, upload-time = "2026-03-06T17:46:37.607Z" }, + { url = "https://files.pythonhosted.org/packages/75/f5/647cf50255203eb286be197925e86eedc101d5409147505db3e463229228/black-26.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:e8618c1d06838f56afbcb3ffa1aa16436cec62b86b38c7b32ca86f53948ffb91", size = 1231807, upload-time = "2026-03-06T17:46:39.072Z" }, + { url = "https://files.pythonhosted.org/packages/ff/77/b197e701f15fd694d20d8ee0001efa2e29eba917aa7c3610ff7b10ae0f88/black-26.3.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d0c6f64ead44f4369c66f1339ecf68e99b40f2e44253c257f7807c5a3ef0ca32", size = 1889209, upload-time = "2026-03-06T17:46:40.453Z" }, + { url = "https://files.pythonhosted.org/packages/93/85/b4d4924ac898adc2e39fc7a923bed99797535bc16dea4bc63944c3903c2b/black-26.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ed6f0809134e51ec4a7509e069cdfa42bf996bd0fd1df6d3146b907f36e28893", size = 1720830, upload-time = "2026-03-06T17:46:42.009Z" }, + { url = "https://files.pythonhosted.org/packages/00/b1/5c0bf29fe5b43fcc6f3e8480c6566d21a02d4e702b3846944e7daa06dea9/black-26.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cc6ac0ea5dd5fa6311ca82edfa3620cba0ed0426022d10d2d5d39aedbf3e1958", size = 1787676, upload-time = "2026-03-06T17:46:43.382Z" }, + { url = "https://files.pythonhosted.org/packages/b8/ce/cc8cf14806c144d6a16512272c537d5450f50675d3e8c038705430e90fd9/black-26.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:884bc0aefa96adabcba0b77b10e9775fd52d4b766e88c44dc6f41f7c82787fc8", size = 1445406, upload-time = "2026-03-06T17:46:44.948Z" }, + { url = "https://files.pythonhosted.org/packages/cf/bb/049ea0fad9f8bdec7b647948adcf74bb720bd71dcb213decd553e05b2699/black-26.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:be3bd02aab5c4ab03703172f5530ddc8fc8b5b7bb8786230e84c9e011cee9ca1", size = 1257945, upload-time = "2026-03-06T17:46:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/39/d7/7360654ba4f8b41afcaeb5aca973cfea5591da75aff79b0a8ae0bb8883f6/black-26.3.0-py3-none-any.whl", hash = "sha256:e825d6b121910dff6f04d7691f826d2449327e8e71c26254c030c4f3d2311985", size = 206848, upload-time = "2026-03-06T17:42:31.133Z" }, +] + +[[package]] +name = "bracex" +version = "2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/9a/fec38644694abfaaeca2798b58e276a8e61de49e2e37494ace423395febc/bracex-2.6.tar.gz", hash = "sha256:98f1347cd77e22ee8d967a30ad4e310b233f7754dbf31ff3fceb76145ba47dc7", size = 26642, upload-time = "2025-06-22T19:12:31.254Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/2a/9186535ce58db529927f6cf5990a849aa9e052eea3e2cfefe20b9e1802da/bracex-2.6-py3-none-any.whl", hash = "sha256:0b0049264e7340b3ec782b5cb99beb325f36c3782a32e36e876452fd49a09952", size = 11508, upload-time = "2025-06-22T19:12:29.781Z" }, +] + +[[package]] +name = "certifi" +version = "2026.2.25" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/35/02daf95b9cd686320bb622eb148792655c9412dbb9b67abb5694e5910a24/charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644", size = 134804, upload-time = "2026-03-06T06:03:19.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/b6/9ee9c1a608916ca5feae81a344dffbaa53b26b90be58cc2159e3332d44ec/charset_normalizer-3.4.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed97c282ee4f994ef814042423a529df9497e3c666dca19be1d4cd1129dc7ade", size = 280976, upload-time = "2026-03-06T06:01:15.276Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d8/a54f7c0b96f1df3563e9190f04daf981e365a9b397eedfdfb5dbef7e5c6c/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0294916d6ccf2d069727d65973c3a1ca477d68708db25fd758dd28b0827cff54", size = 189356, upload-time = "2026-03-06T06:01:16.511Z" }, + { url = "https://files.pythonhosted.org/packages/42/69/2bf7f76ce1446759a5787cb87d38f6a61eb47dbbdf035cfebf6347292a65/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dc57a0baa3eeedd99fafaef7511b5a6ef4581494e8168ee086031744e2679467", size = 206369, upload-time = "2026-03-06T06:01:17.853Z" }, + { url = "https://files.pythonhosted.org/packages/10/9c/949d1a46dab56b959d9a87272482195f1840b515a3380e39986989a893ae/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ed1a9a204f317ef879b32f9af507d47e49cd5e7f8e8d5d96358c98373314fc60", size = 203285, upload-time = "2026-03-06T06:01:19.473Z" }, + { url = "https://files.pythonhosted.org/packages/67/5c/ae30362a88b4da237d71ea214a8c7eb915db3eec941adda511729ac25fa2/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad83b8f9379176c841f8865884f3514d905bcd2a9a3b210eaa446e7d2223e4d", size = 196274, upload-time = "2026-03-06T06:01:20.728Z" }, + { url = "https://files.pythonhosted.org/packages/b2/07/c9f2cb0e46cb6d64fdcc4f95953747b843bb2181bda678dc4e699b8f0f9a/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:a118e2e0b5ae6b0120d5efa5f866e58f2bb826067a646431da4d6a2bdae7950e", size = 184715, upload-time = "2026-03-06T06:01:22.194Z" }, + { url = "https://files.pythonhosted.org/packages/36/64/6b0ca95c44fddf692cd06d642b28f63009d0ce325fad6e9b2b4d0ef86a52/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:754f96058e61a5e22e91483f823e07df16416ce76afa4ebf306f8e1d1296d43f", size = 193426, upload-time = "2026-03-06T06:01:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/50/bc/a730690d726403743795ca3f5bb2baf67838c5fea78236098f324b965e40/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0c300cefd9b0970381a46394902cd18eaf2aa00163f999590ace991989dcd0fc", size = 191780, upload-time = "2026-03-06T06:01:25.053Z" }, + { url = "https://files.pythonhosted.org/packages/97/4f/6c0bc9af68222b22951552d73df4532b5be6447cee32d58e7e8c74ecbb7b/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c108f8619e504140569ee7de3f97d234f0fbae338a7f9f360455071ef9855a95", size = 185805, upload-time = "2026-03-06T06:01:26.294Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b9/a523fb9b0ee90814b503452b2600e4cbc118cd68714d57041564886e7325/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d1028de43596a315e2720a9849ee79007ab742c06ad8b45a50db8cdb7ed4a82a", size = 208342, upload-time = "2026-03-06T06:01:27.55Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/c59e761dee4464050713e50e27b58266cc8e209e518c0b378c1580c959ba/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:19092dde50335accf365cce21998a1c6dd8eafd42c7b226eb54b2747cdce2fac", size = 193661, upload-time = "2026-03-06T06:01:29.051Z" }, + { url = "https://files.pythonhosted.org/packages/1c/43/729fa30aad69783f755c5ad8649da17ee095311ca42024742701e202dc59/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4354e401eb6dab9aed3c7b4030514328a6c748d05e1c3e19175008ca7de84fb1", size = 204819, upload-time = "2026-03-06T06:01:30.298Z" }, + { url = "https://files.pythonhosted.org/packages/87/33/d9b442ce5a91b96fc0840455a9e49a611bbadae6122778d0a6a79683dd31/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a68766a3c58fde7f9aaa22b3786276f62ab2f594efb02d0a1421b6282e852e98", size = 198080, upload-time = "2026-03-06T06:01:31.478Z" }, + { url = "https://files.pythonhosted.org/packages/56/5a/b8b5a23134978ee9885cee2d6995f4c27cc41f9baded0a9685eabc5338f0/charset_normalizer-3.4.5-cp312-cp312-win32.whl", hash = "sha256:1827734a5b308b65ac54e86a618de66f935a4f63a8a462ff1e19a6788d6c2262", size = 132630, upload-time = "2026-03-06T06:01:33.056Z" }, + { url = "https://files.pythonhosted.org/packages/70/53/e44a4c07e8904500aec95865dc3f6464dc3586a039ef0df606eb3ac38e35/charset_normalizer-3.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:728c6a963dfab66ef865f49286e45239384249672cd598576765acc2a640a636", size = 142856, upload-time = "2026-03-06T06:01:34.489Z" }, + { url = "https://files.pythonhosted.org/packages/ea/aa/c5628f7cad591b1cf45790b7a61483c3e36cf41349c98af7813c483fd6e8/charset_normalizer-3.4.5-cp312-cp312-win_arm64.whl", hash = "sha256:75dfd1afe0b1647449e852f4fb428195a7ed0588947218f7ba929f6538487f02", size = 132982, upload-time = "2026-03-06T06:01:35.641Z" }, + { url = "https://files.pythonhosted.org/packages/f5/48/9f34ec4bb24aa3fdba1890c1bddb97c8a4be1bd84ef5c42ac2352563ad05/charset_normalizer-3.4.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ac59c15e3f1465f722607800c68713f9fbc2f672b9eb649fe831da4019ae9b23", size = 280788, upload-time = "2026-03-06T06:01:37.126Z" }, + { url = "https://files.pythonhosted.org/packages/0e/09/6003e7ffeb90cc0560da893e3208396a44c210c5ee42efff539639def59b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:165c7b21d19365464e8f70e5ce5e12524c58b48c78c1f5a57524603c1ab003f8", size = 188890, upload-time = "2026-03-06T06:01:38.73Z" }, + { url = "https://files.pythonhosted.org/packages/42/1e/02706edf19e390680daa694d17e2b8eab4b5f7ac285e2a51168b4b22ee6b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:28269983f25a4da0425743d0d257a2d6921ea7d9b83599d4039486ec5b9f911d", size = 206136, upload-time = "2026-03-06T06:01:40.016Z" }, + { url = "https://files.pythonhosted.org/packages/c7/87/942c3def1b37baf3cf786bad01249190f3ca3d5e63a84f831e704977de1f/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d27ce22ec453564770d29d03a9506d449efbb9fa13c00842262b2f6801c48cce", size = 202551, upload-time = "2026-03-06T06:01:41.522Z" }, + { url = "https://files.pythonhosted.org/packages/94/0a/af49691938dfe175d71b8a929bd7e4ace2809c0c5134e28bc535660d5262/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0625665e4ebdddb553ab185de5db7054393af8879fb0c87bd5690d14379d6819", size = 195572, upload-time = "2026-03-06T06:01:43.208Z" }, + { url = "https://files.pythonhosted.org/packages/20/ea/dfb1792a8050a8e694cfbde1570ff97ff74e48afd874152d38163d1df9ae/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:c23eb3263356d94858655b3e63f85ac5d50970c6e8febcdde7830209139cc37d", size = 184438, upload-time = "2026-03-06T06:01:44.755Z" }, + { url = "https://files.pythonhosted.org/packages/72/12/c281e2067466e3ddd0595bfaea58a6946765ace5c72dfa3edc2f5f118026/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e6302ca4ae283deb0af68d2fbf467474b8b6aedcd3dab4db187e07f94c109763", size = 193035, upload-time = "2026-03-06T06:01:46.051Z" }, + { url = "https://files.pythonhosted.org/packages/ba/4f/3792c056e7708e10464bad0438a44708886fb8f92e3c3d29ec5e2d964d42/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e51ae7d81c825761d941962450f50d041db028b7278e7b08930b4541b3e45cb9", size = 191340, upload-time = "2026-03-06T06:01:47.547Z" }, + { url = "https://files.pythonhosted.org/packages/e7/86/80ddba897127b5c7a9bccc481b0cd36c8fefa485d113262f0fe4332f0bf4/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:597d10dec876923e5c59e48dbd366e852eacb2b806029491d307daea6b917d7c", size = 185464, upload-time = "2026-03-06T06:01:48.764Z" }, + { url = "https://files.pythonhosted.org/packages/4d/00/b5eff85ba198faacab83e0e4b6f0648155f072278e3b392a82478f8b988b/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5cffde4032a197bd3b42fd0b9509ec60fb70918d6970e4cc773f20fc9180ca67", size = 208014, upload-time = "2026-03-06T06:01:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/c8/11/d36f70be01597fd30850dde8a1269ebc8efadd23ba5785808454f2389bde/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2da4eedcb6338e2321e831a0165759c0c620e37f8cd044a263ff67493be8ffb3", size = 193297, upload-time = "2026-03-06T06:01:51.933Z" }, + { url = "https://files.pythonhosted.org/packages/1a/1d/259eb0a53d4910536c7c2abb9cb25f4153548efb42800c6a9456764649c0/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:65a126fb4b070d05340a84fc709dd9e7c75d9b063b610ece8a60197a291d0adf", size = 204321, upload-time = "2026-03-06T06:01:53.887Z" }, + { url = "https://files.pythonhosted.org/packages/84/31/faa6c5b9d3688715e1ed1bb9d124c384fe2fc1633a409e503ffe1c6398c1/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7a80a9242963416bd81f99349d5f3fce1843c303bd404f204918b6d75a75fd6", size = 197509, upload-time = "2026-03-06T06:01:56.439Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a5/c7d9dd1503ffc08950b3260f5d39ec2366dd08254f0900ecbcf3a6197c7c/charset_normalizer-3.4.5-cp313-cp313-win32.whl", hash = "sha256:f1d725b754e967e648046f00c4facc42d414840f5ccc670c5670f59f83693e4f", size = 132284, upload-time = "2026-03-06T06:01:57.812Z" }, + { url = "https://files.pythonhosted.org/packages/b9/0f/57072b253af40c8aa6636e6de7d75985624c1eb392815b2f934199340a89/charset_normalizer-3.4.5-cp313-cp313-win_amd64.whl", hash = "sha256:e37bd100d2c5d3ba35db9c7c5ba5a9228cbcffe5c4778dc824b164e5257813d7", size = 142630, upload-time = "2026-03-06T06:01:59.062Z" }, + { url = "https://files.pythonhosted.org/packages/31/41/1c4b7cc9f13bd9d369ce3bc993e13d374ce25fa38a2663644283ecf422c1/charset_normalizer-3.4.5-cp313-cp313-win_arm64.whl", hash = "sha256:93b3b2cc5cf1b8743660ce77a4f45f3f6d1172068207c1defc779a36eea6bb36", size = 133254, upload-time = "2026-03-06T06:02:00.281Z" }, + { url = "https://files.pythonhosted.org/packages/43/be/0f0fd9bb4a7fa4fb5067fb7d9ac693d4e928d306f80a0d02bde43a7c4aee/charset_normalizer-3.4.5-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8197abe5ca1ffb7d91e78360f915eef5addff270f8a71c1fc5be24a56f3e4873", size = 280232, upload-time = "2026-03-06T06:02:01.508Z" }, + { url = "https://files.pythonhosted.org/packages/28/02/983b5445e4bef49cd8c9da73a8e029f0825f39b74a06d201bfaa2e55142a/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2aecdb364b8a1802afdc7f9327d55dad5366bc97d8502d0f5854e50712dbc5f", size = 189688, upload-time = "2026-03-06T06:02:02.857Z" }, + { url = "https://files.pythonhosted.org/packages/d0/88/152745c5166437687028027dc080e2daed6fe11cfa95a22f4602591c42db/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a66aa5022bf81ab4b1bebfb009db4fd68e0c6d4307a1ce5ef6a26e5878dfc9e4", size = 206833, upload-time = "2026-03-06T06:02:05.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0f/ebc15c8b02af2f19be9678d6eed115feeeccc45ce1f4b098d986c13e8769/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d77f97e515688bd615c1d1f795d540f32542d514242067adcb8ef532504cb9ee", size = 202879, upload-time = "2026-03-06T06:02:06.446Z" }, + { url = "https://files.pythonhosted.org/packages/38/9c/71336bff6934418dc8d1e8a1644176ac9088068bc571da612767619c97b3/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01a1ed54b953303ca7e310fafe0fe347aab348bd81834a0bcd602eb538f89d66", size = 195764, upload-time = "2026-03-06T06:02:08.763Z" }, + { url = "https://files.pythonhosted.org/packages/b7/95/ce92fde4f98615661871bc282a856cf9b8a15f686ba0af012984660d480b/charset_normalizer-3.4.5-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:b2d37d78297b39a9eb9eb92c0f6df98c706467282055419df141389b23f93362", size = 183728, upload-time = "2026-03-06T06:02:10.137Z" }, + { url = "https://files.pythonhosted.org/packages/1c/e7/f5b4588d94e747ce45ae680f0f242bc2d98dbd4eccfab73e6160b6893893/charset_normalizer-3.4.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e71bbb595973622b817c042bd943c3f3667e9c9983ce3d205f973f486fec98a7", size = 192937, upload-time = "2026-03-06T06:02:11.663Z" }, + { url = "https://files.pythonhosted.org/packages/f9/29/9d94ed6b929bf9f48bf6ede6e7474576499f07c4c5e878fb186083622716/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4cd966c2559f501c6fd69294d082c2934c8dd4719deb32c22961a5ac6db0df1d", size = 192040, upload-time = "2026-03-06T06:02:13.489Z" }, + { url = "https://files.pythonhosted.org/packages/15/d2/1a093a1cf827957f9445f2fe7298bcc16f8fc5e05c1ed2ad1af0b239035e/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d5e52d127045d6ae01a1e821acfad2f3a1866c54d0e837828538fabe8d9d1bd6", size = 184107, upload-time = "2026-03-06T06:02:14.83Z" }, + { url = "https://files.pythonhosted.org/packages/0f/7d/82068ce16bd36135df7b97f6333c5d808b94e01d4599a682e2337ed5fd14/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:30a2b1a48478c3428d047ed9690d57c23038dac838a87ad624c85c0a78ebeb39", size = 208310, upload-time = "2026-03-06T06:02:16.165Z" }, + { url = "https://files.pythonhosted.org/packages/84/4e/4dfb52307bb6af4a5c9e73e482d171b81d36f522b21ccd28a49656baa680/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d8ed79b8f6372ca4254955005830fd61c1ccdd8c0fac6603e2c145c61dd95db6", size = 192918, upload-time = "2026-03-06T06:02:18.144Z" }, + { url = "https://files.pythonhosted.org/packages/08/a4/159ff7da662cf7201502ca89980b8f06acf3e887b278956646a8aeb178ab/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:c5af897b45fa606b12464ccbe0014bbf8c09191e0a66aab6aa9d5cf6e77e0c94", size = 204615, upload-time = "2026-03-06T06:02:19.821Z" }, + { url = "https://files.pythonhosted.org/packages/d6/62/0dd6172203cb6b429ffffc9935001fde42e5250d57f07b0c28c6046deb6b/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1088345bcc93c58d8d8f3d783eca4a6e7a7752bbff26c3eee7e73c597c191c2e", size = 197784, upload-time = "2026-03-06T06:02:21.86Z" }, + { url = "https://files.pythonhosted.org/packages/c7/5e/1aab5cb737039b9c59e63627dc8bbc0d02562a14f831cc450e5f91d84ce1/charset_normalizer-3.4.5-cp314-cp314-win32.whl", hash = "sha256:ee57b926940ba00bca7ba7041e665cc956e55ef482f851b9b65acb20d867e7a2", size = 133009, upload-time = "2026-03-06T06:02:23.289Z" }, + { url = "https://files.pythonhosted.org/packages/40/65/e7c6c77d7aaa4c0d7974f2e403e17f0ed2cb0fc135f77d686b916bf1eead/charset_normalizer-3.4.5-cp314-cp314-win_amd64.whl", hash = "sha256:4481e6da1830c8a1cc0b746b47f603b653dadb690bcd851d039ffaefe70533aa", size = 143511, upload-time = "2026-03-06T06:02:26.195Z" }, + { url = "https://files.pythonhosted.org/packages/ba/91/52b0841c71f152f563b8e072896c14e3d83b195c188b338d3cc2e582d1d4/charset_normalizer-3.4.5-cp314-cp314-win_arm64.whl", hash = "sha256:97ab7787092eb9b50fb47fa04f24c75b768a606af1bcba1957f07f128a7219e4", size = 133775, upload-time = "2026-03-06T06:02:27.473Z" }, + { url = "https://files.pythonhosted.org/packages/c5/60/3a621758945513adfd4db86827a5bafcc615f913dbd0b4c2ed64a65731be/charset_normalizer-3.4.5-py3-none-any.whl", hash = "sha256:9db5e3fcdcee89a78c04dffb3fe33c79f77bd741a624946db2591c81b2fc85b0", size = 55455, upload-time = "2026-03-06T06:03:17.827Z" }, +] + +[[package]] +name = "click" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96", size = 353007, upload-time = "2026-05-22T04:08:37.769Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "cryptography" +version = "48.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/a9/db8f313fdcd85d767d4973515e1db101f9c71f95fced83233de224673757/cryptography-48.0.0.tar.gz", hash = "sha256:5c3932f4436d1cccb036cb0eaef46e6e2db91035166f1ad6505c3c9d5a635920", size = 832984, upload-time = "2026-05-04T22:59:38.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/3d/01f6dd9190170a5a241e0e98c2d04be3664a9e6f5b9b872cde63aff1c3dd/cryptography-48.0.0-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:0c558d2cdffd8f4bbb30fc7134c74d2ca9a476f830bb053074498fbc86f41ed6", size = 8001587, upload-time = "2026-05-04T22:57:36.803Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6e/e90527eef33f309beb811cf7c982c3aeffcce8e3edb178baa4ca3ae4a6fa/cryptography-48.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f5333311663ea94f75dd408665686aaf426563556bb5283554a3539177e03b8c", size = 4690433, upload-time = "2026-05-04T22:57:40.373Z" }, + { url = "https://files.pythonhosted.org/packages/90/04/673510ed51ddff56575f306cf1617d80411ee76831ccd3097599140efdfe/cryptography-48.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7995ef305d7165c3f11ae07f2517e5a4f1d5c18da1376a0a9ed496336b69e5f3", size = 4710620, upload-time = "2026-05-04T22:57:42.935Z" }, + { url = "https://files.pythonhosted.org/packages/14/d5/e9c4ef932c8d800490c34d8bd589d64a31d5890e27ec9e9ad532be893294/cryptography-48.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:40ba1f85eaa6959837b1d51c9767e230e14612eea4ef110ee8854ada22da1bf5", size = 4696283, upload-time = "2026-05-04T22:57:45.294Z" }, + { url = "https://files.pythonhosted.org/packages/0c/29/174b9dfb60b12d59ecfc6cfa04bc88c21b42a54f01b8aae09bb6e51e4c7f/cryptography-48.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:369a6348999f94bbd53435c894377b20ab95f25a9065c283570e70150d8abc3c", size = 5296573, upload-time = "2026-05-04T22:57:47.933Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/0d29a6fd7d0d1373f0c0c88a04ba20e359b257753ac497564cd660fc1d55/cryptography-48.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a0e692c683f4df67815a2d258b324e66f4738bd7a96a218c826dce4f4bd05d8f", size = 4743677, upload-time = "2026-05-04T22:57:50.067Z" }, + { url = "https://files.pythonhosted.org/packages/30/be/eef653013d5c63b6a490529e0316f9ac14a37602965d4903efed1399f32b/cryptography-48.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:18349bbc56f4743c8b12dc32e2bccb2cf83ee8b69a3bba74ef8ae857e26b3d25", size = 4330808, upload-time = "2026-05-04T22:57:52.301Z" }, + { url = "https://files.pythonhosted.org/packages/84/9e/500463e87abb7a0a0f9f256ec21123ecde0a7b5541a15e840ea54551fd81/cryptography-48.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:7e8eac43dfca5c4cccc6dad9a80504436fca53bb9bc3100a2386d730fbe6b602", size = 4695941, upload-time = "2026-05-04T22:57:54.603Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dc/7303087450c2ec9e7fbb750e17c2abfbc658f23cbd0e54009509b7cc4091/cryptography-48.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9ccdac7d40688ecb5a3b4a604b8a88c8002e3442d6c60aead1db2a89a041560c", size = 5252579, upload-time = "2026-05-04T22:57:57.207Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c0/7101d3b7215edcdc90c45da544961fd8ed2d6448f77577460fa75a8443f7/cryptography-48.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:bd72e68b06bb1e96913f97dd4901119bc17f39d4586a5adf2d3e47bc2b9d58b5", size = 4743326, upload-time = "2026-05-04T22:57:59.535Z" }, + { url = "https://files.pythonhosted.org/packages/ac/d8/5b833bad13016f562ab9d063d68199a4bd121d18458e439515601d3357ec/cryptography-48.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:59baa2cb386c4f0b9905bd6eb4c2a79a69a128408fd31d32ca4d7102d4156321", size = 4826672, upload-time = "2026-05-04T22:58:01.996Z" }, + { url = "https://files.pythonhosted.org/packages/98/e1/7074eb8bf3c135558c73fc2bcf0f5633f912e6fb87e868a55c454080ef09/cryptography-48.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9249e3cd978541d665967ac2cb2787fd6a62bddf1e75b3e347a594d7dacf4f74", size = 4972574, upload-time = "2026-05-04T22:58:03.968Z" }, + { url = "https://files.pythonhosted.org/packages/04/70/e5a1b41d325f797f39427aa44ef8baf0be500065ab6d8e10369d850d4a4f/cryptography-48.0.0-cp311-abi3-win32.whl", hash = "sha256:9c459db21422be75e2809370b829a87eb37f74cd785fc4aa9ea1e5f43b47cda4", size = 3294868, upload-time = "2026-05-04T22:58:06.467Z" }, + { url = "https://files.pythonhosted.org/packages/f4/ac/8ac51b4a5fc5932eb7ee5c517ba7dc8cd834f0048962b6b352f00f41ebf9/cryptography-48.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:5b012212e08b8dd5edc78ef54da83dd9892fd9105323b3993eff6bea65dc21d7", size = 3817107, upload-time = "2026-05-04T22:58:08.845Z" }, + { url = "https://files.pythonhosted.org/packages/6b/84/70e3feea9feea87fd7cbe77efb2712ae1e3e6edf10749dc6e95f4e60e455/cryptography-48.0.0-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:3cb07a3ed6431663cd321ea8a000a1314c74211f823e4177fefa2255e057d1ec", size = 7986556, upload-time = "2026-05-04T22:58:11.172Z" }, + { url = "https://files.pythonhosted.org/packages/89/6e/18e07a618bb5442ba10cf4df16e99c071365528aa570dfcb8c02e25a303b/cryptography-48.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8c7378637d7d88016fa6791c159f698b3d3eed28ebf844ac36b9dc04a14dae18", size = 4684776, upload-time = "2026-05-04T22:58:13.712Z" }, + { url = "https://files.pythonhosted.org/packages/be/6a/4ea3b4c6c6759794d5ee2103c304a5076dc4b19ae1f9fe47dba439e159e9/cryptography-48.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc90c0b39b2e3c65ef52c804b72e3c58f8a04ab2a1871272798e5f9572c17d20", size = 4698121, upload-time = "2026-05-04T22:58:16.448Z" }, + { url = "https://files.pythonhosted.org/packages/2f/59/6ff6ad6cae03bb887da2a5860b2c9805f8dac969ef01ce563336c49bd1d1/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:76341972e1eff8b4bea859f09c0d3e64b96ce931b084f9b9b7db8ef364c30eff", size = 4690042, upload-time = "2026-05-04T22:58:18.544Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b4/fc334ed8cfd705aca282fe4d8f5ae64a8e0f74932e9feecb344610cf6e4d/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:55b7718303bf06a5753dcdccf2f3945cf18ad7bffde41b61226e4db31ab89a9c", size = 5282526, upload-time = "2026-05-04T22:58:20.75Z" }, + { url = "https://files.pythonhosted.org/packages/11/08/9f8c5386cc4cd90d8255c7cdd0f5baf459a08502a09de30dc51f553d38dc/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:a64697c641c7b1b2178e573cbc31c7c6684cd56883a478d75143dbb7118036db", size = 4733116, upload-time = "2026-05-04T22:58:23.627Z" }, + { url = "https://files.pythonhosted.org/packages/b8/77/99307d7574045699f8805aa500fa0fb83422d115b5400a064ddd306d7750/cryptography-48.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:561215ea3879cb1cbbf272867e2efda62476f240fb58c64de6b393ae19246741", size = 4316030, upload-time = "2026-05-04T22:58:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/fd/36/a608b98337af3cb2aff4818e406649d30572b7031918b04c87d979495348/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ad64688338ed4bc1a6618076ba75fd7194a5f1797ac60b47afe926285adb3166", size = 4689640, upload-time = "2026-05-04T22:58:27.747Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a6/825010a291b4438aecc1f568bc428189fc1175515223632477c07dc0a6df/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:906cbf0670286c6e0044156bc7d4af9cbb0ef6db9f73e52c3ec56ba6bdde5336", size = 5237657, upload-time = "2026-05-04T22:58:29.848Z" }, + { url = "https://files.pythonhosted.org/packages/b9/09/4e76a09b4caa29aad535ddc806f5d4c5d01885bd978bd984fbc6ca032cae/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:ea8990436d914540a40ab24b6a77c0969695ed52f4a4874c5137ccf7045a7057", size = 4732362, upload-time = "2026-05-04T22:58:32.009Z" }, + { url = "https://files.pythonhosted.org/packages/18/78/444fa04a77d0cb95f417dda20d450e13c56ba8e5220fc892a1658f44f882/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c18684a7f0cc9a3cb60328f496b8e3372def7c5d2df39ac267878b05565aaaae", size = 4819580, upload-time = "2026-05-04T22:58:34.254Z" }, + { url = "https://files.pythonhosted.org/packages/38/85/ea67067c70a1fd4be2c63d35eeed82658023021affccc7b17705f8527dd2/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9be5aafa5736574f8f15f262adc81b2a9869e2cfe9014d52a44633905b40d52c", size = 4963283, upload-time = "2026-05-04T22:58:36.376Z" }, + { url = "https://files.pythonhosted.org/packages/75/54/cc6d0f3deac3e81c7f847e8a189a12b6cdd65059b43dad25d4316abd849a/cryptography-48.0.0-cp314-cp314t-win32.whl", hash = "sha256:c17dfe85494deaeddc5ce251aebd1d60bbe6afc8b62071bb0b469431a000124f", size = 3270954, upload-time = "2026-05-04T22:58:38.791Z" }, + { url = "https://files.pythonhosted.org/packages/49/67/cc947e288c0758a4e5473d1dcb743037ab7785541265a969240b8885441a/cryptography-48.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27241b1dc9962e056062a8eef1991d02c3a24569c95975bd2322a8a52c6e5e12", size = 3797313, upload-time = "2026-05-04T22:58:40.746Z" }, + { url = "https://files.pythonhosted.org/packages/f2/63/61d4a4e1c6b6bab6ce1e213cd36a24c415d90e76d78c5eb8577c5541d2e8/cryptography-48.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:58d00498e8933e4a194f3076aee1b4a97dfec1a6da444535755822fe5d8b0b86", size = 7983482, upload-time = "2026-05-04T22:58:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ac/f5b5995b87770c693e2596559ffafe195b4033a57f14a82268a2842953f3/cryptography-48.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:614d0949f4790582d2cc25553abd09dd723025f0c0e7c67376a1d77196743d6e", size = 4683266, upload-time = "2026-05-04T22:58:46.064Z" }, + { url = "https://files.pythonhosted.org/packages/ec/c6/8b14f67e18338fbc4adb76f66c001f5c3610b3e2d1837f268f47a347dbbb/cryptography-48.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ce4bfae76319a532a2dc68f82cc32f5676ee792a983187dac07183690e5c66f", size = 4696228, upload-time = "2026-05-04T22:58:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/ea/73/f808fbae9514bd91b47875b003f13e284c8c6bdfd904b7944e803937eec1/cryptography-48.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:2eb992bbd4661238c5a397594c83f5b4dc2bc5b848c365c8f991b6780efcc5c7", size = 4689097, upload-time = "2026-05-04T22:58:50.9Z" }, + { url = "https://files.pythonhosted.org/packages/93/01/d86632d7d28db8ae83221995752eeb6639ffb374c2d22955648cf8d52797/cryptography-48.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:22a5cb272895dce158b2cacdfdc3debd299019659f42947dbdac6f32d68fe832", size = 5283582, upload-time = "2026-05-04T22:58:53.017Z" }, + { url = "https://files.pythonhosted.org/packages/02/e1/50edc7a50334807cc4791fc4a0ce7468b4a1416d9138eab358bfc9a3d70b/cryptography-48.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2b4d59804e8408e2fea7d1fbaf218e5ec984325221db76e6a241a9abd6cdd95c", size = 4730479, upload-time = "2026-05-04T22:58:55.611Z" }, + { url = "https://files.pythonhosted.org/packages/6f/af/99a582b1b1641ff5911ac559beb45097cf79efd4ead4657f578ef1af2d47/cryptography-48.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:984a20b0f62a26f48a3396c72e4bc34c66e356d356bf370053066b3b6d54634a", size = 4326481, upload-time = "2026-05-04T22:58:57.607Z" }, + { url = "https://files.pythonhosted.org/packages/90/ee/89aa26a06ef0a7d7611788ffd571a7c50e368cc6a4d5eef8b4884e866edb/cryptography-48.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5a5ed8fde7a1d09376ca0b40e68cd59c69fe23b1f9768bd5824f54681626032a", size = 4688713, upload-time = "2026-05-04T22:59:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/70/ba/bcb1b0bb7a33d4c7c0c4d4c7874b4a62ae4f56113a5f4baefa362dfb1f0f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:8cd666227ef7af430aa5914a9910e0ddd703e75f039cef0825cd0da71b6b711a", size = 5238165, upload-time = "2026-05-04T22:59:02.317Z" }, + { url = "https://files.pythonhosted.org/packages/c9/70/ca4003b1ce5ca3dc3186ada51908c8a9b9ff7d5cab83cc0d43ee14ec144f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9071196d81abc88b3516ac8cdfad32e2b66dd4a5393a8e68a961e9161ddc6239", size = 4729947, upload-time = "2026-05-04T22:59:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/4ec7cf774207905aef1a8d11c3750d5a1db805eb380ee4e16df317870128/cryptography-48.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1e2d54c8be6152856a36f0882ab231e70f8ec7f14e93cf87db8a2ed056bf160c", size = 4822059, upload-time = "2026-05-04T22:59:07.802Z" }, + { url = "https://files.pythonhosted.org/packages/1e/75/a2e55f99c16fcac7b5d6c1eb19ad8e00799854d6be5ca845f9259eae1681/cryptography-48.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5da777e32ffed6f85a7b2b3f7c5cbc88c146bfcd0a1d7baf5fcc6c52ee35dd4", size = 4960575, upload-time = "2026-05-04T22:59:09.851Z" }, + { url = "https://files.pythonhosted.org/packages/b8/23/6e6f32143ab5d8b36ca848a502c4bcd477ae75b9e1677e3530d669062578/cryptography-48.0.0-cp39-abi3-win32.whl", hash = "sha256:77a2ccbbe917f6710e05ba9adaa25fb5075620bf3ea6fb751997875aff4ae4bd", size = 3279117, upload-time = "2026-05-04T22:59:12.019Z" }, + { url = "https://files.pythonhosted.org/packages/9d/9a/0fea98a70cf1749d41d738836f6349d97945f7c89433a259a6c2642eefeb/cryptography-48.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:16cd65b9330583e4619939b3a3843eec1e6e789744bb01e7c7e2e62e33c239c8", size = 3792100, upload-time = "2026-05-04T22:59:14.884Z" }, +] + +[[package]] +name = "durationpy" +version = "0.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/a4/e44218c2b394e31a6dd0d6b095c4e1f32d0be54c2a4b250032d717647bab/durationpy-0.10.tar.gz", hash = "sha256:1fa6893409a6e739c9c72334fc65cca1f355dbdd93405d30f726deb5bde42fba", size = 3335, upload-time = "2025-05-17T13:52:37.26Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/0d/9feae160378a3553fa9a339b0e9c1a048e147a4127210e286ef18b730f03/durationpy-0.10-py3-none-any.whl", hash = "sha256:3b41e1b601234296b4fb368338fdcd3e13e0b4fb5b67345948f4f2bf9868b286", size = 3922, upload-time = "2025-05-17T13:52:36.463Z" }, +] + +[[package]] +name = "filelock" +version = "3.20.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/65/ce7f1b70157833bf3cb851b556a37d4547ceafc158aa9b34b36782f23696/filelock-3.20.3.tar.gz", hash = "sha256:18c57ee915c7ec61cff0ecf7f0f869936c7c30191bb0cf406f1341778d0834e1", size = 19485, upload-time = "2026-01-09T17:55:05.421Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/36/7fb70f04bf00bc646cd5bb45aa9eddb15e19437a28b8fb2b4a5249fac770/filelock-3.20.3-py3-none-any.whl", hash = "sha256:4b0dda527ee31078689fc205ec4f1c1bf7d56cf88b6dc9426c4f230e46c2dce1", size = 16701, upload-time = "2026-01-09T17:55:04.334Z" }, +] + +[[package]] +name = "future" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/b2/4140c69c6a66432916b26158687e821ba631a4c9273c474343badf84d3ba/future-1.0.0.tar.gz", hash = "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05", size = 1228490, upload-time = "2024-02-21T11:52:38.461Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216", size = 491326, upload-time = "2024-02-21T11:52:35.956Z" }, +] + +[[package]] +name = "gitdb" +version = "4.0.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "smmap" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload-time = "2025-01-02T07:20:46.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload-time = "2025-01-02T07:20:43.624Z" }, +] + +[[package]] +name = "gitpython" +version = "3.1.50" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gitdb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/f6/354ae6491228b5eb40e10d89c4d13c651fe1cf7556e35ebdded50cff57ce/gitpython-3.1.50.tar.gz", hash = "sha256:80da2d12504d52e1f998772dc5baf6e553f8d2fcfe1fcc226c9d9a2ee3372dcc", size = 219798, upload-time = "2026-05-06T04:01:26.571Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl", hash = "sha256:d352abe2908d07355014abdd21ddf798c2a961469239afec4962e9da884858f9", size = 212507, upload-time = "2026-05-06T04:01:23.799Z" }, +] + +[[package]] +name = "google-auth" +version = "2.49.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/59/7371175bfd949abfb1170aa076352131d7281bd9449c0f978604fc4431c3/google_auth-2.49.0.tar.gz", hash = "sha256:9cc2d9259d3700d7a257681f81052db6737495a1a46b610597f4b8bafe5286ae", size = 333444, upload-time = "2026-03-06T21:53:06.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/45/de64b823b639103de4b63dd193480dce99526bd36be6530c2dba85bf7817/google_auth-2.49.0-py3-none-any.whl", hash = "sha256:f893ef7307f19cf53700b7e2f61b5a6affe3aa0edf9943b13788920ab92d8d87", size = 240676, upload-time = "2026-03-06T21:52:38.304Z" }, +] + +[[package]] +name = "http-client" +version = "0.1.22" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycurl" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/e5/2e8134353629a91854c50a228f1624e21985aca1abc9d0ef0ce25bf5f389/http_client-0.1.22.tar.gz", hash = "sha256:f33d77e4e08b70659e1497eeb3d2121a3c6e8a4c252b3c6a56e87a16bb442f91", size = 1582, upload-time = "2017-08-28T09:50:08.55Z" } + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, +] + +[[package]] +name = "ipaddress" +version = "1.0.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/9a/3e9da40ea28b8210dd6504d3fe9fe7e013b62bf45902b458d1cdc3c34ed9/ipaddress-1.0.23.tar.gz", hash = "sha256:b7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2", size = 32958, upload-time = "2019-10-18T01:30:24.58Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f8/49697181b1651d8347d24c095ce46c7346c37335ddc7d255833e7cde674d/ipaddress-1.0.23-py2.py3-none-any.whl", hash = "sha256:6e0f4a39e66cb5bb9a137b00276a2eff74f93b71dcbdad6f10ff7df9d3557fcc", size = 18159, upload-time = "2019-10-18T01:30:27.002Z" }, +] + +[[package]] +name = "jaraco-context" +version = "6.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/50/4763cd07e722bb6285316d390a164bc7e479db9d90daa769f22578f698b4/jaraco_context-6.1.2.tar.gz", hash = "sha256:f1a6c9d391e661cc5b8d39861ff077a7dc24dc23833ccee564b234b81c82dfe3", size = 16801, upload-time = "2026-03-20T22:13:33.922Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/58/bc8954bda5fcda97bd7c19be11b85f91973d67a706ed4a3aec33e7de22db/jaraco_context-6.1.2-py3-none-any.whl", hash = "sha256:bf8150b79a2d5d91ae48629d8b427a8f7ba0e1097dd6202a9059f29a36379535", size = 7871, upload-time = "2026-03-20T22:13:32.808Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "kubernetes" +version = "32.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "durationpy" }, + { name = "google-auth" }, + { name = "oauthlib" }, + { name = "python-dateutil" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "requests-oauthlib" }, + { name = "six" }, + { name = "urllib3" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/e8/0598f0e8b4af37cd9b10d8b87386cf3173cb8045d834ab5f6ec347a758b3/kubernetes-32.0.1.tar.gz", hash = "sha256:42f43d49abd437ada79a79a16bd48a604d3471a117a8347e87db693f2ba0ba28", size = 946691, upload-time = "2025-02-18T21:06:34.148Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/10/9f8af3e6f569685ce3af7faab51c8dd9d93b9c38eba339ca31c746119447/kubernetes-32.0.1-py2.py3-none-any.whl", hash = "sha256:35282ab8493b938b08ab5526c7ce66588232df00ef5e1dbe88a419107dc10998", size = 1988070, upload-time = "2025-02-18T21:06:31.391Z" }, +] + +[[package]] +name = "logger" +version = "1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/73/2f/b0d28eaa1e2c1cf64129f8da3fe701888d152677fec708cd0f13e8309e1e/logger-1.4.tar.gz", hash = "sha256:4ecac57133c6376fa215f0fe6b4dc4d60e4d1ad8be005cab4e8a702df682f8b3", size = 1187, upload-time = "2013-10-22T16:49:01.48Z" } + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "multidict" +version = "6.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183, upload-time = "2025-05-19T14:16:37.381Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293, upload-time = "2025-05-19T14:14:44.724Z" }, + { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096, upload-time = "2025-05-19T14:14:45.95Z" }, + { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214, upload-time = "2025-05-19T14:14:47.158Z" }, + { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686, upload-time = "2025-05-19T14:14:48.366Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061, upload-time = "2025-05-19T14:14:49.952Z" }, + { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412, upload-time = "2025-05-19T14:14:51.812Z" }, + { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563, upload-time = "2025-05-19T14:14:53.262Z" }, + { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811, upload-time = "2025-05-19T14:14:55.232Z" }, + { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524, upload-time = "2025-05-19T14:14:57.226Z" }, + { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012, upload-time = "2025-05-19T14:14:58.597Z" }, + { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765, upload-time = "2025-05-19T14:15:00.048Z" }, + { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888, upload-time = "2025-05-19T14:15:01.568Z" }, + { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041, upload-time = "2025-05-19T14:15:03.759Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046, upload-time = "2025-05-19T14:15:05.698Z" }, + { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106, upload-time = "2025-05-19T14:15:07.124Z" }, + { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351, upload-time = "2025-05-19T14:15:08.556Z" }, + { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791, upload-time = "2025-05-19T14:15:09.825Z" }, + { url = "https://files.pythonhosted.org/packages/df/2a/e166d2ffbf4b10131b2d5b0e458f7cee7d986661caceae0de8753042d4b2/multidict-6.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:82ffabefc8d84c2742ad19c37f02cde5ec2a1ee172d19944d380f920a340e4b9", size = 64123, upload-time = "2025-05-19T14:15:11.044Z" }, + { url = "https://files.pythonhosted.org/packages/8c/96/e200e379ae5b6f95cbae472e0199ea98913f03d8c9a709f42612a432932c/multidict-6.4.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6a2f58a66fe2c22615ad26156354005391e26a2f3721c3621504cd87c1ea87bf", size = 38049, upload-time = "2025-05-19T14:15:12.902Z" }, + { url = "https://files.pythonhosted.org/packages/75/fb/47afd17b83f6a8c7fa863c6d23ac5ba6a0e6145ed8a6bcc8da20b2b2c1d2/multidict-6.4.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5883d6ee0fd9d8a48e9174df47540b7545909841ac82354c7ae4cbe9952603bd", size = 37078, upload-time = "2025-05-19T14:15:14.282Z" }, + { url = "https://files.pythonhosted.org/packages/fa/70/1af3143000eddfb19fd5ca5e78393985ed988ac493bb859800fe0914041f/multidict-6.4.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9abcf56a9511653fa1d052bfc55fbe53dbee8f34e68bd6a5a038731b0ca42d15", size = 224097, upload-time = "2025-05-19T14:15:15.566Z" }, + { url = "https://files.pythonhosted.org/packages/b1/39/d570c62b53d4fba844e0378ffbcd02ac25ca423d3235047013ba2f6f60f8/multidict-6.4.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6ed5ae5605d4ad5a049fad2a28bb7193400700ce2f4ae484ab702d1e3749c3f9", size = 230768, upload-time = "2025-05-19T14:15:17.308Z" }, + { url = "https://files.pythonhosted.org/packages/fd/f8/ed88f2c4d06f752b015933055eb291d9bc184936903752c66f68fb3c95a7/multidict-6.4.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbfcb60396f9bcfa63e017a180c3105b8c123a63e9d1428a36544e7d37ca9e20", size = 231331, upload-time = "2025-05-19T14:15:18.73Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6f/8e07cffa32f483ab887b0d56bbd8747ac2c1acd00dc0af6fcf265f4a121e/multidict-6.4.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0f1987787f5f1e2076b59692352ab29a955b09ccc433c1f6b8e8e18666f608b", size = 230169, upload-time = "2025-05-19T14:15:20.179Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2b/5dcf173be15e42f330110875a2668ddfc208afc4229097312212dc9c1236/multidict-6.4.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0121ccce8c812047d8d43d691a1ad7641f72c4f730474878a5aeae1b8ead8c", size = 222947, upload-time = "2025-05-19T14:15:21.714Z" }, + { url = "https://files.pythonhosted.org/packages/39/75/4ddcbcebe5ebcd6faa770b629260d15840a5fc07ce8ad295a32e14993726/multidict-6.4.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83ec4967114295b8afd120a8eec579920c882831a3e4c3331d591a8e5bfbbc0f", size = 215761, upload-time = "2025-05-19T14:15:23.242Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c9/55e998ae45ff15c5608e384206aa71a11e1b7f48b64d166db400b14a3433/multidict-6.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:995f985e2e268deaf17867801b859a282e0448633f1310e3704b30616d269d69", size = 227605, upload-time = "2025-05-19T14:15:24.763Z" }, + { url = "https://files.pythonhosted.org/packages/04/49/c2404eac74497503c77071bd2e6f88c7e94092b8a07601536b8dbe99be50/multidict-6.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:d832c608f94b9f92a0ec8b7e949be7792a642b6e535fcf32f3e28fab69eeb046", size = 226144, upload-time = "2025-05-19T14:15:26.249Z" }, + { url = "https://files.pythonhosted.org/packages/62/c5/0cd0c3c6f18864c40846aa2252cd69d308699cb163e1c0d989ca301684da/multidict-6.4.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d21c1212171cf7da703c5b0b7a0e85be23b720818aef502ad187d627316d5645", size = 221100, upload-time = "2025-05-19T14:15:28.303Z" }, + { url = "https://files.pythonhosted.org/packages/71/7b/f2f3887bea71739a046d601ef10e689528d4f911d84da873b6be9194ffea/multidict-6.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:cbebaa076aaecad3d4bb4c008ecc73b09274c952cf6a1b78ccfd689e51f5a5b0", size = 232731, upload-time = "2025-05-19T14:15:30.263Z" }, + { url = "https://files.pythonhosted.org/packages/e5/b3/d9de808349df97fa75ec1372758701b5800ebad3c46ae377ad63058fbcc6/multidict-6.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:c93a6fb06cc8e5d3628b2b5fda215a5db01e8f08fc15fadd65662d9b857acbe4", size = 229637, upload-time = "2025-05-19T14:15:33.337Z" }, + { url = "https://files.pythonhosted.org/packages/5e/57/13207c16b615eb4f1745b44806a96026ef8e1b694008a58226c2d8f5f0a5/multidict-6.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8cd8f81f1310182362fb0c7898145ea9c9b08a71081c5963b40ee3e3cac589b1", size = 225594, upload-time = "2025-05-19T14:15:34.832Z" }, + { url = "https://files.pythonhosted.org/packages/3a/e4/d23bec2f70221604f5565000632c305fc8f25ba953e8ce2d8a18842b9841/multidict-6.4.4-cp313-cp313-win32.whl", hash = "sha256:3e9f1cd61a0ab857154205fb0b1f3d3ace88d27ebd1409ab7af5096e409614cd", size = 35359, upload-time = "2025-05-19T14:15:36.246Z" }, + { url = "https://files.pythonhosted.org/packages/a7/7a/cfe1a47632be861b627f46f642c1d031704cc1c0f5c0efbde2ad44aa34bd/multidict-6.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:8ffb40b74400e4455785c2fa37eba434269149ec525fc8329858c862e4b35373", size = 38903, upload-time = "2025-05-19T14:15:37.507Z" }, + { url = "https://files.pythonhosted.org/packages/68/7b/15c259b0ab49938a0a1c8f3188572802704a779ddb294edc1b2a72252e7c/multidict-6.4.4-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:6a602151dbf177be2450ef38966f4be3467d41a86c6a845070d12e17c858a156", size = 68895, upload-time = "2025-05-19T14:15:38.856Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7d/168b5b822bccd88142e0a3ce985858fea612404edd228698f5af691020c9/multidict-6.4.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0d2b9712211b860d123815a80b859075d86a4d54787e247d7fbee9db6832cf1c", size = 40183, upload-time = "2025-05-19T14:15:40.197Z" }, + { url = "https://files.pythonhosted.org/packages/e0/b7/d4b8d98eb850ef28a4922ba508c31d90715fd9b9da3801a30cea2967130b/multidict-6.4.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d2fa86af59f8fc1972e121ade052145f6da22758f6996a197d69bb52f8204e7e", size = 39592, upload-time = "2025-05-19T14:15:41.508Z" }, + { url = "https://files.pythonhosted.org/packages/18/28/a554678898a19583548e742080cf55d169733baf57efc48c2f0273a08583/multidict-6.4.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50855d03e9e4d66eab6947ba688ffb714616f985838077bc4b490e769e48da51", size = 226071, upload-time = "2025-05-19T14:15:42.877Z" }, + { url = "https://files.pythonhosted.org/packages/ee/dc/7ba6c789d05c310e294f85329efac1bf5b450338d2542498db1491a264df/multidict-6.4.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5bce06b83be23225be1905dcdb6b789064fae92499fbc458f59a8c0e68718601", size = 222597, upload-time = "2025-05-19T14:15:44.412Z" }, + { url = "https://files.pythonhosted.org/packages/24/4f/34eadbbf401b03768dba439be0fb94b0d187facae9142821a3d5599ccb3b/multidict-6.4.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66ed0731f8e5dfd8369a883b6e564aca085fb9289aacabd9decd70568b9a30de", size = 228253, upload-time = "2025-05-19T14:15:46.474Z" }, + { url = "https://files.pythonhosted.org/packages/c0/e6/493225a3cdb0d8d80d43a94503fc313536a07dae54a3f030d279e629a2bc/multidict-6.4.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:329ae97fc2f56f44d91bc47fe0972b1f52d21c4b7a2ac97040da02577e2daca2", size = 226146, upload-time = "2025-05-19T14:15:48.003Z" }, + { url = "https://files.pythonhosted.org/packages/2f/70/e411a7254dc3bff6f7e6e004303b1b0591358e9f0b7c08639941e0de8bd6/multidict-6.4.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c27e5dcf520923d6474d98b96749e6805f7677e93aaaf62656005b8643f907ab", size = 220585, upload-time = "2025-05-19T14:15:49.546Z" }, + { url = "https://files.pythonhosted.org/packages/08/8f/beb3ae7406a619100d2b1fb0022c3bb55a8225ab53c5663648ba50dfcd56/multidict-6.4.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:058cc59b9e9b143cc56715e59e22941a5d868c322242278d28123a5d09cdf6b0", size = 212080, upload-time = "2025-05-19T14:15:51.151Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ec/355124e9d3d01cf8edb072fd14947220f357e1c5bc79c88dff89297e9342/multidict-6.4.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:69133376bc9a03f8c47343d33f91f74a99c339e8b58cea90433d8e24bb298031", size = 226558, upload-time = "2025-05-19T14:15:52.665Z" }, + { url = "https://files.pythonhosted.org/packages/fd/22/d2b95cbebbc2ada3be3812ea9287dcc9712d7f1a012fad041770afddb2ad/multidict-6.4.4-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:d6b15c55721b1b115c5ba178c77104123745b1417527ad9641a4c5e2047450f0", size = 212168, upload-time = "2025-05-19T14:15:55.279Z" }, + { url = "https://files.pythonhosted.org/packages/4d/c5/62bfc0b2f9ce88326dbe7179f9824a939c6c7775b23b95de777267b9725c/multidict-6.4.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a887b77f51d3d41e6e1a63cf3bc7ddf24de5939d9ff69441387dfefa58ac2e26", size = 217970, upload-time = "2025-05-19T14:15:56.806Z" }, + { url = "https://files.pythonhosted.org/packages/79/74/977cea1aadc43ff1c75d23bd5bc4768a8fac98c14e5878d6ee8d6bab743c/multidict-6.4.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:632a3bf8f1787f7ef7d3c2f68a7bde5be2f702906f8b5842ad6da9d974d0aab3", size = 226980, upload-time = "2025-05-19T14:15:58.313Z" }, + { url = "https://files.pythonhosted.org/packages/48/fc/cc4a1a2049df2eb84006607dc428ff237af38e0fcecfdb8a29ca47b1566c/multidict-6.4.4-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:a145c550900deb7540973c5cdb183b0d24bed6b80bf7bddf33ed8f569082535e", size = 220641, upload-time = "2025-05-19T14:15:59.866Z" }, + { url = "https://files.pythonhosted.org/packages/3b/6a/a7444d113ab918701988d4abdde373dbdfd2def7bd647207e2bf645c7eac/multidict-6.4.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc5d83c6619ca5c9672cb78b39ed8542f1975a803dee2cda114ff73cbb076edd", size = 221728, upload-time = "2025-05-19T14:16:01.535Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b0/fdf4c73ad1c55e0f4dbbf2aa59dd37037334091f9a4961646d2b7ac91a86/multidict-6.4.4-cp313-cp313t-win32.whl", hash = "sha256:3312f63261b9df49be9d57aaa6abf53a6ad96d93b24f9cc16cf979956355ce6e", size = 41913, upload-time = "2025-05-19T14:16:03.199Z" }, + { url = "https://files.pythonhosted.org/packages/8e/92/27989ecca97e542c0d01d05a98a5ae12198a243a9ee12563a0313291511f/multidict-6.4.4-cp313-cp313t-win_amd64.whl", hash = "sha256:ba852168d814b2c73333073e1c7116d9395bea69575a01b0b3c89d2d5a87c8fb", size = 46112, upload-time = "2025-05-19T14:16:04.909Z" }, + { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481, upload-time = "2025-05-19T14:16:36.024Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "netaddr" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/90/188b2a69654f27b221fba92fda7217778208532c962509e959a9cee5229d/netaddr-1.3.0.tar.gz", hash = "sha256:5c3c3d9895b551b763779ba7db7a03487dc1f8e3b385af819af341ae9ef6e48a", size = 2260504, upload-time = "2024-05-28T21:30:37.743Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/cc/f4fe2c7ce68b92cbf5b2d379ca366e1edae38cccaad00f69f529b460c3ef/netaddr-1.3.0-py3-none-any.whl", hash = "sha256:c2c6a8ebe5554ce33b7d5b3a306b71bbb373e000bbbf2350dd5213cc56e3dbbe", size = 2262023, upload-time = "2024-05-28T21:30:34.191Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/fd/0005efbd0af48e55eb3c7208af93f2862d4b1a56cd78e84309a2d959208d/numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae", size = 20723651, upload-time = "2026-01-31T23:13:10.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/6e/6f394c9c77668153e14d4da83bcc247beb5952f6ead7699a1a2992613bea/numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a", size = 16667963, upload-time = "2026-01-31T23:10:52.147Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f8/55483431f2b2fd015ae6ed4fe62288823ce908437ed49db5a03d15151678/numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1", size = 14693571, upload-time = "2026-01-31T23:10:54.789Z" }, + { url = "https://files.pythonhosted.org/packages/2f/20/18026832b1845cdc82248208dd929ca14c9d8f2bac391f67440707fff27c/numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e", size = 5203469, upload-time = "2026-01-31T23:10:57.343Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/2eb97c8a77daaba34eaa3fa7241a14ac5f51c46a6bd5911361b644c4a1e2/numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27", size = 6550820, upload-time = "2026-01-31T23:10:59.429Z" }, + { url = "https://files.pythonhosted.org/packages/b1/91/b97fdfd12dc75b02c44e26c6638241cc004d4079a0321a69c62f51470c4c/numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548", size = 15663067, upload-time = "2026-01-31T23:11:01.291Z" }, + { url = "https://files.pythonhosted.org/packages/f5/c6/a18e59f3f0b8071cc85cbc8d80cd02d68aa9710170b2553a117203d46936/numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f", size = 16619782, upload-time = "2026-01-31T23:11:03.669Z" }, + { url = "https://files.pythonhosted.org/packages/b7/83/9751502164601a79e18847309f5ceec0b1446d7b6aa12305759b72cf98b2/numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460", size = 17013128, upload-time = "2026-01-31T23:11:05.913Z" }, + { url = "https://files.pythonhosted.org/packages/61/c4/c4066322256ec740acc1c8923a10047818691d2f8aec254798f3dd90f5f2/numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba", size = 18345324, upload-time = "2026-01-31T23:11:08.248Z" }, + { url = "https://files.pythonhosted.org/packages/ab/af/6157aa6da728fa4525a755bfad486ae7e3f76d4c1864138003eb84328497/numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f", size = 5960282, upload-time = "2026-01-31T23:11:10.497Z" }, + { url = "https://files.pythonhosted.org/packages/92/0f/7ceaaeaacb40567071e94dbf2c9480c0ae453d5bb4f52bea3892c39dc83c/numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85", size = 12314210, upload-time = "2026-01-31T23:11:12.176Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a3/56c5c604fae6dd40fa2ed3040d005fca97e91bd320d232ac9931d77ba13c/numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa", size = 10220171, upload-time = "2026-01-31T23:11:14.684Z" }, + { url = "https://files.pythonhosted.org/packages/a1/22/815b9fe25d1d7ae7d492152adbc7226d3eff731dffc38fe970589fcaaa38/numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c", size = 16663696, upload-time = "2026-01-31T23:11:17.516Z" }, + { url = "https://files.pythonhosted.org/packages/09/f0/817d03a03f93ba9c6c8993de509277d84e69f9453601915e4a69554102a1/numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979", size = 14688322, upload-time = "2026-01-31T23:11:19.883Z" }, + { url = "https://files.pythonhosted.org/packages/da/b4/f805ab79293c728b9a99438775ce51885fd4f31b76178767cfc718701a39/numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98", size = 5198157, upload-time = "2026-01-31T23:11:22.375Z" }, + { url = "https://files.pythonhosted.org/packages/74/09/826e4289844eccdcd64aac27d13b0fd3f32039915dd5b9ba01baae1f436c/numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef", size = 6546330, upload-time = "2026-01-31T23:11:23.958Z" }, + { url = "https://files.pythonhosted.org/packages/19/fb/cbfdbfa3057a10aea5422c558ac57538e6acc87ec1669e666d32ac198da7/numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7", size = 15660968, upload-time = "2026-01-31T23:11:25.713Z" }, + { url = "https://files.pythonhosted.org/packages/04/dc/46066ce18d01645541f0186877377b9371b8fa8017fa8262002b4ef22612/numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499", size = 16607311, upload-time = "2026-01-31T23:11:28.117Z" }, + { url = "https://files.pythonhosted.org/packages/14/d9/4b5adfc39a43fa6bf918c6d544bc60c05236cc2f6339847fc5b35e6cb5b0/numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb", size = 17012850, upload-time = "2026-01-31T23:11:30.888Z" }, + { url = "https://files.pythonhosted.org/packages/b7/20/adb6e6adde6d0130046e6fdfb7675cc62bc2f6b7b02239a09eb58435753d/numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7", size = 18334210, upload-time = "2026-01-31T23:11:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/78/0e/0a73b3dff26803a8c02baa76398015ea2a5434d9b8265a7898a6028c1591/numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110", size = 5958199, upload-time = "2026-01-31T23:11:35.385Z" }, + { url = "https://files.pythonhosted.org/packages/43/bc/6352f343522fcb2c04dbaf94cb30cca6fd32c1a750c06ad6231b4293708c/numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622", size = 12310848, upload-time = "2026-01-31T23:11:38.001Z" }, + { url = "https://files.pythonhosted.org/packages/6e/8d/6da186483e308da5da1cc6918ce913dcfe14ffde98e710bfeff2a6158d4e/numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71", size = 10221082, upload-time = "2026-01-31T23:11:40.392Z" }, + { url = "https://files.pythonhosted.org/packages/25/a1/9510aa43555b44781968935c7548a8926274f815de42ad3997e9e83680dd/numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262", size = 14815866, upload-time = "2026-01-31T23:11:42.495Z" }, + { url = "https://files.pythonhosted.org/packages/36/30/6bbb5e76631a5ae46e7923dd16ca9d3f1c93cfa8d4ed79a129814a9d8db3/numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913", size = 5325631, upload-time = "2026-01-31T23:11:44.7Z" }, + { url = "https://files.pythonhosted.org/packages/46/00/3a490938800c1923b567b3a15cd17896e68052e2145d8662aaf3e1ffc58f/numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab", size = 6646254, upload-time = "2026-01-31T23:11:46.341Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e9/fac0890149898a9b609caa5af7455a948b544746e4b8fe7c212c8edd71f8/numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82", size = 15720138, upload-time = "2026-01-31T23:11:48.082Z" }, + { url = "https://files.pythonhosted.org/packages/ea/5c/08887c54e68e1e28df53709f1893ce92932cc6f01f7c3d4dc952f61ffd4e/numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f", size = 16655398, upload-time = "2026-01-31T23:11:50.293Z" }, + { url = "https://files.pythonhosted.org/packages/4d/89/253db0fa0e66e9129c745e4ef25631dc37d5f1314dad2b53e907b8538e6d/numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554", size = 17079064, upload-time = "2026-01-31T23:11:52.927Z" }, + { url = "https://files.pythonhosted.org/packages/2a/d5/cbade46ce97c59c6c3da525e8d95b7abe8a42974a1dc5c1d489c10433e88/numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257", size = 18379680, upload-time = "2026-01-31T23:11:55.22Z" }, + { url = "https://files.pythonhosted.org/packages/40/62/48f99ae172a4b63d981babe683685030e8a3df4f246c893ea5c6ef99f018/numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657", size = 6082433, upload-time = "2026-01-31T23:11:58.096Z" }, + { url = "https://files.pythonhosted.org/packages/07/38/e054a61cfe48ad9f1ed0d188e78b7e26859d0b60ef21cd9de4897cdb5326/numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b", size = 12451181, upload-time = "2026-01-31T23:11:59.782Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a4/a05c3a6418575e185dd84d0b9680b6bb2e2dc3e4202f036b7b4e22d6e9dc/numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1", size = 10290756, upload-time = "2026-01-31T23:12:02.438Z" }, + { url = "https://files.pythonhosted.org/packages/18/88/b7df6050bf18fdcfb7046286c6535cabbdd2064a3440fca3f069d319c16e/numpy-2.4.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:444be170853f1f9d528428eceb55f12918e4fda5d8805480f36a002f1415e09b", size = 16663092, upload-time = "2026-01-31T23:12:04.521Z" }, + { url = "https://files.pythonhosted.org/packages/25/7a/1fee4329abc705a469a4afe6e69b1ef7e915117747886327104a8493a955/numpy-2.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d1240d50adff70c2a88217698ca844723068533f3f5c5fa6ee2e3220e3bdb000", size = 14698770, upload-time = "2026-01-31T23:12:06.96Z" }, + { url = "https://files.pythonhosted.org/packages/fb/0b/f9e49ba6c923678ad5bc38181c08ac5e53b7a5754dbca8e581aa1a56b1ff/numpy-2.4.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:7cdde6de52fb6664b00b056341265441192d1291c130e99183ec0d4b110ff8b1", size = 5208562, upload-time = "2026-01-31T23:12:09.632Z" }, + { url = "https://files.pythonhosted.org/packages/7d/12/d7de8f6f53f9bb76997e5e4c069eda2051e3fe134e9181671c4391677bb2/numpy-2.4.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:cda077c2e5b780200b6b3e09d0b42205a3d1c68f30c6dceb90401c13bff8fe74", size = 6543710, upload-time = "2026-01-31T23:12:11.969Z" }, + { url = "https://files.pythonhosted.org/packages/09/63/c66418c2e0268a31a4cf8a8b512685748200f8e8e8ec6c507ce14e773529/numpy-2.4.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30291931c915b2ab5717c2974bb95ee891a1cf22ebc16a8006bd59cd210d40a", size = 15677205, upload-time = "2026-01-31T23:12:14.33Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6c/7f237821c9642fb2a04d2f1e88b4295677144ca93285fd76eff3bcba858d/numpy-2.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bba37bc29d4d85761deed3954a1bc62be7cf462b9510b51d367b769a8c8df325", size = 16611738, upload-time = "2026-01-31T23:12:16.525Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a7/39c4cdda9f019b609b5c473899d87abff092fc908cfe4d1ecb2fcff453b0/numpy-2.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b2f0073ed0868db1dcd86e052d37279eef185b9c8db5bf61f30f46adac63c909", size = 17028888, upload-time = "2026-01-31T23:12:19.306Z" }, + { url = "https://files.pythonhosted.org/packages/da/b3/e84bb64bdfea967cc10950d71090ec2d84b49bc691df0025dddb7c26e8e3/numpy-2.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7f54844851cdb630ceb623dcec4db3240d1ac13d4990532446761baede94996a", size = 18339556, upload-time = "2026-01-31T23:12:21.816Z" }, + { url = "https://files.pythonhosted.org/packages/88/f5/954a291bc1192a27081706862ac62bb5920fbecfbaa302f64682aa90beed/numpy-2.4.2-cp314-cp314-win32.whl", hash = "sha256:12e26134a0331d8dbd9351620f037ec470b7c75929cb8a1537f6bfe411152a1a", size = 6006899, upload-time = "2026-01-31T23:12:24.14Z" }, + { url = "https://files.pythonhosted.org/packages/05/cb/eff72a91b2efdd1bc98b3b8759f6a1654aa87612fc86e3d87d6fe4f948c4/numpy-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:068cdb2d0d644cdb45670810894f6a0600797a69c05f1ac478e8d31670b8ee75", size = 12443072, upload-time = "2026-01-31T23:12:26.33Z" }, + { url = "https://files.pythonhosted.org/packages/37/75/62726948db36a56428fce4ba80a115716dc4fad6a3a4352487f8bb950966/numpy-2.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:6ed0be1ee58eef41231a5c943d7d1375f093142702d5723ca2eb07db9b934b05", size = 10494886, upload-time = "2026-01-31T23:12:28.488Z" }, + { url = "https://files.pythonhosted.org/packages/36/2f/ee93744f1e0661dc267e4b21940870cabfae187c092e1433b77b09b50ac4/numpy-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:98f16a80e917003a12c0580f97b5f875853ebc33e2eaa4bccfc8201ac6869308", size = 14818567, upload-time = "2026-01-31T23:12:30.709Z" }, + { url = "https://files.pythonhosted.org/packages/a7/24/6535212add7d76ff938d8bdc654f53f88d35cddedf807a599e180dcb8e66/numpy-2.4.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:20abd069b9cda45874498b245c8015b18ace6de8546bf50dfa8cea1696ed06ef", size = 5328372, upload-time = "2026-01-31T23:12:32.962Z" }, + { url = "https://files.pythonhosted.org/packages/5e/9d/c48f0a035725f925634bf6b8994253b43f2047f6778a54147d7e213bc5a7/numpy-2.4.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e98c97502435b53741540a5717a6749ac2ada901056c7db951d33e11c885cc7d", size = 6649306, upload-time = "2026-01-31T23:12:34.797Z" }, + { url = "https://files.pythonhosted.org/packages/81/05/7c73a9574cd4a53a25907bad38b59ac83919c0ddc8234ec157f344d57d9a/numpy-2.4.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da6cad4e82cb893db4b69105c604d805e0c3ce11501a55b5e9f9083b47d2ffe8", size = 15722394, upload-time = "2026-01-31T23:12:36.565Z" }, + { url = "https://files.pythonhosted.org/packages/35/fa/4de10089f21fc7d18442c4a767ab156b25c2a6eaf187c0db6d9ecdaeb43f/numpy-2.4.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e4424677ce4b47fe73c8b5556d876571f7c6945d264201180db2dc34f676ab5", size = 16653343, upload-time = "2026-01-31T23:12:39.188Z" }, + { url = "https://files.pythonhosted.org/packages/b8/f9/d33e4ffc857f3763a57aa85650f2e82486832d7492280ac21ba9efda80da/numpy-2.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2b8f157c8a6f20eb657e240f8985cc135598b2b46985c5bccbde7616dc9c6b1e", size = 17078045, upload-time = "2026-01-31T23:12:42.041Z" }, + { url = "https://files.pythonhosted.org/packages/c8/b8/54bdb43b6225badbea6389fa038c4ef868c44f5890f95dd530a218706da3/numpy-2.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5daf6f3914a733336dab21a05cdec343144600e964d2fcdabaac0c0269874b2a", size = 18380024, upload-time = "2026-01-31T23:12:44.331Z" }, + { url = "https://files.pythonhosted.org/packages/a5/55/6e1a61ded7af8df04016d81b5b02daa59f2ea9252ee0397cb9f631efe9e5/numpy-2.4.2-cp314-cp314t-win32.whl", hash = "sha256:8c50dd1fc8826f5b26a5ee4d77ca55d88a895f4e4819c7ecc2a9f5905047a443", size = 6153937, upload-time = "2026-01-31T23:12:47.229Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/fa6118d1ed6d776b0983f3ceac9b1a5558e80df9365b1c3aa6d42bf9eee4/numpy-2.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fcf92bee92742edd401ba41135185866f7026c502617f422eb432cfeca4fe236", size = 12631844, upload-time = "2026-01-31T23:12:48.997Z" }, + { url = "https://files.pythonhosted.org/packages/32/0a/2ec5deea6dcd158f254a7b372fb09cfba5719419c8d66343bab35237b3fb/numpy-2.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:1f92f53998a17265194018d1cc321b2e96e900ca52d54c7c77837b71b9465181", size = 10565379, upload-time = "2026-01-31T23:12:51.345Z" }, +] + +[[package]] +name = "oauthlib" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" }, +] + +[[package]] +name = "omnia-core" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "ansible-core" }, + { name = "ansible-lint" }, + { name = "cryptography" }, + { name = "filelock" }, + { name = "gitpython" }, + { name = "http-client" }, + { name = "jaraco-context" }, + { name = "jmespath" }, + { name = "kubernetes" }, + { name = "logger" }, + { name = "netaddr" }, + { name = "omsdk" }, + { name = "pandas" }, + { name = "passlib" }, + { name = "pexpect" }, + { name = "prettytable" }, + { name = "psutil" }, + { name = "psycopg2-binary" }, + { name = "pulp-cli" }, + { name = "pyarrow" }, + { name = "pyasn1" }, + { name = "pygments" }, + { name = "pymysql" }, + { name = "pysnmp" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "toml" }, + { name = "urllib3" }, + { name = "wheel" }, +] + +[package.metadata] +requires-dist = [ + { name = "ansible-core", specifier = "==2.20.7" }, + { name = "ansible-lint", specifier = "==25.6.1" }, + { name = "cryptography", specifier = "==48.0.0" }, + { name = "filelock", specifier = "==3.20.3" }, + { name = "gitpython", specifier = "==3.1.50" }, + { name = "http-client", specifier = "==0.1.22" }, + { name = "jaraco-context", specifier = ">=6.1.0" }, + { name = "jmespath", specifier = "==1.0.1" }, + { name = "kubernetes", specifier = "==32.0.1" }, + { name = "logger", specifier = "==1.4" }, + { name = "netaddr", specifier = "==1.3.0" }, + { name = "omsdk", specifier = "==1.2.518" }, + { name = "pandas", specifier = "==2.3.3" }, + { name = "passlib", specifier = "==1.7.4" }, + { name = "pexpect", specifier = "==4.9.0" }, + { name = "prettytable", specifier = "==3.14.0" }, + { name = "psutil", specifier = "==7.1.3" }, + { name = "psycopg2-binary", specifier = "==2.9.11" }, + { name = "pulp-cli", specifier = "==0.33.0" }, + { name = "pyarrow", specifier = "==22.0.0" }, + { name = "pyasn1", specifier = "==0.6.3" }, + { name = "pygments", specifier = ">=2.20.0" }, + { name = "pymysql", specifier = "==1.1.2" }, + { name = "pysnmp", specifier = "==7.1.22" }, + { name = "pyyaml", specifier = "==6.0.3" }, + { name = "requests", specifier = ">=2.33.0" }, + { name = "toml", specifier = "==0.10.2" }, + { name = "urllib3", specifier = "==2.7.0" }, + { name = "wheel", specifier = "==0.46.2" }, +] + +[[package]] +name = "omsdk" +version = "1.2.518" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "future" }, + { name = "ipaddress" }, + { name = "pysnmp-mibs" }, + { name = "pyyaml" }, + { name = "requests" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/04/4321810d43e37ca07f46680f2622072af1eb15dcf33b33ab5ab09268a0e6/omsdk-1.2.518-py2.py3-none-any.whl", hash = "sha256:d0ae3ada1182ca2b03acdd5acb3c73d730bf7e26262bb4ed5cffad7289d1a571", size = 830131, upload-time = "2024-08-29T05:47:54.594Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, + { url = "https://files.pythonhosted.org/packages/04/fd/74903979833db8390b73b3a8a7d30d146d710bd32703724dd9083950386f/pandas-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0", size = 11540635, upload-time = "2025-09-29T23:25:52.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/00/266d6b357ad5e6d3ad55093a7e8efc7dd245f5a842b584db9f30b0f0a287/pandas-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593", size = 10759079, upload-time = "2025-09-29T23:26:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/ca/05/d01ef80a7a3a12b2f8bbf16daba1e17c98a2f039cbc8e2f77a2c5a63d382/pandas-2.3.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c", size = 11814049, upload-time = "2025-09-29T23:27:15.384Z" }, + { url = "https://files.pythonhosted.org/packages/15/b2/0e62f78c0c5ba7e3d2c5945a82456f4fac76c480940f805e0b97fcbc2f65/pandas-2.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b", size = 12332638, upload-time = "2025-09-29T23:27:51.625Z" }, + { url = "https://files.pythonhosted.org/packages/c5/33/dd70400631b62b9b29c3c93d2feee1d0964dc2bae2e5ad7a6c73a7f25325/pandas-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6", size = 12886834, upload-time = "2025-09-29T23:28:21.289Z" }, + { url = "https://files.pythonhosted.org/packages/d3/18/b5d48f55821228d0d2692b34fd5034bb185e854bdb592e9c640f6290e012/pandas-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3", size = 13409925, upload-time = "2025-09-29T23:28:58.261Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3d/124ac75fcd0ecc09b8fdccb0246ef65e35b012030defb0e0eba2cbbbe948/pandas-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5", size = 11109071, upload-time = "2025-09-29T23:32:27.484Z" }, + { url = "https://files.pythonhosted.org/packages/89/9c/0e21c895c38a157e0faa1fb64587a9226d6dd46452cac4532d80c3c4a244/pandas-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec", size = 12048504, upload-time = "2025-09-29T23:29:31.47Z" }, + { url = "https://files.pythonhosted.org/packages/d7/82/b69a1c95df796858777b68fbe6a81d37443a33319761d7c652ce77797475/pandas-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7", size = 11410702, upload-time = "2025-09-29T23:29:54.591Z" }, + { url = "https://files.pythonhosted.org/packages/f9/88/702bde3ba0a94b8c73a0181e05144b10f13f29ebfc2150c3a79062a8195d/pandas-2.3.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450", size = 11634535, upload-time = "2025-09-29T23:30:21.003Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/1bac1a839d12e6a82ec6cb40cda2edde64a2013a66963293696bbf31fbbb/pandas-2.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5", size = 12121582, upload-time = "2025-09-29T23:30:43.391Z" }, + { url = "https://files.pythonhosted.org/packages/44/91/483de934193e12a3b1d6ae7c8645d083ff88dec75f46e827562f1e4b4da6/pandas-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788", size = 12699963, upload-time = "2025-09-29T23:31:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/70/44/5191d2e4026f86a2a109053e194d3ba7a31a2d10a9c2348368c63ed4e85a/pandas-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87", size = 13202175, upload-time = "2025-09-29T23:31:59.173Z" }, +] + +[[package]] +name = "passlib" +version = "1.7.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11/passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04", size = 689844, upload-time = "2020-10-08T19:00:52.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/a4/ab6b7589382ca3df236e03faa71deac88cae040af60c071a78d254a62172/passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1", size = 525554, upload-time = "2020-10-08T19:00:49.856Z" }, +] + +[[package]] +name = "pathspec" +version = "1.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/36/e27608899f9b8d4dff0617b2d9ab17ca5608956ca44461ac14ac48b44015/pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645", size = 131200, upload-time = "2026-01-27T03:59:46.938Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload-time = "2026-01-27T03:59:45.137Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.9.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/56/8d4c30c8a1d07013911a8fdbd8f89440ef9f08d07a1b50ab8ca8be5a20f9/platformdirs-4.9.4.tar.gz", hash = "sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934", size = 28737, upload-time = "2026-03-05T18:34:13.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/d7/97f7e3a6abb67d8080dd406fd4df842c2be0efaf712d1c899c32a075027c/platformdirs-4.9.4-py3-none-any.whl", hash = "sha256:68a9a4619a666ea6439f2ff250c12a853cd1cbd5158d258bd824a7df6be2f868", size = 21216, upload-time = "2026-03-05T18:34:12.172Z" }, +] + +[[package]] +name = "prettytable" +version = "3.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/7b/18bb59d7c3a4ac9ac7d986cfe49dd3c2e5f5ae3e65ca3db8816764e0c1df/prettytable-3.14.0.tar.gz", hash = "sha256:b804b8d51db23959b96b329094debdbbdf10c8c3aa75958c5988cfd7f78501dd", size = 61747, upload-time = "2025-01-31T14:58:20.079Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/a2/fa0679e7a64b564074a8aa680c664ba8e6770166034f035a22ce74e55ae5/prettytable-3.14.0-py3-none-any.whl", hash = "sha256:61d5c68f04a94acc73c7aac64f0f380f5bed4d2959d59edc6e4cbb7a0e7b55c4", size = 31894, upload-time = "2025-01-31T14:58:18.69Z" }, +] + +[[package]] +name = "psutil" +version = "7.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz", hash = "sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74", size = 489059, upload-time = "2025-11-02T12:25:54.619Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/93/0c49e776b8734fef56ec9c5c57f923922f2cf0497d62e0f419465f28f3d0/psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc", size = 239751, upload-time = "2025-11-02T12:25:58.161Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8d/b31e39c769e70780f007969815195a55c81a63efebdd4dbe9e7a113adb2f/psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0", size = 240368, upload-time = "2025-11-02T12:26:00.491Z" }, + { url = "https://files.pythonhosted.org/packages/62/61/23fd4acc3c9eebbf6b6c78bcd89e5d020cfde4acf0a9233e9d4e3fa698b4/psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7", size = 287134, upload-time = "2025-11-02T12:26:02.613Z" }, + { url = "https://files.pythonhosted.org/packages/30/1c/f921a009ea9ceb51aa355cb0cc118f68d354db36eae18174bab63affb3e6/psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251", size = 289904, upload-time = "2025-11-02T12:26:05.207Z" }, + { url = "https://files.pythonhosted.org/packages/a6/82/62d68066e13e46a5116df187d319d1724b3f437ddd0f958756fc052677f4/psutil-7.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa", size = 249642, upload-time = "2025-11-02T12:26:07.447Z" }, + { url = "https://files.pythonhosted.org/packages/df/ad/c1cd5fe965c14a0392112f68362cfceb5230819dbb5b1888950d18a11d9f/psutil-7.1.3-cp313-cp313t-win_arm64.whl", hash = "sha256:c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee", size = 245518, upload-time = "2025-11-02T12:26:09.719Z" }, + { url = "https://files.pythonhosted.org/packages/2e/bb/6670bded3e3236eb4287c7bcdc167e9fae6e1e9286e437f7111caed2f909/psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353", size = 239843, upload-time = "2025-11-02T12:26:11.968Z" }, + { url = "https://files.pythonhosted.org/packages/b8/66/853d50e75a38c9a7370ddbeefabdd3d3116b9c31ef94dc92c6729bc36bec/psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b", size = 240369, upload-time = "2025-11-02T12:26:14.358Z" }, + { url = "https://files.pythonhosted.org/packages/41/bd/313aba97cb5bfb26916dc29cf0646cbe4dd6a89ca69e8c6edce654876d39/psutil-7.1.3-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9", size = 288210, upload-time = "2025-11-02T12:26:16.699Z" }, + { url = "https://files.pythonhosted.org/packages/c2/fa/76e3c06e760927a0cfb5705eb38164254de34e9bd86db656d4dbaa228b04/psutil-7.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f", size = 291182, upload-time = "2025-11-02T12:26:18.848Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1d/5774a91607035ee5078b8fd747686ebec28a962f178712de100d00b78a32/psutil-7.1.3-cp314-cp314t-win_amd64.whl", hash = "sha256:3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7", size = 250466, upload-time = "2025-11-02T12:26:21.183Z" }, + { url = "https://files.pythonhosted.org/packages/00/ca/e426584bacb43a5cb1ac91fae1937f478cd8fbe5e4ff96574e698a2c77cd/psutil-7.1.3-cp314-cp314t-win_arm64.whl", hash = "sha256:31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264", size = 245756, upload-time = "2025-11-02T12:26:23.148Z" }, + { url = "https://files.pythonhosted.org/packages/ef/94/46b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e/psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab", size = 238359, upload-time = "2025-11-02T12:26:25.284Z" }, + { url = "https://files.pythonhosted.org/packages/68/3a/9f93cff5c025029a36d9a92fef47220ab4692ee7f2be0fba9f92813d0cb8/psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880", size = 239171, upload-time = "2025-11-02T12:26:27.23Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b1/5f49af514f76431ba4eea935b8ad3725cdeb397e9245ab919dbc1d1dc20f/psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3", size = 263261, upload-time = "2025-11-02T12:26:29.48Z" }, + { url = "https://files.pythonhosted.org/packages/e0/95/992c8816a74016eb095e73585d747e0a8ea21a061ed3689474fabb29a395/psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b", size = 264635, upload-time = "2025-11-02T12:26:31.74Z" }, + { url = "https://files.pythonhosted.org/packages/55/4c/c3ed1a622b6ae2fd3c945a366e64eb35247a31e4db16cf5095e269e8eb3c/psutil-7.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd", size = 247633, upload-time = "2025-11-02T12:26:33.887Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ad/33b2ccec09bf96c2b2ef3f9a6f66baac8253d7565d8839e024a6b905d45d/psutil-7.1.3-cp37-abi3-win_arm64.whl", hash = "sha256:bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1", size = 244608, upload-time = "2025-11-02T12:26:36.136Z" }, +] + +[[package]] +name = "psycopg2-binary" +version = "2.9.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/6c/8767aaa597ba424643dc87348c6f1754dd9f48e80fdc1b9f7ca5c3a7c213/psycopg2-binary-2.9.11.tar.gz", hash = "sha256:b6aed9e096bf63f9e75edf2581aa9a7e7186d97ab5c177aa6c87797cd591236c", size = 379620, upload-time = "2025-10-10T11:14:48.041Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/91/f870a02f51be4a65987b45a7de4c2e1897dd0d01051e2b559a38fa634e3e/psycopg2_binary-2.9.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:be9b840ac0525a283a96b556616f5b4820e0526addb8dcf6525a0fa162730be4", size = 3756603, upload-time = "2025-10-10T11:11:52.213Z" }, + { url = "https://files.pythonhosted.org/packages/27/fa/cae40e06849b6c9a95eb5c04d419942f00d9eaac8d81626107461e268821/psycopg2_binary-2.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f090b7ddd13ca842ebfe301cd587a76a4cf0913b1e429eb92c1be5dbeb1a19bc", size = 3864509, upload-time = "2025-10-10T11:11:56.452Z" }, + { url = "https://files.pythonhosted.org/packages/2d/75/364847b879eb630b3ac8293798e380e441a957c53657995053c5ec39a316/psycopg2_binary-2.9.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ab8905b5dcb05bf3fb22e0cf90e10f469563486ffb6a96569e51f897c750a76a", size = 4411159, upload-time = "2025-10-10T11:12:00.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a0/567f7ea38b6e1c62aafd58375665a547c00c608a471620c0edc364733e13/psycopg2_binary-2.9.11-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:bf940cd7e7fec19181fdbc29d76911741153d51cab52e5c21165f3262125685e", size = 4468234, upload-time = "2025-10-10T11:12:04.892Z" }, + { url = "https://files.pythonhosted.org/packages/30/da/4e42788fb811bbbfd7b7f045570c062f49e350e1d1f3df056c3fb5763353/psycopg2_binary-2.9.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fa0f693d3c68ae925966f0b14b8edda71696608039f4ed61b1fe9ffa468d16db", size = 4166236, upload-time = "2025-10-10T11:12:11.674Z" }, + { url = "https://files.pythonhosted.org/packages/3c/94/c1777c355bc560992af848d98216148be5f1be001af06e06fc49cbded578/psycopg2_binary-2.9.11-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a1cf393f1cdaf6a9b57c0a719a1068ba1069f022a59b8b1fe44b006745b59757", size = 3983083, upload-time = "2025-10-30T02:55:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/bd/42/c9a21edf0e3daa7825ed04a4a8588686c6c14904344344a039556d78aa58/psycopg2_binary-2.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ef7a6beb4beaa62f88592ccc65df20328029d721db309cb3250b0aae0fa146c3", size = 3652281, upload-time = "2025-10-10T11:12:17.713Z" }, + { url = "https://files.pythonhosted.org/packages/12/22/dedfbcfa97917982301496b6b5e5e6c5531d1f35dd2b488b08d1ebc52482/psycopg2_binary-2.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:31b32c457a6025e74d233957cc9736742ac5a6cb196c6b68499f6bb51390bd6a", size = 3298010, upload-time = "2025-10-10T11:12:22.671Z" }, + { url = "https://files.pythonhosted.org/packages/66/ea/d3390e6696276078bd01b2ece417deac954dfdd552d2edc3d03204416c0c/psycopg2_binary-2.9.11-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:edcb3aeb11cb4bf13a2af3c53a15b3d612edeb6409047ea0b5d6a21a9d744b34", size = 3044641, upload-time = "2025-10-30T02:55:19.929Z" }, + { url = "https://files.pythonhosted.org/packages/12/9a/0402ded6cbd321da0c0ba7d34dc12b29b14f5764c2fc10750daa38e825fc/psycopg2_binary-2.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b6d93d7c0b61a1dd6197d208ab613eb7dcfdcca0a49c42ceb082257991de9d", size = 3347940, upload-time = "2025-10-10T11:12:26.529Z" }, + { url = "https://files.pythonhosted.org/packages/b1/d2/99b55e85832ccde77b211738ff3925a5d73ad183c0b37bcbbe5a8ff04978/psycopg2_binary-2.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:b33fabeb1fde21180479b2d4667e994de7bbf0eec22832ba5d9b5e4cf65b6c6d", size = 2714147, upload-time = "2025-10-10T11:12:29.535Z" }, + { url = "https://files.pythonhosted.org/packages/ff/a8/a2709681b3ac11b0b1786def10006b8995125ba268c9a54bea6f5ae8bd3e/psycopg2_binary-2.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b8fb3db325435d34235b044b199e56cdf9ff41223a4b9752e8576465170bb38c", size = 3756572, upload-time = "2025-10-10T11:12:32.873Z" }, + { url = "https://files.pythonhosted.org/packages/62/e1/c2b38d256d0dafd32713e9f31982a5b028f4a3651f446be70785f484f472/psycopg2_binary-2.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:366df99e710a2acd90efed3764bb1e28df6c675d33a7fb40df9b7281694432ee", size = 3864529, upload-time = "2025-10-10T11:12:36.791Z" }, + { url = "https://files.pythonhosted.org/packages/11/32/b2ffe8f3853c181e88f0a157c5fb4e383102238d73c52ac6d93a5c8bffe6/psycopg2_binary-2.9.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8c55b385daa2f92cb64b12ec4536c66954ac53654c7f15a203578da4e78105c0", size = 4411242, upload-time = "2025-10-10T11:12:42.388Z" }, + { url = "https://files.pythonhosted.org/packages/10/04/6ca7477e6160ae258dc96f67c371157776564679aefd247b66f4661501a2/psycopg2_binary-2.9.11-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c0377174bf1dd416993d16edc15357f6eb17ac998244cca19bc67cdc0e2e5766", size = 4468258, upload-time = "2025-10-10T11:12:48.654Z" }, + { url = "https://files.pythonhosted.org/packages/3c/7e/6a1a38f86412df101435809f225d57c1a021307dd0689f7a5e7fe83588b1/psycopg2_binary-2.9.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5c6ff3335ce08c75afaed19e08699e8aacf95d4a260b495a4a8545244fe2ceb3", size = 4166295, upload-time = "2025-10-10T11:12:52.525Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7d/c07374c501b45f3579a9eb761cbf2604ddef3d96ad48679112c2c5aa9c25/psycopg2_binary-2.9.11-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:84011ba3109e06ac412f95399b704d3d6950e386b7994475b231cf61eec2fc1f", size = 3983133, upload-time = "2025-10-30T02:55:24.329Z" }, + { url = "https://files.pythonhosted.org/packages/82/56/993b7104cb8345ad7d4516538ccf8f0d0ac640b1ebd8c754a7b024e76878/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ba34475ceb08cccbdd98f6b46916917ae6eeb92b5ae111df10b544c3a4621dc4", size = 3652383, upload-time = "2025-10-10T11:12:56.387Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ac/eaeb6029362fd8d454a27374d84c6866c82c33bfc24587b4face5a8e43ef/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b31e90fdd0f968c2de3b26ab014314fe814225b6c324f770952f7d38abf17e3c", size = 3298168, upload-time = "2025-10-10T11:13:00.403Z" }, + { url = "https://files.pythonhosted.org/packages/2b/39/50c3facc66bded9ada5cbc0de867499a703dc6bca6be03070b4e3b65da6c/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:d526864e0f67f74937a8fce859bd56c979f5e2ec57ca7c627f5f1071ef7fee60", size = 3044712, upload-time = "2025-10-30T02:55:27.975Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8e/b7de019a1f562f72ada81081a12823d3c1590bedc48d7d2559410a2763fe/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04195548662fa544626c8ea0f06561eb6203f1984ba5b4562764fbeb4c3d14b1", size = 3347549, upload-time = "2025-10-10T11:13:03.971Z" }, + { url = "https://files.pythonhosted.org/packages/80/2d/1bb683f64737bbb1f86c82b7359db1eb2be4e2c0c13b947f80efefa7d3e5/psycopg2_binary-2.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:efff12b432179443f54e230fdf60de1f6cc726b6c832db8701227d089310e8aa", size = 2714215, upload-time = "2025-10-10T11:13:07.14Z" }, + { url = "https://files.pythonhosted.org/packages/64/12/93ef0098590cf51d9732b4f139533732565704f45bdc1ffa741b7c95fb54/psycopg2_binary-2.9.11-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:92e3b669236327083a2e33ccfa0d320dd01b9803b3e14dd986a4fc54aa00f4e1", size = 3756567, upload-time = "2025-10-10T11:13:11.885Z" }, + { url = "https://files.pythonhosted.org/packages/7c/a9/9d55c614a891288f15ca4b5209b09f0f01e3124056924e17b81b9fa054cc/psycopg2_binary-2.9.11-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e0deeb03da539fa3577fcb0b3f2554a97f7e5477c246098dbb18091a4a01c16f", size = 3864755, upload-time = "2025-10-10T11:13:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/13/1e/98874ce72fd29cbde93209977b196a2edae03f8490d1bd8158e7f1daf3a0/psycopg2_binary-2.9.11-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b52a3f9bb540a3e4ec0f6ba6d31339727b2950c9772850d6545b7eae0b9d7c5", size = 4411646, upload-time = "2025-10-10T11:13:24.432Z" }, + { url = "https://files.pythonhosted.org/packages/5a/bd/a335ce6645334fb8d758cc358810defca14a1d19ffbc8a10bd38a2328565/psycopg2_binary-2.9.11-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:db4fd476874ccfdbb630a54426964959e58da4c61c9feba73e6094d51303d7d8", size = 4468701, upload-time = "2025-10-10T11:13:29.266Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/c8b4f53f34e295e45709b7568bf9b9407a612ea30387d35eb9fa84f269b4/psycopg2_binary-2.9.11-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:47f212c1d3be608a12937cc131bd85502954398aaa1320cb4c14421a0ffccf4c", size = 4166293, upload-time = "2025-10-10T11:13:33.336Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e0/f8cc36eadd1b716ab36bb290618a3292e009867e5c97ce4aba908cb99644/psycopg2_binary-2.9.11-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e35b7abae2b0adab776add56111df1735ccc71406e56203515e228a8dc07089f", size = 3983184, upload-time = "2025-10-30T02:55:32.483Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/2a8fe18a4e61cfb3417da67b6318e12691772c0696d79434184a511906dc/psycopg2_binary-2.9.11-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fcf21be3ce5f5659daefd2b3b3b6e4727b028221ddc94e6c1523425579664747", size = 3652650, upload-time = "2025-10-10T11:13:38.181Z" }, + { url = "https://files.pythonhosted.org/packages/76/36/03801461b31b29fe58d228c24388f999fe814dfc302856e0d17f97d7c54d/psycopg2_binary-2.9.11-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:9bd81e64e8de111237737b29d68039b9c813bdf520156af36d26819c9a979e5f", size = 3298663, upload-time = "2025-10-10T11:13:44.878Z" }, + { url = "https://files.pythonhosted.org/packages/97/77/21b0ea2e1a73aa5fa9222b2a6b8ba325c43c3a8d54272839c991f2345656/psycopg2_binary-2.9.11-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:32770a4d666fbdafab017086655bcddab791d7cb260a16679cc5a7338b64343b", size = 3044737, upload-time = "2025-10-30T02:55:35.69Z" }, + { url = "https://files.pythonhosted.org/packages/67/69/f36abe5f118c1dca6d3726ceae164b9356985805480731ac6712a63f24f0/psycopg2_binary-2.9.11-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c3cb3a676873d7506825221045bd70e0427c905b9c8ee8d6acd70cfcbd6e576d", size = 3347643, upload-time = "2025-10-10T11:13:53.499Z" }, + { url = "https://files.pythonhosted.org/packages/e1/36/9c0c326fe3a4227953dfb29f5d0c8ae3b8eb8c1cd2967aa569f50cb3c61f/psycopg2_binary-2.9.11-cp314-cp314-win_amd64.whl", hash = "sha256:4012c9c954dfaccd28f94e84ab9f94e12df76b4afb22331b1f0d3154893a6316", size = 2803913, upload-time = "2025-10-10T11:13:57.058Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pulp-cli" +version = "0.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "pulp-glue" }, + { name = "pyyaml" }, + { name = "schema" }, + { name = "tomli-w" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/4b/34e980065d3a2ea75618c1d0765d4547a91afff234708bf2ffb416e36da0/pulp-cli-0.33.0.tar.gz", hash = "sha256:3046170504c158e7238a27ac6bff81ea0c04d732b366f80db6f7a806491b5fca", size = 76337, upload-time = "2025-06-02T16:44:13.496Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/27/70e45fcb84fa2af1c8580e0a95df7b9590ca1a6121eeb20cd47a955e4463/pulp_cli-0.33.0-py3-none-any.whl", hash = "sha256:2552b850dac4d304c326f29dc567483bf952262f7ed166ce984fdef9211288d9", size = 110842, upload-time = "2025-06-02T16:44:11.885Z" }, +] + +[[package]] +name = "pulp-glue" +version = "0.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "multidict" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/68/000464fd2edff33974488410cfbaf44000473d9a5eb86b1be230489f4843/pulp-glue-0.33.0.tar.gz", hash = "sha256:4d8f9b8e6c412a63974972aedb7146c49ae20aec44e5641bf71f8ca620ffde45", size = 39265, upload-time = "2025-06-02T16:44:10.543Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/f2/95637d2f954ad0b2025127052efdd593146c23bd36786c3b0bbe4c6da976/pulp_glue-0.33.0-py3-none-any.whl", hash = "sha256:bd81a64059adb5fd3fde17b5cecfd4ee4daa7c10e428cd380f2eb22ffa21574a", size = 47201, upload-time = "2025-06-02T16:44:08.962Z" }, +] + +[[package]] +name = "pyarrow" +version = "22.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/53/04a7fdc63e6056116c9ddc8b43bc28c12cdd181b85cbeadb79278475f3ae/pyarrow-22.0.0.tar.gz", hash = "sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9", size = 1151151, upload-time = "2025-10-24T12:30:00.762Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/63/ba23862d69652f85b615ca14ad14f3bcfc5bf1b99ef3f0cd04ff93fdad5a/pyarrow-22.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d", size = 34211578, upload-time = "2025-10-24T10:05:21.583Z" }, + { url = "https://files.pythonhosted.org/packages/b1/d0/f9ad86fe809efd2bcc8be32032fa72e8b0d112b01ae56a053006376c5930/pyarrow-22.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:12fe549c9b10ac98c91cf791d2945e878875d95508e1a5d14091a7aaa66d9cf8", size = 35989906, upload-time = "2025-10-24T10:05:29.485Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a8/f910afcb14630e64d673f15904ec27dd31f1e009b77033c365c84e8c1e1d/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:334f900ff08ce0423407af97e6c26ad5d4e3b0763645559ece6fbf3747d6a8f5", size = 45021677, upload-time = "2025-10-24T10:05:38.274Z" }, + { url = "https://files.pythonhosted.org/packages/13/95/aec81f781c75cd10554dc17a25849c720d54feafb6f7847690478dcf5ef8/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c6c791b09c57ed76a18b03f2631753a4960eefbbca80f846da8baefc6491fcfe", size = 47726315, upload-time = "2025-10-24T10:05:47.314Z" }, + { url = "https://files.pythonhosted.org/packages/bb/d4/74ac9f7a54cfde12ee42734ea25d5a3c9a45db78f9def949307a92720d37/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c3200cb41cdbc65156e5f8c908d739b0dfed57e890329413da2748d1a2cd1a4e", size = 47990906, upload-time = "2025-10-24T10:05:58.254Z" }, + { url = "https://files.pythonhosted.org/packages/2e/71/fedf2499bf7a95062eafc989ace56572f3343432570e1c54e6599d5b88da/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac93252226cf288753d8b46280f4edf3433bf9508b6977f8dd8526b521a1bbb9", size = 50306783, upload-time = "2025-10-24T10:06:08.08Z" }, + { url = "https://files.pythonhosted.org/packages/68/ed/b202abd5a5b78f519722f3d29063dda03c114711093c1995a33b8e2e0f4b/pyarrow-22.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:44729980b6c50a5f2bfcc2668d36c569ce17f8b17bccaf470c4313dcbbf13c9d", size = 27972883, upload-time = "2025-10-24T10:06:14.204Z" }, + { url = "https://files.pythonhosted.org/packages/a6/d6/d0fac16a2963002fc22c8fa75180a838737203d558f0ed3b564c4a54eef5/pyarrow-22.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e6e95176209257803a8b3d0394f21604e796dadb643d2f7ca21b66c9c0b30c9a", size = 34204629, upload-time = "2025-10-24T10:06:20.274Z" }, + { url = "https://files.pythonhosted.org/packages/c6/9c/1d6357347fbae062ad3f17082f9ebc29cc733321e892c0d2085f42a2212b/pyarrow-22.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:001ea83a58024818826a9e3f89bf9310a114f7e26dfe404a4c32686f97bd7901", size = 35985783, upload-time = "2025-10-24T10:06:27.301Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/782344c2ce58afbea010150df07e3a2f5fdad299cd631697ae7bd3bac6e3/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691", size = 45020999, upload-time = "2025-10-24T10:06:35.387Z" }, + { url = "https://files.pythonhosted.org/packages/1b/8b/5362443737a5307a7b67c1017c42cd104213189b4970bf607e05faf9c525/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e0a15757fccb38c410947df156f9749ae4a3c89b2393741a50521f39a8cf202a", size = 47724601, upload-time = "2025-10-24T10:06:43.551Z" }, + { url = "https://files.pythonhosted.org/packages/69/4d/76e567a4fc2e190ee6072967cb4672b7d9249ac59ae65af2d7e3047afa3b/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cedb9dd9358e4ea1d9bce3665ce0797f6adf97ff142c8e25b46ba9cdd508e9b6", size = 48001050, upload-time = "2025-10-24T10:06:52.284Z" }, + { url = "https://files.pythonhosted.org/packages/01/5e/5653f0535d2a1aef8223cee9d92944cb6bccfee5cf1cd3f462d7cb022790/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:252be4a05f9d9185bb8c18e83764ebcfea7185076c07a7a662253af3a8c07941", size = 50307877, upload-time = "2025-10-24T10:07:02.405Z" }, + { url = "https://files.pythonhosted.org/packages/2d/f8/1d0bd75bf9328a3b826e24a16e5517cd7f9fbf8d34a3184a4566ef5a7f29/pyarrow-22.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:a4893d31e5ef780b6edcaf63122df0f8d321088bb0dee4c8c06eccb1ca28d145", size = 27977099, upload-time = "2025-10-24T10:08:07.259Z" }, + { url = "https://files.pythonhosted.org/packages/90/81/db56870c997805bf2b0f6eeeb2d68458bf4654652dccdcf1bf7a42d80903/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:f7fe3dbe871294ba70d789be16b6e7e52b418311e166e0e3cba9522f0f437fb1", size = 34336685, upload-time = "2025-10-24T10:07:11.47Z" }, + { url = "https://files.pythonhosted.org/packages/1c/98/0727947f199aba8a120f47dfc229eeb05df15bcd7a6f1b669e9f882afc58/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:ba95112d15fd4f1105fb2402c4eab9068f0554435e9b7085924bcfaac2cc306f", size = 36032158, upload-time = "2025-10-24T10:07:18.626Z" }, + { url = "https://files.pythonhosted.org/packages/96/b4/9babdef9c01720a0785945c7cf550e4acd0ebcd7bdd2e6f0aa7981fa85e2/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:c064e28361c05d72eed8e744c9605cbd6d2bb7481a511c74071fd9b24bc65d7d", size = 44892060, upload-time = "2025-10-24T10:07:26.002Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ca/2f8804edd6279f78a37062d813de3f16f29183874447ef6d1aadbb4efa0f/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:6f9762274496c244d951c819348afbcf212714902742225f649cf02823a6a10f", size = 47504395, upload-time = "2025-10-24T10:07:34.09Z" }, + { url = "https://files.pythonhosted.org/packages/b9/f0/77aa5198fd3943682b2e4faaf179a674f0edea0d55d326d83cb2277d9363/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a9d9ffdc2ab696f6b15b4d1f7cec6658e1d788124418cb30030afbae31c64746", size = 48066216, upload-time = "2025-10-24T10:07:43.528Z" }, + { url = "https://files.pythonhosted.org/packages/79/87/a1937b6e78b2aff18b706d738c9e46ade5bfcf11b294e39c87706a0089ac/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ec1a15968a9d80da01e1d30349b2b0d7cc91e96588ee324ce1b5228175043e95", size = 50288552, upload-time = "2025-10-24T10:07:53.519Z" }, + { url = "https://files.pythonhosted.org/packages/60/ae/b5a5811e11f25788ccfdaa8f26b6791c9807119dffcf80514505527c384c/pyarrow-22.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:bba208d9c7decf9961998edf5c65e3ea4355d5818dd6cd0f6809bec1afb951cc", size = 28262504, upload-time = "2025-10-24T10:08:00.932Z" }, + { url = "https://files.pythonhosted.org/packages/bd/b0/0fa4d28a8edb42b0a7144edd20befd04173ac79819547216f8a9f36f9e50/pyarrow-22.0.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:9bddc2cade6561f6820d4cd73f99a0243532ad506bc510a75a5a65a522b2d74d", size = 34224062, upload-time = "2025-10-24T10:08:14.101Z" }, + { url = "https://files.pythonhosted.org/packages/0f/a8/7a719076b3c1be0acef56a07220c586f25cd24de0e3f3102b438d18ae5df/pyarrow-22.0.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:e70ff90c64419709d38c8932ea9fe1cc98415c4f87ea8da81719e43f02534bc9", size = 35990057, upload-time = "2025-10-24T10:08:21.842Z" }, + { url = "https://files.pythonhosted.org/packages/89/3c/359ed54c93b47fb6fe30ed16cdf50e3f0e8b9ccfb11b86218c3619ae50a8/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:92843c305330aa94a36e706c16209cd4df274693e777ca47112617db7d0ef3d7", size = 45068002, upload-time = "2025-10-24T10:08:29.034Z" }, + { url = "https://files.pythonhosted.org/packages/55/fc/4945896cc8638536ee787a3bd6ce7cec8ec9acf452d78ec39ab328efa0a1/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:6dda1ddac033d27421c20d7a7943eec60be44e0db4e079f33cc5af3b8280ccde", size = 47737765, upload-time = "2025-10-24T10:08:38.559Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5e/7cb7edeb2abfaa1f79b5d5eb89432356155c8426f75d3753cbcb9592c0fd/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:84378110dd9a6c06323b41b56e129c504d157d1a983ce8f5443761eb5256bafc", size = 48048139, upload-time = "2025-10-24T10:08:46.784Z" }, + { url = "https://files.pythonhosted.org/packages/88/c6/546baa7c48185f5e9d6e59277c4b19f30f48c94d9dd938c2a80d4d6b067c/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:854794239111d2b88b40b6ef92aa478024d1e5074f364033e73e21e3f76b25e0", size = 50314244, upload-time = "2025-10-24T10:08:55.771Z" }, + { url = "https://files.pythonhosted.org/packages/3c/79/755ff2d145aafec8d347bf18f95e4e81c00127f06d080135dfc86aea417c/pyarrow-22.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:b883fe6fd85adad7932b3271c38ac289c65b7337c2c132e9569f9d3940620730", size = 28757501, upload-time = "2025-10-24T10:09:59.891Z" }, + { url = "https://files.pythonhosted.org/packages/0e/d2/237d75ac28ced3147912954e3c1a174df43a95f4f88e467809118a8165e0/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7a820d8ae11facf32585507c11f04e3f38343c1e784c9b5a8b1da5c930547fe2", size = 34355506, upload-time = "2025-10-24T10:09:02.953Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/733dfffe6d3069740f98e57ff81007809067d68626c5faef293434d11bd6/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_x86_64.whl", hash = "sha256:c6ec3675d98915bf1ec8b3c7986422682f7232ea76cad276f4c8abd5b7319b70", size = 36047312, upload-time = "2025-10-24T10:09:10.334Z" }, + { url = "https://files.pythonhosted.org/packages/7c/2b/29d6e3782dc1f299727462c1543af357a0f2c1d3c160ce199950d9ca51eb/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:3e739edd001b04f654b166204fc7a9de896cf6007eaff33409ee9e50ceaff754", size = 45081609, upload-time = "2025-10-24T10:09:18.61Z" }, + { url = "https://files.pythonhosted.org/packages/8d/42/aa9355ecc05997915af1b7b947a7f66c02dcaa927f3203b87871c114ba10/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:7388ac685cab5b279a41dfe0a6ccd99e4dbf322edfb63e02fc0443bf24134e91", size = 47703663, upload-time = "2025-10-24T10:09:27.369Z" }, + { url = "https://files.pythonhosted.org/packages/ee/62/45abedde480168e83a1de005b7b7043fd553321c1e8c5a9a114425f64842/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f633074f36dbc33d5c05b5dc75371e5660f1dbf9c8b1d95669def05e5425989c", size = 48066543, upload-time = "2025-10-24T10:09:34.908Z" }, + { url = "https://files.pythonhosted.org/packages/84/e9/7878940a5b072e4f3bf998770acafeae13b267f9893af5f6d4ab3904b67e/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4c19236ae2402a8663a2c8f21f1870a03cc57f0bef7e4b6eb3238cc82944de80", size = 50288838, upload-time = "2025-10-24T10:09:44.394Z" }, + { url = "https://files.pythonhosted.org/packages/7b/03/f335d6c52b4a4761bcc83499789a1e2e16d9d201a58c327a9b5cc9a41bd9/pyarrow-22.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0c34fe18094686194f204a3b1787a27456897d8a2d62caf84b61e8dfbc0252ae", size = 29185594, upload-time = "2025-10-24T10:09:53.111Z" }, +] + +[[package]] +name = "pyasn1" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/5f/6583902b6f79b399c9c40674ac384fd9cd77805f9e6205075f828ef11fb2/pyasn1-0.6.3.tar.gz", hash = "sha256:697a8ecd6d98891189184ca1fa05d1bb00e2f84b5977c481452050549c8a72cf", size = 148685, upload-time = "2026-03-17T01:06:53.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/a0/7d793dce3fa811fe047d6ae2431c672364b462850c6235ae306c0efd025f/pyasn1-0.6.3-py3-none-any.whl", hash = "sha256:a80184d120f0864a52a073acc6fc642847d0be408e7c7252f31390c0f4eadcde", size = 83997, upload-time = "2026-03-17T01:06:52.036Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pycurl" +version = "7.45.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/3d/01255f1cde24401f54bb3727d0e5d3396b67fc04964f287d5d473155f176/pycurl-7.45.7.tar.gz", hash = "sha256:9d43013002eab2fd6d0dcc671cd1e9149e2fc1c56d5e796fad94d076d6cb69ef", size = 241098, upload-time = "2025-09-24T13:37:17.067Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/d3/77cf5cef99e83cf9e088e4a4539b933cdccf2bfabbb32f55d0273f9efd11/pycurl-7.45.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd69340f5a49d6e4f67723db6ea4459c554d2210c3dd4da99950d6d405ddafb4", size = 3795471, upload-time = "2025-09-24T13:36:17.608Z" }, + { url = "https://files.pythonhosted.org/packages/18/f9/42137fcace6403a1670dc203a16fce443f53da7b14cdc28f05053008e56b/pycurl-7.45.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:752a5bbbd1b148b61d69be718e2c1c89a1b16de27a21e6382d28c8d2a33e9bf1", size = 3903182, upload-time = "2025-09-24T13:36:19.353Z" }, + { url = "https://files.pythonhosted.org/packages/9f/db/46134f8e822527a39fd4ed0e5150992274f1368a4fe8402818cc45470ffe/pycurl-7.45.7-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:5fa5afd86d86e156051c7d7d6de34f6c03a7a64e4794ac0d72379bee8fcafafd", size = 5188809, upload-time = "2025-09-24T13:36:21.444Z" }, + { url = "https://files.pythonhosted.org/packages/e1/f8/9a6148258b056202d5872fcd5e4d512ad9ee487c0f7b5dddd631004432b4/pycurl-7.45.7-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f463a7f7c12b322b4f72af908f863b4da1f71dae344dd75f50d30c33ff0f197a", size = 4893965, upload-time = "2025-09-24T13:36:23.108Z" }, + { url = "https://files.pythonhosted.org/packages/41/16/bbf5da7e0108dafddb70347f299f6de54f1364079a66653759c9e9fb099d/pycurl-7.45.7-cp312-cp312-win32.whl", hash = "sha256:83c217e0c7aea28bbd9512e27fb6f9ef9b9f398dff57ebe223ecaa043bcd08fa", size = 2736232, upload-time = "2025-09-24T13:36:25.072Z" }, + { url = "https://files.pythonhosted.org/packages/a8/16/ab7d73ed3d2a31a9d9bb8a44710b8f95f6ea24bd260967f07ae67c36e8c4/pycurl-7.45.7-cp312-cp312-win_amd64.whl", hash = "sha256:150b1d2e98bcf760878b3891e6f2f937a4b2a90c559ffc6add65aeb5844bc66a", size = 3296191, upload-time = "2025-09-24T13:36:27.242Z" }, + { url = "https://files.pythonhosted.org/packages/1a/0c/b6442a204c13d68e339d18c7f16a30b0178ad1efed644fe411f8a404934c/pycurl-7.45.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8d39cc233c7c3303072758b088ad7ccde0a5dcb30ce752f2f8a31428a07faac1", size = 3795397, upload-time = "2025-09-24T13:36:29.362Z" }, + { url = "https://files.pythonhosted.org/packages/e5/23/dae7f5bf59f31908fd10797e03e9af6ad70ee0fe8a71783bcced68ca7db4/pycurl-7.45.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:824a785d01500da47fe6935dbadc4b0a14577405c25d01327a94717578dd2b1d", size = 3903225, upload-time = "2025-09-24T13:36:31.393Z" }, + { url = "https://files.pythonhosted.org/packages/33/93/016d37e76b172d508706828319389a08be4cb669daab8cdac6947b699f80/pycurl-7.45.7-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:998335e6b69691c097e3a74214901c71773e0a7a8d3d0cc87c60d6969eb8b584", size = 5189262, upload-time = "2025-09-24T13:36:33.752Z" }, + { url = "https://files.pythonhosted.org/packages/24/e3/039ed3b136fb008354047881a3f36e5647d67d97d7b7620123fa8b9c515f/pycurl-7.45.7-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:00824c3c64d5e935d0325e6a000bb0242622cd763d1e202c1a8df455bc58da58", size = 4895224, upload-time = "2025-09-24T13:36:35.449Z" }, + { url = "https://files.pythonhosted.org/packages/9a/52/f2326e0ddb2c6ab74a46c90aff0aac565cc4f804f03ac6a454cf7c75cb37/pycurl-7.45.7-cp313-cp313-win32.whl", hash = "sha256:bfe49668ba0a7fba183cf0e189bb8da515793da8f383d8d157ac8647143dc516", size = 2736217, upload-time = "2025-09-24T13:36:37.152Z" }, + { url = "https://files.pythonhosted.org/packages/96/d5/d7214c92b97fe8541efcdf42a35e5b0852e6c57340f9266e4f4acccfa492/pycurl-7.45.7-cp313-cp313-win_amd64.whl", hash = "sha256:3d9d718c366983bc65b149f0947f016929b4001f604f2523e6de5a49907f4474", size = 3296259, upload-time = "2025-09-24T13:36:38.886Z" }, + { url = "https://files.pythonhosted.org/packages/85/bb/18c4e53ef9a8d52451336aae1e44768dfb639ba46dd02f331c5dc9220bc3/pycurl-7.45.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6157ac0daf30ffc28446c54ebbd073c8c11b45cba9c45256619e218a07a31312", size = 3794861, upload-time = "2025-09-24T13:36:40.509Z" }, + { url = "https://files.pythonhosted.org/packages/ce/23/ea963df437b8b0fd4e2ff5909dbfd800364231a95588de2b6446ffbdd1c8/pycurl-7.45.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:09ac9a855273a77f7c6a72f05be430646c47a298d403a75876c2188ea5d77534", size = 3903002, upload-time = "2025-09-24T13:36:42.765Z" }, + { url = "https://files.pythonhosted.org/packages/4c/33/6432144d3961ff862c1ac933f4851828f8947d615aa46b50b91162224af9/pycurl-7.45.7-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:0263e94d2ea3cd25b5fcf96527f521dc29b8a73a9b19e71223b6e2452f5cb35a", size = 5186571, upload-time = "2025-09-24T13:36:44.584Z" }, + { url = "https://files.pythonhosted.org/packages/44/91/635beb1e8c5a8b2a031fb09bd64e5c2abd332cebb9211739539ab385e731/pycurl-7.45.7-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:54cffa56a5ead14915f1f0d3e8fabf6fcea3056a8e5f971fc1caebb9715bd9b1", size = 4891741, upload-time = "2025-09-24T13:36:46.7Z" }, + { url = "https://files.pythonhosted.org/packages/77/bd/51ffbf6c4a3c5bcdad2f3175c5b5980fff4dd668e2556593530030430fcf/pycurl-7.45.7-cp314-cp314-win32.whl", hash = "sha256:09e426cf5e61e5b37c30903734204f75023baa6e4bfe574e037f12e53ec3f0ba", size = 2817391, upload-time = "2025-09-24T13:36:48.766Z" }, + { url = "https://files.pythonhosted.org/packages/f1/68/c7c7f4b2372568eff3a12046364fdd74e382778563ee26727a1b016702bc/pycurl-7.45.7-cp314-cp314-win_amd64.whl", hash = "sha256:8eab3a83670d83966c7a0df4fa02cf2272499966066bfaa810444c427cb653b0", size = 3403530, upload-time = "2025-09-24T13:36:50.825Z" }, + { url = "https://files.pythonhosted.org/packages/e1/66/b65ae067433f37fd4c2b89aec9b0ab31b35cd3846e77854e7ec47bfb9d13/pycurl-7.45.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:69f16d6709f3305da1043ee9edb5e1715212b75011779d58c4bd8fc9ad9fc88a", size = 3798020, upload-time = "2025-09-24T13:36:53.259Z" }, + { url = "https://files.pythonhosted.org/packages/5d/31/af6edb607b7d359b54df63ee561650fe7f94347f86e7c600e0042af595cc/pycurl-7.45.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:435f140afa59eb0cece57e6364348977af768add452d49a8547a26fc90dc2bfa", size = 3905273, upload-time = "2025-09-24T13:36:55.386Z" }, + { url = "https://files.pythonhosted.org/packages/79/35/4825905afb55037db15d2d2c9a45253ca8951559ef5f62afd277c98d1ec2/pycurl-7.45.7-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:ff50a3d787c3d059f330d7cb7325b40416bcb0f43f5006b396a6e61871df0ebf", size = 5247322, upload-time = "2025-09-24T13:36:57.568Z" }, + { url = "https://files.pythonhosted.org/packages/28/fc/716a3e9d335aa12f09471842e49e3db9eb792a06ddc6203a6fb1b90b7f7a/pycurl-7.45.7-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5ed0cab4e05558ba112111585ae2a85627ab48d6185547fc4ba8ec8e2cfecd0d", size = 4947252, upload-time = "2025-09-24T13:36:59.26Z" }, + { url = "https://files.pythonhosted.org/packages/43/05/b8274ad3740b76f029031921b1831f9a7f9fdc419333c85488b25dcde87a/pycurl-7.45.7-cp314-cp314t-win32.whl", hash = "sha256:e79f90c0af413933dedc79a1717f49076f08b32ff4a42776d6c38ba37125717e", size = 2824929, upload-time = "2025-09-24T13:37:01.665Z" }, + { url = "https://files.pythonhosted.org/packages/70/c1/3982528967a42eff566d7e94fce0c8a0cf293c398a38465f87709440f260/pycurl-7.45.7-cp314-cp314t-win_amd64.whl", hash = "sha256:bdb72c53445b1c09315940c81a14a3635dfde6710aea703976ce9617209830e7", size = 3412632, upload-time = "2025-09-24T13:37:03.852Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pymysql" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/ae/1fe3fcd9f959efa0ebe200b8de88b5a5ce3e767e38c7ac32fb179f16a388/pymysql-1.1.2.tar.gz", hash = "sha256:4961d3e165614ae65014e361811a724e2044ad3ea3739de9903ae7c21f539f03", size = 48258, upload-time = "2025-08-24T12:55:55.146Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/4c/ad33b92b9864cbde84f259d5df035a6447f91891f5be77788e2a3892bce3/pymysql-1.1.2-py3-none-any.whl", hash = "sha256:e6b1d89711dd51f8f74b1631fe08f039e7d76cf67a42a323d3178f0f25762ed9", size = 45300, upload-time = "2025-08-24T12:55:53.394Z" }, +] + +[[package]] +name = "pysnmp" +version = "7.1.22" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/f7/63a4833b675f3f85296d85f2fddaed93d76799f29a813a2d5ca2bbe7fc50/pysnmp-7.1.22.tar.gz", hash = "sha256:37ac595c7f0c1c00514505939b4dcf5b4fd5a9ffe51b0349f60bb640c11b0f77", size = 259230, upload-time = "2025-10-26T22:09:56.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/da/9b6bc9517f6a69d03b70f43c4cfd1cca6289fdccabcf648204f2b0c6bc9b/pysnmp-7.1.22-py3-none-any.whl", hash = "sha256:57e704a6ba2bbf571d16cd5dc08b89bb3fa0ebeb5f4f26b87fececad3b3de7a6", size = 343380, upload-time = "2025-10-26T22:09:54.816Z" }, +] + +[[package]] +name = "pysnmp-mibs" +version = "0.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pysnmp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/7c/99ab192af934ed5d41ceef92a1b949b41652f29b46241b902ffec55642f4/pysnmp-mibs-0.1.6.tar.gz", hash = "sha256:00fa321ca598e8a14c0ad98702bf10fb5e9d57b7d06bb99dc818fea07683720c", size = 2113334, upload-time = "2016-02-13T23:55:21.888Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/33/4ce8b8cc60c871348ccd3d784415cb6b357d91ca158b63ef5c3e6f96bfe0/pysnmp_mibs-0.1.6-py2.py3-none-any.whl", hash = "sha256:5e153ebe8e767c07940cea435f866c623ff6b2376155c7da75085b08d3774d48", size = 2316964, upload-time = "2016-02-13T23:54:59.491Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pytokens" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/34/b4e015b99031667a7b960f888889c5bd34ef585c85e1cb56a594b92836ac/pytokens-0.4.1.tar.gz", hash = "sha256:292052fe80923aae2260c073f822ceba21f3872ced9a68bb7953b348e561179a", size = 23015, upload-time = "2026-01-30T01:03:45.924Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/5d/e44573011401fb82e9d51e97f1290ceb377800fb4eed650b96f4753b499c/pytokens-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:140709331e846b728475786df8aeb27d24f48cbcf7bcd449f8de75cae7a45083", size = 160663, upload-time = "2026-01-30T01:03:06.473Z" }, + { url = "https://files.pythonhosted.org/packages/f0/e6/5bbc3019f8e6f21d09c41f8b8654536117e5e211a85d89212d59cbdab381/pytokens-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d6c4268598f762bc8e91f5dbf2ab2f61f7b95bdc07953b602db879b3c8c18e1", size = 255626, upload-time = "2026-01-30T01:03:08.177Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3c/2d5297d82286f6f3d92770289fd439956b201c0a4fc7e72efb9b2293758e/pytokens-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24afde1f53d95348b5a0eb19488661147285ca4dd7ed752bbc3e1c6242a304d1", size = 269779, upload-time = "2026-01-30T01:03:09.756Z" }, + { url = "https://files.pythonhosted.org/packages/20/01/7436e9ad693cebda0551203e0bf28f7669976c60ad07d6402098208476de/pytokens-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5ad948d085ed6c16413eb5fec6b3e02fa00dc29a2534f088d3302c47eb59adf9", size = 268076, upload-time = "2026-01-30T01:03:10.957Z" }, + { url = "https://files.pythonhosted.org/packages/2e/df/533c82a3c752ba13ae7ef238b7f8cdd272cf1475f03c63ac6cf3fcfb00b6/pytokens-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:3f901fe783e06e48e8cbdc82d631fca8f118333798193e026a50ce1b3757ea68", size = 103552, upload-time = "2026-01-30T01:03:12.066Z" }, + { url = "https://files.pythonhosted.org/packages/cb/dc/08b1a080372afda3cceb4f3c0a7ba2bde9d6a5241f1edb02a22a019ee147/pytokens-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8bdb9d0ce90cbf99c525e75a2fa415144fd570a1ba987380190e8b786bc6ef9b", size = 160720, upload-time = "2026-01-30T01:03:13.843Z" }, + { url = "https://files.pythonhosted.org/packages/64/0c/41ea22205da480837a700e395507e6a24425151dfb7ead73343d6e2d7ffe/pytokens-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5502408cab1cb18e128570f8d598981c68a50d0cbd7c61312a90507cd3a1276f", size = 254204, upload-time = "2026-01-30T01:03:14.886Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d2/afe5c7f8607018beb99971489dbb846508f1b8f351fcefc225fcf4b2adc0/pytokens-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29d1d8fb1030af4d231789959f21821ab6325e463f0503a61d204343c9b355d1", size = 268423, upload-time = "2026-01-30T01:03:15.936Z" }, + { url = "https://files.pythonhosted.org/packages/68/d4/00ffdbd370410c04e9591da9220a68dc1693ef7499173eb3e30d06e05ed1/pytokens-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:970b08dd6b86058b6dc07efe9e98414f5102974716232d10f32ff39701e841c4", size = 266859, upload-time = "2026-01-30T01:03:17.458Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c9/c3161313b4ca0c601eeefabd3d3b576edaa9afdefd32da97210700e47652/pytokens-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:9bd7d7f544d362576be74f9d5901a22f317efc20046efe2034dced238cbbfe78", size = 103520, upload-time = "2026-01-30T01:03:18.652Z" }, + { url = "https://files.pythonhosted.org/packages/8f/a7/b470f672e6fc5fee0a01d9e75005a0e617e162381974213a945fcd274843/pytokens-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4a14d5f5fc78ce85e426aa159489e2d5961acf0e47575e08f35584009178e321", size = 160821, upload-time = "2026-01-30T01:03:19.684Z" }, + { url = "https://files.pythonhosted.org/packages/80/98/e83a36fe8d170c911f864bfded690d2542bfcfacb9c649d11a9e6eb9dc41/pytokens-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f50fd18543be72da51dd505e2ed20d2228c74e0464e4262e4899797803d7fa", size = 254263, upload-time = "2026-01-30T01:03:20.834Z" }, + { url = "https://files.pythonhosted.org/packages/0f/95/70d7041273890f9f97a24234c00b746e8da86df462620194cef1d411ddeb/pytokens-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc74c035f9bfca0255c1af77ddd2d6ae8419012805453e4b0e7513e17904545d", size = 268071, upload-time = "2026-01-30T01:03:21.888Z" }, + { url = "https://files.pythonhosted.org/packages/da/79/76e6d09ae19c99404656d7db9c35dfd20f2086f3eb6ecb496b5b31163bad/pytokens-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f66a6bbe741bd431f6d741e617e0f39ec7257ca1f89089593479347cc4d13324", size = 271716, upload-time = "2026-01-30T01:03:23.633Z" }, + { url = "https://files.pythonhosted.org/packages/79/37/482e55fa1602e0a7ff012661d8c946bafdc05e480ea5a32f4f7e336d4aa9/pytokens-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:b35d7e5ad269804f6697727702da3c517bb8a5228afa450ab0fa787732055fc9", size = 104539, upload-time = "2026-01-30T01:03:24.788Z" }, + { url = "https://files.pythonhosted.org/packages/30/e8/20e7db907c23f3d63b0be3b8a4fd1927f6da2395f5bcc7f72242bb963dfe/pytokens-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8fcb9ba3709ff77e77f1c7022ff11d13553f3c30299a9fe246a166903e9091eb", size = 168474, upload-time = "2026-01-30T01:03:26.428Z" }, + { url = "https://files.pythonhosted.org/packages/d6/81/88a95ee9fafdd8f5f3452107748fd04c24930d500b9aba9738f3ade642cc/pytokens-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79fc6b8699564e1f9b521582c35435f1bd32dd06822322ec44afdeba666d8cb3", size = 290473, upload-time = "2026-01-30T01:03:27.415Z" }, + { url = "https://files.pythonhosted.org/packages/cf/35/3aa899645e29b6375b4aed9f8d21df219e7c958c4c186b465e42ee0a06bf/pytokens-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d31b97b3de0f61571a124a00ffe9a81fb9939146c122c11060725bd5aea79975", size = 303485, upload-time = "2026-01-30T01:03:28.558Z" }, + { url = "https://files.pythonhosted.org/packages/52/a0/07907b6ff512674d9b201859f7d212298c44933633c946703a20c25e9d81/pytokens-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:967cf6e3fd4adf7de8fc73cd3043754ae79c36475c1c11d514fc72cf5490094a", size = 306698, upload-time = "2026-01-30T01:03:29.653Z" }, + { url = "https://files.pythonhosted.org/packages/39/2a/cbbf9250020a4a8dd53ba83a46c097b69e5eb49dd14e708f496f548c6612/pytokens-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:584c80c24b078eec1e227079d56dc22ff755e0ba8654d8383b2c549107528918", size = 116287, upload-time = "2026-01-30T01:03:30.912Z" }, + { url = "https://files.pythonhosted.org/packages/c6/78/397db326746f0a342855b81216ae1f0a32965deccfd7c830a2dbc66d2483/pytokens-0.4.1-py3-none-any.whl", hash = "sha256:26cef14744a8385f35d0e095dc8b3a7583f6c953c2e3d269c7f82484bf5ad2de", size = 13729, upload-time = "2026-01-30T01:03:45.029Z" }, +] + +[[package]] +name = "pytz" +version = "2026.1.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/56/db/b8721d71d945e6a8ac63c0fc900b2067181dbb50805958d4d4661cf7d277/pytz-2026.1.post1.tar.gz", hash = "sha256:3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1", size = 321088, upload-time = "2026-03-03T07:47:50.683Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl", hash = "sha256:f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a", size = 510489, upload-time = "2026-03-03T07:47:49.167Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "requests-oauthlib" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/f2/05f29bc3913aea15eb670be136045bf5c5bbf4b99ecb839da9b422bb2c85/requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9", size = 55650, upload-time = "2024-03-22T20:32:29.939Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36", size = 24179, upload-time = "2024-03-22T20:32:28.055Z" }, +] + +[[package]] +name = "resolvelib" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/10/f699366ce577423cbc3df3280063099054c23df70856465080798c6ebad6/resolvelib-1.0.1.tar.gz", hash = "sha256:04ce76cbd63fded2078ce224785da6ecd42b9564b1390793f64ddecbe997b309", size = 21065, upload-time = "2023-03-09T05:10:38.292Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/fc/e9ccf0521607bcd244aa0b3fbd574f71b65e9ce6a112c83af988bbbe2e23/resolvelib-1.0.1-py2.py3-none-any.whl", hash = "sha256:d2da45d1a8dfee81bdd591647783e340ef3bcb104b54c383f70d422ef5cc7dbf", size = 17194, upload-time = "2023-03-09T05:10:36.214Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" }, + { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" }, + { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" }, + { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" }, + { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" }, + { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" }, + { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" }, + { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" }, + { url = "https://files.pythonhosted.org/packages/86/81/dad16382ebbd3d0e0328776d8fd7ca94220e4fa0798d1dc5e7da48cb3201/rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", size = 362099, upload-time = "2025-11-30T20:23:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/2b/60/19f7884db5d5603edf3c6bce35408f45ad3e97e10007df0e17dd57af18f8/rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", size = 353192, upload-time = "2025-11-30T20:23:29.151Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c4/76eb0e1e72d1a9c4703c69607cec123c29028bff28ce41588792417098ac/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", size = 384080, upload-time = "2025-11-30T20:23:30.785Z" }, + { url = "https://files.pythonhosted.org/packages/72/87/87ea665e92f3298d1b26d78814721dc39ed8d2c74b86e83348d6b48a6f31/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", size = 394841, upload-time = "2025-11-30T20:23:32.209Z" }, + { url = "https://files.pythonhosted.org/packages/77/ad/7783a89ca0587c15dcbf139b4a8364a872a25f861bdb88ed99f9b0dec985/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", size = 516670, upload-time = "2025-11-30T20:23:33.742Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3c/2882bdac942bd2172f3da574eab16f309ae10a3925644e969536553cb4ee/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", size = 408005, upload-time = "2025-11-30T20:23:35.253Z" }, + { url = "https://files.pythonhosted.org/packages/ce/81/9a91c0111ce1758c92516a3e44776920b579d9a7c09b2b06b642d4de3f0f/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", size = 382112, upload-time = "2025-11-30T20:23:36.842Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8e/1da49d4a107027e5fbc64daeab96a0706361a2918da10cb41769244b805d/rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", size = 399049, upload-time = "2025-11-30T20:23:38.343Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/7ee239b1aa48a127570ec03becbb29c9d5a9eb092febbd1699d567cae859/rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", size = 415661, upload-time = "2025-11-30T20:23:40.263Z" }, + { url = "https://files.pythonhosted.org/packages/70/ea/caa143cf6b772f823bc7929a45da1fa83569ee49b11d18d0ada7f5ee6fd6/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", size = 565606, upload-time = "2025-11-30T20:23:42.186Z" }, + { url = "https://files.pythonhosted.org/packages/64/91/ac20ba2d69303f961ad8cf55bf7dbdb4763f627291ba3d0d7d67333cced9/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", size = 591126, upload-time = "2025-11-30T20:23:44.086Z" }, + { url = "https://files.pythonhosted.org/packages/21/20/7ff5f3c8b00c8a95f75985128c26ba44503fb35b8e0259d812766ea966c7/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", size = 553371, upload-time = "2025-11-30T20:23:46.004Z" }, + { url = "https://files.pythonhosted.org/packages/72/c7/81dadd7b27c8ee391c132a6b192111ca58d866577ce2d9b0ca157552cce0/rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", size = 215298, upload-time = "2025-11-30T20:23:47.696Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/1aaac33287e8cfb07aab2e6b8ac1deca62f6f65411344f1433c55e6f3eb8/rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", size = 228604, upload-time = "2025-11-30T20:23:49.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/ab005315818cc519ad074cb7784dae60d939163108bd2b394e60dc7b5461/rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", size = 222391, upload-time = "2025-11-30T20:23:50.96Z" }, + { url = "https://files.pythonhosted.org/packages/9e/68/154fe0194d83b973cdedcdcc88947a2752411165930182ae41d983dcefa6/rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", size = 364868, upload-time = "2025-11-30T20:23:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/83/69/8bbc8b07ec854d92a8b75668c24d2abcb1719ebf890f5604c61c9369a16f/rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", size = 353747, upload-time = "2025-11-30T20:23:54.036Z" }, + { url = "https://files.pythonhosted.org/packages/ab/00/ba2e50183dbd9abcce9497fa5149c62b4ff3e22d338a30d690f9af970561/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", size = 383795, upload-time = "2025-11-30T20:23:55.556Z" }, + { url = "https://files.pythonhosted.org/packages/05/6f/86f0272b84926bcb0e4c972262f54223e8ecc556b3224d281e6598fc9268/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", size = 393330, upload-time = "2025-11-30T20:23:57.033Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e9/0e02bb2e6dc63d212641da45df2b0bf29699d01715913e0d0f017ee29438/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", size = 518194, upload-time = "2025-11-30T20:23:58.637Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ca/be7bca14cf21513bdf9c0606aba17d1f389ea2b6987035eb4f62bd923f25/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", size = 408340, upload-time = "2025-11-30T20:24:00.2Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c7/736e00ebf39ed81d75544c0da6ef7b0998f8201b369acf842f9a90dc8fce/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", size = 383765, upload-time = "2025-11-30T20:24:01.759Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3f/da50dfde9956aaf365c4adc9533b100008ed31aea635f2b8d7b627e25b49/rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", size = 396834, upload-time = "2025-11-30T20:24:03.687Z" }, + { url = "https://files.pythonhosted.org/packages/4e/00/34bcc2565b6020eab2623349efbdec810676ad571995911f1abdae62a3a0/rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5", size = 415470, upload-time = "2025-11-30T20:24:05.232Z" }, + { url = "https://files.pythonhosted.org/packages/8c/28/882e72b5b3e6f718d5453bd4d0d9cf8df36fddeb4ddbbab17869d5868616/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", size = 565630, upload-time = "2025-11-30T20:24:06.878Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/04a65539c17692de5b85c6e293520fd01317fd878ea1995f0367d4532fb1/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", size = 591148, upload-time = "2025-11-30T20:24:08.445Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/92482ccffb96f5441aab93e26c4d66489eb599efdcf96fad90c14bbfb976/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", size = 556030, upload-time = "2025-11-30T20:24:10.956Z" }, + { url = "https://files.pythonhosted.org/packages/20/53/7c7e784abfa500a2b6b583b147ee4bb5a2b3747a9166bab52fec4b5b5e7d/rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", size = 211570, upload-time = "2025-11-30T20:24:12.735Z" }, + { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" }, +] + +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/3b/ebda527b56beb90cb7652cb1c7e4f91f48649fbcd8d2eb2fb6e77cd3329b/ruamel_yaml-0.19.1.tar.gz", hash = "sha256:53eb66cd27849eff968ebf8f0bf61f46cdac2da1d1f3576dd4ccee9b25c31993", size = 142709, upload-time = "2026-01-02T16:50:31.84Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl", hash = "sha256:27592957fedf6e0b62f281e96effd28043345e0e66001f97683aa9a40c667c93", size = 118102, upload-time = "2026-01-02T16:50:29.201Z" }, +] + +[[package]] +name = "schema" +version = "0.7.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/2e/8da627b65577a8f130fe9dfa88ce94fcb24b1f8b59e0fc763ee61abef8b8/schema-0.7.8.tar.gz", hash = "sha256:e86cc08edd6fe6e2522648f4e47e3a31920a76e82cce8937535422e310862ab5", size = 45540, upload-time = "2025-10-11T13:15:40.281Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/75/aad85817266ac5285c93391711d231ca63e9ae7d42cd3ca37549e24ebe52/schema-0.7.8-py2.py3-none-any.whl", hash = "sha256:00bd977fadc7d9521bf289850cd8a8aa5f4948f575476b8daaa5c1b57af2dce1", size = 19108, upload-time = "2025-10-11T17:13:07.323Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "smmap" +version = "5.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload-time = "2025-01-02T07:14:40.909Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload-time = "2025-01-02T07:14:38.724Z" }, +] + +[[package]] +name = "subprocess-tee" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/22/991efbf35bc811dfe7edcd749253f0931d2d4838cf55176132633e1c82a7/subprocess_tee-0.4.2.tar.gz", hash = "sha256:91b2b4da3aae9a7088d84acaf2ea0abee3f4fd9c0d2eae69a9b9122a71476590", size = 14951, upload-time = "2024-06-17T19:51:51.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/ab/e3a3be062cd544b2803760ff707dee38f0b1cb5685b2446de0ec19be28d9/subprocess_tee-0.4.2-py3-none-any.whl", hash = "sha256:21942e976715af4a19a526918adb03a8a27a8edab959f2d075b777e3d78f532d", size = 5249, upload-time = "2024-06-17T19:51:15.949Z" }, +] + +[[package]] +name = "toml" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253, upload-time = "2020-11-01T01:40:22.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, +] + +[[package]] +name = "tomli-w" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/75/241269d1da26b624c0d5e110e8149093c759b7a286138f4efd61a60e75fe/tomli_w-1.2.0.tar.gz", hash = "sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021", size = 7184, upload-time = "2025-01-15T12:07:24.262Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl", hash = "sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90", size = 6675, upload-time = "2025-01-15T12:07:22.074Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "wcmatch" +version = "10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bracex" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/3e/c0bdc27cf06f4e47680bd5803a07cb3dfd17de84cde92dd217dcb9e05253/wcmatch-10.1.tar.gz", hash = "sha256:f11f94208c8c8484a16f4f48638a85d771d9513f4ab3f37595978801cb9465af", size = 117421, upload-time = "2025-06-22T19:14:02.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/d8/0d1d2e9d3fabcf5d6840362adcf05f8cf3cd06a73358140c3a97189238ae/wcmatch-10.1-py3-none-any.whl", hash = "sha256:5848ace7dbb0476e5e55ab63c6bbd529745089343427caa5537f230cc01beb8a", size = 39854, upload-time = "2025-06-22T19:14:00.978Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, +] + +[[package]] +name = "wheel" +version = "0.46.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/92/3a64fa9639b8e290fe8630d8067a66f7c5510845c6d73686ad880c9b04d9/wheel-0.46.2.tar.gz", hash = "sha256:3d79e48fde9847618a5a181f3cc35764c349c752e2fe911e65fa17faab9809b0", size = 60274, upload-time = "2026-01-21T23:55:25.838Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/2c/5e079cefe955ae58e5a052fe037c850ce493eb7269dedeb960237e78fb0f/wheel-0.46.2-py3-none-any.whl", hash = "sha256:33ae60725d69eaa249bc1982e739943c23b34b58d51f1cb6253453773aca6e65", size = 29971, upload-time = "2026-01-21T23:55:24.447Z" }, +] + +[[package]] +name = "yamllint" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pathspec" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/a0/8fc2d68e132cf918f18273fdc8a1b8432b60d75ac12fdae4b0ef5c9d2e8d/yamllint-1.38.0.tar.gz", hash = "sha256:09e5f29531daab93366bb061e76019d5e91691ef0a40328f04c927387d1d364d", size = 142446, upload-time = "2026-01-13T07:47:53.276Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/92/aed08e68de6e6a3d7c2328ce7388072cd6affc26e2917197430b646aed02/yamllint-1.38.0-py3-none-any.whl", hash = "sha256:fc394a5b3be980a4062607b8fdddc0843f4fa394152b6da21722f5d59013c220", size = 68940, upload-time = "2026-01-13T07:47:51.343Z" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +] diff --git a/src/containers/telemetry_receiver/build.sh b/src/containers/telemetry_receiver/build.sh new file mode 100644 index 0000000000..32e40e4f2b --- /dev/null +++ b/src/containers/telemetry_receiver/build.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# ============================================================================= +# telemetry_receiver — Container Build Script (iDRAC Telemetry) +# ============================================================================= +# Sourced by build_images.sh. Defines build_telemetry_receiver(). +# Requires: iDRAC-Telemetry-Reference-Tools repo clone +# ============================================================================= + +# iDRAC Telemetry repo settings (shared with kafkapump, victoriapump) +IDRAC_TELEMETRY_COMMIT="${IDRAC_TELEMETRY_COMMIT:-cfa9102a900a76afe9de578d080e98f685625814}" +IDRAC_TELEMETRY_CLONE_DIR="${IDRAC_TELEMETRY_CLONE_DIR:-.idrac-telemetry-tools}" + +build_telemetry_receiver() { + print_build_info "idrac_telemetry_receiver" "${TELEMETRY_RECEIVER_TAG}" \ + "Using iDRAC Commit: ${YELLOW}${IDRAC_TELEMETRY_COMMIT}${NC}" + + # Clone repo if needed + clone_repo_at_commit \ + "https://github.com/dell/iDRAC-Telemetry-Reference-Tools.git" \ + "${IDRAC_TELEMETRY_CLONE_DIR}" \ + "${IDRAC_TELEMETRY_COMMIT}" + + container_build \ + "idrac_telemetry_receiver" \ + "${TELEMETRY_RECEIVER_TAG}" \ + "${IDRAC_TELEMETRY_CLONE_DIR}" \ + "docker-compose-files/Dockerfile.telemetry_receiver" +} diff --git a/src/containers/victoriapump/build.sh b/src/containers/victoriapump/build.sh new file mode 100644 index 0000000000..46563b7c49 --- /dev/null +++ b/src/containers/victoriapump/build.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# ============================================================================= +# victoriapump — Container Build Script (iDRAC Telemetry) +# ============================================================================= +# Sourced by build_images.sh. Defines build_victoriapump(). +# Requires: iDRAC-Telemetry-Reference-Tools repo clone +# ============================================================================= + +# iDRAC Telemetry repo settings (shared with kafkapump, telemetry_receiver) +IDRAC_TELEMETRY_COMMIT="${IDRAC_TELEMETRY_COMMIT:-cfa9102a900a76afe9de578d080e98f685625814}" +IDRAC_TELEMETRY_CLONE_DIR="${IDRAC_TELEMETRY_CLONE_DIR:-.idrac-telemetry-tools}" + +build_victoriapump() { + print_build_info "victoriapump" "${VICTORIAPUMP_TAG}" \ + "Using iDRAC Commit: ${YELLOW}${IDRAC_TELEMETRY_COMMIT}${NC}" + + # Clone repo if needed + clone_repo_at_commit \ + "https://github.com/dell/iDRAC-Telemetry-Reference-Tools.git" \ + "${IDRAC_TELEMETRY_CLONE_DIR}" \ + "${IDRAC_TELEMETRY_COMMIT}" + + container_build \ + "victoriapump" \ + "${VICTORIAPUMP_TAG}" \ + "${IDRAC_TELEMETRY_CLONE_DIR}" \ + "docker-compose-files/Dockerfile" \ + "--build-arg CMD=victoriapump" +} diff --git a/omnia.sh b/src/main/omnia.sh old mode 100755 new mode 100644 similarity index 98% rename from omnia.sh rename to src/main/omnia.sh index f0f1b1a9ce..0a28cab48c --- a/omnia.sh +++ b/src/main/omnia.sh @@ -298,21 +298,14 @@ validate_container_image() { echo -e "${YELLOW}Required image:${NC} omnia_core:$target_container_tag" echo "" echo -e "${YELLOW}Omnia does not pull images from Docker Hub.${NC}" - echo -e "${YELLOW}You must build or load the container image locally before proceeding.${NC}" + echo -e "${YELLOW}You must build the container image locally before proceeding.${NC}" echo "" - echo -e "${BLUE}Build the required image using the following commands:${NC}" + echo -e "${BLUE}Build the required image using:${NC}" echo "" - echo -e "git clone https://github.com/dell/omnia-artifactory.git -b omnia-container-" - echo -e "${YELLOW}Note: Replace with the target Omnia version (e.g., v2.2.0.0)${NC}" - echo "" - echo -e "cd omnia-artifactory" - echo "" - echo -e "./build_images.sh core core_tag= omnia_branch=" - echo -e "${YELLOW}Note: Replace with the target Omnia branch (e.g., v2.2.0.0)${NC}" - echo -e "${YELLOW}Note: core_tag will be the first 2 digits of the target Omnia version (e.g., 2.2 for v2.2.0.0)${NC}" + echo -e " ${BLUE}./omnia.sh --build${NC}" echo "" echo -e "${BLUE}After the image is built successfully, re-run:${NC}" - echo -e "./omnia.sh --$operation" + echo -e " ${BLUE}./omnia.sh --$operation${NC}" echo "" echo -e "${RED}================================================================================${NC}" return 1 @@ -392,10 +385,10 @@ show_post_upgrade_instructions() { echo -e "${YELLOW}You must now run the upgrade playbooks inside the omnia_core container:${NC}" echo "" echo -e "${GREEN}Step 1: Prepare upgrade (transform inputs, restore credentials)${NC}" - echo -e "${GREEN} ansible-playbook /omnia/upgrade/prepare_upgrade.yml${NC}" + echo -e "${GREEN} ansible-playbook /omnia/src/playbooks/upgrade/prepare_upgrade.yml${NC}" echo "" echo -e "${GREEN}Step 2: Execute upgrade${NC}" - echo -e "${GREEN} ansible-playbook /omnia/upgrade/upgrade.yml${NC}" + echo -e "${GREEN} ansible-playbook /omnia/src/playbooks/upgrade/upgrade.yml${NC}" echo "" echo -e "${YELLOW}Note: Run these commands after the container is fully healthy and stable${NC}" echo -e "${YELLOW}================================================================================${NC}" @@ -1291,14 +1284,12 @@ post_setup_config() { } >> "$OMNIA_INPUT_DIR/default.yml" fi - # Copy input files from /omnia to /opt/omnia/project_default/ inside omnia_core container - podman exec -u root omnia_core bash -c "cd /omnia && git pull" - echo -e "${BLUE} Moving input files from /omnia dir to project_default folder.${NC}" + # Copy input files from /omnia/src/input to /opt/omnia/project_default/ inside omnia_core container + echo -e "${BLUE} Moving input files from /omnia/src/input to project_default folder.${NC}" podman exec -u root omnia_core bash -c " mkdir -p /opt/omnia/input/project_default cp -r /omnia/src/input/* /opt/omnia/input/project_default - rm -rf /omnia/src/input - rm -rf /omnia/omnia.sh" + rm -rf /omnia/src/input" } validate_nfs_server() { @@ -1358,7 +1349,7 @@ init_ssh_config() { } remove_container_omnia_sh() { - podman exec -u root omnia_core bash -c 'if [ -f /omnia/omnia.sh ]; then rm -f /omnia/omnia.sh; fi' >/dev/null 2>&1 || true + podman exec -u root omnia_core bash -c 'if [ -f /omnia/src/main ]; then rm -rf /omnia/src/main; fi' >/dev/null 2>&1 || true podman exec -u root omnia_core bash -c 'if [ -d /omnia/src/input ]; then rm -rf /omnia/src/input; fi' >/dev/null 2>&1 || true } @@ -1386,7 +1377,7 @@ start_container_session() { It's important to note: - Files placed in the shared directory should not be manually deleted. - - Use the playbook /omnia/utils/oim_cleanup.yml to safely remove the shared directory and Omnia containers (except the core container). + - Use the playbook /omnia/src/playbooks/utils/oim_cleanup.yml to safely remove the shared directory and Omnia containers (except the core container). - If you need to delete the core container, please run the omnia.sh script with --uninstall option. - If you need to redeploy the core container with new input configs, please rerun the omnia.sh script with --install option. - Provide any file paths (ISO, mapping files, etc.) that are mentioned in input files in the /opt/omnia directory. @@ -1403,15 +1394,45 @@ start_container_session() { } show_help() { - echo "Usage: $0 [--install | --uninstall | --upgrade | --rollback | --version | --help]" + echo "Usage: $0 [--install | --uninstall | --upgrade | --rollback | --build | --version | --help]" echo " -i, --install Install and start the Omnia core container" echo " -u, --uninstall Uninstall the Omnia core container and clean up configuration" echo " --upgrade Upgrade the Omnia core container to newer version" echo " --rollback Rollback the Omnia core container to previous version" + echo " -b, --build Build the Omnia core container image locally" echo " -v, --version Display Omnia version information" echo " -h, --help More information about usage" } +build_omnia_core_image() { + local OMNIA_SH_DIR + OMNIA_SH_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + local BUILD_SCRIPT="${OMNIA_SH_DIR}/../containers/build_images.sh" + + if [ ! -f "$BUILD_SCRIPT" ]; then + echo -e "${RED}Error: build_images.sh not found at ${BUILD_SCRIPT}${NC}" + echo -e "${YELLOW}Ensure src/containers/ directory exists with build_images.sh and omnia_core/ Dockerfile.${NC}" + exit 1 + fi + + echo -e "${BLUE}=== Building Omnia Core Container Image ===${NC}" + echo -e "${YELLOW}Invoking build_images.sh with 'core' target...${NC}" + echo "" + + bash "$BUILD_SCRIPT" core + local rc=$? + + if [ $rc -eq 0 ]; then + echo "" + echo -e "${GREEN}Omnia core image built successfully.${NC}" + echo -e "${YELLOW}Next step: Run './omnia.sh --install' to deploy the container.${NC}" + else + echo "" + echo -e "${RED}Omnia core image build failed (exit code: ${rc}).${NC}" + exit $rc + fi +} + install_omnia_core() { # Check for existing installation if podman ps --format '{{.Names}}' | grep -qw "omnia_core"; then @@ -2439,7 +2460,7 @@ display_cleanup_instructions() { echo "" echo -e "${GREEN}CASE 1: If you can log into omnia_core container:${NC}" echo -e "${YELLOW}1. Enter omnia_core container: podman exec -it omnia_core bash${NC}" - echo -e "${YELLOW}2. Run oim cleanup: ansible-playbook /omnia/oim_cleanup.yml${NC}" + echo -e "${YELLOW}2. Run oim cleanup: ansible-playbook /omnia/src/playbooks/utils/oim_cleanup.yml${NC}" echo -e "${YELLOW}3. Run uninstall inside container: ./omnia.sh --uninstall${NC}" echo -e "${YELLOW}4. Exit container: exit${NC}" echo -e "${YELLOW}5. Clean shared path: rm -rf ${NC}" @@ -2858,6 +2879,9 @@ main() { --rollback) rollback_omnia_core ;; + --build|-b) + build_omnia_core_image + ;; --version|-v) display_version ;; diff --git a/src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_example_catalogs.yml b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_example_catalogs.yml index 847a801cd8..985573d225 100644 --- a/src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_example_catalogs.yml +++ b/src/playbooks/gitlab/roles/hosted_gitlab/tasks/push_example_catalogs.yml @@ -21,7 +21,7 @@ - name: Find all example catalog files ansible.builtin.find: - paths: "{{ playbook_dir }}/../examples/catalog" + paths: "{{ playbook_dir }}/../../examples/catalog" patterns: "*.json" recurse: false register: example_catalog_files diff --git a/src/playbooks/gitlab/roles/hosted_gitlab/vars/main.yml b/src/playbooks/gitlab/roles/hosted_gitlab/vars/main.yml index 693efa38f2..29d1e99bd9 100644 --- a/src/playbooks/gitlab/roles/hosted_gitlab/vars/main.yml +++ b/src/playbooks/gitlab/roles/hosted_gitlab/vars/main.yml @@ -136,7 +136,7 @@ gitlab_password_change_success_msg: "GitLab root password changed successfully!" # Pipeline trigger and catalog defaults gitlab_trigger_description: "Omnia Software Catalog Webhook" gitlab_catalog_repo_path: "catalog_rhel.json" -gitlab_catalog_json_source: "{{ role_path }}/../../../examples/catalog/catalog_rhel.json" +gitlab_catalog_json_source: "{{ role_path }}/../../../../examples/catalog/catalog_rhel.json" gitlab_input_repo_dir: "input" # Use NFS input_project_dir for user-configured files instead of default repo files gitlab_input_nfs_root: "{{ hostvars['localhost']['input_project_dir'] | default('/opt/omnia/input/project_default') }}" diff --git a/src/playbooks/prepare_oim/roles/deploy_containers/auth/vars/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/auth/vars/main.yml index 01ceb2007a..1ff25c9d29 100644 --- a/src/playbooks/prepare_oim/roles/deploy_containers/auth/vars/main.yml +++ b/src/playbooks/prepare_oim/roles/deploy_containers/auth/vars/main.yml @@ -30,10 +30,8 @@ auth_service_image_pull_fail_msg: - The pull of the auth service image {{ auth_service_image_name }}:{{ auth_service_image_tag }} has failed. - "ERROR: {{ auth_service_image_name }}:{{ auth_service_image_tag }} not found locally or on Docker Hub." - To resolve this, please follow these steps - - Clone the Omnia Artifactory repository - - git clone https://github.com/dell/omnia-artifactory -b omnia-container - - Navigate to the repository directory and Build the auth image locally - - ./build_images.sh auth + - Build the auth image locally using omnia.sh --build + - Or build it directly using src/containers/build_images.sh auth auth_service_image_pull_warning_msg: | Failed to pull {{ auth_service_image_name }}:{{ auth_service_image_tag }} from Docker Hub after 3 attempts. This may be due to network issues or the image not being available on Docker Hub. diff --git a/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/vars/main.yml b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/vars/main.yml index d4eec6b6c9..e4290a5c36 100644 --- a/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/vars/main.yml +++ b/src/playbooks/prepare_oim/roles/deploy_containers/build_stream/vars/main.yml @@ -19,11 +19,11 @@ core_container_name: "omnia_core" build_stream_container_name: "omnia_build_stream" # Build Stream source code location (in omnia_core container) -build_stream_source_path: "/omnia/build_stream" +build_stream_source_path: "/omnia/src/build_stream" # Rsync configuration for source code deployment bs_rsync_options: "-av --checksum" -bs_rsync_source: "{{ role_path }}/../../../../build_stream/" +bs_rsync_source: "{{ role_path }}/../../../../../build_stream/" bs_rsync_destination: "/opt/omnia/build_stream/" # OIM metadata file path (read from omnia_core container) @@ -127,6 +127,7 @@ build_stream_container_failure_msg: | # Automation Framework Configuration (Phase 2 - Component 5 Validate Module Spec) # Repository and branch configuration +# TODO: Migrate automation library into monorepo; remove external clone dependency automation_repo_url: "https://github.com/dell/omnia-artifactory.git" automation_repo_branch: "automation-v2.2.0.0" automation_base_dir: "/opt/omnia/automation" diff --git a/src/playbooks/upgrade/playbooks/upgrade_build_stream.yml b/src/playbooks/upgrade/playbooks/upgrade_build_stream.yml index 1b86021f32..80ccbb626e 100644 --- a/src/playbooks/upgrade/playbooks/upgrade_build_stream.yml +++ b/src/playbooks/upgrade/playbooks/upgrade_build_stream.yml @@ -40,7 +40,7 @@ component_name: build_stream gitlab_role_path: "{{ playbook_dir }}/../../gitlab/roles/hosted_gitlab" upgrade_role_tasks: "{{ playbook_dir }}/../roles/upgrade_build_stream/tasks" - example_catalog_path: "{{ playbook_dir }}/../../examples/catalog" + example_catalog_path: "{{ playbook_dir }}/../../../examples/catalog" tasks: # ── Set upgrade_mode to bypass upgrade_checkup in credential utility ── - name: Set upgrade_mode to bypass upgrade_checkup in imported playbooks @@ -272,7 +272,7 @@ component_name: build_stream gitlab_role_path: "{{ playbook_dir }}/../../gitlab/roles/hosted_gitlab" upgrade_role_tasks: "{{ playbook_dir }}/../roles/upgrade_build_stream/tasks" - example_catalog_path: "{{ playbook_dir }}/../../examples/catalog" + example_catalog_path: "{{ playbook_dir }}/../../../examples/catalog" input_project_dir: "{{ hostvars['localhost']['input_project_dir'] | default('/opt/omnia-sharedpath/omnia/input/project_default') }}" backup_dir: "{{ hostvars['localhost']['backup_dir'] }}" gitlab_host: "{{ hostvars['localhost']['gitlab_host'] }}" diff --git a/src/playbooks/utils/upgrade_checkup.yml b/src/playbooks/utils/upgrade_checkup.yml index a70991b24f..1c41f10b9a 100644 --- a/src/playbooks/utils/upgrade_checkup.yml +++ b/src/playbooks/utils/upgrade_checkup.yml @@ -27,7 +27,7 @@ msg: >- Upgrade is not completed fully. Please run upgrade.yml to complete upgrade before running any other playbook using the below command: - "ansible-playbook /omnia/upgrade/upgrade.yml" + "ansible-playbook /omnia/src/playbooks/upgrade/upgrade.yml" If you don't require input files to be migrated, reconfigure the default input files, remove the lock file using the following command "rm /opt/omnia/.data/upgrade_in_progress.lock" and then proceed. when: From 53acb22bcc17dd6d8939a84f86ec3cea4eb31958 Mon Sep 17 00:00:00 2001 From: Abhishek S A Date: Mon, 29 Jun 2026 20:21:20 +0530 Subject: [PATCH 17/24] Sync omnia q2 fixes to q3_main (#4801) Signed-off-by: Abhishek S A --- src/ansible.cfg | 23 +++ .../catalog/tests/test_generate_catalog_id.py | 139 ++++++++++++++---- src/examples/catalog/catalog_rhel.json | 16 +- .../catalog_rhel_with_nfs_provisioner.json | 16 +- src/examples/catalog/catalog_rhel_x86_64.json | 16 +- .../x86_64/rhel/10.0/service_k8s_v1.35.1.json | 8 +- src/playbooks/ansible.cfg | 23 +++ .../image_creation/tasks/build_base_image.yml | 2 +- .../tasks/build_compute_image.yml | 2 +- .../image_creation/tasks/build_base_image.yml | 2 +- .../tasks/build_compute_image.yml | 2 +- .../templates/coredhcp/coredhcp.yaml.j2 | 2 +- .../telemetry/kafka/kafka.kafka.yaml.j2 | 10 +- .../kafka/kafka.kafka_bridge.yaml.j2 | 3 +- .../kafka/kafka.kafkapump_user.yaml.j2 | 2 +- .../telemetry/kafka/kafka.topic.yaml.j2 | 2 +- .../templates/telemetry/telemetry.sh.j2 | 11 ++ .../vector/vector-ome-kafkauser.yaml.j2 | 2 +- .../provision/roles/telemetry/vars/main.yml | 6 +- .../tasks/restore_quadlets_and_configs.yml | 98 ++++++++++-- .../migrate_strimzi_crds.sh\342\200\216" | 117 +++++++++++++++ .../tasks/apply_victoria_crs.yml | 2 +- .../tasks/execute_telemetry_sh.yml | 16 ++ test/fvt/.gitkeep | 0 test/nft/.gitkeep | 0 25 files changed, 433 insertions(+), 87 deletions(-) create mode 100644 src/ansible.cfg create mode 100644 src/playbooks/ansible.cfg create mode 100644 "src/playbooks/upgrade/roles/upgrade_telemetry/files/migrate_strimzi_crds.sh\342\200\216" create mode 100644 test/fvt/.gitkeep create mode 100644 test/nft/.gitkeep diff --git a/src/ansible.cfg b/src/ansible.cfg new file mode 100644 index 0000000000..88d2484337 --- /dev/null +++ b/src/ansible.cfg @@ -0,0 +1,23 @@ +[defaults] +log_path = /opt/omnia/log/core/playbooks/omnia.log +# Set the remote temporary directory to a shared path to avoid SELinux issues +remote_tmp = /opt/omnia/tmp/.ansible/tmp/ +host_key_checking = false +forks = 5 +timeout = 180 +executable = /bin/bash +display_skipped_hosts = false +deprecation_warnings = false +show_task_path_on_failure = false +stdout_callback = omnia_default +callback_plugins = src/common/callback_plugins +library = src/common/library/modules +module_utils = src/common/library/module_utils + +[persistent_connection] +command_timeout = 180 +connect_timeout = 180 + +[ssh_connection] +retries = 3 +ssh_args = -o ControlMaster=auto -o ControlPersist=60 -o ConnectTimeout=60 diff --git a/src/build_stream/core/catalog/tests/test_generate_catalog_id.py b/src/build_stream/core/catalog/tests/test_generate_catalog_id.py index 00807b3e41..c71f15c7e3 100644 --- a/src/build_stream/core/catalog/tests/test_generate_catalog_id.py +++ b/src/build_stream/core/catalog/tests/test_generate_catalog_id.py @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +"""Unit tests for the _generate_human_readable_id function.""" +# pylint: disable=wrong-import-position + import unittest import sys from pathlib import Path @@ -21,61 +24,137 @@ from generate_catalog import _generate_human_readable_id + class TestGenerateHumanReadableId(unittest.TestCase): + """Test cases for _generate_human_readable_id function.""" + def setUp(self): + """Set up test fixtures before each test method.""" self.used_ids = set() def test_basic_names(self): - # Should remain unchanged - self.assertEqual(_generate_human_readable_id("apptainer", "rpm", None, self.used_ids), "apptainer") - self.assertEqual(_generate_human_readable_id("device-mapper-multipath", "rpm", None, self.used_ids), "device-mapper-multipath") + """Test that basic package names remain unchanged.""" + self.assertEqual( + _generate_human_readable_id("apptainer", "rpm", None, self.used_ids), + "apptainer" + ) + self.assertEqual( + _generate_human_readable_id( + "device-mapper-multipath", "rpm", None, self.used_ids + ), + "device-mapper-multipath" + ) def test_version_in_name_exact(self): - # Should strip exact version suffix - self.assertEqual(_generate_human_readable_id("external-snapshotter-v8.4.0", "git", "v8.4.0", self.used_ids), "external-snapshotter") - + """Test stripping exact version suffix.""" + self.assertEqual( + _generate_human_readable_id( + "external-snapshotter-v8.4.0", "git", "v8.4.0", self.used_ids + ), + "external-snapshotter" + ) + def test_version_in_name_v_prefixed(self): - # Should strip if 'v' prefix is in name but not in version - self.assertEqual(_generate_human_readable_id("app-v1.0.0", "rpm", "1.0.0", self.used_ids), "app") + """Test stripping version with 'v' prefix in name.""" + self.assertEqual( + _generate_human_readable_id("app-v1.0.0", "rpm", "1.0.0", self.used_ids), + "app" + ) def test_version_in_name_dots_replaced(self): - # Should strip if dots are replaced by hyphens - self.assertEqual(_generate_human_readable_id("helm-charts-2-16-0", "git", "2.16.0", self.used_ids), "helm-charts") + """Test stripping version when dots are replaced by hyphens.""" + self.assertEqual( + _generate_human_readable_id("helm-charts-2-16-0", "git", "2.16.0", self.used_ids), + "helm-charts" + ) def test_pip_module_format(self): - # PyMySQL==1.1.2 -> PyMySQL - self.assertEqual(_generate_human_readable_id("PyMySQL==1.1.2", "pip_module", None, self.used_ids), "PyMySQL") + """Test pip module format with == version separator.""" + self.assertEqual( + _generate_human_readable_id("PyMySQL==1.1.2", "pip_module", None, self.used_ids), + "PyMySQL" + ) def test_regex_fallback_no_version(self): - # Regex should strip the version even without explicit pkg_version - self.assertEqual(_generate_human_readable_id("calico-v3.31.4", "manifest", None, self.used_ids), "calico") - self.assertEqual(_generate_human_readable_id("cert-manager-v1-10-0", "tarball", None, self.used_ids), "cert-manager") - self.assertEqual(_generate_human_readable_id("helm-v3-20-1-amd64", "tarball", None, self.used_ids), "helm-amd64") - self.assertEqual(_generate_human_readable_id("helm-v3-20-1-chart", "tarball", None, self.used_ids), "helm-chart") - self.assertEqual(_generate_human_readable_id("helm-v3-20-1-anything-suffixed", "tarball", None, self.used_ids), "helm-anything-suffixed") - self.assertEqual(_generate_human_readable_id("metallb-native-v0-15-3", "manifest", None, self.used_ids), "metallb-native") - self.assertEqual(_generate_human_readable_id("strimzi-kafka-operator-helm-3-chart-0-48-0", "tarball", None, self.used_ids), "strimzi-kafka-operator-helm-3-chart") - self.assertEqual(_generate_human_readable_id("victoria-metrics-operator-0-59-3", "tarball", None, self.used_ids), "victoria-metrics-operator") - self.assertEqual(_generate_human_readable_id("python3-PyMySQL-1.1.2", "rpm", None, self.used_ids), "python3-PyMySQL") - self.assertEqual(_generate_human_readable_id("nfs-subdir-external-provisioner-4-0-18", "tarball", None, self.used_ids), "nfs-subdir-external-provisioner") - + """Test regex version stripping without explicit pkg_version.""" + self.assertEqual( + _generate_human_readable_id("calico-v3.31.4", "manifest", None, self.used_ids), + "calico" + ) + self.assertEqual( + _generate_human_readable_id( + "cert-manager-v1-10-0", "tarball", None, self.used_ids + ), + "cert-manager" + ) + self.assertEqual( + _generate_human_readable_id("helm-v3-20-1-amd64", "tarball", None, self.used_ids), + "helm-amd64" + ) + self.assertEqual( + _generate_human_readable_id("helm-v3-20-1-chart", "tarball", None, self.used_ids), + "helm-chart" + ) + self.assertEqual( + _generate_human_readable_id( + "helm-v3-20-1-anything-suffixed", "tarball", None, self.used_ids + ), + "helm-anything-suffixed" + ) + self.assertEqual( + _generate_human_readable_id( + "metallb-native-v0-15-3", "manifest", None, self.used_ids + ), + "metallb-native" + ) + self.assertEqual( + _generate_human_readable_id( + "strimzi-kafka-operator-helm-3-chart-1-0-1", "tarball", None, + self.used_ids + ), + "strimzi-kafka-operator-helm-3-chart" + ) + self.assertEqual( + _generate_human_readable_id( + "victoria-metrics-operator-0-59-3", "tarball", None, self.used_ids + ), + "victoria-metrics-operator" + ) + self.assertEqual( + _generate_human_readable_id("python3-PyMySQL-1.1.2", "rpm", None, + self.used_ids), + "python3-PyMySQL" + ) + self.assertEqual( + _generate_human_readable_id( + "nfs-subdir-external-provisioner-4-0-18", "tarball", None, + self.used_ids + ), + "nfs-subdir-external-provisioner" + ) + def test_docker_image_without_tag_in_name(self): - # Docker images usually don't have the tag in the name field, just the image path - self.assertEqual(_generate_human_readable_id("docker.io/library/python", "image", "3.12-slim", self.used_ids), "docker.io/library/python") + """Test docker images where tag is not in the name.""" + self.assertEqual( + _generate_human_readable_id( + "docker.io/library/python", "image", "3.12-slim", self.used_ids + ), + "docker.io/library/python" + ) def test_collision_handling(self): - # First call gets the base name + """Test collision handling with _1, _2 suffixes.""" id1 = _generate_human_readable_id("calico", "rpm", None, self.used_ids) self.assertEqual(id1, "calico") - + # Second call with the same base name gets _1 id2 = _generate_human_readable_id("calico-v1.0.0", "tarball", None, self.used_ids) self.assertEqual(id2, "calico_1") - + # Third call gets _2 id3 = _generate_human_readable_id("calico-v2.0.0", "manifest", None, self.used_ids) self.assertEqual(id3, "calico_2") - + self.assertIn("calico", self.used_ids) self.assertIn("calico_1", self.used_ids) self.assertIn("calico_2", self.used_ids) diff --git a/src/examples/catalog/catalog_rhel.json b/src/examples/catalog/catalog_rhel.json index fa265ce93b..fe8ac00cd1 100644 --- a/src/examples/catalog/catalog_rhel.json +++ b/src/examples/catalog/catalog_rhel.json @@ -1862,8 +1862,8 @@ "x86_64" ], "Type": "image", - "Tag": "0.48.0-kafka-4.1.0", - "Version": "0.48.0-kafka-4.1.0" + "Tag": "1.0.1-kafka-4.2.0", + "Version": "1.0.1-kafka-4.2.0" }, "quay.io/strimzi/kafka-bridge": { "Name": "quay.io/strimzi/kafka-bridge", @@ -1877,8 +1877,8 @@ "x86_64" ], "Type": "image", - "Tag": "0.33.1", - "Version": "0.33.1" + "Tag": "1.0.0", + "Version": "1.0.0" }, "quay.io/strimzi/operator": { "Name": "quay.io/strimzi/operator", @@ -1892,8 +1892,8 @@ "x86_64" ], "Type": "image", - "Tag": "0.48.0", - "Version": "0.48.0" + "Tag": "1.0.1", + "Version": "1.0.1" }, "registry.k8s.io/coredns/coredns": { "Name": "registry.k8s.io/coredns/coredns", @@ -2184,7 +2184,7 @@ ] }, "strimzi-kafka-operator-helm-3-chart": { - "Name": "strimzi-kafka-operator-helm-3-chart-0.48.0", + "Name": "strimzi-kafka-operator-helm-3-chart-1.0.1", "SupportedOS": [ { "Name": "RHEL", @@ -2198,7 +2198,7 @@ "Sources": [ { "Architecture": "x86_64", - "Uri": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.48.0/strimzi-kafka-operator-helm-3-chart-0.48.0.tgz" + "Uri": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/1.0.1/strimzi-kafka-operator-helm-3-chart-1.0.1.tgz" } ] }, diff --git a/src/examples/catalog/catalog_rhel_with_nfs_provisioner.json b/src/examples/catalog/catalog_rhel_with_nfs_provisioner.json index 511d5d0a6c..d11135023a 100644 --- a/src/examples/catalog/catalog_rhel_with_nfs_provisioner.json +++ b/src/examples/catalog/catalog_rhel_with_nfs_provisioner.json @@ -1735,8 +1735,8 @@ "x86_64" ], "Type": "image", - "Tag": "0.48.0-kafka-4.1.0", - "Version": "0.48.0-kafka-4.1.0" + "Tag": "1.0.1-kafka-4.2.0", + "Version": "1.0.1-kafka-4.2.0" }, "quay.io/strimzi/kafka-bridge": { "Name": "quay.io/strimzi/kafka-bridge", @@ -1750,8 +1750,8 @@ "x86_64" ], "Type": "image", - "Tag": "0.33.1", - "Version": "0.33.1" + "Tag": "1.0.0", + "Version": "1.0.0" }, "quay.io/strimzi/operator": { "Name": "quay.io/strimzi/operator", @@ -1765,8 +1765,8 @@ "x86_64" ], "Type": "image", - "Tag": "0.48.0", - "Version": "0.48.0" + "Tag": "1.0.1", + "Version": "1.0.1" }, "registry.k8s.io/coredns/coredns": { "Name": "registry.k8s.io/coredns/coredns", @@ -2057,7 +2057,7 @@ ] }, "strimzi-kafka-operator-helm-3-chart": { - "Name": "strimzi-kafka-operator-helm-3-chart-0.48.0", + "Name": "strimzi-kafka-operator-helm-3-chart-1.0.1", "SupportedOS": [ { "Name": "RHEL", @@ -2071,7 +2071,7 @@ "Sources": [ { "Architecture": "x86_64", - "Uri": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.48.0/strimzi-kafka-operator-helm-3-chart-0.48.0.tgz" + "Uri": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/1.0.1/strimzi-kafka-operator-helm-3-chart-1.0.1.tgz" } ] }, diff --git a/src/examples/catalog/catalog_rhel_x86_64.json b/src/examples/catalog/catalog_rhel_x86_64.json index a882551226..d0c97cbf25 100644 --- a/src/examples/catalog/catalog_rhel_x86_64.json +++ b/src/examples/catalog/catalog_rhel_x86_64.json @@ -1752,8 +1752,8 @@ "x86_64" ], "Type": "image", - "Tag": "0.48.0-kafka-4.1.0", - "Version": "0.48.0-kafka-4.1.0" + "Tag": "1.0.1-kafka-4.2.0", + "Version": "1.0.1-kafka-4.2.0" }, "quay.io/strimzi/kafka-bridge": { "Name": "quay.io/strimzi/kafka-bridge", @@ -1767,8 +1767,8 @@ "x86_64" ], "Type": "image", - "Tag": "0.33.1", - "Version": "0.33.1" + "Tag": "1.0.0", + "Version": "1.0.0" }, "quay.io/strimzi/operator": { "Name": "quay.io/strimzi/operator", @@ -1782,8 +1782,8 @@ "x86_64" ], "Type": "image", - "Tag": "0.48.0", - "Version": "0.48.0" + "Tag": "1.0.1", + "Version": "1.0.1" }, "registry.k8s.io/coredns/coredns": { "Name": "registry.k8s.io/coredns/coredns", @@ -2039,7 +2039,7 @@ ] }, "strimzi-kafka-operator-helm-3-chart": { - "Name": "strimzi-kafka-operator-helm-3-chart-0.48.0", + "Name": "strimzi-kafka-operator-helm-3-chart-1.0.1", "SupportedOS": [ { "Name": "RHEL", @@ -2053,7 +2053,7 @@ "Sources": [ { "Architecture": "x86_64", - "Uri": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.48.0/strimzi-kafka-operator-helm-3-chart-0.48.0.tgz" + "Uri": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/1.0.1/strimzi-kafka-operator-helm-3-chart-1.0.1.tgz" } ] }, diff --git a/src/input/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json b/src/input/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json index 8f21b2bf51..8c18422fcc 100644 --- a/src/input/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json +++ b/src/input/config/x86_64/rhel/10.0/service_k8s_v1.35.1.json @@ -33,8 +33,8 @@ { "package": "cffi==1.17.1", "type": "pip_module" }, { "package": "prometheus_client==0.20.0", "type": "pip_module" }, { "package": "kubernetes==33.1.0", "type": "pip_module" }, - { "package": "quay.io/strimzi/operator", "tag": "0.48.0", "type": "image" }, - { "package": "quay.io/strimzi/kafka", "tag": "0.48.0-kafka-4.1.0", "type": "image" }, + { "package": "quay.io/strimzi/operator", "tag": "1.0.1", "type": "image" }, + { "package": "quay.io/strimzi/kafka", "tag": "1.0.1-kafka-4.2.0", "type": "image" }, { "package": "docker.io/dellhpcomniaaisolution/ubuntu-ldms", "tag": "1.1", "type": "image" }, { "package": "quay.io/dell/container-storage-modules/csm-metrics-powerscale", "tag": "v1.12.0", "type": "image" }, { "package": "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector", "tag": "0.150.1", "type": "image" }, @@ -46,8 +46,8 @@ { "package": "quay.io/jetstack/cert-manager-webhook", "tag": "v1.10.0", "type": "image" }, { "package": "quay.io/jetstack/cert-manager-acmesolver", "tag": "v1.10.0", "type": "image" }, { "package": "cert-manager-v1.10.0", "type": "tarball", "url": "https://charts.jetstack.io/charts/cert-manager-v1.10.0.tgz" }, - { "package": "strimzi-kafka-operator-helm-3-chart-0.48.0", "type": "tarball", "url": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.48.0/strimzi-kafka-operator-helm-3-chart-0.48.0.tgz" }, - { "package": "quay.io/strimzi/kafka-bridge", "tag": "0.33.1", "type": "image" }, + { "package": "strimzi-kafka-operator-helm-3-chart-1.0.1", "type": "tarball", "url": "https://github.com/strimzi/strimzi-kafka-operator/releases/download/1.0.1/strimzi-kafka-operator-helm-3-chart-1.0.1.tgz" }, + { "package": "quay.io/strimzi/kafka-bridge", "tag": "1.0.0", "type": "image" }, { "package": "docker.io/victoriametrics/operator", "tag": "v0.68.3", "type": "image" }, { "package": "docker.io/victoriametrics/operator", "tag": "config-reloader-v0.68.3", "type": "image" }, { "package": "victoria-metrics-operator-0.59.3", "type": "tarball", "url": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-operator-0.59.3/victoria-metrics-operator-0.59.3.tgz" }, diff --git a/src/playbooks/ansible.cfg b/src/playbooks/ansible.cfg new file mode 100644 index 0000000000..88d2484337 --- /dev/null +++ b/src/playbooks/ansible.cfg @@ -0,0 +1,23 @@ +[defaults] +log_path = /opt/omnia/log/core/playbooks/omnia.log +# Set the remote temporary directory to a shared path to avoid SELinux issues +remote_tmp = /opt/omnia/tmp/.ansible/tmp/ +host_key_checking = false +forks = 5 +timeout = 180 +executable = /bin/bash +display_skipped_hosts = false +deprecation_warnings = false +show_task_path_on_failure = false +stdout_callback = omnia_default +callback_plugins = src/common/callback_plugins +library = src/common/library/modules +module_utils = src/common/library/module_utils + +[persistent_connection] +command_timeout = 180 +connect_timeout = 180 + +[ssh_connection] +retries = 3 +ssh_args = -o ControlMaster=auto -o ControlPersist=60 -o ConnectTimeout=60 diff --git a/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_base_image.yml b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_base_image.yml index 42cdc9fef0..82704d76a2 100644 --- a/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_base_image.yml +++ b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_base_image.yml @@ -76,7 +76,7 @@ - name: Verify the aarch64 base osimage in registry ansible.builtin.command: - cmd: "/usr/local/bin/regctl repo ls {{ oim_node_name }}.{{ domain_name }}:5000" + cmd: "/usr/local/bin/regctl repo ls --limit 500 {{ oim_node_name }}.{{ domain_name }}:5000" delegate_to: "{{ aarch64_build_host }}" connection: ssh changed_when: false diff --git a/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_compute_image.yml b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_compute_image.yml index 0ca77db3df..38eff4480e 100644 --- a/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_compute_image.yml +++ b/src/playbooks/build_image_aarch64/roles/image_creation/tasks/build_compute_image.yml @@ -102,7 +102,7 @@ - name: Verify aarch64 compute osimages in registry ansible.builtin.command: - cmd: "/usr/local/bin/regctl repo ls {{ oim_node_name }}.{{ domain_name }}:5000" + cmd: "/usr/local/bin/regctl repo ls --limit 500 {{ oim_node_name }}.{{ domain_name }}:5000" delegate_to: "{{ aarch64_build_host }}" connection: ssh changed_when: false diff --git a/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_base_image.yml b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_base_image.yml index 7e4bfa445e..7966db4e92 100644 --- a/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_base_image.yml +++ b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_base_image.yml @@ -66,7 +66,7 @@ - name: Verify the x86_64 base osimage in registry ansible.builtin.command: - cmd: "/usr/local/bin/regctl repo ls {{ oim_node_name }}.{{ domain_name }}:5000" + cmd: "/usr/local/bin/regctl repo ls --limit 500 {{ oim_node_name }}.{{ domain_name }}:5000" changed_when: false register: verify_base_osimage diff --git a/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_compute_image.yml b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_compute_image.yml index 84f6a2b063..eb00755486 100644 --- a/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_compute_image.yml +++ b/src/playbooks/build_image_x86_64/roles/image_creation/tasks/build_compute_image.yml @@ -94,7 +94,7 @@ - name: Verify x86_64 compute osimages in registry ansible.builtin.command: - cmd: "/usr/local/bin/regctl repo ls {{ oim_node_name }}.{{ domain_name }}:5000" + cmd: "/usr/local/bin/regctl repo ls --limit 500 {{ oim_node_name }}.{{ domain_name }}:5000" changed_when: false register: verify_compute_osimages diff --git a/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/coredhcp/coredhcp.yaml.j2 b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/coredhcp/coredhcp.yaml.j2 index edfcb8c583..1cf09db3f9 100644 --- a/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/coredhcp/coredhcp.yaml.j2 +++ b/src/playbooks/prepare_oim/roles/deploy_containers/openchami/templates/coredhcp/coredhcp.yaml.j2 @@ -41,7 +41,7 @@ server4: # ------------------------------------------------------------------- # Multi-subnet configuration (requires coresmd v0.6.x+) # To enable multi-subnet DHCP: - # 1. Pull the new coresmd image: podman pull ghcr.io/openchami/coresmd:v0.6.x + # 1. Pull the new coresmd image: podman pull ghcr.io/openchami/coresmd:v0.6.3 # 2. Comment out the single-subnet coresmd and bootloop lines above # 3. Uncomment the multi-subnet coresmd and bootloop blocks below # 4. Replace the new coresmd image version in files: /etc/containers/systemd/coresmd-coredhcp.container /etc/containers/systemd/coresmd-coredns.container with the old version diff --git a/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka.yaml.j2 index 929af037c4..a9a0f6196f 100644 --- a/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka.yaml.j2 +++ b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka.yaml.j2 @@ -1,4 +1,4 @@ -apiVersion: kafka.strimzi.io/v1beta2 +apiVersion: kafka.strimzi.io/v1 kind: KafkaNodePool metadata: name: controller @@ -19,7 +19,7 @@ spec: deleteClaim: false --- -apiVersion: kafka.strimzi.io/v1beta2 +apiVersion: kafka.strimzi.io/v1 kind: KafkaNodePool metadata: name: broker @@ -40,7 +40,7 @@ spec: deleteClaim: false --- -apiVersion: kafka.strimzi.io/v1beta2 +apiVersion: kafka.strimzi.io/v1 kind: Kafka metadata: name: kafka @@ -50,8 +50,8 @@ metadata: strimzi.io/kraft: enabled spec: kafka: - version: 4.1.0 - metadataVersion: 4.1-IV0 + version: 4.2.0 + metadataVersion: 4.2-IV0 listeners: - name: internal port: 9092 diff --git a/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge.yaml.j2 index 35a0862cf3..b4fdb5689c 100644 --- a/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge.yaml.j2 +++ b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafka_bridge.yaml.j2 @@ -1,12 +1,11 @@ --- -apiVersion: kafka.strimzi.io/v1beta2 +apiVersion: kafka.strimzi.io/v1 kind: KafkaBridge metadata: name: bridge namespace: telemetry spec: bootstrapServers: kafka-kafka-bootstrap:9093 - enableMetrics: true http: port: 8080 # Enable TLS for Kafka connection diff --git a/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafkapump_user.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafkapump_user.yaml.j2 index 413a7fe72d..df1b9f9bae 100644 --- a/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafkapump_user.yaml.j2 +++ b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.kafkapump_user.yaml.j2 @@ -13,7 +13,7 @@ # limitations under the License. --- -apiVersion: kafka.strimzi.io/v1beta2 +apiVersion: kafka.strimzi.io/v1 kind: KafkaUser metadata: name: kafkapump diff --git a/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.topic.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.topic.yaml.j2 index 9ae180ecfd..974712e78f 100644 --- a/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.topic.yaml.j2 +++ b/src/playbooks/provision/roles/telemetry/templates/telemetry/kafka/kafka.topic.yaml.j2 @@ -1,4 +1,4 @@ -apiVersion: kafka.strimzi.io/v1beta2 +apiVersion: kafka.strimzi.io/v1 kind: KafkaTopic metadata: name: {{ topic_name }} diff --git a/src/playbooks/provision/roles/telemetry/templates/telemetry/telemetry.sh.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/telemetry.sh.j2 index c711863f48..dcc5affb41 100644 --- a/src/playbooks/provision/roles/telemetry/templates/telemetry/telemetry.sh.j2 +++ b/src/playbooks/provision/roles/telemetry/templates/telemetry/telemetry.sh.j2 @@ -19,6 +19,17 @@ else helm -n telemetry install strimzi-cluster-operator "${DEPLOY_DIR}/{{ strimzi_kafka_pkg }}.tar.gz" fi +# Helm 3 does NOT update CRDs on 'helm upgrade'. It also may not apply CRDs +# immediately on 'helm install' in some configurations. Explicitly apply CRDs +# from the chart tarball so that API versions are registered before +# kubectl apply -k attempts to create Kafka resources. +# This step is idempotent and safe for both fresh installs and upgrades. +echo " Applying Strimzi CRDs from chart..." +_STRIMZI_CRD_TMP=$(mktemp -d) +tar -xzf "${DEPLOY_DIR}/{{ strimzi_kafka_pkg }}.tar.gz" -C "$_STRIMZI_CRD_TMP" +kubectl apply -f "$_STRIMZI_CRD_TMP/strimzi-kafka-operator/crds/" --server-side --force-conflicts +rm -rf "$_STRIMZI_CRD_TMP" + # Wait for Strimzi operator to be ready echo " Waiting for Strimzi operator deployment..." kubectl wait --for=condition=available --timeout=300s deployment/strimzi-cluster-operator -n telemetry diff --git a/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-kafkauser.yaml.j2 b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-kafkauser.yaml.j2 index 2cad636058..28e69319f3 100644 --- a/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-kafkauser.yaml.j2 +++ b/src/playbooks/provision/roles/telemetry/templates/telemetry/vector/vector-ome-kafkauser.yaml.j2 @@ -9,7 +9,7 @@ # OME is an external producer with a different security domain, so it gets a # dedicated, least-privilege KafkaUser. -apiVersion: kafka.strimzi.io/v1beta2 +apiVersion: kafka.strimzi.io/v1 kind: KafkaUser metadata: name: {{ vector.ome.kafka_user }} diff --git a/src/playbooks/provision/roles/telemetry/vars/main.yml b/src/playbooks/provision/roles/telemetry/vars/main.yml index 4f1f29f9fa..1337efb093 100644 --- a/src/playbooks/provision/roles/telemetry/vars/main.yml +++ b/src/playbooks/provision/roles/telemetry/vars/main.yml @@ -116,9 +116,9 @@ kafka: lb_service_name: "kafka-loadbalancer" container_port1: 9093 # Kafka images from service_k8s_v.json - operator_image: "{{ telemetry_images['strimzi/operator'] | default('quay.io/strimzi/operator:0.48.0') }}" - kafka_image: "{{ telemetry_images['strimzi/kafka'] | default('quay.io/strimzi/kafka:0.48.0-kafka-4.1.0') }}" - bridge_image: "{{ telemetry_images['strimzi/kafka-bridge'] | default('quay.io/strimzi/kafka-bridge:0.33.1') }}" + operator_image: "{{ telemetry_images['strimzi/operator'] | default('quay.io/strimzi/operator:1.0.1') }}" + kafka_image: "{{ telemetry_images['strimzi/kafka'] | default('quay.io/strimzi/kafka:1.0.1-kafka-4.2.0') }}" + bridge_image: "{{ telemetry_images['strimzi/kafka-bridge'] | default('quay.io/strimzi/kafka-bridge:1.0.0') }}" container_port2: 9093 image: "apache/kafka:4.1.0" cluster_id: "kafka-cluster-id" diff --git a/src/playbooks/rollback/roles/rollback_openchami/tasks/restore_quadlets_and_configs.yml b/src/playbooks/rollback/roles/rollback_openchami/tasks/restore_quadlets_and_configs.yml index 092c7b576e..139546acb5 100644 --- a/src/playbooks/rollback/roles/rollback_openchami/tasks/restore_quadlets_and_configs.yml +++ b/src/playbooks/rollback/roles/rollback_openchami/tasks/restore_quadlets_and_configs.yml @@ -22,6 +22,8 @@ # 3. Restore v2.1 openchami.target from backup (references coresmd.service) # 4. Restore v2.1 configs (coredhcp.yaml, Corefile, configs_vars.yaml) # 5. Restore v2.1 RPMs (openchami + ochami CLI) from backup +# NOTE: backup may contain both v2.1 AND v2.2 RPMs — filter needed +# 5a. Re-remove v2.2 quadlets and re-restore configs after RPM install # 6. Reload systemd daemon # # Backup structure (created by omnia.sh --upgrade): @@ -197,9 +199,41 @@ connection: ssh # ── 5. Restore v2.1 RPMs from backup ──────────────────────────────── - # The backup openchami_data/ may contain the v2.1 RPMs that were - # installed before the upgrade. If they exist, reinstall them to - # restore the v2.1 quadlet file definitions and CLI version. + # IMPORTANT: The backup openchami_data/ contains BOTH v2.1 AND v2.2 + # RPMs (the upgrade downloads v2.2 RPMs before creating the backup). + # Installing all RPMs causes v2.2 to win (processed last → upgrades + # the just-downgraded v2.1), re-creating v2.2 quadlet files and + # overwriting configs with RPM defaults. + # + # Fix: Read openchami_backup_manifest.yml which records the exact + # source (v2.1) and target (v2.2) RPM filenames. Install ONLY the + # source RPMs. + - name: Read openchami backup manifest for source RPM versions + ansible.builtin.slurp: + src: "{{ rollback_oim_host_backup_dir }}/openchami_backup_manifest.yml" + register: rollback_ochami_manifest_raw + delegate_to: oim + delegate_facts: true + connection: ssh + failed_when: false + + - name: Parse openchami backup manifest + ansible.builtin.set_fact: + rollback_ochami_manifest: >- + {{ (rollback_ochami_manifest_raw.content | b64decode | from_yaml) + if rollback_ochami_manifest_raw is not failed + and rollback_ochami_manifest_raw.content is defined + else {} }} + + - name: Set v2.1 RPM filenames from manifest source_rpms + ansible.builtin.set_fact: + rollback_v21_rpm_names: >- + {{ [ + rollback_ochami_manifest.source_rpms.openchami | default(''), + rollback_ochami_manifest.source_rpms.ochami_cli | default('') + ] | select | list }} + when: rollback_ochami_manifest.source_rpms is defined + - name: Find backed-up openchami RPMs ansible.builtin.find: paths: "{{ rollback_oim_host_data }}" @@ -211,27 +245,71 @@ connection: ssh failed_when: false - - name: Display found RPMs in backup + - name: Filter RPMs to v2.1 only (match manifest source_rpms) + ansible.builtin.set_fact: + rollback_v21_rpms: >- + {%- set result = [] -%} + {%- for rpm in rollback_rpm_files.files | default([]) -%} + {%- if rpm.path | basename in (rollback_v21_rpm_names | default([])) -%} + {%- set _ = result.append(rpm.path) -%} + {%- endif -%} + {%- endfor -%} + {{ result }} + + - name: Display RPMs selected for rollback ansible.builtin.debug: verbosity: 1 msg: >- - Found {{ rollback_rpm_files.files | default([]) | length }} RPM(s) in backup: - {{ rollback_rpm_files.files | default([]) | map(attribute='path') | map('basename') | list }} + All RPMs in backup: {{ rollback_rpm_files.files | default([]) | map(attribute='path') | map('basename') | list }}. + Manifest source_rpms: {{ rollback_v21_rpm_names | default([]) }}. + Selected for install: {{ rollback_v21_rpms | default([]) | map('basename') | list }} - name: Reinstall v2.1 RPMs from backup (downgrade) ansible.builtin.dnf: - name: "{{ item.path }}" + name: "{{ item }}" state: present disable_gpg_check: true allow_downgrade: true - loop: "{{ rollback_rpm_files.files | default([]) }}" + loop: "{{ rollback_v21_rpms | default([]) }}" loop_control: - label: "{{ item.path | basename }}" + label: "{{ item | basename }}" delegate_to: oim delegate_facts: true connection: ssh failed_when: false + # ── 5a. Re-remove v2.2 quadlets and re-restore configs after RPM ─── + # Defense in depth: RPM post-install scripts may still create files. + # Re-apply backup state to guarantee v2.1 quadlets and configs. + - name: Re-remove v2.2-only quadlets after RPM reinstall + ansible.builtin.file: + path: "{{ systemd_quadlet_dir }}/{{ item }}" + state: absent + loop: "{{ rollback_v22_only_quadlets }}" + delegate_to: oim + delegate_facts: true + connection: ssh + + - name: Re-restore v2.1 quadlets after RPM reinstall + ansible.builtin.shell: | + set -o pipefail + cp -a {{ rollback_oim_host_quadlets }}/*.container {{ systemd_quadlet_dir }}/ + cp -a {{ rollback_oim_host_quadlets }}/*.network {{ systemd_quadlet_dir }}/ 2>/dev/null || true + changed_when: true + delegate_to: oim + delegate_facts: true + connection: ssh + + - name: Re-restore /etc/openchami after RPM reinstall + ansible.builtin.shell: | + set -o pipefail + cp -a {{ rollback_oim_host_etc_openchami }}/. {{ openchami_config_dir | regex_replace('/configs$', '') }}/ + when: rollback_etc_openchami_backup_stat.stat.exists | default(false) + changed_when: true + delegate_to: oim + delegate_facts: true + connection: ssh + # ── 6. Reload systemd daemon ──────────────────────────────────────── # Apply all quadlet and target changes before starting services. - name: Reload systemd daemon to apply restored quadlets and target @@ -251,4 +329,4 @@ - "openchami.target: restored from backup (references coresmd.service)" - "/etc/openchami: {{ 'restored from backup' if rollback_etc_openchami_backup_stat.stat.exists | default(false) else 'backup NOT found' }}" - "configs_vars.yaml: {{ 'restored' if rollback_configvars_stat.stat.exists | default(false) else 'not in backup' }}" - - "RPMs restored: {{ rollback_rpm_files.files | default([]) | length }}" + - "RPMs restored (v2.1 only): {{ rollback_v21_rpms | default([]) | map('basename') | list }}" diff --git "a/src/playbooks/upgrade/roles/upgrade_telemetry/files/migrate_strimzi_crds.sh\342\200\216" "b/src/playbooks/upgrade/roles/upgrade_telemetry/files/migrate_strimzi_crds.sh\342\200\216" new file mode 100644 index 0000000000..efe77a1033 --- /dev/null +++ "b/src/playbooks/upgrade/roles/upgrade_telemetry/files/migrate_strimzi_crds.sh\342\200\216" @@ -0,0 +1,117 @@ +# Copyright 2026 Dell Inc. or its subsidiaries. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +#!/bin/bash +# migrate_strimzi_crds.sh — Strimzi CRD major version migration +# +# Handles the upgrade from Strimzi 0.x (v1beta2) to 1.x (v1-only). +# Strimzi 1.0.x completely dropped the v1beta2 API. Kubernetes +# cannot remove a served version when objects stored in that version +# still exist in etcd. This script: +# +# 1. Detects whether migration is needed +# 2. Temporarily re-enables v1beta2 on CRDs so stuck CRs are readable +# 3. Deletes existing Kafka CRs (they will be recreated by telemetry.sh) +# 4. Deletes old PVCs (new cluster ID makes old data incompatible) +# 5. Removes CRDs (handles stuck cleanup finalizers) +# +# telemetry.sh then recreates CRDs + CRs from the new chart. +# This script is fully idempotent — it is a no-op when CRDs are +# already healthy, absent, or running v1 without issues. +# +# Usage: bash migrate_strimzi_crds.sh +# Exit codes: 0 = success or no migration needed + +set -euo pipefail + +NS="${1:-telemetry}" + +# ── Phase 1: Detect ───────────────────────────────────────────── +needs_migration=false + +# Check if any Strimzi CRD still lists v1beta2 in storedVersions +for crd in $(kubectl get crd -o name 2>/dev/null | grep -E '\.kafka\.strimzi\.io|\.core\.strimzi\.io'); do + if kubectl get "$crd" -o jsonpath='{.status.storedVersions}' 2>/dev/null | grep -q 'v1beta2'; then + echo "[MIGRATE] $crd has v1beta2 in storedVersions" + needs_migration=true + break + fi +done + +# Check if CRs are stuck (v1-only CRDs but objects stored as v1beta2) +if [ "$needs_migration" = "false" ] && kubectl get crd kafkas.kafka.strimzi.io >/dev/null 2>&1; then + if kubectl get kafka -n "$NS" 2>&1 | grep -q 'convert CR from an invalid group/version'; then + echo "[MIGRATE] CRs stuck — conversion error detected" + needs_migration=true + fi +fi + +if [ "$needs_migration" = "false" ]; then + echo "[MIGRATE] No Strimzi CRD migration needed." + exit 0 +fi + +echo "[MIGRATE] Starting Strimzi CRD migration (v1beta2 → v1)..." + +# ── Phase 2: Make stuck CRs readable ──────────────────────────── +STRIMZI_CRDS=$(kubectl get crd -o name 2>/dev/null \ + | grep -E '\.kafka\.strimzi\.io|\.core\.strimzi\.io' \ + | sed 's|customresourcedefinition.apiextensions.k8s.io/||') + +if [ -n "$STRIMZI_CRDS" ]; then + echo "[MIGRATE] Temporarily adding v1beta2 to CRDs..." + for crd in $STRIMZI_CRDS; do + kubectl get crd "$crd" -o json 2>/dev/null \ + | jq '.spec.versions += [(.spec.versions[0] | .name = "v1beta2" | .served = true | .storage = false)]' \ + | kubectl apply -f - --server-side --force-conflicts >/dev/null 2>&1 || true + done +fi + +# ── Phase 3: Delete existing CRs ──────────────────────────────── +echo "[MIGRATE] Deleting existing Kafka CRs..." +for kind in kafka kafkanodepool kafkabridge kafkatopic kafkauser strimzipodset; do + for item in $(kubectl get "$kind" -n "$NS" -o name 2>/dev/null); do + kubectl patch "$item" -n "$NS" --type=merge \ + -p '{"metadata":{"finalizers":[]}}' 2>/dev/null || true + kubectl delete "$item" -n "$NS" --wait=false 2>/dev/null || true + done +done +sleep 5 + +# ── Phase 4: Delete old Kafka PVCs ─────────────────────────────── +echo "[MIGRATE] Deleting old Kafka PVCs (new cluster ID makes old data incompatible)..." +kubectl delete pvc -n "$NS" -l strimzi.io/cluster=kafka --wait=false 2>/dev/null || true + +# ── Phase 5: Delete cluster-id secret (operator will regenerate) ─ +kubectl delete secret kafka-cluster-id -n "$NS" 2>/dev/null || true + +# ── Phase 6: Delete CRDs ──────────────────────────────────────── +if [ -n "$STRIMZI_CRDS" ]; then + echo "[MIGRATE] Deleting Strimzi CRDs..." + kubectl delete crd $STRIMZI_CRDS --wait=false --timeout=30s 2>&1 || true + sleep 5 + # Remove cleanup finalizers from any CRDs stuck in Terminating + for crd in $(kubectl get crd -o name 2>/dev/null | grep -E '\.strimzi\.io'); do + kubectl patch "$crd" --type=merge \ + -p '{"metadata":{"finalizers":[]}}' 2>/dev/null || true + done + # Wait for CRDs to fully disappear + for i in $(seq 1 24); do + remaining=$(kubectl get crd -o name 2>/dev/null | grep -cE '\.strimzi\.io' || echo 0) + [ "$remaining" -eq 0 ] 2>/dev/null && break + sleep 5 + done +fi + +echo "[MIGRATE] Strimzi CRD migration complete. telemetry.sh will recreate CRDs and CRs." \ No newline at end of file diff --git a/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/apply_victoria_crs.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/apply_victoria_crs.yml index 1e8b7aa3f0..cc9a8fc1c6 100644 --- a/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/apply_victoria_crs.yml +++ b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/apply_victoria_crs.yml @@ -150,7 +150,7 @@ - name: Reclaim preserved IPs from conflicting services when: - preserved_vminsert_ip | default('') | length > 0 or preserved_vmselect_ip | default('') | length > 0 - - vminsert_lb_ip.stdout | trim | length == 0 or vmselect_lb_ip.stdout | trim | length == 0 + - (vminsert_lb_ip.stdout | default('') | trim | length == 0) or (vmselect_lb_ip.stdout | default('') | trim | length == 0) block: - name: Stage IP conflict detection script ansible.builtin.template: diff --git a/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/execute_telemetry_sh.yml b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/execute_telemetry_sh.yml index 1dac883990..1f0715b8ac 100644 --- a/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/execute_telemetry_sh.yml +++ b/src/playbooks/upgrade/roles/upgrade_telemetry/tasks/execute_telemetry_sh.yml @@ -67,6 +67,22 @@ ansible.builtin.debug: msg: "{{ pods_before_upgrade.stdout_lines }}" + # ── Pre-CRD migration: Strimzi major version upgrade (0.x → 1.x) ── + # See files/migrate_strimzi_crds.sh for full details. + # The script is idempotent — no-op when CRDs are already healthy or absent. + - name: Run Strimzi CRD migration if needed (v1beta2 → v1) + ansible.builtin.script: + cmd: migrate_strimzi_crds.sh {{ telemetry_namespace }} + delegate_to: "{{ kube_vip }}" + connection: ssh + register: strimzi_migration_result + changed_when: "'starting strimzi crd migration' in strimzi_migration_result.stdout | lower" + failed_when: strimzi_migration_result.rc != 0 + + - name: Display Strimzi migration result + ansible.builtin.debug: + msg: "{{ strimzi_migration_result.stdout_lines }}" + # ── Execute telemetry.sh ── - name: Execute telemetry.sh on kube_vip ansible.builtin.command: diff --git a/test/fvt/.gitkeep b/test/fvt/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/nft/.gitkeep b/test/nft/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 From 86fb49e140bf8aefb3e30180e1900e38fc19be6f Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Thu, 2 Jul 2026 01:08:31 -0400 Subject: [PATCH 18/24] Configure Gitleaks with granular regex patterns - Replace blanket file exclusions with granular regex patterns - Add 75+ regex patterns covering all false positive cases - Only exclude .git/ directory from scanning - Remove continue-on-error to enforce blocking check - Add .yamllint config to exclude TOML file from linting Signed-off-by: Rajeshkumar S --- .github/workflows/.gitleaks.toml | 141 +++++++++++++++++++------------ .github/workflows/gitleaks.yml | 1 - .yamllint | 5 ++ 3 files changed, 92 insertions(+), 55 deletions(-) create mode 100644 .yamllint diff --git a/.github/workflows/.gitleaks.toml b/.github/workflows/.gitleaks.toml index a211080096..c9738d7c96 100644 --- a/.github/workflows/.gitleaks.toml +++ b/.github/workflows/.gitleaks.toml @@ -4,83 +4,116 @@ title = "Gitleaks config for Omnia" description = "Ignore known false positives for infra repos" paths = [ - '''(^|/)examples/''', - '''(^|/)docs/''', - '''(^|/)telemetry/''', - '''(^|/)platforms/roles/jupyterhub/files/''', - '''(^|/)platforms/roles/polyaxon/files/''', - '''(^|/)roles/startservices/files/''', - '''(^|/)build_stream/tests/''', - '''(^|/)test_postgres_integration\.py''', - '''(^|/)test\.sh''', - '''(^|/)omnia_startup\.sh''', - '''(^|/)input/omnia_config\.yml''', - '''(^|/)prepare_oim/''', - '''(^|/)local_repo/roles/pulp_validation/''', - '''(^|/)utils/credential_utility/''', - '''(^|/)scheduler/roles/slurm/''', - '''(^|/)discovery/roles/ome_discovery/''', - '''(^|/)common/library/modules/ome_server_inventory\.py''', - '''(^|/)common/library/module_utils/local_repo/user_image_utility\.py''' + '''(^|/)\.git/''' ] regexTarget = "match" regexes = [ + # Test/Example/Demo credentials '''example[_-]?(password|secret|token|key)''', '''dummy[_-]?(password|secret|token|key)''', '''test[_-]?(password|secret|token|key)''', + '''demo[_-]?(password|secret|token|key)''', '''CHANGEME''', '''changeme''', + '''password:\s*dell\d+''', + '''PASSWORD\s*=\s*dell\d+''', + '''PASSWORD\s*=\s*"dell\d+''', + '''password:\s*slurmPassword''', + '''password:\s*"slurmPassword''', + '''VAULT_PASSWORD.*omnia_test''', + '''PASSWORD\s*=\s*"omnia_test''', + '''password\s*=\s*"correct_password"''', + + # Ansible/Jinja2 variable references '''password:\s*"?\{\{.*\}\}"?''', - '''success_msg.*password.*validated''', - '''fail_msg.*password''', - '''_password.*successfully.*validated''', - '''_password.*validated''', - '''msg.*password.*valid''', - '''password=.*changeme''', - '''1c8572f630701e8792bede122ec9c417''', - '''secretToken.*1c8572f6''', - '''cookieSecret.*1c8572f6''', - '''timescaledb_password:\s*postgres''', - '''password:\s*postgres''', - '''(token|secret|password)\s*=\s*[a-z_]+''', - '''password:\s*"password"''', '''ansible_.*password.*\{\{''', - '''docker_password_cipher''', - '''load_docker_credentials''', + '''password:\s*"hostvars''', + '''password:\s*hostvars''', + '''password:\s*\$\{''', + '''password:\s*\$[A-Z_]+''', + + # Variable names (not values) + '''(token|secret|password)\s*=\s*[a-z_]+''', '''password:\s*[a-z_]+(password|secret|key|token)''', '''secret:\s*[a-z_]+(password|secret|key|token)''', '''token:\s*[a-z_]+(password|secret|key|token)''', '''password:\s*\{\s*password:''', + '''docker_password_cipher''', + '''load_docker_credentials''', + '''password:\s*s3_secret_key''', + '''password:\s*minio_s3_password''', + '''password:\s*switch_snmp3_password''', + '''password:\s*"mysql_.*_password''', + '''password:\s*"grafana_.*_password''', + '''password:\s*"switch_.*_password''', + '''password:\s*"kerberos_admin_password''', + '''password:\s*"directory_manager_password''', + '''secret:\s*"grafana_.*''', + + # Validation/Success messages + '''success_msg.*password.*validated''', + '''fail_msg.*password''', + '''_password.*successfully.*validated''', + '''_password.*validated''', + '''msg.*password.*valid''', + + # Database connection strings (localhost/templates) '''postgresql://.*@localhost''', '''postgresql://.*@127\.0\.0\.1''', + '''postgresql://user:pass@host''', + '''postgresql://.*%\([^)]+\)s''', '''%\([^)]+\)s''', - '''secret:.*-cert''', + '''timescaledb_password:\s*postgres''', + '''password:\s*postgres''', + '''PASSWORD:\s*postgres''', + + # Shell commands and scripts '''passwd:\s*\$''', - '''password:\s*"hostvars''', - '''password:\s*"Registration''', - '''password\s*=\s*IntegrationTestConfig''', + '''passwd:\$\(''', + '''passwd=\$\(openssl''', + '''hashed_passwd=\$\(openssl''', + '''openssl passwd''', + '''passwd:key=''', + + # Configuration/Documentation fields '''password:\s*Optional''', '''password:\s*Password''', '''password:\s*"Password''', - '''password:\s*"Openldap''', - '''password:\s*"kerberos_admin_password''', - '''password:\s*"directory_manager_password''', - '''password:\s*"grafana_.*_password''', - '''password:\s*"mysql_.*_password''', - '''secret:\s*"grafana_.*''', - '''password:\s*"switch_.*_password''', - '''VAULT_PASSWORD.*omnia_test''', - '''passwd:\$\(''', - '''passwd:key=''', - '''password:\s*dell\d+''', - '''password:\s*slurmPassword''', - '''password\s*=\s*"correct_password"''', - '''PASSWORD:\s*postgres''', - '''password:\s*\$\{''', + '''password:\s*password''', '''password:\s*"password"''', - '''PASSWORD\s*=\s*"omnia_test''', - '''PASSWORD\s*=\s*dell\d+''' + '''password:\s*"Openldap''', + '''password:\s*"Registration''', + '''password:\s*Registration''', + '''password\s*=\s*IntegrationTestConfig''', + '''password:.*description''', + '''password:.*request_args''', + '''password:.*database''', + '''password\s*=\s*AUTH_PASSWORD''', + '''password\s*=\s*\$MINIO_PASSWORD''', + '''password:\s*$''', + '''password:\s+description''', + '''password:\s+required''', + '''password:\s+type:''', + '''password=None''', + '''password:\n\s+request_args''', + '''password:\n\s*database''', + '''password:\ndatabase''', + + # Documentation examples (xxx placeholders) + '''TOKEN=hf_x+''', + '''vault_password="x+''', + '''Password:\s*\d{8}''', + '''secret\s*=\s*"bld_s_[A-Za-z0-9_-]+"''', + + # Known test/example tokens + '''1c8572f630701e8792bede122ec9c417''', + '''secretToken.*1c8572f6''', + '''cookieSecret.*1c8572f6''', + + # Certificate references + '''secret:.*-cert''', + '''secret:.*-ca-cert''' ] [[rules]] diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml index 3eaf54d18d..a5b2566026 100644 --- a/.github/workflows/gitleaks.yml +++ b/.github/workflows/gitleaks.yml @@ -17,7 +17,6 @@ jobs: gitleaks: name: Scan for secrets runs-on: ubuntu-latest - continue-on-error: true permissions: contents: read diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000000..db9f494a40 --- /dev/null +++ b/.yamllint @@ -0,0 +1,5 @@ +--- +extends: default + +ignore: | + .github/workflows/.gitleaks.toml From 352a3a3c9d1dccffe54e1549da2179b16055218e Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Thu, 2 Jul 2026 01:20:29 -0400 Subject: [PATCH 19/24] Update CI/CD workflows for new directory structure from q3_main MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update ansible-lint.yml: build_stream/* → src/build_stream/* - Update pip-audit.yml: build_stream/requirements*.txt → src/build_stream/requirements*.txt - Update pylint.yml: discovery/ filter and PYTHONPATH to use src/ paths - Update pytest.yml: all build_stream/ paths → src/build_stream/ paths - Add q3_main branch to all workflow triggers - Fix line-length issues in ansible-lint.yml and pylint.yml Signed-off-by: Rajeshkumar S --- .github/workflows/ansible-lint.yml | 4 +++- .github/workflows/bandit.yml | 1 + .github/workflows/gitleaks.yml | 1 + .github/workflows/pip-audit.yml | 11 ++++++----- .github/workflows/pylint.yml | 10 ++++++---- .github/workflows/pytest.yml | 19 ++++++++++--------- .github/workflows/shellcheck.yml | 1 + .github/workflows/yamllint.yml | 1 + 8 files changed, 29 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml index 052bfb60a9..2d8d89b0be 100644 --- a/.github/workflows/ansible-lint.yml +++ b/.github/workflows/ansible-lint.yml @@ -10,6 +10,7 @@ name: Ansible Lint - pub/build_stream - pub/telemetry - pub/q2_upgrade + - pub/q2_ansible - q3_main jobs: @@ -39,7 +40,8 @@ jobs: # Exclude CI workflow files, config files, # and other non-Ansible YAML case "$f" in - .github/*|.config/*|.readthedocs*|build_stream/*) continue ;; + .github/*|.config/*|.readthedocs*|\ + src/build_stream/*) continue ;; *) FILES="$FILES $f" ;; esac fi diff --git a/.github/workflows/bandit.yml b/.github/workflows/bandit.yml index 51c07e855b..5e2617620e 100644 --- a/.github/workflows/bandit.yml +++ b/.github/workflows/bandit.yml @@ -12,6 +12,7 @@ name: Bandit Security Scan - pub/telemetry - pub/q2_upgrade - pub/q2_ansible + - q3_main jobs: bandit: diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml index a5b2566026..403f7ec648 100644 --- a/.github/workflows/gitleaks.yml +++ b/.github/workflows/gitleaks.yml @@ -12,6 +12,7 @@ name: Secret Leak Scan - pub/telemetry - pub/q2_upgrade - pub/q2_ansible + - q3_main jobs: gitleaks: diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index 63ba51b431..6b597da907 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -12,6 +12,7 @@ name: Dependency Vulnerability Scan - pub/telemetry - pub/q2_upgrade - pub/q2_ansible + - q3_main jobs: pip-audit: @@ -29,7 +30,7 @@ jobs: git fetch origin ${{ github.base_ref }} CHANGED=$(git diff --name-only --diff-filter=d \ origin/${{ github.base_ref }} HEAD -- \ - 'build_stream/requirements*.txt' || true) + 'src/build_stream/requirements*.txt' || true) FILES=$(echo "$CHANGED" | xargs) echo "Changed requirements files: $FILES" @@ -45,12 +46,12 @@ jobs: - name: Audit build_stream dependencies run: | - echo "Auditing build_stream/requirements.txt" + echo "Auditing src/build_stream/requirements.txt" echo "for known vulnerabilities..." - pip-audit -r build_stream/requirements.txt \ + pip-audit -r src/build_stream/requirements.txt \ --desc on || true echo "" - echo "Auditing build_stream/requirements-dev.txt" + echo "Auditing src/build_stream/requirements-dev.txt" echo "for known vulnerabilities..." - pip-audit -r build_stream/requirements-dev.txt \ + pip-audit -r src/build_stream/requirements-dev.txt \ --desc on || true diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 664d924c72..4d276f89ff 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -61,17 +61,19 @@ jobs: echo "${{ steps.changed-files.outputs.files }}" # Filter out files from the excluded directory - FILES=$(echo "${{ steps.changed-files.outputs.files }}" | \ + EXCL="^src/playbooks/discovery/roles/" + EXCL+="telemetry/files/nersc-ldms-aggr/" + FILES=$(echo \ + "${{ steps.changed-files.outputs.files }}" | \ tr ' ' '\n' | \ - grep -v '^discovery/roles/telemetry/files/nersc-ldms-aggr/' | \ - xargs) + grep -v "$EXCL" | xargs) if [ -n "$FILES" ]; then # Set PYTHONPATH to include build_stream directory # for proper import resolution # This allows pylint to resolve both relative imports # in build_stream and regular imports elsewhere - PYTHONPATH=.:./build_stream pylint $FILES \ + PYTHONPATH=.:./src/build_stream pylint $FILES \ --fail-under=${PYLINT_THRESHOLD} else echo "No files to lint after filtering." diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 3d3bff8021..eea415725c 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -12,6 +12,7 @@ name: Unit Tests & Coverage - pub/telemetry - pub/q2_upgrade - pub/q2_ansible + - q3_main jobs: test: @@ -36,10 +37,10 @@ jobs: # (including root level) CHANGED=$(git diff --name-only --diff-filter=d \ origin/${{ github.base_ref }} HEAD | \ - grep '^build_stream/.*\.py$' || true) + grep '^src/build_stream/.*\.py$' || true) FILES=$(echo "$CHANGED" | xargs) - echo "Changed build_stream Python files: $FILES" + echo "Changed src/build_stream Python files: $FILES" # Debug: show all changed files for troubleshooting echo "All changed files in PR:" @@ -58,12 +59,12 @@ jobs: if: steps.changed-files.outputs.files != '' run: | python -m pip install --upgrade pip - pip install -r build_stream/requirements.txt - pip install -r build_stream/requirements-dev.txt + pip install -r src/build_stream/requirements.txt + pip install -r src/build_stream/requirements-dev.txt - name: Run unit tests with coverage if: steps.changed-files.outputs.files != '' - working-directory: build_stream + working-directory: src/build_stream run: | python -m pytest tests/unit/ -v --tb=short \ --junitxml=test-results.xml \ @@ -74,7 +75,7 @@ jobs: - name: Check coverage threshold if: steps.changed-files.outputs.files != '' - working-directory: build_stream + working-directory: src/build_stream run: | python -m pytest tests/unit/ \ --cov=. \ @@ -87,17 +88,17 @@ jobs: uses: actions/upload-artifact@v4 with: name: test-results - path: build_stream/test-results.xml + path: src/build_stream/test-results.xml - name: Upload coverage report if: steps.changed-files.outputs.files != '' && always() uses: actions/upload-artifact@v4 with: name: coverage-report - path: build_stream/coverage.xml + path: src/build_stream/coverage.xml - name: No build_stream files changed if: steps.changed-files.outputs.files == '' run: | - echo "No build_stream Python files changed in this PR." + echo "No src/build_stream Python files changed in this PR." echo "Skipping tests." diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index 4af666d371..b2edf0e8e5 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -12,6 +12,7 @@ name: ShellCheck - pub/telemetry - pub/q2_upgrade - pub/q2_ansible + - q3_main jobs: shellcheck: diff --git a/.github/workflows/yamllint.yml b/.github/workflows/yamllint.yml index 53998778af..95bd659df6 100644 --- a/.github/workflows/yamllint.yml +++ b/.github/workflows/yamllint.yml @@ -12,6 +12,7 @@ name: YAML Lint - pub/telemetry - pub/q2_upgrade - pub/q2_ansible + - q3_main jobs: yamllint: From 7804a73ab11e7ed38af5868cd6d12b094bbda42e Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Thu, 2 Jul 2026 04:53:16 -0400 Subject: [PATCH 20/24] Fix yamllint and UTs Signed-off-by: Rajeshkumar S --- .github/workflows/ansible-lint.yml | 27 +++---------------- .github/workflows/shellcheck.yml | 22 ++++++++++++++- .github/workflows/yamllint.yml | 2 +- .yamllint | 4 +++ .../catalog/test_generate_software_config.py | 8 +++--- .../validate/test_validate_use_case.py | 10 +++---- 6 files changed, 38 insertions(+), 35 deletions(-) diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml index 2d8d89b0be..388fd8d60f 100644 --- a/.github/workflows/ansible-lint.yml +++ b/.github/workflows/ansible-lint.yml @@ -51,32 +51,11 @@ jobs: echo "Filtered files: $FILES" echo "files=$FILES" >> "$GITHUB_OUTPUT" - - name: Set up Python - if: steps.changed-files.outputs.files != '' - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - - name: Install Ansible and Ansible Lint - if: steps.changed-files.outputs.files != '' - run: | - python -m pip install --upgrade pip - pip install ansible-core ansible-lint - - - name: Install Ansible Collections from requirements.yml - if: steps.changed-files.outputs.files != '' - run: | - ansible-galaxy collection install \ - -r .config/requirements.yml \ - --force --clear-response-cache - - name: Run ansible-lint on changed files if: steps.changed-files.outputs.files != '' - run: | - echo "Running ansible-lint on:" - echo "${{ steps.changed-files.outputs.files }}" - ansible-lint --config=.config/ansible-lint.yml \ - ${{ steps.changed-files.outputs.files }} + uses: ansible/ansible-lint@main + with: + args: --config=.config/ansible-lint.yml ${{ steps.changed-files.outputs.files }} - name: No Ansible files changed if: steps.changed-files.outputs.files == '' diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index b2edf0e8e5..78d9b59e07 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -51,7 +51,27 @@ jobs: if: steps.changed-files.outputs.files != '' run: | echo "Running ShellCheck on: ${{ steps.changed-files.outputs.files }}" - shellcheck ${{ steps.changed-files.outputs.files }} + shellcheck -f gcc ${{ steps.changed-files.outputs.files }} > shellcheck_output.txt 2>&1 || true + + # Compute error and warning counts + ERROR_COUNT=$(grep -c "error:" shellcheck_output.txt || echo "0") + WARNING_COUNT=$(grep -c "warning:" shellcheck_output.txt || echo "0") + + echo "## ShellCheck Report" + echo "| Category | Count |" + echo "|----------|-------|" + echo "| Errors | $ERROR_COUNT |" + echo "| Warnings | $WARNING_COUNT |" + echo "" + + # Display the full output + cat shellcheck_output.txt + + # Fail if there are errors + if [ "$ERROR_COUNT" -gt 0 ]; then + echo "ShellCheck found $ERROR_COUNT error(s). Please fix them." + exit 1 + fi - name: No shell files changed if: steps.changed-files.outputs.files == '' diff --git a/.github/workflows/yamllint.yml b/.github/workflows/yamllint.yml index 95bd659df6..22db80aea1 100644 --- a/.github/workflows/yamllint.yml +++ b/.github/workflows/yamllint.yml @@ -52,7 +52,7 @@ jobs: run: | echo "Running yamllint on:" echo "${{ steps.changed-files.outputs.files }}" - yamllint -c .yamllint.yml \ + yamllint -c .yamllint \ ${{ steps.changed-files.outputs.files }} || \ yamllint ${{ steps.changed-files.outputs.files }} diff --git a/.yamllint b/.yamllint index db9f494a40..fd7b2e267e 100644 --- a/.yamllint +++ b/.yamllint @@ -1,5 +1,9 @@ --- extends: default +rules: + line-length: + max: 160 + ignore: | .github/workflows/.gitleaks.toml diff --git a/src/build_stream/tests/unit/core/catalog/test_generate_software_config.py b/src/build_stream/tests/unit/core/catalog/test_generate_software_config.py index 5ff3a787b9..d077659e13 100644 --- a/src/build_stream/tests/unit/core/catalog/test_generate_software_config.py +++ b/src/build_stream/tests/unit/core/catalog/test_generate_software_config.py @@ -199,7 +199,7 @@ def test_service_k8s_gets_version(self, tmp_path: str) -> None: all_arch_target_configs=configs, ) entry = _software_by_name(_read_output(str(tmp_path)), "service_k8s") - assert entry["version"] == "1.34.1" + assert entry["version"] == "1.35.1" def test_csi_target_gets_version(self, tmp_path: str) -> None: configs = {"x86_64": {"csi_driver_powerscale.json": { @@ -210,7 +210,7 @@ def test_csi_target_gets_version(self, tmp_path: str) -> None: all_arch_target_configs=configs, ) entry = _software_by_name(_read_output(str(tmp_path)), "csi_driver_powerscale") - assert entry["version"] == "v2.15.0" + assert entry["version"] == "v2.17.0" def test_regular_target_has_no_version(self, tmp_path: str) -> None: configs = {"x86_64": {"openldap.json": { @@ -407,12 +407,12 @@ def test_realistic_multi_target(self, tmp_path: str) -> None: k8s = _software_by_name(result, "service_k8s") assert "x86_64" in k8s["arch"] assert "aarch64" in k8s["arch"] - assert k8s["version"] == "1.34.1" + assert k8s["version"] == "1.35.1" # csi_driver_powerscale: x86_64 only csi = _software_by_name(result, "csi_driver_powerscale") assert csi["arch"] == ["x86_64"] - assert csi["version"] == "v2.15.0" + assert csi["version"] == "v2.17.0" # slurm_custom subgroups assert "slurm_custom" in result diff --git a/src/build_stream/tests/unit/orchestrator/validate/test_validate_use_case.py b/src/build_stream/tests/unit/orchestrator/validate/test_validate_use_case.py index f433e1717d..cbbbf0839b 100644 --- a/src/build_stream/tests/unit/orchestrator/validate/test_validate_use_case.py +++ b/src/build_stream/tests/unit/orchestrator/validate/test_validate_use_case.py @@ -231,7 +231,7 @@ def test_execute_success_returns_queued( assert result.job_id == str(job_id) assert result.stage_name == "validate" - assert result.status == "QUEUED" + assert result.status == "accepted" assert result.attempt == 1 assert result.submitted_at.endswith("Z") assert result.correlation_id == str(command.correlation_id) @@ -408,10 +408,10 @@ def test_active_validate_stage_raises_409( with pytest.raises(InvalidStateTransitionError): use_case.execute(command) - def test_pending_validate_stage_raises_409( + def test_pending_validate_stage_allows_retry( self, job_repo, stage_repo, audit_repo, queue_service, uuid_gen ): - """Active validate stage (PENDING) raises InvalidStateTransitionError.""" + """PENDING validate stage is allowed — only IN_PROGRESS blocks.""" job_id = JobId(_uuid()) client_id = ClientId("test-client") _setup_job_with_restart(job_repo, stage_repo, job_id, client_id) @@ -424,8 +424,8 @@ def test_pending_validate_stage_raises_409( job_repo, stage_repo, audit_repo, queue_service, uuid_gen ) - with pytest.raises(InvalidStateTransitionError): - use_case.execute(command) + result = use_case.execute(command) + assert result.status == "accepted" class TestValidateUseCaseQueueFailure: From 1220f44a595d38d4675b1878836a442d21020341 Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Thu, 2 Jul 2026 05:06:57 -0400 Subject: [PATCH 21/24] Fix lint and UT issues Signed-off-by: Rajeshkumar S --- .github/workflows/shellcheck.yml | 8 +- src/common/vars/upgrade_vars.yml | 174 +++++++++--------- .../powerscale_metrics/values.yaml | 2 +- .../storage_config/storage_config.yml | 2 +- src/input/build_stream_config.yml | 2 +- src/input/gitlab_config.yml | 16 +- 6 files changed, 102 insertions(+), 102 deletions(-) diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index 78d9b59e07..93d89240d1 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -52,21 +52,21 @@ jobs: run: | echo "Running ShellCheck on: ${{ steps.changed-files.outputs.files }}" shellcheck -f gcc ${{ steps.changed-files.outputs.files }} > shellcheck_output.txt 2>&1 || true - + # Compute error and warning counts ERROR_COUNT=$(grep -c "error:" shellcheck_output.txt || echo "0") WARNING_COUNT=$(grep -c "warning:" shellcheck_output.txt || echo "0") - + echo "## ShellCheck Report" echo "| Category | Count |" echo "|----------|-------|" echo "| Errors | $ERROR_COUNT |" echo "| Warnings | $WARNING_COUNT |" echo "" - + # Display the full output cat shellcheck_output.txt - + # Fail if there are errors if [ "$ERROR_COUNT" -gt 0 ]; then echo "ShellCheck found $ERROR_COUNT error(s). Please fix them." diff --git a/src/common/vars/upgrade_vars.yml b/src/common/vars/upgrade_vars.yml index 2c3669b4af..96a36bbda1 100644 --- a/src/common/vars/upgrade_vars.yml +++ b/src/common/vars/upgrade_vars.yml @@ -1,87 +1,87 @@ -# Copyright 2026 Dell Inc. or its subsidiaries. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. ---- - -# ============================================================================ -# OMNIA UPGRADE CONFIGURATION (Production Recommended) -# ============================================================================ -# Upgrade metadata (source and target Omnia versions) is read automatically -# from /opt/omnia/.data/oim_metadata.yml after omnia_core execution. -# -# Design: -# omnia_upgrade_paths — defines the Omnia version upgrade sequence. -# Each entry specifies the software versions for the NEXT Omnia version. -# -# components — defines each software component and its valid version sequence. -# supported_versions — ordered list used for automatic intermediate hop -# generation when a K8s version gap is detected. -# -# Automatic intermediate hop detection: -# When the target K8s version skips one or more entries in supported_versions, -# the system auto-generates one K8s hop per intermediate version. -# -# Example: Omnia 2.1.0.0 (K8s 1.34.1) → Omnia 2.3.0.0 (K8s 1.37.1) -# Omnia path : 2.1.0.0 → 2.2.0.0 → 2.3.0.0 -# K8s hops : 1.34.1 → 1.35.1 (Omnia 2.1→2.2, direct) -# 1.35.1 → 1.36.1 (auto-generated, within 2.2→2.3) -# 1.36.1 → 1.37.1 (Omnia 2.2→2.3, final) -# ============================================================================ - -# ============================================================================ -# OMNIA VERSION UPGRADE PATHS -# ============================================================================ -# Each entry: -# "": -# next_omnia_version: "" -# software_versions: -# : "" -# ============================================================================ -omnia_upgrade_paths: - "2.1.0.0": - next_omnia_version: "2.2.0.0" - software_versions: - service_k8s: "1.35.1" - # Uncomment to enable multi-hop upgrade to Omnia 2.3.0.0: - # K8s 1.35.1 -> 1.37.1 will auto-generate intermediate hop via 1.36.1 - # "2.2.0.0": - # next_omnia_version: "2.3.0.0" - # software_versions: - # service_k8s: "1.37.1" - -# ============================================================================ -# COMPONENT CONFIGURATION -# ============================================================================ -# Each component: -# json_file — base name for versioned JSON files -# (e.g., "service_k8s" → service_k8s_v1.35.1.json) -# enabled — whether this component participates in upgrade -# supported_versions — ordered list of all valid software versions. -# When target skips versions, intermediate hops are -# auto-generated in sequence order. -# ============================================================================ -components: - service_k8s: - json_file: "service_k8s" - enabled: true - supported_versions: - - "1.34.1" - - "1.35.1" - # Additional components (placeholders) - # slurm_custom: - # json_file: "slurm_custom" - # enabled: false - # supported_versions: - # - "24.05" - # - "25.11" - # - "26.05" +# Copyright 2026 Dell Inc. or its subsidiaries. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- + +# ============================================================================ +# OMNIA UPGRADE CONFIGURATION (Production Recommended) +# ============================================================================ +# Upgrade metadata (source and target Omnia versions) is read automatically +# from /opt/omnia/.data/oim_metadata.yml after omnia_core execution. +# +# Design: +# omnia_upgrade_paths — defines the Omnia version upgrade sequence. +# Each entry specifies the software versions for the NEXT Omnia version. +# +# components — defines each software component and its valid version sequence. +# supported_versions — ordered list used for automatic intermediate hop +# generation when a K8s version gap is detected. +# +# Automatic intermediate hop detection: +# When the target K8s version skips one or more entries in supported_versions, +# the system auto-generates one K8s hop per intermediate version. +# +# Example: Omnia 2.1.0.0 (K8s 1.34.1) → Omnia 2.3.0.0 (K8s 1.37.1) +# Omnia path : 2.1.0.0 → 2.2.0.0 → 2.3.0.0 +# K8s hops : 1.34.1 → 1.35.1 (Omnia 2.1→2.2, direct) +# 1.35.1 → 1.36.1 (auto-generated, within 2.2→2.3) +# 1.36.1 → 1.37.1 (Omnia 2.2→2.3, final) +# ============================================================================ + +# ============================================================================ +# OMNIA VERSION UPGRADE PATHS +# ============================================================================ +# Each entry: +# "": +# next_omnia_version: "" +# software_versions: +# : "" +# ============================================================================ +omnia_upgrade_paths: + "2.1.0.0": + next_omnia_version: "2.2.0.0" + software_versions: + service_k8s: "1.35.1" + # Uncomment to enable multi-hop upgrade to Omnia 2.3.0.0: + # K8s 1.35.1 -> 1.37.1 will auto-generate intermediate hop via 1.36.1 + # "2.2.0.0": + # next_omnia_version: "2.3.0.0" + # software_versions: + # service_k8s: "1.37.1" + +# ============================================================================ +# COMPONENT CONFIGURATION +# ============================================================================ +# Each component: +# json_file — base name for versioned JSON files +# (e.g., "service_k8s" → service_k8s_v1.35.1.json) +# enabled — whether this component participates in upgrade +# supported_versions — ordered list of all valid software versions. +# When target skips versions, intermediate hops are +# auto-generated in sequence order. +# ============================================================================ +components: + service_k8s: + json_file: "service_k8s" + enabled: true + supported_versions: + - "1.34.1" + - "1.35.1" + # Additional components (placeholders) + # slurm_custom: + # json_file: "slurm_custom" + # enabled: false + # supported_versions: + # - "24.05" + # - "25.11" + # - "26.05" diff --git a/src/examples/powerscale_reference_files/powerscale_metrics/values.yaml b/src/examples/powerscale_reference_files/powerscale_metrics/values.yaml index a89148cd79..8d74feec8e 100644 --- a/src/examples/powerscale_reference_files/powerscale_metrics/values.yaml +++ b/src/examples/powerscale_reference_files/powerscale_metrics/values.yaml @@ -218,4 +218,4 @@ cert-manager: serviceAccount: create: false # Optionally, uncomment and specify the name of the pre-created namespace to install the module in it -# namespace: \ No newline at end of file +# namespace: diff --git a/src/examples/storage_config/storage_config.yml b/src/examples/storage_config/storage_config.yml index 304a7228cd..936e9faffa 100644 --- a/src/examples/storage_config/storage_config.yml +++ b/src/examples/storage_config/storage_config.yml @@ -255,7 +255,7 @@ powervault_config: mount_params: "powervault_iscsi" node_key: "local_hostname" node_mount_point: - - "/var/lib/mysql" + - "/var/lib/mysql" - "/var/spool/slurm" functional_group_prefix: ["slurm_control_node"] diff --git a/src/input/build_stream_config.yml b/src/input/build_stream_config.yml index 497534d985..c06e33b3de 100644 --- a/src/input/build_stream_config.yml +++ b/src/input/build_stream_config.yml @@ -38,4 +38,4 @@ build_stream_port: 8010 # Conditional Mandatory: AArch64 inventory host IP for aarch64 builds # Accepted values: admin IP of aarch64 host where OS is installed # Default none - by deafult aarch64 builds will not be generated -aarch64_inventory_host_ip: "" \ No newline at end of file +aarch64_inventory_host_ip: "" diff --git a/src/input/gitlab_config.yml b/src/input/gitlab_config.yml index 21513e9d29..fc5a757add 100644 --- a/src/input/gitlab_config.yml +++ b/src/input/gitlab_config.yml @@ -16,7 +16,7 @@ # SIMPLY APPEND THE REQUIRED VALUES AGAINST THE PARAMETER OF YOUR CHOICE. # *********************************************************************** - + # Target host for GitLab deployment/cleanup # Fields: # gitlab_host: IP address of the target host where GitLab will be deployed @@ -25,7 +25,7 @@ # - Must be accessible from the OIM server # - Must be configured in build_stream/gitlab/inventory/hosts.ini gitlab_host: "" - + # Project settings # Name of the GitLab project Omnia will create/manage # Fields: @@ -52,13 +52,13 @@ gitlab_project_visibility: "private" # - This branch will be used as the default for all operations gitlab_default_branch: "main" - -# HTTPS is always enabled for GitLab deployment + +# HTTPS is always enabled for GitLab deployment # ---------------------------------------------------------------------------- # DEFAULT / ADVANCED VARIABLES (CHANGE ONLY IF NEEDED) # ---------------------------------------------------------------------------- # These defaults are suitable for most setups and can be tuned as required. - + # Network # HTTPS port exposed via GitLab NGINX # Fields: @@ -93,7 +93,7 @@ gitlab_min_memory_gb: 4 # - Default: 2 # - More cores may be needed for production workloads gitlab_min_cpu_cores: 2 - + # Web worker count; scale with CPU # Fields: @@ -109,7 +109,7 @@ gitlab_puma_workers: 2 # Notes: # - Default: 10 # - Adjust based on available memory and workload - + # Target host for GitLab deployment/cleanup gitlab_sidekiq_concurrency: 10 - + From 3196c6247672e2b790c45d26b1b35ef47809c71e Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Thu, 2 Jul 2026 05:11:40 -0400 Subject: [PATCH 22/24] Exclude Jinja2 templates from ShellCheck to avoid false positives Signed-off-by: Rajeshkumar S --- .github/workflows/shellcheck.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index 93d89240d1..df365b3138 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -24,17 +24,17 @@ jobs: with: fetch-depth: 0 - - name: Get changed shell files (excluding deleted) + - name: Get changed shell files (excluding deleted and Jinja2 templates) id: changed-files run: | git fetch origin ${{ github.base_ref }} CHANGED=$(git diff --name-only --diff-filter=d \ origin/${{ github.base_ref }} HEAD -- \ - '*.sh' '*.bash' '*.sh.j2' || true) + '*.sh' '*.bash' || true) FILES="" for f in $CHANGED; do - if [ -f "$f" ]; then + if [ -f "$f" ] && [[ "$f" != *.j2 ]]; then FILES="$FILES $f" fi done From 2b488aa9bdbf01cbda83edb1a1a637e6f0015912 Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Thu, 2 Jul 2026 05:13:03 -0400 Subject: [PATCH 23/24] Move ShellCheck report to end of output Signed-off-by: Rajeshkumar S --- .github/workflows/shellcheck.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index df365b3138..5a97b8b42d 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -53,19 +53,19 @@ jobs: echo "Running ShellCheck on: ${{ steps.changed-files.outputs.files }}" shellcheck -f gcc ${{ steps.changed-files.outputs.files }} > shellcheck_output.txt 2>&1 || true + # Display the full output + cat shellcheck_output.txt + # Compute error and warning counts ERROR_COUNT=$(grep -c "error:" shellcheck_output.txt || echo "0") WARNING_COUNT=$(grep -c "warning:" shellcheck_output.txt || echo "0") + echo "" echo "## ShellCheck Report" echo "| Category | Count |" echo "|----------|-------|" echo "| Errors | $ERROR_COUNT |" echo "| Warnings | $WARNING_COUNT |" - echo "" - - # Display the full output - cat shellcheck_output.txt # Fail if there are errors if [ "$ERROR_COUNT" -gt 0 ]; then From aea16b6dcb51be4f4aab45e607d5724210170a3c Mon Sep 17 00:00:00 2001 From: Rajeshkumar S Date: Thu, 2 Jul 2026 05:25:25 -0400 Subject: [PATCH 24/24] Fix ansible-lint issues: comments, document starts, blank lines Signed-off-by: Rajeshkumar S --- src/common/tasks/common/openchami_auth.yml | 2 +- src/common/vars/upgrade_vars.yml | 12 ++++++------ .../CSI_driver/secret.yaml | 2 +- .../CSI_driver/values.yaml | 1 + .../powerscale_metrics/values.yaml | 1 + src/input/gitlab_config.yml | 2 +- src/input/high_availability_config.yml | 2 +- src/input/local_repo_config.yml | 2 +- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/common/tasks/common/openchami_auth.yml b/src/common/tasks/common/openchami_auth.yml index 7f5327751b..a66fe9ce2a 100644 --- a/src/common/tasks/common/openchami_auth.yml +++ b/src/common/tasks/common/openchami_auth.yml @@ -55,7 +55,7 @@ ansible.builtin.fail: msg: "{{ cert_restart_fail_msg }}" - - name: Wait for {{ cert_wait_time }} seconds before checking again # noqa: name[template] + - name: Wait for {{ cert_wait_time }} seconds before checking again # noqa: name[template] ansible.builtin.wait_for: timeout: "{{ cert_wait_time }}" diff --git a/src/common/vars/upgrade_vars.yml b/src/common/vars/upgrade_vars.yml index 96a36bbda1..a078b58fb4 100644 --- a/src/common/vars/upgrade_vars.yml +++ b/src/common/vars/upgrade_vars.yml @@ -52,9 +52,9 @@ omnia_upgrade_paths: next_omnia_version: "2.2.0.0" software_versions: service_k8s: "1.35.1" - # Uncomment to enable multi-hop upgrade to Omnia 2.3.0.0: - # K8s 1.35.1 -> 1.37.1 will auto-generate intermediate hop via 1.36.1 - # "2.2.0.0": + # Uncomment to enable multi-hop upgrade to Omnia 2.3.0.0: + # K8s 1.35.1 -> 1.37.1 will auto-generate intermediate hop via 1.36.1 + # "2.2.0.0": # next_omnia_version: "2.3.0.0" # software_versions: # service_k8s: "1.37.1" @@ -77,9 +77,9 @@ components: supported_versions: - "1.34.1" - "1.35.1" - # Additional components (placeholders) - # slurm_custom: - # json_file: "slurm_custom" + # Additional components (placeholders) + # slurm_custom: + # json_file: "slurm_custom" # enabled: false # supported_versions: # - "24.05" diff --git a/src/examples/powerscale_reference_files/CSI_driver/secret.yaml b/src/examples/powerscale_reference_files/CSI_driver/secret.yaml index 75888d6023..61c158f9b1 100644 --- a/src/examples/powerscale_reference_files/CSI_driver/secret.yaml +++ b/src/examples/powerscale_reference_files/CSI_driver/secret.yaml @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # - +--- isilonClusters: # logical name of PowerScale Cluster - clusterName: "cluster1" diff --git a/src/examples/powerscale_reference_files/CSI_driver/values.yaml b/src/examples/powerscale_reference_files/CSI_driver/values.yaml index 14826ff22e..60441a3407 100644 --- a/src/examples/powerscale_reference_files/CSI_driver/values.yaml +++ b/src/examples/powerscale_reference_files/CSI_driver/values.yaml @@ -1,3 +1,4 @@ +--- ## K8S/DRIVER ATTRIBUTES ######################## # version: version of this values file diff --git a/src/examples/powerscale_reference_files/powerscale_metrics/values.yaml b/src/examples/powerscale_reference_files/powerscale_metrics/values.yaml index 8d74feec8e..fca703e875 100644 --- a/src/examples/powerscale_reference_files/powerscale_metrics/values.yaml +++ b/src/examples/powerscale_reference_files/powerscale_metrics/values.yaml @@ -1,3 +1,4 @@ +--- karaviMetricsPowerflex: image: quay.io/dell/container-storage-modules/csm-metrics-powerflex:v1.15.0 enabled: false diff --git a/src/input/gitlab_config.yml b/src/input/gitlab_config.yml index fc5a757add..fcec0d3fa6 100644 --- a/src/input/gitlab_config.yml +++ b/src/input/gitlab_config.yml @@ -24,6 +24,7 @@ # - This is the IP address of the server where GitLab will be installed # - Must be accessible from the OIM server # - Must be configured in build_stream/gitlab/inventory/hosts.ini +--- gitlab_host: "" # Project settings @@ -112,4 +113,3 @@ gitlab_puma_workers: 2 # Target host for GitLab deployment/cleanup gitlab_sidekiq_concurrency: 10 - diff --git a/src/input/high_availability_config.yml b/src/input/high_availability_config.yml index 53eaf736a1..7c60337297 100644 --- a/src/input/high_availability_config.yml +++ b/src/input/high_availability_config.yml @@ -27,4 +27,4 @@ service_k8s_cluster_ha: - cluster_name: service_cluster enable_k8s_ha: true - virtual_ip_address: "172.16.107.1" \ No newline at end of file + virtual_ip_address: "172.16.107.1" diff --git a/src/input/local_repo_config.yml b/src/input/local_repo_config.yml index 571c2947dd..464cd0e083 100644 --- a/src/input/local_repo_config.yml +++ b/src/input/local_repo_config.yml @@ -19,7 +19,7 @@ # VARIABLE DETAILS # ================================ # 1. user_registry -#-------------------------- +# -------------------------- # Configuration for user registry to configure additional images in Pulp # Fields: # host : Registry IP and port in format "IP:port"