@@ -2,8 +2,6 @@ package secret
2
2
3
3
import (
4
4
"context"
5
- "path/filepath"
6
-
7
5
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
8
6
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9
7
secret "github.com/scaleway/scaleway-sdk-go/api/secret/v1beta1"
@@ -14,6 +12,8 @@ import (
14
12
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account"
15
13
"github.com/scaleway/terraform-provider-scaleway/v2/internal/types"
16
14
"github.com/scaleway/terraform-provider-scaleway/v2/internal/verify"
15
+ "path/filepath"
16
+ "strconv"
17
17
)
18
18
19
19
func ResourceSecret () * schema.Resource {
@@ -115,6 +115,44 @@ func ResourceSecret() *schema.Resource {
115
115
},
116
116
},
117
117
},
118
+ "versions" : {
119
+ Type : schema .TypeList ,
120
+ Optional : true ,
121
+ Elem : & schema.Resource {
122
+ Schema : map [string ]* schema.Schema {
123
+ "revision" : {
124
+ Type : schema .TypeString ,
125
+ Computed : true ,
126
+ Description : "The revision of secret version" ,
127
+ },
128
+ "status" : {
129
+ Type : schema .TypeString ,
130
+ Computed : true ,
131
+ Description : "Status of the secret version" ,
132
+ },
133
+ "created_at" : {
134
+ Type : schema .TypeString ,
135
+ Computed : true ,
136
+ Description : "Date and time of secret version's creation (RFC 3339 format)" ,
137
+ },
138
+ "updated_at" : {
139
+ Type : schema .TypeString ,
140
+ Computed : true ,
141
+ Description : "Date and time of secret version's creation (RFC 3339 format)" ,
142
+ },
143
+ "description" : {
144
+ Type : schema .TypeString ,
145
+ Optional : true ,
146
+ Description : "Description of the secret version" ,
147
+ },
148
+ "latest" : {
149
+ Type : schema .TypeBool ,
150
+ Optional : true ,
151
+ Description : "Returns true if the version is the latest." ,
152
+ },
153
+ },
154
+ },
155
+ },
118
156
"region" : regional .Schema (),
119
157
"project_id" : account .ProjectIDSchema (),
120
158
},
@@ -192,19 +230,47 @@ func ResourceSecretRead(ctx context.Context, d *schema.ResourceData, m interface
192
230
_ = d .Set ("tags" , types .FlattenSliceString (secretResponse .Tags ))
193
231
}
194
232
233
+ versions , err := api .ListSecretVersions (& secret.ListSecretVersionsRequest {
234
+ Region : region ,
235
+ SecretID : id ,
236
+ }, scw .WithContext (ctx ))
237
+ if err != nil {
238
+ if httperrors .Is404 (err ) {
239
+ d .SetId ("" )
240
+
241
+ return nil
242
+ }
243
+
244
+ return diag .FromErr (err )
245
+ }
246
+
195
247
_ = d .Set ("name" , secretResponse .Name )
196
248
_ = d .Set ("description" , types .FlattenStringPtr (secretResponse .Description ))
197
249
_ = d .Set ("created_at" , types .FlattenTime (secretResponse .CreatedAt ))
198
250
_ = d .Set ("updated_at" , types .FlattenTime (secretResponse .UpdatedAt ))
199
251
_ = d .Set ("status" , secretResponse .Status .String ())
200
- _ = d .Set ("version_count" , int (secretResponse . VersionCount ))
252
+ _ = d .Set ("version_count" , int (versions . TotalCount ))
201
253
_ = d .Set ("region" , string (region ))
202
254
_ = d .Set ("project_id" , secretResponse .ProjectID )
203
255
_ = d .Set ("path" , secretResponse .Path )
204
256
_ = d .Set ("protected" , secretResponse .Protected )
205
257
_ = d .Set ("ephemeral_policy" , flattenEphemeralPolicy (secretResponse .EphemeralPolicy ))
206
258
_ = d .Set ("type" , secretResponse .Type )
207
259
260
+ var versionsList []map [string ]interface {}
261
+ for _ , version := range versions .Versions {
262
+ versionsList = append (versionsList , map [string ]interface {}{
263
+ "revision" : strconv .Itoa (int (version .Revision )),
264
+ "status" : version .Status .String (),
265
+ "created_at" : types .FlattenTime (version .CreatedAt ),
266
+ "updated_at" : types .FlattenTime (version .UpdatedAt ),
267
+ "description" : types .FlattenStringPtr (version .Description ),
268
+ "latest" : types .FlattenBoolPtr (& version .Latest ),
269
+ })
270
+ }
271
+
272
+ _ = d .Set ("versions" , versionsList )
273
+
208
274
return nil
209
275
}
210
276
0 commit comments