From 8fd576ae81dec63c6bf4128fdd0d1000819043fb Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Fri, 6 Oct 2023 14:16:10 +0200 Subject: [PATCH] move productType enum into __init__ file for products --- gso/products/__init__.py | 16 +++++++++++----- gso/schemas/enums.py | 11 ----------- gso/services/subscriptions.py | 12 +++++------- gso/workflows/tasks/import_iptrunk.py | 2 +- gso/workflows/tasks/import_router.py | 2 +- gso/workflows/tasks/import_site.py | 2 +- test/fixtures.py | 2 +- .../iptrunks/iptrunks/test_create_iptrunks.py | 2 +- test/workflows/site/test_create_site.py | 2 +- 9 files changed, 22 insertions(+), 29 deletions(-) delete mode 100644 gso/schemas/enums.py diff --git a/gso/products/__init__.py b/gso/products/__init__.py index df2529a3..c48474d7 100644 --- a/gso/products/__init__.py +++ b/gso/products/__init__.py @@ -1,16 +1,22 @@ """Module that updates the domain model of :term:`GSO`. Should contain all types of subscriptions.""" from orchestrator.domain import SUBSCRIPTION_MODEL_REGISTRY +from pydantic_forms.types import strEnum from gso.products.product_types.iptrunk import Iptrunk from gso.products.product_types.router import Router from gso.products.product_types.site import Site + +class ProductType(strEnum): + SITE = "Site" + ROUTER = "Router" + IP_TRUNK = "IP trunk" + + SUBSCRIPTION_MODEL_REGISTRY.update( { - "Site": Site, - "Router": Router, - "IP trunk": Iptrunk, + ProductType.SITE.value: Site, + ProductType.ROUTER.value: Router, + ProductType.IP_TRUNK.value: Iptrunk, } ) - -__all__ = ["Site", "Iptrunk", "Router"] diff --git a/gso/schemas/enums.py b/gso/schemas/enums.py deleted file mode 100644 index c803ede4..00000000 --- a/gso/schemas/enums.py +++ /dev/null @@ -1,11 +0,0 @@ -from orchestrator.types import strEnum - - -class ProductType(strEnum): - SITE = "Site" - ROUTER = "Router" - IP_TRUNK = "IP trunk" - - -class SubscriptionStatus(strEnum): - ACTIVE = "active" diff --git a/gso/services/subscriptions.py b/gso/services/subscriptions.py index 5e234813..f1c6b075 100644 --- a/gso/services/subscriptions.py +++ b/gso/services/subscriptions.py @@ -8,14 +8,12 @@ from orchestrator.db import ( SubscriptionInstanceValueTable, SubscriptionTable, ) +from orchestrator.types import SubscriptionLifecycle -from gso.schemas.enums import ProductType, SubscriptionStatus +from gso.products import ProductType -def get_active_subscriptions( - product_type: str, - fields: list[str], -) -> list[Subscription]: +def get_active_subscriptions(product_type: str, fields: list[str]) -> list[Subscription]: """Retrieve active subscriptions for a specific product type. :param product_type: The type of the product for which to retrieve subscriptions. @@ -32,7 +30,7 @@ def get_active_subscriptions( SubscriptionTable.query.join(ProductTable) .filter( ProductTable.product_type == product_type, - SubscriptionTable.status == SubscriptionStatus.ACTIVE, + SubscriptionTable.status == SubscriptionLifecycle.ACTIVE, ) .with_entities(*dynamic_fields) .all() @@ -91,6 +89,6 @@ def get_active_site_subscription_by_name(site_name: str) -> Subscription: .join(ResourceTypeTable) .filter(SubscriptionInstanceValueTable.value == site_name) .filter(ResourceTypeTable.resource_type == "site_name") - .filter(SubscriptionTable.status == SubscriptionStatus.ACTIVE) + .filter(SubscriptionTable.status == SubscriptionLifecycle.ACTIVE) .first() ) diff --git a/gso/workflows/tasks/import_iptrunk.py b/gso/workflows/tasks/import_iptrunk.py index f1c3e6cf..fc03382e 100644 --- a/gso/workflows/tasks/import_iptrunk.py +++ b/gso/workflows/tasks/import_iptrunk.py @@ -11,7 +11,7 @@ from orchestrator.workflows.steps import resync, set_status, store_process_subsc from gso.products.product_blocks import PhyPortCapacity from gso.products.product_blocks.iptrunk import IptrunkType from gso.products.product_types.iptrunk import IptrunkInactive, IptrunkProvisioning -from gso.schemas.enums import ProductType +from gso.products import ProductType from gso.services import subscriptions from gso.services.crm import get_customer_by_name from gso.workflows.iptrunk.create_iptrunk import initialize_subscription diff --git a/gso/workflows/tasks/import_router.py b/gso/workflows/tasks/import_router.py index 0821e314..58582390 100644 --- a/gso/workflows/tasks/import_router.py +++ b/gso/workflows/tasks/import_router.py @@ -14,7 +14,7 @@ from gso.products.product_types import router from gso.products.product_types.router import RouterInactive from gso.products.product_types.site import Site from gso.products.shared import PortNumber -from gso.schemas.enums import ProductType +from gso.products import ProductType from gso.services import subscriptions from gso.services.crm import get_customer_by_name diff --git a/gso/workflows/tasks/import_site.py b/gso/workflows/tasks/import_site.py index 20967c71..b9ea20ed 100644 --- a/gso/workflows/tasks/import_site.py +++ b/gso/workflows/tasks/import_site.py @@ -8,7 +8,7 @@ from orchestrator.workflows.steps import resync, set_status, store_process_subsc from gso.products.product_blocks.site import SiteTier from gso.products.product_types.site import SiteInactive -from gso.schemas.enums import ProductType +from gso.products import ProductType from gso.services import subscriptions from gso.services.crm import get_customer_by_name from gso.workflows.site.create_site import initialize_subscription diff --git a/test/fixtures.py b/test/fixtures.py index 2f3ba899..65ad4c0d 100644 --- a/test/fixtures.py +++ b/test/fixtures.py @@ -9,8 +9,8 @@ from gso.products.product_blocks.router import RouterRole, RouterVendor from gso.products.product_blocks.site import SiteTier from gso.products.product_types.router import RouterInactive from gso.products.product_types.site import Site, SiteInactive -from gso.schemas.enums import ProductType from gso.services import subscriptions +from gso.products import ProductType CUSTOMER_ID: UUIDstr = "2f47f65a-0911-e511-80d0-005056956c1a" diff --git a/test/workflows/iptrunks/iptrunks/test_create_iptrunks.py b/test/workflows/iptrunks/iptrunks/test_create_iptrunks.py index cf50c2cc..b38253f1 100644 --- a/test/workflows/iptrunks/iptrunks/test_create_iptrunks.py +++ b/test/workflows/iptrunks/iptrunks/test_create_iptrunks.py @@ -6,7 +6,7 @@ import pytest from gso.products import Iptrunk from gso.products.product_blocks import PhyPortCapacity from gso.products.product_blocks.iptrunk import IptrunkType -from gso.schemas.enums import ProductType +from gso.products import ProductType from gso.services.crm import get_customer_by_name from gso.services.subscriptions import get_product_id_by_name from gso.workflows.utils import customer_selector diff --git a/test/workflows/site/test_create_site.py b/test/workflows/site/test_create_site.py index da25a2b0..6023f05a 100644 --- a/test/workflows/site/test_create_site.py +++ b/test/workflows/site/test_create_site.py @@ -2,7 +2,7 @@ import pytest from gso.products.product_blocks.site import SiteTier from gso.products.product_types.site import Site -from gso.schemas.enums import ProductType +from gso.products import ProductType from gso.services.crm import get_customer_by_name from gso.services.subscriptions import get_product_id_by_name from test.workflows import assert_complete, extract_state, run_workflow -- GitLab