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
from gso.products.product_types.device import Device
from gso.products.product_types.iptrunk import Iptrunk
from gso.products.product_types.site import Site
SUBSCRIPTION_MODEL_REGISTRY.update(
{
"Site": Site,
"Router": Device,
"Switch": Device,
"Iptrunk": Iptrunk,
......
......@@ -2,62 +2,62 @@ from typing import Optional
from orchestrator.domain.base import ProductBlockModel
from orchestrator.types import SubscriptionLifecycle
from gso.products.product_blocks.site \
import SiteBlock, SiteBlockInactive, SiteBlockProvisioning
import ipaddress
class DeviceVendor(strEnum):
juniper = "juniper"
nokia = "nokia"
class DeviceRole(strEnum):
p = "p"
pe = "pe"
amt = "amt"
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
device_fqdn: Optional[str] = None
device_ts_address: Optional[str] = None
device_ts_port: Optional[int] = None
device_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None
device_lo_ipv6_address: Optional[ipaddress.IPv6Address] = None
device_lo_iso_address: Optional[str] = None
device_si_ipv4_network: Optional[ipaddress.IPv4Network] = None
device_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None
device_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None
device_vendor: Optional[DeviceVendor] = None
device_role: Optional[DeviceRole] = None
device_site: Optional[SiteBlockInactive]
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
device_fqdn: str
device_ts_address: str
device_ts_port: str
device_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None
device_lo_ipv6_address: Optional[ipaddress.IPv6Address] = None
device_lo_iso_address: Optional[str] = None
device_si_ipv4_network: Optional[ipaddress.IPv4Network] = None
device_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None
device_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None
device_vendor: Optional[DeviceVendor] = None
device_role: Optional[DeviceRole] = None
device_site: Optional[SiteBlockProvisioning]
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
device_fqdn: str
device_ts_address: str
device_ts_port: str
device_lo_ipv4_address: ipaddress.IPv4Address
device_lo_ipv6_address: ipaddress.IPv6Address
device_lo_iso_address: str
device_si_ipv4_network: ipaddress.IPv4Network
device_ias_lt_ipv4_network: ipaddress.IPv4Network
device_ias_lt_ipv6_network: ipaddress.IPv6Network
device_vendor: DeviceVendor
device_role: DeviceRole
device_site: SiteBlock
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):
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
......
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.
Finish editing this message first!
Please register or to comment