diff --git a/controller/northbound/server/pnd.go b/controller/northbound/server/pnd.go index 5124730e44bda354d81c0433a395783a5221b462..20133de7c4f2b1f85e454505b6c3825d251c2fbf 100644 --- a/controller/northbound/server/pnd.go +++ b/controller/northbound/server/pnd.go @@ -8,6 +8,7 @@ import ( ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd" spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound" + "code.fbi.h-da.de/danet/gosdn/controller/interfaces/device" "code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkdomain" "code.fbi.h-da.de/danet/gosdn/controller/metrics" "code.fbi.h-da.de/danet/gosdn/controller/nucleus" @@ -52,7 +53,13 @@ func (p PndServer) GetOnd(ctx context.Context, request *ppb.GetOndRequest) (*ppb return nil, status.Errorf(codes.Aborted, "%v", err) } - ond, err := fillOndBySpecificPath(pnd, request.Did, "/") + device, err := pnd.GetDevice(request.Did) + if err != nil { + log.Error(err) + return nil, status.Errorf(codes.Aborted, "%v", err) + } + + ond, err := fillOndBySpecificPath(pnd, device, "/") if err != nil { log.Error(err) return nil, status.Errorf(codes.Aborted, "%v", err) @@ -85,14 +92,15 @@ func (p PndServer) GetOndList(ctx context.Context, request *ppb.GetOndListReques return nil, status.Errorf(codes.Aborted, "%v", err) } - onds := make([]*ppb.OrchestratedNetworkingDevice, len(pnd.Devices())) - for i, ond := range pnd.Devices() { - ond, err := fillOndBySpecificPath(pnd, ond.ID().String(), "/") + onds := pnd.Devices() + ondsBySpecificPath := make([]*ppb.OrchestratedNetworkingDevice, len(onds)) + for i, ond := range onds { + ond, err := fillOndBySpecificPath(pnd, ond, "/") if err != nil { log.Error(err) return nil, status.Errorf(codes.Aborted, "%v", err) } - onds[i] = ond + ondsBySpecificPath[i] = ond } return &ppb.GetOndListResponse{ @@ -102,17 +110,11 @@ func (p PndServer) GetOndList(ctx context.Context, request *ppb.GetOndListReques Name: pnd.GetName(), Description: pnd.GetDescription(), }, - Ond: onds, + Ond: ondsBySpecificPath, }, nil } -func fillOndBySpecificPath(pnd networkdomain.NetworkDomain, did string, path string) (*ppb.OrchestratedNetworkingDevice, error) { - d, err := pnd.GetDevice(did) - if err != nil { - log.Error(err) - return nil, status.Errorf(codes.Aborted, "%v", err) - } - +func fillOndBySpecificPath(pnd networkdomain.NetworkDomain, d device.Device, path string) (*ppb.OrchestratedNetworkingDevice, error) { gnmiPath, err := ygot.StringToStructuredPath(path) if err != nil { log.Error(err) @@ -294,6 +296,12 @@ func (p PndServer) GetPath(ctx context.Context, request *ppb.GetPathRequest) (*p log.Error(err) return nil, status.Errorf(codes.Aborted, "%v", err) } + + device, err := pnd.GetDevice(request.Did) + if err != nil { + log.Error(err) + return nil, status.Errorf(codes.Aborted, "%v", err) + } duid, err := uuid.Parse(request.Did) if err != nil { log.Error(err) @@ -309,7 +317,7 @@ func (p PndServer) GetPath(ctx context.Context, request *ppb.GetPathRequest) (*p return nil, status.Errorf(codes.Aborted, "%v", err) } - ond, err := fillOndBySpecificPath(pnd, request.Did, path) + ond, err := fillOndBySpecificPath(pnd, device, path) if err != nil { log.Error(err) return nil, status.Errorf(codes.Aborted, "%v", err) diff --git a/controller/nucleus/principalNetworkDomain.go b/controller/nucleus/principalNetworkDomain.go index 21dff969692182794f922c4af510fcf9494c02af..ff14e327edeb4556f4ca444df4fa6328cb5b07fa 100644 --- a/controller/nucleus/principalNetworkDomain.go +++ b/controller/nucleus/principalNetworkDomain.go @@ -260,6 +260,7 @@ func (pnd *pndImplementation) AddDevice(name string, opt *tpb.TransportOption, s return pnd.addDevice(d) } +// TODO: (maba): This should be changed to UUID func (pnd *pndImplementation) GetDevice(identifier string) (device.Device, error) { id, err := uuid.Parse(identifier) if err != nil {