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

Rebase develop

parent 3d68aec1
Branches
Tags
1 merge request!52Feature/nat 212 213
...@@ -124,6 +124,24 @@ def provision_ip_trunk( ...@@ -124,6 +124,24 @@ def provision_ip_trunk(
_send_request("ip_trunk", parameters, process_id, CUDOperation.POST) _send_request("ip_trunk", parameters, process_id, CUDOperation.POST)
def check_ip_trunk(
subscription: IptrunkProvisioning, process_id: UUIDstr, check_name: str
) -> None:
"""Provision an IP trunk service using {term}`LSO`.
:param subscription: The subscription object that's to be provisioned.
:type subscription: {class}`IptrunkProvisioning`
:param process_id: The related process ID, used for callback.
:type process_id: UUIDstr
:param check_name: The name of the check to execute
:rtype: None
"""
parameters = {
"subscription": json.loads(json_dumps(subscription)),
"check_name": check_name,
}
_send_request("ip_trunk/perform_check", parameters, process_id, CUDOperation.POST)
def deprovision_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, dry_run: bool = True) -> None: def deprovision_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, dry_run: bool = True) -> None:
"""Deprovision an IP trunk service using {term}`LSO`. """Deprovision an IP trunk service using {term}`LSO`.
......
import ipaddress
import re
from uuid import uuid4
from orchestrator.db.models import ProductTable, SubscriptionTable
# noinspection PyProtectedMember
from orchestrator.forms import FormPage
from orchestrator.forms.validators import Choice
from orchestrator.targets import Target
from orchestrator.types import FormGenerator, State
from orchestrator.types import SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import done, init, step, workflow
from orchestrator.workflows.steps import resync, store_process_subscription, unsync
from orchestrator.workflows.utils import wrap_modify_initial_input_form
from gso.products.product_blocks import device as device_pb
from gso.products.product_types import device
from gso.products.product_types.device import (
Device,
)
from gso.products.product_types.site import Site
from gso.services import _ipam
def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
subscription = Device.from_subscription(subscription_id)
class SimoneDeviceForm(FormPage):
class Config:
random_input: str
user_input = yield SimoneDeviceForm
return user_input.dict()
@step("Show the devices")
def display_devices() -> State:
devices = []
for subscription_id in (
SubscriptionTable.query.join(ProductTable)
.filter(
ProductTable.product_type == "Device",
SubscriptionTable.status == "active",
)
.with_entities(
SubscriptionTable.subscription_id,
)
.all()
):
devices.append(Device.from_subscription(subscription_id))
pe_devices = []
p_devices = []
for device in devices :
if device.device.device_access_via_ts == False :
if device.device.device_role == "p":
p_devices.append(device)
if device.device.device_role == "pe":
pe_devices.append(device)
return {
"pe_devices": pe_devices,
"p_devices": p_devices,
}
@workflow(
"Add node to iBGP",
initial_input_form=wrap_modify_initial_input_form(
initial_input_form_generator
),
target=Target.MODIFY,
)
def insert_in_ibgp():
return (
init
>> store_process_subscription(Target.MODIFY)
>> unsync
>> display_devices
>> resync
>> done
)
\ No newline at end of file
...@@ -172,6 +172,14 @@ def provision_ip_trunk_iface_real(subscription: IptrunkProvisioning, process_id: ...@@ -172,6 +172,14 @@ def provision_ip_trunk_iface_real(subscription: IptrunkProvisioning, process_id:
"label_text": "Provisioning a trunk interface, please refresh to get the results of the playbook.", "label_text": "Provisioning a trunk interface, please refresh to get the results of the playbook.",
} }
@step("Check IP connectivity of the trunk")
def check_ip_trunk_connectivity(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
provisioning_proxy.check_ip_trunk(subscription, process_id, "ping")
return {
"subscription": subscription,
"label_text": "Checking IP traffic flow on the trunk, to get the results of the playbook.",
}
@step("Provision IP trunk ISIS interface [DRY RUN]") @step("Provision IP trunk ISIS interface [DRY RUN]")
def provision_ip_trunk_isis_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State: def provision_ip_trunk_isis_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
...@@ -193,6 +201,15 @@ def provision_ip_trunk_isis_iface_real(subscription: IptrunkProvisioning, proces ...@@ -193,6 +201,15 @@ def provision_ip_trunk_isis_iface_real(subscription: IptrunkProvisioning, proces
} }
@step("Check ISIS adjacency")
def check_ip_trunk_isis(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
provisioning_proxy.check_ip_trunk(subscription, process_id, "isis")
return {
"subscription": subscription,
"label_text": "Checking ISIS adjacencies, please refresh to get the results of the playbook.",
}
@step("Provision IP trunk LDP interface [DRY RUN]") @step("Provision IP trunk LDP interface [DRY RUN]")
def provision_ip_trunk_ldp_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State: def provision_ip_trunk_ldp_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, "ldp_interface") provisioning_proxy.provision_ip_trunk(subscription, process_id, "ldp_interface")
...@@ -247,10 +264,10 @@ def create_iptrunk() -> StepList: ...@@ -247,10 +264,10 @@ def create_iptrunk() -> StepList:
>> get_info_from_ipam >> get_info_from_ipam
>> pp_interaction(provision_ip_trunk_iface_dry, 3) >> pp_interaction(provision_ip_trunk_iface_dry, 3)
>> pp_interaction(provision_ip_trunk_iface_real, 3) >> pp_interaction(provision_ip_trunk_iface_real, 3)
>> check_ip_trunk_connectivity
>> pp_interaction(provision_ip_trunk_isis_iface_dry, 3) >> pp_interaction(provision_ip_trunk_isis_iface_dry, 3)
>> pp_interaction(provision_ip_trunk_isis_iface_real, 3) >> pp_interaction(provision_ip_trunk_isis_iface_real, 3)
>> pp_interaction(provision_ip_trunk_ldp_iface_dry, 3) >> check_ip_trunk_isis
>> pp_interaction(provision_ip_trunk_ldp_iface_real, 3)
>> pp_interaction(provision_ip_trunk_lldp_iface_dry, 3) >> pp_interaction(provision_ip_trunk_lldp_iface_dry, 3)
>> pp_interaction(provision_ip_trunk_lldp_iface_real, 3) >> pp_interaction(provision_ip_trunk_lldp_iface_real, 3)
>> set_status(SubscriptionLifecycle.ACTIVE) >> set_status(SubscriptionLifecycle.ACTIVE)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment