diff --git a/main.py b/main.py index 26a26e556d82240eb71b33ef60ccec0b101921dd..66357c213e8c8b6368767a9b7c4e652561113e8b 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 0000000000000000000000000000000000000000..99f0af74de388a1e8bddd166617ca18fb3d55edc --- /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 9dc5e5f196823138f4415f7c7eeb2b02a51d4017..6eeccd6dbb0490be4e7570b46dd8fa3656f791af 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 44464dd06db494503ca6d65179887115604ff66f..f2c5c117dbc5128230b5e52e7815f349697abfb4 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 875a9f39e6f2ef04bbe4d925c8df79b068a97a6f..3d609ed6c7ca0161db2f7438194ed08f6885a5b6 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 5b67836f162e95b090169a6e5038cd1e892606b1..67897ea2bdedcbf155d7bc7c3f0e28140175b8ca 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