Skip to content
Snippets Groups Projects
Commit 254ddc14 authored by root's avatar root
Browse files

Initial cleanup: remove all trunk leftovers

parent f35fad05
No related branches found
No related tags found
1 merge request!4Device product and initial workflow
Showing
with 0 additions and 1196 deletions
"""Add products for trunk service.
Revision ID: 431ca061b2ad
Revises:
Create Date: 2023-03-08 19:21:13.139851
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = '431ca061b2ad'
down_revision = None
branch_labels = ('data',)
depends_on = 'bed6bc0b197a'
def upgrade() -> None:
conn = op.get_bind()
conn.execute("""
INSERT INTO products (name, description, product_type, tag, status) VALUES ('Trunk', 'A representation of a core link (IP-TRUNK) between two Geant Routers', 'Trunk', 'TRUNK', 'active') RETURNING products.product_id
""")
conn.execute("""
INSERT INTO products (name, description, product_type, tag, status) VALUES ('Trunk Config', 'The configuration attributes for the trunk', 'TrunkConfig', 'TRUNK_C', 'active') RETURNING products.product_id
""")
conn.execute("""
INSERT INTO products (name, description, product_type, tag, status) VALUES ('Trunk Config Common', 'The configuration attributes common between A side and B side', 'TrunkConfigCommon', 'TRUNK_CC', 'active') RETURNING products.product_id
""")
conn.execute("""
INSERT INTO products (name, description, product_type, tag, status) VALUES ('Trunk Config Side', 'The configuration attributes necessary for a side', 'TrunkConfigSide', 'TRUNK_CS', 'active') RETURNING products.product_id
""")
conn.execute("""
INSERT INTO product_blocks (name, description, tag, status) VALUES ('Trunk Block', 'trunk block', 'TRUNK_B', 'active') RETURNING product_blocks.product_block_id
""")
conn.execute("""
INSERT INTO product_blocks (name, description, tag, status) VALUES ('Trunk Config Block', 'trunk config block', 'TRUNK_CB', 'active') RETURNING product_blocks.product_block_id
""")
conn.execute("""
INSERT INTO product_blocks (name, description, tag, status) VALUES ('Trunk Config Common Block', 'trunk config common block', 'TRUNK_CCB', 'active') RETURNING product_blocks.product_block_id
""")
conn.execute("""
INSERT INTO product_blocks (name, description, tag, status) VALUES ('Trunk Config Side Block', 'trunk config side block', 'TRUNK_CSB', 'active') RETURNING product_blocks.product_block_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('members', 'The list of members of the AE') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('speed', 'The speed of the members') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('trunk_id', 'The identifier of the trunk') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('geant_a_sid', 'The Geant Access Port service ID') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('fqdn', 'The FQDN of the router') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('ae_name', 'The name of the Aggregated Ethernet') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('ipv6_address', 'The IPv6 address of the interface') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('trunk_config_common_id', 'ID of the object that contains the configuration attributes common between A side and B side') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('isis_metric', 'The ISIS metric of the link') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('is_leased_line', 'A switch to identify if the link is on leased capacity') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('minimum_links', 'The minimum links number for the LAG') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('geant_s_sid', 'The Geant Service Identifier for the trunk') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('trunk_config_side_id', 'ID of the object that contains the configuration attributes necessary for a side') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('ipv4_address', 'The IPv4 address of the interface') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('trunk_name', 'The name of the trunk') RETURNING resource_types.resource_type_id
""")
conn.execute("""
INSERT INTO resource_types (resource_type, description) VALUES ('trunk_config_id', 'ID of the object that contains the configuration attributes for the trunk') 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 ('Trunk')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Block')))
""")
conn.execute("""
INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('Trunk Config')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Block')))
""")
conn.execute("""
INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('Trunk Config Common')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Common Block')))
""")
conn.execute("""
INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('Trunk Config Side')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Side Block')))
""")
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 ('Trunk Config Block')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Block')))
""")
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 ('Trunk Config Side Block')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Block'))), ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Common Block')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Block')))
""")
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 ('Trunk Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_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 ('Trunk Block')), (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 ('Trunk Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_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 ('Trunk Config Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_config_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 ('Trunk Config Common Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_config_common_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 ('Trunk Config Common Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Common Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('is_leased_line')))
""")
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 ('Trunk Config Common Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Common Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_config_side_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 ('Trunk Config Side Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('ae_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 ('Trunk Config Side Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('members')))
""")
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 ('Trunk Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_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 ('Trunk Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_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 ('Trunk Block')) 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 ('Trunk Block'))) 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 ('Trunk Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_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 ('Trunk Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_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 ('Trunk Config Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_config_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 ('Trunk Config Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_config_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 ('Trunk Config Common Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_config_common_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 ('Trunk Config Common Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_config_common_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 ('Trunk Config Common Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Common Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Common Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('is_leased_line'))
""")
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 ('Trunk Config Common Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('is_leased_line'))
""")
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 ('Trunk Config Common Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Common Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Common Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Common Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_config_side_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 ('Trunk Config Side Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('trunk_config_side_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 ('Trunk Config Side Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('ae_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 ('Trunk Config Side Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('ae_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 ('Trunk Config Side Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('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 ('Trunk Config Side Block'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('members'))
""")
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 ('members', 'speed', 'trunk_id', 'geant_a_sid', 'fqdn', 'ae_name', 'ipv6_address', 'trunk_config_common_id', 'isis_metric', 'is_leased_line', 'minimum_links', 'geant_s_sid', 'trunk_config_side_id', 'ipv4_address', 'trunk_name', 'trunk_config_id'))
""")
conn.execute("""
DELETE FROM resource_types WHERE resource_types.resource_type IN ('members', 'speed', 'trunk_id', 'geant_a_sid', 'fqdn', 'ae_name', 'ipv6_address', 'trunk_config_common_id', 'isis_metric', 'is_leased_line', 'minimum_links', 'geant_s_sid', 'trunk_config_side_id', 'ipv4_address', 'trunk_name', 'trunk_config_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 ('Trunk')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Block'))
""")
conn.execute("""
DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Trunk Config')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Block'))
""")
conn.execute("""
DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Trunk Config Common')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Common Block'))
""")
conn.execute("""
DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Trunk Config Side')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Side Block'))
""")
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 ('Trunk Config Block')) AND product_block_relations.depends_on_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Block'))
""")
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 ('Trunk Config Side Block', 'Trunk Config Common Block')) AND product_block_relations.depends_on_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Block'))
""")
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 ('Trunk Config Block', 'Trunk Block', 'Trunk Config Side Block', 'Trunk Config Common Block'))
""")
conn.execute("""
DELETE FROM product_blocks WHERE product_blocks.name IN ('Trunk Config Block', 'Trunk Block', 'Trunk Config Side Block', 'Trunk Config Common Block')
""")
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 ('Trunk Config Common', 'Trunk', 'Trunk Config Side', 'Trunk Config'))))
""")
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 ('Trunk Config Common', 'Trunk', 'Trunk Config Side', 'Trunk Config')))
""")
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 ('Trunk Config Common', 'Trunk', 'Trunk Config Side', 'Trunk Config')))
""")
conn.execute("""
DELETE FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('Trunk Config Common', 'Trunk', 'Trunk Config Side', 'Trunk Config'))
""")
conn.execute("""
DELETE FROM products WHERE products.name IN ('Trunk Config Common', 'Trunk', 'Trunk Config Side', 'Trunk Config')
""")
"""add DELETE workflows and update CREATE workflows.
Revision ID: 8329fa45157b
Revises: aa49bed10737
Create Date: 2023-03-13 12:12:20.553551
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = '8329fa45157b'
down_revision = 'aa49bed10737'
branch_labels = None
depends_on = None
from orchestrator.migrations.helpers import create_workflow, delete_workflow
new_workflows = [
{
"name": "create_trunk",
"target": "CREATE",
"description": "Create trunk",
"product_type": "Trunk"
},
{
"name": "terminate_trunk",
"target": "TERMINATE",
"description": "Terminate trunk",
"product_type": "Trunk"
},
{
"name": "create_trunk_config",
"target": "CREATE",
"description": "Create trunk config",
"product_type": "TrunkConfig"
},
{
"name": "terminate_trunk_config",
"target": "TERMINATE",
"description": "Terminate trunk config",
"product_type": "TrunkConfig"
},
{
"name": "create_trunk_config_common",
"target": "CREATE",
"description": "Create trunk config common",
"product_type": "TrunkConfigCommon"
},
{
"name": "terminate_trunk_config_common",
"target": "TERMINATE",
"description": "Terminate trunk config common",
"product_type": "TrunkConfigCommon"
},
{
"name": "create_trunk_config_side",
"target": "CREATE",
"description": "Create trunk config side",
"product_type": "TrunkConfigSide"
},
{
"name": "terminate_trunk_config_side",
"target": "TERMINATE",
"description": "Terminate trunk config side",
"product_type": "TrunkConfigSide"
}
]
def upgrade() -> None:
conn = op.get_bind()
for workflow in new_workflows:
create_workflow(conn, workflow)
def downgrade() -> None:
conn = op.get_bind()
for workflow in new_workflows:
delete_workflow(conn, workflow["name"])
"""add CREATE workflows.
Revision ID: aa49bed10737
Revises: 431ca061b2ad
Create Date: 2023-03-13 11:18:36.787981
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = 'aa49bed10737'
down_revision = '431ca061b2ad'
branch_labels = None
depends_on = None
from orchestrator.migrations.helpers import create_workflow, delete_workflow
new_workflows = [
{
"name": "create_trunk",
"target": "CREATE",
"description": "Create trunk",
"product_type": "Trunk"
},
{
"name": "create_trunk_config",
"target": "CREATE",
"description": "Create trunk config",
"product_type": "TrunkConfig"
},
{
"name": "create_trunk_config_common",
"target": "CREATE",
"description": "Create trunk config common",
"product_type": "TrunkConfigCommon"
},
{
"name": "create_trunk_config_side",
"target": "CREATE",
"description": "Create trunk config side",
"product_type": "TrunkConfigSide"
}
]
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"])
from typing import Optional
from orchestrator.domain.base import ProductBlockModel
from orchestrator.types import SubscriptionLifecycle
class TrunkBlockInactive(
ProductBlockModel,
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="TrunkBlock"):
trunk_id: Optional[int] = None
geant_s_sid: Optional[str] = None
trunk_name: Optional[str] = None
class TrunkBlockProvisioning(
TrunkBlockInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
trunk_id: Optional[int] = None
geant_s_sid: str
trunk_name: str
class TrunkBlock(
TrunkBlockProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]):
trunk_id: int
geant_s_sid: str
trunk_name: str
from typing import Optional
from orchestrator.domain.base import ProductBlockModel
from orchestrator.types import SubscriptionLifecycle
from geant_service_orchestrator.products.product_blocks.trunk \
import TrunkBlock, TrunkBlockInactive, TrunkBlockProvisioning
class TrunkConfigBlockInactive(
ProductBlockModel,
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="TrunkConfigBlock"):
trunk: TrunkBlockInactive
trunk_config_id: Optional[int] = None
class TrunkConfigBlockProvisioning(
TrunkConfigBlockInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
trunk: TrunkBlockProvisioning
trunk_config_id: Optional[int] = None
class TrunkConfigBlock(
TrunkConfigBlockProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]):
trunk: TrunkBlock
trunk_config_id: int
from typing import Optional
from orchestrator.domain.base import ProductBlockModel
from orchestrator.types import SubscriptionLifecycle
from geant_service_orchestrator.products.product_blocks.trunk_config \
import TrunkConfigBlock, TrunkConfigBlockInactive, \
TrunkConfigBlockProvisioning
class TrunkConfigCommonBlockInactive(
ProductBlockModel,
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="TrunkConfigCommonBlock"):
trunk_config: TrunkConfigBlockInactive
trunk_config_common_id: Optional[int] = None
speed: Optional[str] = None
is_leased_line: Optional[bool] = None
isis_metric: Optional[int] = None
minimum_links: Optional[int] = None
class TrunkConfigCommonBlockProvisioning(
TrunkConfigCommonBlockInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
trunk_config: TrunkConfigBlockProvisioning
trunk_config_common_id: Optional[int] = None
speed: str
is_leased_line: bool
isis_metric: int
minimum_links: int
class TrunkConfigCommonBlock(
TrunkConfigCommonBlockProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]):
trunk_config: TrunkConfigBlock
trunk_config_common_id: int
speed: str
is_leased_line: bool
isis_metric: int
minimum_links: int
from typing import List, Optional
from orchestrator.domain.base import ProductBlockModel
from orchestrator.types import SubscriptionLifecycle
from geant_service_orchestrator.products.product_blocks.trunk_config \
import TrunkConfigBlock, TrunkConfigBlockInactive,\
TrunkConfigBlockProvisioning
class TrunkConfigSideBlockInactive(
ProductBlockModel,
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="TrunkConfigSideBlock"):
trunk_config: TrunkConfigBlockInactive
trunk_config_side_id: Optional[int] = None
fqdn: Optional[str] = None
ae_name: Optional[str] = None
geant_a_sid: Optional[str] = None
ipv4_address: Optional[str] = None
ipv6_address: Optional[str] = None
members: Optional[List[str]] = None
class TrunkConfigSideBlockProvisioning(
TrunkConfigSideBlockInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
trunk_config: TrunkConfigBlockProvisioning
trunk_config_side_id: Optional[int] = None
fqdn: str
ae_name: str
geant_a_sid: str
ipv4_address: Optional[str] = "127.0.0.1"
ipv6_address: Optional[str] = "::1"
members: List[str]
class TrunkConfigSideBlock(
TrunkConfigSideBlockProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]):
trunk_config: TrunkConfigBlock
trunk_config_side_id: int
fqdn: str
ae_name: str
geant_a_sid: str
ipv4_address: str
ipv6_address: str
members: List[str]
from orchestrator.domain.base import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle
from geant_service_orchestrator.products.product_blocks.trunk \
import TrunkBlock, TrunkBlockInactive, TrunkBlockProvisioning
class TrunkInactive(
SubscriptionModel, is_base=True,
lifecycle=[SubscriptionLifecycle.INITIAL]):
trunk: TrunkBlockInactive
class TrunkProvisioning(
TrunkInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
trunk: TrunkBlockProvisioning
class Trunk(
TrunkProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]):
trunk: TrunkBlock
from orchestrator.domain.base import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle
from geant_service_orchestrator.products.product_blocks.trunk_config \
import TrunkConfigBlock, TrunkConfigBlockInactive,\
TrunkConfigBlockProvisioning
class TrunkConfigInactive(
SubscriptionModel,
is_base=True, lifecycle=[SubscriptionLifecycle.INITIAL]):
trunk_config: TrunkConfigBlockInactive
class TrunkConfigProvisioning(
TrunkConfigInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
trunk_config: TrunkConfigBlockProvisioning
class TrunkConfig(
TrunkConfigProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]):
trunk_config: TrunkConfigBlock
from orchestrator.domain.base import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle
from geant_service_orchestrator.products.product_blocks.trunk_config_common \
import TrunkConfigCommonBlock, TrunkConfigCommonBlockInactive, \
TrunkConfigCommonBlockProvisioning
class TrunkConfigCommonInactive(
SubscriptionModel,
is_base=True,
lifecycle=[SubscriptionLifecycle.INITIAL]):
trunk_config_common: TrunkConfigCommonBlockInactive
class TrunkConfigCommonProvisioning(
TrunkConfigCommonInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
trunk_config_common: TrunkConfigCommonBlockProvisioning
class TrunkConfigCommon(
TrunkConfigCommonProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]):
trunk_config_common: TrunkConfigCommonBlock
from orchestrator.domain.base import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle
from geant_service_orchestrator.products.product_blocks.trunk_config_side \
import TrunkConfigSideBlock, TrunkConfigSideBlockInactive, \
TrunkConfigSideBlockProvisioning
class TrunkConfigSideInactive(
SubscriptionModel,
is_base=True,
lifecycle=[SubscriptionLifecycle.INITIAL]):
trunk_config_side: TrunkConfigSideBlockInactive
class TrunkConfigSideProvisioning(
TrunkConfigSideInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
trunk_config_side: TrunkConfigSideBlockProvisioning
class TrunkConfigSide(
TrunkConfigSideProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]):
trunk_config_side: TrunkConfigSideBlock
from orchestrator.workflows import LazyWorkflowInstance
LazyWorkflowInstance(
"workflows.trunk.create_trunk",
"create_trunk")
LazyWorkflowInstance(
"workflows.trunk_config.create_trunk_config",
"create_trunk_config")
LazyWorkflowInstance(
"workflows.trunk_config_common.create_trunk_config_common",
"create_trunk_config_common")
LazyWorkflowInstance(
"workflows.trunk_config_side.create_trunk_config_side",
"create_trunk_config_side")
LazyWorkflowInstance(
"workflows.trunk.terminate_trunk",
"terminate_trunk")
LazyWorkflowInstance(
"workflows.trunk_config.terminate_trunk_config",
"terminate_trunk_config")
LazyWorkflowInstance(
"workflows.trunk_config_common.terminate_trunk_config_common",
"terminate_trunk_config_common")
LazyWorkflowInstance(
"workflows.trunk_config_side.terminate_trunk_config_side",
"terminate_trunk_config_side")
from uuid import uuid4
from orchestrator.forms import FormPage
from orchestrator.targets import Target
from orchestrator.types \
import FormGenerator, State, SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import 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 geant_service_orchestrator.products.product_types.trunk \
import TrunkInactive, TrunkProvisioning
def initial_input_form_generator(product_name: str) -> FormGenerator:
class CreateTrunkForm(FormPage):
class Config:
title = product_name
trunk_name: str
geant_s_sid: str
user_input = yield CreateTrunkForm
return user_input.dict()
def _provision_in_gap(trunk_name: str) -> int:
return abs(hash(trunk_name))
@step("Create subscription")
def create_subscription(product: UUIDstr) -> State:
subscription = TrunkInactive.from_product_id(product, uuid4())
return {
"subscription": subscription,
"subscription_id": subscription.subscription_id
}
@step("Initialize subscription")
def initialize_subscription(
subscription: TrunkInactive,
trunk_name: str,
geant_s_sid: str) -> State:
subscription.trunk.trunk_name = trunk_name
subscription.trunk.geant_s_sid = geant_s_sid
subscription.description = f"Trunk {trunk_name}"
subscription = TrunkProvisioning.from_other_lifecycle(
subscription, SubscriptionLifecycle.PROVISIONING)
return {"subscription": subscription}
@step("Provision trunk")
def provision_trunk(
subscription: TrunkProvisioning,
trunk_name: str) -> State:
trunk_id = _provision_in_gap(trunk_name)
subscription.trunk.trunk_id = trunk_id
return {"subscription": subscription}
@workflow(
"Create trunk",
initial_input_form=wrap_create_initial_input_form(initial_input_form_generator), # noqa: E501
target=Target.CREATE,
)
def create_trunk():
return (
init
>> create_subscription
>> store_process_subscription(Target.CREATE)
>> initialize_subscription
>> provision_trunk
>> set_status(SubscriptionLifecycle.ACTIVE)
>> resync
>> done
)
from orchestrator.forms import FormPage
from orchestrator.forms.validators import Label
from orchestrator.targets import Target
from orchestrator.types import InputForm, SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import done, init, step, workflow
from orchestrator.workflows.steps \
import resync, set_status, store_process_subscription, unsync
from orchestrator.workflows.utils import wrap_modify_initial_input_form
from geant_service_orchestrator.products import Trunk
def initial_input_form_generator(
subscription_id: UUIDstr,
organisation: UUIDstr) -> InputForm:
subscription = Trunk.from_subscription(subscription_id)
class TerminateForm(FormPage):
are_you_sure: Label = 'Are you sure you want to remove ' \
f'{subscription.description}?' # type:ignore
return TerminateForm
def _deprovision_in_gap(trunk_id: int) -> int:
pass
@step("Deprovision trunk")
def deprovision_trunk(subscription: Trunk) -> None:
_deprovision_in_gap(subscription.trunk.trunk_id)
@workflow(
"Terminate trunk",
initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator), # noqa: E501
target=Target.TERMINATE,
)
def terminate_trunk():
return (
init
>> store_process_subscription(Target.TERMINATE)
>> unsync
>> deprovision_trunk
>> set_status(SubscriptionLifecycle.TERMINATED)
>> resync
>> done
)
from random import randint
from typing import List
from uuid import uuid4
from orchestrator.db.models import ProductTable, SubscriptionTable
from orchestrator.forms import FormPage
from orchestrator.forms.validators import Choice, choice_list
from orchestrator.targets import Target
from orchestrator.types \
import FormGenerator, State, SubscriptionLifecycle, UUIDstr
from orchestrator.workflow import 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 geant_service_orchestrator.products.product_types.trunk_config \
import TrunkConfigInactive, TrunkConfigProvisioning
from geant_service_orchestrator.products.product_types.trunk \
import Trunk
def trunk_selector() -> list:
trunk_subscriptions = {}
for trunk_id, trunk_description in (
SubscriptionTable.query.join(ProductTable)
.filter(
ProductTable.product_type == "Trunk",
SubscriptionTable.status == "active",
)
.with_entities(
SubscriptionTable.subscription_id,
SubscriptionTable.description)
.all()
):
trunk_subscriptions[str(trunk_id)] = trunk_description
return choice_list(
Choice("TrunkEnum", zip(
trunk_subscriptions.keys(),
trunk_subscriptions.items())), # type:ignore
min_items=1,
max_items=1,
)
def initial_input_form_generator(product_name: str) -> FormGenerator:
class CreateTrunkConfigForm(FormPage):
class Config:
title = product_name
trunk_ids: trunk_selector() # type:ignore
user_input = yield CreateTrunkConfigForm
return user_input.dict()
def _provision_in_gap() -> int:
return randint(0, 2147483648)
@step("Create subscription")
def create_subscription(product: UUIDstr) -> State:
subscription = TrunkConfigInactive.from_product_id(product, uuid4())
return {
"subscription": subscription,
"subscription_id": subscription.subscription_id
}
@step("Initialize subscription")
def initialize_subscription(
subscription: TrunkConfigInactive,
trunk_ids: List[str]) -> State:
subscription.trunk_config.trunk \
= Trunk.from_subscription(trunk_ids[0]).trunk
subscription.description =\
"TrunkConfig from Trunk " \
f"{subscription.trunk_config.trunk.trunk_name}"
subscription = TrunkConfigProvisioning.from_other_lifecycle(
subscription, SubscriptionLifecycle.PROVISIONING)
return {"subscription": subscription}
@step("Provision trunk config")
def provision_trunk_config(
subscription: TrunkConfigProvisioning) -> State:
trunk_config_id = _provision_in_gap()
subscription.trunk_config.trunk_config_id = trunk_config_id
return {"subscription": subscription}
@workflow(
"Create trunk config",
initial_input_form=wrap_create_initial_input_form(initial_input_form_generator), # noqa: E501
target=Target.CREATE,
)
def create_trunk_config():
return (
init
>> create_subscription
>> store_process_subscription(Target.CREATE)
>> initialize_subscription
>> provision_trunk_config
>> set_status(SubscriptionLifecycle.ACTIVE)
>> resync
>> done
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment