From e17e6adcc615ff86738f75923bdd8935f2bb66e9 Mon Sep 17 00:00:00 2001 From: Fabian Seidl <fabian.seidl@h-da.de> Date: Wed, 13 Mar 2024 15:08:25 +0100 Subject: [PATCH] add mne update to API, needs some considerations after disccussion --- controller/api/managedNetworkElement.go | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/controller/api/managedNetworkElement.go b/controller/api/managedNetworkElement.go index f9b5eb57a..771901673 100644 --- a/controller/api/managedNetworkElement.go +++ b/controller/api/managedNetworkElement.go @@ -6,6 +6,7 @@ import ( "io" "time" + "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/conflict" mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement" pipb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/plugin-internal" spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound" @@ -250,3 +251,29 @@ func DeleteNetworkElement(ctx context.Context, addr, pid, mneid string) (*mnepb. return client.Delete(ctx, req) } + +// UpdateNetworkElement changes the metadata of the network element which is stored in the controller storage. +// Correct resource version needs to be provided to allow a change of the object in the storage. +func UpdateNetworkElement(ctx context.Context, addr, mneid, updatedName, updatedTransportAddress, updatedPid string, resourceVersion *conflict.Metadata) (*mnepb.UpdateNetworkElementResponse, error) { + client, err := nbi.NetworkElementClient(addr, dialOptions...) + if err != nil { + return nil, err + } + + // Note: Consider changing what to update. Some values are quite iffy to change. + req := &mnepb.UpdateNetworkElementRequest{ + Timestamp: time.Now().UnixNano(), + NetworkElement: &mnepb.ManagedNetworkElement{ + Id: mneid, + Name: updatedName, + TransportAddress: updatedTransportAddress, + TransportOption: &tpb.TransportOption{ + Address: updatedTransportAddress, + }, + Metadata: resourceVersion, + AssociatedPnd: updatedPid, + }, + } + + return client.Update(ctx, req) +} -- GitLab