diff --git a/gso/products/product_blocks/iptrunk.py b/gso/products/product_blocks/iptrunk.py index 1da94f2491703ecf172e4b8f307a989fa3e8b309..f2c882bf9a68680c786f9c25ec00b2b838471d7d 100644 --- a/gso/products/product_blocks/iptrunk.py +++ b/gso/products/product_blocks/iptrunk.py @@ -51,13 +51,15 @@ class IptrunkBlockProvisioning(IptrunkBlockInactive, iptrunk_sideA_ae_iface: Optional[str] = None iptrunk_sideA_ae_geant_a_sid: Optional[str] = None iptrunk_sideA_ae_members: list[str] = Field(default_factory=list) - iptrunk_sideA_ae_members_description: list[str] = Field(default_factory=list) + iptrunk_sideA_ae_members_description: list[str] = Field( + default_factory=list) # iptrunk_sideB_node: DeviceBlockProvisioning iptrunk_sideB_ae_iface: Optional[str] = None iptrunk_sideB_ae_geant_a_sid: Optional[str] = None iptrunk_sideB_ae_members: list[str] = Field(default_factory=list) - iptrunk_sideB_ae_members_description: list[str] = Field(default_factory=list) + iptrunk_sideB_ae_members_description: list[str] = Field( + default_factory=list) class IptrunkBlock(IptrunkBlockProvisioning, @@ -74,10 +76,12 @@ class IptrunkBlock(IptrunkBlockProvisioning, iptrunk_sideA_ae_iface: str iptrunk_sideA_ae_geant_a_sid: str iptrunk_sideA_ae_members: list[str] = Field(default_factory=list) - iptrunk_sideA_ae_members_description: list[str] = Field(default_factory=list) + iptrunk_sideA_ae_members_description: list[str] = Field( + default_factory=list) # iptrunk_sideB_node: DeviceBlock iptrunk_sideB_ae_iface: str iptrunk_sideB_ae_geant_a_sid: str iptrunk_sideB_ae_members: list[str] = Field(default_factory=list) - iptrunk_sideB_ae_members_description: list[str] = Field(default_factory=list) + iptrunk_sideB_ae_members_description: list[str] = Field( + default_factory=list) diff --git a/gso/products/product_types/iptrunk.py b/gso/products/product_types/iptrunk.py index 16765fece6f07fd3b9e541311a481b14eeef85ab..d12e010850cedc8d1f98fd2d38c33d4972b8fd50 100644 --- a/gso/products/product_types/iptrunk.py +++ b/gso/products/product_types/iptrunk.py @@ -10,7 +10,7 @@ class IptrunkInactive(SubscriptionModel, is_base=True): class IptrunkProvisioning(IptrunkInactive, - lifecycle=[SubscriptionLifecycle.PROVISIONING]): + lifecycle=[SubscriptionLifecycle.PROVISIONING]): iptrunk: IptrunkBlockProvisioning diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py index 673cfdc477482fbaf211eb498285931fb29e9e9b..3177958f2df3994abfa242bf292cdaf07a27b278 100644 --- a/gso/workflows/iptrunk/create_iptrunk.py +++ b/gso/workflows/iptrunk/create_iptrunk.py @@ -29,13 +29,15 @@ def device_selector(choice_value: str) -> list: ProductTable.product_type == "Device", SubscriptionTable.status == "active", ) - .with_entities(SubscriptionTable.subscription_id, SubscriptionTable.description) + .with_entities(SubscriptionTable.subscription_id, + SubscriptionTable.description) .all() ): device_subscriptions[str(device_id)] = device_description return choice_list( - Choice(choice_value, zip(device_subscriptions.keys(), device_subscriptions.items())), # type:ignore + Choice(choice_value, zip(device_subscriptions.keys(), + device_subscriptions.items())), # type:ignore min_items=1, max_items=1, ) @@ -52,20 +54,21 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: iptrunk_speed: str # This should be an enum: 1/10/100/400 iptrunk_minimum_links: int - iptrunk_sideA_node_id: device_selector(choice_value='DeviceEnumA') + iptrunk_sideA_node_id: device_selector(choice_value="DeviceEnumA") iptrunk_sideA_ae_iface: str iptrunk_sideA_ae_geant_a_sid: str iptrunk_sideA_ae_members: list[str] iptrunk_sideA_ae_members_descriptions: list[str] - iptrunk_sideB_node_id: device_selector(choice_value='DeviceEnumB') + iptrunk_sideB_node_id: device_selector(choice_value="DeviceEnumB") iptrunk_sideB_ae_iface: str iptrunk_sideB_ae_geant_a_sid: str iptrunk_sideB_ae_members: list[str] iptrunk_sideB_ae_members_descriptions: list[str] - # TODO: we need additional validation: + # TODO: we need additional validation: # sideA fqdn must be different from sideB fqdn - # the lenght of iptrunk_sideA_ae_members should be the same as iptrunk_sideA_ae_members + # the lenght of iptrunk_sideA_ae_members should + # be the same as iptrunk_sideA_ae_members # interface names must be validated user_input = yield CreateIptrunkForm @@ -116,17 +119,24 @@ def initialize_subscription( subscription.iptrunk.iptrunk_speed = iptrunk_speed subscription.iptrunk.iptrunk_minimum_links = iptrunk_minimum_links - subscription.iptrunk.iptrunk_sideA_node = Device.from_subscription(iptrunk_sideA_node_id[0]).device + subscription.iptrunk.iptrunk_sideA_node = Device.from_subscription( + iptrunk_sideA_node_id[0]).device subscription.iptrunk.iptrunk_sideA_ae_iface = iptrunk_sideA_ae_iface - subscription.iptrunk.iptrunk_sideA_ae_geant_a_sid = iptrunk_sideA_ae_geant_a_sid + subscription.iptrunk.iptrunk_sideA_ae_geant_a_sid \ + = iptrunk_sideA_ae_geant_a_sid subscription.iptrunk.iptrunk_sideA_ae_members = iptrunk_sideA_ae_members - subscription.iptrunk.iptrunk_sideA_ae_members_description = iptrunk_sideA_ae_members_descriptions - - subscription.iptrunk.iptrunk_sideB_node = Device.from_subscription(iptrunk_sideB_node_id[0]).device - subscription.iptrunk.iptrunk_sideB_ae_iface = iptrunk_sideB_ae_iface - subscription.iptrunk.iptrunk_sideB_ae_geant_a_sid = iptrunk_sideB_ae_geant_a_sid + subscription.iptrunk.iptrunk_sideA_ae_members_description \ + = iptrunk_sideA_ae_members_descriptions + + subscription.iptrunk.iptrunk_sideB_node = Device.from_subscription( + iptrunk_sideB_node_id[0]).device + subscription.iptrunk.iptrunk_sideB_ae_iface \ + = iptrunk_sideB_ae_iface + subscription.iptrunk.iptrunk_sideB_ae_geant_a_sid \ + = iptrunk_sideB_ae_geant_a_sid subscription.iptrunk.iptrunk_sideB_ae_members = iptrunk_sideB_ae_members - subscription.iptrunk.iptrunk_sideB_ae_members_description = iptrunk_sideB_ae_members_descriptions + subscription.iptrunk.iptrunk_sideB_ae_members_description \ + = iptrunk_sideB_ae_members_descriptions subscription.description = f"Iptrunk {geant_s_sid}: \ (blablabla)"