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

Finished release 3.8.

parents 22fa5626 97d4ba9b
No related branches found
No related tags found
No related merge requests found
Pipeline #94482 passed
# Changelog
# [3.8] - 2025-05-28
- Add backfill service version for IP Trunks
# [3.7] - 2025-05-26
- Add service version for IP Trunks
......
"""empty message.
Revision ID: 90547df711c3
Revises: 54477431c9ef
Create Date: 2025-05-28 10:15:07.579188
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = '90547df711c3'
down_revision = '54477431c9ef'
branch_labels = None
depends_on = None
def upgrade() -> None:
conn = op.get_bind()
conn.execute(sa.text("""
WITH rt_id AS (
SELECT resource_type_id FROM resource_types WHERE resource_type = 'iptrunk_config_version'
)
INSERT INTO subscription_instance_values (subscription_instance_id, resource_type_id, value)
SELECT si.subscription_instance_id, rt_id.resource_type_id, '1.0'
FROM rt_id, subscription_instances si
WHERE si.product_block_id = (
SELECT product_block_id FROM product_blocks WHERE name = 'IptrunkBlock'
);
"""))
def downgrade() -> None:
conn = op.get_bind()
conn.execute(sa.text("""
WITH rt_id AS (
SELECT resource_type_id FROM resource_types WHERE resource_type = 'iptrunk_config_version'
)
DELETE FROM subscription_instance_values
WHERE resource_type_id = (SELECT resource_type_id FROM rt_id)
AND value = '1.0'
AND subscription_instance_id IN (
SELECT subscription_instance_id FROM subscription_instances
WHERE product_block_id = (
SELECT product_block_id FROM product_blocks WHERE name = 'IptrunkBlock'
)
);
"""))
......@@ -134,15 +134,15 @@
"SERVICE_VERSIONS": {
"IP_TRUNK": {
"version": {
"1.0": "Base Version",
"1.1": "Minor Upgrade"
"1.0": "1.0 - Base Version",
"2.0": "2.0 - Minor Upgrade"
},
"default_version": "1.0"
},
"GEANT_IP": {
"version": {
"1.0": "Base Version",
"2.0": "Major Upgrade"
"1.0": "1.0 - Base Version",
"2.0": "2.0 - Minor Upgrade"
},
"default_version": "1.0"
}
......
......@@ -283,16 +283,13 @@ def active_edge_port_selector(*, partner_id: UUIDstr | None = None) -> TypeAlias
)
def ip_trunk_service_version_selector() -> TypeAlias:
def ip_trunk_service_version_selector() -> Choice:
"""Generate a dropdown selector for choosing a service version."""
iptrunk_versions = load_oss_params().SERVICE_VERSIONS.IP_TRUNK.version
return cast(
type[Choice],
Choice.__call__(
"Select an IP trunk service version.",
[(k, f"Version {k} - {iptrunk_versions[k]}") for k in iptrunk_versions],
),
return Choice(
"Select an IP trunk service version.",
zip(iptrunk_versions.keys(), iptrunk_versions.items(), strict=True), # type: ignore[arg-type]
)
......
......@@ -4,7 +4,7 @@ from setuptools import find_packages, setup
setup(
name="geant-service-orchestrator",
version="3.7",
version="3.8",
author="GÉANT Orchestration and Automation Team",
author_email="goat@geant.org",
description="GÉANT Service Orchestrator",
......
......@@ -74,7 +74,7 @@ def input_form_wizard_data(request, router_subscription_factory, faker):
"iptrunk_speed": PhysicalPortCapacity.HUNDRED_GIGABIT_PER_SECOND,
"iptrunk_number_of_members": 2,
"iptrunk_description_suffix": faker.word(),
"iptrunk_config_version": "Version 1.0 - Base Version",
"iptrunk_config_version": "1.0",
}
create_ip_trunk_confirm_step = {"iptrunk_minimum_links": 1}
create_ip_trunk_side_a_router_name = {"side_a_node_id": router_side_a}
......@@ -158,6 +158,7 @@ def test_successful_iptrunk_creation_with_standard_lso_result(
f"{input_form_wizard_data[0]["iptrunk_description_suffix"]}, "
f"{subscription.iptrunk.gs_id}"
)
assert subscription.iptrunk.iptrunk_config_version == input_form_wizard_data[0]["iptrunk_config_version"]
# We search for 6 hosts in total, 2 in a /31 and 4 in a /126
assert mock_find_host_by_ip.call_count == 6
......
......@@ -222,6 +222,7 @@ def test_iptrunk_modify_trunk_interface_success(
assert subscription.iptrunk.iptrunk_minimum_links == input_form_iptrunk_data[1]["iptrunk_number_of_members"] - 1
assert subscription.iptrunk.iptrunk_sides[0].ga_id == new_side_a_gid
assert subscription.iptrunk.iptrunk_description_suffix == input_form_iptrunk_data[1]["iptrunk_description_suffix"]
assert subscription.iptrunk.iptrunk_config_version == input_form_iptrunk_data[1]["iptrunk_config_version"]
def _find_interface_by_name(interfaces: list[dict], name: str):
for interface in interfaces:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment