| 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
- }
|