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

Finished release 3.11.

parents 9b839733 6e6a86fa
No related branches found
No related tags found
No related merge requests found
Pipeline #95015 failed
# Changelog
# [3.10] - 2025-06-17
- Added parallelized massive base config redeploy
## [3.11] - 2025-06-18
- Update subscription descriptions for Layer 2 Circuit products.
## [3.10] - 2025-06-17
- Added parallelized massive base config redeploy.
- Added and integrated R&E Peer and R&E LHCONE workflows, product types, and related migrations.
# [3.9] - 2025-06-05
## [3.9] - 2025-06-05
- Add threshold input for BGP routes in L3 Core migration workflows and forward the value to Moodi.
# [3.8] - 2025-05-28
- Add backfill service version for IP Trunks
## [3.8] - 2025-05-28
- Add backfill service version for IP Trunks.
# [3.7] - 2025-05-26
- Add service version for IP Trunks
## [3.7] - 2025-05-26
- Add service version for IP Trunks.
# [3.6] - 2025-05-15
## [3.6] - 2025-05-15
- Stop validating Edge Ports that are on a Juniper router.
- Allow skipping Ansible steps in the Edge Port termination workflow.
- Update translations.
# [3.5] - 2025-05-12
## [3.5] - 2025-05-12
- Add a new CLI command for interacting with the task scheduler.
- Fix a bug in the subscription validation task.
# [3.4] - 2025-05-08
## [3.4] - 2025-05-08
- Fix some bugs in the nightly validation schedule.
# [3.3] - 2025-05-07
## [3.3] - 2025-05-07
- Fix CLI bug for importing L3 core services.
# [3.2] - 2025-05-02
## [3.2] - 2025-05-02
- Allow running the Edge Port modification workflow on Juniper routers.
- Update labels of IAS flavors.
# [3.1] - 2025-04-29
## [3.1] - 2025-04-29
- Allow running the prefix validation workflow on out-of-sync subscriptions
- Only check Kentik licenses during router validation in production
- Add optional TTL security field to BGP session product block
......
"""Update Layer 2 Circuit subscription descriptions.
Revision ID: 550e3aebc1c5
Revises: d23b59abc6a5
Create Date: 2025-06-04 16:08:56.288635
This database migration updates the description of all Layer2Circuit-type subscriptions by having fit the format:
``product_name - custom_service_name``.
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = '550e3aebc1c5'
down_revision = 'd23b59abc6a5'
branch_labels = None
depends_on = None
def upgrade() -> None:
conn = op.get_bind()
conn.execute(sa.text("""
UPDATE subscriptions s
SET description = (
Regexp_replace(subscriptions.description, '^(.+) - .+$', '\\1 - ') ||
subscription_instance_values.value
)
FROM subscriptions
JOIN products
ON subscriptions.product_id = products.product_id
JOIN product_product_blocks
ON products.product_id = product_product_blocks.product_id
JOIN product_block_resource_types
ON product_product_blocks.product_block_id =
product_block_resource_types.product_block_id
JOIN resource_types
ON product_block_resource_types.resource_type_id =
resource_types.resource_type_id
JOIN subscription_instances
ON subscriptions.subscription_id =
subscription_instances.subscription_id
JOIN subscription_instance_values
ON ( resource_types.resource_type_id =
subscription_instance_values.resource_type_id
AND subscription_instances.subscription_instance_id =
subscription_instance_values.subscription_instance_id )
WHERE resource_types.resource_type = 'custom_service_name'
AND products.product_type = 'Layer2Circuit'
AND s.subscription_id = subscriptions.subscription_id;
"""))
def downgrade() -> None:
pass
......@@ -128,7 +128,7 @@ def initialize_subscription(
subscription.layer_2_circuit.bandwidth = policer_bandwidth
subscription.layer_2_circuit.policer_burst_rate = policer_burst_rate
subscription.layer_2_circuit.custom_service_name = custom_service_name
subscription.description = f"{subscription.product.name} - {subscription.layer_2_circuit.virtual_circuit_id}"
subscription.description = f"{subscription.product.name} - {subscription.layer_2_circuit.custom_service_name}"
return {"subscription": subscription}
......
......@@ -141,7 +141,7 @@ def initialize_subscription(
subscription.layer_2_circuit.bandwidth = policer_bandwidth
subscription.layer_2_circuit.policer_burst_rate = policer_burst_rate
subscription.layer_2_circuit.custom_service_name = custom_service_name
subscription.description = f"{subscription.product.name} - {subscription.layer_2_circuit.virtual_circuit_id}"
subscription.description = f"{subscription.product.name} - {subscription.layer_2_circuit.custom_service_name}"
subscription = Layer2Circuit.from_other_lifecycle(subscription, SubscriptionLifecycle.PROVISIONING)
fqdn_list = [side.sbp.edge_port.node.router_fqdn for side in subscription.layer_2_circuit.layer_2_circuit_sides]
......
......@@ -126,6 +126,7 @@ def modify_layer_2_circuit_subscription(
subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.vlan_id = layer_2_circuit_side_b.get("vlan_id")
for layer_2_circuit_side in subscription.layer_2_circuit.layer_2_circuit_sides:
layer_2_circuit_side.sbp.is_tagged = layer_2_circuit_type == Layer2CircuitType.VLAN
subscription.description = f"{subscription.product.name} - {subscription.layer_2_circuit.custom_service_name}"
return {"subscription": subscription}
......
......@@ -4,7 +4,7 @@ from setuptools import find_packages, setup
setup(
name="geant-service-orchestrator",
version="3.10",
version="3.11",
author="GÉANT Orchestration and Automation Team",
author_email="goat@geant.org",
description="GÉANT Service Orchestrator",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment