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

New Device model and site model added

parent 7f63d4bf
No related branches found
No related tags found
1 merge request!12Add sites, and add integration of IPtrunks and routers with LSO deployment
...@@ -2,9 +2,11 @@ from orchestrator.domain import SUBSCRIPTION_MODEL_REGISTRY ...@@ -2,9 +2,11 @@ from orchestrator.domain import SUBSCRIPTION_MODEL_REGISTRY
from gso.products.product_types.device import Device from gso.products.product_types.device import Device
from gso.products.product_types.iptrunk import Iptrunk from gso.products.product_types.iptrunk import Iptrunk
from gso.products.product_types.site import Site
SUBSCRIPTION_MODEL_REGISTRY.update( SUBSCRIPTION_MODEL_REGISTRY.update(
{ {
"Site": Site,
"Router": Device, "Router": Device,
"Switch": Device, "Switch": Device,
"Iptrunk": Iptrunk, "Iptrunk": Iptrunk,
......
...@@ -2,62 +2,62 @@ from typing import Optional ...@@ -2,62 +2,62 @@ from typing import Optional
from orchestrator.domain.base import ProductBlockModel from orchestrator.domain.base import ProductBlockModel
from orchestrator.types import SubscriptionLifecycle from orchestrator.types import SubscriptionLifecycle
from gso.products.product_blocks.site \
import SiteBlock, SiteBlockInactive, SiteBlockProvisioning
import ipaddress import ipaddress
class DeviceVendor(strEnum):
juniper = "juniper"
nokia = "nokia"
class DeviceRole(strEnum):
p = "p"
pe = "pe"
amt = "amt"
class DeviceBlockInactive(ProductBlockModel, class DeviceBlockInactive(ProductBlockModel,
lifecycle=[SubscriptionLifecycle.INITIAL], lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="DeviceBlock"): product_block_name="DeviceBlock"):
fqdn: Optional[str] = None device_fqdn: Optional[str] = None
ts_address: Optional[str] = None device_ts_address: Optional[str] = None
ts_port: Optional[int] = None device_ts_port: Optional[int] = None
lo_ipv4_address: Optional[ipaddress.IPv4Address] = None device_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None
lo_ipv6_address: Optional[ipaddress.IPv6Address] = None device_lo_ipv6_address: Optional[ipaddress.IPv6Address] = None
lo_iso_address: Optional[str] = None device_lo_iso_address: Optional[str] = None
si_ipv4_network: Optional[ipaddress.IPv4Network] = None device_si_ipv4_network: Optional[ipaddress.IPv4Network] = None
ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None device_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None
ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None device_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None
site_city: Optional[str] = None device_vendor: Optional[DeviceVendor] = None
site_country: Optional[str] = None device_role: Optional[DeviceRole] = None
site_country_code: Optional[str] = None device_site: Optional[SiteBlockInactive]
site_latitude: Optional[str] = None
site_longitude: Optional[str] = None
snmp_location: Optional[str] = None
class DeviceBlockProvisioning(DeviceBlockInactive, class DeviceBlockProvisioning(DeviceBlockInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]): lifecycle=[SubscriptionLifecycle.PROVISIONING]):
fqdn: str device_fqdn: str
ts_address: str device_ts_address: str
ts_port: str device_ts_port: str
lo_ipv4_address: Optional[ipaddress.IPv4Address] = None device_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None
lo_ipv6_address: Optional[ipaddress.IPv6Address] = None device_lo_ipv6_address: Optional[ipaddress.IPv6Address] = None
lo_iso_address: Optional[str] = None device_lo_iso_address: Optional[str] = None
si_ipv4_network: Optional[ipaddress.IPv4Network] = None device_si_ipv4_network: Optional[ipaddress.IPv4Network] = None
ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None device_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None
ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None device_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None
site_city: Optional[str] = None device_vendor: Optional[DeviceVendor] = None
site_country: Optional[str] = None device_role: Optional[DeviceRole] = None
site_country_code: Optional[str] = None device_site: Optional[SiteBlockProvisioning]
site_latitude: Optional[str] = None
site_longitude: Optional[str] = None
snmp_location: Optional[str] = None
class DeviceBlock(DeviceBlockProvisioning, class DeviceBlock(DeviceBlockProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]): lifecycle=[SubscriptionLifecycle.ACTIVE]):
fqdn: str device_fqdn: str
ts_address: str device_ts_address: str
ts_port: str device_ts_port: str
lo_ipv4_address: ipaddress.IPv4Address device_lo_ipv4_address: ipaddress.IPv4Address
lo_ipv6_address: ipaddress.IPv6Address device_lo_ipv6_address: ipaddress.IPv6Address
lo_iso_address: str device_lo_iso_address: str
si_ipv4_network: ipaddress.IPv4Network device_si_ipv4_network: ipaddress.IPv4Network
ias_lt_ipv4_network: ipaddress.IPv4Network device_ias_lt_ipv4_network: ipaddress.IPv4Network
ias_lt_ipv6_network: ipaddress.IPv6Network device_ias_lt_ipv6_network: ipaddress.IPv6Network
site_city: str device_vendor: DeviceVendor
site_country: str device_role: DeviceRole
site_country_code: str device_site: SiteBlock
site_latitude: str
site_longitude: str
snmp_location: str
from typing import Optional
from pydantic import Field
from orchestrator.domain.base import ProductBlockModel
from orchestrator.types import SubscriptionLifecycle, Enum
import ipaddress
class SiteTier(Enum):
tier1 = 1
tier2 = 2
tier3 = 3
tier4 = 4
class SiteBlockInactive(ProductBlockModel,
lifecycle=[SubscriptionLifecycle.INITIAL],
product_block_name="SiteBlock"):
site_name: Optional[str]
site_city: Optional[str]
site_country: Optional[str]
site_country_code: Optional[str]
site_latitude: Optional[float]
site_longitude: Optional[float]
site_internal_id: Optional[int]
site_bgp_id: Optional[int]
site_tier: Optional[SiteTier]
class SiteBlockProvisioning(SiteBlockInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
site_name: Optional[str]
site_city: Optional[str]
site_country: Optional[str]
site_country_code: Optional[str]
site_latitude: Optional[float]
site_longitude: Optional[float]
site_internal_id: Optional[int]
site_bgp_id: Optional[int]
site_tier: Optional[SiteTier]
class SiteBlock(SiteBlockProvisioning,
lifecycle=[SubscriptionLifecycle.ACTIVE]):
site_name: str
site_city: str
site_country: str
site_country_code: str
site_latitude: float
site_longitude: float
site_internal_id: int
site_bgp_id: int
site_tier: SiteTier
\ No newline at end of file
...@@ -10,21 +10,14 @@ class DeviceType(strEnum): ...@@ -10,21 +10,14 @@ class DeviceType(strEnum):
switch = "switch" switch = "switch"
class DeviceVendor(strEnum):
Juniper = "Juniper"
Newvendor = "Newvendor"
class DeviceInactive(SubscriptionModel, is_base=True): class DeviceInactive(SubscriptionModel, is_base=True):
device_type: DeviceType device_type: DeviceType
device_vendor: DeviceVendor
device: DeviceBlockInactive device: DeviceBlockInactive
class DeviceProvisioning(DeviceInactive, class DeviceProvisioning(DeviceInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]): lifecycle=[SubscriptionLifecycle.PROVISIONING]):
device_type: DeviceType device_type: DeviceType
device_vendor: DeviceVendor
device: DeviceBlockProvisioning device: DeviceBlockProvisioning
......
from orchestrator.domain.base import SubscriptionModel
from orchestrator.types import SubscriptionLifecycle, strEnum
from gso.products.product_blocks.site \
import SiteBlock, SiteBlockInactive, SiteBlockProvisioning
class SiteInactive(SubscriptionModel, is_base=True):
site: SiteBlockInactive
class SiteProvisioning(SiteInactive,
lifecycle=[SubscriptionLifecycle.PROVISIONING]):
site: SiteBlockProvisioning
class Site(SiteProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
site: SiteBlock
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment