diff --git a/controller/northbound/server/configurationmanagement.go b/controller/northbound/server/configurationmanagement.go index 09b7f5b1d1da81defa8ca0696cb37c836bd35ac4..72c4c9547efd51d656bc0f883409906ff9df6645 100644 --- a/controller/northbound/server/configurationmanagement.go +++ b/controller/northbound/server/configurationmanagement.go @@ -117,20 +117,30 @@ func (c ConfigurationManagementServer) ImportSDNConfig(ctx context.Context, requ //TODO: Clear DB //Create all elements + c.createElements(&sdnConfig, request) + if err != nil { + return nil, err + } + + return &cmpb.ImportSDNConfigResponse{ + Timestamp: time.Now().UnixNano()}, nil +} + +func (c ConfigurationManagementServer) createElements(sdnConfig *loadedSDNConfig, request *cmpb.ImportSDNConfigRequest) error { pndUUID := uuid.MustParse(request.Pid) pnd, err := c.pndStore.Get(store.Query{ID: pndUUID}) if err != nil { - return nil, err + return err } for _, inputSBI := range sdnConfig.Sbis { sbi, err := nucleus.NewSBI(inputSBI.Type, uuid.MustParse(inputSBI.ID)) if err != nil { - return nil, err + return err } err = pnd.AddSbi(sbi) if err != nil { - return nil, err + return err } } @@ -141,7 +151,7 @@ func (c ConfigurationManagementServer) ImportSDNConfig(ctx context.Context, requ } _, err = c.nodeService.EnsureExists(node) if err != nil { - return nil, err + return err } } @@ -153,26 +163,26 @@ func (c ConfigurationManagementServer) ImportSDNConfig(ctx context.Context, requ } _, err = c.portService.EnsureExists(port) if err != nil { - return nil, err + return err } } for _, inputPort := range sdnConfig.Links { sourceNode, err := c.nodeService.Get(store.Query{ID: inputPort.SourceNode.ID}) if err != nil { - return nil, err + return err } targetNode, err := c.nodeService.Get(store.Query{ID: inputPort.TargetNode.ID}) if err != nil { - return nil, err + return err } sourcePort, err := c.portService.Get(store.Query{ID: inputPort.SourcePort.ID}) if err != nil { - return nil, err + return err } targetPort, err := c.portService.Get(store.Query{ID: inputPort.TargetPort.ID}) if err != nil { - return nil, err + return err } link := links.Link{ ID: inputPort.ID, @@ -184,7 +194,7 @@ func (c ConfigurationManagementServer) ImportSDNConfig(ctx context.Context, requ } err = c.topologyService.AddLink(link) if err != nil { - return nil, err + return err } } @@ -205,21 +215,18 @@ func (c ConfigurationManagementServer) ImportSDNConfig(ctx context.Context, requ uuid.MustParse(inputNetworkElement.ID), ) if err != nil { - return nil, err + return err } networkelement, err := pnd.GetNetworkElement(inputNetworkElement.ID) if err != nil { - return nil, err + return err } err = pnd.UpdateNetworkElement(networkelement, inputNetworkElement.Model) if err != nil { - return nil, err + return err } - } - - return &cmpb.ImportSDNConfigResponse{ - Timestamp: time.Now().UnixNano()}, nil + return nil } diff --git a/controller/nucleus/principalNetworkDomain.go b/controller/nucleus/principalNetworkDomain.go index b66918bd01e086928c863fd593c0ba4cf84a3fc1..944278f71b95c7902858d5bcdcc102c499f507fe 100644 --- a/controller/nucleus/principalNetworkDomain.go +++ b/controller/nucleus/principalNetworkDomain.go @@ -245,7 +245,7 @@ func (pnd *pndImplementation) RemoveSbi(sid uuid.UUID) error { return pnd.removeSbi(sid) } -// AddNetworkElement adds a new network element to the PND. The UUID for the networkElementID is optional and should normally be empty +// 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, optionalNetworkElementID ...uuid.UUID) (uuid.UUID, error) { networkElementID := uuid.Nil if len(optionalNetworkElementID) > 0 {