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