Skip to content
Snippets Groups Projects
Commit 194794a8 authored by JORGE SASIAIN's avatar JORGE SASIAIN
Browse files

Add TERMINATE workflows

parent 5c65de21
Branches
Tags
No related merge requests found
"""add DELETE workflows and update CREATE workflows.
Revision ID: 8329fa45157b
Revises: aa49bed10737
Create Date: 2023-03-13 12:12:20.553551
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = '8329fa45157b'
down_revision = 'aa49bed10737'
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": "terminate_trunk",
"target": "TERMINATE",
"description": "Terminate trunk",
"product_type": "Trunk"
},
{
"name": "create_trunk_config",
"target": "CREATE",
"description": "Create trunk config",
"product_type": "TrunkConfig"
},
{
"name": "terminate_trunk_config",
"target": "TERMINATE",
"description": "Terminate trunk config",
"product_type": "TrunkConfig"
},
{
"name": "create_trunk_config_common",
"target": "CREATE",
"description": "Create trunk config common",
"product_type": "TrunkConfigCommon"
},
{
"name": "terminate_trunk_config_common",
"target": "TERMINATE",
"description": "Terminate trunk config common",
"product_type": "TrunkConfigCommon"
},
{
"name": "create_trunk_config_side",
"target": "CREATE",
"description": "Create trunk config side",
"product_type": "TrunkConfigSide"
},
{
"name": "terminate_trunk_config_side",
"target": "TERMINATE",
"description": "Terminate 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"])
......@@ -4,3 +4,7 @@ LazyWorkflowInstance("workflows.trunk.create_trunk", "create_trunk")
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")
LazyWorkflowInstance("workflows.trunk.terminate_trunk", "terminate_trunk")
LazyWorkflowInstance("workflows.trunk_config.terminate_trunk_config", "terminate_trunk_config")
LazyWorkflowInstance("workflows.trunk_config_common.terminate_trunk_config_common", "terminate_trunk_config_common")
LazyWorkflowInstance("workflows.trunk_config_side.terminate_trunk_config_side", "terminate_trunk_config_side")
......@@ -24,7 +24,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
return user_input.dict()
def _provision_in_group_management_system(trunk_name: str) -> int:
def _provision_in_gap(trunk_name: str) -> int:
return abs(hash(trunk_name))
......@@ -48,7 +48,7 @@ def initialize_subscription(subscription: TrunkInactive, trunk_name: str, geant_
@step("Provision trunk")
def provision_trunk(subscription: TrunkProvisioning, trunk_name: str) -> State:
trunk_id = _provision_in_group_management_system(trunk_name)
trunk_id = _provision_in_gap(trunk_name)
subscription.trunk.trunk_id = trunk_id
return {"subscription": subscription}
......
from orchestrator.forms import FormPage
from orchestrator.forms.validators import Label
from orchestrator.targets import Target
from orchestrator.types import InputForm, SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import done, init, step, workflow
from orchestrator.workflows.steps import resync, set_status, store_process_subscription, unsync
from orchestrator.workflows.utils import wrap_modify_initial_input_form
from products import Trunk
def initial_input_form_generator(subscription_id: UUIDstr, organisation: UUIDstr) -> InputForm:
subscription = Trunk.from_subscription(subscription_id)
class TerminateForm(FormPage):
are_you_sure: Label = f"Are you sure you want to remove {subscription.description}?" # type:ignore
return TerminateForm
def _deprovision_in_gap(trunk_id: int) -> int:
pass
@step("Deprovision trunk")
def deprovision_trunk(subscription: Trunk) -> None:
_deprovision_in_gap(subscription.trunk.trunk_id)
@workflow(
"Terminate trunk",
initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator),
target=Target.TERMINATE,
)
def terminate_trunk():
return (
init
>> store_process_subscription(Target.TERMINATE)
>> unsync
>> deprovision_trunk
>> set_status(SubscriptionLifecycle.TERMINATED)
>> resync
>> done
)
\ No newline at end of file
......@@ -47,7 +47,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
return user_input.dict()
def _provision_in_group_management_system() -> int:
def _provision_in_gap() -> int:
return random.randint(0, 2147483648)
......@@ -70,7 +70,7 @@ def initialize_subscription(subscription: TrunkConfigInactive, trunk_ids: List[s
@step("Provision trunk config")
def provision_trunk_config(subscription: TrunkConfigProvisioning) -> State:
trunk_config_id = _provision_in_group_management_system()
trunk_config_id = _provision_in_gap()
subscription.trunk_config.trunk_config_id = trunk_config_id
return {"subscription": subscription}
......
from orchestrator.forms import FormPage
from orchestrator.forms.validators import Label
from orchestrator.targets import Target
from orchestrator.types import InputForm, SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import done, init, step, workflow
from orchestrator.workflows.steps import resync, set_status, store_process_subscription, unsync
from orchestrator.workflows.utils import wrap_modify_initial_input_form
from products import TrunkConfig
def initial_input_form_generator(subscription_id: UUIDstr, organisation: UUIDstr) -> InputForm:
subscription = TrunkConfig.from_subscription(subscription_id)
class TerminateForm(FormPage):
are_you_sure: Label = f"Are you sure you want to remove {subscription.description}?" # type:ignore
return TerminateForm
def _deprovision_in_gap(trunk_config_id: int) -> int:
pass
@step("Deprovision trunk config")
def deprovision_trunk_config(subscription: TrunkConfig) -> None:
_deprovision_in_gap(subscription.trunk_config.trunk_config_id)
@workflow(
"Terminate trunk config",
initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator),
target=Target.TERMINATE,
)
def terminate_trunk_config():
return (
init
>> store_process_subscription(Target.TERMINATE)
>> unsync
>> deprovision_trunk_config
>> set_status(SubscriptionLifecycle.TERMINATED)
>> resync
>> done
)
\ No newline at end of file
......@@ -50,7 +50,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
return user_input.dict()
def _provision_in_group_management_system() -> int:
def _provision_in_gap() -> int:
return random.randint(0, 2147483648)
......@@ -77,7 +77,7 @@ def initialize_subscription(subscription: TrunkConfigCommonInactive, speed: str,
@step("Provision trunk config common")
def provision_trunk_config_common(subscription: TrunkConfigCommonProvisioning) -> State:
trunk_config_common_id = _provision_in_group_management_system()
trunk_config_common_id = _provision_in_gap()
subscription.trunk_config_common.trunk_config_common_id = trunk_config_common_id
return {"subscription": subscription}
......
from orchestrator.forms import FormPage
from orchestrator.forms.validators import Label
from orchestrator.targets import Target
from orchestrator.types import InputForm, SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import done, init, step, workflow
from orchestrator.workflows.steps import resync, set_status, store_process_subscription, unsync
from orchestrator.workflows.utils import wrap_modify_initial_input_form
from products import TrunkConfigCommon
def initial_input_form_generator(subscription_id: UUIDstr, organisation: UUIDstr) -> InputForm:
subscription = TrunkConfigCommon.from_subscription(subscription_id)
class TerminateForm(FormPage):
are_you_sure: Label = f"Are you sure you want to remove {subscription.description}?" # type:ignore
return TerminateForm
def _deprovision_in_gap(trunk_config_common_id: int) -> int:
pass
@step("Deprovision trunk config common")
def deprovision_trunk_config_common(subscription: TrunkConfigCommon) -> None:
_deprovision_in_gap(subscription.trunk_config_common.trunk_config_common_id)
@workflow(
"Terminate trunk config common",
initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator),
target=Target.TERMINATE,
)
def terminate_trunk_config_common():
return (
init
>> store_process_subscription(Target.TERMINATE)
>> unsync
>> deprovision_trunk_config_common
>> set_status(SubscriptionLifecycle.TERMINATED)
>> resync
>> done
)
\ No newline at end of file
......@@ -52,7 +52,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
return user_input.dict()
def _provision_in_group_management_system(fqdn: str) -> int:
def _provision_in_gap(fqdn: str) -> int:
return abs(hash(fqdn))
......@@ -81,7 +81,7 @@ def initialize_subscription(subscription: TrunkConfigSideInactive, fqdn: str, ae
@step("Provision trunk config side")
def provision_trunk_config_side(subscription: TrunkConfigSideProvisioning, fqdn: str) -> State:
trunk_config_side_id = _provision_in_group_management_system(fqdn)
trunk_config_side_id = _provision_in_gap(fqdn)
subscription.trunk_config_side.trunk_config_side_id = trunk_config_side_id
return {"subscription": subscription}
......
from orchestrator.forms import FormPage
from orchestrator.forms.validators import Label
from orchestrator.targets import Target
from orchestrator.types import InputForm, SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import done, init, step, workflow
from orchestrator.workflows.steps import resync, set_status, store_process_subscription, unsync
from orchestrator.workflows.utils import wrap_modify_initial_input_form
from products import TrunkConfigSide
def initial_input_form_generator(subscription_id: UUIDstr, organisation: UUIDstr) -> InputForm:
subscription = TrunkConfigSide.from_subscription(subscription_id)
class TerminateForm(FormPage):
are_you_sure: Label = f"Are you sure you want to remove {subscription.description}?" # type:ignore
return TerminateForm
def _deprovision_in_gap(trunk_config_side_id: int) -> int:
pass
@step("Deprovision trunk config side")
def deprovision_trunk_config_side(subscription: TrunkConfigSide) -> None:
_deprovision_in_gap(subscription.trunk_config_side.trunk_config_side_id)
@workflow(
"Terminate trunk config side",
initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator),
target=Target.TERMINATE,
)
def terminate_trunk_config_side():
return (
init
>> store_process_subscription(Target.TERMINATE)
>> unsync
>> deprovision_trunk_config_side
>> set_status(SubscriptionLifecycle.TERMINATED)
>> resync
>> done
)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment