Changes
Page history
Auto-updated UML diagram via goplantuml CI job
authored
Jun 10, 2021
by
Manuel Kieweg
Show whitespace changes
Inline
Side-by-side
home.md
View page @
06eea8a9
```
plantuml
```
plantuml
@startuml
@startuml
namespace nucleus {
namespace nucleus {
class Change << (S,Aquamarine) >> {
- cuid uuid.UUID
- duid uuid.UUID
- timestamp time.Time
- previousState ygot.GoStruct
- intendedState ygot.GoStruct
- committed bool
- confirmed bool
- inconsistent bool
- callback <font color=blue>func</font>(ygot.GoStruct, ygot.GoStruct) error
- lock sync.RWMutex
- cancelFunc context.CancelFunc
- errChan <font color=blue>chan</font> error
- done <font color=blue>chan</font> int
- rollbackHandler(ctx context.Context)
+ ID() uuid.UUID
+ Commit() error
+ Confirm() error
+ Age() time.Duration
+ State() pnd.Change_State
}
class ChangeStore << (S,Aquamarine) >> {
+ Get(id uuid.UUID) (*Change, error)
}
class ClientConfig << (S,Aquamarine) >> {
class ClientConfig << (S,Aquamarine) >> {
+ Identifier string
+ Identifier string
+ Endpoint string
+ Endpoint string
...
@@ -10,85 +38,53 @@ namespace nucleus {
...
@@ -10,85 +38,53 @@ namespace nucleus {
+ GjsonConnectionsPath string
+ GjsonConnectionsPath string
}
}
class Core << (S,Aquamarine) >> {
class CommonDevice << (S,Aquamarine) >> {
- database database.Database
- sbi SouthboundInterface
- pndc pndStore
- transport Transport
- sbic sbiStore
- name string
- httpServer *http.Server
- stopChan <font color=blue>chan</font> os.Signal
}
class Device << (S,Aquamarine) >> {
+ UUID uuid.UUID
+ UUID uuid.UUID
+ SBI SouthboundInterface
+ Transport Transport
+ ID() uuid.UUID
}
class ErrAlreadyExists << (S,Aquamarine) >> {
- item <font color=blue>interface</font>{}
+ Error() string
}
class ErrInvalidParameters << (S,Aquamarine) >> {
- f <font color=blue>interface</font>{}
- r <font color=blue>interface</font>{}
+ Error() string
- isDevice()
}
+ ID() uuid.UUID
class ErrInvalidTransportOptions << (S,Aquamarine) >> {
+ Model() ygot.GoStruct
- t <font color=blue>interface</font>{}
+ Transport() Transport
+ Name() string
+ Error() string
+ SBI() SouthboundInterface
+ SetTransport(t Transport)
}
+ SetName(n string)
class ErrInvalidTypeAssertion << (S,Aquamarine) >> {
+ SetSBI(sbi SouthboundInterface)
- v <font color=blue>interface</font>{}
+ ProcessResponse(resp proto.Message) error
- t <font color=blue>interface</font>{}
+ Error() string
}
class ErrNil << (S,Aquamarine) >> {
+ Error() string
}
class ErrNilClient << (S,Aquamarine) >> {
+ Error() string
}
class ErrNotFound << (S,Aquamarine) >> {
- id <font color=blue>interface</font>{}
+ Error() string
}
class ErrNotYetImplemented << (S,Aquamarine) >> {
+ Error() string
}
}
class ErrOperationNotSupported << (S,Aquamarine) >>
{
interface Device
{
-
o <font color=blue>interface</font>{}
-
isDevice()
+ Error() string
+ ID() uuid.UUID
+ Model() ygot.GoStruct
+ Transport() Transport
+ Name() string
+ SBI() SouthboundInterface
+ ProcessResponse( proto.Message) error
}
}
class
ErrUnsupportedPath
<< (S,Aquamarine) >> {
class
DeviceStore
<< (S,Aquamarine) >> {
-
p <font color=blue>interface</font>{}
-
deviceNameToUUIDLookup <font color=blue>map</font>[string]uuid.UUID
+ Error() string
+ Get(id uuid.UUID, parseErrors ...error) (Device, error)
+ Add(item Storable, name string) error
+ Delete(id uuid.UUID) error
}
}
class Gnmi << (S,Aquamarine) >> {
class Gnmi << (S,Aquamarine) >> {
- client gnmi.GNMIClient
- client gnmi.GNMIClient
- config *gnmi.Config
+ SetNode <font color=blue>func</font>(*yang.Entry, <font color=blue>interface</font>{}, *gnmi.Path, <font color=blue>interface</font>{}, ...ytypes.SetNodeOpt) error
+ SetNode <font color=blue>func</font>(*yang.Entry, <font color=blue>interface</font>{}, *gnmi.Path, <font color=blue>interface</font>{}, ...ytypes.SetNodeOpt) error
+ RespChan <font color=blue>chan</font> *gnmi.SubscribeResponse
+ RespChan <font color=blue>chan</font> *gnmi.SubscribeResponse
+ Unmarshal <font color=blue>func</font>([]byte, []string, <font color=blue>interface</font>{}, ...ytypes.UnmarshalOpt) error
+ Unmarshal <font color=blue>func</font>([]byte, []string, <font color=blue>interface</font>{}, ...ytypes.UnmarshalOpt) error
+ Options *
Gnmi
TransportOption
s
+ Options *
transport.
TransportOption
- applyDiff(ctx context.Context, payload ...<font color=blue>interface</font>{}) error
- applyDiff(ctx context.Context, payload ...<font color=blue>interface</font>{}) error
- get(ctx context.Context, paths [][]string, origin string) (<font color=blue>interface</font>{}, error)
- get(ctx context.Context, paths [][]string, origin string) (<font color=blue>interface</font>{}, error)
...
@@ -96,8 +92,6 @@ namespace nucleus {
...
@@ -96,8 +92,6 @@ namespace nucleus {
- set(ctx context.Context, setOps []*gnmi.Operation, exts ...*gnmi_ext.Extension) (*gnmi.SetResponse, error)
- set(ctx context.Context, setOps []*gnmi.Operation, exts ...*gnmi_ext.Extension) (*gnmi.SetResponse, error)
- subscribe(ctx context.Context) error
- subscribe(ctx context.Context) error
+ SetOptions(to TransportOptions)
+ GetOptions() <font color=blue>interface</font>{}
+ Get(ctx context.Context, params ...string) (<font color=blue>interface</font>{}, error)
+ Get(ctx context.Context, params ...string) (<font color=blue>interface</font>{}, error)
+ Set(ctx context.Context, args ...<font color=blue>interface</font>{}) error
+ Set(ctx context.Context, args ...<font color=blue>interface</font>{}) error
+ Subscribe(ctx context.Context, params ...string) error
+ Subscribe(ctx context.Context, params ...string) error
...
@@ -105,17 +99,8 @@ namespace nucleus {
...
@@ -105,17 +99,8 @@ namespace nucleus {
+ ProcessResponse(resp <font color=blue>interface</font>{}, root <font color=blue>interface</font>{}, s *ytypes.Schema) error
+ ProcessResponse(resp <font color=blue>interface</font>{}, root <font color=blue>interface</font>{}, s *ytypes.Schema) error
+ Capabilities(ctx context.Context) (<font color=blue>interface</font>{}, error)
+ Capabilities(ctx context.Context) (<font color=blue>interface</font>{}, error)
+ Close() error
+ Close() error
+ SetPassthrough(ctx context.Context, req *gnmi.SetRequest) (*gnmi.SetResponse, error)
}
+ GetPassthrough(ctx context.Context, req *gnmi.GetRequest) (*gnmi.GetResponse, error)
class GnmiTransportOptions << (S,Aquamarine) >> {
+ SetNode <font color=blue>func</font>(*yang.Entry, <font color=blue>interface</font>{}, *gnmi.Path, <font color=blue>interface</font>{}, ...ytypes.SetNodeOpt) error
+ Unmarshal <font color=blue>func</font>([]byte, []string, <font color=blue>interface</font>{}, ...ytypes.UnmarshalOpt) error
+ RespChan <font color=blue>chan</font> *gnmi.SubscribeResponse
+ GetAddress() string
+ GetUsername() string
+ GetPassword() string
+ IsTransportOption()
}
}
class OpenConfig << (S,Aquamarine) >> {
class OpenConfig << (S,Aquamarine) >> {
...
@@ -127,27 +112,33 @@ namespace nucleus {
...
@@ -127,27 +112,33 @@ namespace nucleus {
+ SetNode() <font color=blue>func</font>(*yang.Entry, <font color=blue>interface</font>{}, *gnmi.Path, <font color=blue>interface</font>{}, ...ytypes.SetNodeOpt) error
+ SetNode() <font color=blue>func</font>(*yang.Entry, <font color=blue>interface</font>{}, *gnmi.Path, <font color=blue>interface</font>{}, ...ytypes.SetNodeOpt) error
+ Unmarshal() <font color=blue>func</font>([]byte, []string, <font color=blue>interface</font>{}, ...ytypes.UnmarshalOpt) error
+ Unmarshal() <font color=blue>func</font>([]byte, []string, <font color=blue>interface</font>{}, ...ytypes.UnmarshalOpt) error
+ ID() uuid.UUID
+ ID() uuid.UUID
+ Type() southbound.Type
}
class PndStore << (S,Aquamarine) >> {
+ Get(id uuid.UUID) (PrincipalNetworkDomain, error)
}
}
interface PrincipalNetworkDomain {
interface PrincipalNetworkDomain {
+ Destroy() error
+ Destroy() error
+ AddSbi( <font color=blue>interface</font>{}) error
+ AddSbi( <font color=blue>interface</font>{}) error
+ RemoveSbi( uuid.UUID) error
+ RemoveSbi( uuid.UUID) error
+ AddDevice(
<font color=blue>interface</font>{}
) error
+ AddDevice(
name string, opts *transport.TransportOption, sid uuid.UUID
) error
+ GetDevice(
uuid uuid.UUID) (ygot.GoStruct
, error)
+ GetDevice(
identifier string) (<font color=blue>interface</font>{}
, error)
+ RemoveDevice( uuid.UUID) error
+ RemoveDevice( uuid.UUID) error
+ Devices() []uuid.UUID
+ Devices() []uuid.UUID
+ ChangeOND(uuid uuid.UUID, operation
<font color=blue>interface</font>{}
, path string, value ...string) error
+ ChangeOND(uuid uuid.UUID, operation
pnd.ApiOperation
, path string, value ...string) error
+ Request( uuid.UUID, string) error
+ Request( uuid.UUID, string) error
+ RequestAll( string) error
+ RequestAll( string) error
+ GetName() string
+ GetName() string
+ GetDescription() string
+ GetDescription() string
+ MarshalDevice(
uuid.UUID
) (string, error)
+ MarshalDevice(
string
) (string, error)
+ ContainsDevice( uuid.UUID) bool
+ ContainsDevice( uuid.UUID) bool
+ GetSBIs() <font color=blue>interface</font>{}
+ GetSBIs() <font color=blue>interface</font>{}
+ ID() uuid.UUID
+ ID() uuid.UUID
+ Pending() []uuid.UUID
+ PendingChanges() []uuid.UUID
+ Committed() []uuid.UUID
+ CommittedChanges() []uuid.UUID
+ GetChange( uuid.UUID, ...int) (<font color=blue>interface</font>{}, error)
+ Commit( uuid.UUID) error
+ Commit( uuid.UUID) error
+ Confirm( uuid.UUID) error
+ Confirm( uuid.UUID) error
...
@@ -160,75 +151,71 @@ namespace nucleus {
...
@@ -160,75 +151,71 @@ namespace nucleus {
+ GetOptions() <font color=blue>interface</font>{}
+ GetOptions() <font color=blue>interface</font>{}
+ ProcessResponse(resp <font color=blue>interface</font>{}, root <font color=blue>interface</font>{}, models *ytypes.Schema) error
+ ProcessResponse(resp <font color=blue>interface</font>{}, root <font color=blue>interface</font>{}, models *ytypes.Schema) error
}
class SbiStore << (S,Aquamarine) >> {
+ Get(id uuid.UUID) (SouthboundInterface, error)
}
}
interface SouthboundInterface {
interface SouthboundInterface {
+ SbiIdentifier() string
+ SbiIdentifier() string
+ SetNode() <font color=blue>func</font>(*yang.Entry, <font color=blue>interface</font>{}, *gnmi.Path, <font color=blue>interface</font>{}, ...ytypes.SetNodeOpt) error
+ SetNode() <font color=blue>func</font>(*yang.Entry, <font color=blue>interface</font>{}, *gnmi.Path, <font color=blue>interface</font>{}, ...ytypes.SetNodeOpt) error
+ Schema() *ytypes.Schema
+ Schema() *ytypes.Schema
+ ID() uuid.UUID
+ ID() uuid.UUID
+ Type() southbound.Type
}
}
interface Storable {
interface Storable {
+ ID() uuid.UUID
+ ID() uuid.UUID
}
}
class Tapi << (S,Aquamarine) >> {
interface Store {
+ Exists(id uuid.UUID) bool
+ Add(item Storable) error
+ Get(id uuid.UUID) (Storable, error)
+ Delete(id uuid.UUID) error
+ UUIDs() []uuid.UUID
}
}
interface Transport {
interface Transport {
+ Get(ctx context.Context, params ...string) (<font color=blue>interface</font>{}, error)
+ Get(ctx context.Context, params ...string) (<font color=blue>interface</font>{}, error)
+ Set(ctx context.Context, params ...<font color=blue>interface</font>{}) error
+ Set(ctx context.Context, params ...<font color=blue>interface</font>{}) error
+ Subscribe(ctx context.Context, params ...string) error
+ Subscribe(ctx context.Context, params ...string) error
+ Type() string
+ Type() string
+ GetOptions() <font color=blue>interface</font>{}
+ ProcessResponse(resp <font color=blue>interface</font>{}, root <font color=blue>interface</font>{}, models *ytypes.Schema) error
+ ProcessResponse(resp <font color=blue>interface</font>{}, root <font color=blue>interface</font>{}, models *ytypes.Schema) error
}
}
interface TransportOptions {
class csbiDevice << (S,Aquamarine) >> {
+ GetAddress() string
- isDevice()
+ GetUsername() string
+ GetPassword() string
+ IsTransportOption()
}
+ ID() uuid.UUID
class YANGConsumer << (S,Aquamarine) >> {
+ Model() ygot.GoStruct
+ Data *bytes.Buffer
+ Transport() Transport
+ Name() string
+ Consume(reader io.Reader, _ <font color=blue>interface</font>{}) error
+ SBI() SouthboundInterface
+ ProcessResponse(resp proto.Message) error
}
class changeStore << (S,Aquamarine) >> {
- get(id uuid.UUID) (*pnd.Change, error)
}
class deviceStore << (S,Aquamarine) >> {
- get(id uuid.UUID) (*Device, error)
}
class nucleus.CtxKeyType << (T, #FF7700) >> {
}
class nucleus.Operation << (T, #FF7700) >> {
}
}
class nucleus.store << (T, #FF7700) >> {
class nucleus.store << (T, #FF7700) >> {
}
}
class pndImplementation << (S,Aquamarine) >> {
class pndImplementation << (S,Aquamarine) >> {
- name string
- name string
- description string
- description string
- sbic
s
biStore
- sbic
S
biStore
- devices
d
eviceStore
- devices
*D
eviceStore
- pendingChanges
c
hangeStore
- pendingChanges
C
hangeStore
- committedChanges
c
hangeStore
- committedChanges
C
hangeStore
- confirmedChanges
c
hangeStore
- confirmedChanges
C
hangeStore
- id uuid.UUID
- id uuid.UUID
- errChans <font color=blue>map</font>[uuid.UUID]<font color=blue>chan</font> error
- errChans <font color=blue>map</font>[uuid.UUID]<font color=blue>chan</font> error
- addSbi(sbi SouthboundInterface) error
- addSbi(sbi SouthboundInterface) error
- removeSbi(id uuid.UUID) error
- removeSbi(id uuid.UUID) error
- addDevice(device *Device) error
- addDevice(device Device) error
- getDevice(id uuid.UUID) (*Device, error)
- removeDevice(id uuid.UUID) error
- removeDevice(id uuid.UUID) error
+ Pending() []uuid.UUID
+ PendingChanges() []uuid.UUID
+ Committed() []uuid.UUID
+ CommittedChanges() []uuid.UUID
+ GetChange(cuid uuid.UUID, i ...int) (<font color=blue>interface</font>{}, error)
+ Commit(u uuid.UUID) error
+ Commit(u uuid.UUID) error
+ Confirm(u uuid.UUID) error
+ Confirm(u uuid.UUID) error
+ ID() uuid.UUID
+ ID() uuid.UUID
...
@@ -240,29 +227,20 @@ namespace nucleus {
...
@@ -240,29 +227,20 @@ namespace nucleus {
+ Destroy() error
+ Destroy() error
+ AddSbi(sbi <font color=blue>interface</font>{}) error
+ AddSbi(sbi <font color=blue>interface</font>{}) error
+ RemoveSbi(id uuid.UUID) error
+ RemoveSbi(id uuid.UUID) error
+ AddDevice(
device <font color=blue>interface</font>{}
) error
+ AddDevice(
name string, opt *transport.TransportOption, sid uuid.UUID
) error
+ GetDevice(
uuid uuid.UUID) (ygot.GoStruct
, error)
+ GetDevice(
identifier string) (<font color=blue>interface</font>{}
, error)
+ RemoveDevice(uuid uuid.UUID) error
+ RemoveDevice(uuid uuid.UUID) error
+ MarshalDevice(
uuid uuid.UUID
) (string, error)
+ MarshalDevice(
identifier string
) (string, error)
+ Request(uuid uuid.UUID, path string) error
+ Request(uuid uuid.UUID, path string) error
+ RequestAll(path string) error
+ RequestAll(path string) error
+ ChangeOND(uuid uuid.UUID, operation <font color=blue>interface</font>{}, path string, value ...string) error
+ ChangeOND(uuid uuid.UUID, operation pnd.ApiOperation, path string, value ...string) error
}
class pndStore << (S,Aquamarine) >> {
- get(id uuid.UUID) (PrincipalNetworkDomain, error)
}
class sbiStore << (S,Aquamarine) >> {
- get(id uuid.UUID) (SouthboundInterface, error)
}
}
class store << (S,Aquamarine) >> {
class store << (S,Aquamarine) >> {
- exists(id uuid.UUID) bool
+ Exists(id uuid.UUID) bool
- add(item Storable) error
+ Add(item Storable) error
- get(id uuid.UUID) (Storable, error)
+ Get(id uuid.UUID) (Storable, error)
- delete(id uuid.UUID) error
+ Delete(id uuid.UUID) error
+ UUIDs() []uuid.UUID
+ UUIDs() []uuid.UUID
}
}
...
@@ -270,24 +248,26 @@ namespace nucleus {
...
@@ -270,24 +248,26 @@ namespace nucleus {
'This class was created so that we can correctly have an alias pointing to this name. Since it contains dots that can break namespaces
'This class was created so that we can correctly have an alias pointing to this name. Since it contains dots that can break namespaces
}
}
}
}
"ygot.GoStruct" *-- "nucleus.Device"
"nucleus.store" *-- "nucleus.ChangeStore"
"gnmi.Config" *-- "nucleus.GnmiTransportOptions"
"ygot.GoStruct" *-- "nucleus.CommonDevice"
"nucleus.store" *-- "nucleus.changeStore"
"nucleus.store" *-- "nucleus.DeviceStore"
"nucleus.store" *-- "nucleus.deviceStore"
"nucleus.store" *-- "nucleus.PndStore"
"nucleus.store" *-- "nucleus.pndStore"
"nucleus.store" *-- "nucleus.SbiStore"
"nucleus.store" *-- "nucleus.sbiStore"
"nucleus.CommonDevice" *-- "nucleus.csbiDevice"
"nucleus.Storable" <|-- "nucleus.Device"
"nucleus.Storable" <|-- "nucleus.Change"
"nucleus.Device" <|-- "nucleus.CommonDevice"
"nucleus.Storable" <|-- "nucleus.CommonDevice"
"nucleus.Transport" <|-- "nucleus.Gnmi"
"nucleus.Transport" <|-- "nucleus.Gnmi"
"nucleus.TransportOptions" <|-- "nucleus.GnmiTransportOptions"
"nucleus.SouthboundInterface" <|-- "nucleus.OpenConfig"
"nucleus.SouthboundInterface" <|-- "nucleus.OpenConfig"
"nucleus.Storable" <|-- "nucleus.OpenConfig"
"nucleus.Storable" <|-- "nucleus.OpenConfig"
"nucleus.Transport" <|-- "nucleus.Restconf"
"nucleus.Transport" <|-- "nucleus.Restconf"
"nucleus.Device" <|-- "nucleus.csbiDevice"
"nucleus.Storable" <|-- "nucleus.csbiDevice"
"nucleus.PrincipalNetworkDomain" <|-- "nucleus.pndImplementation"
"nucleus.PrincipalNetworkDomain" <|-- "nucleus.pndImplementation"
"nucleus.Storable" <|-- "nucleus.pndImplementation"
"nucleus.Storable" <|-- "nucleus.pndImplementation"
"nucleus.Store" <|-- "nucleus.store"
"__builtin__.int" #.. "nucleus.Operation"
"__builtin__.string" #.. "nucleus.CtxKeyType"
"nucleus.fontcolorbluemapfontuuidUUIDStorable" #.. "nucleus.store"
"nucleus.fontcolorbluemapfontuuidUUIDStorable" #.. "nucleus.store"
@enduml
@enduml
```
```