@@ -2,6 +2,13 @@ package teo
2
2
3
3
import (
4
4
"context"
5
+ "fmt"
6
+ "log"
7
+ "strings"
8
+
9
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
10
+
11
+ "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
5
12
6
13
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
7
14
@@ -96,3 +103,75 @@ func resourceTencentCloudTeoCertificateConfigUpdateOnExit(ctx context.Context) e
96
103
97
104
return nil
98
105
}
106
+
107
+ func resourceTencentCloudTeoCertificateConfigUpdateOnStart (ctx context.Context ) error {
108
+ d := tccommon .ResourceDataFromContext (ctx )
109
+ meta := tccommon .ProviderMetaFromContext (ctx )
110
+
111
+ logId := ctx .Value (tccommon .LogIdKey )
112
+
113
+ request := teo .NewModifyHostsCertificateRequest ()
114
+
115
+ idSplit := strings .Split (d .Id (), tccommon .FILED_SP )
116
+ if len (idSplit ) != 2 {
117
+ return fmt .Errorf ("id is broken,%s" , d .Id ())
118
+ }
119
+ zoneId := idSplit [0 ]
120
+ host := idSplit [1 ]
121
+
122
+ request .ZoneId = & zoneId
123
+ request .Hosts = []* string {& host }
124
+
125
+ if v , ok := d .GetOk ("server_cert_info" ); ok {
126
+ for _ , item := range v .([]interface {}) {
127
+ dMap := item .(map [string ]interface {})
128
+ serverCertInfo := teo.ServerCertInfo {}
129
+ if v , ok := dMap ["cert_id" ]; ok {
130
+ serverCertInfo .CertId = helper .String (v .(string ))
131
+ }
132
+ if v , ok := dMap ["alias" ]; ok && v .(string ) != "" {
133
+ serverCertInfo .Alias = helper .String (v .(string ))
134
+ }
135
+ if v , ok := dMap ["type" ]; ok && v .(string ) != "" {
136
+ serverCertInfo .Type = helper .String (v .(string ))
137
+ }
138
+ if v , ok := dMap ["expire_time" ]; ok && v .(string ) != "" {
139
+ serverCertInfo .ExpireTime = helper .String (v .(string ))
140
+ } else {
141
+ serverCertInfo .ExpireTime = nil
142
+ }
143
+ if v , ok := dMap ["deploy_time" ]; ok && v .(string ) != "" {
144
+ serverCertInfo .DeployTime = helper .String (v .(string ))
145
+ } else {
146
+ serverCertInfo .DeployTime = nil
147
+ }
148
+ if v , ok := dMap ["sign_algo" ]; ok && v .(string ) != "" {
149
+ serverCertInfo .SignAlgo = helper .String (v .(string ))
150
+ }
151
+ if v , ok := dMap ["common_name" ]; ok && v .(string ) != "" {
152
+ serverCertInfo .CommonName = helper .String (v .(string ))
153
+ }
154
+ request .ServerCertInfo = append (request .ServerCertInfo , & serverCertInfo )
155
+ }
156
+ }
157
+
158
+ if v , ok := d .GetOk ("mode" ); ok {
159
+ request .Mode = helper .String (v .(string ))
160
+ }
161
+
162
+ err := resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
163
+ result , e := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseTeoClient ().ModifyHostsCertificate (request )
164
+ if e != nil {
165
+ return tccommon .RetryError (e )
166
+ } else {
167
+ log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , request .GetAction (), request .ToJsonString (), result .ToJsonString ())
168
+ }
169
+ return nil
170
+ })
171
+ if err != nil {
172
+ log .Printf ("[CRITAL]%s update teo certificate failed, reason:%+v" , logId , err )
173
+ return err
174
+ }
175
+
176
+ return nil
177
+ }
0 commit comments