Newer
Older
import pytest
from orchestrator.db import db
from orchestrator.domain import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle
from gso.products import ProductName, Router
from gso.products.product_types.vrf import VRFInactive
from gso.services.subscriptions import get_product_id_by_name
@pytest.fixture()
def vrf_subscription_factory(faker, geant_partner):
def subscription_create(
partner: dict | None = None,
description: str | None = None,
start_date: str | None = "2024-01-01T10:20:30+01:02",
vrf_name: str | None = None,
route_distinguisher: str | None = None,
route_target: str | None = None,
vrf_as_number: int | None = None,
status: SubscriptionLifecycle | None = None,
vrf_router_list: list[Router] | None = None,
) -> SubscriptionModel:
vrf_router_list = vrf_router_list or []
product_id = get_product_id_by_name(ProductName.VRF)
vrf_subscription = VRFInactive.from_product_id(product_id, customer_id=partner["partner_id"], insync=True)
vrf_subscription.vrf.vrf_name = vrf_name or faker.pystr()
vrf_subscription.vrf.route_distinguisher = route_distinguisher or faker.pystr()
vrf_subscription.vrf.route_target = route_target or faker.pystr()
vrf_subscription.vrf.vrf_as_number = vrf_as_number or faker.pyint()
vrf_subscription = SubscriptionModel.from_other_lifecycle(vrf_subscription, SubscriptionLifecycle.ACTIVE)
vrf_subscription.description = description or f"VRF {vrf_subscription.vrf.vrf_name}"
vrf_subscription.start_date = start_date
vrf_subscription.vrf.vrf_router_list = [router.router for router in vrf_router_list]
if status:
vrf_subscription.status = status
vrf_subscription.save()
db.session.commit()
return vrf_subscription