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

Making tox happy

parent a39fd378
No related branches found
No related tags found
No related merge requests found
Pipeline #84053 failed
......@@ -80,7 +80,9 @@ def _send_request(endpoint: str, parameters: dict, process_id: UUIDstr, operatio
raise AssertionError(request.content)
def provision_router(subscription: RouterProvisioning, process_id: UUIDstr, tt_number: str, dry_run: bool = True) -> None:
def provision_router(
subscription: RouterProvisioning, process_id: UUIDstr, tt_number: str, dry_run: bool = True
) -> None:
"""Provision a new router using {term}`LSO`.
:param subscription: The subscription object that's to be provisioned.
......@@ -92,17 +94,17 @@ def provision_router(subscription: RouterProvisioning, process_id: UUIDstr, tt_n
:rtype: None
"""
parameters = {
"process_id": process_id,
"tt_number": tt_number,
"dry_run": dry_run,
"subscription": json.loads(json_dumps(subscription))
"process_id": process_id,
"tt_number": tt_number,
"dry_run": dry_run,
"subscription": json.loads(json_dumps(subscription)),
}
_send_request("router", parameters, process_id, CUDOperation.POST)
def provision_ip_trunk(
subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str, config_object: str, dry_run: bool = True
subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str, config_object: str, dry_run: bool = True
) -> None:
"""Provision an IP trunk service using {term}`LSO`.
......@@ -159,7 +161,13 @@ def deprovision_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, tt_number:
:type dry_run: bool
:rtype: None
"""
parameters = {"subscription": json.loads(json_dumps(subscription)), "tt_number": tt_number, "process_id": process_id, "dry_run": dry_run, "verb": "terminate"}
parameters = {
"subscription": json.loads(json_dumps(subscription)),
"tt_number": tt_number,
"process_id": process_id,
"dry_run": dry_run,
"verb": "terminate",
}
_send_request("ip_trunk", parameters, process_id, CUDOperation.DELETE)
......@@ -173,7 +181,7 @@ def migrate_ip_trunk(
process_id: UUIDstr,
tt_number: str,
verb: str,
config_object,
config_object: str,
dry_run: bool = True,
) -> None:
"""Migrate an IP trunk service using {term}`LSO`.
......
from logging import getLogger
from orchestrator import step,inputstep
from orchestrator.types import FormGenerator, State, UUIDstr
from orchestrator.config.assignee import Assignee
from gso.products.product_types.iptrunk import Iptrunk
from gso.services import provisioning_proxy
logger = getLogger(__name__)
#@step("Set ISIS metric to 9000")
#def set_isis_to_9000(subscription: Iptrunk, process_id: UUIDstr, tt_number:str) -> State:
# old_isis_metric = subscription.iptrunk.iptrunk_isis_metric
# subscription.iptrunk.iptrunk_isis_metric = 90000
# provisioning_proxy.provision_ip_trunk(subscription, process_id, "isis_interface", False)
# logger.warning("ISIS metric is only updated in the subscription, not in the real world.")
#
# return {"subscription": subscription, "old_isis_metric": old_isis_metric}
#
#
#@step("Restore ISIS metric to original value")
#def restore_isis_metric(subscription: Iptrunk, process_id: UUIDstr, old_isis_metric: int) -> State:
# subscription.iptrunk.iptrunk_isis_metric = old_isis_metric
# provisioning_proxy.provision_ip_trunk(subscription, process_id, "isis_interface", False)
# logger.warning("ISIS metric is only updated in the subscription, not in the real world.")
#
# return {"subscription": subscription}
#
......@@ -206,6 +206,7 @@ def check_ip_trunk_isis(subscription: IptrunkProvisioning, process_id: UUIDstr,
"label_text": "[CHECK] Checking ISIS adjacency, please refresh to get the results of the playbook.",
}
@workflow(
"Create IP trunk",
initial_input_form=wrap_create_initial_input_form(initial_input_form_generator),
......
......@@ -29,7 +29,6 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
for side in subscription.iptrunk.iptrunk_sides
}
ReplacedSide = Choice(
"Select the side of the IP trunk to be replaced", zip(sides_dict.keys(), sides_dict.items()) # type: ignore
)
......@@ -38,7 +37,8 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
class Config:
title = (
f"Subscription {subscription.iptrunk.geant_s_sid} from "
f"{subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn} to "
f"{subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn}"
f" to "
f"{subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_fqdn}"
)
......@@ -114,6 +114,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
return old_side_input.dict() | new_side_input.dict() | {"replace_index": replace_index}
@step("[COMMIT] Set ISIS metric to 90000")
def set_isis_to_9000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
old_isis_metric = subscription.iptrunk.iptrunk_isis_metric
......@@ -123,7 +124,7 @@ def set_isis_to_9000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str)
return {
"subscription": subscription,
"old_isis_metric": old_isis_metric,
"label_text": "ISIS is being set to 90K by the provisioning proxy, please wait for the results to come back before continuing.",
"label_text": "ISIS is being set to 90K by the provisioning proxy, please wait for the results",
}
......@@ -163,7 +164,7 @@ def disable_old_config_real(
new_lag_member_interfaces: list[str],
replace_index: int,
process_id: UUIDstr,
tt_number: str
tt_number: str,
) -> State:
provisioning_proxy.migrate_ip_trunk(
subscription,
......@@ -243,6 +244,8 @@ def deploy_new_config_real(
"subscription": subscription,
"label_text": "[COMMIT] Deploying new trunk interface, please refresh to get the results of the playbook.",
}
@inputstep("Wait for confirmation", assignee=Assignee.SYSTEM)
def confirm_continue_move_fiber() -> FormGenerator:
class ProvisioningResultPage(FormPage):
......@@ -257,31 +260,33 @@ def confirm_continue_move_fiber() -> FormGenerator:
return {}
@step("Run interface checks")
def run_interface_checks(
subscription: Iptrunk,
new_node: Router,
new_lag_interface: str,
new_lag_member_interfaces: list[str],
replace_index: int,
process_id: UUIDstr,
) -> State:
provisioning_proxy.migrate_ip_trunk(
subscription,
new_node,
new_lag_interface,
new_lag_member_interfaces,
replace_index,
process_id,
"MIGRATION_INTERFACE_CHECK",
)
logger.warning("Playbook verb is not yet properly set.")
return {
"subscription": subscription,
"label_text": "Running checks on the new trunk interface, please refresh to get the results of the playbook.",
}
# I will leave it like this until we actually do it.
# @step("Run interface checks")
# def run_interface_checks(
# subscription: Iptrunk,
# new_node: Router,
# new_lag_interface: str,
# new_lag_member_interfaces: list[str],
# replace_index: int,
# process_id: UUIDstr,
# ) -> State:
# provisioning_proxy.migrate_ip_trunk(
# subscription,
# new_node,
# new_lag_interface,
# new_lag_member_interfaces,
# replace_index,
# process_id,
# "MIGRATION_INTERFACE_CHECK",
# )
#
# logger.warning("Playbook verb is not yet properly set.")
#
# return {
# "subscription": subscription,
# "label_text": "Running checks on the new trunk interface, please refresh to get the results of the playbook.",
# }
@step("Deploy ISIS configuration on new router")
......@@ -292,7 +297,7 @@ def deploy_new_isis(
new_lag_member_interfaces: list[str],
replace_index: int,
process_id: UUIDstr,
tt_number: str
tt_number: str,
) -> State:
provisioning_proxy.migrate_ip_trunk(
subscription,
......@@ -315,16 +320,17 @@ def deploy_new_isis(
}
@step("Check ISIS metric")
def check_isis(subscription: Iptrunk, process_id: UUIDstr) -> State:
provisioning_proxy.check_ip_trunk(subscription, process_id, "VERB NEEDS TO BE UPDATED")
logger.warning("Playbook verb is not yet properly set.")
return {
"subscription": subscription,
"label_text": "Checking ISIS functionality, please refresh to get the results of the playbook.",
}
# Leaving it like this as a placeholder
# @step("Check ISIS metric")
# def check_isis(subscription: Iptrunk, process_id: UUIDstr) -> State:
# provisioning_proxy.check_ip_trunk(subscription, process_id, "VERB NEEDS TO BE UPDATED")
#
# logger.warning("Playbook verb is not yet properly set.")
#
# return {
# "subscription": subscription,
# "label_text": "Checking ISIS functionality, please refresh to get the results of the playbook.",
# }
@inputstep("Wait for confirmation", assignee=Assignee.SYSTEM)
......@@ -341,6 +347,7 @@ def confirm_continue_restore_isis() -> FormGenerator:
return {}
@step("Restore ISIS metric to original value")
def restore_isis_metric(subscription: Iptrunk, process_id: UUIDstr, tt_number: str, old_isis_metric: int) -> State:
subscription.iptrunk.iptrunk_isis_metric = old_isis_metric
......@@ -348,6 +355,7 @@ def restore_isis_metric(subscription: Iptrunk, process_id: UUIDstr, tt_number: s
return {"subscription": subscription}
@step("[DRY RUN] Delete configuration on old router")
def delete_old_config_dry(
subscription: Iptrunk,
......@@ -356,7 +364,7 @@ def delete_old_config_dry(
new_lag_member_interfaces: list[str],
replace_index: int,
process_id: UUIDstr,
tt_number: str
tt_number: str,
) -> State:
provisioning_proxy.migrate_ip_trunk(
subscription,
......@@ -387,7 +395,7 @@ def delete_old_config_real(
new_lag_member_interfaces: list[str],
replace_index: int,
process_id: UUIDstr,
tt_number: str
tt_number: str,
) -> State:
provisioning_proxy.migrate_ip_trunk(
subscription,
......@@ -442,7 +450,7 @@ def migrate_iptrunk() -> StepList:
init
>> store_process_subscription(Target.MODIFY)
>> unsync
>> pp_interaction(set_isis_to_9000,3)
>> pp_interaction(set_isis_to_9000, 3)
>> pp_interaction(disable_old_config_dry, 3)
>> pp_interaction(disable_old_config_real, 3)
>> pp_interaction(deploy_new_config_dry, 3)
......@@ -452,7 +460,7 @@ def migrate_iptrunk() -> StepList:
>> pp_interaction(deploy_new_isis, 3)
# >> pp_interaction(check_isis, 3, False)
>> confirm_continue_restore_isis
>> pp_interaction(restore_isis_metric,3)
>> pp_interaction(restore_isis_metric, 3)
>> pp_interaction(delete_old_config_dry, 3)
>> pp_interaction(delete_old_config_real, 3)
>> update_ipam
......
......@@ -41,7 +41,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
iptrunk_sideA_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn)
iptrunk_sideA_ae_iface: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface)
iptrunk_sideA_ae_geant_a_sid: str = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_geant_a_sid
iptrunk_sideA_ae_members: AeMembersListA = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members # type: ignore
iptrunk_sideA_ae_members: AeMembersListA = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members
iptrunk_sideA_ae_members_descriptions: AeMembersListA = subscription.iptrunk.iptrunk_sides[
0
].iptrunk_side_ae_members_description
......@@ -59,7 +59,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
iptrunk_sideB_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_fqdn)
iptrunk_sideB_ae_iface: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_iface)
iptrunk_sideB_ae_geant_a_sid: str = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_geant_a_sid
iptrunk_sideB_ae_members: AeMembersListB = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members # type: ignore
iptrunk_sideB_ae_members: AeMembersListB = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members
iptrunk_sideB_ae_members_descriptions: AeMembersListB = subscription.iptrunk.iptrunk_sides[
1
].iptrunk_side_ae_members_description
......@@ -122,6 +122,7 @@ def provision_ip_trunk_iface_real(subscription: Iptrunk, process_id: UUIDstr, tt
"label_text": "Provisioning trunk interface, please refresh to get the results of the playbook.",
}
@workflow(
"Modify IP Trunk interface",
initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator),
......
......@@ -7,7 +7,6 @@ from orchestrator.types import FormGenerator, State, SubscriptionLifecycle, UUID
from orchestrator.workflow import StepList, conditional, done, init, step, workflow
from orchestrator.workflows.steps import resync, set_status, store_process_subscription, unsync
from orchestrator.workflows.utils import wrap_modify_initial_input_form
#from workflows.iptrunk import set_isis_to_9000
from gso.products.product_types.iptrunk import Iptrunk
from gso.services import ipam, provisioning_proxy
......@@ -28,6 +27,7 @@ def initial_input_form_generator() -> FormGenerator:
user_input = yield TerminateForm
return user_input.dict()
@step("[COMMIT] Set ISIS metric to 90000")
def set_isis_to_9000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
old_isis_metric = subscription.iptrunk.iptrunk_isis_metric
......@@ -37,9 +37,10 @@ def set_isis_to_9000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str)
return {
"subscription": subscription,
"old_isis_metric": old_isis_metric,
"label_text": "ISIS is being set to 90K by the provisioning proxy, please wait for the results to come back before continuing.",
"label_text": "ISIS is being set to 90K by the provisioning proxy, please wait for the results",
}
@step("Drain traffic from trunk")
def drain_traffic_from_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False)
......@@ -51,7 +52,7 @@ def drain_traffic_from_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, tt_n
@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, tt_number: str) -> State:
provisioning_proxy.deprovision_ip_trunk(subscription, process_id, tt_number, True)
return {
......@@ -98,7 +99,7 @@ def terminate_iptrunk() -> StepList:
run_ipam_steps = conditional(lambda state: state.get("clean_up_ipam", True))
config_steps = (
#StepList([set_isis_to_9000])
# StepList([set_isis_to_9000])
StepList()
>> pp_interaction(set_isis_to_9000, 3)
>> pp_interaction(deprovision_ip_trunk_dry, 3)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment