7
7
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8
8
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
9
9
container "github.com/scaleway/scaleway-sdk-go/api/container/v1beta1"
10
+ "github.com/scaleway/scaleway-sdk-go/api/registry/v1"
10
11
"github.com/scaleway/scaleway-sdk-go/scw"
11
12
)
12
13
@@ -147,6 +148,34 @@ func TestAccScalewayContainerNamespace_Basic(t *testing.T) {
147
148
})
148
149
}
149
150
151
+ func TestAccScalewayContainerNamespace_DestroyRegistry (t * testing.T ) {
152
+ tt := NewTestTools (t )
153
+ defer tt .Cleanup ()
154
+
155
+ resource .ParallelTest (t , resource.TestCase {
156
+ PreCheck : func () { testAccPreCheck (t ) },
157
+ ProviderFactories : tt .ProviderFactories ,
158
+ CheckDestroy : resource .ComposeTestCheckFunc (
159
+ testAccCheckScalewayContainerNamespaceDestroy (tt ),
160
+ testAccCheckScalewayContainerRegistryDestroy (tt ),
161
+ ),
162
+ Steps : []resource.TestStep {
163
+ {
164
+ Config : `
165
+ resource scaleway_container_namespace main {
166
+ name = "test-cr-ns-01"
167
+ destroy_registry = true
168
+ }
169
+ ` ,
170
+ Check : resource .ComposeTestCheckFunc (
171
+ testAccCheckScalewayContainerNamespaceExists (tt , "scaleway_container_namespace.main" ),
172
+ testCheckResourceAttrUUID ("scaleway_container_namespace.main" , "id" ),
173
+ ),
174
+ },
175
+ },
176
+ })
177
+ }
178
+
150
179
func testAccCheckScalewayContainerNamespaceExists (tt * TestTools , n string ) resource.TestCheckFunc {
151
180
return func (state * terraform.State ) error {
152
181
rs , ok := state .RootModule ().Resources [n ]
@@ -175,7 +204,7 @@ func testAccCheckScalewayContainerNamespaceExists(tt *TestTools, n string) resou
175
204
func testAccCheckScalewayContainerNamespaceDestroy (tt * TestTools ) resource.TestCheckFunc {
176
205
return func (state * terraform.State ) error {
177
206
for _ , rs := range state .RootModule ().Resources {
178
- if rs .Type != "scaleway_container_namespace" {
207
+ if rs .Type != "scaleway_container_namespace" { //nolint:goconst
179
208
continue
180
209
}
181
210
@@ -201,3 +230,33 @@ func testAccCheckScalewayContainerNamespaceDestroy(tt *TestTools) resource.TestC
201
230
return nil
202
231
}
203
232
}
233
+
234
+ func testAccCheckScalewayContainerRegistryDestroy (tt * TestTools ) resource.TestCheckFunc {
235
+ return func (state * terraform.State ) error {
236
+ for _ , rs := range state .RootModule ().Resources {
237
+ if rs .Type != "scaleway_container_namespace" {
238
+ continue
239
+ }
240
+
241
+ api , region , _ , err := registryAPIWithRegionAndID (tt .Meta , rs .Primary .ID )
242
+ if err != nil {
243
+ return err
244
+ }
245
+
246
+ _ , err = api .DeleteNamespace (& registry.DeleteNamespaceRequest {
247
+ NamespaceID : rs .Primary .Attributes ["registry_namespace_id" ],
248
+ Region : region ,
249
+ })
250
+
251
+ if err == nil {
252
+ return fmt .Errorf ("registry namespace (%s) still exists" , rs .Primary .Attributes ["registry_namespace_id" ])
253
+ }
254
+
255
+ if ! is404Error (err ) {
256
+ return err
257
+ }
258
+ }
259
+
260
+ return nil
261
+ }
262
+ }
0 commit comments