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
# from orchestrator.forms.validators import Choice, choice_list
from orchestrator.forms import FormPage
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 SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import done, init, step, workflow
......@@ -30,16 +32,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
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")
def create_subscription(product: UUIDstr) -> State:
......@@ -126,11 +118,45 @@ def provision_device_dry(
return {"output": out_splitted}
@step("Confirm provisioning")
def confirm_provisioning_step() -> State:
user_input = confirmation_form()
if not user_input.choice:
exit
@inputstep("Confirm step", assignee ="CHANGES")
def confirm_step() -> FormGenerator:
class ConfirmForm(FormPage):
class Config:
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(
"Create Device",
......@@ -147,7 +173,8 @@ def create_device():
>> get_snmp_info
>> initialize_subscription
>> provision_device_dry
>> confirm_provisioning_step
>> confirm_step
>> provision_device_real
>> set_status(SubscriptionLifecycle.ACTIVE)
>> resync
>> done
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment