def enumerate_release_manifest()

in src/helperscripts/neuronsetuphelper.py [0:0]


def enumerate_release_manifest(nr_setup, in_neuron_version):

    ########################################
    # Enumerate the Json file
    ########################################

    if nr_setup.file==None:
        nr_setup.file='neuron-releases-manifest.json'

    try:
        read_file = open(nr_setup.file, "r") 
    except:
        print(__name__,": error:","Can't open " + nr_setup.file + " ")
        exit(-1)

    neuron_releases = json.load (read_file)

    latest_neuron_version = neuron_releases["latest_release"]["inf1"]["version"]

    nr_setup.dlami_conda_env = neuron_releases["dlami_conda_env"]

    nr_setup.fal_supported_runtime = neuron_releases["fal_supported_runtime"]

    if (in_neuron_version == None) | (in_neuron_version == 'latest'):
        neuron_version=latest_neuron_version
    else:
        neuron_version = in_neuron_version



    for n_ver in neuron_releases["neuron_versions"]:
        neuron_ver_list.append(n_ver)



    for neuron_release_ver in neuron_releases["neuron_versions"]:
        m_release=neuron_releases["neuron_versions"][neuron_release_ver]["components"]
        n_info=neuron_release_info()

        for component_name in m_release:
            if m_release[component_name]["framework"]==False:
                n_info.release_components_list.append(component_name)    
            m_packages=m_release[component_name]["packages"]
            for package_name in m_packages:
                for package_ver in m_packages[package_name]["versions"]:
                    m_package_ver=m_packages[package_name]["versions"][package_ver]

                    full_package_name=package_name+'-'+package_ver

                    n_info.release_packages_all[full_package_name]= {"component":component_name,"package":package_name,"version":package_ver,"main":m_package_ver["main_version"],"pre_install_cmds":m_package_ver["pre_install_cmds"],"post_install_cmds":m_package_ver["post_install_cmds"],"package_type":m_package_ver["package_type"]}

                    if m_package_ver["main_version"]:
                        n_info.release_package_main[component_name]={"package":package_name,"version":package_ver,"full_package_name":full_package_name,"pre_install_cmds":m_package_ver["pre_install_cmds"],"post_install_cmds":m_package_ver["post_install_cmds"],"package_type":m_package_ver["package_type"]}

                    if m_release[component_name]["framework"]:
                        ver_digits = package_ver.rsplit('.')
                        fw_ver=ver_digits[0]+'.'+ver_digits[1]+'.'+ver_digits[2]
                        fw_name_ver=component_name+'-'+fw_ver

                        if m_release[component_name]["framework"]:
                            n_info.release_components_list.append(fw_name_ver)
                            n_info.release_frameworks_list.append(fw_name_ver)

                        if m_package_ver["main_version"]:
                            n_info.release_frameworks_main[component_name]={"framework":fw_name_ver,"package":package_name,"version":package_ver,"framework_version":fw_ver,"package_name":full_package_name,"full_package_name":full_package_name,"pre_install_cmds":m_package_ver["pre_install_cmds"],"post_install_cmds":m_package_ver["post_install_cmds"],"package_type":m_package_ver["package_type"]}


                        n_info.release_frameworks_all[fw_name_ver]={"framework":component_name,"package":package_name,"version":package_ver,"main":m_package_ver["main_version"],"framework_version":fw_ver,"package_name":full_package_name,"pre_install_cmds":m_package_ver["pre_install_cmds"],"post_install_cmds":m_package_ver["post_install_cmds"],"package_type":m_package_ver["package_type"]}

        if 'driver' in n_info.release_components_list:
            n_info.release_os_install_list.append('driver')
        if 'runtime-server' in n_info.release_components_list:
            n_info.release_os_install_list.append('runtime-server')
        if 'tools' in n_info.release_components_list:
            n_info.release_os_install_list.append('tools')
        if 'tensorflow-model-server' in n_info.release_components_list:
            n_info.release_os_install_list.append('tensorflow-model-server')

        # correlate TF and TF model server versions
        for pkg in n_info.release_packages_all.keys():
            if n_info.release_packages_all[pkg]['component'] == 'tensorflow':
                package_ver=n_info.release_packages_all[pkg]['version']
                ver_digits = package_ver.rsplit('.')
                tf_small_ver=ver_digits[0]+'.'+ver_digits[1]
                for pkg2 in n_info.release_packages_all.keys():
                    if n_info.release_packages_all[pkg2]['component'] == 'tensorflow-model-server':
                        package_ver=n_info.release_packages_all[pkg2]['version']
                        ver_digits = package_ver.rsplit('.')
                        tf_model_server_small_ver=ver_digits[0]+'.'+ver_digits[1]
                        if tf_model_server_small_ver==tf_small_ver:
                            n_info.release_tf_package_to_model_server_package[pkg]=pkg2
                            break
        
        nr_setup.releases_info[neuron_release_ver]=n_info


    try:
        m_release=neuron_releases["neuron_versions"][neuron_version]["components"]
    except:
        print(__name__,": error: ","Version " + neuron_version + " is not a Neuron version or it is not supported")
        exit(-1)



    
    return (neuron_version,latest_neuron_version)