From 5e9433b592972f3f4b3a1c7c1c38d901533b1500 Mon Sep 17 00:00:00 2001
From: Simone Spinelli <simone.spinelli@geant.org>
Date: Thu, 6 Apr 2023 10:46:31 +0200
Subject: [PATCH] First experiment with forms

---
 .../workflows/device/create_device.py         | 20 +++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/geant_service_orchestrator/workflows/device/create_device.py b/geant_service_orchestrator/workflows/device/create_device.py
index 6a4f29f8..ab899f22 100644
--- a/geant_service_orchestrator/workflows/device/create_device.py
+++ b/geant_service_orchestrator/workflows/device/create_device.py
@@ -88,8 +88,8 @@ def initialize_subscription(
     return {"subscription": subscription}
 
 
-@step("Provision device")
-def provision_device(
+@step("Provision device [DRY RUN]")
+def provision_device_dry(
     subscription: DeviceProvisioning, fqdn: str, ts_address: str, ts_port: str
 ) -> State:
     import ansible_runner
@@ -114,7 +114,19 @@ def provision_device(
     out_splitted = out.splitlines()
 
     return {"output": out_splitted}
-    # return {"subscription": subscription, "status": "ciao", "pippo": "pluto"}
+
+
+@step("Confirm provisioning")
+def confirmation_form() -> FormGenerator:
+    class ConfirmActionForm(FormPage):
+        class Config:
+            title = "Confirm your action"
+
+        choice: bool
+
+    user_input = yield ConfirmActionForm
+
+    return user_input.dict()
 
 
 @workflow(
@@ -131,7 +143,7 @@ def create_device():
         >> get_info_from_ipam
         >> get_snmp_info
         >> initialize_subscription
-        >> provision_device
+        >> provision_device_dry
         >> set_status(SubscriptionLifecycle.ACTIVE)
         >> resync
         >> done
-- 
GitLab