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
This commit is part of merge request !96. Comments created here will be created in the context of that merge request.
...@@ -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