from image_validator.pkgmgr.common import get_package_manager_info
from image_validator.system import sysinfo, get_sysinfo
from image_validator.os_information.grub_info import get_grub_parameters
from datetime import datetime as dt
from image_validator.ASR.loaddriver import invoke_load_driver
import json
import os
import socket

release_notes = dict()

def package_manager_validation():
    try:
        import yum
        from image_validator.pkgmgr.Yum import YumValidation
        package_manager = YumValidation()
    except ImportError:
        try:
            import dnf
            from image_validator.pkgmgr.dnf import dnfValidation
            package_manager = dnfValidation()
        except ImportError:
            return dict()

    get_package_manager_info(package_manager)
    return package_manager.info

if __name__ == "__main__":

    try:
        release_notes["updateInformation"] = package_manager_validation()
    except Exception as e:
        release_notes["updateInformation"] = str(e)

    get_sysinfo()
    release_notes["systemInformation"] = sysinfo
    release_notes["grubParameters"] = get_grub_parameters()
    release_notes["version"] = "1.0.0"
    release_notes["name"] = "ImageBuild Validator"
    release_notes["date"] = str(dt.now())
    release_notes["hostname"] = socket.gethostname()
    release_notes["ASR"] = invoke_load_driver()

    try:
        release_notes["generation"] = release_notes["hostname"].split('-')[-1]
        release_notes["imageName"] = release_notes["hostname"].split('-')[0]
    except:
        pass

    with open("/tmp/logs.json", 'w') as f:
        f.write(json.dumps(release_notes, indent=4))
