Skip to content
Snippets Groups Projects
Verified Commit f0c5dbdd authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

update all interactions with the provisioning proxy

parent c9cc1ee9
No related branches found
No related tags found
1 merge request!96Make use of new callback step for external provisioning
...@@ -284,9 +284,17 @@ def _show_pp_results(state: State) -> FormGenerator: ...@@ -284,9 +284,17 @@ def _show_pp_results(state: State) -> FormGenerator:
return state return state
def pp_interaction(provisioning_step: Step, interaction_name: str) -> StepList: def pp_interaction(provisioning_step: Step) -> StepList:
"""
An interaction with the provisioning proxy :term:`LSO` as a callback step.
:param provisioning_step: A workflow step that performs an operation remotely using the provisioning proxy.
:type provisioning_step: :class:`Step`
:return: A list of steps that is executed as part of the workflow.
:rtype: :class:`StepList`
"""
return ( return (
begin begin
>> callback_step(name=interaction_name, action_step=provisioning_step, validate_step=_evaluate_pp_results) >> callback_step(name=provisioning_step.name, action_step=provisioning_step, validate_step=_evaluate_pp_results)
>> _show_pp_results >> _show_pp_results
) )
...@@ -21,10 +21,11 @@ class LAGMember(BaseModel): ...@@ -21,10 +21,11 @@ class LAGMember(BaseModel):
interface_description: str interface_description: str
def __hash__(self) -> int: def __hash__(self) -> int:
# TODO: check if this is still needed
return hash((self.interface_name, self.interface_description)) return hash((self.interface_name, self.interface_description))
@step("[COMMIT] Set ISIS metric to 90000") @step("[COMMIT] Set ISIS metric to 90.000")
def set_isis_to_90000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State: def set_isis_to_90000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
old_isis_metric = subscription.iptrunk.iptrunk_isis_metric old_isis_metric = subscription.iptrunk.iptrunk_isis_metric
subscription.iptrunk.iptrunk_isis_metric = 90000 subscription.iptrunk.iptrunk_isis_metric = 90000
...@@ -33,7 +34,6 @@ def set_isis_to_90000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str ...@@ -33,7 +34,6 @@ def set_isis_to_90000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str
return { return {
"subscription": subscription, "subscription": subscription,
"old_isis_metric": old_isis_metric, "old_isis_metric": old_isis_metric,
"label_text": "ISIS is being set to 90K by the provisioning proxy, please wait for the results",
} }
......
...@@ -221,63 +221,57 @@ def initialize_subscription( ...@@ -221,63 +221,57 @@ def initialize_subscription(
@step("Provision IP trunk interface [DRY RUN]") @step("Provision IP trunk interface [DRY RUN]")
def provision_ip_trunk_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State: def provision_ip_trunk_iface_dry(
provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "trunk_interface") subscription: IptrunkProvisioning, callback_route: str, process_id: UUIDstr, tt_number: str
) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, callback_route, tt_number, "trunk_interface", True)
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "[DRY RUN] Provisioning a trunk interface, please refresh to get the results of the playbook.",
}
@step("Provision IP trunk interface [FOR REAL]") @step("Provision IP trunk interface [FOR REAL]")
def provision_ip_trunk_iface_real(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State: def provision_ip_trunk_iface_real(
provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "trunk_interface", False) subscription: IptrunkProvisioning, callback_route: str, process_id: UUIDstr, tt_number: str
) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, callback_route, tt_number, "trunk_interface", False)
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "Provisioning a trunk interface, please refresh to get the results of the playbook.",
}
@step("Check IP connectivity of the trunk") @step("Check IP connectivity of the trunk")
def check_ip_trunk_connectivity(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State: def check_ip_trunk_connectivity(
provisioning_proxy.check_ip_trunk(subscription, process_id, tt_number, "ping") subscription: IptrunkProvisioning, callback_route: str, process_id: UUIDstr, tt_number: str
) -> State:
provisioning_proxy.check_ip_trunk(subscription, process_id, callback_route, tt_number, "ping")
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "[CHECK] 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, tt_number: str) -> State: def provision_ip_trunk_isis_iface_dry(
provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface") subscription: IptrunkProvisioning, callback_route: str, process_id: UUIDstr, tt_number: str
) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, callback_route, tt_number, "isis_interface")
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "[DRY RUN] Provisioning ISIS interfaces, please refresh to get the results of the playbook.",
}
@step("Provision IP trunk ISIS interface [FOR REAL]") @step("Provision IP trunk ISIS interface [FOR REAL]")
def provision_ip_trunk_isis_iface_real(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State: def provision_ip_trunk_isis_iface_real(
provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False) subscription: IptrunkProvisioning, callback_route: str, process_id: UUIDstr, tt_number: str
) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, callback_route, tt_number, "isis_interface", False)
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "[COMMIT] Provisioning ISIS interfaces, please refresh to get the results of the playbook.",
}
@step("Check ISIS adjacency") @step("Check ISIS adjacency")
def check_ip_trunk_isis(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State: def check_ip_trunk_isis(
provisioning_proxy.check_ip_trunk(subscription, process_id, tt_number, "isis") subscription: IptrunkProvisioning, callback_route: str, process_id: UUIDstr, tt_number: str
) -> State:
provisioning_proxy.check_ip_trunk(subscription, process_id, callback_route, tt_number, "isis")
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "[CHECK] Checking ISIS adjacency, please refresh to get the results of the playbook.",
}
@step("NextBox integration") @step("NextBox integration")
...@@ -342,12 +336,12 @@ def create_iptrunk() -> StepList: ...@@ -342,12 +336,12 @@ def create_iptrunk() -> StepList:
>> initialize_subscription >> initialize_subscription
>> get_info_from_ipam >> get_info_from_ipam
>> reserve_interfaces_in_netbox >> reserve_interfaces_in_netbox
>> pp_interaction(provision_ip_trunk_iface_dry, "Provision IPtrunk interface [DRY RUN]") >> pp_interaction(provision_ip_trunk_iface_dry)
>> pp_interaction(provision_ip_trunk_iface_real, "Provision IPtrunk interface [FOR REAL]") >> pp_interaction(provision_ip_trunk_iface_real)
>> pp_interaction(check_ip_trunk_connectivity, "Check IPtrunk connectivity") >> pp_interaction(check_ip_trunk_connectivity)
>> pp_interaction(provision_ip_trunk_isis_iface_dry, "Provision ISIS interface [DRY RUN]") >> pp_interaction(provision_ip_trunk_isis_iface_dry)
>> pp_interaction(provision_ip_trunk_isis_iface_real, "Provision ISIS interface [FOR REAL]") >> pp_interaction(provision_ip_trunk_isis_iface_real)
>> pp_interaction(check_ip_trunk_isis, "Validate IPtrunk") >> pp_interaction(check_ip_trunk_isis)
>> allocate_interfaces_in_netbox >> allocate_interfaces_in_netbox
>> set_status(SubscriptionLifecycle.ACTIVE) >> set_status(SubscriptionLifecycle.ACTIVE)
>> resync >> resync
......
...@@ -152,6 +152,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: ...@@ -152,6 +152,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
@step("[DRY RUN] Disable configuration on old router") @step("[DRY RUN] Disable configuration on old router")
def disable_old_config_dry( def disable_old_config_dry(
subscription: Iptrunk, subscription: Iptrunk,
callback_route: str,
new_node: Router, new_node: Router,
new_lag_interface: str, new_lag_interface: str,
new_lag_member_interfaces: list[dict], new_lag_member_interfaces: list[dict],
...@@ -166,6 +167,7 @@ def disable_old_config_dry( ...@@ -166,6 +167,7 @@ def disable_old_config_dry(
new_lag_member_interfaces, new_lag_member_interfaces,
replace_index, replace_index,
process_id, process_id,
callback_route,
tt_number, tt_number,
"deactivate", "deactivate",
"deactivate", "deactivate",
...@@ -173,13 +175,13 @@ def disable_old_config_dry( ...@@ -173,13 +175,13 @@ def disable_old_config_dry(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": "[DRY RUN] Disable config on old node, please refresh to get the results of the playbook.",
} }
@step("[REAL] Disable configuration on old router") @step("[REAL] Disable configuration on old router")
def disable_old_config_real( def disable_old_config_real(
subscription: Iptrunk, subscription: Iptrunk,
callback_route: str,
new_node: Router, new_node: Router,
new_lag_interface: str, new_lag_interface: str,
new_lag_member_interfaces: list[dict], new_lag_member_interfaces: list[dict],
...@@ -194,6 +196,7 @@ def disable_old_config_real( ...@@ -194,6 +196,7 @@ def disable_old_config_real(
new_lag_member_interfaces, new_lag_member_interfaces,
replace_index, replace_index,
process_id, process_id,
callback_route,
tt_number, tt_number,
"deactivate", "deactivate",
"deactivate", "deactivate",
...@@ -202,13 +205,13 @@ def disable_old_config_real( ...@@ -202,13 +205,13 @@ def disable_old_config_real(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": "Disable config on the old node, please refresh to get the results of the playbook.",
} }
@step("[DRY RUN] Deploy configuration on new router") @step("[DRY RUN] Deploy configuration on new router")
def deploy_new_config_dry( def deploy_new_config_dry(
subscription: Iptrunk, subscription: Iptrunk,
callback_route: str,
new_node: Router, new_node: Router,
new_lag_interface: str, new_lag_interface: str,
new_lag_member_interfaces: list[dict], new_lag_member_interfaces: list[dict],
...@@ -223,6 +226,7 @@ def deploy_new_config_dry( ...@@ -223,6 +226,7 @@ def deploy_new_config_dry(
new_lag_member_interfaces, new_lag_member_interfaces,
replace_index, replace_index,
process_id, process_id,
callback_route,
tt_number, tt_number,
"deploy", "deploy",
"trunk_interface", "trunk_interface",
...@@ -232,13 +236,13 @@ def deploy_new_config_dry( ...@@ -232,13 +236,13 @@ def deploy_new_config_dry(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": "[DRY RUN] Deploying new trunk interface, please refresh to get the results of the playbook.",
} }
@step("Deploy configuration on new router") @step("Deploy configuration on new router")
def deploy_new_config_real( def deploy_new_config_real(
subscription: Iptrunk, subscription: Iptrunk,
callback_route: str,
new_node: Router, new_node: Router,
new_lag_interface: str, new_lag_interface: str,
new_lag_member_interfaces: list[dict], new_lag_member_interfaces: list[dict],
...@@ -253,6 +257,7 @@ def deploy_new_config_real( ...@@ -253,6 +257,7 @@ def deploy_new_config_real(
new_lag_member_interfaces, new_lag_member_interfaces,
replace_index, replace_index,
process_id, process_id,
callback_route,
tt_number, tt_number,
"deploy", "deploy",
"trunk_interface", "trunk_interface",
...@@ -263,7 +268,6 @@ def deploy_new_config_real( ...@@ -263,7 +268,6 @@ def deploy_new_config_real(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": "[COMMIT] Deploying new trunk interface, please refresh to get the results of the playbook.",
} }
...@@ -289,6 +293,7 @@ def confirm_continue_move_fiber() -> FormGenerator: ...@@ -289,6 +293,7 @@ def confirm_continue_move_fiber() -> FormGenerator:
@step("Deploy ISIS configuration on new router") @step("Deploy ISIS configuration on new router")
def deploy_new_isis( def deploy_new_isis(
subscription: Iptrunk, subscription: Iptrunk,
callback_route: str,
new_node: Router, new_node: Router,
new_lag_interface: str, new_lag_interface: str,
new_lag_member_interfaces: list[dict], new_lag_member_interfaces: list[dict],
...@@ -303,6 +308,7 @@ def deploy_new_isis( ...@@ -303,6 +308,7 @@ def deploy_new_isis(
new_lag_member_interfaces, new_lag_member_interfaces,
replace_index, replace_index,
process_id, process_id,
callback_route,
tt_number, tt_number,
"deploy", "deploy",
"isis_interface", "isis_interface",
...@@ -313,7 +319,6 @@ def deploy_new_isis( ...@@ -313,7 +319,6 @@ def deploy_new_isis(
return { return {
"subscription": subscription, "subscription": subscription,
"label_text": "Deploy ISIS config on the new router, please refresh to get the results of the playbook.",
} }
...@@ -333,9 +338,11 @@ def confirm_continue_restore_isis() -> FormGenerator: ...@@ -333,9 +338,11 @@ def confirm_continue_restore_isis() -> FormGenerator:
@step("Restore ISIS metric to original value") @step("Restore ISIS metric to original value")
def restore_isis_metric(subscription: Iptrunk, process_id: UUIDstr, tt_number: str, old_isis_metric: int) -> State: def restore_isis_metric(
subscription: Iptrunk, process_id: UUIDstr, callback_route: str, tt_number: str, old_isis_metric: int
) -> State:
subscription.iptrunk.iptrunk_isis_metric = old_isis_metric subscription.iptrunk.iptrunk_isis_metric = old_isis_metric
provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False) provisioning_proxy.provision_ip_trunk(subscription, process_id, callback_route, tt_number, "isis_interface", False)
return {"subscription": subscription} return {"subscription": subscription}
...@@ -343,6 +350,7 @@ def restore_isis_metric(subscription: Iptrunk, process_id: UUIDstr, tt_number: s ...@@ -343,6 +350,7 @@ def restore_isis_metric(subscription: Iptrunk, process_id: UUIDstr, tt_number: s
@step("[DRY RUN] Delete configuration on old router") @step("[DRY RUN] Delete configuration on old router")
def delete_old_config_dry( def delete_old_config_dry(
subscription: Iptrunk, subscription: Iptrunk,
callback_route: str,
new_node: Router, new_node: Router,
new_lag_interface: str, new_lag_interface: str,
new_lag_member_interfaces: list[dict], new_lag_member_interfaces: list[dict],
...@@ -357,6 +365,7 @@ def delete_old_config_dry( ...@@ -357,6 +365,7 @@ def delete_old_config_dry(
new_lag_member_interfaces, new_lag_member_interfaces,
replace_index, replace_index,
process_id, process_id,
callback_route,
tt_number, tt_number,
"delete", "delete",
"delete", "delete",
...@@ -364,16 +373,13 @@ def delete_old_config_dry( ...@@ -364,16 +373,13 @@ def delete_old_config_dry(
logger.warning("Playbook verb is not yet properly set.") logger.warning("Playbook verb is not yet properly set.")
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "[DRY RUN] Removing configuration from old router,"
"please refresh to get the results of the playbook.",
}
@step("Delete configuration on old router") @step("Delete configuration on old router")
def delete_old_config_real( def delete_old_config_real(
subscription: Iptrunk, subscription: Iptrunk,
callback_route: str,
new_node: Router, new_node: Router,
new_lag_interface: str, new_lag_interface: str,
new_lag_member_interfaces: list[dict], new_lag_member_interfaces: list[dict],
...@@ -388,6 +394,7 @@ def delete_old_config_real( ...@@ -388,6 +394,7 @@ def delete_old_config_real(
new_lag_member_interfaces, new_lag_member_interfaces,
replace_index, replace_index,
process_id, process_id,
callback_route,
tt_number, tt_number,
"delete", "delete",
"delete", "delete",
...@@ -396,10 +403,7 @@ def delete_old_config_real( ...@@ -396,10 +403,7 @@ def delete_old_config_real(
logger.warning("Playbook verb is not yet properly set.") logger.warning("Playbook verb is not yet properly set.")
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "Removing configuration from old router, please refresh to get the results of the playbook.",
}
@step("Update IPAM") @step("Update IPAM")
...@@ -506,17 +510,17 @@ def migrate_iptrunk() -> StepList: ...@@ -506,17 +510,17 @@ def migrate_iptrunk() -> StepList:
>> store_process_subscription(Target.MODIFY) >> store_process_subscription(Target.MODIFY)
>> unsync >> unsync
>> reserve_interfaces_in_netbox >> reserve_interfaces_in_netbox
>> pp_interaction(set_isis_to_90000, "Set ISIS metric to 90.000") >> pp_interaction(set_isis_to_90000)
>> pp_interaction(disable_old_config_dry, "Disable old configuration [DRY RUN]") >> pp_interaction(disable_old_config_dry)
>> pp_interaction(disable_old_config_real, "Disable old configuration [FOR REAL]") >> pp_interaction(disable_old_config_real)
>> pp_interaction(deploy_new_config_dry, "Deploy new configuration [DRY RUN]") >> pp_interaction(deploy_new_config_dry)
>> pp_interaction(deploy_new_config_real, "Deploy new configuration [FOR REAL]") >> pp_interaction(deploy_new_config_real)
>> confirm_continue_move_fiber >> confirm_continue_move_fiber
>> pp_interaction(deploy_new_isis, "Deploy new ISIS interface") >> pp_interaction(deploy_new_isis)
>> confirm_continue_restore_isis >> confirm_continue_restore_isis
>> pp_interaction(restore_isis_metric, "Restore original ISIS metric") >> pp_interaction(restore_isis_metric)
>> pp_interaction(delete_old_config_dry, "Delete old configuration [DRY RUN]") >> pp_interaction(delete_old_config_dry)
>> pp_interaction(delete_old_config_real, "Delete old configuration [FOR REAL]") >> pp_interaction(delete_old_config_real)
>> update_ipam >> update_ipam
>> update_subscription_model >> update_subscription_model
>> update_netbox >> update_netbox
......
...@@ -30,25 +30,21 @@ def modify_iptrunk_subscription(subscription: Iptrunk, isis_metric: int) -> Stat ...@@ -30,25 +30,21 @@ def modify_iptrunk_subscription(subscription: Iptrunk, isis_metric: int) -> Stat
@step("Provision IP trunk ISIS interface [DRY RUN]") @step("Provision IP trunk ISIS interface [DRY RUN]")
def provision_ip_trunk_isis_iface_dry(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State: def provision_ip_trunk_isis_iface_dry(
provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface") subscription: Iptrunk, process_id: UUIDstr, callback_route: str, tt_number: str
) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, callback_route, tt_number, "isis_interface")
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "This is a dry run for the deployment of a new IP trunk ISIS interface. Deployment is being taken"
" care of by the provisioning proxy, please wait for the results to come back before continuing.",
}
@step("Provision IP trunk ISIS interface [FOR REAL]") @step("Provision IP trunk ISIS interface [FOR REAL]")
def provision_ip_trunk_isis_iface_real(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State: def provision_ip_trunk_isis_iface_real(
provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False) subscription: Iptrunk, process_id: UUIDstr, callback_route: str, tt_number: str
) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, callback_route, tt_number, "isis_interface", False)
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "This is a live deployment of a new IP trunk ISIS interface. Deployment is being taken care of by"
" the provisioning proxy, please wait for the results to come back before continuing.",
}
@workflow( @workflow(
...@@ -62,8 +58,8 @@ def modify_isis_metric() -> StepList: ...@@ -62,8 +58,8 @@ def modify_isis_metric() -> StepList:
>> store_process_subscription(Target.MODIFY) >> store_process_subscription(Target.MODIFY)
>> unsync >> unsync
>> modify_iptrunk_subscription >> modify_iptrunk_subscription
>> pp_interaction(provision_ip_trunk_isis_iface_dry, "Provision ISIS interface [DRY RUN]") >> pp_interaction(provision_ip_trunk_isis_iface_dry)
>> pp_interaction(provision_ip_trunk_isis_iface_real, "Provision ISIS interface [FOR REAL]") >> pp_interaction(provision_ip_trunk_isis_iface_real)
>> resync >> resync
>> done >> done
) )
...@@ -178,30 +178,24 @@ def modify_iptrunk_subscription( ...@@ -178,30 +178,24 @@ def modify_iptrunk_subscription(
@step("Provision IP trunk interface [DRY RUN]") @step("Provision IP trunk interface [DRY RUN]")
def provision_ip_trunk_iface_dry( def provision_ip_trunk_iface_dry(
subscription: Iptrunk, process_id: UUIDstr, tt_number: str, removed_ae_members: List[str] subscription: Iptrunk, process_id: UUIDstr, callback_route: str, tt_number: str, removed_ae_members: List[str]
) -> State: ) -> State:
provisioning_proxy.provision_ip_trunk( provisioning_proxy.provision_ip_trunk(
subscription, process_id, tt_number, "trunk_interface", True, removed_ae_members subscription, process_id, callback_route, tt_number, "trunk_interface", True, removed_ae_members
) )
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "[DRY RUN] Provisioning trunk interface, please refresh to get the results of the playbook.",
}
@step("Provision IP trunk interface [FOR REAL]") @step("Provision IP trunk interface [FOR REAL]")
def provision_ip_trunk_iface_real( def provision_ip_trunk_iface_real(
subscription: Iptrunk, process_id: UUIDstr, tt_number: str, removed_ae_members: List[str] subscription: Iptrunk, process_id: UUIDstr, callback_route: str, tt_number: str, removed_ae_members: List[str]
) -> State: ) -> State:
provisioning_proxy.provision_ip_trunk( provisioning_proxy.provision_ip_trunk(
subscription, process_id, tt_number, "trunk_interface", False, removed_ae_members subscription, process_id, callback_route, tt_number, "trunk_interface", False, removed_ae_members
) )
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "Provisioning trunk interface, please refresh to get the results of the playbook.",
}
@step("Update interfaces in Netbox. Reserving interfaces.") @step("Update interfaces in Netbox. Reserving interfaces.")
...@@ -279,8 +273,8 @@ def modify_trunk_interface() -> StepList: ...@@ -279,8 +273,8 @@ def modify_trunk_interface() -> StepList:
>> unsync >> unsync
>> modify_iptrunk_subscription >> modify_iptrunk_subscription
>> update_interfaces_in_netbox >> update_interfaces_in_netbox
>> pp_interaction(provision_ip_trunk_iface_dry, "Provision IPtrunk interface [DRY RUN]") >> pp_interaction(provision_ip_trunk_iface_dry)
>> pp_interaction(provision_ip_trunk_iface_real, "Provision IPtrunk interface [FOR REAL") >> pp_interaction(provision_ip_trunk_iface_real)
>> allocate_interfaces_in_netbox >> allocate_interfaces_in_netbox
>> resync >> resync
>> done >> done
......
...@@ -29,33 +29,26 @@ def initial_input_form_generator() -> FormGenerator: ...@@ -29,33 +29,26 @@ def initial_input_form_generator() -> FormGenerator:
@step("Drain traffic from trunk") @step("Drain traffic from trunk")
def drain_traffic_from_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State: def drain_traffic_from_ip_trunk(
provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False) subscription: Iptrunk, process_id: UUIDstr, callback_route: str, tt_number: str
return { ) -> State:
"subscription": subscription, provisioning_proxy.provision_ip_trunk(subscription, process_id, callback_route, tt_number, "isis_interface", False)
"label_text": "This is setting the ISIS metric of the trunk to 9000. Press refresh to get the results."
"When traffic is drained, confirm to continue.", return {"subscription": subscription}
}
@step("Deprovision IP trunk [DRY RUN]") @step("Deprovision IP trunk [DRY RUN]")
def deprovision_ip_trunk_dry(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State: def deprovision_ip_trunk_dry(subscription: Iptrunk, process_id: UUIDstr, callback_route: str, tt_number: str) -> State:
provisioning_proxy.deprovision_ip_trunk(subscription, process_id, tt_number, True) provisioning_proxy.deprovision_ip_trunk(subscription, process_id, callback_route, tt_number, True)
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "[DRY RUN] Terminating IP trunk, please refresh to get the results of the playbook.",
}
@step("Deprovision IP trunk [FOR REAL]") @step("Deprovision IP trunk [FOR REAL]")
def deprovision_ip_trunk_real(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State: def deprovision_ip_trunk_real(subscription: Iptrunk, process_id: UUIDstr, callback_route: str, tt_number: str) -> State:
provisioning_proxy.deprovision_ip_trunk(subscription, process_id, tt_number, False) provisioning_proxy.deprovision_ip_trunk(subscription, process_id, callback_route, tt_number, False)
return { return {"subscription": subscription}
"subscription": subscription,
"label_text": "[COMMIT] Terminating IP trunk, please refresh to get the results of the playbook.",
}
@step("Deprovision IPv4 networks") @step("Deprovision IPv4 networks")
...@@ -83,9 +76,9 @@ def terminate_iptrunk() -> StepList: ...@@ -83,9 +76,9 @@ def terminate_iptrunk() -> StepList:
config_steps = ( config_steps = (
init init
>> pp_interaction(set_isis_to_90000, "Set ISIS metric to 90.000") >> pp_interaction(set_isis_to_90000)
>> pp_interaction(deprovision_ip_trunk_dry, "Deprovision IPtrunk [DRY RUN]") >> pp_interaction(deprovision_ip_trunk_dry)
>> pp_interaction(deprovision_ip_trunk_real, "Deprovision IPtrunk [FOR REAL]") >> pp_interaction(deprovision_ip_trunk_real)
) )
ipam_steps = init >> deprovision_ip_trunk_ipv4 >> deprovision_ip_trunk_ipv6 ipam_steps = init >> deprovision_ip_trunk_ipv4 >> deprovision_ip_trunk_ipv6
......
...@@ -153,8 +153,8 @@ def create_netbox_device(subscription: RouterProvisioning) -> State: ...@@ -153,8 +153,8 @@ def create_netbox_device(subscription: RouterProvisioning) -> State:
subscription.router.router_fqdn, subscription.router.router_fqdn,
str(subscription.router.router_site.site_tier), # type: ignore[union-attr] str(subscription.router.router_site.site_tier), # type: ignore[union-attr]
) )
return {"subscription": subscription, "label_text": "Creating NetBox device"} return {"subscription": subscription}
return {"subscription": subscription, "label_text": "Skipping NetBox device creation for Juniper router."} return {"subscription": subscription}
@step("Verify IPAM resources for loopback interface") @step("Verify IPAM resources for loopback interface")
...@@ -210,8 +210,8 @@ def create_router() -> StepList: ...@@ -210,8 +210,8 @@ def create_router() -> StepList:
>> initialize_subscription >> initialize_subscription
>> ipam_allocate_loopback >> ipam_allocate_loopback
>> should_allocate_ias(ipam_allocate_ias_networks) >> should_allocate_ias(ipam_allocate_ias_networks)
>> pp_interaction(provision_router_dry, "Provision new router [DRY RUN]") >> pp_interaction(provision_router_dry)
>> pp_interaction(provision_router_real, "Provision new router [FOR REAL]") >> pp_interaction(provision_router_real)
>> verify_ipam_loopback >> verify_ipam_loopback
>> should_allocate_ias(verify_ipam_ias) >> should_allocate_ias(verify_ipam_ias)
>> create_netbox_device >> create_netbox_device
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment