github.com/kubeshop/testkube@v1.17.23/pkg/cloud/data/config/config.go (about) 1 package config 2 3 import ( 4 "context" 5 "encoding/json" 6 7 "google.golang.org/grpc" 8 9 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 10 "github.com/kubeshop/testkube/pkg/cloud" 11 "github.com/kubeshop/testkube/pkg/cloud/data/executor" 12 "github.com/kubeshop/testkube/pkg/repository/config" 13 ) 14 15 var _ config.Repository = (*CloudRepository)(nil) 16 17 type CloudRepository struct { 18 executor executor.Executor 19 } 20 21 func NewCloudResultRepository(cloudClient cloud.TestKubeCloudAPIClient, grpcConn *grpc.ClientConn, apiKey string) *CloudRepository { 22 return &CloudRepository{executor: executor.NewCloudGRPCExecutor(cloudClient, grpcConn, apiKey)} 23 } 24 25 func (r *CloudRepository) GetUniqueClusterId(ctx context.Context) (string, error) { 26 req := GetUniqueClusterIdRequest{} 27 response, err := r.executor.Execute(ctx, CmdConfigGetUniqueClusterId, req) 28 if err != nil { 29 return "", err 30 } 31 var commandResponse GetUniqueClusterIdResponse 32 if err := json.Unmarshal(response, &commandResponse); err != nil { 33 return "", err 34 } 35 return commandResponse.ClusterID, nil 36 } 37 38 func (r *CloudRepository) GetTelemetryEnabled(ctx context.Context) (ok bool, err error) { 39 req := GetTelemetryEnabledRequest{} 40 response, err := r.executor.Execute(ctx, CmdConfigGetTelemetryEnabled, req) 41 if err != nil { 42 return false, err 43 } 44 var commandResponse GetTelemetryEnabledResponse 45 if err := json.Unmarshal(response, &commandResponse); err != nil { 46 return false, err 47 } 48 return commandResponse.Enabled, nil 49 } 50 51 func (r *CloudRepository) Get(ctx context.Context) (testkube.Config, error) { 52 req := GetRequest{} 53 response, err := r.executor.Execute(ctx, CmdConfigGet, req) 54 if err != nil { 55 return testkube.Config{}, err 56 } 57 var commandResponse GetResponse 58 if err := json.Unmarshal(response, &commandResponse); err != nil { 59 return testkube.Config{}, err 60 } 61 return commandResponse.Config, nil 62 } 63 64 func (r *CloudRepository) Upsert(ctx context.Context, config testkube.Config) (testkube.Config, error) { 65 req := UpsertRequest{Config: config} 66 response, err := r.executor.Execute(ctx, CmdConfigUpsert, req) 67 if err != nil { 68 return testkube.Config{}, err 69 } 70 var commandResponse UpsertResponse 71 if err := json.Unmarshal(response, &commandResponse); err != nil { 72 return testkube.Config{}, err 73 } 74 return commandResponse.Config, nil 75 }