github.com/pluralsh/plural-cli@v0.9.5/pkg/api/cluster.go (about)

     1  package api
     2  
     3  import (
     4  	"github.com/pluralsh/gqlclient"
     5  	"github.com/samber/lo"
     6  )
     7  
     8  func (client *client) DestroyCluster(domain, name, provider string) error {
     9  	_, err := client.pluralClient.DestroyCluster(client.ctx, domain, name, gqlclient.Provider(ToGQLClientProvider(provider)))
    10  	if err != nil {
    11  		return err
    12  	}
    13  
    14  	return nil
    15  }
    16  
    17  func (client *client) CreateDependency(source, dest string) error {
    18  	_, err := client.pluralClient.CreateDependency(client.ctx, source, dest)
    19  	return err
    20  }
    21  
    22  func (client *client) PromoteCluster() error {
    23  	_, err := client.pluralClient.PromoteCluster(client.ctx)
    24  	return err
    25  }
    26  
    27  func (client *client) TransferOwnership(name, email string) error {
    28  	_, err := client.pluralClient.TransferOwnership(client.ctx, name, email)
    29  	return err
    30  }
    31  
    32  func (client *client) Clusters() ([]*Cluster, error) {
    33  	resp, err := client.pluralClient.Clusters(client.ctx, nil)
    34  	if err != nil {
    35  		return nil, err
    36  	}
    37  	clusters := make([]*Cluster, 0)
    38  	for _, edge := range resp.Clusters.Edges {
    39  		node := edge.Node
    40  		clusters = append(clusters, &Cluster{
    41  			Id:       node.ID,
    42  			Name:     node.Name,
    43  			Provider: string(node.Provider),
    44  			GitUrl:   lo.FromPtr(node.GitURL),
    45  			Owner: &User{
    46  				Id:    node.Owner.ID,
    47  				Name:  node.Owner.Name,
    48  				Email: node.Owner.Email,
    49  			},
    50  		})
    51  	}
    52  
    53  	return clusters, nil
    54  }
    55  
    56  func (client *client) Cluster(id string) (*Cluster, error) {
    57  	resp, err := client.pluralClient.ClusterInfo(client.ctx, id)
    58  	if err != nil {
    59  		return nil, err
    60  	}
    61  
    62  	node := resp.Cluster
    63  	upgradeInfo := make([]*UpgradeInfo, 0)
    64  	for _, info := range node.UpgradeInfo {
    65  		upgradeInfo = append(upgradeInfo, &UpgradeInfo{
    66  			Count: lo.FromPtr(info.Count),
    67  			Installation: &Installation{
    68  				Repository: convertRepository(info.Installation.Repository),
    69  			},
    70  		})
    71  	}
    72  
    73  	cluster := &Cluster{
    74  		Id:       node.ID,
    75  		Name:     node.Name,
    76  		Provider: string(node.Provider),
    77  		GitUrl:   lo.FromPtr(node.GitURL),
    78  		Owner: &User{
    79  			Id:    node.Owner.ID,
    80  			Name:  node.Owner.Name,
    81  			Email: node.Owner.Email,
    82  		},
    83  		UpgradeInfo: upgradeInfo,
    84  	}
    85  	return cluster, nil
    86  }