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  }