diff --git a/geant_service_orchestrator/main.py b/geant_service_orchestrator/main.py index 2e7800f185aef35a99fb9e09ffb602effa4484aa..24f60f65ceab42d0b6234280fb8ec9045fa57300 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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 0000000000000000000000000000000000000000..17601997420076d018375f02c837610386a97b54 --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 0000000000000000000000000000000000000000..6af0e3ddccdc65be60efe7f7e04b5128711dca85 --- /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