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

Revert "auto-fix a lot of styling errors, and ignore documentation warnings in test files"

This reverts commit 4bdcafb2
parent afb6ab5c
Branches
Tags
No related merge requests found
Pipeline #84550 failed
This commit is part of merge request !111. Comments created here will be created in the context of that merge request.
Showing
with 561 additions and 1605 deletions
# -- Project information ----------------------------------------------------- # -- Project information -----------------------------------------------------
project = "GÉANT Service Orchestrator" project = 'GÉANT Service Orchestrator'
copyright = "2023, GÉANT Vereniging" copyright = '2023, GÉANT Vereniging'
author = "GÉANT Orchestration and Automation Team" author = 'GÉANT Orchestration and Automation Team'
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------
extensions = ["sphinx_rtd_theme", "sphinx.ext.autodoc", "sphinxcontrib.jquery"] extensions = ['sphinx_rtd_theme', 'sphinx.ext.autodoc', 'sphinxcontrib.jquery']
templates_path = ["templates"] templates_path = ['templates']
exclude_patterns = ["build", "Thumbs.db", ".DS_Store", "venv", "vale", "__init__.py"] exclude_patterns = ['build', 'Thumbs.db', '.DS_Store', 'venv', 'vale', '__init__.py']
# -- Options for HTML output ------------------------------------------------- # -- Options for HTML output -------------------------------------------------
html_theme = "sphinx_rtd_theme" html_theme = 'sphinx_rtd_theme'
html_static_path = ["static"] html_static_path = ['static']
html_theme_options = { html_theme_options = {
"style_nav_header_background": "rgb(0 63 95)", 'style_nav_header_background': 'rgb(0 63 95)',
} }
html_css_files = ["custom.css"] html_css_files = ['custom.css']
html_js_files = ["custom.js"] html_js_files = ['custom.js']
html_logo = "static/geant_logo_white.svg" html_logo = 'static/geant_logo_white.svg'
# Both the class' and the ``__init__`` method's docstring are concatenated and inserted. # Both the class' and the ``__init__`` method's docstring are concatenated and inserted.
autoclass_content = "both" autoclass_content = 'both'
autodoc_typehints = "none" autodoc_typehints = 'none'
# Display todos by setting to True # Display todos by setting to True
todo_include_todos = True todo_include_todos = True
...@@ -4,8 +4,7 @@ import typer ...@@ -4,8 +4,7 @@ import typer
from orchestrator import OrchestratorCore, app_settings from orchestrator import OrchestratorCore, app_settings
from orchestrator.cli.main import app as cli_app from orchestrator.cli.main import app as cli_app
# noinspection PyUnresolvedReferences import gso.products # noqa: F401
import gso.products
import gso.workflows # noqa: F401 import gso.workflows # noqa: F401
from gso.api import router as api_router from gso.api import router as api_router
from gso.cli import netbox from gso.cli import netbox
......
...@@ -130,9 +130,8 @@ class IptrunkImportModel(BaseModel): ...@@ -130,9 +130,8 @@ class IptrunkImportModel(BaseModel):
"""Validate that the customer exists.""" """Validate that the customer exists."""
try: try:
get_customer_by_name(value) get_customer_by_name(value)
except CustomerNotFoundError as e: except CustomerNotFoundError:
msg = f"Customer {value} not found" raise ValueError(f"Customer {value} not found")
raise ValueError(msg) from e
return value return value
...@@ -140,8 +139,7 @@ class IptrunkImportModel(BaseModel): ...@@ -140,8 +139,7 @@ class IptrunkImportModel(BaseModel):
def check_if_router_side_is_available(cls, value: str) -> str: def check_if_router_side_is_available(cls, value: str) -> str:
"""Both sides of the trunk must exist in :term:`GSO`.""" """Both sides of the trunk must exist in :term:`GSO`."""
if value not in cls._get_active_routers(): if value not in cls._get_active_routers():
msg = f"Router {value} not found" raise ValueError(f"Router {value} not found")
raise ValueError(msg)
return value return value
...@@ -149,8 +147,7 @@ class IptrunkImportModel(BaseModel): ...@@ -149,8 +147,7 @@ class IptrunkImportModel(BaseModel):
def check_side_uniqueness(cls, value: list[str]) -> list[str]: def check_side_uniqueness(cls, value: list[str]) -> list[str]:
""":term:`LAG` members must be unique.""" """:term:`LAG` members must be unique."""
if len(value) != len(set(value)): if len(value) != len(set(value)):
msg = "Items must be unique" raise ValueError("Items must be unique")
raise ValueError(msg)
return value return value
...@@ -165,24 +162,20 @@ class IptrunkImportModel(BaseModel): ...@@ -165,24 +162,20 @@ class IptrunkImportModel(BaseModel):
len_b = len(side_b_members) len_b = len(side_b_members)
if len_a < min_links: if len_a < min_links:
msg = f"Side A members should be at least {min_links} (iptrunk_minimum_links)" raise ValueError(f"Side A members should be at least {min_links} (iptrunk_minimum_links)")
raise ValueError(msg)
if len_a != len_b: if len_a != len_b:
msg = "Mismatch between Side A and B members" raise ValueError("Mismatch between Side A and B members")
raise ValueError(msg)
return values return values
def _start_process(process_name: str, data: dict) -> UUID: def _start_process(process_name: str, data: dict) -> UUID:
"""Start a process and handle common exceptions.""" """Start a process and handle common exceptions."""
pid: UUID = processes.start_process(process_name, [data]) pid: UUID = processes.start_process(process_name, [data])
if pid is None: if pid is None:
raise HTTPException( raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Failed to start the process.")
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail="Failed to start the process.",
)
process = processes._get_process(pid) # noqa: SLF001 process = processes._get_process(pid) # noqa: SLF001
if process.last_status == "failed": if process.last_status == "failed":
...@@ -222,6 +215,7 @@ def import_router(router_data: RouterImportModel) -> dict[str, Any]: ...@@ -222,6 +215,7 @@ def import_router(router_data: RouterImportModel) -> dict[str, Any]:
:raises HTTPException: If there's an error in the process. :raises HTTPException: If there's an error in the process.
""" """
pid = _start_process("import_router", router_data.dict()) pid = _start_process("import_router", router_data.dict())
return {"detail": "Router added successfully", "pid": pid} return {"detail": "Router added successfully", "pid": pid}
...@@ -238,5 +232,6 @@ def import_iptrunk(iptrunk_data: IptrunkImportModel) -> dict[str, Any]: ...@@ -238,5 +232,6 @@ def import_iptrunk(iptrunk_data: IptrunkImportModel) -> dict[str, Any]:
:raises HTTPException: If there's an error in the process. :raises HTTPException: If there's an error in the process.
""" """
pid = _start_process("import_iptrunk", iptrunk_data.dict()) pid = _start_process("import_iptrunk", iptrunk_data.dict())
return {"detail": "Iptrunk added successfully", "pid": pid} return {"detail": "Iptrunk added successfully", "pid": pid}
...@@ -11,18 +11,10 @@ from orchestrator.services.subscriptions import build_extended_domain_model ...@@ -11,18 +11,10 @@ from orchestrator.services.subscriptions import build_extended_domain_model
from gso.services.subscriptions import get_active_router_subscriptions from gso.services.subscriptions import get_active_router_subscriptions
router = APIRouter( router = APIRouter(prefix="/subscriptions", tags=["Subscriptions"], dependencies=[Depends(opa_security_default)])
prefix="/subscriptions",
tags=["Subscriptions"],
dependencies=[Depends(opa_security_default)],
)
@router.get( @router.get("/routers", status_code=status.HTTP_200_OK, response_model=list[SubscriptionDomainModelSchema])
"/routers",
status_code=status.HTTP_200_OK,
response_model=list[SubscriptionDomainModelSchema],
)
def subscription_routers() -> list[dict[str, Any]]: def subscription_routers() -> list[dict[str, Any]]:
"""Retrieve all active routers subscriptions.""" """Retrieve all active routers subscriptions."""
subscriptions = [] subscriptions = []
......
...@@ -32,10 +32,7 @@ def run_migrations_offline() -> None: ...@@ -32,10 +32,7 @@ def run_migrations_offline() -> None:
""" """
url = config.get_main_option("sqlalchemy.url") url = config.get_main_option("sqlalchemy.url")
context.configure( context.configure(
url=url, url=url, target_metadata=target_metadata, literal_binds=True, dialect_opts={"paramstyle": "named"}
target_metadata=target_metadata,
literal_binds=True,
dialect_opts={"paramstyle": "named"},
) )
with context.begin_transaction(): with context.begin_transaction():
......
...@@ -9,8 +9,8 @@ import sqlalchemy as sa ...@@ -9,8 +9,8 @@ import sqlalchemy as sa
from alembic import op from alembic import op
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = "3657611f0dfc" revision = '3657611f0dfc'
down_revision = "91047dd30b40" down_revision = '91047dd30b40'
branch_labels = None branch_labels = None
depends_on = None depends_on = None
...@@ -22,14 +22,14 @@ new_workflows = [ ...@@ -22,14 +22,14 @@ new_workflows = [
"name": "create_router", "name": "create_router",
"target": "CREATE", "target": "CREATE",
"description": "Create router", "description": "Create router",
"product_type": "Router", "product_type": "Router"
}, },
{ {
"name": "terminate_router", "name": "terminate_router",
"target": "TERMINATE", "target": "TERMINATE",
"description": "Terminate router", "description": "Terminate router",
"product_type": "Router", "product_type": "Router"
}, }
] ]
......
...@@ -9,8 +9,8 @@ import sqlalchemy as sa ...@@ -9,8 +9,8 @@ import sqlalchemy as sa
from alembic import op from alembic import op
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = "91047dd30b40" revision = '91047dd30b40'
down_revision = "97436160a422" down_revision = '97436160a422'
branch_labels = None branch_labels = None
depends_on = None depends_on = None
...@@ -22,7 +22,7 @@ new_workflows = [ ...@@ -22,7 +22,7 @@ new_workflows = [
"name": "create_site", "name": "create_site",
"target": "CREATE", "target": "CREATE",
"description": "Create Site", "description": "Create Site",
"product_type": "Site", "product_type": "Site"
} }
] ]
......
...@@ -9,8 +9,8 @@ import sqlalchemy as sa ...@@ -9,8 +9,8 @@ import sqlalchemy as sa
from alembic import op from alembic import op
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = "a6eefd32c4f7" revision = 'a6eefd32c4f7'
down_revision = "3657611f0dfc" down_revision = '3657611f0dfc'
branch_labels = None branch_labels = None
depends_on = None depends_on = None
...@@ -22,26 +22,26 @@ new_workflows = [ ...@@ -22,26 +22,26 @@ new_workflows = [
"name": "create_iptrunk", "name": "create_iptrunk",
"target": "CREATE", "target": "CREATE",
"description": "Create IP trunk", "description": "Create IP trunk",
"product_type": "Iptrunk", "product_type": "Iptrunk"
}, },
{ {
"name": "terminate_iptrunk", "name": "terminate_iptrunk",
"target": "TERMINATE", "target": "TERMINATE",
"description": "Terminate IPtrunk", "description": "Terminate IPtrunk",
"product_type": "Iptrunk", "product_type": "Iptrunk"
}, },
{ {
"name": "modify_trunk_interface", "name": "modify_trunk_interface",
"target": "MODIFY", "target": "MODIFY",
"description": "Modify IP Trunk interface", "description": "Modify IP Trunk interface",
"product_type": "Iptrunk", "product_type": "Iptrunk"
}, },
{ {
"name": "modify_isis_metric", "name": "modify_isis_metric",
"target": "MODIFY", "target": "MODIFY",
"description": "Modify IP trunk", "description": "Modify IP trunk",
"product_type": "Iptrunk", "product_type": "Iptrunk"
}, }
] ]
......
...@@ -9,8 +9,8 @@ import sqlalchemy as sa ...@@ -9,8 +9,8 @@ import sqlalchemy as sa
from alembic import op from alembic import op
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = "e68720f2ec32" revision = 'e68720f2ec32'
down_revision = "a6eefd32c4f7" down_revision = 'a6eefd32c4f7'
branch_labels = None branch_labels = None
depends_on = None depends_on = None
...@@ -22,7 +22,7 @@ new_workflows = [ ...@@ -22,7 +22,7 @@ new_workflows = [
"name": "migrate_iptrunk", "name": "migrate_iptrunk",
"target": "MODIFY", "target": "MODIFY",
"description": "Migrate an IP Trunk", "description": "Migrate an IP Trunk",
"product_type": "Iptrunk", "product_type": "Iptrunk"
} }
] ]
......
...@@ -9,162 +9,78 @@ import sqlalchemy as sa ...@@ -9,162 +9,78 @@ import sqlalchemy as sa
from alembic import op from alembic import op
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = "394dc60d5c02" revision = '394dc60d5c02'
down_revision = "01e42c100448" down_revision = '01e42c100448'
branch_labels = None branch_labels = None
depends_on = None depends_on = None
def upgrade() -> None: def upgrade() -> None:
conn = op.get_bind() conn = op.get_bind()
conn.execute( conn.execute(sa.text("""
sa.text(
"""
DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members_description')) DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members_description'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members_description')) DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members_description'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members')) DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members')) DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM subscription_instance_values WHERE subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members_description', 'iptrunk_side_ae_members')) DELETE FROM subscription_instance_values WHERE subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members_description', 'iptrunk_side_ae_members'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members_description', 'iptrunk_side_ae_members') DELETE FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_side_ae_members_description', 'iptrunk_side_ae_members')
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
INSERT INTO product_blocks (name, description, tag, status) VALUES ('IptrunkInterfaceBlock', 'Interface in a LAG as part of an IP trunk', 'IPTINT', 'active') RETURNING product_blocks.product_block_id INSERT INTO product_blocks (name, description, tag, status) VALUES ('IptrunkInterfaceBlock', 'Interface in a LAG as part of an IP trunk', 'IPTINT', 'active') RETURNING product_blocks.product_block_id
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
INSERT INTO resource_types (resource_type, description) VALUES ('interface_description', 'Description of a LAG interface') RETURNING resource_types.resource_type_id INSERT INTO resource_types (resource_type, description) VALUES ('interface_description', 'Description of a LAG interface') RETURNING resource_types.resource_type_id
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
INSERT INTO resource_types (resource_type, description) VALUES ('interface_name', 'Interface name of a LAG member') RETURNING resource_types.resource_type_id INSERT INTO resource_types (resource_type, description) VALUES ('interface_name', 'Interface name of a LAG member') RETURNING resource_types.resource_type_id
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
INSERT INTO product_block_relations (in_use_by_id, depends_on_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock'))) INSERT INTO product_block_relations (in_use_by_id, depends_on_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
INSERT INTO product_block_resource_types (product_block_id, resource_type_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_description'))) INSERT INTO product_block_resource_types (product_block_id, resource_type_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_description')))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
INSERT INTO product_block_resource_types (product_block_id, resource_type_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_name'))) INSERT INTO product_block_resource_types (product_block_id, resource_type_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_name')))
""" """))
)
)
def downgrade() -> None: def downgrade() -> None:
conn = op.get_bind() conn = op.get_bind()
conn.execute( conn.execute(sa.text("""
sa.text(
"""
DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_description')) DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_description'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_description')) DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_description'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_name')) DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_name'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_name')) DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_name'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM subscription_instance_values WHERE subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_description', 'interface_name')) DELETE FROM subscription_instance_values WHERE subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('interface_description', 'interface_name'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM resource_types WHERE resource_types.resource_type IN ('interface_description', 'interface_name') DELETE FROM resource_types WHERE resource_types.resource_type IN ('interface_description', 'interface_name')
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM product_block_relations WHERE product_block_relations.in_use_by_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock')) AND product_block_relations.depends_on_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')) DELETE FROM product_block_relations WHERE product_block_relations.in_use_by_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkSideBlock')) AND product_block_relations.depends_on_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM subscription_instances WHERE subscription_instances.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')) DELETE FROM subscription_instances WHERE subscription_instances.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock'))
""" """))
) conn.execute(sa.text("""
)
conn.execute(
sa.text(
"""
DELETE FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock') DELETE FROM product_blocks WHERE product_blocks.name IN ('IptrunkInterfaceBlock')
""" """))
)
)
...@@ -16,18 +16,8 @@ branch_labels = None ...@@ -16,18 +16,8 @@ branch_labels = None
depends_on = None depends_on = None
new_workflows = [ new_workflows = [
{ {"name": "modify_site", "target": "MODIFY", "description": "Modify site", "product_type": "Site"},
"name": "modify_site", {"name": "terminate_site", "target": "TERMINATE", "description": "Terminate site", "product_type": "Site"},
"target": "MODIFY",
"description": "Modify site",
"product_type": "Site",
},
{
"name": "terminate_site",
"target": "TERMINATE",
"description": "Terminate site",
"product_type": "Site",
},
] ]
......
...@@ -26,5 +26,5 @@ SUBSCRIPTION_MODEL_REGISTRY.update( ...@@ -26,5 +26,5 @@ SUBSCRIPTION_MODEL_REGISTRY.update(
"Site": Site, "Site": Site,
"Router": Router, "Router": Router,
"IP trunk": Iptrunk, "IP trunk": Iptrunk,
}, }
) )
...@@ -7,11 +7,7 @@ from orchestrator.domain.base import ProductBlockModel ...@@ -7,11 +7,7 @@ from orchestrator.domain.base import ProductBlockModel
from orchestrator.forms.validators import UniqueConstrainedList from orchestrator.forms.validators import UniqueConstrainedList
from orchestrator.types import SubscriptionLifecycle, strEnum from orchestrator.types import SubscriptionLifecycle, strEnum
from gso.products.product_blocks.router import ( from gso.products.product_blocks.router import RouterBlock, RouterBlockInactive, RouterBlockProvisioning
RouterBlock,
RouterBlockInactive,
RouterBlockProvisioning,
)
class PhyPortCapacity(strEnum): class PhyPortCapacity(strEnum):
...@@ -41,9 +37,7 @@ class LAGMemberList(UniqueConstrainedList[T_co]): # type: ignore[type-var] ...@@ -41,9 +37,7 @@ class LAGMemberList(UniqueConstrainedList[T_co]): # type: ignore[type-var]
class IptrunkInterfaceBlockInactive( class IptrunkInterfaceBlockInactive(
ProductBlockModel, ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="IptrunkInterfaceBlock"
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="IptrunkInterfaceBlock",
): ):
"""An inactive IP trunk interface.""" """An inactive IP trunk interface."""
...@@ -74,9 +68,7 @@ class IptrunkSides(UniqueConstrainedList[T_co]): # type: ignore[type-var] ...@@ -74,9 +68,7 @@ class IptrunkSides(UniqueConstrainedList[T_co]): # type: ignore[type-var]
class IptrunkSideBlockInactive( class IptrunkSideBlockInactive(
ProductBlockModel, ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="IptrunkSideBlock"
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="IptrunkSideBlock",
): ):
"""An inactive IP trunk side.""" """An inactive IP trunk side."""
...@@ -105,9 +97,7 @@ class IptrunkSideBlock(IptrunkSideBlockProvisioning, lifecycle=[SubscriptionLife ...@@ -105,9 +97,7 @@ class IptrunkSideBlock(IptrunkSideBlockProvisioning, lifecycle=[SubscriptionLife
class IptrunkBlockInactive( class IptrunkBlockInactive(
ProductBlockModel, ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="IptrunkBlock"
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="IptrunkBlock",
): ):
"""A trunk that's currently inactive, see :class:`IptrunkBlock`.""" """A trunk that's currently inactive, see :class:`IptrunkBlock`."""
......
...@@ -6,11 +6,7 @@ from orchestrator.domain.base import ProductBlockModel ...@@ -6,11 +6,7 @@ from orchestrator.domain.base import ProductBlockModel
from orchestrator.types import SubscriptionLifecycle, strEnum from orchestrator.types import SubscriptionLifecycle, strEnum
from pydantic import ConstrainedInt from pydantic import ConstrainedInt
from gso.products.product_blocks.site import ( from gso.products.product_blocks.site import SiteBlock, SiteBlockInactive, SiteBlockProvisioning
SiteBlock,
SiteBlockInactive,
SiteBlockProvisioning,
)
class RouterVendor(strEnum): class RouterVendor(strEnum):
...@@ -39,9 +35,7 @@ class PortNumber(ConstrainedInt): ...@@ -39,9 +35,7 @@ class PortNumber(ConstrainedInt):
class RouterBlockInactive( class RouterBlockInactive(
ProductBlockModel, ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="RouterBlock"
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="RouterBlock",
): ):
"""A router that's being currently inactive. See :class:`RouterBlock`.""" """A router that's being currently inactive. See :class:`RouterBlock`."""
......
...@@ -34,8 +34,7 @@ class LatitudeCoordinate(ConstrainedStr): ...@@ -34,8 +34,7 @@ class LatitudeCoordinate(ConstrainedStr):
def validate(cls, value: str) -> str: def validate(cls, value: str) -> str:
"""Validate that a latitude coordinate is valid.""" """Validate that a latitude coordinate is valid."""
if not cls.regex.match(value): if not cls.regex.match(value):
msg = "Invalid latitude coordinate. Valid examples: '40.7128', '-74.0060', '90', '-90', '0'." raise ValueError("Invalid latitude coordinate. Valid examples: '40.7128', '-74.0060', '90', '-90', '0'.")
raise ValueError(msg)
return value return value
...@@ -54,17 +53,12 @@ class LongitudeCoordinate(ConstrainedStr): ...@@ -54,17 +53,12 @@ class LongitudeCoordinate(ConstrainedStr):
def validate(cls, value: str) -> str: def validate(cls, value: str) -> str:
"""Validate that a longitude coordinate is valid.""" """Validate that a longitude coordinate is valid."""
if not cls.regex.match(value): if not cls.regex.match(value):
msg = "Invalid longitude coordinate. Valid examples: '40.7128', '-74.0060', '180', '-180'" raise ValueError("Invalid longitude coordinate. Valid examples: '40.7128', '-74.0060', '180', '-180'")
raise ValueError(msg)
return value return value
class SiteBlockInactive( class SiteBlockInactive(ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="SiteBlock"):
ProductBlockModel,
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="SiteBlock",
):
"""A site that's currently inactive, see :class:`SiteBlock`.""" """A site that's currently inactive, see :class:`SiteBlock`."""
site_name: str | None = None site_name: str | None = None
......
...@@ -3,11 +3,7 @@ ...@@ -3,11 +3,7 @@
from orchestrator.domain.base import SubscriptionModel from orchestrator.domain.base import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle from orchestrator.types import SubscriptionLifecycle
from gso.products.product_blocks.iptrunk import ( from gso.products.product_blocks.iptrunk import IptrunkBlock, IptrunkBlockInactive, IptrunkBlockProvisioning
IptrunkBlock,
IptrunkBlockInactive,
IptrunkBlockProvisioning,
)
class IptrunkInactive(SubscriptionModel, is_base=True): class IptrunkInactive(SubscriptionModel, is_base=True):
......
...@@ -3,11 +3,7 @@ ...@@ -3,11 +3,7 @@
from orchestrator.domain.base import SubscriptionModel from orchestrator.domain.base import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle from orchestrator.types import SubscriptionLifecycle
from gso.products.product_blocks.router import ( from gso.products.product_blocks.router import RouterBlock, RouterBlockInactive, RouterBlockProvisioning
RouterBlock,
RouterBlockInactive,
RouterBlockProvisioning,
)
class RouterInactive(SubscriptionModel, is_base=True): class RouterInactive(SubscriptionModel, is_base=True):
......
...@@ -3,11 +3,7 @@ ...@@ -3,11 +3,7 @@
from orchestrator.domain.base import SubscriptionModel from orchestrator.domain.base import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle from orchestrator.types import SubscriptionLifecycle
from gso.products.product_blocks.site import ( from gso.products.product_blocks.site import SiteBlock, SiteBlockInactive, SiteBlockProvisioning
SiteBlock,
SiteBlockInactive,
SiteBlockProvisioning,
)
class SiteInactive(SubscriptionModel, is_base=True): class SiteInactive(SubscriptionModel, is_base=True):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment