From be3a6e911d6a36487e3330589412c42158ca437c Mon Sep 17 00:00:00 2001
From: Neil Schark <neil-jocelyn.schark@stud.h-da.de>
Date: Thu, 15 Dec 2022 19:00:29 +0100
Subject: [PATCH] made uuid param optional

---
 controller/interfaces/networkdomain/pnd.go   |  2 +-
 controller/mocks/NetworkDomain.go            | 21 +++++++++++++-------
 controller/nucleus/principalNetworkDomain.go |  7 ++++++-
 3 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/controller/interfaces/networkdomain/pnd.go b/controller/interfaces/networkdomain/pnd.go
index 8a943abe1..16692e621 100644
--- a/controller/interfaces/networkdomain/pnd.go
+++ b/controller/interfaces/networkdomain/pnd.go
@@ -16,7 +16,7 @@ type NetworkDomain interface {
 	Destroy() error
 	AddSbi(s southbound.SouthboundInterface) error
 	RemoveSbi(uuid.UUID) error
-	AddNetworkElement(name string, opts *tpb.TransportOption, sid uuid.UUID, networkElement uuid.UUID) (uuid.UUID, error)
+	AddNetworkElement(name string, opts *tpb.TransportOption, sid uuid.UUID, optionalNetworkElementID ...uuid.UUID) (uuid.UUID, error)
 	GetNetworkElement(identifier string) (networkelement.NetworkElement, error)
 	RemoveNetworkElement(uuid.UUID) error
 	UpdateNetworkElement(networkelement.NetworkElement, string) error
diff --git a/controller/mocks/NetworkDomain.go b/controller/mocks/NetworkDomain.go
index 43f249c7c..5b273b2cb 100644
--- a/controller/mocks/NetworkDomain.go
+++ b/controller/mocks/NetworkDomain.go
@@ -24,13 +24,20 @@ type NetworkDomain struct {
 	mock.Mock
 }
 
-// AddNetworkElement provides a mock function with given fields: name, opts, sid, networkElement
-func (_m *NetworkDomain) AddNetworkElement(name string, opts *transport.TransportOption, sid uuid.UUID, networkElement uuid.UUID) (uuid.UUID, error) {
-	ret := _m.Called(name, opts, sid, networkElement)
+// AddNetworkElement provides a mock function with given fields: name, opts, sid, optionalNetworkElementID
+func (_m *NetworkDomain) AddNetworkElement(name string, opts *transport.TransportOption, sid uuid.UUID, optionalNetworkElementID ...uuid.UUID) (uuid.UUID, error) {
+	_va := make([]interface{}, len(optionalNetworkElementID))
+	for _i := range optionalNetworkElementID {
+		_va[_i] = optionalNetworkElementID[_i]
+	}
+	var _ca []interface{}
+	_ca = append(_ca, name, opts, sid)
+	_ca = append(_ca, _va...)
+	ret := _m.Called(_ca...)
 
 	var r0 uuid.UUID
-	if rf, ok := ret.Get(0).(func(string, *transport.TransportOption, uuid.UUID, uuid.UUID) uuid.UUID); ok {
-		r0 = rf(name, opts, sid, networkElement)
+	if rf, ok := ret.Get(0).(func(string, *transport.TransportOption, uuid.UUID, ...uuid.UUID) uuid.UUID); ok {
+		r0 = rf(name, opts, sid, optionalNetworkElementID...)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).(uuid.UUID)
@@ -38,8 +45,8 @@ func (_m *NetworkDomain) AddNetworkElement(name string, opts *transport.Transpor
 	}
 
 	var r1 error
-	if rf, ok := ret.Get(1).(func(string, *transport.TransportOption, uuid.UUID, uuid.UUID) error); ok {
-		r1 = rf(name, opts, sid, networkElement)
+	if rf, ok := ret.Get(1).(func(string, *transport.TransportOption, uuid.UUID, ...uuid.UUID) error); ok {
+		r1 = rf(name, opts, sid, optionalNetworkElementID...)
 	} else {
 		r1 = ret.Error(1)
 	}
diff --git a/controller/nucleus/principalNetworkDomain.go b/controller/nucleus/principalNetworkDomain.go
index 4e7d5d506..b66918bd0 100644
--- a/controller/nucleus/principalNetworkDomain.go
+++ b/controller/nucleus/principalNetworkDomain.go
@@ -246,7 +246,12 @@ func (pnd *pndImplementation) RemoveSbi(sid uuid.UUID) error {
 }
 
 // AddNetworkElement adds a new network element to the PND. The UUID for the networkElementID is optional and should normally be empty
-func (pnd *pndImplementation) AddNetworkElement(name string, opt *tpb.TransportOption, sid uuid.UUID, networkElementID uuid.UUID) (uuid.UUID, error) {
+func (pnd *pndImplementation) AddNetworkElement(name string, opt *tpb.TransportOption, sid uuid.UUID, optionalNetworkElementID ...uuid.UUID) (uuid.UUID, error) {
+	networkElementID := uuid.Nil
+	if len(optionalNetworkElementID) > 0 {
+		networkElementID = optionalNetworkElementID[0]
+	}
+
 	labels := prometheus.Labels{"type": opt.Type.String()}
 	start := metrics.StartHook(labels, networkElementCreationsTotal)
 	defer metrics.FinishHook(labels, start, networkElementCreationDurationSecondsTotal, networkElementCreationDurationSeconds)
-- 
GitLab