#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import docker
import json
import os
import requests
import sys
import yaml
from pathlib import Path

BASE = (Path(__file__) / "..").resolve()

def main():
    client = docker.from_env(version="1.38")
    print("Checking for LAVA validity")
    directory_path = (BASE / "unit" / "refs" / "definitions" )
    print(directory_path)
    files = [file for file in os.listdir(directory_path) if file.endswith(".yaml")]
    for filename in files:
        print(f"{filename=}")
        container = client.containers.run(
            image="registry.gitlab.com/lava/lava/amd64/lava-dispatcher:2024.09.dev0159",
            command="/usr/share/lava-common/lava-schema.py job /data/%s" % filename,
            volumes={"%s" % directory_path: {"bind": "/data", "mode": "rw"}},
            detach=True,
        )
        container_exit_code = container.wait()
        logs = container.logs().decode('utf-8')
        if container_exit_code["StatusCode"] != 0:
            print(f"FAIL: Checking for LAVA validity, filename '{filename}'")
            print(f"Error details:\n{logs}")
            exit(1)
        #else:
        #    print(f"SUCCESS: Checking for LAVA validity, filename '{filename}'")

#    directory_path = (BASE / "unit" / "refs" / "definitions" )
#    files = [file for file in os.listdir(directory_path) if file.endswith(".yaml")]
#    url = "https://lkft-staging.validation.linaro.org/api/v0.2/jobs/validate/"
#    #url = "https://lkft.validation.linaro.org/api/v0.2/jobs/validate/"
#    headers = {
#        "Content-Type": "application/json",
#    }
#    for filename in files:
#        print(filename)
#        with open((directory_path / filename), 'r') as file:
#            content = yaml.load(file, Loader=yaml.FullLoader)
#
#        payload = {
#            "definition": json.dumps(content),
#        }
#        response = requests.post(url, json=payload, headers=headers)
#        response.raise_for_status()
#        print(f"{response.json()=}")
#        if response.json()["message"].startswith("Job invalid"):
#            print(f"LAVA validate YAML file '{filename}'")

if __name__ == "__main__":
    sys.exit(main())
