Skip to content
Snippets Groups Projects
Verified Commit 895ee6d7 authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

Move all import workflows into separate product types

parent 516f5a6d
No related branches found
No related tags found
1 merge request!201Add imported products
......@@ -45,6 +45,11 @@
"modify_site": "Modify site",
"modify_trunk_interface": "Modify IP Trunk interface",
"redeploy_base_config": "Redeploy base config",
"update_ibgp_mesh": "Update iBGP mesh"
"update_ibgp_mesh": "Update iBGP mesh",
"create_imported_site": "NOT FOR HUMANS -- Import existing site",
"create_imported_router": "NOT FOR HUMANS -- Import existing router",
"create_imported_iptrunk": "NOT FOR HUMANS -- Import existing IP trunk",
"create_imported_super_pop_switch": "NOT FOR HUMANS -- Import existing super PoP switch",
"create_imported_office_router": "NOT FOR HUMANS -- Import existing office router"
}
}
......@@ -13,7 +13,7 @@ from orchestrator.workflows.steps import resync, set_status, store_process_subsc
from gso.products import ProductName
from gso.products.product_blocks.iptrunk import IptrunkInterfaceBlockInactive, IptrunkType, PhysicalPortCapacity
from gso.products.product_types.iptrunk import IptrunkInactive, IptrunkProvisioning
from gso.products.product_types.iptrunk import ImportedIptrunkInactive
from gso.products.product_types.router import Router
from gso.services import subscriptions
from gso.services.partners import get_partner_by_name
......@@ -68,8 +68,8 @@ def initial_input_form_generator() -> FormGenerator:
def create_subscription(partner: str) -> State:
"""Create a new subscription in the service database."""
partner_id = get_partner_by_name(partner)["partner_id"]
product_id = subscriptions.get_product_id_by_name(ProductName.IP_TRUNK)
subscription = IptrunkInactive.from_product_id(product_id, partner_id)
product_id = subscriptions.get_product_id_by_name(ProductName.IMPORTED_IP_TRUNK)
subscription = ImportedIptrunkInactive.from_product_id(product_id, partner_id)
return {
"subscription": subscription,
......@@ -79,7 +79,7 @@ def create_subscription(partner: str) -> State:
@step("Initialize subscription")
def initialize_subscription(
subscription: IptrunkInactive,
subscription: ImportedIptrunkInactive,
geant_s_sid: str | None,
iptrunk_type: IptrunkType,
iptrunk_description: str,
......@@ -120,14 +120,12 @@ def initialize_subscription(
)
subscription.description = f"IP trunk, geant_s_sid:{geant_s_sid}"
subscription = IptrunkProvisioning.from_other_lifecycle(subscription, SubscriptionLifecycle.PROVISIONING)
return {"subscription": subscription}
@step("Update IPAM Stub for Subscription")
def update_ipam_stub_for_subscription(
subscription: IptrunkProvisioning,
subscription: ImportedIptrunkInactive,
iptrunk_ipv4_network: ipaddress.IPv4Network,
iptrunk_ipv6_network: ipaddress.IPv6Network,
) -> State:
......@@ -143,7 +141,7 @@ def update_ipam_stub_for_subscription(
initial_input_form=initial_input_form_generator,
target=Target.CREATE,
)
def import_iptrunk() -> StepList:
def create_imported_iptrunk() -> StepList:
"""Import an IP trunk without provisioning it."""
return (
init
......
"""Workflows for Office router products."""
......@@ -10,8 +10,7 @@ from orchestrator.workflow import StepList, done, init, step
from orchestrator.workflows.steps import resync, set_status, store_process_subscription
from gso.products import ProductName
from gso.products.product_types import office_router
from gso.products.product_types.office_router import OfficeRouterInactive
from gso.products.product_types.office_router import ImportedOfficeRouterInactive
from gso.services import subscriptions
from gso.services.partners import get_partner_by_name
from gso.services.subscriptions import get_site_by_name
......@@ -22,8 +21,8 @@ from gso.utils.shared_enums import PortNumber, Vendor
def create_subscription(partner: str) -> State:
"""Create a new subscription object."""
partner_id = get_partner_by_name(partner)["partner_id"]
product_id = subscriptions.get_product_id_by_name(ProductName.OFFICE_ROUTER)
subscription = OfficeRouterInactive.from_product_id(product_id, partner_id)
product_id = subscriptions.get_product_id_by_name(ProductName.IMPORTED_OFFICE_ROUTER)
subscription = ImportedOfficeRouterInactive.from_product_id(product_id, partner_id)
return {
"subscription": subscription,
......@@ -52,7 +51,7 @@ def initial_input_form_generator() -> FormGenerator:
@step("Initialize subscription")
def initialize_subscription(
subscription: OfficeRouterInactive,
subscription: ImportedOfficeRouterInactive,
office_router_fqdn: str,
office_router_ts_port: PortNumber,
office_router_site: str,
......@@ -69,10 +68,6 @@ def initialize_subscription(
subscription.office_router.office_router_lo_ipv6_address = office_router_lo_ipv6_address
subscription.office_router.vendor = Vendor.JUNIPER
subscription = office_router.OfficeRouterProvisioning.from_other_lifecycle(
subscription, SubscriptionLifecycle.PROVISIONING
)
return {"subscription": subscription}
......
......@@ -10,13 +10,10 @@ from orchestrator.workflow import StepList, done, init, step
from orchestrator.workflows.steps import resync, set_status, store_process_subscription
from gso.products import ProductName
from gso.products.product_blocks import router as router_pb
from gso.products.product_blocks.router import RouterRole
from gso.products.product_types import router
from gso.products.product_types.router import RouterInactive
from gso.services import subscriptions
from gso.products.product_types.router import ImportedRouterInactive
from gso.services.partners import get_partner_by_name
from gso.services.subscriptions import get_site_by_name
from gso.services.subscriptions import get_product_id_by_name, get_site_by_name
from gso.utils.helpers import generate_fqdn
from gso.utils.shared_enums import PortNumber, Vendor
......@@ -25,8 +22,8 @@ from gso.utils.shared_enums import PortNumber, Vendor
def create_subscription(partner: str) -> State:
"""Create a new subscription object."""
partner_id = get_partner_by_name(partner)["partner_id"]
product_id = subscriptions.get_product_id_by_name(ProductName.ROUTER)
subscription = RouterInactive.from_product_id(product_id, partner_id)
product_id = get_product_id_by_name(ProductName.IMPORTED_ROUTER)
subscription = ImportedRouterInactive.from_product_id(product_id, partner_id)
return {
"subscription": subscription,
......@@ -58,11 +55,11 @@ def initial_input_form_generator() -> FormGenerator:
@step("Initialize subscription")
def initialize_subscription(
subscription: RouterInactive,
subscription: ImportedRouterInactive,
hostname: str,
ts_port: PortNumber,
router_site: str,
router_role: router_pb.RouterRole,
router_role: RouterRole,
router_vendor: Vendor,
router_lo_ipv4_address: ipaddress.IPv4Address | None = None,
router_lo_ipv6_address: ipaddress.IPv6Address | None = None,
......@@ -82,8 +79,6 @@ def initialize_subscription(
subscription.router.router_lo_iso_address = router_lo_iso_address
subscription.router.vendor = router_vendor
subscription = router.RouterProvisioning.from_other_lifecycle(subscription, SubscriptionLifecycle.PROVISIONING)
return {"subscription": subscription}
......@@ -92,7 +87,7 @@ def initialize_subscription(
initial_input_form=initial_input_form_generator,
target=Target.CREATE,
)
def import_router() -> StepList:
def create_imported_router() -> StepList:
"""Import a router without provisioning it."""
return (
init
......
......@@ -10,7 +10,7 @@ from orchestrator.workflows.steps import resync, set_status, store_process_subsc
from gso.products import ProductName
from gso.products.product_blocks.site import SiteTier
from gso.products.product_types.site import SiteInactive
from gso.products.product_types.site import ImportedSiteInactive
from gso.services import subscriptions
from gso.services.partners import get_partner_by_name
from gso.workflows.site.create_site import initialize_subscription
......@@ -18,13 +18,10 @@ from gso.workflows.site.create_site import initialize_subscription
@step("Create subscription")
def create_subscription(partner: str) -> State:
"""Create a new subscription object in the service database.
FIXME: all attributes passed by the input form appear to be unused
"""
"""Create a new subscription object in the service database."""
partner_id = get_partner_by_name(partner)["partner_id"]
product_id: UUID = subscriptions.get_product_id_by_name(ProductName.SITE)
subscription = SiteInactive.from_product_id(product_id, partner_id)
product_id: UUID = subscriptions.get_product_id_by_name(ProductName.IMPORTED_SITE)
subscription = ImportedSiteInactive.from_product_id(product_id, partner_id)
return {
"subscription": subscription,
......@@ -60,7 +57,7 @@ def generate_initial_input_form() -> FormGenerator:
target=Target.CREATE,
initial_input_form=generate_initial_input_form,
)
def import_site() -> StepList:
def create_imported_site() -> StepList:
"""Workflow to import a site without provisioning it."""
return (
init
......
"""Workflows for super PoP switches."""
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment