Changes
Page history
Update Bird's View
authored
Dec 01, 2020
by
Manuel Kieweg
Show whitespace changes
Inline
Side-by-side
Bird's-View.md
View page @
8825eb6d
```
plantuml
```
plantuml
@startuml
@startuml
gosdn
namespace arista {
namespace arista {
class
Client
<< (S,Aquamarine) >> {
class
SBI
<< (S,Aquamarine) >> {
- transport interfaces.Transport
- transport interfaces.Transport
+ GetConfig() interfaces.ClientConfig
+ ListPorts() <font color=blue>map</font>[int]interfaces.Port
+ PushReceiver() error
}
}
}
}
"interfaces.Client" <|-- "arista.Client"
namespace ciena {
namespace ciena {
class MCPClient << (S,Aquamarine) >> {
class SBI << (S,Aquamarine) >> {
- transport *client.Runtime
- transport interfaces.Transport
- client *client.ServiceTopologyTAPI
- database *database.Database
- buffer *bytes.Buffer
- config *interfaces.ClientConfig
+ GetConfig() interfaces.ClientConfig
+ ListPorts() <font color=blue>map</font>[int]interfaces.Port
+ PushReceiver() error
+ GetConnections() error
+ GetLinks() error
+ GetNodes() error
+ GetNodeEdgePoints() error
}
}
"interfaces.Client" <|-- "ciena.MCPClient"
namespace database {
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 PND << (S,Aquamarine) >> {
- name string
- description string
- interfaces []string
}
}
}
}
namespace interfaces {
namespace interfaces {
interface Client {
class DeviceConfig << (S,Aquamarine) >> {
+ GetConfig() ClientConfig
+ Identifier uuid
+ ListPorts() <font color=blue>map</font>[int]Port
+ PushReceiver() error
}
class ClientConfig << (S,Aquamarine) >> {
+ Identifier string
+ Endpoint string
+ Endpoint string
+ Username string
+ Username string
+ Password string
+ Password string
}
interface Port {
}
}
interface PrincipalNetworkDomain {
interface PrincipalNetworkDomain {
+ Destroy() error
+ Destroy() error
+ AddSbi() error
+ AddSbi() error
+ RemoveSbi() error
+ RemoveSbi() error
+ AddDevice() error
+ RemoveDevice() error
}
}
interface SouthboundInterface {
interface SouthboundInterface {
...
@@ -112,18 +57,12 @@ namespace nucleus {
...
@@ -112,18 +57,12 @@ namespace nucleus {
+ Shutdown()
+ Shutdown()
}
}
interface SBIGreeter {
class Device {
+ SBIHello()
- device ygot.Device
- Sbi interfaces.SouthboundInterface
- Config interfaces.DeviceConfig
}
}
class buf << (S,Aquamarine) >> {
+ Write(p []byte) (int, error)
}
class clientConfigs << (S,Aquamarine) >> {
+ Client []interfaces.ClientConfig
}
class controllerConfig << (S,Aquamarine) >> {
class controllerConfig << (S,Aquamarine) >> {
+ CliSocket string
+ CliSocket string
+ DatabaseSocket string
+ DatabaseSocket string
...
@@ -132,15 +71,6 @@ namespace nucleus {
...
@@ -132,15 +71,6 @@ namespace nucleus {
+ DatabaseCrypto bool
+ DatabaseCrypto bool
+ ConfigPath string
+ ConfigPath string
}
class logConnection << (S,Aquamarine) >> {
- stream proto.GrpcCli_CreateLogStreamServer
- id string
- active bool
- error <font color=blue>chan</font> error
}
class nucleus.buf << (T, #FF7700) >> {
}
}
class pndImplementation << (S,Aquamarine) >> {
class pndImplementation << (S,Aquamarine) >> {
- name string
- name string
...
@@ -151,37 +81,54 @@ namespace nucleus {
...
@@ -151,37 +81,54 @@ namespace nucleus {
+ RemoveSbi() error
+ RemoveSbi() error
}
}
class server << (S,Aquamarine) >> {
- core *Core
- logConnections []*logConnection
+ SayHello(ctx "context.Context, in *proto.HelloRequest) (*proto.HelloReply, error)
class Database << (S,Aquamarine) >> {
+ CreateLogStream(req *emptypb.Empty, stream proto.GrpcCli_CreateLogStreamServer) error
- driver neo4j.Driver
+ BroadcastLog(log *proto.LogReply)
+ Shutdown(ctx "context.Context, in *proto.ShutdownRequest) (*proto.ShutdownReply, error)
+ StorePND(pnd *PND) neo4j.Node
+ TAPIGetEdge(ctx "context.Context, in *proto.TAPIRequest) (*proto.TAPIReply, error)
+ RemovePND(id string)
+ TAPIGetEdgeNode(ctx "context.Context, in *proto.TAPIRequest) (*proto.TAPIReply, error)
+ GetPNDByID(id string)
+ TAPIGetLink(ctx "context.Context, in *proto.TAPIRequest) (*proto.TAPIReply, error)
+ 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
}
}
}
"interfaces.PrincipalNetworkDomain" <|-- "nucleus.pndImplementation"
class gnmi << (S,Aquamarine) >> {
namespace restconf {
}
class southboundInterface << (S,Aquamarine) >> {
- name string
- clientContainer []interfaces.Client
+ AddClient() error
class restconf << (S,Aquamarine) >> {
+ RemoveClient() error
+ CollectHeartbeats() error
}
+ ListClients() <font color=blue>map</font>[int]interfaces.Client
class tapi << (S,Aquamarine) >> {
- transport interfaces.Transport
+ GetConnections(Device) ([]byte, error)
+ GetLinks(Device) ([]byte, error)
+ GetNodes(Device) ([]byte, error)
+ GetNodeEdgePoints(Device) ([]byte, error)
}
class openconfig << (S,Aquamarine) >> {
- transport interfaces.Transport
}
}
}
}
"interfaces.SouthboundInterface" <|-- "restconf.southboundInterface"
"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.Core" <|-- "nucleus.controllerConfig"
"nucleus.Core" <|-- "nucleus.Database"
@enduml
@enduml
```
```
\ No newline at end of file