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 }