diff --git a/.gitignore b/.gitignore index 20969d16f10cfe87950112c3dfb1a3a00e4ef5fb..6f706bf96b555012f29447cf06e44530ac2393f1 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ __pycache__/ .coverage coverage.xml .tox/device_vendor -.vscode \ No newline at end of file +.vscode +venv \ No newline at end of file diff --git a/gso/products/product_blocks/iptrunk.py b/gso/products/product_blocks/iptrunk.py new file mode 100644 index 0000000000000000000000000000000000000000..07d9a31e5116ca8ed7f00d0b875baf93be38bad7 --- /dev/null +++ b/gso/products/product_blocks/iptrunk.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]): + 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 DeviceBlock(DeviceBlockProvisioning, + lifecycle=[SubscriptionLifecycle.ACTIVE]): + geant_s_sid: str + iptrunk_speed: str + iptrunk_minimum_links: int + iptrunk_ipv4_network: ipaddress.IPv4Network + iptrunk_ipv6_network: ipaddress.IPv6Network + # + iptrunk_sideA_fqdn: str + iptrunk_sideA_ae_iface: str + iptrunk_sideA_ae_geant_a_sid: str + iptrunk_sideA_ae_members: list + # + iptrunk_sideB_fqdn: str + iptrunk_sideB_ae_iface: str + iptrunk_sideB_ae_geant_a_sid: str + iptrunk_sideB_ae_members: list diff --git a/gso/products/product_blocks/iptrunks.py b/gso/products/product_blocks/iptrunks.py deleted file mode 100644 index 37a26c171997bdbff823535274feec332d7a71ec..0000000000000000000000000000000000000000 --- a/gso/products/product_blocks/iptrunks.py +++ /dev/null @@ -1,88 +0,0 @@ -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