From bccc6742d638bae4a10c8bd6004c553bf2c5b1dc Mon Sep 17 00:00:00 2001 From: Fabian Seidl <fabian.seidl@h-da.de> Date: Wed, 7 Feb 2024 13:59:40 +0000 Subject: [PATCH] Add optional uuid to mne creation See merge request danet/gosdn!736 --- cli/adapter/PndAdapter.go | 4 ++-- cli/adapter/PndAdapter_test.go | 9 +++++---- cli/cmd/networkElementCreate.go | 6 ++++-- controller/api/managedNetworkElement.go | 3 ++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/cli/adapter/PndAdapter.go b/cli/adapter/PndAdapter.go index 99379d0a9..5797e250f 100644 --- a/cli/adapter/PndAdapter.go +++ b/cli/adapter/PndAdapter.go @@ -47,8 +47,8 @@ func (p *PndAdapter) RemoveSbi(uuid.UUID) error { // AddNetworkElement adds a new device to the controller. The device name is optional. // If no name is provided a name will be generated upon device creation. -func (p *PndAdapter) AddNetworkElement(ctx context.Context, name string, opts *tpb.TransportOption, pluginId uuid.UUID, gNMISubscribePaths []string) (*mnepb.AddListResponse, error) { - return api.AddNetworkElement(ctx, p.endpoint, name, opts, pluginId, p.ID(), gNMISubscribePaths) +func (p *PndAdapter) AddNetworkElement(ctx context.Context, name, mneUUID string, opts *tpb.TransportOption, pluginId uuid.UUID, gNMISubscribePaths []string) (*mnepb.AddListResponse, error) { + return api.AddNetworkElement(ctx, p.endpoint, name, mneUUID, opts, pluginId, p.ID(), gNMISubscribePaths) } // GetPluginSchemaTree requests a plugin schema tree. diff --git a/cli/adapter/PndAdapter_test.go b/cli/adapter/PndAdapter_test.go index 25686416f..45fbf7145 100644 --- a/cli/adapter/PndAdapter_test.go +++ b/cli/adapter/PndAdapter_test.go @@ -75,9 +75,10 @@ func TestPndAdapter_AddNetworkElement(t *testing.T) { endpoint string } type args struct { - name string - opts *tpb.TransportOption - sid uuid.UUID + name string + opts *tpb.TransportOption + sid uuid.UUID + mneUUID string } tests := []struct { name string @@ -93,7 +94,7 @@ func TestPndAdapter_AddNetworkElement(t *testing.T) { id: tt.fields.id, endpoint: tt.fields.endpoint, } - if _, err := p.AddNetworkElement(context.TODO(), tt.args.name, tt.args.opts, tt.args.sid, []string{}); (err != nil) != tt.wantErr { + if _, err := p.AddNetworkElement(context.TODO(), tt.args.name, tt.args.mneUUID, tt.args.opts, tt.args.sid, []string{}); (err != nil) != tt.wantErr { t.Errorf("PndAdapter.AddNetworkElement() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/cli/cmd/networkElementCreate.go b/cli/cmd/networkElementCreate.go index 6811e0397..4d0b4e555 100644 --- a/cli/cmd/networkElementCreate.go +++ b/cli/cmd/networkElementCreate.go @@ -71,7 +71,7 @@ if they diverge from the default credentials (user:'admin' and pw:'arista').`, return } - resp, err := pndAdapter.AddNetworkElement(createContextWithAuthorization(), mneName, opt, pluginUUID, []string{"system/config/hostname", "system/config/domain-name"}) + resp, err := pndAdapter.AddNetworkElement(createContextWithAuthorization(), mneName, mneUUID, opt, pluginUUID, []string{"system/config/hostname", "system/config/domain-name"}) if err != nil { spinner.Fail(err) return @@ -85,12 +85,13 @@ if they diverge from the default credentials (user:'admin' and pw:'arista').`, // Necessary for prompt mode. The flag variables have to be resetted, // since in prompt mode the program keeps running. - mneName, pluginID, address, username, password = "", "", "", "", "" + mneName, mneUUID, pluginID, address, username, password = "", "", "", "", "", "" tls = false }, } var mneName string +var mneUUID string var pluginID string var tls bool @@ -103,4 +104,5 @@ func init() { networkElementCreateCmd.Flags().StringVarP(&username, "username", "u", "", "username for a gnmi resource") networkElementCreateCmd.Flags().StringVarP(&password, "password", "p", "", "password for a gnmi resource") networkElementCreateCmd.Flags().BoolVarP(&tls, "tls", "t", false, "use flag to enable the controller to send requests to network elements using tls") + networkElementCreateCmd.Flags().StringVar(&mneUUID, "uuid", "", "add a network element UUID (optional)") } diff --git a/controller/api/managedNetworkElement.go b/controller/api/managedNetworkElement.go index 71d6dd062..b07ad58e0 100644 --- a/controller/api/managedNetworkElement.go +++ b/controller/api/managedNetworkElement.go @@ -20,7 +20,7 @@ import ( // AddNetworkElement adds a new network element to the controller. The network element name is optional. // If no name is provided a name will be generated upon network element creation. -func AddNetworkElement(ctx context.Context, addr, mneName string, opt *tpb.TransportOption, pluginID, pid uuid.UUID, gNMISubscribePaths []string) (*mnepb.AddListResponse, error) { +func AddNetworkElement(ctx context.Context, addr, mneName, mneUUID string, opt *tpb.TransportOption, pluginID, pid uuid.UUID, gNMISubscribePaths []string) (*mnepb.AddListResponse, error) { client, err := nbi.NetworkElementClient(addr, dialOptions...) if err != nil { return nil, err @@ -36,6 +36,7 @@ func AddNetworkElement(ctx context.Context, addr, mneName string, opt *tpb.Trans Pid: pid.String(), TransportOption: opt, GnmiSubscribePaths: gNMISubscribePaths, + MneId: mneUUID, }, }, Pid: pid.String(), -- GitLab