... | ... | @@ -26,7 +26,7 @@ namespace nucleus { |
|
|
|
|
|
}
|
|
|
class ChangeStore << (S,Aquamarine) >> {
|
|
|
+ Get(id uuid.UUID) (*Change, error)
|
|
|
+ GetChange(id uuid.UUID) (*Change, error)
|
|
|
|
|
|
}
|
|
|
class ClientConfig << (S,Aquamarine) >> {
|
... | ... | @@ -39,41 +39,28 @@ namespace nucleus { |
|
|
|
|
|
}
|
|
|
class CommonDevice << (S,Aquamarine) >> {
|
|
|
- sbi SouthboundInterface
|
|
|
- transport Transport
|
|
|
- sbi southbound.SouthboundInterface
|
|
|
- transport transport.Transport
|
|
|
- name string
|
|
|
|
|
|
+ UUID uuid.UUID
|
|
|
|
|
|
- isDevice()
|
|
|
|
|
|
+ ID() uuid.UUID
|
|
|
+ Model() ygot.GoStruct
|
|
|
+ Transport() Transport
|
|
|
+ Transport() transport.Transport
|
|
|
+ Name() string
|
|
|
+ SBI() SouthboundInterface
|
|
|
+ SetTransport(t Transport)
|
|
|
+ SBI() southbound.SouthboundInterface
|
|
|
+ SetTransport(t transport.Transport)
|
|
|
+ SetName(n string)
|
|
|
+ SetSBI(sbi SouthboundInterface)
|
|
|
+ SetSBI(sbi southbound.SouthboundInterface)
|
|
|
+ ProcessResponse(resp proto.Message) error
|
|
|
|
|
|
}
|
|
|
interface Device {
|
|
|
- isDevice()
|
|
|
|
|
|
+ ID() uuid.UUID
|
|
|
+ Model() ygot.GoStruct
|
|
|
+ Transport() Transport
|
|
|
+ Name() string
|
|
|
+ SBI() SouthboundInterface
|
|
|
+ ProcessResponse( proto.Message) error
|
|
|
|
|
|
}
|
|
|
class DeviceStore << (S,Aquamarine) >> {
|
|
|
- deviceNameToUUIDLookup <font color=blue>map</font>[string]uuid.UUID
|
|
|
|
|
|
+ Get(id uuid.UUID, parseErrors ...error) (Device, error)
|
|
|
+ Add(item Storable, name string) error
|
|
|
+ GetDevice(id uuid.UUID, parseErrors ...error) (device.Device, error)
|
|
|
+ Add(item store.Storable, name string) error
|
|
|
+ Delete(id uuid.UUID) error
|
|
|
|
|
|
}
|
... | ... | @@ -116,31 +103,7 @@ namespace nucleus { |
|
|
|
|
|
}
|
|
|
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(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 pnd.ApiOperation, path string, value ...string) error
|
|
|
+ Request( uuid.UUID, string) error
|
|
|
+ RequestAll( string) error
|
|
|
+ GetName() string
|
|
|
+ GetDescription() string
|
|
|
+ MarshalDevice( string) (string, error)
|
|
|
+ ContainsDevice( uuid.UUID) bool
|
|
|
+ GetSBIs() <font color=blue>interface</font>{}
|
|
|
+ ID() 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
|
|
|
+ GetPND(id uuid.UUID) (networkdomain.NetworkDomain, error)
|
|
|
|
|
|
}
|
|
|
class Restconf << (S,Aquamarine) >> {
|
... | ... | @@ -153,49 +116,27 @@ namespace nucleus { |
|
|
|
|
|
}
|
|
|
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
|
|
|
+ GetSBI(id uuid.UUID) (southbound.SouthboundInterface, error)
|
|
|
|
|
|
}
|
|
|
interface Storable {
|
|
|
class csbiDevice << (S,Aquamarine) >> {
|
|
|
+ ID() uuid.UUID
|
|
|
+ Model() ygot.GoStruct
|
|
|
+ Transport() transport.Transport
|
|
|
+ Name() string
|
|
|
+ SBI() southbound.SouthboundInterface
|
|
|
+ ProcessResponse(resp proto.Message) error
|
|
|
|
|
|
}
|
|
|
interface Store {
|
|
|
class genericStore << (S,Aquamarine) >> {
|
|
|
+ Exists(id uuid.UUID) bool
|
|
|
+ Add(item Storable) error
|
|
|
+ Get(id uuid.UUID) (Storable, error)
|
|
|
+ Add(item store.Storable) error
|
|
|
+ Get(id uuid.UUID) (store.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
|
|
|
+ ProcessResponse(resp <font color=blue>interface</font>{}, root <font color=blue>interface</font>{}, models *ytypes.Schema) error
|
|
|
|
|
|
}
|
|
|
class csbiDevice << (S,Aquamarine) >> {
|
|
|
- isDevice()
|
|
|
|
|
|
+ ID() uuid.UUID
|
|
|
+ Model() ygot.GoStruct
|
|
|
+ Transport() Transport
|
|
|
+ Name() string
|
|
|
+ SBI() SouthboundInterface
|
|
|
+ ProcessResponse(resp proto.Message) error
|
|
|
|
|
|
}
|
|
|
class nucleus.store << (T, #FF7700) >> {
|
|
|
class nucleus.genericStore << (T, #FF7700) >> {
|
|
|
}
|
|
|
class pndImplementation << (S,Aquamarine) >> {
|
|
|
- name string
|
... | ... | @@ -208,14 +149,14 @@ namespace nucleus { |
|
|
- id uuid.UUID
|
|
|
- errChans <font color=blue>map</font>[uuid.UUID]<font color=blue>chan</font> error
|
|
|
|
|
|
- addSbi(sbi SouthboundInterface) error
|
|
|
- addSbi(sbi southbound.SouthboundInterface) error
|
|
|
- removeSbi(id uuid.UUID) error
|
|
|
- addDevice(device Device) error
|
|
|
- addDevice(device device.Device) error
|
|
|
- removeDevice(id uuid.UUID) error
|
|
|
|
|
|
+ PendingChanges() []uuid.UUID
|
|
|
+ CommittedChanges() []uuid.UUID
|
|
|
+ GetChange(cuid uuid.UUID, i ...int) (<font color=blue>interface</font>{}, error)
|
|
|
+ GetChange(cuid uuid.UUID, i ...int) (change.Change, error)
|
|
|
+ Commit(u uuid.UUID) error
|
|
|
+ Confirm(u uuid.UUID) error
|
|
|
+ ID() uuid.UUID
|
... | ... | @@ -223,12 +164,12 @@ namespace nucleus { |
|
|
+ GetName() string
|
|
|
+ ContainsDevice(id uuid.UUID) bool
|
|
|
+ GetDescription() string
|
|
|
+ GetSBIs() <font color=blue>interface</font>{}
|
|
|
+ GetSBIs() store.Store
|
|
|
+ Destroy() error
|
|
|
+ AddSbi(sbi <font color=blue>interface</font>{}) error
|
|
|
+ AddSbi(s southbound.SouthboundInterface) error
|
|
|
+ RemoveSbi(id uuid.UUID) error
|
|
|
+ AddDevice(name string, opt *transport.TransportOption, sid uuid.UUID) error
|
|
|
+ GetDevice(identifier string) (<font color=blue>interface</font>{}, error)
|
|
|
+ GetDevice(identifier string) (device.Device, error)
|
|
|
+ RemoveDevice(uuid uuid.UUID) error
|
|
|
+ MarshalDevice(identifier string) (string, error)
|
|
|
+ Request(uuid uuid.UUID, path string) error
|
... | ... | @@ -236,38 +177,18 @@ namespace nucleus { |
|
|
+ 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
|
|
|
+ UUIDs() []uuid.UUID
|
|
|
|
|
|
}
|
|
|
class "<font color=blue>map</font>[uuid.UUID]Storable" as fontcolorbluemapfontuuidUUIDStorable {
|
|
|
class "<font color=blue>map</font>[uuid.UUID]store.Storable" as fontcolorbluemapfontuuidUUIDstoreStorable {
|
|
|
'This class was created so that we can correctly have an alias pointing to this name. Since it contains dots that can break namespaces
|
|
|
}
|
|
|
}
|
|
|
"nucleus.store" *-- "nucleus.ChangeStore"
|
|
|
"nucleus.genericStore" *-- "nucleus.ChangeStore"
|
|
|
"ygot.GoStruct" *-- "nucleus.CommonDevice"
|
|
|
"nucleus.store" *-- "nucleus.DeviceStore"
|
|
|
"nucleus.store" *-- "nucleus.PndStore"
|
|
|
"nucleus.store" *-- "nucleus.SbiStore"
|
|
|
"nucleus.genericStore" *-- "nucleus.DeviceStore"
|
|
|
"nucleus.genericStore" *-- "nucleus.PndStore"
|
|
|
"nucleus.genericStore" *-- "nucleus.SbiStore"
|
|
|
"nucleus.CommonDevice" *-- "nucleus.csbiDevice"
|
|
|
|
|
|
"nucleus.Storable" <|-- "nucleus.Change"
|
|
|
"nucleus.Device" <|-- "nucleus.CommonDevice"
|
|
|
"nucleus.Storable" <|-- "nucleus.CommonDevice"
|
|
|
"nucleus.Transport" <|-- "nucleus.Gnmi"
|
|
|
"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"
|
|
|
|
|
|
"nucleus.fontcolorbluemapfontuuidUUIDStorable" #.. "nucleus.store"
|
|
|
"nucleus.fontcolorbluemapfontuuidUUIDstoreStorable" #.. "nucleus.genericStore"
|
|
|
@enduml
|
|
|
``` |