Skip to content
Snippets Groups Projects
Commit 58bc4a98 authored by Malte Bauch's avatar Malte Bauch Committed by Malte Bauch
Browse files

Removed multiple calls of pnd.GetDevice for a NBI request of all devices

parent cec566bb
No related branches found
No related tags found
2 merge requests!352Draft: Resolve "Structs like LoadedDevice, LoadedSbi, LoadedRole, LoadedUser are never passed as pointer",!347Resolve "Requesting information from the Controller via NBI takes very long"
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd" ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound" 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/interfaces/networkdomain"
"code.fbi.h-da.de/danet/gosdn/controller/metrics" "code.fbi.h-da.de/danet/gosdn/controller/metrics"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus" "code.fbi.h-da.de/danet/gosdn/controller/nucleus"
...@@ -52,7 +53,13 @@ func (p PndServer) GetOnd(ctx context.Context, request *ppb.GetOndRequest) (*ppb ...@@ -52,7 +53,13 @@ func (p PndServer) GetOnd(ctx context.Context, request *ppb.GetOndRequest) (*ppb
return nil, status.Errorf(codes.Aborted, "%v", err) 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 { if err != nil {
log.Error(err) log.Error(err)
return nil, status.Errorf(codes.Aborted, "%v", err) return nil, status.Errorf(codes.Aborted, "%v", err)
...@@ -85,14 +92,15 @@ func (p PndServer) GetOndList(ctx context.Context, request *ppb.GetOndListReques ...@@ -85,14 +92,15 @@ func (p PndServer) GetOndList(ctx context.Context, request *ppb.GetOndListReques
return nil, status.Errorf(codes.Aborted, "%v", err) return nil, status.Errorf(codes.Aborted, "%v", err)
} }
onds := make([]*ppb.OrchestratedNetworkingDevice, len(pnd.Devices())) onds := pnd.Devices()
for i, ond := range pnd.Devices() { ondsBySpecificPath := make([]*ppb.OrchestratedNetworkingDevice, len(onds))
ond, err := fillOndBySpecificPath(pnd, ond.ID().String(), "/") for i, ond := range onds {
ond, err := fillOndBySpecificPath(pnd, ond, "/")
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return nil, status.Errorf(codes.Aborted, "%v", err) return nil, status.Errorf(codes.Aborted, "%v", err)
} }
onds[i] = ond ondsBySpecificPath[i] = ond
} }
return &ppb.GetOndListResponse{ return &ppb.GetOndListResponse{
...@@ -102,17 +110,11 @@ func (p PndServer) GetOndList(ctx context.Context, request *ppb.GetOndListReques ...@@ -102,17 +110,11 @@ func (p PndServer) GetOndList(ctx context.Context, request *ppb.GetOndListReques
Name: pnd.GetName(), Name: pnd.GetName(),
Description: pnd.GetDescription(), Description: pnd.GetDescription(),
}, },
Ond: onds, Ond: ondsBySpecificPath,
}, nil }, nil
} }
func fillOndBySpecificPath(pnd networkdomain.NetworkDomain, did string, path string) (*ppb.OrchestratedNetworkingDevice, error) { func fillOndBySpecificPath(pnd networkdomain.NetworkDomain, d device.Device, path string) (*ppb.OrchestratedNetworkingDevice, error) {
d, err := pnd.GetDevice(did)
if err != nil {
log.Error(err)
return nil, status.Errorf(codes.Aborted, "%v", err)
}
gnmiPath, err := ygot.StringToStructuredPath(path) gnmiPath, err := ygot.StringToStructuredPath(path)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
...@@ -294,6 +296,12 @@ func (p PndServer) GetPath(ctx context.Context, request *ppb.GetPathRequest) (*p ...@@ -294,6 +296,12 @@ func (p PndServer) GetPath(ctx context.Context, request *ppb.GetPathRequest) (*p
log.Error(err) log.Error(err)
return nil, status.Errorf(codes.Aborted, "%v", 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) duid, err := uuid.Parse(request.Did)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
...@@ -309,7 +317,7 @@ func (p PndServer) GetPath(ctx context.Context, request *ppb.GetPathRequest) (*p ...@@ -309,7 +317,7 @@ func (p PndServer) GetPath(ctx context.Context, request *ppb.GetPathRequest) (*p
return nil, status.Errorf(codes.Aborted, "%v", err) return nil, status.Errorf(codes.Aborted, "%v", err)
} }
ond, err := fillOndBySpecificPath(pnd, request.Did, path) ond, err := fillOndBySpecificPath(pnd, device, path)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return nil, status.Errorf(codes.Aborted, "%v", err) return nil, status.Errorf(codes.Aborted, "%v", err)
......
...@@ -260,6 +260,7 @@ func (pnd *pndImplementation) AddDevice(name string, opt *tpb.TransportOption, s ...@@ -260,6 +260,7 @@ func (pnd *pndImplementation) AddDevice(name string, opt *tpb.TransportOption, s
return pnd.addDevice(d) return pnd.addDevice(d)
} }
// TODO: (maba): This should be changed to UUID
func (pnd *pndImplementation) GetDevice(identifier string) (device.Device, error) { func (pnd *pndImplementation) GetDevice(identifier string) (device.Device, error) {
id, err := uuid.Parse(identifier) id, err := uuid.Parse(identifier)
if err != nil { if err != nil {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment