diff --git a/controller/interfaces/networkdomain/pnd.go b/controller/interfaces/networkdomain/pnd.go index 8a943abe143c49e54a10aeffeec2531247a34141..16692e62155e79bab31a3e2e98c13d62bbfb83c9 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 43f249c7ce8868305bdebe3149561cfd2a4ac67c..5b273b2cb032527a4e2980d3fddf5ffd928d0689 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 4e7d5d5068cc14fd1d79f829c301e6afd2357aa2..b66918bd01e086928c863fd593c0ba4cf84a3fc1 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)