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

Fixed translation and removal of IPv4/6 networks for devices and trunks - modify trunks ISIS metric

parent 67d783d1
No related branches found
No related tags found
1 merge request!28Feature/nat178 trunks isis metric modify
{ {
"forms": { "forms": {
"fields": { "fields": {
"added_service_ports": "Add ports",
"confirm": "Confirm you are good with this", "confirm": "Confirm you are good with this",
"confirm_info": "Check the output of the playbook" "confirm_info": "Check the output of the playbook"
} }
},
"workflow": {
"modify_isis_metric": "Modify the ISIS metric"
} }
} }
...@@ -198,10 +198,8 @@ def provision_ip_trunk_iface_dry( ...@@ -198,10 +198,8 @@ def provision_ip_trunk_iface_dry(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": ( "label_text": (
"This is a dry run for the deployment of a new IP " "Provision of the Trunk interface [DRY] "
"trunk. Deployment is being taken care of by the " "Please refresh to get the results of the playbook"
"provisioning proxy, please wait for the results to "
"come back before continuing."
), ),
} }
...@@ -217,10 +215,8 @@ def provision_ip_trunk_iface_real( ...@@ -217,10 +215,8 @@ def provision_ip_trunk_iface_real(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": ( "label_text": (
"This is a live deployment of a new IP trunk. " "Provision of the Trunk interface [REAL] "
"Deployment is being taken care of by the " "Please refresh to get the results of the playbook"
"provisioning proxy, please wait for the results to "
"come back before continuing."
), ),
} }
...@@ -236,11 +232,8 @@ def provision_ip_trunk_isis_iface_dry( ...@@ -236,11 +232,8 @@ def provision_ip_trunk_isis_iface_dry(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": ( "label_text": (
"This is a dry run for the deployment of a new IP " "Provision of the ISIS interface [DRY]"
"trunk ISIS interface. " "Please refresh to get the results of the playbook"
"Deployment is being taken care of by the "
"provisioning proxy, please wait for the results to "
"come back before continuing."
), ),
} }
...@@ -256,11 +249,8 @@ def provision_ip_trunk_isis_iface_real( ...@@ -256,11 +249,8 @@ def provision_ip_trunk_isis_iface_real(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": ( "label_text": (
"This is a live deployment of a new IP trunk " "Provision of the ISIS interface [REAL]"
"ISIS interface. " "Please refresh to get the results of the playbook"
"Deployment is being taken care of by the "
"provisioning proxy, please wait for the results to "
"come back before continuing."
), ),
} }
...@@ -276,11 +266,8 @@ def provision_ip_trunk_ldp_iface_dry( ...@@ -276,11 +266,8 @@ def provision_ip_trunk_ldp_iface_dry(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": ( "label_text": (
"This is a dry run for the deployment of a new IP " "Provision of the LDP interface [DRY]"
"trunk LDP interface. " "Please refresh to get the results of the playbook"
"Deployment is being taken care of by the "
"provisioning proxy, please wait for the results to "
"come back before continuing."
), ),
} }
...@@ -296,11 +283,8 @@ def provision_ip_trunk_ldp_iface_real( ...@@ -296,11 +283,8 @@ def provision_ip_trunk_ldp_iface_real(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": ( "label_text": (
"This is a live deployment of a new IP trunk " "Provision of the LDP interface [REAL]"
"LDP interface. " "Please refresh to get the results of the playbook"
"Deployment is being taken care of by the "
"provisioning proxy, please wait for the results to "
"come back before continuing."
), ),
} }
...@@ -316,11 +300,8 @@ def provision_ip_trunk_lldp_iface_dry( ...@@ -316,11 +300,8 @@ def provision_ip_trunk_lldp_iface_dry(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": ( "label_text": (
"This is a dry run for the deployment of a new IP " "Provision of the LLDP interface [DRY]"
"trunk LLDP interface. " "Please refresh to get the results of the playbook"
"Deployment is being taken care of by the "
"provisioning proxy, please wait for the results to "
"come back before continuing."
), ),
} }
...@@ -336,11 +317,8 @@ def provision_ip_trunk_lldp_iface_real( ...@@ -336,11 +317,8 @@ def provision_ip_trunk_lldp_iface_real(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": ( "label_text": (
"This is a live deployment of a new IP trunk " "Provision of the LLDP interface [REAL]"
"LLDP interface. " "Please refresh to get the results of the playbook"
"Deployment is being taken care of by the "
"provisioning proxy, please wait for the results to "
"come back before continuing."
), ),
} }
......
...@@ -33,7 +33,6 @@ def modify_iptrunk_subscription( ...@@ -33,7 +33,6 @@ def modify_iptrunk_subscription(
subscription: Iptrunk, isis_metric: int subscription: Iptrunk, isis_metric: int
) -> State: ) -> State:
subscription.iptrunk.iptrunk_isis_metric = isis_metric subscription.iptrunk.iptrunk_isis_metric = isis_metric
subscription.description = f"Iptrunk {subscription.description} updated)"
return {"subscription": subscription} return {"subscription": subscription}
......
# noinspection PyProtectedMember # noinspection PyProtectedMember
import ipaddress
from orchestrator.forms import FormPage from orchestrator.forms import FormPage
from orchestrator.forms.validators import Label from orchestrator.forms.validators import Label
from orchestrator.targets import Target from orchestrator.targets import Target
...@@ -14,9 +15,11 @@ from orchestrator.workflows.steps import ( ...@@ -14,9 +15,11 @@ from orchestrator.workflows.steps import (
from orchestrator.workflows.utils import wrap_modify_initial_input_form from orchestrator.workflows.utils import wrap_modify_initial_input_form
from gso.products.product_types.iptrunk import Iptrunk from gso.products.product_types.iptrunk import Iptrunk
from gso.services import provisioning_proxy from gso.services import provisioning_proxy, ipam
from gso.services.provisioning_proxy import confirm_pp_results, \ from gso.services.provisioning_proxy import (
await_pp_results confirm_pp_results,
await_pp_results,
)
def initial_input_form_generator(subscription_id: UUIDstr) -> InputForm: def initial_input_form_generator(subscription_id: UUIDstr) -> InputForm:
...@@ -24,57 +27,109 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> InputForm: ...@@ -24,57 +27,109 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> InputForm:
class TerminateForm(FormPage): class TerminateForm(FormPage):
are_you_sure: Label = ( are_you_sure: Label = (
f'Are you sure you want to remove {subscription.description}?' f"Are you sure you want to remove {subscription.description}?"
) )
return TerminateForm return TerminateForm
@step('Deprovision IP trunk [DRY RUN]') @step("Set iptrunk ISIS metric to 9000")
def deprovision_ip_trunk_dry(subscription: Iptrunk, def modify_iptrunk_subscription(subscription: Iptrunk) -> State:
process_id: UUIDstr) -> State: subscription.iptrunk.iptrunk_isis_metric = 9000
provisioning_proxy.deprovision_ip_trunk(subscription, process_id)
return {"subscription": subscription}
@step("Drain traffic from trunk")
def drain_traffic_from_ip_trunk(
subscription: Iptrunk, process_id: UUIDstr
) -> State:
provisioning_proxy.provision_ip_trunk(
subscription, process_id, "isis_interface", False
)
return {
"subscription": subscription,
"label_text": "This is setting the ISIS metric of the trunk to 9000"
"trunk. "
"Press refresh to get the results\n"
"When traffic is drained, confirm to continue",
}
@step("Deprovision IP trunk [DRY RUN]")
def deprovision_ip_trunk_dry(
subscription: Iptrunk, process_id: UUIDstr
) -> State:
provisioning_proxy.deprovision_ip_trunk(subscription, process_id, True)
return {'subscription': subscription, return {
'label_text': 'This is a dry run for the termination of an IP ' "subscription": subscription,
'trunk. ' "label_text": "This is a dry run for the termination of an IP "
'Termination is being taken care of by the ' "trunk. "
'provisioning proxy, please wait for the results to ' "Press refresh to get the results",
'come back before continuing.' }
}
@step('Deprovision IP trunk [FOR REAL]') @step("Deprovision IP trunk [FOR REAL]")
def deprovision_ip_trunk_real(subscription: Iptrunk, def deprovision_ip_trunk_real(
process_id: UUIDstr) -> State: subscription: Iptrunk, process_id: UUIDstr
) -> State:
provisioning_proxy.deprovision_ip_trunk(subscription, process_id, False) provisioning_proxy.deprovision_ip_trunk(subscription, process_id, False)
return {'subscription': subscription, return {
'label_text': 'This is a termination of an IP trunk. ' "subscription": subscription,
'Termination is being taken care of by the ' "label_text": "This is a termination of an IP trunk. "
'provisioning proxy, please wait for the results to ' "Press refresh to get the results",
'come back before continuing.' }
}
@step("Deprovision IPv4 networks")
def deprovision_ip_trunk_ipv4(subscription: Iptrunk) -> None:
service_network = ipam.delete_service_network(
network=ipaddress.ip_network(
subscription.iptrunk.iptrunk_ipv4_network
),
service_type="TRUNK",
)
return {"service_network": service_network}
@step("Deprovision IPv6 networks")
def deprovision_ip_trunk_ipv6(subscription: Iptrunk) -> None:
service_network = ipam.delete_service_network(
network=ipaddress.ip_network(
subscription.iptrunk.iptrunk_ipv6_network
),
service_type="TRUNK",
)
return {"service_network": service_network}
@workflow( @workflow(
'Terminate IPtrunk', "Terminate IPtrunk",
initial_input_form=wrap_modify_initial_input_form( initial_input_form=wrap_modify_initial_input_form(
initial_input_form_generator), initial_input_form_generator
),
target=Target.TERMINATE, target=Target.TERMINATE,
) )
def terminate_iptrunk(): def terminate_iptrunk():
return ( return (
init init
>> store_process_subscription(Target.TERMINATE) >> store_process_subscription(Target.TERMINATE)
>> unsync >> unsync
>> deprovision_ip_trunk_dry >> modify_iptrunk_subscription
>> await_pp_results >> drain_traffic_from_ip_trunk
>> confirm_pp_results >> await_pp_results
>> deprovision_ip_trunk_real >> confirm_pp_results
>> await_pp_results >> deprovision_ip_trunk_dry
>> confirm_pp_results >> await_pp_results
>> set_status(SubscriptionLifecycle.TERMINATED) >> confirm_pp_results
>> resync >> deprovision_ip_trunk_real
>> done >> await_pp_results
>> confirm_pp_results
>> deprovision_ip_trunk_ipv4
>> deprovision_ip_trunk_ipv6
>> set_status(SubscriptionLifecycle.TERMINATED)
>> resync
>> done
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment