diff --git a/northbound/server/core.go b/northbound/server/core.go index bdbada695a995f979348c0deebfc2a794c5bc1ef..425b8e2abac852a75d22c24e56e2c6640773c96f 100644 --- a/northbound/server/core.go +++ b/northbound/server/core.go @@ -17,20 +17,14 @@ type core struct { pb.UnimplementedCoreServiceServer } -func (s core) Get(ctx context.Context, request *pb.GetRequest) (*pb.GetResponse, error) { +func (s core) GetPnd(ctx context.Context, request *pb.GetPndRequest) (*pb.GetPndResponse, error) { labels := prometheus.Labels{"service": "core", "rpc": "get"} start := metrics.StartHook(labels, grpcRequestsTotal) defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds) - var pndList []uuid.UUID - switch request.All { - case true: - pndList = pndc.UUIDs() - default: - var err error - pndList, err = stringToUUID(request.Pid) - if err != nil { - return nil, handleRPCError(labels, err) - } + + pndList, err := stringToUUID(request.Pid) + if err != nil { + return nil, handleRPCError(labels, err) } pnds := make([]*ppb.PrincipalNetworkDomain, len(pndList)) @@ -40,31 +34,45 @@ func (s core) Get(ctx context.Context, request *pb.GetRequest) (*pb.GetResponse, return nil, err } - ond, err := fillOnds(pnd, true) - if err != nil { - return nil, handleRPCError(labels, err) + pnds[i] = &ppb.PrincipalNetworkDomain{ + Id: pnd.ID().String(), + Name: pnd.GetName(), + Description: pnd.GetDescription(), } + } + return &pb.GetPndResponse{ + Timestamp: time.Now().UnixNano(), + Pnd: pnds, + }, nil +} - sbi, err := fillSbis(pnd, true) +func (s core) GetPndList(ctx context.Context, request *pb.GetPndListRequest) (*pb.GetPndListResponse, error) { + labels := prometheus.Labels{"service": "core", "rpc": "get"} + start := metrics.StartHook(labels, grpcRequestsTotal) + defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds) + + pndList := pndc.UUIDs() + + pnds := make([]*ppb.PrincipalNetworkDomain, len(pndList)) + for i, id := range pndList { + pnd, err := pndc.GetPND(id) if err != nil { - return nil, handleRPCError(labels, err) + return nil, err } pnds[i] = &ppb.PrincipalNetworkDomain{ Id: pnd.ID().String(), Name: pnd.GetName(), Description: pnd.GetDescription(), - Ond: ond, - Sbi: sbi, } } - return &pb.GetResponse{ + return &pb.GetPndListResponse{ Timestamp: time.Now().UnixNano(), Pnd: pnds, }, nil } -func (s core) Set(ctx context.Context, request *pb.SetRequest) (*pb.SetResponse, error) { +func (s core) CreatePndList(ctx context.Context, request *pb.CreatePndListRequest) (*pb.CreatePndListResponse, error) { labels := prometheus.Labels{"service": "core", "rpc": "set"} start := metrics.StartHook(labels, grpcRequestsTotal) defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds) @@ -79,8 +87,25 @@ func (s core) Set(ctx context.Context, request *pb.SetRequest) (*pb.SetResponse, return nil, handleRPCError(labels, err) } } - return &pb.SetResponse{ + return &pb.CreatePndListResponse{ + Timestamp: time.Now().UnixNano(), + Status: pb.Status_STATUS_OK, + }, nil +} + +func (s core) DeletePnd(ctx context.Context, request *pb.DeletePndRequest) (*pb.DeletePndResponse, error) { + labels := prometheus.Labels{"service": "core", "rpc": "set"} + start := metrics.StartHook(labels, grpcRequestsTotal) + defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds) + + pndId, err := uuid.Parse(request.Pid) + if err != nil { + return nil, handleRPCError(labels, err) + } + pndc.Delete(pndId) + + return &pb.DeletePndResponse{ Timestamp: time.Now().UnixNano(), - Status: pb.SetResponse_OK, + Status: pb.Status_STATUS_OK, }, nil }