Update Bird's View authored by Manuel Max Kieweg's avatar Manuel Max Kieweg
...@@ -2,48 +2,19 @@ ...@@ -2,48 +2,19 @@
@startuml gosdn @startuml gosdn
namespace arista { namespace arista {
class SBI << (S,Aquamarine) >> { class SBI << (S,Aquamarine) >> {
- transport interfaces.Transport - transport nucleus.Transport
} }
} }
namespace ciena { namespace ciena {
class SBI << (S,Aquamarine) >> { class SBI << (S,Aquamarine) >> {
- transport interfaces.Transport - transport nucleus.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>{}
} }
} }
namespace nucleus { namespace nucleus {
class Core << (S,Aquamarine) >> { 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 - database database.Database
- config controllerConfig - config controllerConfig
...@@ -59,8 +30,8 @@ namespace nucleus { ...@@ -59,8 +30,8 @@ namespace nucleus {
} }
class Device { class Device {
- device ygot.Device - device ygot.Device
- Sbi interfaces.SouthboundInterface - Sbi nucleus.SouthboundInterface
- Config interfaces.DeviceConfig - Config nucleus.DeviceConfig
} }
class controllerConfig << (S,Aquamarine) >> { class controllerConfig << (S,Aquamarine) >> {
...@@ -74,7 +45,7 @@ namespace nucleus { ...@@ -74,7 +45,7 @@ namespace nucleus {
} }
class pndImplementation << (S,Aquamarine) >> { class pndImplementation << (S,Aquamarine) >> {
- name string - name string
- sbiContainer []interfaces.SouthboundInterface - sbiContainer []nucleus.SouthboundInterface
+ Destroy() error + Destroy() error
+ AddSbi() error + AddSbi() error
...@@ -108,7 +79,7 @@ namespace nucleus { ...@@ -108,7 +79,7 @@ namespace nucleus {
} }
class tapi << (S,Aquamarine) >> { class tapi << (S,Aquamarine) >> {
- transport interfaces.Transport - transport nucleus.Transport
+ GetConnections(Device) ([]byte, error) + GetConnections(Device) ([]byte, error)
+ GetLinks(Device) ([]byte, error) + GetLinks(Device) ([]byte, error)
...@@ -116,19 +87,51 @@ namespace nucleus { ...@@ -116,19 +87,51 @@ namespace nucleus {
+ GetNodeEdgePoints(Device) ([]byte, error) + GetNodeEdgePoints(Device) ([]byte, error)
} }
class openconfig << (S,Aquamarine) >> { 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" "nucleus.PrincipalNetworkDomain" <|-- "nucleus.pndImplementation"
"interfaces.PrincipalNetworkDomain" <|-- "interfaces.Transport" "nucleus.PrincipalNetworkDomain" "1" *-- "many" "nucleus.Device"
"interfaces.Transport" <|-- "nucleus.gnmi" "nucleus.Transport" <|-- "nucleus.gnmi"
"interfaces.Transport" <|-- "nucleus.restconf" "nucleus.Transport" <|-- "nucleus.restconf"
"interfaces.SouthboundInterface" <|-- "nucleus.tapi" "nucleus.SouthboundInterface" <|-- "nucleus.Transport"
"interfaces.SouthboundInterface" <|-- "nucleus.openconfig" "nucleus.SouthboundInterface" <|-- "nucleus.tapi"
"interfaces.SouthboundInterface" <|-- "arista.SBI" "nucleus.SouthboundInterface" <|-- "nucleus.openconfig"
"interfaces.SouthboundInterface" <|-- "ciena.SBI" "nucleus.SouthboundInterface" <|-- "arista.SBI"
"nucleus.SouthboundInterface" <|-- "ciena.SBI"
"nucleus.Core" <|-- "nucleus.controllerConfig" "nucleus.Core" <|-- "nucleus.controllerConfig"
"nucleus.Core" <|-- "nucleus.Database" "nucleus.Core" <|-- "nucleus.Database"
"nucleus.Core" "1" *-- "many" "nucleus.PrincipalNetworkDomain"
"nucleus.Core" <|-- "nucleus.Database"
"nucleus.Core" <|-- "nucleus.Database"
"nucleus.Core" <|-- "nucleus.Database"
@enduml @enduml
``` ```
\ No newline at end of file