From 8bdd2e6054c46e6a891a7dd8173c64fb777a4394 Mon Sep 17 00:00:00 2001 From: root <jorge.sasiain@ehu.eus> Date: Mon, 16 Jan 2023 10:07:30 +0000 Subject: [PATCH] Begin with create workflows --- workflows/node/create_line_card.py | 41 ++++++++++++++++++++++++++++ workflows/node/create_node.py | 43 ++++++++++++++++++++++++++++++ workflows/node/create_port.py | 40 +++++++++++++++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 workflows/node/create_line_card.py create mode 100644 workflows/node/create_node.py create mode 100644 workflows/node/create_port.py diff --git a/workflows/node/create_line_card.py b/workflows/node/create_line_card.py new file mode 100644 index 000000000..3ff42c8be --- /dev/null +++ b/workflows/node/create_line_card.py @@ -0,0 +1,41 @@ +from uuid import uuid4 + +from orchestrator.targets import Target +from orchestrator.types import State, SubscriptionLifecycle, UUIDstr +from orchestrator.workflow import done, init, step, workflow +from orchestrator.workflows.steps import resync, set_status, store_process_subscription + +from products.product_types.line_card import LineCardInactive, LineCardProvisioning +from products.product_types.node import Node + +@step("Create subscription") +def create_subscription(product: UUIDstr) -> State: + subscription = LineCardInactive.from_product_id(product, uuid4()) + + return {"subscription": subscription, "subscription_id": subscription.subscription_id} + +@step("Initialize subscription") +def initialize_subscription(subscription: LineCardInactive) -> State: + #subscription.line_card. + pass + +@step("Provision line card") +def provision_line_card(subscription: LineCardProvisioning) -> State: + pass + +@workflow( + "Create line card", + target=Target.CREATE, +) +def create_line_card(): + + return ( + init + >> create_subscription + >> store_process_subscription(Target.CREATE) + >> initialize_subscription + >> provision_line_card + >> set_status(SubscriptionLifecycle.ACTIVE) + >> resync + >> done + ) diff --git a/workflows/node/create_node.py b/workflows/node/create_node.py new file mode 100644 index 000000000..01c9b581e --- /dev/null +++ b/workflows/node/create_node.py @@ -0,0 +1,43 @@ +from uuid import uuid4 + +from orchestrator.targets import Target +from orchestrator.types import State, SubscriptionLifecycle, UUIDstr +from orchestrator.workflow import done, init, step, workflow +from orchestrator.workflows.steps import resync, set_status, store_process_subscription + +from products.product_types.node import NodeInactive, NodeProvisioning + +@step("Create subscription") +def create_subscription(product: UUIDstr) -> State: + subscription = NodeInactive.from_product_id(product, uuid4()) + + return {"subscription": subscription, "subscription_id": subscription.subscription_id} + +@step("Initialize subscription") +def initialize_subscription(subscription: NodeInactive) -> State: + subscription.description = f"Node" + subscription = NodeProvisioning.from_other_lifecycle(subscription, SubscriptionLifecycle.PROVISIONING) + + return {"subscription": subscription} + +@step("Provision node") +def provision_node(subscription: NodeProvisioning) -> State: + node_id = uuid.uuid4() + subscription.node.node_id = node_id + +@workflow( + "Create node", + target=Target.CREATE, +) +def create_node(): + + return ( + init + >> create_subscription + >> store_process_subscription(Target.CREATE) + >> initialize_subscription + >> provision_node + >> set_status(SubscriptionLifecycle.ACTIVE) + >> resync + >> done + ) diff --git a/workflows/node/create_port.py b/workflows/node/create_port.py new file mode 100644 index 000000000..529d2cf81 --- /dev/null +++ b/workflows/node/create_port.py @@ -0,0 +1,40 @@ +from uuid import uuid4 + +from orchestrator.targets import Target +from orchestrator.types import State, SubscriptionLifecycle, UUIDstr +from orchestrator.workflow import done, init, step, workflow +from orchestrator.workflows.steps import resync, set_status, store_process_subscription + +from products.product_types.port import PortInactive, PortProvisioning +from products.product_types.line_card import LineCard + +@step("Create subscription") +def create_subscription(product: UUIDstr) -> State: + subscription = PortInactive.from_product_id(product, uuid4()) + + return {"subscription": subscription, "subscription_id": subscription.subscription_id} + +@step("Initialize subscription") +def initialize_subscription(subscription: PortInactive) -> State: + pass + +@step("Provision port") +def provision_port(subscription: PortProvisioning) -> State: + pass + +@workflow( + "Create port", + target=Target.CREATE, +) +def create_port(): + + return ( + init + >> create_subscription + >> store_process_subscription(Target.CREATE) + >> initialize_subscription + >> provision_port + >> set_status(SubscriptionLifecycle.ACTIVE) + >> resync + >> done + ) -- GitLab