diff --git a/nucleus/device.go b/nucleus/device.go index a5f356dcd26539d61741eb7c2e57246328dc12fb..80034d540f187469b60347967f10de3fead546d4 100644 --- a/nucleus/device.go +++ b/nucleus/device.go @@ -15,48 +15,15 @@ import ( ) // NewDevice creates a Device -func NewDevice(name string, opt *tpb.TransportOption, sbi southbound.SouthboundInterface) (device.Device, error) { +func NewDevice(name string, uuidInput uuid.UUID, opt *tpb.TransportOption, sbi southbound.SouthboundInterface) (device.Device, error) { t, err := NewTransport(opt, sbi) if err != nil { return nil, err } - if name == "" { - name = namesgenerator.GetRandomName(0) - } - - root, err := ygot.DeepCopy(sbi.Schema().Root) - if err != nil { - return nil, err - } - if opt.Type == spb.Type_CONTAINERISED { - return &CsbiDevice{ - CommonDevice: CommonDevice{ - UUID: uuid.New(), - GoStruct: root, - sbi: sbi, - transport: t, - name: name, - transportOptions: opt, - }, - }, nil - } - - return &CommonDevice{ - UUID: uuid.New(), - GoStruct: root, - sbi: sbi, - transport: t, - name: name, - transportOptions: opt, - }, nil -} - -// NewDeviceWithUUID creates a Device with a provided UUID -func NewDeviceWithUUID(name string, uuid uuid.UUID, opt *tpb.TransportOption, sbi southbound.SouthboundInterface) (device.Device, error) { - t, err := NewTransport(opt, sbi) - if err != nil { - return nil, err + // TODO: this needs to check the case that the uuidInput is set, as the same uuid may be already stored. + if uuidInput == uuid.Nil { + uuidInput = uuid.New() } if name == "" { @@ -70,7 +37,7 @@ func NewDeviceWithUUID(name string, uuid uuid.UUID, opt *tpb.TransportOption, sb if opt.Type == spb.Type_CONTAINERISED { return &CsbiDevice{ CommonDevice: CommonDevice{ - UUID: uuid, + UUID: uuidInput, GoStruct: root, sbi: sbi, transport: t, @@ -81,7 +48,7 @@ func NewDeviceWithUUID(name string, uuid uuid.UUID, opt *tpb.TransportOption, sb } return &CommonDevice{ - UUID: uuid, + UUID: uuidInput, GoStruct: root, sbi: sbi, transport: t, diff --git a/nucleus/device_test.go b/nucleus/device_test.go index 30364ce4050f421656eec577c762d9972413dc5e..7b6a5e84388b8474ca2a3ad119d48679c1c72306 100644 --- a/nucleus/device_test.go +++ b/nucleus/device_test.go @@ -99,7 +99,7 @@ func TestNewDevice(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - resp, err := NewDevice(tt.args.name, tt.args.opts, tt.args.sbi) + resp, err := NewDevice(tt.args.name, uuid.Nil, tt.args.opts, tt.args.sbi) if (err != nil) != tt.wantErr { t.Errorf("NewDevice() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/nucleus/principalNetworkDomain.go b/nucleus/principalNetworkDomain.go index 3c5dc0e486541a47743e7406bd4cd31797a0c402..b5dd33d7afc4d691cf6bde7f47a1b59895538a8a 100644 --- a/nucleus/principalNetworkDomain.go +++ b/nucleus/principalNetworkDomain.go @@ -173,7 +173,7 @@ func (pnd *pndImplementation) AddDevice(name string, opt *tpb.TransportOption, s } } - d, err := NewDevice(name, opt, sbi) + d, err := NewDevice(name, uuid.Nil, opt, sbi) if err != nil { return err } @@ -191,7 +191,7 @@ func (pnd *pndImplementation) AddDeviceFromStore(name string, deviceUUID uuid.UU return err } - d, err := NewDeviceWithUUID(name, deviceUUID, opt, sbi) + d, err := NewDevice(name, deviceUUID, opt, sbi) if err != nil { return err } @@ -444,7 +444,7 @@ func (pnd *pndImplementation) createCsbiDevice(ctx context.Context, name string, TransportOption: opt.TransportOption, } log.WithField("transport option", csbiTransportOptions).Debug("gosdn gnmi transport options") - d, err := NewDevice(name, csbiTransportOptions, csbi) + d, err := NewDevice(name, uuid.Nil, csbiTransportOptions, csbi) if err != nil { panic(err) } diff --git a/nucleus/principalNetworkDomain_test.go b/nucleus/principalNetworkDomain_test.go index bf2cd336e28f883c163272ef31fd9e11ba0ab605..93c91f400a794f74700b33bcba8238c9ba098f32 100644 --- a/nucleus/principalNetworkDomain_test.go +++ b/nucleus/principalNetworkDomain_test.go @@ -676,7 +676,7 @@ func Test_pndImplementation_ChangeOND(t *testing.T) { func Test_pndImplementation_GetDevice(t *testing.T) { pnd := newPnd() sbi := NewSBI(spb.Type_OPENCONFIG) - d, err := NewDevice("", newGnmiTransportOptions(), sbi) + d, err := NewDevice("", uuid.Nil, newGnmiTransportOptions(), sbi) if err != nil { t.Error(err) return @@ -726,7 +726,7 @@ func Test_pndImplementation_GetDevice(t *testing.T) { func Test_pndImplementation_GetDeviceByName(t *testing.T) { p := newPnd() sbi := NewSBI(spb.Type_OPENCONFIG) - d, err := NewDevice("my-device", newGnmiTransportOptions(), sbi) + d, err := NewDevice("my-device", uuid.Nil, newGnmiTransportOptions(), sbi) if err != nil { t.Error(err) return