Update Bird's View authored by Manuel Max Kieweg's avatar Manuel Max Kieweg
......@@ -2,48 +2,19 @@
@startuml gosdn
namespace arista {
class SBI << (S,Aquamarine) >> {
- transport interfaces.Transport
- transport nucleus.Transport
}
}
namespace ciena {
class SBI << (S,Aquamarine) >> {
- transport interfaces.Transport
}
}
namespace interfaces {
class DeviceConfig << (S,Aquamarine) >> {
+ Identifier uuid
+ Endpoint string
+ Username string
+ Password string
}
interface PrincipalNetworkDomain {
+ Destroy() error
+ AddSbi() error
+ RemoveSbi() error
+ AddDevice() error
+ RemoveDevice() error
}
interface SouthboundInterface {
+ AddClient() error
+ RemoveClient() error
+ CollectHeartbeats() error
+ ListClients() <font color=blue>map</font>[int]Client
}
interface Transport {
+ SetConfig( <font color=blue>interface</font>{}) error
+ GetConfig() <font color=blue>interface</font>{}
- transport nucleus.Transport
}
}
namespace nucleus {
class Core << (S,Aquamarine) >> {
- clients <font color=blue>map</font>[string]interfaces.Client
- clients <font color=blue>map</font>[string]nucleus.Client
- database database.Database
- config controllerConfig
......@@ -59,8 +30,8 @@ namespace nucleus {
}
class Device {
- device ygot.Device
- Sbi interfaces.SouthboundInterface
- Config interfaces.DeviceConfig
- Sbi nucleus.SouthboundInterface
- Config nucleus.DeviceConfig
}
class controllerConfig << (S,Aquamarine) >> {
......@@ -74,7 +45,7 @@ namespace nucleus {
}
class pndImplementation << (S,Aquamarine) >> {
- name string
- sbiContainer []interfaces.SouthboundInterface
- sbiContainer []nucleus.SouthboundInterface
+ Destroy() error
+ AddSbi() error
......@@ -108,7 +79,7 @@ namespace nucleus {
}
class tapi << (S,Aquamarine) >> {
- transport interfaces.Transport
- transport nucleus.Transport
+ GetConnections(Device) ([]byte, error)
+ GetLinks(Device) ([]byte, error)
......@@ -116,19 +87,51 @@ namespace nucleus {
+ GetNodeEdgePoints(Device) ([]byte, error)
}
class openconfig << (S,Aquamarine) >> {
- transport interfaces.Transport
- transport nucleus.Transport
}
class DeviceConfig << (S,Aquamarine) >> {
+ Identifier uuid
+ Endpoint string
+ Username string
+ Password string
}
interface PrincipalNetworkDomain {
+ Destroy() error
+ AddSbi() error
+ RemoveSbi() error
+ AddDevice() error
+ RemoveDevice() error
}
interface SouthboundInterface {
+ AddClient() error
+ RemoveClient() error
+ CollectHeartbeats() error
+ ListClients() <font color=blue>map</font>[int]Client
}
interface Transport {
+ SetConfig( <font color=blue>interface</font>{}) error
+ GetConfig() <font color=blue>interface</font>{}
}
}
"interfaces.PrincipalNetworkDomain" <|-- "nucleus.pndImplementation"
"interfaces.PrincipalNetworkDomain" <|-- "interfaces.Transport"
"interfaces.Transport" <|-- "nucleus.gnmi"
"interfaces.Transport" <|-- "nucleus.restconf"
"interfaces.SouthboundInterface" <|-- "nucleus.tapi"
"interfaces.SouthboundInterface" <|-- "nucleus.openconfig"
"interfaces.SouthboundInterface" <|-- "arista.SBI"
"interfaces.SouthboundInterface" <|-- "ciena.SBI"
"nucleus.PrincipalNetworkDomain" <|-- "nucleus.pndImplementation"
"nucleus.PrincipalNetworkDomain" "1" *-- "many" "nucleus.Device"
"nucleus.Transport" <|-- "nucleus.gnmi"
"nucleus.Transport" <|-- "nucleus.restconf"
"nucleus.SouthboundInterface" <|-- "nucleus.Transport"
"nucleus.SouthboundInterface" <|-- "nucleus.tapi"
"nucleus.SouthboundInterface" <|-- "nucleus.openconfig"
"nucleus.SouthboundInterface" <|-- "arista.SBI"
"nucleus.SouthboundInterface" <|-- "ciena.SBI"
"nucleus.Core" <|-- "nucleus.controllerConfig"
"nucleus.Core" <|-- "nucleus.Database"
"nucleus.Core" "1" *-- "many" "nucleus.PrincipalNetworkDomain"
"nucleus.Core" <|-- "nucleus.Database"
"nucleus.Core" <|-- "nucleus.Database"
"nucleus.Core" <|-- "nucleus.Database"
@enduml
```
\ No newline at end of file