Skip to content
Snippets Groups Projects
vrf_fixtures.py 1.94 KiB
Newer Older
Neda Moeini's avatar
Neda Moeini committed
import pytest
from orchestrator.db import db
from orchestrator.domain import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle

from gso.products import ProductName, Router
Neda Moeini's avatar
Neda Moeini committed
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,
Neda Moeini's avatar
Neda Moeini committed
        if partner is None:
            partner = geant_partner

        vrf_router_list = vrf_router_list or []

Neda Moeini's avatar
Neda Moeini committed
        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]
Neda Moeini's avatar
Neda Moeini committed

        if status:
            vrf_subscription.status = status

        vrf_subscription.save()
        db.session.commit()

Neda Moeini's avatar
Neda Moeini committed

    return subscription_create