From 5c65de216447e2a83fc27bead6c285f565774d05 Mon Sep 17 00:00:00 2001 From: Ubuntu <jorge.sasiain@ehu.eus> Date: Mon, 13 Mar 2023 11:20:14 +0000 Subject: [PATCH] Register CREATE workflows and create db migration for them --- main.py | 1 + ...03-13_aa49bed10737_add_create_workflows.py | 57 +++++++++++++++++++ workflows/__init__.py | 6 +- .../create_trunk_config.py | 6 +- .../create_trunk_config_common.py | 6 +- .../create_trunk_config_side.py | 6 +- 6 files changed, 70 insertions(+), 12 deletions(-) create mode 100644 migrations/versions/schema/2023-03-13_aa49bed10737_add_create_workflows.py rename workflows/{trunk => trunk_config}/create_trunk_config.py (93%) rename workflows/{trunk => trunk_config_common}/create_trunk_config_common.py (93%) rename workflows/{trunk => trunk_config_side}/create_trunk_config_side.py (93%) diff --git a/main.py b/main.py index 26a26e55..66357c21 100644 --- a/main.py +++ b/main.py @@ -3,6 +3,7 @@ from orchestrator.cli.main import app as core_cli from orchestrator.settings import AppSettings import products +import workflows app = OrchestratorCore(base_settings=AppSettings()) diff --git a/migrations/versions/schema/2023-03-13_aa49bed10737_add_create_workflows.py b/migrations/versions/schema/2023-03-13_aa49bed10737_add_create_workflows.py new file mode 100644 index 00000000..99f0af74 --- /dev/null +++ b/migrations/versions/schema/2023-03-13_aa49bed10737_add_create_workflows.py @@ -0,0 +1,57 @@ +"""add CREATE workflows. + +Revision ID: aa49bed10737 +Revises: 431ca061b2ad +Create Date: 2023-03-13 11:18:36.787981 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = 'aa49bed10737' +down_revision = '431ca061b2ad' +branch_labels = None +depends_on = None + + +from orchestrator.migrations.helpers import create_workflow, delete_workflow + +new_workflows = [ + { + "name": "create_trunk", + "target": "CREATE", + "description": "Create trunk", + "product_type": "Trunk" + }, + { + "name": "create_trunk_config", + "target": "CREATE", + "description": "Create trunk config", + "product_type": "TrunkConfig" + }, + { + "name": "create_trunk_config_common", + "target": "CREATE", + "description": "Create trunk config common", + "product_type": "TrunkConfigCommon" + }, + { + "name": "create_trunk_config_side", + "target": "CREATE", + "description": "Create trunk config side", + "product_type": "TrunkConfigSide" + } +] + + +def upgrade() -> None: + conn = op.get_bind() + for workflow in new_workflows: + create_workflow(conn, workflow) + + +def downgrade() -> None: + conn = op.get_bind() + for workflow in new_workflows: + delete_workflow(conn, workflow["name"]) diff --git a/workflows/__init__.py b/workflows/__init__.py index 9dc5e5f1..6eeccd6d 100644 --- a/workflows/__init__.py +++ b/workflows/__init__.py @@ -1,6 +1,6 @@ from orchestrator.workflows import LazyWorkflowInstance LazyWorkflowInstance("workflows.trunk.create_trunk", "create_trunk") -LazyWorkflowInstance("workflows.trunk.create_trunk_config", "create_trunk_config") -LazyWorkflowInstance("workflows.trunk.create_trunk_config_common", "create_trunk_config_common") -LazyWorkflowInstance("workflows.trunk.create_trunk_config_side", "create_trunk_config_side") +LazyWorkflowInstance("workflows.trunk_config.create_trunk_config", "create_trunk_config") +LazyWorkflowInstance("workflows.trunk_config_common.create_trunk_config_common", "create_trunk_config_common") +LazyWorkflowInstance("workflows.trunk_config_side.create_trunk_config_side", "create_trunk_config_side") diff --git a/workflows/trunk/create_trunk_config.py b/workflows/trunk_config/create_trunk_config.py similarity index 93% rename from workflows/trunk/create_trunk_config.py rename to workflows/trunk_config/create_trunk_config.py index 44464dd0..f2c5c117 100644 --- a/workflows/trunk/create_trunk_config.py +++ b/workflows/trunk_config/create_trunk_config.py @@ -29,7 +29,7 @@ def trunk_selector() -> list: trunk_subscriptions[str(trunk_id)] = trunk_description return choice_list( - Choice("TrunkEnum", zip(trunk_subscriptions.keys(), trunk_subscriptions.items())), + Choice("TrunkEnum", zip(trunk_subscriptions.keys(), trunk_subscriptions.items())), # type:ignore min_items=1, max_items=1, ) @@ -40,7 +40,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: class Config: title = product_name - trunk_ids: trunk_selector() + trunk_ids: trunk_selector() # type:ignore user_input = yield CreateTrunkConfigForm @@ -81,7 +81,7 @@ def provision_trunk_config(subscription: TrunkConfigProvisioning) -> State: initial_input_form=wrap_create_initial_input_form(initial_input_form_generator), target=Target.CREATE, ) -def create_trunk(): +def create_trunk_config(): return ( init diff --git a/workflows/trunk/create_trunk_config_common.py b/workflows/trunk_config_common/create_trunk_config_common.py similarity index 93% rename from workflows/trunk/create_trunk_config_common.py rename to workflows/trunk_config_common/create_trunk_config_common.py index 875a9f39..3d609ed6 100644 --- a/workflows/trunk/create_trunk_config_common.py +++ b/workflows/trunk_config_common/create_trunk_config_common.py @@ -28,7 +28,7 @@ def trunk_config_selector() -> list: trunk_config_subscriptions[str(trunk_config_id)] = trunk_config_description return choice_list( - Choice("TrunkConfigEnum", zip(trunk_config_subscriptions.keys(), trunk_config_subscriptions.items())), + Choice("TrunkConfigEnum", zip(trunk_config_subscriptions.keys(), trunk_config_subscriptions.items())), # type:ignore min_items=1, max_items=1, ) @@ -43,7 +43,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: is_leased_line: Optional[bool] isis_metric: int minimum_links: int - trunk_config_ids: trunk_config_selector() + trunk_config_ids: trunk_config_selector() # type:ignore user_input = yield CreateTrunkConfigCommonForm @@ -88,7 +88,7 @@ def provision_trunk_config_common(subscription: TrunkConfigCommonProvisioning) - initial_input_form=wrap_create_initial_input_form(initial_input_form_generator), target=Target.CREATE, ) -def create_trunk(): +def create_trunk_config_common(): return ( init diff --git a/workflows/trunk/create_trunk_config_side.py b/workflows/trunk_config_side/create_trunk_config_side.py similarity index 93% rename from workflows/trunk/create_trunk_config_side.py rename to workflows/trunk_config_side/create_trunk_config_side.py index 5b67836f..67897ea2 100644 --- a/workflows/trunk/create_trunk_config_side.py +++ b/workflows/trunk_config_side/create_trunk_config_side.py @@ -28,7 +28,7 @@ def trunk_config_selector() -> list: trunk_config_subscriptions[str(trunk_config_id)] = trunk_config_description return choice_list( - Choice("TrunkConfigEnum", zip(trunk_config_subscriptions.keys(), trunk_config_subscriptions.items())), + Choice("TrunkConfigEnum", zip(trunk_config_subscriptions.keys(), trunk_config_subscriptions.items())), # type:ignore min_items=1, max_items=1, ) @@ -45,7 +45,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ipv4_address: Optional[str] ipv6_address: Optional[str] members: Optional[list] - trunk_config_ids: trunk_config_selector() + trunk_config_ids: trunk_config_selector() # type:ignore user_input = yield CreateTrunkConfigSideForm @@ -92,7 +92,7 @@ def provision_trunk_config_side(subscription: TrunkConfigSideProvisioning, fqdn: initial_input_form=wrap_create_initial_input_form(initial_input_form_generator), target=Target.CREATE, ) -def create_trunk(): +def create_trunk_config_side(): return ( init -- GitLab