diff --git a/gso/products/product_blocks/router.py b/gso/products/product_blocks/router.py index 290ca41f11853bbf57f1c83c4407045211ff9cb3..fb82480f43cd49de17959c646cfbe46dc0520e23 100644 --- a/gso/products/product_blocks/router.py +++ b/gso/products/product_blocks/router.py @@ -13,13 +13,6 @@ from gso.products.product_blocks.site import ( ) -class RouterVendor(strEnum): - """Enumerator for the different product vendors that are supported.""" - - JUNIPER = "juniper" - NOKIA = "nokia" - - class RouterRole(strEnum): """Enumerator for the different types of routers.""" @@ -54,7 +47,6 @@ class RouterBlockInactive( router_si_ipv4_network: ipaddress.IPv4Network | None = None router_ias_lt_ipv4_network: ipaddress.IPv4Network | None = None router_ias_lt_ipv6_network: ipaddress.IPv6Network | None = None - router_vendor: RouterVendor | None = None router_role: RouterRole | None = None router_site: SiteBlockInactive | None router_is_ias_connected: bool | None = None @@ -77,7 +69,6 @@ class RouterBlockProvisioning(RouterBlockInactive, lifecycle=[SubscriptionLifecy router_si_ipv4_network: ipaddress.IPv4Network | None = None router_ias_lt_ipv4_network: ipaddress.IPv4Network | None = None router_ias_lt_ipv6_network: ipaddress.IPv6Network | None = None - router_vendor: RouterVendor | None = None router_role: RouterRole | None = None router_site: SiteBlockProvisioning | None router_is_ias_connected: bool | None = None @@ -104,8 +95,6 @@ class RouterBlock(RouterBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTI router_ias_lt_ipv4_network: ipaddress.IPv4Network | None #: The :term:`IAS` LT IPv6 network of the router. router_ias_lt_ipv6_network: ipaddress.IPv6Network | None - #: The vendor of the router, can be any of the values defined in :class:`RouterVendor`. - router_vendor: RouterVendor #: The role of the router, which can be any of the values defined in :class:`RouterRole`. router_role: RouterRole #: The :class:`Site` that this router resides in. Both physically and computationally. diff --git a/gso/products/product_types/router.py b/gso/products/product_types/router.py index d6a59c12ccd14dea0dac8852a7748810359718b7..dfcf8ba5d52babcedc9b17be24f79552cf9d1689 100644 --- a/gso/products/product_types/router.py +++ b/gso/products/product_types/router.py @@ -2,6 +2,7 @@ from orchestrator.domain.base import SubscriptionModel from orchestrator.types import SubscriptionLifecycle +from pydantic_forms.types import strEnum from gso.products.product_blocks.router import ( RouterBlock, @@ -10,19 +11,29 @@ from gso.products.product_blocks.router import ( ) +class RouterVendor(strEnum): + """Enumerator for the different product vendors that are supported.""" + + JUNIPER = "juniper" + NOKIA = "nokia" + + class RouterInactive(SubscriptionModel, is_base=True): """An inactive router.""" + vendor: RouterVendor router: RouterBlockInactive class RouterProvisioning(RouterInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]): """A router that is being provisioned.""" + vendor: RouterVendor router: RouterBlockProvisioning class Router(RouterProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]): """A router that is currently active.""" + vendor: RouterVendor router: RouterBlock