Skip to content

Commit 6e3a09b

Browse files
committed
implement a more consistent use of ensure_provisioning_status decorator
1 parent 1c7176e commit 6e3a09b

File tree

15 files changed

+33
-78
lines changed

15 files changed

+33
-78
lines changed

products/services/description.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def _(core_link: CoreLinkProvisioning) -> str:
6565
f"{core_link.core_link.ports[0].node.node_name} {core_link.core_link.ports[0].port_name}"
6666
" <-> "
6767
f"{core_link.core_link.ports[1].port_name} {core_link.core_link.ports[1].node.node_name}"
68-
)
68+
) + (" (maintenance)" if core_link.core_link.under_maintenance else "")
6969

7070

7171
@description.register
@@ -79,7 +79,7 @@ def _(l2vpn: L2vpnProvisioning) -> str:
7979
f"{l2vpn.product.tag} "
8080
f"{l2vpn.virtual_circuit.speed} Mbit/s "
8181
f"({'-'.join(sorted(list(set([sap.port.node.node_name for sap in l2vpn.virtual_circuit.saps]))))})"
82-
)
82+
) + (" (policer active)" if l2vpn.virtual_circuit.speed_policer else "")
8383

8484

8585
@description.register

translations/en-GB.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
"type_id_info": "Hardware make and model",
4040
"under_maintenance": "Maintenance",
4141
"under_maintenance_info": "Enable maintenance mode?",
42-
"vlan": "VLAN"
42+
"vlan": "VLAN ID(s)",
43+
"vlan_info": "VLAN ID or range(s) of IDs"
4344
}
4445
},
4546
"workflow": {

workflows/core_link/modify_core_link.py

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@
1313

1414

1515
from pydantic_forms.types import UUIDstr
16-
from orchestrator.types import SubscriptionLifecycle
1716
from orchestrator.workflow import StepList, begin, step
18-
from orchestrator.workflows.steps import set_status
19-
from orchestrator.workflows.utils import modify_workflow
17+
from orchestrator.workflows.utils import modify_workflow, ensure_provisioning_status
2018
from pydantic_forms.core import FormPage
2119
from pydantic_forms.types import FormGenerator, State
2220

@@ -43,21 +41,17 @@ class ModifyCoreLinkForm(FormPage):
4341
return user_input_dict | {"subscription": subscription}
4442

4543

44+
@ensure_provisioning_status
4645
@step("Update subscription")
4746
def update_subscription(subscription: CoreLinkProvisioning, under_maintenance: bool) -> State:
4847
subscription.core_link.under_maintenance = under_maintenance
49-
50-
return {"subscription": subscription}
51-
52-
53-
@step("Update subscription description")
54-
def update_subscription_description(subscription: CoreLink) -> State:
5548
subscription.description = description(subscription)
49+
5650
return {"subscription": subscription}
5751

5852

5953
@step("Update core link in NRM")
60-
def update_core_link_in_nrm(subscription: CoreLinkProvisioning) -> State:
54+
def update_core_link_in_nrm(subscription: CoreLink) -> State:
6155
"""Dummy step, replace with actual call to NRM."""
6256
return {"subscription": subscription}
6357

@@ -66,9 +60,6 @@ def update_core_link_in_nrm(subscription: CoreLinkProvisioning) -> State:
6660
def modify_core_link() -> StepList:
6761
return (
6862
begin
69-
>> set_status(SubscriptionLifecycle.PROVISIONING)
7063
>> update_subscription
71-
>> update_subscription_description
7264
>> update_core_link_in_nrm
73-
>> set_status(SubscriptionLifecycle.ACTIVE)
7465
)

workflows/l2vpn/create_l2vpn.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
from orchestrator.targets import Target
2121
from orchestrator.types import SubscriptionLifecycle
2222
from orchestrator.workflow import StepList, begin, step
23-
from orchestrator.workflows.steps import set_status, store_process_subscription
23+
from orchestrator.workflows.steps import store_process_subscription
2424
from orchestrator.workflows.utils import create_workflow
2525
from pydantic import ConfigDict
2626
from pydantic_forms.core import FormPage
2727
from pydantic_forms.types import FormGenerator, State, UUIDstr
2828
from pydantic_forms.validators import Choice
2929

3030
from products.product_blocks.sap import SAPBlockInactive
31-
from products.product_types.l2vpn import L2vpn, L2vpnInactive, L2vpnProvisioning
31+
from products.product_types.l2vpn import L2vpnInactive, L2vpnProvisioning
3232
from products.product_types.port import Port
3333
from products.services.description import description
3434
from products.services.netbox.netbox import build_payload
@@ -142,7 +142,7 @@ def create_sap_payloads(sap) -> list[netbox.L2vpnTerminationPayload]:
142142

143143

144144
@step("Update VLANs on connected ports in IMS")
145-
def update_vlans_on_ports(subscription: L2vpn) -> State:
145+
def update_vlans_on_ports(subscription: L2vpnProvisioning) -> State:
146146
"""By re-provisioning the connected ports,
147147
the VLANs from active SAPs will be provisioned in IMS or removed otherwise.
148148
"""
@@ -173,6 +173,5 @@ def create_l2vpn() -> StepList:
173173
>> ims_create_l2vpn
174174
>> ims_create_l2vpn_terminations
175175
>> provision_l2vpn_in_nrm
176-
>> set_status(SubscriptionLifecycle.ACTIVE)
177176
>> update_vlans_on_ports
178177
)

workflows/l2vpn/modify_l2vpn.py

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@
1212
# limitations under the License.
1313

1414

15-
from orchestrator.types import SubscriptionLifecycle
1615
from orchestrator.workflow import StepList, begin, step
17-
from orchestrator.workflows.steps import set_status
18-
from orchestrator.workflows.utils import modify_workflow, reconcile_workflow
16+
from orchestrator.workflows.utils import modify_workflow, reconcile_workflow, ensure_provisioning_status
1917
from pydantic_forms.core import FormPage
2018
from pydantic_forms.types import FormGenerator, State, UUIDstr
2119

@@ -43,6 +41,7 @@ class ModifyL2vpnForm(FormPage):
4341
return user_input_dict | {"subscription": subscription}
4442

4543

44+
@ensure_provisioning_status
4645
@step("Update subscription")
4746
def update_subscription(
4847
subscription: L2vpnProvisioning,
@@ -51,18 +50,13 @@ def update_subscription(
5150
) -> State:
5251
subscription.virtual_circuit.speed = speed
5352
subscription.virtual_circuit.speed_policer = speed_policer
54-
55-
return {"subscription": subscription}
56-
57-
58-
@step("Update subscription description")
59-
def update_subscription_description(subscription: L2vpn) -> State:
6053
subscription.description = description(subscription)
54+
6155
return {"subscription": subscription}
6256

6357

6458
@step("Update L2VPN in NRM")
65-
def update_l2vpn_in_nrm(subscription: L2vpnProvisioning) -> State:
59+
def update_l2vpn_in_nrm(subscription: L2vpn) -> State:
6660
"""Dummy step, replace with actual call to NRM."""
6761
return {"subscription": subscription}
6862

@@ -75,10 +69,7 @@ def update_l2vpn_in_nrm(subscription: L2vpnProvisioning) -> State:
7569
def modify_l2vpn() -> StepList:
7670
return (
7771
begin
78-
>> set_status(SubscriptionLifecycle.PROVISIONING)
7972
>> update_subscription
80-
>> update_subscription_description
81-
>> set_status(SubscriptionLifecycle.ACTIVE)
8273
>> update_l2vpn_in_external_systems
8374
)
8475

workflows/node/create_node.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,6 @@ def create_node() -> StepList:
156156
>> create_node_in_ims
157157
>> reserve_loopback_addresses
158158
>> lso_interaction(provision_node)
159-
>> update_node_in_ims
160159
>> provision_node_in_nrm
160+
>> update_node_in_ims
161161
)

workflows/node/modify_node.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,14 @@
1010
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1111
# See the License for the specific language governing permissions and
1212
# limitations under the License.
13-
from pydantic_forms.types import UUIDstr
1413
from typing import TypeAlias, cast
1514

1615
import structlog
1716
from orchestrator.services.products import get_product_by_id
1817
from orchestrator.workflow import StepList, begin, step
19-
from orchestrator.workflows.utils import modify_workflow, ensure_provisioning_status
18+
from orchestrator.workflows.utils import ensure_provisioning_status, modify_workflow
2019
from pydantic_forms.core import FormPage
21-
from pydantic_forms.types import FormGenerator, State
20+
from pydantic_forms.types import FormGenerator, State, UUIDstr
2221
from pydantic_forms.validators import Choice, Label
2322

2423
from products.product_blocks.shared.types import NodeStatus
@@ -83,16 +82,11 @@ def update_subscription(
8382

8483

8584
@step("Update node in NRM")
86-
def update_node_in_nrm(subscription: NodeProvisioning) -> State:
85+
def update_node_in_nrm(subscription: Node) -> State:
8786
"""Dummy step, replace with actual call to NRM."""
8887
return {"subscription": subscription}
8988

9089

9190
@modify_workflow("Modify node", initial_input_form=initial_input_form_generator)
9291
def modify_node() -> StepList:
93-
return (
94-
begin
95-
>> update_subscription
96-
>> update_node_in_ims
97-
>> update_node_in_nrm
98-
)
92+
return begin >> update_subscription >> update_node_in_ims >> update_node_in_nrm

workflows/node/modify_sync_ports.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from orchestrator.workflows.steps import set_status
2222
from orchestrator.workflows.utils import modify_initial_input_form_generator, modify_workflow
2323

24-
from products.product_types.node import NodeProvisioning
24+
from products.product_types.node import Node
2525
from services import netbox
2626

2727
logger = structlog.get_logger(__name__)
@@ -43,7 +43,7 @@ def get_node_interface_list(node_name: str) -> List[Tuple[str, str, int]]:
4343

4444
@step("Update interfaces")
4545
def update_interfaces(
46-
subscription: NodeProvisioning,
46+
subscription: Node,
4747
) -> State:
4848
node_interfaces = set(get_node_interface_list(subscription.node.node_name))
4949
device = netbox.get_device(name=subscription.node.node_name)

workflows/node/shared/steps.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
from pydantic_forms.types import State
1616
from orchestrator.workflow import step
1717

18-
from products.product_types.node import NodeProvisioning
18+
from products.product_types.node import Node
1919
from products.services.netbox.netbox import build_payload
2020
from services import netbox
2121

2222

2323
@step("Update node in IMS")
24-
def update_node_in_ims(subscription: NodeProvisioning) -> State:
24+
def update_node_in_ims(subscription: Node) -> State:
2525
"""Update node in IMDB"""
2626
payload = build_payload(subscription.node, subscription)
2727
netbox.update(payload, id=subscription.node.ims_id)

workflows/nsistp/modify_nsistp.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,8 @@
1515
import structlog
1616
from orchestrator.forms import FormPage
1717
from orchestrator.forms.validators import Divider
18-
from orchestrator.types import SubscriptionLifecycle
1918
from orchestrator.workflow import StepList, begin, step
20-
from orchestrator.workflows.steps import set_status
21-
from orchestrator.workflows.utils import modify_workflow
19+
from orchestrator.workflows.utils import modify_workflow, ensure_provisioning_status
2220
from pydantic_forms.types import FormGenerator, State, UUIDstr
2321
from pydantic_forms.validators import read_only_field
2422

@@ -62,7 +60,7 @@ class ModifyNsistpForm(FormPage):
6260

6361
return user_input_dict | {"subscription": subscription}
6462

65-
63+
@ensure_provisioning_status
6664
@step("Update subscription")
6765
def update_subscription(
6866
subscription: NsistpProvisioning,
@@ -79,22 +77,14 @@ def update_subscription(
7977
subscription.nsistp.is_alias_out = is_alias_out
8078
subscription.nsistp.expose_in_topology = expose_in_topology
8179
subscription.nsistp.bandwidth = bandwidth
82-
83-
return {"subscription": subscription}
84-
85-
86-
@step("Update subscription description")
87-
def update_subscription_description(subscription: Nsistp) -> State:
8880
subscription.description = description(subscription)
81+
8982
return {"subscription": subscription}
9083

9184

9285
@modify_workflow("Modify nsistp", initial_input_form=initial_input_form_generator)
9386
def modify_nsistp() -> StepList:
9487
return (
9588
begin
96-
>> set_status(SubscriptionLifecycle.PROVISIONING)
9789
>> update_subscription
98-
>> update_subscription_description
99-
>> set_status(SubscriptionLifecycle.ACTIVE)
10090
)

0 commit comments

Comments
 (0)