From 486239cc39ea4dacac654d5b187159967f8157ef Mon Sep 17 00:00:00 2001
From: Neda Moeini <neda.moeini@geant.org>
Date: Wed, 4 Dec 2024 15:49:18 +0100
Subject: [PATCH] Rename Service IDs to GS or GA id.

---
 ...ename_iptrunk_and_iptrunk_side_sid_and_.py | 35 ++++++++++++++
 ...5c_rename_edgeport_and_sbp_gs_and_ga_id.py | 47 +++++++++++++++++++
 gso/products/product_blocks/edge_port.py      |  6 +--
 gso/products/product_blocks/iptrunk.py        | 12 ++---
 .../product_blocks/service_binding_port.py    |  6 +--
 5 files changed, 94 insertions(+), 12 deletions(-)
 create mode 100644 gso/migrations/versions/2024-12-04_e358efe9ab03_rename_iptrunk_and_iptrunk_side_sid_and_.py
 create mode 100644 gso/migrations/versions/2024-12-04_e36b3bd8a45c_rename_edgeport_and_sbp_gs_and_ga_id.py

diff --git a/gso/migrations/versions/2024-12-04_e358efe9ab03_rename_iptrunk_and_iptrunk_side_sid_and_.py b/gso/migrations/versions/2024-12-04_e358efe9ab03_rename_iptrunk_and_iptrunk_side_sid_and_.py
new file mode 100644
index 00000000..63bc63a7
--- /dev/null
+++ b/gso/migrations/versions/2024-12-04_e358efe9ab03_rename_iptrunk_and_iptrunk_side_sid_and_.py
@@ -0,0 +1,35 @@
+"""Rename iptrunk and iptrunk side sid and gid.
+
+Revision ID: e358efe9ab03
+Revises: 4cc835c615fc
+Create Date: 2024-12-04 15:05:46.356709
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'e358efe9ab03'
+down_revision = '4cc835c615fc'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+    conn = op.get_bind()
+    conn.execute(sa.text("""
+UPDATE resource_types SET resource_type='ga_id' WHERE resource_types.resource_type = 'iptrunk_side_ae_geant_a_sid'
+    """))
+    conn.execute(sa.text("""
+UPDATE resource_types SET resource_type='gs_id' WHERE resource_types.resource_type = 'geant_s_sid'
+    """))
+
+
+def downgrade() -> None:
+    conn = op.get_bind()
+    conn.execute(sa.text("""
+UPDATE resource_types SET resource_type='iptrunk_side_ae_geant_a_sid' WHERE resource_types.resource_type = 'ga_id'
+    """))
+    conn.execute(sa.text("""
+UPDATE resource_types SET resource_type='geant_s_sid' WHERE resource_types.resource_type = 'gs_id'
+    """))
diff --git a/gso/migrations/versions/2024-12-04_e36b3bd8a45c_rename_edgeport_and_sbp_gs_and_ga_id.py b/gso/migrations/versions/2024-12-04_e36b3bd8a45c_rename_edgeport_and_sbp_gs_and_ga_id.py
new file mode 100644
index 00000000..180c97ee
--- /dev/null
+++ b/gso/migrations/versions/2024-12-04_e36b3bd8a45c_rename_edgeport_and_sbp_gs_and_ga_id.py
@@ -0,0 +1,47 @@
+"""Rename edgeport and sbp gs and ga id.
+
+Revision ID: e36b3bd8a45c
+Revises: e358efe9ab03
+Create Date: 2024-12-04 15:08:30.512126
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'e36b3bd8a45c'
+down_revision = 'e358efe9ab03'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+    conn = op.get_bind()
+    conn.execute(sa.text("""
+UPDATE product_block_resource_types SET resource_type_id=(SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('ga_id')) WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('EdgePortBlock')) AND product_block_resource_types.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_ga_id'))
+    """))
+    conn.execute(sa.text("""
+UPDATE product_block_resource_types SET resource_type_id=(SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('gs_id')) WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('ServiceBindingPort')) AND product_block_resource_types.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_sid'))
+    """))
+    conn.execute(sa.text("""
+UPDATE subscription_instance_values SET resource_type_id=(SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('ga_id')) WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('EdgePortBlock'))) AND subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_ga_id'))
+    """))
+    conn.execute(sa.text("""
+UPDATE subscription_instance_values SET resource_type_id=(SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('gs_id')) WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('ServiceBindingPort'))) AND subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_sid'))
+    """))
+
+
+def downgrade() -> None:
+    conn = op.get_bind()
+    conn.execute(sa.text("""
+UPDATE product_block_resource_types SET resource_type_id=(SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_ga_id')) WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('EdgePortBlock')) AND product_block_resource_types.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('ga_id'))
+    """))
+    conn.execute(sa.text("""
+UPDATE product_block_resource_types SET resource_type_id=(SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_sid')) WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('ServiceBindingPort')) AND product_block_resource_types.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('gs_id'))
+    """))
+    conn.execute(sa.text("""
+UPDATE subscription_instance_values SET resource_type_id=(SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_ga_id')) WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('EdgePortBlock'))) AND subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('ga_id'))
+    """))
+    conn.execute(sa.text("""
+UPDATE subscription_instance_values SET resource_type_id=(SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_sid')) WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('ServiceBindingPort'))) AND subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('gs_id'))
+    """))
diff --git a/gso/products/product_blocks/edge_port.py b/gso/products/product_blocks/edge_port.py
index b3400e0f..8f5c4bb1 100644
--- a/gso/products/product_blocks/edge_port.py
+++ b/gso/products/product_blocks/edge_port.py
@@ -72,7 +72,7 @@ class EdgePortBlockInactive(
     minimum_links: int | None = None
     edge_port_type: EdgePortType | None = None
     ignore_if_down: bool = False
-    geant_ga_id: str | None = None
+    ga_id: str | None = None
     edge_port_ae_members: LAGMemberList[EdgePortAEMemberBlockInactive]
 
 
@@ -89,7 +89,7 @@ class EdgePortBlockProvisioning(EdgePortBlockInactive, lifecycle=[SubscriptionLi
     minimum_links: int | None = None
     edge_port_type: EdgePortType
     ignore_if_down: bool = False
-    geant_ga_id: str | None = None
+    ga_id: str | None = None
     edge_port_ae_members: LAGMemberList[EdgePortAEMemberBlockProvisioning]  # type: ignore[assignment]
 
 
@@ -117,6 +117,6 @@ class EdgePortBlock(EdgePortBlockProvisioning, lifecycle=[SubscriptionLifecycle.
     #: If set to True, the edge port will be ignored if it is down.
     ignore_if_down: bool = False
     #: The GEANT GA ID associated with this edge port, if any.
-    geant_ga_id: str | None = None
+    ga_id: str | None = None
     #: A list of LAG members associated with this edge port.
     edge_port_ae_members: LAGMemberList[EdgePortAEMemberBlock]  # type: ignore[assignment]
diff --git a/gso/products/product_blocks/iptrunk.py b/gso/products/product_blocks/iptrunk.py
index e68911dd..9ffaa788 100644
--- a/gso/products/product_blocks/iptrunk.py
+++ b/gso/products/product_blocks/iptrunk.py
@@ -67,7 +67,7 @@ class IptrunkSideBlockInactive(
 
     iptrunk_side_node: RouterBlockInactive
     iptrunk_side_ae_iface: str | None = None
-    iptrunk_side_ae_geant_a_sid: str | None = None
+    ga_id: str | None = None
     iptrunk_side_ae_members: LAGMemberList[IptrunkInterfaceBlockInactive]
 
 
@@ -76,7 +76,7 @@ class IptrunkSideBlockProvisioning(IptrunkSideBlockInactive, lifecycle=[Subscrip
 
     iptrunk_side_node: RouterBlockProvisioning
     iptrunk_side_ae_iface: str
-    iptrunk_side_ae_geant_a_sid: str | None = None
+    ga_id: str | None = None
     iptrunk_side_ae_members: LAGMemberList[IptrunkInterfaceBlockProvisioning]  # type: ignore[assignment]
 
 
@@ -85,7 +85,7 @@ class IptrunkSideBlock(IptrunkSideBlockProvisioning, lifecycle=[SubscriptionLife
 
     iptrunk_side_node: RouterBlock
     iptrunk_side_ae_iface: str
-    iptrunk_side_ae_geant_a_sid: str | None = None
+    ga_id: str | None = None
     iptrunk_side_ae_members: LAGMemberList[IptrunkInterfaceBlock]  # type: ignore[assignment]
 
 
@@ -96,7 +96,7 @@ class IptrunkBlockInactive(
 ):
     """A trunk that's currently inactive, see ``IptrunkBlock``."""
 
-    geant_s_sid: str | None = None
+    gs_id: str | None = None
     iptrunk_description: str | None = None
     iptrunk_type: IptrunkType | None = None
     iptrunk_speed: PhysicalPortCapacity | None = None
@@ -110,7 +110,7 @@ class IptrunkBlockInactive(
 class IptrunkBlockProvisioning(IptrunkBlockInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]):
     """A trunk that's currently being provisioned, see ``IptrunkBlock``."""
 
-    geant_s_sid: str | None = None
+    gs_id: str | None = None
     iptrunk_description: str | None = None
     iptrunk_type: IptrunkType | None = None
     iptrunk_speed: PhysicalPortCapacity | None = None
@@ -125,7 +125,7 @@ class IptrunkBlock(IptrunkBlockProvisioning, lifecycle=[SubscriptionLifecycle.AC
     """A trunk that's currently deployed in the network."""
 
     #:  GÉANT service ID associated with this trunk.
-    geant_s_sid: str | None = None
+    gs_id: str | None = None
     #:  A human-readable description of this trunk.
     iptrunk_description: str | None = None
     #:  The type of trunk, can be either dark fibre or leased capacity.
diff --git a/gso/products/product_blocks/service_binding_port.py b/gso/products/product_blocks/service_binding_port.py
index 6fd7467c..5f10b33c 100644
--- a/gso/products/product_blocks/service_binding_port.py
+++ b/gso/products/product_blocks/service_binding_port.py
@@ -64,7 +64,7 @@ class ServiceBindingPortInactive(
     ipv6_address: IPv6AddressType | None = None
     ipv6_mask: IPV6Netmask | None = None
     custom_firewall_filters: bool | None = None
-    geant_sid: str | None = None
+    gs_id: str | None = None
     bgp_session_list: list[BGPSessionInactive] = Field(default_factory=list)
     edge_port: EdgePortBlockInactive | None = None
     v4_bfd_settings: BFDSettingsInactive
@@ -82,7 +82,7 @@ class ServiceBindingPortProvisioning(ServiceBindingPortInactive, lifecycle=[Subs
     ipv6_address: IPv6AddressType | None = None
     ipv6_mask: IPV6Netmask | None = None
     custom_firewall_filters: bool
-    geant_sid: str
+    gs_id: str
     bgp_session_list: list[BGPSessionProvisioning]  # type: ignore[assignment]
     edge_port: EdgePortBlockProvisioning
     v4_bfd_settings: BFDSettingsProvisioning
@@ -109,7 +109,7 @@ class ServiceBindingPort(ServiceBindingPortProvisioning, lifecycle=[Subscription
     #: Any custom firewall filters that the partner may require.
     custom_firewall_filters: bool
     #: The GÉANT service ID of this binding port.
-    geant_sid: str
+    gs_id: str
     #: The BGP sessions associated with this service binding port.
     bgp_session_list: list[BGPSession]  # type: ignore[assignment]
     #: The Edge Port on which this SBP resides.
-- 
GitLab