diff --git a/gso/migrations/versions/2023-04-05_857225661207_add_device_workflows.py b/gso/migrations/versions/2023-04-05_857225661207_add_device_workflows.py deleted file mode 100644 index fc938a278b5fc3d4a2a7800b002118ca3d47372a..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-04-05_857225661207_add_device_workflows.py +++ /dev/null @@ -1,39 +0,0 @@ -"""add Device workflows. - -Revision ID: 857225661207 -Revises: f4959f32c866 -Create Date: 2023-04-05 09:16:03.725750 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = '857225661207' -down_revision = 'd52256e7d715' -branch_labels = None -depends_on = None - - -from orchestrator.migrations.helpers import create_workflow, delete_workflow - -new_workflows = [ - { - "name": "create_device", - "target": "CREATE", - "description": "Create Device", - "product_type": "Device" - } -] - - -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"]) diff --git a/gso/migrations/versions/2023-04-29_60d340427471_add_iptrunk_create_workflow.py b/gso/migrations/versions/2023-04-29_60d340427471_add_iptrunk_create_workflow.py deleted file mode 100644 index 72b4886c489233c2563c1a3ae2be4d73ee376f8a..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-04-29_60d340427471_add_iptrunk_create_workflow.py +++ /dev/null @@ -1,39 +0,0 @@ -"""add Iptrunk create workflow. - -Revision ID: 60d340427471 -Revises: 80b0a70d4faf -Create Date: 2023-04-29 06:25:49.525661 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = '60d340427471' -down_revision = '80b0a70d4faf' -branch_labels = None -depends_on = None - - -from orchestrator.migrations.helpers import create_workflow, delete_workflow - -new_workflows = [ - { - "name": "create_iptrunk", - "target": "CREATE", - "description": "Create Iptrunk", - "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"]) diff --git a/gso/migrations/versions/2023-04-29_80b0a70d4faf_add_iptrunk_product.py b/gso/migrations/versions/2023-04-29_80b0a70d4faf_add_iptrunk_product.py deleted file mode 100644 index c191b3248bf4599ea67d602549a39c80d190d84d..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-04-29_80b0a70d4faf_add_iptrunk_product.py +++ /dev/null @@ -1,248 +0,0 @@ -"""Add Iptrunk product. - -Revision ID: 80b0a70d4faf -Revises: 95cd21cb2b05 -Create Date: 2023-04-29 06:16:26.665297 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = '80b0a70d4faf' -down_revision = '857225661207' -branch_labels = None -depends_on = None - - -def upgrade() -> None: - conn = op.get_bind() - conn.execute(""" -INSERT INTO products (name, description, product_type, tag, status) VALUES ('Iptrunk', 'IPtrunk', 'Iptrunk', 'IPTRUNK', 'active') RETURNING products.product_id - """) - conn.execute(""" -INSERT INTO product_blocks (name, description, tag, status) VALUES ('IptrunkBlock', 'Iptrunk', 'IPTRUNK', 'active') RETURNING product_blocks.product_block_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_ipv4_network', 'Global - IPv4 Network') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideB_ae_iface', 'SideB - LAG interface') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_minimum_links', 'Global - Minimum links') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideA_ae_iface', 'SideA - LAG interface') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_type', 'Global - dark fiber vs leased capacity') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideA_ae_members', 'Side A - LAG members') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideB_ae_members_description', 'Side B - LAG members description') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_speed', 'Global - Members speed') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('geant_s_sid', 'Global - SID of the service') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_description', 'Global - Interface description') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_ipv6_network', 'Global - IPv6 Network') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideA_ae_geant_a_sid', 'Side A - GA SID') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideB_ae_members', 'Side B - LAG members') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideA_ae_members_description', 'Side B - LAG members description') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideB_ae_geant_a_sid', 'Side B - GA SID') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('Iptrunk')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkBlock'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_s_sid'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_description'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_type'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_speed'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_minimum_links'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv4_network'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv6_network'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_iface'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_geant_a_sid'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members_description'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_iface'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_geant_a_sid'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members'))) - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members_description'))) - """) - - -def downgrade() -> None: - conn = op.get_bind() - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_s_sid')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_s_sid')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_description')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_description')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_type')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_type')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_speed')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_speed')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_minimum_links')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_minimum_links')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv4_network')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv4_network')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv6_network')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv6_network')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_iface')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_iface')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_geant_a_sid')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_geant_a_sid')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members_description')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members_description')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_iface')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_iface')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_geant_a_sid')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_geant_a_sid')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members_description')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members_description')) - """) - conn.execute(""" -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_ipv4_network', 'iptrunk_sideB_ae_iface', 'iptrunk_minimum_links', 'iptrunk_sideA_ae_iface', 'iptrunk_type', 'iptrunk_sideA_ae_members', 'iptrunk_sideB_ae_members_description', 'iptrunk_speed', 'geant_s_sid', 'iptrunk_description', 'iptrunk_ipv6_network', 'iptrunk_sideA_ae_geant_a_sid', 'iptrunk_sideB_ae_members', 'iptrunk_sideA_ae_members_description', 'iptrunk_sideB_ae_geant_a_sid')) - """) - conn.execute(""" -DELETE FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv4_network', 'iptrunk_sideB_ae_iface', 'iptrunk_minimum_links', 'iptrunk_sideA_ae_iface', 'iptrunk_type', 'iptrunk_sideA_ae_members', 'iptrunk_sideB_ae_members_description', 'iptrunk_speed', 'geant_s_sid', 'iptrunk_description', 'iptrunk_ipv6_network', 'iptrunk_sideA_ae_geant_a_sid', 'iptrunk_sideB_ae_members', 'iptrunk_sideA_ae_members_description', 'iptrunk_sideB_ae_geant_a_sid') - """) - conn.execute(""" -DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Iptrunk')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkBlock')) - """) - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_relations.depends_on_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock')) - """) - conn.execute(""" -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 ('IptrunkBlock')) - """) - conn.execute(""" -DELETE FROM product_blocks WHERE product_blocks.name IN ('IptrunkBlock') - """) - conn.execute(""" -DELETE FROM processes WHERE processes.pid IN (SELECT processes_subscriptions.pid FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Iptrunk')))) - """) - conn.execute(""" -DELETE FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Iptrunk'))) - """) - conn.execute(""" -DELETE FROM subscription_instances WHERE subscription_instances.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Iptrunk'))) - """) - conn.execute(""" -DELETE FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Iptrunk')) - """) - conn.execute(""" -DELETE FROM products WHERE products.name IN ('Iptrunk') - """) diff --git a/gso/migrations/versions/2023-05-04_4d850df522f2_add_site_model.py b/gso/migrations/versions/2023-05-04_4d850df522f2_add_site_model.py deleted file mode 100644 index 49ac3327e449859f96a99005bfd47a9fde1512f9..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-05-04_4d850df522f2_add_site_model.py +++ /dev/null @@ -1,170 +0,0 @@ -"""Add site model. - -Revision ID: 4d850df522f2 -Revises: -Create Date: 2023-05-04 08:27:31.942548 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = '4d850df522f2' -down_revision = None -branch_labels = ('data',) -depends_on = 'e05bb1967eff' - - -def upgrade() -> None: - conn = op.get_bind() - conn.execute(""" -INSERT INTO products (name, description, product_type, tag, status) VALUES ('Site', 'A Geant POP', 'Site', 'SITE', 'active') RETURNING products.product_id - """) - conn.execute(""" -INSERT INTO product_blocks (name, description, tag, status) VALUES ('SiteBlock', 'A Geant POP', 'SITE', 'active') RETURNING product_blocks.product_block_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_internal_id', 'Site internal ID') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_country', 'Site country') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_longitude', 'Site Longitude') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_country_code', 'Site country code') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_tier', 'Site Tier') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_city', 'Site city') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_latitude', 'Site latitude') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_name', 'Site name') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_bgp_community_id', 'Site BGP community ID') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('Site')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock'))) - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_name'))) - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_city'))) - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country'))) - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country_code'))) - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_latitude'))) - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_longitude'))) - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_internal_id'))) - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_bgp_community_id'))) - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_tier'))) - """) - - -def downgrade() -> None: - conn = op.get_bind() - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_name')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_name')) - """) - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_city')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_city')) - """) - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country')) - """) - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country_code')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country_code')) - """) - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_latitude')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_latitude')) - """) - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_longitude')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_longitude')) - """) - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_internal_id')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_internal_id')) - """) - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_bgp_community_id')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_bgp_community_id')) - """) - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_tier')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_tier')) - """) - conn.execute(""" -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 ('site_internal_id', 'site_country', 'site_longitude', 'site_country_code', 'site_tier', 'site_city', 'site_latitude', 'site_name', 'site_bgp_community_id')) - """) - conn.execute(""" -DELETE FROM resource_types WHERE resource_types.resource_type IN ('site_internal_id', 'site_country', 'site_longitude', 'site_country_code', 'site_tier', 'site_city', 'site_latitude', 'site_name', 'site_bgp_community_id') - """) - conn.execute(""" -DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Site')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock')) - """) - conn.execute(""" -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 ('SiteBlock')) - """) - conn.execute(""" -DELETE FROM product_blocks WHERE product_blocks.name IN ('SiteBlock') - """) - conn.execute(""" -DELETE FROM processes WHERE processes.pid IN (SELECT processes_subscriptions.pid FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Site')))) - """) - conn.execute(""" -DELETE FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Site'))) - """) - conn.execute(""" -DELETE FROM subscription_instances WHERE subscription_instances.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Site'))) - """) - conn.execute(""" -DELETE FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Site')) - """) - conn.execute(""" -DELETE FROM products WHERE products.name IN ('Site') - """) diff --git a/gso/migrations/versions/2023-05-04_d52256e7d715_add_device_model.py b/gso/migrations/versions/2023-05-04_d52256e7d715_add_device_model.py deleted file mode 100644 index 59a1ec6fcecc9d9397e6343c530940e43bee40a9..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-05-04_d52256e7d715_add_device_model.py +++ /dev/null @@ -1,209 +0,0 @@ -"""Add device model. - -Revision ID: d52256e7d715 -Revises: 4d850df522f2 -Create Date: 2023-05-04 08:30:12.367903 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = 'd52256e7d715' -down_revision = '4d850df522f2' -branch_labels = None -depends_on = None - - -def upgrade() -> None: - conn = op.get_bind() - conn.execute(""" -INSERT INTO products (name, description, product_type, tag, status) VALUES ('Router', 'A Geant router', 'Device', 'RTR', 'active') RETURNING products.product_id - """) - conn.execute(""" -INSERT INTO products (name, description, product_type, tag, status) VALUES ('Switch', 'A Geant switch', 'Device', 'SW', 'active') RETURNING products.product_id - """) - conn.execute(""" -INSERT INTO fixed_inputs (name, value, product_id) VALUES ('device_type', 'switch', (SELECT products.product_id FROM products WHERE products.name IN ('Switch'))), ('device_type', 'router', (SELECT products.product_id FROM products WHERE products.name IN ('Router'))) - """) - conn.execute(""" -INSERT INTO product_blocks (name, description, tag, status) VALUES ('DeviceBlock', 'A Geant device', 'DEVICE', 'active') RETURNING product_blocks.product_block_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_lo_ipv4_address', 'Loopback IPv4 address') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_fqdn', 'Device FQDN') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_ts_port', 'Terminal Server Port') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_lo_iso_address', 'Loopback ISO address') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_ts_address', 'Terminal Server Address') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_si_ipv4_network', 'SI IPv4 Network') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_ias_lt_ipv6_network', 'IAS lt IPv6 network') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_lo_ipv6_address', 'Loopback IPv6 address') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_vendor', 'Device Vendor') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_role', 'Device role') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_ias_lt_ipv4_network', 'IAS lt IPV4 Network') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('Switch')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock'))), ((SELECT products.product_id FROM products WHERE products.name IN ('Router')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_fqdn'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_port'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_lo_ipv4_address'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_lo_ipv6_address'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_lo_iso_address'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_si_ipv4_network'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ias_lt_ipv4_network'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ias_lt_ipv6_network'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_vendor'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_role'))) - """) - - -def downgrade() -> None: - conn = op.get_bind() - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_fqdn')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_fqdn')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_port')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_port')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_lo_ipv4_address')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_lo_ipv4_address')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_lo_ipv6_address')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_lo_ipv6_address')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_lo_iso_address')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_lo_iso_address')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_si_ipv4_network')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_si_ipv4_network')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ias_lt_ipv4_network')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ias_lt_ipv4_network')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ias_lt_ipv6_network')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ias_lt_ipv6_network')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_vendor')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_vendor')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_role')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_role')) - """) - conn.execute(""" -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 ('device_lo_ipv4_address', 'device_fqdn', 'device_ts_port', 'device_lo_iso_address', 'device_ts_address', 'device_si_ipv4_network', 'device_ias_lt_ipv6_network', 'device_lo_ipv6_address', 'device_vendor', 'device_role', 'device_ias_lt_ipv4_network')) - """) - conn.execute(""" -DELETE FROM resource_types WHERE resource_types.resource_type IN ('device_lo_ipv4_address', 'device_fqdn', 'device_ts_port', 'device_lo_iso_address', 'device_ts_address', 'device_si_ipv4_network', 'device_ias_lt_ipv6_network', 'device_lo_ipv6_address', 'device_vendor', 'device_role', 'device_ias_lt_ipv4_network') - """) - conn.execute(""" -DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Switch', 'Router')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_relations.depends_on_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock')) - """) - conn.execute(""" -DELETE FROM fixed_inputs WHERE fixed_inputs.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Switch', 'Router')) AND fixed_inputs.name = 'device_type' - """) - conn.execute(""" -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 ('DeviceBlock')) - """) - conn.execute(""" -DELETE FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock') - """) - conn.execute(""" -DELETE FROM processes WHERE processes.pid IN (SELECT processes_subscriptions.pid FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Switch', 'Router')))) - """) - conn.execute(""" -DELETE FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Switch', 'Router'))) - """) - conn.execute(""" -DELETE FROM subscription_instances WHERE subscription_instances.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Switch', 'Router'))) - """) - conn.execute(""" -DELETE FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Switch', 'Router')) - """) - conn.execute(""" -DELETE FROM products WHERE products.name IN ('Switch', 'Router') - """) diff --git a/gso/migrations/versions/2023-05-08_61f8e90581c5_add_terminate_device_workflow.py b/gso/migrations/versions/2023-05-08_61f8e90581c5_add_terminate_device_workflow.py deleted file mode 100644 index 8b3f8398c9609c0de0ce56f2cb352aa2a335e1cc..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-05-08_61f8e90581c5_add_terminate_device_workflow.py +++ /dev/null @@ -1,39 +0,0 @@ -"""add Terminate device workflow. - -Revision ID: 61f8e90581c5 -Revises: 21e7bb0e5cad -Create Date: 2023-05-08 10:48:21.655880 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = '61f8e90581c5' -down_revision = '21e7bb0e5cad' -branch_labels = None -depends_on = None - - -from orchestrator.migrations.helpers import create_workflow, delete_workflow - -new_workflows = [ - { - "name": "terminate_device", - "target": "TERMINATE", - "description": "Terminate device", - "product_type": "Device" - } -] - - -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"]) diff --git a/gso/migrations/versions/2023-06-18_84d0ad6e7294_add_device_access_via_ts_attr.py b/gso/migrations/versions/2023-06-18_84d0ad6e7294_add_device_access_via_ts_attr.py deleted file mode 100644 index f9bd129e056beb05f12e8855762ba4edf4335c8c..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-06-18_84d0ad6e7294_add_device_access_via_ts_attr.py +++ /dev/null @@ -1,64 +0,0 @@ -"""Add device access_via_ts attr. - -Revision ID: 84d0ad6e7294 -Revises: c7def54cc165 -Create Date: 2023-06-18 12:03:23.365781 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = '84d0ad6e7294' -down_revision = 'c7def54cc165' -branch_labels = None -depends_on = None - - -def upgrade() -> None: - conn = op.get_bind() - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_access_via_ts', 'Access to the device via terminal server') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_access_via_ts'))) - """) - conn.execute(""" - - WITH subscription_instance_ids AS ( - 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 = 'DeviceBlock' - ) - ) - - INSERT INTO - subscription_instance_values (subscription_instance_id, resource_type_id, value) - SELECT - subscription_instance_ids.subscription_instance_id, - resource_types.resource_type_id, - 'false' - FROM resource_types - CROSS JOIN subscription_instance_ids - WHERE resource_types.resource_type = 'device_access_via_ts' - - """) - - -def downgrade() -> None: - conn = op.get_bind() - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_access_via_ts')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_access_via_ts')) - """) - conn.execute(""" -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 ('device_access_via_ts')) - """) - conn.execute(""" -DELETE FROM resource_types WHERE resource_types.resource_type IN ('device_access_via_ts') - """) diff --git a/gso/migrations/versions/2023-06-18_c7def54cc165_add_iptrunk_isis_attr.py b/gso/migrations/versions/2023-06-18_c7def54cc165_add_iptrunk_isis_attr.py deleted file mode 100644 index 1923fc3eeb54371a4e3c339216ac27ef9364a737..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-06-18_c7def54cc165_add_iptrunk_isis_attr.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Add Iptrunk ISIS attr. - -Revision ID: c7def54cc165 -Revises: 647e066bc99e -Create Date: 2023-06-18 06:56:21.189733 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = 'c7def54cc165' -down_revision = '647e066bc99e' -branch_labels = None -depends_on = None - - -def upgrade() -> None: - conn = op.get_bind() - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_isis_metric', 'ISIS metric for a Trunk') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_isis_metric'))) - """) - - -def downgrade() -> None: - conn = op.get_bind() - conn.execute(""" -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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_isis_metric')) - """) - conn.execute(""" -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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_isis_metric')) - """) - conn.execute(""" -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_isis_metric')) - """) - conn.execute(""" -DELETE FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_isis_metric') - """) diff --git a/gso/migrations/versions/2023-06-21_7694b98571f8_add_iptrunk_isis_modify_workflow.py b/gso/migrations/versions/2023-06-21_7694b98571f8_add_iptrunk_isis_modify_workflow.py deleted file mode 100644 index cd751156ba9ba0def54b63a7d4623c3d53f8e120..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-06-21_7694b98571f8_add_iptrunk_isis_modify_workflow.py +++ /dev/null @@ -1,39 +0,0 @@ -"""add Iptrunk ISIS modify workflow. - -Revision ID: 7694b98571f8 -Revises: 84d0ad6e7294 -Create Date: 2023-06-21 08:36:42.824952 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = '7694b98571f8' -down_revision = '84d0ad6e7294' -branch_labels = None -depends_on = None - - -from orchestrator.migrations.helpers import create_workflow, delete_workflow - -new_workflows = [ - { - "name": "modify_isis_metric", - "target": "MODIFY", - "description": "Modify IP trunk", - "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"]) diff --git a/gso/migrations/versions/2023-06-26_e57ebfade80b_add_iptrunk_modify_workflow.py b/gso/migrations/versions/2023-06-26_e57ebfade80b_add_iptrunk_modify_workflow.py deleted file mode 100644 index cad31c4d8c9436c98513757b14b8b3fa6d18f394..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-06-26_e57ebfade80b_add_iptrunk_modify_workflow.py +++ /dev/null @@ -1,39 +0,0 @@ -"""add Iptrunk modify workflow. - -Revision ID: e57ebfade80b -Revises: 7694b98571f8 -Create Date: 2023-06-26 12:20:16.828055 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = 'e57ebfade80b' -down_revision = '7694b98571f8' -branch_labels = None -depends_on = None - - -from orchestrator.migrations.helpers import create_workflow, delete_workflow - -new_workflows = [ - { - "name": "modify_generic", - "target": "MODIFY", - "description": "Modify IP trunk", - "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"]) diff --git a/gso/migrations/versions/2023-08-07_7728b3ef410c_modify_sites_and_device_pb.py b/gso/migrations/versions/2023-08-07_7728b3ef410c_modify_sites_and_device_pb.py deleted file mode 100644 index 176403a5fb7e4ceb661e76b511f8a5dbd6cf4641..0000000000000000000000000000000000000000 --- a/gso/migrations/versions/2023-08-07_7728b3ef410c_modify_sites_and_device_pb.py +++ /dev/null @@ -1,111 +0,0 @@ -"""Modify sites and device PB. - -Revision ID: 7728b3ef410c -Revises: e57ebfade80b -Create Date: 2023-08-07 12:53:31.090424 - -""" -import sqlalchemy as sa -from alembic import op - -# revision identifiers, used by Alembic. -revision = '7728b3ef410c' -down_revision = 'e57ebfade80b' -branch_labels = None -depends_on = None - - -def upgrade() -> None: - conn = op.get_bind() - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address')) - """) - conn.execute(""" -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 ('device_ts_address')) - """) - conn.execute(""" -DELETE FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address') - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('device_is_ias_connected', 'device has lt to IAS') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -INSERT INTO resource_types (resource_type, description) VALUES ('site_ts_address', 'Address of the terminal server') RETURNING resource_types.resource_type_id - """) - conn.execute(""" -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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_ts_address'))) - """) - conn.execute(""" -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 ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_is_ias_connected'))) - """) - conn.execute(""" - - WITH subscription_instance_ids AS ( - 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 = 'SiteBlock' - ) - ) - - INSERT INTO - subscription_instance_values (subscription_instance_id, resource_type_id, value) - SELECT - subscription_instance_ids.subscription_instance_id, - resource_types.resource_type_id, - 'Address of the terminal server' - FROM resource_types - CROSS JOIN subscription_instance_ids - WHERE resource_types.resource_type = 'site_ts_address' - - """) - conn.execute(""" - - WITH subscription_instance_ids AS ( - 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 = 'DeviceBlock' - ) - ) - - INSERT INTO - subscription_instance_values (subscription_instance_id, resource_type_id, value) - SELECT - subscription_instance_ids.subscription_instance_id, - resource_types.resource_type_id, - 'true' - FROM resource_types - CROSS JOIN subscription_instance_ids - WHERE resource_types.resource_type = 'device_is_ias_connected' - - """) - - -def downgrade() -> None: - conn = op.get_bind() - conn.execute(""" -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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_ts_address')) - """) - conn.execute(""" -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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_ts_address')) - """) - conn.execute(""" -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 ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_is_ias_connected')) - """) - conn.execute(""" -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 ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_is_ias_connected')) - """) - conn.execute(""" -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 ('device_is_ias_connected', 'site_ts_address')) - """) - conn.execute(""" -DELETE FROM resource_types WHERE resource_types.resource_type IN ('device_is_ias_connected', 'site_ts_address') - """) diff --git a/gso/migrations/versions/2023-05-08_647e066bc99e_add_terminate_iptrunk_workflow.py b/gso/migrations/versions/2023-08-14_3657611f0dfc_add_router_workflows.py similarity index 55% rename from gso/migrations/versions/2023-05-08_647e066bc99e_add_terminate_iptrunk_workflow.py rename to gso/migrations/versions/2023-08-14_3657611f0dfc_add_router_workflows.py index 49cb67b43eed421e58df6a54a900bffe58e04a3a..153d5433579308b23e2d06b394b5d9f4a620158e 100644 --- a/gso/migrations/versions/2023-05-08_647e066bc99e_add_terminate_iptrunk_workflow.py +++ b/gso/migrations/versions/2023-08-14_3657611f0dfc_add_router_workflows.py @@ -1,16 +1,16 @@ -"""add Terminate Iptrunk workflow. +"""Add Router workflows. -Revision ID: 647e066bc99e -Revises: 61f8e90581c5 -Create Date: 2023-05-08 18:59:01.309425 +Revision ID: 3657611f0dfc +Revises: 91047dd30b40 +Create Date: 2023-08-14 15:44:25.616608 """ import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. -revision = '647e066bc99e' -down_revision = '61f8e90581c5' +revision = '3657611f0dfc' +down_revision = '91047dd30b40' branch_labels = None depends_on = None @@ -19,10 +19,16 @@ from orchestrator.migrations.helpers import create_workflow, delete_workflow new_workflows = [ { - "name": "terminate_iptrunk", + "name": "create_router", + "target": "CREATE", + "description": "Create router", + "product_type": "Router" + }, + { + "name": "terminate_router", "target": "TERMINATE", - "description": "Terminate IPtrunk", - "product_type": "Iptrunk" + "description": "Terminate router", + "product_type": "Router" } ] diff --git a/gso/migrations/versions/2023-05-04_21e7bb0e5cad_add_site_create_workflow.py b/gso/migrations/versions/2023-08-14_91047dd30b40_add_site_workflows.py similarity index 78% rename from gso/migrations/versions/2023-05-04_21e7bb0e5cad_add_site_create_workflow.py rename to gso/migrations/versions/2023-08-14_91047dd30b40_add_site_workflows.py index 118d7b125f58279504e7ea14ceac9f18cff0f043..f39467eadecc248717f851bea8b221cd5b5d378e 100644 --- a/gso/migrations/versions/2023-05-04_21e7bb0e5cad_add_site_create_workflow.py +++ b/gso/migrations/versions/2023-08-14_91047dd30b40_add_site_workflows.py @@ -1,16 +1,16 @@ -"""add Site create workflow. +"""Add Site workflows. -Revision ID: 21e7bb0e5cad -Revises: 60d340427471 -Create Date: 2023-05-04 09:00:36.433715 +Revision ID: 91047dd30b40 +Revises: 97436160a422 +Create Date: 2023-08-14 15:42:35.450032 """ import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. -revision = '21e7bb0e5cad' -down_revision = '60d340427471' +revision = '91047dd30b40' +down_revision = '97436160a422' branch_labels = None depends_on = None diff --git a/gso/migrations/versions/2023-08-14_97436160a422_add_initial_products.py b/gso/migrations/versions/2023-08-14_97436160a422_add_initial_products.py new file mode 100644 index 0000000000000000000000000000000000000000..7c46840813c3de5b75d868864592c63ae1d71817 --- /dev/null +++ b/gso/migrations/versions/2023-08-14_97436160a422_add_initial_products.py @@ -0,0 +1,554 @@ +"""Add initial products. + +Revision ID: 97436160a422 +Revises: +Create Date: 2023-08-14 11:54:26.376795 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = '97436160a422' +down_revision = None +branch_labels = ('data',) +depends_on = 'a09ac125ea73' + + +def upgrade() -> None: + conn = op.get_bind() + conn.execute(""" +INSERT INTO products (name, description, product_type, tag, status) VALUES ('Site', 'A GÉANT Site', 'Site', 'SITE', 'active') RETURNING products.product_id + """) + conn.execute(""" +INSERT INTO products (name, description, product_type, tag, status) VALUES ('Router', 'A GÉANT Router', 'Router', 'ROUTER', 'active') RETURNING products.product_id + """) + conn.execute(""" +INSERT INTO products (name, description, product_type, tag, status) VALUES ('IP trunk', 'A GÉANT IP Trunk', 'Iptrunk', 'IPTRUNK', 'active') RETURNING products.product_id + """) + conn.execute(""" +INSERT INTO product_blocks (name, description, tag, status) VALUES ('SiteBlock', 'Site PB', 'SITEPB', 'active') RETURNING product_blocks.product_block_id + """) + conn.execute(""" +INSERT INTO product_blocks (name, description, tag, status) VALUES ('RouterBlock', 'Router PB', 'ROUTERPB', 'active') RETURNING product_blocks.product_block_id + """) + conn.execute(""" +INSERT INTO product_blocks (name, description, tag, status) VALUES ('IptrunkBlock', 'IP Trunk PB', 'IPTRUNKPB', 'active') RETURNING product_blocks.product_block_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_name', 'Name of a Site') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_minimum_links', 'Minimum amount of members in a LAG') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_description', 'Description of an IP Trunk') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_ias_lt_ipv4_network', 'IPv4 network for a logical tunnel between master routing table and IAS') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('geant_s_sid', 'GÉANT Service ID') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_isis_metric', 'ISIS metric') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideA_ae_geant_a_sid', 'GÉANT Service ID for access port') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideB_ae_geant_a_sid', 'GÉANT Service ID for access port') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_lo_ipv6_address', 'IPv6 address of loopback interface') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideB_ae_members', 'LAG members on side B') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_lo_ipv4_address', 'IPv4 address of loopback interface') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_city', 'City of a Site') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_tier', 'Tier of a Site') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_role', 'Role of a Router') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_type', 'Type of an IP Trunk') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_bgp_community_id', 'BGP Community ID') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideA_ae_iface', 'LAG interface') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_ipv4_network', 'IPv4 network of an IP Trunk') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideB_ae_members_description', 'Descriptions of LAG members') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_speed', 'Speed of LAG members') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_country_code', 'Country code of a Site') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_access_via_ts', 'Whether a router should get accessed through terminal server') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_internal_id', 'Third octet of a Site''s private network') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_si_ipv4_network', 'IPv4 network for SI interface') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_ias_lt_ipv6_network', 'IPv6 network for a logical tunnel between master routing table and IAS') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_latitude', 'Latitude of a Site') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_country', 'Country of a Site') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_ts_address', 'Terminal Server address') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideB_ae_iface', 'LAG interface') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_is_ias_connected', 'Whether a Logical Tunnel between master routing table and IAS is needed') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_ipv6_network', 'IPv6 network of an IP Trunk') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('site_longitude', 'Longitude of a Site') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_lo_iso_address', 'ISO address of a loopback interface') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideA_ae_members', 'LAG members on side A') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_fqdn', 'FQDN of a Router') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('iptrunk_sideA_ae_members_description', 'Descriptions of LAG members') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_ts_port', 'Port number of the Terminal Server') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO resource_types (resource_type, description) VALUES ('router_vendor', 'Vendor of a Router') RETURNING resource_types.resource_type_id + """) + conn.execute(""" +INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('Site')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock'))) + """) + conn.execute(""" +INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('Router')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock'))) + """) + conn.execute(""" +INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('IP trunk')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkBlock'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_name'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_city'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country_code'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_latitude'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_longitude'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_internal_id'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_bgp_community_id'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_tier'))) + """) + conn.execute(""" +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 ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_ts_address'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_fqdn'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ts_port'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_access_via_ts'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_lo_ipv4_address'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_lo_ipv6_address'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_lo_iso_address'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_si_ipv4_network'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv4_network'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv6_network'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_vendor'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_role'))) + """) + conn.execute(""" +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 ('RouterBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_is_ias_connected'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_s_sid'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_description'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_type'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_speed'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_minimum_links'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_isis_metric'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv4_network'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv6_network'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_iface'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_geant_a_sid'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members_description'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_iface'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_geant_a_sid'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members'))) + """) + conn.execute(""" +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 ('IptrunkBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members_description'))) + """) + + +def downgrade() -> None: + conn = op.get_bind() + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_name')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_name')) + """) + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_city')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_city')) + """) + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country')) + """) + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country_code')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_country_code')) + """) + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_latitude')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_latitude')) + """) + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_longitude')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_longitude')) + """) + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_internal_id')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_internal_id')) + """) + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_bgp_community_id')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_bgp_community_id')) + """) + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_tier')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_tier')) + """) + conn.execute(""" +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 ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_ts_address')) + """) + conn.execute(""" +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 ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_ts_address')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_fqdn')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_fqdn')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ts_port')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ts_port')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_access_via_ts')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_access_via_ts')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_lo_ipv4_address')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_lo_ipv4_address')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_lo_ipv6_address')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_lo_ipv6_address')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_lo_iso_address')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_lo_iso_address')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_si_ipv4_network')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_si_ipv4_network')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv4_network')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv4_network')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv6_network')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv6_network')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_vendor')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_vendor')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_role')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_role')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_is_ias_connected')) + """) + conn.execute(""" +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 ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_is_ias_connected')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_s_sid')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('geant_s_sid')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_description')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_description')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_type')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_type')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_speed')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_speed')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_minimum_links')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_minimum_links')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_isis_metric')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_isis_metric')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv4_network')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv4_network')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv6_network')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_ipv6_network')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_iface')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_iface')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_geant_a_sid')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_geant_a_sid')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members_description')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideA_ae_members_description')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_iface')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_iface')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_geant_a_sid')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_geant_a_sid')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members_description')) + """) + conn.execute(""" +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 ('IptrunkBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('iptrunk_sideB_ae_members_description')) + """) + conn.execute(""" +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 ('site_name', 'iptrunk_minimum_links', 'iptrunk_description', 'router_ias_lt_ipv4_network', 'geant_s_sid', 'iptrunk_isis_metric', 'iptrunk_sideA_ae_geant_a_sid', 'iptrunk_sideB_ae_geant_a_sid', 'router_lo_ipv6_address', 'iptrunk_sideB_ae_members', 'router_lo_ipv4_address', 'site_city', 'site_tier', 'router_role', 'iptrunk_type', 'site_bgp_community_id', 'iptrunk_sideA_ae_iface', 'iptrunk_ipv4_network', 'iptrunk_sideB_ae_members_description', 'iptrunk_speed', 'site_country_code', 'router_access_via_ts', 'site_internal_id', 'router_si_ipv4_network', 'router_ias_lt_ipv6_network', 'site_latitude', 'site_country', 'site_ts_address', 'iptrunk_sideB_ae_iface', 'router_is_ias_connected', 'iptrunk_ipv6_network', 'site_longitude', 'router_lo_iso_address', 'iptrunk_sideA_ae_members', 'router_fqdn', 'iptrunk_sideA_ae_members_description', 'router_ts_port', 'router_vendor')) + """) + conn.execute(""" +DELETE FROM resource_types WHERE resource_types.resource_type IN ('site_name', 'iptrunk_minimum_links', 'iptrunk_description', 'router_ias_lt_ipv4_network', 'geant_s_sid', 'iptrunk_isis_metric', 'iptrunk_sideA_ae_geant_a_sid', 'iptrunk_sideB_ae_geant_a_sid', 'router_lo_ipv6_address', 'iptrunk_sideB_ae_members', 'router_lo_ipv4_address', 'site_city', 'site_tier', 'router_role', 'iptrunk_type', 'site_bgp_community_id', 'iptrunk_sideA_ae_iface', 'iptrunk_ipv4_network', 'iptrunk_sideB_ae_members_description', 'iptrunk_speed', 'site_country_code', 'router_access_via_ts', 'site_internal_id', 'router_si_ipv4_network', 'router_ias_lt_ipv6_network', 'site_latitude', 'site_country', 'site_ts_address', 'iptrunk_sideB_ae_iface', 'router_is_ias_connected', 'iptrunk_ipv6_network', 'site_longitude', 'router_lo_iso_address', 'iptrunk_sideA_ae_members', 'router_fqdn', 'iptrunk_sideA_ae_members_description', 'router_ts_port', 'router_vendor') + """) + conn.execute(""" +DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Site')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock')) + """) + conn.execute(""" +DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Router')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock')) + """) + conn.execute(""" +DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('IP trunk')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IptrunkBlock')) + """) + conn.execute(""" +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 ('RouterBlock')) AND product_block_relations.depends_on_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock')) + """) + conn.execute(""" +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 ('IptrunkBlock')) AND product_block_relations.depends_on_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock')) + """) + conn.execute(""" +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 ('IptrunkBlock', 'RouterBlock', 'SiteBlock')) + """) + conn.execute(""" +DELETE FROM product_blocks WHERE product_blocks.name IN ('IptrunkBlock', 'RouterBlock', 'SiteBlock') + """) + conn.execute(""" +DELETE FROM processes WHERE processes.pid IN (SELECT processes_subscriptions.pid FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Router', 'IP trunk', 'Site')))) + """) + conn.execute(""" +DELETE FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Router', 'IP trunk', 'Site'))) + """) + conn.execute(""" +DELETE FROM subscription_instances WHERE subscription_instances.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Router', 'IP trunk', 'Site'))) + """) + conn.execute(""" +DELETE FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Router', 'IP trunk', 'Site')) + """) + conn.execute(""" +DELETE FROM products WHERE products.name IN ('Router', 'IP trunk', 'Site') + """) diff --git a/gso/migrations/versions/2023-08-14_a6eefd32c4f7_add_ip_trunk_workflows.py b/gso/migrations/versions/2023-08-14_a6eefd32c4f7_add_ip_trunk_workflows.py new file mode 100644 index 0000000000000000000000000000000000000000..b341eb7c8c9061959febac45181b1a70028e6236 --- /dev/null +++ b/gso/migrations/versions/2023-08-14_a6eefd32c4f7_add_ip_trunk_workflows.py @@ -0,0 +1,57 @@ +"""Add IP Trunk workflows. + +Revision ID: a6eefd32c4f7 +Revises: 3657611f0dfc +Create Date: 2023-08-14 15:50:03.376997 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = 'a6eefd32c4f7' +down_revision = '3657611f0dfc' +branch_labels = None +depends_on = None + + +from orchestrator.migrations.helpers import create_workflow, delete_workflow + +new_workflows = [ + { + "name": "create_iptrunk", + "target": "CREATE", + "description": "Create IP trunk", + "product_type": "Iptrunk" + }, + { + "name": "terminate_iptrunk", + "target": "TERMINATE", + "description": "Terminate IPtrunk", + "product_type": "Iptrunk" + }, + { + "name": "modify_trunk_interface", + "target": "MODIFY", + "description": "Modify IP Trunk interface", + "product_type": "Iptrunk" + }, + { + "name": "modify_isis_metric", + "target": "MODIFY", + "description": "Modify IP trunk", + "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"]) diff --git a/gso/products/__init__.py b/gso/products/__init__.py index 1943b09e29867391309756d01713c3500300b9ae..0ca82bfe7805d5a83d3aa9af96bcf54f26478cc9 100644 --- a/gso/products/__init__.py +++ b/gso/products/__init__.py @@ -1,15 +1,14 @@ """Module that updates the domain model of {term}`GSO`. Should contain all types of subscriptions.""" from orchestrator.domain import SUBSCRIPTION_MODEL_REGISTRY -from gso.products.product_types.device import Device +from gso.products.product_types.router import Router from gso.products.product_types.iptrunk import Iptrunk from gso.products.product_types.site import Site SUBSCRIPTION_MODEL_REGISTRY.update( { "Site": Site, - "Router": Device, - "Switch": Device, - "Iptrunk": Iptrunk, + "Router": Router, + "IP trunk": Iptrunk, } ) diff --git a/gso/products/product_blocks/device.py b/gso/products/product_blocks/device.py deleted file mode 100644 index e65263f3fb4405a7f94de69d53a3c9803e0234c0..0000000000000000000000000000000000000000 --- a/gso/products/product_blocks/device.py +++ /dev/null @@ -1,98 +0,0 @@ -"""Product block for {class}`Device` products.""" -import ipaddress -from typing import Optional - -from orchestrator.domain.base import ProductBlockModel -from orchestrator.types import SubscriptionLifecycle, strEnum - -from gso.products.product_blocks.site import SiteBlock, SiteBlockInactive, SiteBlockProvisioning - - -class DeviceVendor(strEnum): - """Enumerator for the different product vendors that are supported.""" - - JUNIPER = "juniper" - """Juniper devices.""" - NOKIA = "nokia" - """Nokia devices.""" - - -class DeviceRole(strEnum): - """Enumerator for the different types of routers.""" - - P = "p" - """P router.""" - PE = "pe" - """PE router.""" - AMT = "amt" - """AMT router.""" - - -class DeviceBlockInactive( - ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="DeviceBlock" -): - """A device that's being currently inactive. See {class}`DeviceBlock`.""" - - device_fqdn: Optional[str] = None - device_ts_port: Optional[int] = None - device_access_via_ts: Optional[bool] = None - device_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None - device_lo_ipv6_address: Optional[ipaddress.IPv6Address] = None - device_lo_iso_address: Optional[str] = None - device_si_ipv4_network: Optional[ipaddress.IPv4Network] = None - device_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None - device_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None - device_vendor: Optional[DeviceVendor] = None - device_role: Optional[DeviceRole] = None - device_site: Optional[SiteBlockInactive] - device_is_ias_connected: Optional[bool] = None - - -class DeviceBlockProvisioning(DeviceBlockInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]): - """A device that's being provisioned. See {class}`DeviceBlock`.""" - - device_fqdn: str - device_ts_port: int - device_access_via_ts: Optional[bool] = None - device_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None - device_lo_ipv6_address: Optional[ipaddress.IPv6Address] = None - device_lo_iso_address: Optional[str] = None - device_si_ipv4_network: Optional[ipaddress.IPv4Network] = None - device_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None - device_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None - device_vendor: Optional[DeviceVendor] = None - device_role: Optional[DeviceRole] = None - device_site: Optional[SiteBlockProvisioning] - device_is_ias_connected: Optional[bool] = None - - -class DeviceBlock(DeviceBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]): - """A device that's currently deployed in the network.""" - - device_fqdn: str - """{term}`FQDN` of a device.""" - device_ts_port: int - """The port of the terminal server that this device is connected to. Used for the same reason as mentioned - previously.""" - device_access_via_ts: bool - """Whether this device should be accessed through the terminal server, or through its loopback address.""" - device_lo_ipv4_address: ipaddress.IPv4Address - """The IPv4 loopback address of the device.""" - device_lo_ipv6_address: ipaddress.IPv6Address - """The IPv6 loopback address of the device.""" - device_lo_iso_address: str - """The {term}`ISO` {term}`NET` of the device, used for {term}`IS-IS` support.""" - device_si_ipv4_network: Optional[ipaddress.IPv4Network] - """The SI IPv4 network of the device.""" - device_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] - """The IAS LT IPv4 network of the device.""" - device_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] - """The IAS LT IPv6 network of the device.""" - device_vendor: DeviceVendor - """The vendor of the device, can be any of the values defined in {class}`DeviceVendor`.""" - device_role: DeviceRole - """The role of the device, which can be any of the values defined in {class}`DeviceRole`.""" - device_site: SiteBlock - """The {class}`Site` that this device resides in. Both physically and computationally.""" - device_is_ias_connected: bool - """The device is going to have a LT interface between inet0 and IAS""" diff --git a/gso/products/product_blocks/iptrunk.py b/gso/products/product_blocks/iptrunk.py index b0fc2d28eb67bbcd3475238af0be0bf07fb319ef..a98ccd4ee1922c9ac0843c618fd51548043f6dec 100644 --- a/gso/products/product_blocks/iptrunk.py +++ b/gso/products/product_blocks/iptrunk.py @@ -7,7 +7,7 @@ from orchestrator.domain.base import ProductBlockModel from orchestrator.types import SubscriptionLifecycle, strEnum from pydantic import Field -from gso.products.product_blocks.device import DeviceBlock, DeviceBlockInactive, DeviceBlockProvisioning +from gso.products.product_blocks.router import RouterBlock, RouterBlockInactive, RouterBlockProvisioning class IptrunkType(strEnum): @@ -29,13 +29,13 @@ class IptrunkBlockInactive( iptrunk_ipv4_network: Optional[ipaddress.IPv4Network] = None iptrunk_ipv6_network: Optional[ipaddress.IPv6Network] = None # - iptrunk_sideA_node: DeviceBlockInactive + iptrunk_sideA_node: RouterBlockInactive iptrunk_sideA_ae_iface: Optional[str] = None iptrunk_sideA_ae_geant_a_sid: Optional[str] = None iptrunk_sideA_ae_members: list[str] = Field(default_factory=list) iptrunk_sideA_ae_members_description: list[str] = Field(default_factory=list) # - iptrunk_sideB_node: DeviceBlockInactive + iptrunk_sideB_node: RouterBlockInactive iptrunk_sideB_ae_iface: Optional[str] = None iptrunk_sideB_ae_geant_a_sid: Optional[str] = None iptrunk_sideB_ae_members: list[str] = Field(default_factory=list) @@ -54,13 +54,13 @@ class IptrunkBlockProvisioning(IptrunkBlockInactive, lifecycle=[SubscriptionLife iptrunk_ipv4_network: Optional[ipaddress.IPv4Network] = None iptrunk_ipv6_network: Optional[ipaddress.IPv6Network] = None # - iptrunk_sideA_node: DeviceBlockProvisioning + iptrunk_sideA_node: RouterBlockProvisioning iptrunk_sideA_ae_iface: Optional[str] = None iptrunk_sideA_ae_geant_a_sid: Optional[str] = None iptrunk_sideA_ae_members: list[str] = Field(default_factory=list) iptrunk_sideA_ae_members_description: list[str] = Field(default_factory=list) # - iptrunk_sideB_node: DeviceBlockProvisioning + iptrunk_sideB_node: RouterBlockProvisioning iptrunk_sideB_ae_iface: Optional[str] = None iptrunk_sideB_ae_geant_a_sid: Optional[str] = None iptrunk_sideB_ae_members: list[str] = Field(default_factory=list) @@ -87,7 +87,7 @@ class IptrunkBlock(IptrunkBlockProvisioning, lifecycle=[SubscriptionLifecycle.AC iptrunk_ipv6_network: ipaddress.IPv6Network """The IPv6 network used for this trunk.""" # - iptrunk_sideA_node: DeviceBlock + iptrunk_sideA_node: RouterBlock """The router that hosts the A side of the trunk.""" iptrunk_sideA_ae_iface: str """The name of the interface on which the trunk connects.""" @@ -98,7 +98,7 @@ class IptrunkBlock(IptrunkBlockProvisioning, lifecycle=[SubscriptionLifecycle.AC iptrunk_sideA_ae_members_description: list[str] = Field(default_factory=list) """The list of descriptions that describe the list of interface members.""" # - iptrunk_sideB_node: DeviceBlock + iptrunk_sideB_node: RouterBlock """The router that hosts the B side of the trunk. It possesses the same attributes as the A-side, including the interfaces and its descriptions.""" iptrunk_sideB_ae_iface: str diff --git a/gso/products/product_blocks/router.py b/gso/products/product_blocks/router.py new file mode 100644 index 0000000000000000000000000000000000000000..d0d0fdcfad266a68bca2c1b1a5efb3bfa2f1e809 --- /dev/null +++ b/gso/products/product_blocks/router.py @@ -0,0 +1,98 @@ +"""Product block for {class}`Router` products.""" +import ipaddress +from typing import Optional + +from orchestrator.domain.base import ProductBlockModel +from orchestrator.types import SubscriptionLifecycle, strEnum + +from gso.products.product_blocks.site import SiteBlock, SiteBlockInactive, SiteBlockProvisioning + + +class RouterVendor(strEnum): + """Enumerator for the different product vendors that are supported.""" + + JUNIPER = "juniper" + """Juniper routers.""" + NOKIA = "nokia" + """Nokia routers.""" + + +class RouterRole(strEnum): + """Enumerator for the different types of routers.""" + + P = "p" + """P router.""" + PE = "pe" + """PE router.""" + AMT = "amt" + """AMT router.""" + + +class RouterBlockInactive( + ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="RouterBlock" +): + """A router that's being currently inactive. See {class}`RouterBlock`.""" + + router_fqdn: Optional[str] = None + router_ts_port: Optional[int] = None + router_access_via_ts: Optional[bool] = None + router_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None + router_lo_ipv6_address: Optional[ipaddress.IPv6Address] = None + router_lo_iso_address: Optional[str] = None + router_si_ipv4_network: Optional[ipaddress.IPv4Network] = None + router_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None + router_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None + router_vendor: Optional[RouterVendor] = None + router_role: Optional[RouterRole] = None + router_site: Optional[SiteBlockInactive] + router_is_ias_connected: Optional[bool] = None + + +class RouterBlockProvisioning(RouterBlockInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]): + """A router that's being provisioned. See {class}`RouterBlock`.""" + + router_fqdn: str + router_ts_port: int + router_access_via_ts: Optional[bool] = None + router_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None + router_lo_ipv6_address: Optional[ipaddress.IPv6Address] = None + router_lo_iso_address: Optional[str] = None + router_si_ipv4_network: Optional[ipaddress.IPv4Network] = None + router_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None + router_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None + router_vendor: Optional[RouterVendor] = None + router_role: Optional[RouterRole] = None + router_site: Optional[SiteBlockProvisioning] + router_is_ias_connected: Optional[bool] = None + + +class RouterBlock(RouterBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]): + """A router that's currently deployed in the network.""" + + router_fqdn: str + """{term}`FQDN` of a router.""" + router_ts_port: int + """The port of the terminal server that this router is connected to. Used for the same reason as mentioned + previously.""" + router_access_via_ts: bool + """Whether this router should be accessed through the terminal server, or through its loopback address.""" + router_lo_ipv4_address: ipaddress.IPv4Address + """The IPv4 loopback address of the router.""" + router_lo_ipv6_address: ipaddress.IPv6Address + """The IPv6 loopback address of the router.""" + router_lo_iso_address: str + """The {term}`ISO` {term}`NET` of the router, used for {term}`IS-IS` support.""" + router_si_ipv4_network: Optional[ipaddress.IPv4Network] + """The SI IPv4 network of the router.""" + router_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] + """The IAS LT IPv4 network of the router.""" + router_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] + """The IAS LT IPv6 network of the router.""" + router_vendor: RouterVendor + """The vendor of the router, can be any of the values defined in {class}`RouterVendor`.""" + router_role: RouterRole + """The role of the router, which can be any of the values defined in {class}`RouterRole`.""" + router_site: SiteBlock + """The {class}`Site` that this router resides in. Both physically and computationally.""" + router_is_ias_connected: bool + """The router is going to have a LT interface between inet0 and IAS""" diff --git a/gso/products/product_blocks/site.py b/gso/products/product_blocks/site.py index 0364b094eae2aad9de9888219611b21159808613..176d8e88af482fd7e557f38f0ef19e7cb6b5fda0 100644 --- a/gso/products/product_blocks/site.py +++ b/gso/products/product_blocks/site.py @@ -50,11 +50,11 @@ class SiteBlockProvisioning(SiteBlockInactive, lifecycle=[SubscriptionLifecycle. class SiteBlock(SiteBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]): - """A site that's currently available for devices and services to be hosted at.""" + """A site that's currently available for routers and services to be hosted at.""" site_name: str - """The name of the site, that will dictate part of the {term}`FQDN` of devices that are hosted at this site. For - example: `device.X.Y.geant.net`, where X denotes the name of the site.""" + """The name of the site, that will dictate part of the {term}`FQDN` of routers that are hosted at this site. For + example: `router.X.Y.geant.net`, where X denotes the name of the site.""" site_city: str """The city at which the site is located.""" site_country: str @@ -73,6 +73,6 @@ class SiteBlock(SiteBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]) site_tier: SiteTier """The tier of a site, as described in {class}`SiteTier`.""" site_ts_address: Optional[str] = None - """The address of the terminal server that this device is connected to. The terminal server provides out of band - access. This is required in case a link goes down, or when a device is initially added to the network and it does + """The address of the terminal server that this router is connected to. The terminal server provides out of band + access. This is required in case a link goes down, or when a router is initially added to the network and it does not have any IP trunks connected to it yet.""" diff --git a/gso/products/product_types/__init__.py b/gso/products/product_types/__init__.py index 3e5410787324fb2f4eda6d89945de69ad9a75a25..bf2adc65afdc5e2aeda0cfa8cea9da649feab977 100644 --- a/gso/products/product_types/__init__.py +++ b/gso/products/product_types/__init__.py @@ -1,6 +1,6 @@ """Product types define the different products that are available. Multiple product blocks may insist on a single product type. In that sense, a product type is a mode general description -of a product. For example, the product type {class}`Device` must either be a router or a switch, both being separate +of a product. For example, the product type {class}`Router` must either be a router or a switch, both being separate product blocks. """ diff --git a/gso/products/product_types/device.py b/gso/products/product_types/device.py deleted file mode 100644 index 09ad08a7080ac1f729c3333e5db3a882157ab529..0000000000000000000000000000000000000000 --- a/gso/products/product_types/device.py +++ /dev/null @@ -1,29 +0,0 @@ -from orchestrator.domain.base import SubscriptionModel -from orchestrator.types import SubscriptionLifecycle, strEnum - -from gso.products.product_blocks.device import DeviceBlock, DeviceBlockInactive, DeviceBlockProvisioning - - -class DeviceType(strEnum): - """Enumerator for different device types. - - A device can either be a router or a switch. - """ - - router = "router" - switch = "switch" - - -class DeviceInactive(SubscriptionModel, is_base=True): - device_type: DeviceType - device: DeviceBlockInactive - - -class DeviceProvisioning(DeviceInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]): - device_type: DeviceType - device: DeviceBlockProvisioning - - -class Device(DeviceProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]): - device_type: DeviceType - device: DeviceBlock diff --git a/gso/products/product_types/router.py b/gso/products/product_types/router.py new file mode 100644 index 0000000000000000000000000000000000000000..370c066524640792ca4c72fe46c03be704b16144 --- /dev/null +++ b/gso/products/product_types/router.py @@ -0,0 +1,16 @@ +from orchestrator.domain.base import SubscriptionModel +from orchestrator.types import SubscriptionLifecycle + +from gso.products.product_blocks.router import RouterBlock, RouterBlockInactive, RouterBlockProvisioning + + +class RouterInactive(SubscriptionModel, is_base=True): + router: RouterBlockInactive + + +class RouterProvisioning(RouterInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]): + router: RouterBlockProvisioning + + +class Router(RouterProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]): + router: RouterBlock diff --git a/gso/services/provisioning_proxy.py b/gso/services/provisioning_proxy.py index ae8628bc758ea8e3ca33a79201de7999681f71f1..390a5ff4db1d97545629ed29c6ecf955b08ae92b 100644 --- a/gso/services/provisioning_proxy.py +++ b/gso/services/provisioning_proxy.py @@ -18,7 +18,7 @@ from orchestrator.workflow import Step, StepList, abort from pydantic import validator from gso import settings -from gso.products.product_types.device import DeviceProvisioning +from gso.products.product_types.router import RouterProvisioning from gso.products.product_types.iptrunk import Iptrunk, IptrunkProvisioning logger = logging.getLogger(__name__) @@ -84,11 +84,11 @@ def _send_request(endpoint: str, parameters: dict, process_id: UUIDstr, operatio raise AssertionError(request.content) -def provision_device(subscription: DeviceProvisioning, process_id: UUIDstr, dry_run: bool = True) -> None: - """Provision a new device using {term}`LSO`. +def provision_router(subscription: RouterProvisioning, process_id: UUIDstr, dry_run: bool = True) -> None: + """Provision a new router using {term}`LSO`. :param subscription: The subscription object that's to be provisioned. - :type subscription: {class}`DeviceProvisioning` + :type subscription: {class}`RouterProvisioning` :param process_id: The related process ID, used for callback. :type process_id: UUIDstr :param dry_run: A boolean indicating whether this should be a dry run or not, defaults to `True`. @@ -97,7 +97,7 @@ def provision_device(subscription: DeviceProvisioning, process_id: UUIDstr, dry_ """ parameters = {"dry_run": dry_run, "subscription": json.loads(json_dumps(subscription))} - _send_request("device", parameters, process_id, CUDOperation.POST) + _send_request("router", parameters, process_id, CUDOperation.POST) def provision_ip_trunk( diff --git a/gso/translations/en-GB.json b/gso/translations/en-GB.json index a4ee0dfcac2820a0b39239c9a188b36e710750c6..4f9ad94b349d01be99fd7cc6b8f8831cea482268 100644 --- a/gso/translations/en-GB.json +++ b/gso/translations/en-GB.json @@ -11,11 +11,11 @@ "site_internal_id": "Site internal ID", "site_tier": "Site tier", - "hostname": "Hostname of the new device, only the part that comes before the first period", + "hostname": "Hostname of the new router, only the part that comes before the first period", "ts_address": "IP address of the terminal server", "ts_port": "Port number of the terminal server", - "device_vendor": "Device vendor", - "device_role": "Device role", + "router_vendor": "Router vendor", + "router_role": "Router role", "geant_s_sid": "GÉANT S-SID", "iptrunk_description": "IPtrunk description", @@ -30,13 +30,13 @@ "iptrunk_sideB_ae_geant_a_sid": "GÉANT A-SID", "iptrunk_sideB_ae_members": "Aggregated Ethernet member interface names", "iptrunk_sideB_ae_members_descriptions": "Aggregated Ethernet member interface descriptions", - "remove_configuration": "Remove configuration from the device", + "remove_configuration": "Remove configuration from the router", "clean_up_ipam": "Clean up related entries in IPAM" } }, "workflow": { "modify_isis_metric": "Modify the ISIS metric", - "modify_generic": "Modify Trunk interface", + "modify_trunk_interface": "Modify IP Trunk interface", "confirm_info": "Please verify this form looks correct." } } diff --git a/gso/workflows/__init__.py b/gso/workflows/__init__.py index 4a79362c9e457040af342333d8084512291e7364..8f64c854caf0035b16c49d0d76ded578e27f1c89 100644 --- a/gso/workflows/__init__.py +++ b/gso/workflows/__init__.py @@ -1,12 +1,10 @@ """Initialisation class that imports all workflows into {term}`GSO`.""" from orchestrator.workflows import LazyWorkflowInstance -LazyWorkflowInstance("gso.workflows.device.create_device", "create_device") -LazyWorkflowInstance("gso.workflows.device.terminate_device", "terminate_device") -LazyWorkflowInstance("gso.workflows.device.get_facts", "get_facts") +LazyWorkflowInstance("gso.workflows.router.create_router", "create_router") +LazyWorkflowInstance("gso.workflows.router.terminate_router", "terminate_router") LazyWorkflowInstance("gso.workflows.iptrunk.create_iptrunk", "create_iptrunk") -LazyWorkflowInstance("gso.workflows.iptrunk.modify_generic", "modify_generic") +LazyWorkflowInstance("gso.workflows.iptrunk.modify_trunk_interface", "modify_trunk_interface") LazyWorkflowInstance("gso.workflows.iptrunk.terminate_iptrunk", "terminate_iptrunk") LazyWorkflowInstance("gso.workflows.iptrunk.modify_isis_metric", "modify_isis_metric") -LazyWorkflowInstance("gso.workflows.iptrunk.modify_generic", "modify_generic") LazyWorkflowInstance("gso.workflows.site.create_site", "create_site") diff --git a/gso/workflows/device/get_facts.py b/gso/workflows/device/get_facts.py deleted file mode 100644 index 99a37c38f1f6c817c67e364068272a3d3c6204e7..0000000000000000000000000000000000000000 --- a/gso/workflows/device/get_facts.py +++ /dev/null @@ -1,38 +0,0 @@ -from orchestrator.forms import FormPage -from orchestrator.forms.validators import Label -from orchestrator.targets import Target -from orchestrator.types import InputForm, UUIDstr -from orchestrator.workflow import StepList, done, init, step, workflow -from orchestrator.workflows.utils import wrap_modify_initial_input_form - -from gso.products.product_types.device import Device - - -def initial_input_form_generator(subscription_id: UUIDstr) -> InputForm: - subscription = Device.from_subscription(subscription_id) - - class TerminateForm(FormPage): - are_you_sure: Label = f"Are you sure you want to get facts from {subscription.description}?" # type: ignore - - return TerminateForm - - -@step("Get facts") -def get_facts(subscription_id: UUIDstr) -> dict: - subscription = Device.from_subscription(subscription_id) - - return {"output": subscription} - - -@workflow( - "Get Facts from Device", - initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator), - target=Target.SYSTEM, -) -def get_facts_from_device() -> StepList: - return ( - init - >> get_facts - # >> resync - >> done - ) diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py index 89cca024113363d79690004f49bd8c373a28115f..f059b9ae35e2bd09b5d82359e3a6a1f31f288e04 100644 --- a/gso/workflows/iptrunk/create_iptrunk.py +++ b/gso/workflows/iptrunk/create_iptrunk.py @@ -9,7 +9,7 @@ from orchestrator.workflows.utils import wrap_create_initial_input_form from gso.products.product_blocks import PhyPortCapacity from gso.products.product_blocks.iptrunk import IptrunkType -from gso.products.product_types.device import Device +from gso.products.product_types.router import Router from gso.products.product_types.iptrunk import IptrunkInactive, IptrunkProvisioning from gso.services import ipam, provisioning_proxy from gso.services.provisioning_proxy import pp_interaction @@ -20,17 +20,17 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: # TODO: implement more strict validation: # * interface names must be validated - devices = {} - for device_id, device_description in ( + routers = {} + for router_id, router_description in ( SubscriptionTable.query.join(ProductTable) .filter( - ProductTable.product_type == "Device", + ProductTable.product_type == "Router", SubscriptionTable.status == "active", ) .with_entities(SubscriptionTable.subscription_id, SubscriptionTable.description) .all() ): - devices[str(device_id)] = device_description + routers[str(router_id)] = router_description class CreateIptrunkForm(FormPage): class Config: @@ -48,13 +48,13 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: class AeMembersListA(UniqueConstrainedList[str]): min_items = initial_user_input.iptrunk_minimum_links - DeviceEnumA = Choice("Select a device", zip(devices.keys(), devices.items())) # type: ignore + RouterEnumA = Choice("Select a router", zip(routers.keys(), routers.items())) # type: ignore class CreateIptrunkSideAForm(FormPage): class Config: title = "Provide subscription details for side A of the trunk." - iptrunk_sideA_node_id: DeviceEnumA # type: ignore + iptrunk_sideA_node_id: RouterEnumA # type: ignore iptrunk_sideA_ae_iface: str iptrunk_sideA_ae_geant_a_sid: str iptrunk_sideA_ae_members: AeMembersListA @@ -62,9 +62,9 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: user_input_side_a = yield CreateIptrunkSideAForm - # Remove the selected device for side A, to prevent any loops - devices.pop(str(user_input_side_a.iptrunk_sideA_node_id.name)) - DeviceEnumB = Choice("Select a device", zip(devices.keys(), devices.items())) # type: ignore + # Remove the selected router for side A, to prevent any loops + routers.pop(str(user_input_side_a.iptrunk_sideA_node_id.name)) + RouterEnumB = Choice("Select a router", zip(routers.keys(), routers.items())) # type: ignore class AeMembersListB(UniqueConstrainedList[str]): min_items = len(user_input_side_a.iptrunk_sideA_ae_members) @@ -74,7 +74,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: class Config: title = "Provide subscription details for side B of the trunk." - iptrunk_sideB_node_id: DeviceEnumB # type: ignore + iptrunk_sideB_node_id: RouterEnumB # type: ignore iptrunk_sideB_ae_iface: str iptrunk_sideB_ae_geant_a_sid: str iptrunk_sideB_ae_members: AeMembersListB @@ -135,13 +135,13 @@ def initialize_subscription( subscription.iptrunk.iptrunk_isis_metric = 9000 subscription.iptrunk.iptrunk_minimum_links = iptrunk_minimum_links - subscription.iptrunk.iptrunk_sideA_node = Device.from_subscription(iptrunk_sideA_node_id).device + subscription.iptrunk.iptrunk_sideA_node = Router.from_subscription(iptrunk_sideA_node_id).router subscription.iptrunk.iptrunk_sideA_ae_iface = iptrunk_sideA_ae_iface subscription.iptrunk.iptrunk_sideA_ae_geant_a_sid = iptrunk_sideA_ae_geant_a_sid subscription.iptrunk.iptrunk_sideA_ae_members = iptrunk_sideA_ae_members subscription.iptrunk.iptrunk_sideA_ae_members_description = iptrunk_sideA_ae_members_descriptions - subscription.iptrunk.iptrunk_sideB_node = Device.from_subscription(iptrunk_sideB_node_id).device + subscription.iptrunk.iptrunk_sideB_node = Router.from_subscription(iptrunk_sideB_node_id).router subscription.iptrunk.iptrunk_sideB_ae_iface = iptrunk_sideB_ae_iface subscription.iptrunk.iptrunk_sideB_ae_geant_a_sid = iptrunk_sideB_ae_geant_a_sid subscription.iptrunk.iptrunk_sideB_ae_members = iptrunk_sideB_ae_members diff --git a/gso/workflows/iptrunk/modify_generic.py b/gso/workflows/iptrunk/modify_trunk_interface.py similarity index 97% rename from gso/workflows/iptrunk/modify_generic.py rename to gso/workflows/iptrunk/modify_trunk_interface.py index cd86f6ef590e78e64a68834de0891f7737803143..d6320e6ff3f62436f8b84c5d49d46086e58f9499 100644 --- a/gso/workflows/iptrunk/modify_generic.py +++ b/gso/workflows/iptrunk/modify_trunk_interface.py @@ -37,7 +37,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: class Config: title = "Provide subscription details for side A of the trunk." - iptrunk_sideA_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sideA_node.device_fqdn) + iptrunk_sideA_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sideA_node.router_fqdn) iptrunk_sideA_ae_iface: str = ReadOnlyField(subscription.iptrunk.iptrunk_sideA_ae_iface) iptrunk_sideA_ae_geant_a_sid: str = subscription.iptrunk.iptrunk_sideA_ae_geant_a_sid iptrunk_sideA_ae_members: AeMembersListA = subscription.iptrunk.iptrunk_sideA_ae_members # type: ignore @@ -55,7 +55,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: class Config: title = "Provide subscription details for side B of the trunk." - iptrunk_sideB_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sideB_node.device_fqdn) + iptrunk_sideB_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sideB_node.router_fqdn) iptrunk_sideB_ae_iface: str = ReadOnlyField(subscription.iptrunk.iptrunk_sideB_ae_iface) iptrunk_sideB_ae_geant_a_sid: str = subscription.iptrunk.iptrunk_sideB_ae_geant_a_sid iptrunk_sideB_ae_members: AeMembersListB = subscription.iptrunk.iptrunk_sideB_ae_members # type: ignore @@ -143,11 +143,11 @@ def provision_ip_trunk_lldp_iface_real(subscription: Iptrunk, process_id: UUIDst @workflow( - "Modify IP trunk", + "Modify IP Trunk interface", initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator), target=Target.MODIFY, ) -def modify_generic() -> StepList: +def modify_trunk_interface() -> StepList: return ( init >> store_process_subscription(Target.MODIFY) diff --git a/gso/workflows/device/__init__.py b/gso/workflows/router/__init__.py similarity index 100% rename from gso/workflows/device/__init__.py rename to gso/workflows/router/__init__.py diff --git a/gso/workflows/device/create_device.py b/gso/workflows/router/create_router.py similarity index 57% rename from gso/workflows/device/create_device.py rename to gso/workflows/router/create_router.py index 78bc5dd2ce78e943789d37c66b059213583c43c1..8d932545b7f0af22d6af1e82e10ca55089a0cea2 100644 --- a/gso/workflows/device/create_device.py +++ b/gso/workflows/router/create_router.py @@ -12,9 +12,9 @@ from orchestrator.workflow import StepList, done, init, step, workflow from orchestrator.workflows.steps import resync, set_status, store_process_subscription from orchestrator.workflows.utils import wrap_create_initial_input_form -from gso.products.product_blocks import device as device_pb -from gso.products.product_types import device -from gso.products.product_types.device import DeviceInactive, DeviceProvisioning +from gso.products.product_blocks import router as router_pb +from gso.products.product_types import router +from gso.products.product_types.router import RouterInactive, RouterProvisioning from gso.products.product_types.site import Site from gso.services import ipam, provisioning_proxy from gso.services.provisioning_proxy import pp_interaction @@ -39,26 +39,26 @@ def site_selector() -> Choice: def initial_input_form_generator(product_name: str) -> FormGenerator: - class CreateDeviceForm(FormPage): + class CreateRouterForm(FormPage): class Config: title = product_name customer: customer_selector() # type: ignore - device_site: site_selector() # type: ignore + router_site: site_selector() # type: ignore hostname: str ts_port: int - device_vendor: device_pb.DeviceVendor - device_role: device_pb.DeviceRole + router_vendor: router_pb.RouterVendor + router_role: router_pb.RouterRole is_ias_connected: bool - user_input = yield CreateDeviceForm + user_input = yield CreateRouterForm return user_input.dict() @step("Create subscription") def create_subscription(product: UUIDstr, customer: UUIDstr) -> State: - subscription = DeviceInactive.from_product_id(product, customer) + subscription = RouterInactive.from_product_id(product, customer) return { "subscription": subscription, @@ -74,23 +74,23 @@ def iso_from_ipv4(ipv4_address: ipaddress.IPv4Address) -> str: @step("Get information from IPAM") -def get_info_from_ipam(subscription: DeviceProvisioning, is_ias_connected: bool) -> State: - lo0_alias = re.sub(".geant.net", "", subscription.device.device_fqdn) +def get_info_from_ipam(subscription: RouterProvisioning, is_ias_connected: bool) -> State: + lo0_alias = re.sub(".geant.net", "", subscription.router.router_fqdn) lo0_name = f"lo0.{lo0_alias}" lo0_addr = ipam.allocate_host(hostname=lo0_name, service_type="LO", cname_aliases=[lo0_alias]) - subscription.device.device_lo_ipv4_address = lo0_addr.v4 - subscription.device.device_lo_ipv6_address = lo0_addr.v6 - subscription.device.device_lo_iso_address = iso_from_ipv4(subscription.device.device_lo_ipv4_address) - subscription.device.device_is_ias_connected = is_ias_connected + subscription.router.router_lo_ipv4_address = lo0_addr.v4 + subscription.router.router_lo_ipv6_address = lo0_addr.v6 + subscription.router.router_lo_iso_address = iso_from_ipv4(subscription.router.router_lo_ipv4_address) + subscription.router.router_is_ias_connected = is_ias_connected if is_ias_connected is True: - subscription.device.device_si_ipv4_network = ipam.allocate_ipv4_network( + subscription.router.router_si_ipv4_network = ipam.allocate_ipv4_network( service_type="SI", comment=f"SI for {lo0_name}" ).v4 - subscription.device.device_ias_lt_ipv4_network = ipam.allocate_ipv4_network( + subscription.router.router_ias_lt_ipv4_network = ipam.allocate_ipv4_network( service_type="LT_IAS", comment=f"LT for {lo0_name}" ).v4 - subscription.device.device_ias_lt_ipv6_network = ipam.allocate_ipv6_network( + subscription.router.router_ias_lt_ipv6_network = ipam.allocate_ipv6_network( service_type="LT_IAS", comment=f"LT for {lo0_name}" ).v6 @@ -99,71 +99,71 @@ def get_info_from_ipam(subscription: DeviceProvisioning, is_ias_connected: bool) @step("Initialize subscription") def initialize_subscription( - subscription: device.DeviceInactive, + subscription: router.RouterInactive, hostname: str, ts_port: int, - device_vendor: device_pb.DeviceVendor, - device_site: str, - device_role: device_pb.DeviceRole, + router_vendor: router_pb.RouterVendor, + router_site: str, + router_role: router_pb.RouterRole, ) -> State: - subscription.device.device_ts_port = ts_port - subscription.device.device_vendor = device_vendor - subscription.device.device_site = Site.from_subscription(device_site).site + subscription.router.router_ts_port = ts_port + subscription.router.router_vendor = router_vendor + subscription.router.router_site = Site.from_subscription(router_site).site fqdn = ( - f"{hostname}.{subscription.device.device_site.site_name.lower()}." - f"{subscription.device.device_site.site_country_code.lower()}" + f"{hostname}.{subscription.router.router_site.site_name.lower()}." + f"{subscription.router.router_site.site_country_code.lower()}" ".geant.net" ) - subscription.device.device_fqdn = fqdn - subscription.device.device_role = device_role - subscription.device.device_access_via_ts = True - subscription.description = f"Device {fqdn} ({subscription.device_type})" + subscription.router.router_fqdn = fqdn + subscription.router.router_role = router_role + subscription.router.router_access_via_ts = True + subscription.description = f"Router {fqdn}" - subscription = device.DeviceProvisioning.from_other_lifecycle(subscription, SubscriptionLifecycle.PROVISIONING) + subscription = router.RouterProvisioning.from_other_lifecycle(subscription, SubscriptionLifecycle.PROVISIONING) return {"subscription": subscription} -@step("Provision device [DRY RUN]") -def provision_device_dry(subscription: DeviceProvisioning, process_id: UUIDstr) -> State: - provisioning_proxy.provision_device(subscription, process_id) +@step("Provision router [DRY RUN]") +def provision_router_dry(subscription: RouterProvisioning, process_id: UUIDstr) -> State: + provisioning_proxy.provision_router(subscription, process_id) return { "subscription": subscription, "label_text": ( - f"Dry run for the deployment of base config on a new {subscription.device_type}. Deployment is done by the" - f" provisioning proxy, please wait for the results to come back before continuing." + "Dry run for the deployment of base config on a new router. Deployment is done by the" + " provisioning proxy, please wait for the results to come back before continuing." ), } -@step("Provision device [FOR REAL]") -def provision_device_real(subscription: DeviceProvisioning, process_id: UUIDstr) -> State: - provisioning_proxy.provision_device(subscription, process_id, False) +@step("Provision router [FOR REAL]") +def provision_router_real(subscription: RouterProvisioning, process_id: UUIDstr) -> State: + provisioning_proxy.provision_router(subscription, process_id, False) return { "subscription": subscription, "label_text": ( - f"Deployment of base config for a new {subscription.device_type}. Deployment is being taken care of by the" - f" provisioning proxy, please wait for the results to come back before continuing." + "Deployment of base config for a new router. Deployment is being taken care of by the" + " provisioning proxy, please wait for the results to come back before continuing." ), } @workflow( - "Create device", + "Create router", initial_input_form=wrap_create_initial_input_form(initial_input_form_generator), target=Target.CREATE, ) -def create_device() -> StepList: +def create_router() -> StepList: return ( init >> create_subscription >> store_process_subscription(Target.CREATE) >> initialize_subscription >> get_info_from_ipam - >> pp_interaction(provision_device_dry, 3) - >> pp_interaction(provision_device_real, 3) + >> pp_interaction(provision_router_dry, 3) + >> pp_interaction(provision_router_real, 3) >> set_status(SubscriptionLifecycle.ACTIVE) >> resync >> done diff --git a/gso/workflows/device/terminate_device.py b/gso/workflows/router/terminate_router.py similarity index 68% rename from gso/workflows/device/terminate_device.py rename to gso/workflows/router/terminate_router.py index cedda7061a539034cfb484b3bb80a64739b06ebc..4901e8cc2c255cc48d807d8ca10bd997a54ea863 100644 --- a/gso/workflows/device/terminate_device.py +++ b/gso/workflows/router/terminate_router.py @@ -9,7 +9,7 @@ from orchestrator.workflow import StepList, conditional, done, init, step, workf from orchestrator.workflows.steps import resync, set_status, store_process_subscription, unsync from orchestrator.workflows.utils import wrap_modify_initial_input_form -from gso.products.product_types.device import Device +from gso.products.product_types.router import Router from gso.services import ipam from gso.services.ipam import HostAddresses, V4ServiceNetwork, V6ServiceNetwork @@ -17,12 +17,12 @@ logger = logging.getLogger(__name__) def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: - subscription = Device.from_subscription(subscription_id) + subscription = Router.from_subscription(subscription_id) class TerminateForm(FormPage): termination_label: Label = ( - f"Please confirm whether configuration should get removed from the {subscription.device_type}, and " - "whether IPAM resources should be released." # type: ignore + "Please confirm whether configuration should get removed from the router, and whether IPAM resources should" + " be released." # type: ignore ) remove_configuration: bool = True clean_up_ipam: bool = True @@ -32,12 +32,12 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: @step("Deprovision loopback IPs from IPAM/DNS") -def deprovision_loopback_ips(subscription: Device) -> dict[str, HostAddresses]: +def deprovision_loopback_ips(subscription: Router) -> dict[str, HostAddresses]: input_host_addresses = ipam.HostAddresses( - v4=ipaddress.IPv4Address(subscription.device.device_lo_ipv4_address), - v6=ipaddress.IPv6Address(subscription.device.device_lo_ipv6_address), + v4=ipaddress.IPv4Address(subscription.router.router_lo_ipv4_address), + v6=ipaddress.IPv6Address(subscription.router.router_lo_ipv6_address), ) - fqdn_as_list = subscription.device.device_fqdn.split(".") + fqdn_as_list = subscription.router.router_fqdn.split(".") hostname = str(fqdn_as_list[0]) + "." + str(fqdn_as_list[1]) + "." + str(fqdn_as_list[2]) lo0_name = "lo0." + hostname host_addresses = ipam.delete_host( @@ -50,22 +50,22 @@ def deprovision_loopback_ips(subscription: Device) -> dict[str, HostAddresses]: @step("Deprovision SI- interface IPs from IPAM/DNS") -def deprovision_si_ips(subscription: Device) -> dict[str, V4ServiceNetwork | V6ServiceNetwork]: +def deprovision_si_ips(subscription: Router) -> dict[str, V4ServiceNetwork | V6ServiceNetwork]: service_network = ipam.delete_network( - network=ipaddress.ip_network(subscription.device.device_si_ipv4_network), # type: ignore + network=ipaddress.ip_network(subscription.router.router_si_ipv4_network), # type: ignore service_type="SI", ) return {"service_network": service_network} @step("Deprovision LT- interface (IAS) IPs from IPAM/DNS") -def deprovision_lt_ips(subscription: Device) -> dict[str, V4ServiceNetwork | V6ServiceNetwork]: +def deprovision_lt_ips(subscription: Router) -> dict[str, V4ServiceNetwork | V6ServiceNetwork]: service_network_v4 = ipam.delete_network( - network=ipaddress.ip_network(subscription.device.device_ias_lt_ipv4_network), # type: ignore + network=ipaddress.ip_network(subscription.router.router_ias_lt_ipv4_network), # type: ignore service_type="LT_IAS", ) service_network_v6 = ipam.delete_network( - network=ipaddress.ip_network(subscription.device.device_ias_lt_ipv6_network), # type: ignore + network=ipaddress.ip_network(subscription.router.router_ias_lt_ipv6_network), # type: ignore service_type="LT_IAS", ) return { @@ -74,21 +74,21 @@ def deprovision_lt_ips(subscription: Device) -> dict[str, V4ServiceNetwork | V6S } -@step("Remove configuration from device") -def remove_config_from_device() -> None: +@step("Remove configuration from router") +def remove_config_from_router() -> None: pass @workflow( - "Terminate device", + "Terminate router", initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator), target=Target.TERMINATE, ) -def terminate_device() -> StepList: +def terminate_router() -> StepList: run_ipam_steps = conditional(lambda state: state.get("clean_up_ipam", True)) run_config_steps = conditional(lambda state: state.get("remove_configuration", True)) - run_ias_removal = conditional(lambda subscription: "device_ias_lt_ipv4_network" in subscription.get("device", {})) - run_si_removal = conditional(lambda subscription: "device_si_ipv4_network" in subscription.get("device", {})) + run_ias_removal = conditional(lambda subscription: "router_ias_lt_ipv4_network" in subscription.get("router", {})) + run_si_removal = conditional(lambda subscription: "router_si_ipv4_network" in subscription.get("router", {})) ipam_steps = ( StepList([deprovision_loopback_ips]) @@ -101,7 +101,7 @@ def terminate_device() -> StepList: >> store_process_subscription(Target.TERMINATE) >> unsync >> run_ipam_steps(ipam_steps) - >> run_config_steps(remove_config_from_device) + >> run_config_steps(remove_config_from_router) >> set_status(SubscriptionLifecycle.TERMINATED) >> resync >> done diff --git a/gso/workflows/site/create_site.py b/gso/workflows/site/create_site.py index 67e3b91253cf7cc2588aa36bbc962c81c31e6bdf..b756971c5e61d113be6e81c23cb465c218ae8969 100644 --- a/gso/workflows/site/create_site.py +++ b/gso/workflows/site/create_site.py @@ -67,7 +67,7 @@ def initialize_subscription( subscription.site.site_tier = site_tier subscription.site.site_ts_address = site_ts_address - subscription.description = f"Site {site_name}" + subscription.description = f"Site in {site_city}, {site_country}" subscription = site.SiteProvisioning.from_other_lifecycle(subscription, SubscriptionLifecycle.PROVISIONING)