Skip to content
Snippets Groups Projects
Commit fc5aa43a authored by Simone Spinelli's avatar Simone Spinelli
Browse files

Confirmation step working

parent ea444e3b
Branches
Tags
1 merge request!5Device workflows
...@@ -5,6 +5,8 @@ from uuid import uuid4 ...@@ -5,6 +5,8 @@ from uuid import uuid4
# from orchestrator.forms.validators import Choice, choice_list # from orchestrator.forms.validators import Choice, choice_list
from orchestrator.forms import FormPage from orchestrator.forms import FormPage
from orchestrator.targets import Target from orchestrator.targets import Target
from orchestrator.workflow import inputstep
from orchestrator.forms.validators import Accept
from orchestrator.types import FormGenerator, State from orchestrator.types import FormGenerator, State
from orchestrator.types import SubscriptionLifecycle, UUIDstr from orchestrator.types import SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import done, init, step, workflow from orchestrator.workflow import done, init, step, workflow
...@@ -30,16 +32,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ...@@ -30,16 +32,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
return user_input.dict() return user_input.dict()
def confirmation_form() -> FormGenerator:
class ConfirmActionForm(FormPage):
class Config:
title = "Confirm your action"
choice: bool
user_input = yield ConfirmActionForm
return user_input.dict()
@step("Create subscription") @step("Create subscription")
def create_subscription(product: UUIDstr) -> State: def create_subscription(product: UUIDstr) -> State:
...@@ -126,11 +118,45 @@ def provision_device_dry( ...@@ -126,11 +118,45 @@ def provision_device_dry(
return {"output": out_splitted} return {"output": out_splitted}
@step("Confirm provisioning") @inputstep("Confirm step", assignee ="CHANGES")
def confirm_provisioning_step() -> State: def confirm_step() -> FormGenerator:
user_input = confirmation_form() class ConfirmForm(FormPage):
if not user_input.choice: class Config:
exit title = "confirm"
confirm: "Accept"
user_input = yield ConfirmForm
return {"confirm": user_input.confirm}
@step("Provision device [FOR REAL]")
def provision_device_real(
subscription: DeviceProvisioning, fqdn: str, ts_address: str, ts_port: str
) -> State:
import ansible_runner
r = ansible_runner.run(
private_data_dir="/opt/geant-gap-ansible",
playbook="base_config.yaml",
inventory=subscription.device.fqdn,
extravars={
"lo_ipv4_address": str(subscription.device.lo_ipv4_address),
"lo_ipv6_address": str(subscription.device.lo_ipv6_address),
"lo_iso_address": subscription.device.lo_iso_address,
"snmp_location": subscription.device.snmp_location,
"si_ipv4_network": str(subscription.device.si_ipv4_network),
"lt_ipv4_network": str(subscription.device.ias_lt_ipv4_network),
"lt_ipv6_network": str(subscription.device.ias_lt_ipv6_network),
"site_country_code": subscription.device.site_country_code,
"verb": "deploy",
},
)
out = r.stdout.read()
out_splitted = out.splitlines()
return {"output": out_splitted}
@workflow( @workflow(
"Create Device", "Create Device",
...@@ -147,7 +173,8 @@ def create_device(): ...@@ -147,7 +173,8 @@ def create_device():
>> get_snmp_info >> get_snmp_info
>> initialize_subscription >> initialize_subscription
>> provision_device_dry >> provision_device_dry
>> confirm_provisioning_step >> confirm_step
>> provision_device_real
>> set_status(SubscriptionLifecycle.ACTIVE) >> set_status(SubscriptionLifecycle.ACTIVE)
>> resync >> resync
>> done >> done
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment