1
1
package tencentcloud
2
2
3
3
import (
4
- "fmt"
5
- "time"
4
+ "log"
6
5
6
+ "github.com/hashicorp/terraform/helper/resource"
7
7
"github.com/hashicorp/terraform/helper/schema"
8
- "github.com/zqfan/tencentcloud-sdk-go/common"
9
- ccs "github.com/zqfan/tencentcloud-sdk-go/services/ccs/unversioned"
8
+ "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
9
+ cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312"
10
+ tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525"
10
11
)
11
12
12
13
func dataSourceTencentCloudContainerClusterInstances () * schema.Resource {
@@ -23,7 +24,6 @@ func dataSourceTencentCloudContainerClusterInstances() *schema.Resource {
23
24
Type : schema .TypeInt ,
24
25
Optional : true ,
25
26
},
26
- // Computed values
27
27
"total_count" : {
28
28
Type : schema .TypeInt ,
29
29
Computed : true ,
@@ -68,66 +68,89 @@ func dataSourceTencentCloudContainerClusterInstances() *schema.Resource {
68
68
}
69
69
}
70
70
71
- func dataSourceTencentCloudContainerClusterInstancesRead (d * schema.ResourceData , m interface {}) error {
72
- client := m .(* TencentCloudClient ).ccsConn
73
- describeClusterInstancesReq := ccs .NewDescribeClusterInstancesRequest ()
71
+ func dataSourceTencentCloudContainerClusterInstancesRead (d * schema.ResourceData , meta interface {}) error {
72
+ defer logElapsed ("data_source.tencentcloud_container_cluster_instances.read" )()
74
73
74
+ logId := getLogId (contextNil )
75
+
76
+ request := tke .NewDescribeClusterInstancesRequest ()
75
77
if clusterId , ok := d .GetOkExists ("cluster_id" ); ok {
76
- describeClusterInstancesReq .ClusterId = common .StringPtr (clusterId .(string ))
78
+ request .ClusterId = common .StringPtr (clusterId .(string ))
77
79
}
78
80
79
81
if limit , ok := d .GetOkExists ("limit" ); ok {
80
- describeClusterInstancesReq .Limit = common .IntPtr (limit .(int ))
82
+ request .Limit = common .Int64Ptr (limit .(int64 ))
81
83
}
82
84
83
- response , err := client .DescribeClusterInstances (describeClusterInstancesReq )
85
+ var response * tke.DescribeClusterInstancesResponse
86
+ err := resource .Retry (readRetryTimeout , func () * resource.RetryError {
87
+ result , e := meta .(* TencentCloudClient ).apiV3Conn .UseTkeClient ().DescribeClusterInstances (request )
88
+ if e != nil {
89
+ log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
90
+ logId , request .GetAction (), request .ToJsonString (), e .Error ())
91
+ return retryError (e )
92
+ }
93
+ response = result
94
+ return nil
95
+ })
84
96
if err != nil {
97
+ log .Printf ("[CRITAL]%s DescribeClusterInstances failed, reason:%s\n " , logId , err .Error ())
85
98
return err
86
99
}
87
100
88
- if response .Code == nil {
89
- return fmt .Errorf ("data_source_tencent_cloud_container_cluster_instances got error, no code response" )
90
- }
101
+ nodes := make ([]map [string ]interface {}, 0 , * response .Response .TotalCount )
102
+ ids := make ([]string , 0 , * response .Response .TotalCount )
103
+ for _ , node := range response .Response .InstanceSet {
104
+ ids = append (ids , * node .InstanceId )
91
105
92
- if * response .Code != 0 {
93
- return fmt .Errorf ("data_source_tencent_cloud_container_cluster_instances got error, code %v , message %v" , * response .Code , * response .CodeDesc )
94
- }
95
-
96
- id := fmt .Sprintf ("%d" , time .Now ().Unix ())
97
- nodes := make ([]map [string ]interface {}, 0 )
98
- for _ , node := range response .Data .Nodes {
99
106
nodeInfo := make (map [string ]interface {})
100
- if node .AbnormalReason != nil {
101
- nodeInfo ["abnormal_reason" ] = * node .AbnormalReason
102
- }
103
- if node .CPU != nil {
104
- nodeInfo ["cpu" ] = * node .CPU
105
- }
106
- if node .Mem != nil {
107
- nodeInfo ["mem" ] = * node .Mem
107
+ nodeInfo ["instance_id" ] = * node .InstanceId
108
+ nodeInfo ["abnormal_reason" ] = * node .FailedReason
109
+ nodeInfo ["wan_ip" ] = ""
110
+ nodeInfo ["lan_ip" ] = ""
111
+ nodeInfo ["cpu" ] = 0
112
+ nodeInfo ["mem" ] = 0
113
+ if * node .InstanceState == "failed" {
114
+ nodeInfo ["is_normal" ] = 0
115
+ } else {
116
+ nodeInfo ["is_normal" ] = 1
108
117
}
109
- if node .InstanceId != nil {
110
- nodeInfo ["instance_id" ] = * node .InstanceId
111
- }
112
- if node .IsNormal != nil {
113
- nodeInfo ["is_normal" ] = * node .IsNormal
114
- }
115
- if node .WanIp != nil {
116
- nodeInfo ["wan_ip" ] = * node .WanIp
118
+
119
+ describeInstancesreq := cvm .NewDescribeInstancesRequest ()
120
+ describeInstancesreq .InstanceIds = []* string {node .InstanceId }
121
+ var describeInstancesResponse * cvm.DescribeInstancesResponse
122
+ err = resource .Retry (readRetryTimeout , func () * resource.RetryError {
123
+ result , e := meta .(* TencentCloudClient ).apiV3Conn .UseCvmClient ().DescribeInstances (describeInstancesreq )
124
+ if e != nil {
125
+ log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
126
+ logId , describeInstancesreq .GetAction (), describeInstancesreq .ToJsonString (), e .Error ())
127
+ return retryError (e )
128
+ }
129
+ describeInstancesResponse = result
130
+ return nil
131
+ })
132
+ if err != nil {
133
+ log .Printf ("[CRITAL]%s DescribeInstances failed, reason:%s\n " , logId , err .Error ())
134
+ return err
117
135
}
118
- if node .LanIp != nil {
119
- nodeInfo ["lan_ip" ] = * node .LanIp
136
+
137
+ if len (describeInstancesResponse .Response .InstanceSet ) > 0 {
138
+ nodeInfo ["cpu" ] = * describeInstancesResponse .Response .InstanceSet [0 ].CPU
139
+ nodeInfo ["mem" ] = * describeInstancesResponse .Response .InstanceSet [0 ].Memory
140
+ if len (describeInstancesResponse .Response .InstanceSet [0 ].PublicIpAddresses ) > 0 {
141
+ nodeInfo ["wan_ip" ] = * describeInstancesResponse .Response .InstanceSet [0 ].PublicIpAddresses [0 ]
142
+ }
143
+ if len (describeInstancesResponse .Response .InstanceSet [0 ].PrivateIpAddresses ) > 0 {
144
+ nodeInfo ["lan_ip" ] = * describeInstancesResponse .Response .InstanceSet [0 ].PrivateIpAddresses [0 ]
145
+ }
120
146
}
147
+
121
148
nodes = append (nodes , nodeInfo )
122
149
}
123
150
151
+ d .SetId (dataResourceIdsHash (ids ))
124
152
d .Set ("nodes" , nodes )
125
- d .SetId (id )
126
- if response .Data .TotalCount != nil {
127
- d .Set ("total_count" , * response .Data .TotalCount )
128
- } else {
129
- d .Set ("total_count" , 0 )
130
- }
153
+ d .Set ("total_count" , * response .Response .TotalCount )
131
154
132
155
return nil
133
156
}
0 commit comments