Skip to content
Snippets Groups Projects

Feature/update router create workflow

Merged Karel van Klink requested to merge feature/update-router-create-workflow into develop
Files
2
@@ -17,12 +17,12 @@ from pynetbox.models.dcim import Interfaces
from gso.products.product_blocks.iptrunk import (
IptrunkInterfaceBlockInactive,
IptrunkSideBlockProvisioning,
IptrunkSideBlockInactive,
IptrunkType,
PhyPortCapacity,
)
from gso.products.product_blocks.router import RouterVendor
from gso.products.product_types.iptrunk import IptrunkInactive, IptrunkProvisioning
from gso.products.product_types.iptrunk import IptrunkInactive
from gso.products.product_types.router import Router
from gso.services import infoblox, subscriptions
from gso.services.crm import get_customer_by_name
@@ -184,7 +184,7 @@ def create_subscription(product: UUIDstr, customer: str) -> State:
@step("Get information from IPAM")
def get_info_from_ipam(subscription: IptrunkProvisioning) -> State:
def get_info_from_ipam(subscription: IptrunkInactive) -> State:
"""Allocate IP resources in :term:`IPAM`."""
subscription.iptrunk.iptrunk_ipv4_network = infoblox.allocate_v4_network(
"TRUNK",
@@ -248,7 +248,7 @@ def initialize_subscription(
@step("Provision IP trunk interface [DRY RUN]")
def provision_ip_trunk_iface_dry(
subscription: IptrunkProvisioning,
subscription: IptrunkInactive,
callback_route: str,
process_id: UUIDstr,
tt_number: str,
@@ -276,7 +276,7 @@ def provision_ip_trunk_iface_dry(
@step("Provision IP trunk interface [FOR REAL]")
def provision_ip_trunk_iface_real(
subscription: IptrunkProvisioning,
subscription: IptrunkInactive,
callback_route: str,
process_id: UUIDstr,
tt_number: str,
@@ -304,7 +304,7 @@ def provision_ip_trunk_iface_real(
@step("Check IP connectivity of the trunk")
def check_ip_trunk_connectivity(
subscription: IptrunkProvisioning,
subscription: IptrunkInactive,
callback_route: str,
) -> State:
"""Check successful connectivity across the new trunk."""
@@ -322,7 +322,7 @@ def check_ip_trunk_connectivity(
@step("Provision IP trunk ISIS interface [DRY RUN]")
def provision_ip_trunk_isis_iface_dry(
subscription: IptrunkProvisioning,
subscription: IptrunkInactive,
callback_route: str,
process_id: UUIDstr,
tt_number: str,
@@ -350,7 +350,7 @@ def provision_ip_trunk_isis_iface_dry(
@step("Provision IP trunk ISIS interface [FOR REAL]")
def provision_ip_trunk_isis_iface_real(
subscription: IptrunkProvisioning,
subscription: IptrunkInactive,
callback_route: str,
process_id: UUIDstr,
tt_number: str,
@@ -378,7 +378,7 @@ def provision_ip_trunk_isis_iface_real(
@step("Check ISIS adjacency")
def check_ip_trunk_isis(
subscription: IptrunkProvisioning,
subscription: IptrunkInactive,
callback_route: str,
) -> State:
"""Run an Ansible playbook to confirm :term:`ISIS` adjacency."""
@@ -395,7 +395,7 @@ def check_ip_trunk_isis(
@step("NextBox integration")
def reserve_interfaces_in_netbox(subscription: IptrunkProvisioning) -> State:
def reserve_interfaces_in_netbox(subscription: IptrunkInactive) -> State:
"""Create the :term:`LAG` interfaces in NetBox and attach the lag interfaces to the physical interfaces."""
nbclient = NetboxClient()
for trunk_side in subscription.iptrunk.iptrunk_sides:
@@ -427,22 +427,25 @@ def reserve_interfaces_in_netbox(subscription: IptrunkProvisioning) -> State:
}
def _allocate_interfaces_in_netbox(iptrunk_side: IptrunkSideBlockProvisioning) -> None:
def _allocate_interfaces_in_netbox(iptrunk_side: IptrunkSideBlockInactive) -> None:
for interface in iptrunk_side.iptrunk_side_ae_members:
NetboxClient().allocate_interface(
device_name=iptrunk_side.iptrunk_side_node.router_fqdn,
iface_name=interface.interface_name,
)
fqdn = iptrunk_side.iptrunk_side_node.router_fqdn
iface_name = interface.interface_name
if not fqdn or not iface_name:
msg = f"FQDN and/or interface name missing in subscription {interface.owner_subscription_id}"
raise ValueError(msg)
NetboxClient().allocate_interface(device_name=fqdn, iface_name=iface_name)
@step("Allocate interfaces in Netbox for side A")
def netbox_allocate_side_a_interfaces(subscription: IptrunkProvisioning) -> None:
def netbox_allocate_side_a_interfaces(subscription: IptrunkInactive) -> None:
"""Allocate the :term:`LAG` interfaces for the Nokia router on side A."""
_allocate_interfaces_in_netbox(subscription.iptrunk.iptrunk_sides[0])
@step("Allocate interfaces in Netbox for side B")
def netbox_allocate_side_b_interfaces(subscription: IptrunkProvisioning) -> None:
def netbox_allocate_side_b_interfaces(subscription: IptrunkInactive) -> None:
"""Allocate the :term:`LAG` interfaces for the Nokia router on side B."""
_allocate_interfaces_in_netbox(subscription.iptrunk.iptrunk_sides[1])
Loading