From c8fb5efea13c39d999dc04260ae15c61c67f12f3 Mon Sep 17 00:00:00 2001 From: Simone Spinelli <simone.spinelli@geant.org> Date: Fri, 21 Apr 2023 11:42:47 +0000 Subject: [PATCH] First set of attributes --- gso/products/product_blocks/iptrunks.py | 88 +++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 gso/products/product_blocks/iptrunks.py diff --git a/gso/products/product_blocks/iptrunks.py b/gso/products/product_blocks/iptrunks.py new file mode 100644 index 00000000..37a26c17 --- /dev/null +++ b/gso/products/product_blocks/iptrunks.py @@ -0,0 +1,88 @@ +from typing import Optional + +from orchestrator.domain.base import ProductBlockModel +from orchestrator.types import SubscriptionLifecycle +import ipaddress + +# - id: GS-00012 +# name: AMS2-LON-IPTRUNK-100G +# config: +# common: +# speed: '100' +# is_leased_line: false +# isis_metric: '9000' +# minimum_links: 1 +# nodeA: +# name: rt2.ams.nl.geant.net +# ae_name: ae2 +# ipv4_address: 62.40.98.164/31 +# ipv6_address: 2001:798:cc::5/126 +# members: +# - et-0/0/0 +# port_id: GA-02036 +# nodeB: +# name: mx1.lon.uk.geant.net +# ae_name: ae8 +# ipv4_address: 62.40.98.165/31 +# ipv6_address: 2001:798:cc::6/126 +# members: +# - et-4/0/2 +# port_id: GA-01834 + + +class DeviceBlockInactive(ProductBlockModel, + lifecycle=[SubscriptionLifecycle.INITIAL], + product_block_name="DeviceBlock"): + geant_s_sid: Optional[str] = None + iptrunk_speed: Optional[str] = None + iptrunk_minimum_links: Optional[int] = None + iptrunk_ipv4_network: Optional[ipaddress.IPv4Network] = None + iptrunk_ipv6_network: Optional[ipaddress.IPv6Network] = None + # + iptrunk_sideA_fqdn: Optional[str] = None + iptrunk_sideA_ae_iface: Optional[str] = None + iptrunk_sideA_ae_geant_a_sid: Optional[str] = None + iptrunk_sideA_ae_members: Optional[list] = None + # + iptrunk_sideB_fqdn: Optional[str] = None + iptrunk_sideB_ae_iface: Optional[str] = None + iptrunk_sideB_ae_geant_a_sid: Optional[str] = None + iptrunk_sideB_ae_members: Optional[list] = None + + +class DeviceBlockProvisioning(DeviceBlockInactive, + lifecycle=[SubscriptionLifecycle.PROVISIONING]): + fqdn: str + ts_address: str + ts_port: str + lo_ipv4_address: Optional[ipaddress.IPv4Address] = None + lo_ipv6_address: Optional[ipaddress.IPv6Address] = None + lo_iso_address: Optional[str] = None + si_ipv4_network: Optional[ipaddress.IPv4Network] = None + ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None + ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None + site_city: Optional[str] = None + site_country: Optional[str] = None + site_country_code: Optional[str] = None + site_latitude: Optional[str] = None + site_longitude: Optional[str] = None + snmp_location: Optional[str] = None + + +class DeviceBlock(DeviceBlockProvisioning, + lifecycle=[SubscriptionLifecycle.ACTIVE]): + fqdn: str + ts_address: str + ts_port: str + lo_ipv4_address: ipaddress.IPv4Address + lo_ipv6_address: ipaddress.IPv6Address + lo_iso_address: str + si_ipv4_network: ipaddress.IPv4Network + ias_lt_ipv4_network: ipaddress.IPv4Network + ias_lt_ipv6_network: ipaddress.IPv6Network + site_city: str + site_country: str + site_country_code: str + site_latitude: str + site_longitude: str + snmp_location: str -- GitLab