From 3658cc6b15da79b8eb9fa666d32601ea622f0732 Mon Sep 17 00:00:00 2001 From: root <root@simone03.dev.gap.geant.org> Date: Fri, 31 Mar 2023 15:16:53 +0000 Subject: [PATCH] DeviceBlock and DeviceType for device --- geant_service_orchestrator/main.py | 4 +- .../products/product_blocks/__init__.py | 0 .../products/product_blocks/device.py | 58 +++++++++++++++++++ .../products/product_types/__init__.py | 0 .../products/product_types/device.py | 30 ++++++++++ 5 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 geant_service_orchestrator/products/product_blocks/__init__.py create mode 100644 geant_service_orchestrator/products/product_blocks/device.py create mode 100644 geant_service_orchestrator/products/product_types/__init__.py create mode 100644 geant_service_orchestrator/products/product_types/device.py diff --git a/geant_service_orchestrator/main.py b/geant_service_orchestrator/main.py index 2e7800f1..24f60f65 100644 --- a/geant_service_orchestrator/main.py +++ b/geant_service_orchestrator/main.py @@ -1,9 +1,9 @@ from orchestrator import OrchestratorCore from orchestrator.cli.main import app as core_cli from orchestrator.settings import AppSettings +#import products +#import workflows -# import products -# import workflows app = OrchestratorCore(base_settings=AppSettings()) diff --git a/geant_service_orchestrator/products/product_blocks/__init__.py b/geant_service_orchestrator/products/product_blocks/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/geant_service_orchestrator/products/product_blocks/device.py b/geant_service_orchestrator/products/product_blocks/device.py new file mode 100644 index 00000000..17601997 --- /dev/null +++ b/geant_service_orchestrator/products/product_blocks/device.py @@ -0,0 +1,58 @@ +from typing import Optional + +from orchestrator.domain.base import ProductBlockModel +from orchestrator.types import SubscriptionLifecycle +import ipaddress + +class DeviceBlockInactive(ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="DeviceBlock"): + fqdn: Optional[str] = None + ts_address: Optional[str] = None + ts_port: Optional[int] = None + 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 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 diff --git a/geant_service_orchestrator/products/product_types/__init__.py b/geant_service_orchestrator/products/product_types/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/geant_service_orchestrator/products/product_types/device.py b/geant_service_orchestrator/products/product_types/device.py new file mode 100644 index 00000000..6af0e3dd --- /dev/null +++ b/geant_service_orchestrator/products/product_types/device.py @@ -0,0 +1,30 @@ +from orchestrator.domain.base import SubscriptionModel +from orchestrator.types import SubscriptionLifecycle, strEnum + +from products.product_blocks.device import DeviceBlock, DeviceBlockInactive, DeviceBlockProvisioning + + +class DeviceType(strEnum): + router = "router" + switch= "switch" + +class DeviceVendor(strEnum): + Juniper = "juniper" + Newvendor= "newvendor" + +class DeviceInactive(SubscriptionModel, is_base=True): + device_type: DeviceType + device_vendor: DeviceVendor + device: DeviceBlockInactive + + +class DeviceProvisioning(DeviceInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]): + device_type: DeviceType + device_vendor: DeviceVendor + device: DeviceBlockProvisioning + + +class Device(DeviceProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]): + device_type: DeviceType + device_vendor: DeviceVendor + device: DeviceBlock -- GitLab