fix: name talos iso deterministically
This commit is contained in:
parent
a95ce14f82
commit
8a900ed28c
|
|
@ -25,11 +25,12 @@ resource "null_resource" "stage_talos_image" {
|
||||||
image_url = local.talos_iso_download_url
|
image_url = local.talos_iso_download_url
|
||||||
storage = var.talos_image_storage
|
storage = var.talos_image_storage
|
||||||
talos_version = var.talos_version
|
talos_version = var.talos_version
|
||||||
|
filename = "talos-${trimprefix(var.talos_version, "v")}-${substr(var.talos_factory_schematic_id, 0, 12)}-${var.talos_image_architecture}.iso"
|
||||||
}
|
}
|
||||||
|
|
||||||
provisioner "local-exec" {
|
provisioner "local-exec" {
|
||||||
interpreter = ["python", "-c"]
|
interpreter = ["python", "-c"]
|
||||||
command = "import subprocess; subprocess.run(['python', r'${path.module}/scripts/stage_talos_image.py', '--api-url', '${var.proxmox_api_url}', '--api-token', '${var.proxmox_api_token}', '--node', '${each.value}', '--storage', '${var.talos_image_storage}', '--image-url', '${local.talos_iso_download_url}'], check=True)"
|
command = "import subprocess; subprocess.run(['python', r'${path.module}/scripts/stage_talos_image.py', '--api-url', '${var.proxmox_api_url}', '--api-token', '${var.proxmox_api_token}', '--node', '${each.value}', '--storage', '${var.talos_image_storage}', '--image-url', '${local.talos_iso_download_url}', '--filename', '${self.triggers.filename}'], check=True)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,7 @@ def api_request(base_url, token, method, path, data=None):
|
||||||
return json.loads(response.read().decode())
|
return json.loads(response.read().decode())
|
||||||
|
|
||||||
|
|
||||||
def ensure_image(base_url, token, node, storage, image_url):
|
def ensure_image(base_url, token, node, storage, image_url, filename):
|
||||||
filename = os.path.basename(urllib.parse.urlparse(image_url).path)
|
|
||||||
content_path = f"/api2/json/nodes/{node}/storage/{storage}/content"
|
content_path = f"/api2/json/nodes/{node}/storage/{storage}/content"
|
||||||
response = api_request(base_url, token, "GET", content_path)
|
response = api_request(base_url, token, "GET", content_path)
|
||||||
for item in response.get("data", []):
|
for item in response.get("data", []):
|
||||||
|
|
@ -46,10 +45,11 @@ def main():
|
||||||
parser.add_argument("--node", required=True)
|
parser.add_argument("--node", required=True)
|
||||||
parser.add_argument("--storage", required=True)
|
parser.add_argument("--storage", required=True)
|
||||||
parser.add_argument("--image-url", required=True)
|
parser.add_argument("--image-url", required=True)
|
||||||
|
parser.add_argument("--filename", required=True)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
filename, downloaded = ensure_image(args.api_url, args.api_token, args.node, args.storage, args.image_url)
|
filename, downloaded = ensure_image(args.api_url, args.api_token, args.node, args.storage, args.image_url, args.filename)
|
||||||
except urllib.error.HTTPError as exc:
|
except urllib.error.HTTPError as exc:
|
||||||
sys.stderr.write(exc.read().decode())
|
sys.stderr.write(exc.read().decode())
|
||||||
raise
|
raise
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue