From 690ef1954ce5f1fda59f962604d48c433fd591e0 Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Thu, 11 May 2023 16:11:04 +0200 Subject: [PATCH] split off generic code for provisioning service and sending pp request --- gso/services/provisioning_proxy.py | 27 ++++++++++++++++----------- gso/workflows/device/create_device.py | 4 ++-- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/gso/services/provisioning_proxy.py b/gso/services/provisioning_proxy.py index fb68c6d4..f236d30f 100644 --- a/gso/services/provisioning_proxy.py +++ b/gso/services/provisioning_proxy.py @@ -4,6 +4,7 @@ import logging import requests from orchestrator import inputstep from orchestrator.config.assignee import Assignee +from orchestrator.domain.lifecycle import SubscriptionModel from orchestrator.forms import FormPage, ReadOnlyField from orchestrator.forms.validators import Accept, Label, LongText from orchestrator.types import UUIDstr, State @@ -15,24 +16,16 @@ from gso.products.product_types.device import DeviceProvisioning logger = logging.getLogger(__name__) -def provision_node( - node_subscription_params: DeviceProvisioning, - process_id: UUIDstr, - dry_run: bool = True): +def _send_request(parameters: dict, process_id: UUIDstr): oss = settings.load_oss_params() pp_params = oss.PROVISIONING_PROXY assert pp_params - device_params = node_subscription_params.device callback_url = f'{settings.load_oss_params().GENERAL.public_hostname}' \ f'/api/processes/{process_id}/resume' - logger.debug(f'[disabled] provisioning node {device_params}') + logger.debug(f'[provisioning proxy] provisioning for process {process_id}') - parameters = { - 'callback': callback_url, - 'dry_run': dry_run, - 'device': json.loads(json_dumps(node_subscription_params)) - } + parameters.update({'callback': callback_url}) post_request = requests.post( f'{pp_params.scheme}://{pp_params.api_base}/api/device', @@ -42,6 +35,18 @@ def provision_node( raise AssertionError(post_request.text) +def provision_service( + subscription: SubscriptionModel, + process_id: UUIDstr, + dry_run: bool = True): + parameters = { + 'dry_run': dry_run, + 'subscription': json.loads(json_dumps(subscription)) + } + + _send_request(parameters, process_id) + + @inputstep('Await provisioning proxy results', assignee=Assignee('SYSTEM')) def await_pp_results() -> State: class ProvisioningResultPage(FormPage): diff --git a/gso/workflows/device/create_device.py b/gso/workflows/device/create_device.py index 40a03c90..640c5297 100644 --- a/gso/workflows/device/create_device.py +++ b/gso/workflows/device/create_device.py @@ -123,7 +123,7 @@ def initialize_subscription( @step('Provision device [DRY RUN]') def provision_device_dry(subscription: DeviceProvisioning, process_id: UUIDstr) -> State: - provisioning_proxy.provision_node( + provisioning_proxy.provision_service( subscription, process_id ) @@ -134,7 +134,7 @@ def provision_device_dry(subscription: DeviceProvisioning, @step('Provision device [FOR REAL]') def provision_device_real(subscription: DeviceProvisioning, process_id: UUIDstr) -> State: - provisioning_proxy.provision_node( + provisioning_proxy.provision_service( subscription, process_id, False # No dry run this time, run it for real -- GitLab