1616
1717from products .product_blocks .sap import SAPBlockProvisioning
1818from services import netbox
19- import itertools
2019
2120
22- def build_sap_payload (model : SAPBlockProvisioning , subscription : SubscriptionModel ) -> list [netbox .VlanPayload ]:
23- """Create and return a Netbox payload object for a :class:`~products.product_blocks.sap.SAPBlockProvisioning`.
21+ def build_sap_vlans_payload (model : SAPBlockProvisioning , subscription : SubscriptionModel ) -> list [netbox .VlanPayload ]:
22+ """Create and return a list of Netbox :class:`VlanPayload` for a :class:`~products.product_blocks.sap.SAPBlockProvisioning`.
2423
2524 Example payload::
2625
@@ -35,16 +34,17 @@ def build_sap_payload(model: SAPBlockProvisioning, subscription: SubscriptionMod
3534 model: SAPBlockProvisioning
3635 subscription: The Subscription that will be provisioned
3736
38- Returns: :class:`netbox.VlanPayload`
37+ Returns: list[ :class:`netbox.VlanPayload`]
3938
4039 """
40+ assert model .ims_id
4141 name = f"{ model .port .node .node_name } { model .port .port_name } "
4242 vlan_list = [vlan for vlan_start , vlan_end in model .vlan .to_list_of_tuples () for vlan in range (vlan_start , vlan_end + 1 )]
4343 return [netbox .VlanPayload (vid = vlan , group = model .ims_id , name = f"{ name } - { vlan } " ) for vlan in vlan_list ]
4444
4545
4646def build_sap_vlan_group_payload (model : SAPBlockProvisioning , subscription : SubscriptionModel ) -> netbox .VlanGroupPayload :
47- """Create
47+ """Create and return a list of Netbox :class:`VlanGroupPayload` for a :class:`~products.product_blocks.sap.SAPBlockProvisioning`.
4848
4949 Example payload::
5050
@@ -63,3 +63,26 @@ def build_sap_vlan_group_payload(model: SAPBlockProvisioning, subscription: Subs
6363 name = f"{ model .port .node .node_name } { model .port .port_name } "
6464 slug = name .replace (" " , "-" ).replace ("/" , "-" )
6565 return netbox .VlanGroupPayload (name = name , slug = slug , vid_ranges = model .vlan .to_list_of_tuples ())
66+
67+
68+ def build_sap_payload (model : SAPBlockProvisioning , subscription : SubscriptionModel ) -> netbox .VlansPayload :
69+ """Create and return a Netbox payload object for a :class:`~products.product_blocks.sap.SAPBlockProvisioning`.
70+
71+ Example payload::
72+
73+ {
74+ "vid": 4,
75+ "name": "paris01a 0/0/1 vlan 4",
76+ "status": "active",
77+ "group": 1
78+ }
79+
80+ Args:
81+ model: SAPBlockProvisioning
82+ subscription: The Subscription that will be provisioned
83+
84+ Returns: :class:`netbox.VlanPayload`
85+
86+ """
87+ vlan_payloads = build_sap_vlans_payload (model , subscription )
88+ return netbox .VlansPayload (vlans = vlan_payloads )
0 commit comments