|
```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 *GnmiTransportOptions
|
|
+ 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 sbiStore
|
|
- sbic SbiStore
|
|
- devices deviceStore
|
|
- devices *DeviceStore
|
|
- pendingChanges changeStore
|
|
- pendingChanges ChangeStore
|
|
- committedChanges changeStore
|
|
- committedChanges ChangeStore
|
|
- confirmedChanges changeStore
|
|
- confirmedChanges ChangeStore
|
|
- 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
|
|
``` |
|
``` |