/
tencent.go
90 lines (83 loc) · 2.79 KB
/
tencent.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package cloud
import (
"fmt"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525"
)
// TencentCloud struct of tencent cloud
type TencentCloud struct {
SecretID string
SecretKey string
RegionID string
}
// getTenClient get tencent openapi client
func getTenClient(SecretID, SecretKey, RegionID string) (*tke.Client, error) {
credential := common.NewCredential(
SecretID,
SecretKey,
)
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "tke.tencentcloudapi.com"
client, err := tke.NewClient(credential, RegionID, cpf)
return client, err
}
// GetRegionID get region id of tke cluster
func (t *TencentCloud) GetRegionID() ([]string, error) {
client, err := getTenClient(t.SecretID, t.SecretKey, "")
if err != nil {
return nil, err
}
request := tke.NewDescribeRegionsRequest()
response, err := client.DescribeRegions(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
fmt.Printf("An API error has returned: %s", err)
return nil, err
}
var regionList []string
for _, region := range response.Response.RegionInstanceSet {
regionList = append(regionList, *region.RegionName)
}
fmt.Printf("%s", regionList)
return regionList, nil
}
// ListCluster list tke cluster info
func (t *TencentCloud) ListCluster() (clusters []ClusterInfo, err error) {
client, err := getTenClient(t.SecretID, t.SecretKey, t.RegionID)
if err != nil {
return nil, err
}
request := tke.NewDescribeClustersRequest()
response, err := client.DescribeClusters(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
fmt.Printf("An API error has returned: %s", err)
return nil, err
}
var clusterList []ClusterInfo
for _, cluster := range response.Response.Clusters {
clusterList = append(clusterList, ClusterInfo{
Name: *cluster.ClusterName,
ID: *cluster.ClusterId,
RegionID: t.RegionID,
K8sVersion: *cluster.ClusterVersion,
ConsoleURL: fmt.Sprintf("https://console.cloud.tencent.com/tke2/cluster/sub/list/basic/info?clusterId=%s", *cluster.ClusterId),
})
}
return clusterList, err
}
// GetKubeConfig get tke kubeConfig file
func (t *TencentCloud) GetKubeConfig(clusterID string) (string, error) {
client, err := getTenClient(t.SecretID, t.SecretKey, t.RegionID)
if err != nil {
return "", err
}
request := tke.NewDescribeClusterKubeconfigRequest()
request.ClusterId = common.StringPtr(clusterID)
response, err := client.DescribeClusterKubeconfig(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
fmt.Printf("An API error has returned: %s", err)
return "", err
}
return *(response.Response.Kubeconfig), err
}