diff --git a/gso/products/product_blocks/router.py b/gso/products/product_blocks/router.py index 200012a79396564eeebd43fc6a5e06ac8486c3f7..580263185b9a7f05c537b231e3d4975422d5ddfa 100644 --- a/gso/products/product_blocks/router.py +++ b/gso/products/product_blocks/router.py @@ -4,9 +4,9 @@ from typing import Optional from orchestrator.domain.base import ProductBlockModel from orchestrator.types import SubscriptionLifecycle, strEnum -from pydantic import ConstrainedInt from gso.products.product_blocks.site import SiteBlock, SiteBlockInactive, SiteBlockProvisioning +from gso.products.shared import PortNumber class RouterVendor(strEnum): @@ -24,16 +24,6 @@ class RouterRole(strEnum): AMT = "amt" -class PortNumber(ConstrainedInt): - """Constrained integer for valid port numbers. - - The range from 49152 to 65535 is marked as ephemeral, and can therefore not be selected for permanent allocation. - """ - - gt = 0 - le = 49151 - - class RouterBlockInactive( ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="RouterBlock" ): diff --git a/gso/products/shared.py b/gso/products/shared.py new file mode 100644 index 0000000000000000000000000000000000000000..81e080618557b4431b1c58df1c9f9c172d79078f --- /dev/null +++ b/gso/products/shared.py @@ -0,0 +1,11 @@ +from pydantic import ConstrainedInt + + +class PortNumber(ConstrainedInt): + """Constrained integer for valid port numbers. + + The range from 49152 to 65535 is marked as ephemeral, and can therefore not be selected for permanent allocation. + """ + + gt = 0 + le = 49151 diff --git a/gso/workflows/router/create_router.py b/gso/workflows/router/create_router.py index 1f7b96c480d0ddf72f28b2fb75a1874c23622cec..c94826f286cb49e44d5c77fb10a7f5888b6ff309 100644 --- a/gso/workflows/router/create_router.py +++ b/gso/workflows/router/create_router.py @@ -9,12 +9,12 @@ from orchestrator.types import FormGenerator, State, SubscriptionLifecycle, UUID from orchestrator.workflow import StepList, done, init, step, workflow from orchestrator.workflows.steps import resync, set_status, store_process_subscription from orchestrator.workflows.utils import wrap_create_initial_input_form -from products.product_blocks.router import PortNumber from gso.products.product_blocks import router as router_pb from gso.products.product_types import router from gso.products.product_types.router import RouterInactive, RouterProvisioning from gso.products.product_types.site import Site +from gso.products.shared import PortNumber from gso.services import ipam, provisioning_proxy, subscriptions from gso.services.provisioning_proxy import pp_interaction from gso.workflows.utils import customer_selector, iso_from_ipv4 diff --git a/gso/workflows/tasks/import_router.py b/gso/workflows/tasks/import_router.py index 8f122b35048107f53ab012899b3343ba72307bf8..01b7081d7a9253f5b4cf7bdc1b50b56c78d12f9b 100644 --- a/gso/workflows/tasks/import_router.py +++ b/gso/workflows/tasks/import_router.py @@ -10,9 +10,10 @@ from orchestrator.workflow import StepList, done, init, step from orchestrator.workflows.steps import resync, set_status, store_process_subscription from gso.products.product_blocks import router as router_pb -from gso.products.product_blocks.router import PortNumber, RouterRole, RouterVendor +from gso.products.product_blocks.router import RouterRole, RouterVendor from gso.products.product_types import router from gso.products.product_types.router import RouterInactive +from gso.products.shared import PortNumber from gso.products.product_types.site import Site from gso.schemas.enums import ProductType from gso.services import subscriptions