1616
1717from products .product_blocks .sap import SAPBlockProvisioning
1818from services import netbox
19+ import itertools
1920
2021
21- def build_sap_payload (model : SAPBlockProvisioning , subscription : SubscriptionModel ) -> netbox .VlanPayload :
22+ def build_sap_payload (model : SAPBlockProvisioning , subscription : SubscriptionModel ) -> list [ netbox .VlanPayload ] :
2223 """Create and return a Netbox payload object for a :class:`~products.product_blocks.sap.SAPBlockProvisioning`.
2324
2425 Example payload::
2526
2627 {
2728 "vid": 4,
2829 "name": "paris01a 0/0/1 vlan 4",
29- "status": "active"
30+ "status": "active",
31+ "group": 1
3032 }
3133
3234 Args:
@@ -36,4 +38,28 @@ def build_sap_payload(model: SAPBlockProvisioning, subscription: SubscriptionMod
3638 Returns: :class:`netbox.VlanPayload`
3739
3840 """
39- return netbox .VlanPayload (vid = int (model .vlan ), name = f"{ model .port .node .node_name } { model .port .port_name } " )
41+ name = f"{ model .port .node .node_name } { model .port .port_name } "
42+ vlan_list = [vlan for vlan_start , vlan_end in model .vlan .to_list_of_tuples () for vlan in range (vlan_start , vlan_end + 1 )]
43+ return [netbox .VlanPayload (vid = vlan , group = model .ims_id , name = f"{ name } - { vlan } " ) for vlan in vlan_list ]
44+
45+
46+ def build_sap_vlan_group_payload (model : SAPBlockProvisioning , subscription : SubscriptionModel ) -> netbox .VlanGroupPayload :
47+ """Create
48+
49+ Example payload::
50+
51+ {
52+ "name": "paris01a 0/0/1 vlan 4",
53+ "vid_ranges": "5, 10, 15-20",
54+ }
55+
56+ Args:
57+ model: SAPBlockProvisioning
58+ subscription: The Subscription that will be provisioned
59+
60+ Returns: :class:`netbox.VlanGroupPayload`
61+
62+ """
63+ name = f"{ model .port .node .node_name } { model .port .port_name } "
64+ slug = name .replace (" " , "-" ).replace ("/" , "-" )
65+ return netbox .VlanGroupPayload (name = name , slug = slug , vid_ranges = model .vlan .to_list_of_tuples ())
0 commit comments