Loading netapp-samples/netapp-provider-sample/capif-sdk-config-sample.json +10 −7 Original line number Diff line number Diff line Loading @@ -35,8 +35,11 @@ }, "publish_req": { "service_api_id": "", "publisher_apf_id":"", "publisher_aefs_ids":["",""] "publisher_apf_id": "APFa839e8f520b35e6128b865076f2326", "publisher_aefs_ids": [ "AEFa38221323a1ac541136b3cc6594da7", "AEFdad3120ec180ab4ae0fb3d82b90b56" ] }, "api_description_path":"/Users/IDB0128/git_repos/pesp_capif_sdk/netapp-samples/netapp-provider-sample/netapp-provider-api-spec.json" "api_description_path": "./netapp-provider-api-spec.json" } No newline at end of file netapp-samples/netapp-provider-sample/netapp-provider-api-spec.json +2 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ "apiName": "Api-de-prueba-2", "aefProfiles": [ { "aefId": "AEF0f66526ff2fd8a1be721ace3506adb", "aefId": "AEFa38221323a1ac541136b3cc6594da7", "versions": [ { "apiVersion": "v1", Loading Loading @@ -61,7 +61,7 @@ ] }, { "aefId": "AEF212b55c43b1b16116192043bab9e05", "aefId": "AEFdad3120ec180ab4ae0fb3d82b90b56", "versions": [ { "apiVersion": "v1", Loading netapp-samples/netapp-provider-sample/netapp-provider.py +54 −10 Original line number Diff line number Diff line import sys import os import json # 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' sys.path.insert(0, sdk_path) capif_sdk_config_path = "/Users/dgs/Downloads/capif_sdk/invoker/config.json" capif_sdk_config_path = "/Users/IDB0128/git_repos/pesp_capif_sdk/netapp-samples/netapp-invoker-sample/capif-sdk-config-sample.json" from sdk import CAPIFProviderConnector if __name__ == "__main__": capif_connector = CAPIFProviderConnector(config_file=capif_sdk_config_path) # capif_sdk_config_path = "/Users/dgs/Downloads/capif_sdk/invoker/config.json" capif_sdk_config_path = "./capif-sdk-config-sample.json" 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.") detailspath = os.path.join(provider_folder,username_folder, "capif_provider_details.json") # Comprobación de la existencia del archivo de detalles if not os.path.exists(detailspath): raise FileNotFoundError(f"No se encontró el archivo {detailspath}") 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] 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}") sdk/sdk.py +2 −1 Original line number Diff line number Diff line Loading @@ -511,7 +511,7 @@ class CAPIFProviderConnector: csr_email_address = os.getenv('CSR_EMAIL_ADDRESS', config.get('csr_email_address', '')).strip() apfs = os.getenv('APFS', config.get('apfs', '')).strip() aefs = os.getenv('AEFS', config.get('aefs', '')).strip() api_description_path = os.getenv('API_DESCRIPTION_PATH', config.get('api_description_path', '')).strip() api_description_path = os.path.abspath(os.getenv('API_DESCRIPTION_PATH', config.get('api_description_path', '')).strip()) if not capif_host: self.logger.warning("CAPIF_HOST is not provided; defaulting to an empty string") Loading Loading @@ -803,6 +803,7 @@ class CAPIFProviderConnector: self.logger.info(f"Loading provider details from {provider_details_path}") provider_details=self.__load_provider_api_details() publish_url=provider_details["publish_url"] Loading Loading
netapp-samples/netapp-provider-sample/capif-sdk-config-sample.json +10 −7 Original line number Diff line number Diff line Loading @@ -35,8 +35,11 @@ }, "publish_req": { "service_api_id": "", "publisher_apf_id":"", "publisher_aefs_ids":["",""] "publisher_apf_id": "APFa839e8f520b35e6128b865076f2326", "publisher_aefs_ids": [ "AEFa38221323a1ac541136b3cc6594da7", "AEFdad3120ec180ab4ae0fb3d82b90b56" ] }, "api_description_path":"/Users/IDB0128/git_repos/pesp_capif_sdk/netapp-samples/netapp-provider-sample/netapp-provider-api-spec.json" "api_description_path": "./netapp-provider-api-spec.json" } No newline at end of file
netapp-samples/netapp-provider-sample/netapp-provider-api-spec.json +2 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ "apiName": "Api-de-prueba-2", "aefProfiles": [ { "aefId": "AEF0f66526ff2fd8a1be721ace3506adb", "aefId": "AEFa38221323a1ac541136b3cc6594da7", "versions": [ { "apiVersion": "v1", Loading Loading @@ -61,7 +61,7 @@ ] }, { "aefId": "AEF212b55c43b1b16116192043bab9e05", "aefId": "AEFdad3120ec180ab4ae0fb3d82b90b56", "versions": [ { "apiVersion": "v1", Loading
netapp-samples/netapp-provider-sample/netapp-provider.py +54 −10 Original line number Diff line number Diff line import sys import os import json # 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' sys.path.insert(0, sdk_path) capif_sdk_config_path = "/Users/dgs/Downloads/capif_sdk/invoker/config.json" capif_sdk_config_path = "/Users/IDB0128/git_repos/pesp_capif_sdk/netapp-samples/netapp-invoker-sample/capif-sdk-config-sample.json" from sdk import CAPIFProviderConnector if __name__ == "__main__": capif_connector = CAPIFProviderConnector(config_file=capif_sdk_config_path) # capif_sdk_config_path = "/Users/dgs/Downloads/capif_sdk/invoker/config.json" capif_sdk_config_path = "./capif-sdk-config-sample.json" 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.") detailspath = os.path.join(provider_folder,username_folder, "capif_provider_details.json") # Comprobación de la existencia del archivo de detalles if not os.path.exists(detailspath): raise FileNotFoundError(f"No se encontró el archivo {detailspath}") 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] 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}")
sdk/sdk.py +2 −1 Original line number Diff line number Diff line Loading @@ -511,7 +511,7 @@ class CAPIFProviderConnector: csr_email_address = os.getenv('CSR_EMAIL_ADDRESS', config.get('csr_email_address', '')).strip() apfs = os.getenv('APFS', config.get('apfs', '')).strip() aefs = os.getenv('AEFS', config.get('aefs', '')).strip() api_description_path = os.getenv('API_DESCRIPTION_PATH', config.get('api_description_path', '')).strip() api_description_path = os.path.abspath(os.getenv('API_DESCRIPTION_PATH', config.get('api_description_path', '')).strip()) if not capif_host: self.logger.warning("CAPIF_HOST is not provided; defaulting to an empty string") Loading Loading @@ -803,6 +803,7 @@ class CAPIFProviderConnector: self.logger.info(f"Loading provider details from {provider_details_path}") provider_details=self.__load_provider_api_details() publish_url=provider_details["publish_url"] Loading