From 734d5a521de86efc9d7b14b274dc9248eb400a21 Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Tue, 7 May 2024 13:48:12 +0200 Subject: [PATCH] externalize workflow step --- gso/utils/workflow_steps.py | 22 +++++++++++++++++++++- gso/workflows/router/create_router.py | 22 ++++++---------------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/gso/utils/workflow_steps.py b/gso/utils/workflow_steps.py index 7b3b5cc9..bcc1cacb 100644 --- a/gso/utils/workflow_steps.py +++ b/gso/utils/workflow_steps.py @@ -3,9 +3,14 @@ import json from typing import Any -from orchestrator import step +from orchestrator import inputstep, step +from orchestrator.config.assignee import Assignee from orchestrator.types import State, UUIDstr from orchestrator.utils.json import json_dumps +from pydantic import ConfigDict +from pydantic_forms.core import FormPage +from pydantic_forms.types import FormGenerator +from pydantic_forms.validators import Label from gso.products.product_types.iptrunk import Iptrunk from gso.services.lso_client import execute_playbook @@ -101,3 +106,18 @@ def run_checks_after_base_config(subscription: dict[str, Any], callback_route: s inventory=subscription["router"]["router_fqdn"], extra_vars={"wfo_router_json": subscription}, ) + + +@inputstep("Prompt for new SharePoint checklist", assignee=Assignee.SYSTEM) +def prompt_sharepoint_checklist_url(checklist_url: str) -> FormGenerator: + """Prompt the operator with the checklist in SharePoint for approving this new router.""" + + class SharepointPrompt(FormPage): + model_config = ConfigDict(title="Complete new checklist") + + info_label_1: Label = f"A new checklist has been created at: {checklist_url}" + info_label_2: Label = "Click proceed to finish the workflow." + + yield SharepointPrompt + + return {} diff --git a/gso/workflows/router/create_router.py b/gso/workflows/router/create_router.py index dc33293d..233d982c 100644 --- a/gso/workflows/router/create_router.py +++ b/gso/workflows/router/create_router.py @@ -23,7 +23,12 @@ from gso.services.partners import get_partner_by_name from gso.services.sharepoint import SharePointClient from gso.utils.helpers import generate_fqdn, iso_from_ipv4 from gso.utils.shared_enums import PortNumber, Vendor -from gso.utils.workflow_steps import deploy_base_config_dry, deploy_base_config_real, run_checks_after_base_config +from gso.utils.workflow_steps import ( + deploy_base_config_dry, + deploy_base_config_real, + prompt_sharepoint_checklist_url, + run_checks_after_base_config, +) def _site_selector() -> Choice: @@ -228,21 +233,6 @@ def create_new_sharepoint_checklist(subscription: RouterProvisioning, tt_number: return {"checklist_url": new_list_item_url} -@inputstep("Prompt for new Sharepoint checklist", assignee=Assignee.SYSTEM) -def prompt_sharepoint_checklist_url(checklist_url: str) -> FormGenerator: - """Prompt the operator with the checklist in SharePoint for approving this new router.""" - - class SharepointPrompt(FormPage): - model_config = ConfigDict(title="Complete new checklist") - - info_label_1: Label = f"A new checklist has been created at: {checklist_url}" - info_label_2: Label = "Click proceed to finish the workflow." - - yield SharepointPrompt - - return {} - - @workflow( "Create router", initial_input_form=wrap_create_initial_input_form(initial_input_form_generator), -- GitLab