diff --git a/controller/northbound/server/nbi.go b/controller/northbound/server/nbi.go index 1d7274120aae01cd13bfaa6c5276b42cb810e0f3..a9901650c0544fbf6e26e2dd04e770d0088aae97 100644 --- a/controller/northbound/server/nbi.go +++ b/controller/northbound/server/nbi.go @@ -52,7 +52,7 @@ func NewNBI( networkDomain networkdomain.NetworkDomain, ) *NorthboundInterface { return &NorthboundInterface{ - Pnd: NewPndServer(pndService), + Pnd: NewPndServer(pndService, sbiService), Core: NewCoreServer(pndService), Csbi: NewCsbiServer(pnds), Sbi: NewSbiServer(pndService), diff --git a/controller/northbound/server/pnd.go b/controller/northbound/server/pnd.go index 0ad3c2b986e015dacf894c81253c30c6c308a54d..7802d97d5b2189e505525d8e7ba992f13d31fedf 100644 --- a/controller/northbound/server/pnd.go +++ b/controller/northbound/server/pnd.go @@ -7,6 +7,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/networkdomain" + "code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound" "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/store" @@ -21,12 +22,14 @@ import ( type PndServer struct { ppb.UnimplementedPndServiceServer pndService networkdomain.Service + sbiService southbound.Service } // NewPndServer receives a pndStore and returns a new pndServer. -func NewPndServer(pndService networkdomain.Service) *PndServer { +func NewPndServer(pndService networkdomain.Service, sbiService southbound.Service) *PndServer { return &PndServer{ pndService: pndService, + sbiService: sbiService, } } @@ -51,7 +54,7 @@ func (p PndServer) GetSbi(ctx context.Context, request *ppb.GetSbiRequest) (*ppb return nil, err } - sbi, err := pnd.GetSBI(sbiID) + sbi, err := p.sbiService.Get(store.Query{ID: sbiID}) if err != nil { log.Error(err) return nil, status.Errorf(codes.Aborted, "%v", err) @@ -85,7 +88,7 @@ func (p PndServer) GetSbiList(ctx context.Context, request *ppb.GetSbiListReques log.Error(err) return nil, status.Errorf(codes.Aborted, "%v", err) } - sbis, err := fillSbis(pnd) + sbis, err := p.fillSbis() if err != nil { log.Error(err) return nil, status.Errorf(codes.Aborted, "%v", err) @@ -101,8 +104,8 @@ func (p PndServer) GetSbiList(ctx context.Context, request *ppb.GetSbiListReques }, nil } -func fillSbis(pnd networkdomain.NetworkDomain) ([]*spb.SouthboundInterface, error) { - sbis, err := pnd.GetSBIs() +func (p PndServer) fillSbis() ([]*spb.SouthboundInterface, error) { + sbis, err := p.sbiService.GetAll() if err != nil { return nil, err } @@ -123,15 +126,6 @@ func (p PndServer) SetSbiList(ctx context.Context, request *ppb.SetSbiListReques labels := prometheus.Labels{"service": "pnd", "rpc": "set"} start := metrics.StartHook(labels, grpcRequestsTotal) defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds) - pid, err := uuid.Parse(request.Pid) - if err != nil { - return nil, handleRPCError(labels, err) - } - - pnd, err := p.pndService.Get(store.Query{ID: pid}) - if err != nil { - return nil, handleRPCError(labels, err) - } for _, r := range request.Sbi { sbiType := filterSbiType(r.SbiType) @@ -140,7 +134,7 @@ func (p PndServer) SetSbiList(ctx context.Context, request *ppb.SetSbiListReques return nil, handleRPCError(labels, err) } - err = pnd.AddSbi(sbi) + err = p.sbiService.Add(sbi) if err != nil { return nil, handleRPCError(labels, err) } diff --git a/controller/northbound/server/pnd_test.go b/controller/northbound/server/pnd_test.go index 5f23ab5cd215834dae5b5ad2540b50af70e88b1a..7fc18011e51b7bca040c4e5614279096a0d475c2 100644 --- a/controller/northbound/server/pnd_test.go +++ b/controller/northbound/server/pnd_test.go @@ -7,6 +7,7 @@ import ( mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement" spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound" + eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService" "code.fbi.h-da.de/danet/gosdn/controller/mocks" "code.fbi.h-da.de/danet/gosdn/controller/nucleus" "code.fbi.h-da.de/danet/gosdn/models/generated/openconfig" @@ -94,8 +95,11 @@ func getTestPndServer(t *testing.T) *PndServer { } pndService := nucleus.NewPndService(pndStore) + eventService := eventservice.NewMockEventService() - c := NewPndServer(pndService) + sbiService := nucleus.NewSbiService(sbiStore, eventService) + + c := NewPndServer(pndService, sbiService) return c }