Skip to content
Snippets Groups Projects
Commit 88798c02 authored by geant-release-service's avatar geant-release-service
Browse files

Finished release 2.6.

parents 046c3e1d 458a2dec
Branches
Tags 2.6
No related merge requests found
Pipeline #87739 passed
Showing
with 138 additions and 15 deletions
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## [2.6] - 2024-07-17
- Added verification workflows.
## [2.5] - 2024-07-16 ## [2.5] - 2024-07-16
- Added import Opengear workflow. - Added import Opengear workflow.
- NAT-616 - NAT-616
......
...@@ -27,7 +27,7 @@ Glossary of terms ...@@ -27,7 +27,7 @@ Glossary of terms
Create, Read, Update, Delete Create, Read, Update, Delete
DNS DNS
Domain Name System The Domain Name System. Used for correlating domain names to IP information, among others.
FQDN FQDN
Fully Quantified Domain Name Fully Quantified Domain Name
...@@ -83,7 +83,7 @@ Glossary of terms ...@@ -83,7 +83,7 @@ Glossary of terms
and monitoring. and monitoring.
TWAMP TWAMP
Two-way Active Measurement Protocol. A Two-Way Active Measuring Protocol, as defined in `RFC 5357 <https://datatracker.ietf.org/doc/html/rfc5357>`_.
UUID UUID
Universally Unique Identifier Universally Unique Identifier
......
...@@ -14,7 +14,8 @@ Subpackages ...@@ -14,7 +14,8 @@ Subpackages
iptrunk/index iptrunk/index
office_router/index office_router/index
opengear/index
router/index router/index
site/index site/index
super_pop_switch/index super_pop_switch/index
opengear/index tasks/index
``gso.workflows.iptrunk.deploy_twamp``
======================================
.. automodule:: gso.workflows.iptrunk.deploy_twamp
:members:
:show-inheritance:
...@@ -15,8 +15,10 @@ Submodules ...@@ -15,8 +15,10 @@ Submodules
activate_iptrunk activate_iptrunk
create_imported_iptrunk create_imported_iptrunk
create_iptrunk create_iptrunk
deploy_twamp
import_iptrunk import_iptrunk
migrate_iptrunk migrate_iptrunk
modify_isis_metric modify_isis_metric
modify_trunk_interface modify_trunk_interface
terminate_iptrunk terminate_iptrunk
validate_iptrunk
``gso.workflows.iptrunk.validate_iptrunk``
==========================================
.. automodule:: gso.workflows.iptrunk.validate_iptrunk
:members:
:show-inheritance:
...@@ -20,3 +20,4 @@ Submodules ...@@ -20,3 +20,4 @@ Submodules
redeploy_base_config redeploy_base_config
terminate_router terminate_router
update_ibgp_mesh update_ibgp_mesh
validate_router
``gso.workflows.router.validate_router``
========================================
.. automodule:: gso.workflows.router.validate_router
:members:
:show-inheritance:
``gso.workflows.tasks``
=======================
.. automodule:: gso.workflows.tasks
:members:
:show-inheritance:
Submodules
----------
.. toctree::
:maxdepth: 2
:titlesonly:
validate_geant_products
``gso.workflows.tasks.validate_geant_products``
===============================================
.. automodule:: gso.workflows.tasks.validate_geant_products
:members:
:show-inheritance:
...@@ -364,7 +364,7 @@ def _evaluate_decision(decision: OPAResult, *, auto_error: bool, **context: dict ...@@ -364,7 +364,7 @@ def _evaluate_decision(decision: OPAResult, *, auto_error: bool, **context: dict
raise HTTPException( raise HTTPException(
status_code=HTTPStatus.FORBIDDEN, status_code=HTTPStatus.FORBIDDEN,
detail=f"User is not allowed to access resource: {context.get('resource')} Decision was taken with id: {did}", detail=f"User is not allowed to access resource: {context.get("resource")} Decision was taken with id: {did}",
) )
......
...@@ -218,7 +218,7 @@ def _generic_import_product( ...@@ -218,7 +218,7 @@ def _generic_import_product(
typer.echo(f"Creating imported {name_key}: {details[name_key]}") typer.echo(f"Creating imported {name_key}: {details[name_key]}")
try: try:
initial_data = import_model(**details) initial_data = import_model(**details)
start_process(f"create_imported_{workflow_suffix}", [initial_data.dict()]) start_process(f"create_imported_{workflow_suffix}", [initial_data.model_dump()])
successfully_imported_data.append(getattr(initial_data, name_key)) successfully_imported_data.append(getattr(initial_data, name_key))
typer.echo( typer.echo(
f"Successfully created {name_key}: {getattr(initial_data, name_key)}", f"Successfully created {name_key}: {getattr(initial_data, name_key)}",
...@@ -307,14 +307,14 @@ def import_iptrunks(filepath: str = common_filepath_option) -> None: ...@@ -307,14 +307,14 @@ def import_iptrunks(filepath: str = common_filepath_option) -> None:
iptrunk_ipv4_network = ipv4_network_a iptrunk_ipv4_network = ipv4_network_a
else: else:
# Handle the case where IPv4 networks are different # Handle the case where IPv4 networks are different
typer.echo(f"Error: IPv4 networks are different for trunk {trunk['id']}.") typer.echo(f"Error: IPv4 networks are different for trunk {trunk["id"]}.")
continue continue
# Check if IPv6 networks are the same # Check if IPv6 networks are the same
if ipv6_network_a == ipv6_network_b: if ipv6_network_a == ipv6_network_b:
iptrunk_ipv6_network = ipv6_network_a iptrunk_ipv6_network = ipv6_network_a
else: else:
# Handle the case where IPv6 networks are different # Handle the case where IPv6 networks are different
typer.echo(f"Error: IPv6 networks are different for trunk {trunk['id']}.") typer.echo(f"Error: IPv6 networks are different for trunk {trunk["id"]}.")
continue continue
typer.echo( typer.echo(
...@@ -341,9 +341,9 @@ def import_iptrunks(filepath: str = common_filepath_option) -> None: ...@@ -341,9 +341,9 @@ def import_iptrunks(filepath: str = common_filepath_option) -> None:
iptrunk_ipv4_network=iptrunk_ipv4_network, iptrunk_ipv4_network=iptrunk_ipv4_network,
iptrunk_ipv6_network=iptrunk_ipv6_network, iptrunk_ipv6_network=iptrunk_ipv6_network,
) )
start_process("create_imported_iptrunk", [initial_data.dict()]) start_process("create_imported_iptrunk", [initial_data.model_dump()])
successfully_imported_data.append(trunk["id"]) successfully_imported_data.append(trunk["id"])
typer.echo(f"Successfully imported IP Trunk: {trunk['id']}") typer.echo(f"Successfully imported IP Trunk: {trunk["id"]}")
except ValidationError as e: except ValidationError as e:
typer.echo(f"Validation error: {e}") typer.echo(f"Validation error: {e}")
......
"""Add router validation task.
Revision ID: 6c986f219e3f
Revises: f6a38f9e9e18
Create Date: 2023-09-22 17:13:01.223133
"""
from alembic import op
# revision identifiers, used by Alembic.
revision = '6c986f219e3f'
down_revision = 'f6a38f9e9e18'
branch_labels = None
depends_on = None
from orchestrator.migrations.helpers import create_workflow, delete_workflow
new_workflows = [
{
"name": "validate_router",
"target": "SYSTEM",
"description": "Validate router configuration",
"product_type": "Router"
}
]
def upgrade() -> None:
conn = op.get_bind()
for workflow in new_workflows:
create_workflow(conn, workflow)
def downgrade() -> None:
conn = op.get_bind()
for workflow in new_workflows:
delete_workflow(conn, workflow["name"])
"""Add IP Trunk workflows. """Add IP Trunk workflows.
Revision ID: 6dbd6c4c04b4 Revision ID: 6dbd6c4c04b4
Revises: 815033570ad7 Revises: 0c31b60487c8
Create Date: 2023-11-21 12:55:29.689402 Create Date: 2023-11-21 12:55:29.689402
""" """
......
"""Add router workflows. """Add router workflows.
Revision ID: 815033570ad7 Revision ID: 815033570ad7
Revises: 0c31b60487c8 Revises: 0c904cf0b66b
Create Date: 2023-11-21 12:53:26.413333 Create Date: 2023-11-21 12:53:26.413333
""" """
......
"""Add TWAMP deployment workflow. """Add TWAMP deployment workflow.
Revision ID: f0764c6f392c Revision ID: f0764c6f392c
Revises: 815033570ad7 Revises: b689d4636694
Create Date: 2023-12-27 14:31:42.285180 Create Date: 2023-12-27 14:31:42.285180
""" """
......
"""Add IP Trunk validation workflow.
Revision ID: a1a69e7554c4
Revises: 6c986f219e3f
Create Date: 2024-01-11 15:57:57.534785
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = 'a1a69e7554c4'
down_revision = '6c986f219e3f'
branch_labels = None
depends_on = None
from orchestrator.migrations.helpers import create_workflow, delete_workflow
new_workflows = [
{
"name": "validate_iptrunk",
"target": "SYSTEM",
"description": "Validate IP trunk configuration",
"product_type": "Iptrunk"
}
]
def upgrade() -> None:
conn = op.get_bind()
for workflow in new_workflows:
create_workflow(conn, workflow)
def downgrade() -> None:
conn = op.get_bind()
for workflow in new_workflows:
delete_workflow(conn, workflow["name"])
"""Add switch products.. """Add switch products..
Revision ID: 393acfa175c0 Revision ID: 393acfa175c0
Revises: Revises: 4ec89ab289c0
Create Date: 2024-04-17 15:09:13.716522 Create Date: 2024-04-17 15:09:13.716522
""" """
......
"""Add upstream migrations as a dependency. """Add upstream migrations as a dependency.
Revision ID: 1ec810b289c0 Revision ID: 1ec810b289c0
Revises: Revises: 32cad119b7c4
Create Date: 2024-04-02 10:21:08.539591 Create Date: 2024-04-02 10:21:08.539591
""" """
......
""" Modify ISIS metric workflow description """ Modify ISIS metric workflow description
Revision ID: fvd7mfcfbs1q Revision ID: fvd7mfcfbs1q
Revises: Revises: 1ec810b289c0
Create Date: 2024-06-19 11:17:08.539591 Create Date: 2024-06-19 11:17:08.539591
""" """
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment