Skip to content
Snippets Groups Projects
Commit 669c0bcb authored by Simone Spinelli's avatar Simone Spinelli
Browse files

Add attribute for selecting TS as access method

parent 6bc66191
No related branches found
No related tags found
1 merge request!28Feature/nat178 trunks isis metric modify
"""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')
""")
......@@ -24,6 +24,7 @@ class DeviceBlockInactive(ProductBlockModel,
device_fqdn: Optional[str] = None
device_ts_address: 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
......@@ -40,6 +41,7 @@ class DeviceBlockProvisioning(DeviceBlockInactive,
device_fqdn: str
device_ts_address: 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
......@@ -56,6 +58,7 @@ class DeviceBlock(DeviceBlockProvisioning,
device_fqdn: str
device_ts_address: str
device_ts_port: int
device_access_via_ts: bool
device_lo_ipv4_address: ipaddress.IPv4Address
device_lo_ipv6_address: ipaddress.IPv6Address
device_lo_iso_address: str
......
......@@ -128,6 +128,7 @@ def initialize_subscription(
f'.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} ' \
f'({subscription.device_type})'
......@@ -144,9 +145,9 @@ def provision_device_dry(subscription: DeviceProvisioning,
provisioning_proxy.provision_device(subscription, process_id)
return {'subscription': subscription,
'label_text': f'This is a dry run for the deployment of a new '
f'{subscription.device_type}. Deployment is being '
f'taken care of by the provisioning proxy, please '
'label_text': f'Dry run for the deployment of base config on a'
f'new {subscription.device_type}. Deployment is '
f'done by the provisioning proxy, please '
f'wait for the results to come back before '
f'continuing.'
}
......@@ -158,7 +159,7 @@ def provision_device_real(subscription: DeviceProvisioning,
provisioning_proxy.provision_device(subscription, process_id, False)
return {'subscription': subscription,
'label_text': f'This is a live deployment of a new '
'label_text': f'Deployment of base config for a new '
f'{subscription.device_type}. Deployment is being '
f'taken care of by the provisioning proxy, please '
f'wait for the results to come back before '
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment