Changes
Page history
Auto-updated UML diagram via goplantuml CI job
authored
Jun 10, 2021
by
Manuel Kieweg
Hide whitespace changes
Inline
Side-by-side
home.md
View page @
06eea8a9
```
plantuml
@startuml
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) >> {
+ Identifier string
+ Endpoint string
...
...
@@ -10,85 +38,53 @@ namespace nucleus {
+ GjsonConnectionsPath string
}
class Core << (S,Aquamarine) >> {
- database database.Database
- pndc pndStore
- sbic sbiStore
- httpServer *http.Server
- stopChan <font color=blue>chan</font> os.Signal
class CommonDevice << (S,Aquamarine) >> {
- sbi SouthboundInterface
- transport Transport
- name string
}
class Device << (S,Aquamarine) >> {
+ 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()
}
class ErrInvalidTransportOptions << (S,Aquamarine) >> {
- t <font color=blue>interface</font>{}
+ Error() string
}
class ErrInvalidTypeAssertion << (S,Aquamarine) >> {
- v <font color=blue>interface</font>{}
- 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
+ ID() uuid.UUID
+ Model() ygot.GoStruct
+ Transport() Transport
+ Name() string
+ SBI() SouthboundInterface
+ SetTransport(t Transport)
+ SetName(n string)
+ SetSBI(sbi SouthboundInterface)
+ ProcessResponse(resp proto.Message) error
}
class ErrOperationNotSupported << (S,Aquamarine) >>
{
-
o <font color=blue>interface</font>{}
interface Device
{
-
isDevice()
+ Error() string
+ ID() uuid.UUID
+ Model() ygot.GoStruct
+ Transport() Transport
+ Name() string
+ SBI() SouthboundInterface
+ ProcessResponse( proto.Message) error
}
class
ErrUnsupportedPath
<< (S,Aquamarine) >> {
-
p <font color=blue>interface</font>{}
class
DeviceStore
<< (S,Aquamarine) >> {
-
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) >> {
- 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
+ RespChan <font color=blue>chan</font> *gnmi.SubscribeResponse
+ 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
- get(ctx context.Context, paths [][]string, origin string) (<font color=blue>interface</font>{}, error)
...
...
@@ -96,8 +92,6 @@ namespace nucleus {
- set(ctx context.Context, setOps []*gnmi.Operation, exts ...*gnmi_ext.Extension) (*gnmi.SetResponse, 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)
+ Set(ctx context.Context, args ...<font color=blue>interface</font>{}) error
+ Subscribe(ctx context.Context, params ...string) error
...
...
@@ -105,17 +99,8 @@ namespace nucleus {
+ 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)
+ Close() 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()
+ SetPassthrough(ctx context.Context, req *gnmi.SetRequest) (*gnmi.SetResponse, error)
+ GetPassthrough(ctx context.Context, req *gnmi.GetRequest) (*gnmi.GetResponse, error)
}
class OpenConfig << (S,Aquamarine) >> {
...
...
@@ -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
+ Unmarshal() <font color=blue>func</font>([]byte, []string, <font color=blue>interface</font>{}, ...ytypes.UnmarshalOpt) error
+ ID() uuid.UUID
+ Type() southbound.Type
}
class PndStore << (S,Aquamarine) >> {
+ Get(id uuid.UUID) (PrincipalNetworkDomain, error)
}
interface PrincipalNetworkDomain {
+ Destroy() error
+ AddSbi( <font color=blue>interface</font>{}) error
+ RemoveSbi( uuid.UUID) error
+ AddDevice(
<font color=blue>interface</font>{}
) error
+ GetDevice(
uuid uuid.UUID) (ygot.GoStruct
, error)
+ AddDevice(
name string, opts *transport.TransportOption, sid uuid.UUID
) error
+ GetDevice(
identifier string) (<font color=blue>interface</font>{}
, error)
+ RemoveDevice( uuid.UUID) error
+ 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
+ RequestAll( string) error
+ GetName() string
+ GetDescription() string
+ MarshalDevice(
uuid.UUID
) (string, error)
+ MarshalDevice(
string
) (string, error)
+ ContainsDevice( uuid.UUID) bool
+ GetSBIs() <font color=blue>interface</font>{}
+ ID() uuid.UUID
+ Pending() []uuid.UUID
+ Committed() []uuid.UUID
+ PendingChanges() []uuid.UUID
+ CommittedChanges() []uuid.UUID
+ GetChange( uuid.UUID, ...int) (<font color=blue>interface</font>{}, error)
+ Commit( uuid.UUID) error
+ Confirm( uuid.UUID) error
...
...
@@ -160,75 +151,71 @@ namespace nucleus {
+ GetOptions() <font color=blue>interface</font>{}
+ 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 {
+ 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
+ Schema() *ytypes.Schema
+ ID() uuid.UUID
+ Type() southbound.Type
}
interface Storable {
+ 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 {
+ Get(ctx context.Context, params ...string) (<font color=blue>interface</font>{}, error)
+ Set(ctx context.Context, params ...<font color=blue>interface</font>{}) error
+ Subscribe(ctx context.Context, params ...string) error
+ 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
}
interface TransportOptions {
+ GetAddress() string
+ GetUsername() string
+ GetPassword() string
+ IsTransportOption()
class csbiDevice << (S,Aquamarine) >> {
- isDevice()
}
class YANGConsumer << (S,Aquamarine) >> {
+ Data *bytes.Buffer
+ Consume(reader io.Reader, _ <font color=blue>interface</font>{}) error
}
class changeStore << (S,Aquamarine) >> {
- get(id uuid.UUID) (*pnd.Change, error)
}
class deviceStore << (S,Aquamarine) >> {
- get(id uuid.UUID) (*Device, error)
+ ID() uuid.UUID
+ Model() ygot.GoStruct
+ Transport() Transport
+ Name() string
+ SBI() SouthboundInterface
+ ProcessResponse(resp proto.Message) error
}
class nucleus.CtxKeyType << (T, #FF7700) >> {
}
class nucleus.Operation << (T, #FF7700) >> {
}
class nucleus.store << (T, #FF7700) >> {
}
class pndImplementation << (S,Aquamarine) >> {
- name string
- description string
- sbic
s
biStore
- devices
d
eviceStore
- pendingChanges
c
hangeStore
- committedChanges
c
hangeStore
- confirmedChanges
c
hangeStore
- sbic
S
biStore
- devices
*D
eviceStore
- pendingChanges
C
hangeStore
- committedChanges
C
hangeStore
- confirmedChanges
C
hangeStore
- id uuid.UUID
- errChans <font color=blue>map</font>[uuid.UUID]<font color=blue>chan</font> error
- addSbi(sbi SouthboundInterface) error
- removeSbi(id uuid.UUID) error
- addDevice(device *Device) error
- getDevice(id uuid.UUID) (*Device, error)
- addDevice(device Device) error
- removeDevice(id uuid.UUID) error
+ Pending() []uuid.UUID
+ Committed() []uuid.UUID
+ PendingChanges() []uuid.UUID
+ CommittedChanges() []uuid.UUID
+ GetChange(cuid uuid.UUID, i ...int) (<font color=blue>interface</font>{}, error)
+ Commit(u uuid.UUID) error
+ Confirm(u uuid.UUID) error
+ ID() uuid.UUID
...
...
@@ -240,29 +227,20 @@ namespace nucleus {
+ Destroy() error
+ AddSbi(sbi <font color=blue>interface</font>{}) error
+ RemoveSbi(id uuid.UUID) error
+ AddDevice(
device <font color=blue>interface</font>{}
) error
+ GetDevice(
uuid uuid.UUID) (ygot.GoStruct
, error)
+ AddDevice(
name string, opt *transport.TransportOption, sid uuid.UUID
) error
+ GetDevice(
identifier string) (<font color=blue>interface</font>{}
, error)
+ RemoveDevice(uuid uuid.UUID) error
+ MarshalDevice(
uuid uuid.UUID
) (string, error)
+ MarshalDevice(
identifier string
) (string, error)
+ Request(uuid uuid.UUID, path string) error
+ RequestAll(path string) error
+ ChangeOND(uuid uuid.UUID, operation <font color=blue>interface</font>{}, 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)
+ ChangeOND(uuid uuid.UUID, operation pnd.ApiOperation, path string, value ...string) error
}
class store << (S,Aquamarine) >> {
- exists(id uuid.UUID) bool
- add(item Storable) error
- get(id uuid.UUID) (Storable, error)
- delete(id uuid.UUID) error
+ Exists(id uuid.UUID) bool
+ Add(item Storable) error
+ Get(id uuid.UUID) (Storable, error)
+ Delete(id uuid.UUID) error
+ UUIDs() []uuid.UUID
}
...
...
@@ -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
}
}
"ygot.GoStruct" *-- "nucleus.Device"
"gnmi.Config" *-- "nucleus.GnmiTransportOptions"
"nucleus.store" *-- "nucleus.changeStore"
"nucleus.store" *-- "nucleus.deviceStore"
"nucleus.store" *-- "nucleus.pndStore"
"nucleus.store" *-- "nucleus.sbiStore"
"nucleus.Storable" <|-- "nucleus.Device"
"nucleus.store" *-- "nucleus.ChangeStore"
"ygot.GoStruct" *-- "nucleus.CommonDevice"
"nucleus.store" *-- "nucleus.DeviceStore"
"nucleus.store" *-- "nucleus.PndStore"
"nucleus.store" *-- "nucleus.SbiStore"
"nucleus.CommonDevice" *-- "nucleus.csbiDevice"
"nucleus.Storable" <|-- "nucleus.Change"
"nucleus.Device" <|-- "nucleus.CommonDevice"
"nucleus.Storable" <|-- "nucleus.CommonDevice"
"nucleus.Transport" <|-- "nucleus.Gnmi"
"nucleus.TransportOptions" <|-- "nucleus.GnmiTransportOptions"
"nucleus.SouthboundInterface" <|-- "nucleus.OpenConfig"
"nucleus.Storable" <|-- "nucleus.OpenConfig"
"nucleus.Transport" <|-- "nucleus.Restconf"
"nucleus.Device" <|-- "nucleus.csbiDevice"
"nucleus.Storable" <|-- "nucleus.csbiDevice"
"nucleus.PrincipalNetworkDomain" <|-- "nucleus.pndImplementation"
"nucleus.Storable" <|-- "nucleus.pndImplementation"
"nucleus.Store" <|-- "nucleus.store"
"__builtin__.int" #.. "nucleus.Operation"
"__builtin__.string" #.. "nucleus.CtxKeyType"
"nucleus.fontcolorbluemapfontuuidUUIDStorable" #.. "nucleus.store"
@enduml
```