Auto-updated UML diagram via goplantuml CI job authored by Malte Bauch's avatar Malte Bauch
```plantuml ```plantuml
@startuml gosdn @startuml
namespace arista {
class SBI << (S,Aquamarine) >> {
- transport nucleus.Transport
}
}
namespace ciena {
class SBI << (S,Aquamarine) >> {
- transport nucleus.Transport
}
}
namespace nucleus {
class Core << (S,Aquamarine) >> {
- clients <font color=blue>map</font>[string]nucleus.Client
- database database.Database
- config controllerConfig
+ IsRunning <font color=blue>chan</font> bool
- readControllerConfig(configFileController string) error
+ Init(socket string, configFileController string, configFileClient string, IsRunningChannel <font color=blue>chan</font> bool)
+ AttachDatabase()
+ Shutdown()
}
class Device {
- device ygot.Device
- Sbi nucleus.SouthboundInterface
- Config nucleus.DeviceConfig
}
class controllerConfig << (S,Aquamarine) >> {
+ CliSocket string
+ DatabaseSocket string
+ DatabaseUser string
+ DatabasePassword string
+ DatabaseCrypto bool
+ ConfigPath string
}
class pndImplementation << (S,Aquamarine) >> {
- name string
- sbiContainer map[string]nucleus.SouthboundInterface
- devices map[uuid]Device
}
class Database << (S,Aquamarine) >> {
- driver neo4j.Driver
+ StorePND(pnd *PND) neo4j.Node
+ RemovePND(id string)
+ GetPNDByID(id string)
+ GetNodesByLabel(label string)
+ GetNodeByID(id string)
+ StoreNodes(json string) []neo4j.Node
+ RemoveNodes(json string)
+ RemoveSingleNode(id string)
+ StoreLinks(json string) []neo4j.Relationship
+ StoreNodeEdgePoints(json string)
+ StoreConnections(json string)
+ Shutdown() error
}
class gnmi << (S,Aquamarine) >> {
}
class restconf << (S,Aquamarine) >> {
}
class tapi << (S,Aquamarine) >> {
- transport nucleus.Transport
+ GetConnections(Device) ([]byte, error)
+ GetLinks(Device) ([]byte, error)
+ GetNodes(Device) ([]byte, error)
+ GetNodeEdgePoints(Device) ([]byte, error)
}
class openconfig << (S,Aquamarine) >> {
- 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>{}
}
}
"nucleus.PrincipalNetworkDomain" <|-- "nucleus.pndImplementation"
"nucleus.PrincipalNetworkDomain" "1" *-- "many" "nucleus.Device"
"nucleus.PrincipalNetworkDomain" "1" *-- "many" "nucleus.SouthboundInterface"
"nucleus.Transport" <|-- "nucleus.gnmi"
"nucleus.Transport" <|-- "nucleus.restconf"
"nucleus.Device" <|-- "nucleus.DeviceConfig"
"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"
@enduml @enduml
``` ```
\ No newline at end of file