import json
import os
from github.env import exit_on_error_and_write_summary
from actions_logging.app_logging import logger

SERVICE_NAME = os.getenv('SERVICE_NAME')
SERVICE_VERSION = os.getenv('SERVICE_VERSION')
MANIFEST_TYPE = os.getenv('MANIFEST_TYPE')
ROLE = os.getenv('MANIFEST_ROLE')

edge_prefix = ""
type_suffix = ""

if ROLE == 'edge':
    edge_prefix = "edge_"
    
if MANIFEST_TYPE == 'v4':
    type_suffix = "_v4"

manifest_file = f"{edge_prefix}image_manifest{type_suffix}.json"

if not manifest_file:
    exit_on_error_and_write_summary("Manifest file is not set, something went wrong. Exiting.")

logger.info_green(f"Manifest file is {manifest_file}")

with open(manifest_file, 'r') as json_file:
    json_data = json.load(json_file)

user_services = json_data.get("userServices", {})  # We don't have user services in edge manifest
host_services = json_data["hostServices"]

artifact_dict = {}
if user_services:
    for user_service in user_services:
        artifact_dict[user_services[user_service]["artifactName"]] = user_services[user_service]['version']

for key, value in host_services.items():
        artifact_dict[key] = value['version']

if artifact_dict.get(SERVICE_NAME):
    file_service_version = artifact_dict[SERVICE_NAME]
else:
    exit_on_error_and_write_summary(f"service name: {SERVICE_NAME} not in manifest json user or host services")

if SERVICE_VERSION != file_service_version:
    logger.info(f"service version: {SERVICE_VERSION}")
    logger.info(f"json file service version: {file_service_version}")
    logger.info_red("somthing wrong. it is not supposed to be, exit!")
    exit_on_error_and_write_summary(f"service version: {SERVICE_VERSION} and json file service version: {file_service_version}. it is not supposed to be")
else:
    logger.info_green("validate service version success")
