1 Star 0 Fork 0

smartos-club / triton-kubernetes

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
cluster.go 2.51 KB
一键复制 编辑 原始数据 按行查看 历史
Nima Jalali 提交于 2018-08-23 18:02 . Azure HA (#143)
package get
import (
"errors"
"fmt"
"sort"
"github.com/joyent/triton-kubernetes/backend"
"github.com/joyent/triton-kubernetes/shell"
"github.com/manifoldco/promptui"
"github.com/spf13/viper"
)
func GetCluster(remoteBackend backend.Backend) error {
nonInteractiveMode := viper.GetBool("non-interactive")
clusterManagers, err := remoteBackend.States()
if err != nil {
return err
}
if len(clusterManagers) == 0 {
return fmt.Errorf("No cluster managers.")
}
selectedClusterManager := ""
if viper.IsSet("cluster_manager") {
selectedClusterManager = viper.GetString("cluster_manager")
} else if nonInteractiveMode {
return errors.New("cluster_manager must be specified")
} else {
prompt := promptui.Select{
Label: "Cluster Manager",
Items: clusterManagers,
}
_, value, err := prompt.Run()
if err != nil {
return err
}
selectedClusterManager = value
}
// Verify selected cluster manager exists
found := false
for _, clusterManager := range clusterManagers {
if selectedClusterManager == clusterManager {
found = true
break
}
}
if !found {
return fmt.Errorf("Selected cluster manager '%s' does not exist.", selectedClusterManager)
}
state, err := remoteBackend.State(selectedClusterManager)
if err != nil {
return err
}
// Get existing clusters
clusters, err := state.Clusters()
if err != nil {
return err
}
if len(clusters) == 0 {
return fmt.Errorf("No clusters.")
}
selectedClusterKey := ""
if viper.IsSet("cluster_name") {
clusterName := viper.GetString("cluster_name")
clusterKey, ok := clusters[clusterName]
if !ok {
return fmt.Errorf("A cluster named '%s', does not exist.", clusterName)
}
selectedClusterKey = clusterKey
} else if nonInteractiveMode {
return errors.New("cluster_name must be specified")
} else {
clusterNames := make([]string, 0, len(clusters))
for name := range clusters {
clusterNames = append(clusterNames, name)
}
sort.Strings(clusterNames)
prompt := promptui.Select{
Label: "Cluster to view",
Items: clusterNames,
Templates: &promptui.SelectTemplates{
Label: "{{ . }}?",
Active: fmt.Sprintf("%s {{ . | underline }}", promptui.IconSelect),
Inactive: " {{ . }}",
Selected: fmt.Sprintf(`{{ "%s" | green }} {{ "Cluster:" | bold}} {{ . }}`, promptui.IconGood),
},
}
_, value, err := prompt.Run()
if err != nil {
return err
}
selectedClusterKey = clusters[value]
}
err = shell.RunTerraformOutputWithState(state, selectedClusterKey)
if err != nil {
return err
}
return nil
}
1
https://gitee.com/smartos-club/triton-kubernetes.git
git@gitee.com:smartos-club/triton-kubernetes.git
smartos-club
triton-kubernetes
triton-kubernetes
v0.9.1

搜索帮助