diff --git a/geant_service_orchestrator/services/provisioning_proxy.py b/geant_service_orchestrator/services/provisioning_proxy.py index 96874ed8bb549bc5ab2407cf420a53bcafd827bf..2a3626d3976ad735a82b72759c32f7a3d662f8b9 100644 --- a/geant_service_orchestrator/services/provisioning_proxy.py +++ b/geant_service_orchestrator/services/provisioning_proxy.py @@ -6,7 +6,10 @@ import requests def provision_node( node_subscription_params: DeviceBlock, - pp_params=settings.OSSParams.PROVISIONING_PROXY): + dry_run: bool = False): + oss = settings.load_oss_params() + pp_params = oss.PROVISIONING_PROXY + assert pp_params r = requests.get( f'https://{pp_params.api_base}' f'/api/version', diff --git a/geant_service_orchestrator/workflows/device/create_device.py b/geant_service_orchestrator/workflows/device/create_device.py index bf7e66272d5ca6ef027ce1b5f844ef0f808bbdf7..f8bffe75ebf21421d1f59fbfecf13171e1bf58e4 100644 --- a/geant_service_orchestrator/workflows/device/create_device.py +++ b/geant_service_orchestrator/workflows/device/create_device.py @@ -12,7 +12,7 @@ from orchestrator.workflows.steps import resync, set_status from orchestrator.workflows.steps import store_process_subscription from orchestrator.workflows.utils import wrap_create_initial_input_form from geant_service_orchestrator.products.product_types import device -from geant_service_orchestrator.services import ipam +from geant_service_orchestrator.services import ipam, provisioning_proxy def initial_input_form_generator(product_name: str) -> FormGenerator: @@ -100,29 +100,35 @@ def provision_device_dry( ts_address: str, ts_port: str ) -> State: - import ansible_runner - - r = ansible_runner.run( - private_data_dir="/opt/geant-gap-ansible", - playbook="base_config.yaml", - inventory=subscription.device.fqdn, - extravars={ - "lo_ipv4_address": str(subscription.device.lo_ipv4_address), - "lo_ipv6_address": str(subscription.device.lo_ipv6_address), - "lo_iso_address": subscription.device.lo_iso_address, - "snmp_location": subscription.device.snmp_location, - "si_ipv4_network": str(subscription.device.si_ipv4_network), - "lt_ipv4_network": str(subscription.device.ias_lt_ipv4_network), - "lt_ipv6_network": str(subscription.device.ias_lt_ipv6_network), - "site_country_code": subscription.device.site_country_code, - "verb": "deploy", - }, - ) - out = r.stdout.read() - out_splitted = out.splitlines() - # if r.rc != 0: - # raise ValueError("Ansible has failed") - return {"dry_run_output": out_splitted, "return_code": r.rc} + # import ansible_runner + # + # r = ansible_runner.run( + # private_data_dir="/opt/geant-gap-ansible", + # playbook="base_config.yaml", + # inventory=subscription.device.fqdn, + # extravars={ + # "lo_ipv4_address": str(subscription.device.lo_ipv4_address), + # "lo_ipv6_address": str(subscription.device.lo_ipv6_address), + # "lo_iso_address": subscription.device.lo_iso_address, + # "snmp_location": subscription.device.snmp_location, + # "si_ipv4_network": str(subscription.device.si_ipv4_network), + # "lt_ipv4_network": str(subscription.device.ias_lt_ipv4_network), + # "lt_ipv6_network": str(subscription.device.ias_lt_ipv6_network), + # "site_country_code": subscription.device.site_country_code, + # "verb": "deploy", + # }, + # ) + # out = r.stdout.read() + # out_splitted = out.splitlines() + # # if r.rc != 0: + # # raise ValueError("Ansible has failed") + # return {"dry_run_output": out_splitted, "return_code": r.rc} + provisioning_proxy.provision_node( + node_subscription_params=subscription, + dry_run=True) + # TODO: figure out what to return when we are suspending & waiting + # for the provisioning-proxy to call back + return {"return_code": 0} @inputstep("Confirm step", assignee="CHANGES") @@ -142,28 +148,33 @@ def provision_device_real( ts_address: str, ts_port: str ) -> State: - import ansible_runner - - r = ansible_runner.run( - private_data_dir="/opt/geant-gap-ansible", - playbook="base_config.yaml", - inventory=subscription.device.fqdn, - extravars={ - "lo_ipv4_address": str(subscription.device.lo_ipv4_address), - "lo_ipv6_address": str(subscription.device.lo_ipv6_address), - "lo_iso_address": subscription.device.lo_iso_address, - "snmp_location": subscription.device.snmp_location, - "si_ipv4_network": str(subscription.device.si_ipv4_network), - "lt_ipv4_network": str(subscription.device.ias_lt_ipv4_network), - "lt_ipv6_network": str(subscription.device.ias_lt_ipv6_network), - "site_country_code": subscription.device.site_country_code, - "verb": "deploy", - }, - ) - out = r.stdout.read() - out_splitted = out.splitlines() - - return {"real_run_output": out_splitted, "return_code": r.rc} + # import ansible_runner + # + # r = ansible_runner.run( + # private_data_dir="/opt/geant-gap-ansible", + # playbook="base_config.yaml", + # inventory=subscription.device.fqdn, + # extravars={ + # "lo_ipv4_address": str(subscription.device.lo_ipv4_address), + # "lo_ipv6_address": str(subscription.device.lo_ipv6_address), + # "lo_iso_address": subscription.device.lo_iso_address, + # "snmp_location": subscription.device.snmp_location, + # "si_ipv4_network": str(subscription.device.si_ipv4_network), + # "lt_ipv4_network": str(subscription.device.ias_lt_ipv4_network), + # "lt_ipv6_network": str(subscription.device.ias_lt_ipv6_network), + # "site_country_code": subscription.device.site_country_code, + # "verb": "deploy", + # }, + # ) + # out = r.stdout.read() + # out_splitted = out.splitlines() + # + # return {"real_run_output": out_splitted, "return_code": r.rc} + provisioning_proxy.provision_node( + node_subscription_params=subscription) + # TODO: figure out what to return when we are suspending & waiting + # for the provisioning-proxy to call back + return {"return_code": 0} @workflow(