Skip to content
netapp-provider.py 2.55 KiB
Newer Older
JorgeEcheva26's avatar
JorgeEcheva26 committed
from sdk import CAPIFProviderConnector
Daniel García's avatar
Daniel García committed
import sys
import os
JorgeEcheva26's avatar
JorgeEcheva26 committed
import json
Daniel García's avatar
Daniel García committed

# Añadir el directorio del SDK al PYTHONPATH usando una ruta relativa
script_dir = os.path.dirname(os.path.abspath(__file__))  # Directorio actual del script
sdk_path = os.path.join(script_dir, '..', '..', 'sdk')  # Subir dos niveles y apuntar a 'sdk'
JorgeEcheva26's avatar
JorgeEcheva26 committed
sys.path.insert(0, sdk_path)
JorgeEcheva26's avatar
JorgeEcheva26 committed
# capif_sdk_config_path = "/Users/dgs/Downloads/capif_sdk/invoker/config.json"
JorgeEcheva26's avatar
JorgeEcheva26 committed
capif_sdk_config_path = "./capif-sdk-config-sample.json"
Daniel García's avatar
Daniel García committed

if __name__ == "__main__":
    try:
        # Inicialización del conector
        capif_connector = CAPIFProviderConnector(config_file=capif_sdk_config_path)
        capif_connector.onboard_provider()
        print("PROVIDER ONBOARDING COMPLETED")

        # Obtención de los AEFs ids y APFs ids para publicar una API
        with open(capif_sdk_config_path, 'r') as file:
            config = json.load(file)

        provider_folder = config.get('provider_folder')
        username_folder = config.get('capif_username')
        if not provider_folder:
            raise ValueError("El valor 'provider_folder' no está definido en el archivo de configuración.")

JorgeEcheva26's avatar
JorgeEcheva26 committed
        detailspath = os.path.join(provider_folder, username_folder, "capif_provider_details.json")
        if not os.path.exists(detailspath):
            raise FileNotFoundError(f"No se encontró el archivo {detailspath}")
JorgeEcheva26's avatar
JorgeEcheva26 committed

        with open(detailspath, 'r') as file:
            details = json.load(file)

        APF = details.get('APF-1_api_prov_func_id')
        AEF1 = details.get('AEF-1_api_prov_func_id')
        AEF2 = details.get('AEF-2_api_prov_func_id')
        if not APF or not AEF1 or not AEF2:
            raise ValueError("No se encontraron todos los valores necesarios en 'Capif_provider_details.json'")
        # Actualización del archivo de configuración
        config['publish_req']['publisher_apf_id'] = APF
        config['publish_req']['publisher_aefs_ids'] = [AEF1, AEF2]
JorgeEcheva26's avatar
JorgeEcheva26 committed

        with open(capif_sdk_config_path, 'w') as file:
            json.dump(config, file, indent=4)  # Guarda el JSON con formato
        print("Archivo de configuración actualizado correctamente.")
        # Volver a actualizar el constructor con los parametros nuevos de configuración
        capif_connector = CAPIFProviderConnector(config_file=capif_sdk_config_path)
        capif_connector.publish_services()
    except FileNotFoundError as e:
        print(f"Error: {e}")
    except json.JSONDecodeError as e:
        print(f"Error al leer el archivo JSON: {e}")
    except Exception as e:
        print(f"Error inesperado: {e}")