Newer
Older
pb "code.fbi.h-da.de/danet/api/go/gosdn/core"
ppb "code.fbi.h-da.de/danet/api/go/gosdn/pnd"
spb "code.fbi.h-da.de/danet/api/go/gosdn/southbound"
pb.UnimplementedCoreServiceServer
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)
pndList, err := stringToUUID(request.Pid)
if err != nil {
return nil, handleRPCError(labels, err)
}
pnds := make([]*ppb.PrincipalNetworkDomain, len(pndList))
for i, id := range pndList {
pnds[i] = &ppb.PrincipalNetworkDomain{
Id: pnd.ID().String(),
Name: pnd.GetName(),
Description: pnd.GetDescription(),
}
return &pb.GetPndResponse{
Timestamp: time.Now().UnixNano(),
Pnd: pnds,
}, nil
}
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)
pnds[i] = &ppb.PrincipalNetworkDomain{
Id: pnd.ID().String(),
Name: pnd.GetName(),
Description: pnd.GetDescription(),
}
}
Timestamp: time.Now().UnixNano(),
Pnd: pnds,
}, nil
}
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)
Fabian Seidl
committed
sbi, err := nucleus.NewSBI(spb.Type_TYPE_OPENCONFIG)
if err != nil {
return nil, handleRPCError(labels, err)
}
pnd, err := nucleus.NewPND(r.Name, r.Description, uuid.New(), sbi, nil, nil)
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{