| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package plugin
- import (
- "context"
- "github.com/opencost/opencost/core/pkg/model/pb"
- )
- // GRPCClient is an implementation of CustomCostsSource that talks over RPC.
- type GRPCClient struct{ client pb.CustomCostsSourceClient }
- func (m *GRPCClient) GetCustomCosts(req *pb.CustomCostRequest) []*pb.CustomCostResponse {
- resp, err := m.client.GetCustomCosts(context.Background(), req)
- if err != nil {
- return []*pb.CustomCostResponse{
- {
- Errors: []string{err.Error()},
- },
- }
- }
- derefs := []*pb.CustomCostResponse{}
- for _, resp := range resp.Resps {
- derefs = append(derefs, resp)
- }
- return derefs
- }
- // Here is the gRPC server that GRPCClient talks to.
- type GRPCServer struct {
- pb.UnimplementedCustomCostsSourceServer
- // This is the real implementation
- Impl CustomCostSource
- }
- func (m *GRPCServer) GetCustomCosts(
- ctx context.Context,
- req *pb.CustomCostRequest) (*pb.CustomCostResponseSet, error) {
- ptrs := []*pb.CustomCostResponse{}
- costs := m.Impl.GetCustomCosts(req)
- for _, cost := range costs {
- ptrs = append(ptrs, cost)
- }
- return &pb.CustomCostResponseSet{
- Resps: ptrs,
- }, nil
- }
|