From 9d0a3a25f70efe46a81fbe13dbf64625c5410f3e Mon Sep 17 00:00:00 2001 From: Brian Flad Date: Fri, 12 Jun 2020 17:18:44 -0400 Subject: [PATCH] resource/aws_ecs_capacity_provider: Implement API deletion support Reference: https://github.com/aws/containers-roadmap/issues/632 Reference: https://github.com/terraform-providers/terraform-provider-aws/issues/11286 Reference: https://github.com/terraform-providers/terraform-provider-aws/pull/13459 Reference: https://github.com/terraform-providers/terraform-provider-aws/issues/13722 Output from acceptance testing: ``` --- PASS: TestAccAWSEcsCapacityProvider_ManagedScalingPartial (77.79s) --- PASS: TestAccAWSEcsCapacityProvider_basic (78.73s) --- PASS: TestAccAWSEcsCapacityProvider_ManagedScaling (79.56s) --- PASS: TestAccAWSEcsCapacityProvider_disappears (88.48s) --- PASS: TestAccAWSEcsCapacityProvider_Tags (112.82s) ``` Output from sweeper in AWS Commercial: ``` 2020/06/12 16:08:13 [DEBUG] Running Sweepers for region (us-west-2): 2020/06/12 16:08:13 [DEBUG] Running Sweeper (aws_ecs_service) in region (us-west-2) ... 2020/06/12 16:08:15 [DEBUG] Running Sweeper (aws_ecs_cluster) in region (us-west-2) 2020/06/12 16:08:16 [DEBUG] Running Sweeper (aws_ecs_capacity_provider) in region (us-west-2) 2020/06/12 16:08:17 [INFO] Skipping AWS managed ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/FARGATE 2020/06/12 16:08:17 [INFO] Skipping AWS managed ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/FARGATE_SPOT 2020/06/12 16:08:17 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-1166119573944741428 2020/06/12 16:08:43 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-1214316862074147523 2020/06/12 16:09:09 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-1448279580068890702 2020/06/12 16:09:36 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-1694934460247763588 2020/06/12 16:09:51 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-2072503336804561742 2020/06/12 16:10:07 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-2771105388423480732 2020/06/12 16:10:33 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-2945353957962800997 2020/06/12 16:10:50 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-3144225916222141066 2020/06/12 16:11:16 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-3925899594298666043 2020/06/12 16:11:42 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-3962150016779598144 2020/06/12 16:11:58 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-3963492166120243961 2020/06/12 16:12:14 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4003358451789399294 2020/06/12 16:12:25 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4028268499646425502 2020/06/12 16:12:54 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4153885072251016984 2020/06/12 16:13:11 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4166399643645447747 2020/06/12 16:13:38 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4171445239693757279 2020/06/12 16:14:04 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4172310795125459583 2020/06/12 16:14:19 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4229992971219388054 2020/06/12 16:14:46 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4288136819760104193 2020/06/12 16:15:12 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4349585972519622956 2020/06/12 16:15:27 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4381531870881126840 2020/06/12 16:15:54 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4390982455513240070 2020/06/12 16:16:20 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4453882168869869465 2020/06/12 16:16:36 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4462346553509157188 2020/06/12 16:17:02 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4492435413472368421 2020/06/12 16:17:29 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4555905932664127708 2020/06/12 16:17:45 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4820010642292065959 2020/06/12 16:18:11 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4897792034669269783 2020/06/12 16:18:27 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-4952273456961512581 2020/06/12 16:18:53 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5007546636648720970 2020/06/12 16:19:19 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5089921342587722398 2020/06/12 16:19:36 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5131511394050367988 2020/06/12 16:20:02 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5143960229157641932 2020/06/12 16:20:28 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5222153959641548243 2020/06/12 16:20:44 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5269370732004417053 2020/06/12 16:21:00 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5275218636337132552 2020/06/12 16:21:26 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5313165225435669238 2020/06/12 16:21:52 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5317601343303819317 2020/06/12 16:22:08 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5372605070603715784 2020/06/12 16:22:34 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5412502102769973938 2020/06/12 16:23:02 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5487876079860998491 2020/06/12 16:23:18 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5567555810195504947 2020/06/12 16:23:45 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5581045694666886319 2020/06/12 16:24:01 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5662285056233848789 2020/06/12 16:24:27 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5713399100773622260 2020/06/12 16:24:43 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5726353295792014153 2020/06/12 16:25:10 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5865493350582185130 2020/06/12 16:25:36 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-591073430861682304 2020/06/12 16:26:03 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5930476252063755904 2020/06/12 16:26:19 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5937268970324997212 2020/06/12 16:26:45 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-5953099240552596596 2020/06/12 16:27:12 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6057641756664895211 2020/06/12 16:27:38 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6083822096003411781 2020/06/12 16:27:54 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6205754862154661839 2020/06/12 16:28:20 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6215731304109765961 2020/06/12 16:28:47 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6296575898841968917 2020/06/12 16:29:02 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6350919186060242363 2020/06/12 16:29:29 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-639960606487313597 2020/06/12 16:29:55 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6456869725426655556 2020/06/12 16:30:11 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6500304581377895856 2020/06/12 16:30:38 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6653618561107033017 2020/06/12 16:31:04 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6729114271842268893 2020/06/12 16:31:20 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6775995433221542520 2020/06/12 16:31:46 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-6817922588763015267 2020/06/12 16:32:13 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7199599500362353884 2020/06/12 16:32:30 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7252901290386312490 2020/06/12 16:32:58 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7292037842589943866 2020/06/12 16:33:24 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7369060240242835464 2020/06/12 16:33:40 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7382157219112354290 2020/06/12 16:33:56 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7417716994895301914 2020/06/12 16:34:22 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7454183675389434080 2020/06/12 16:34:38 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7537987304515815459 2020/06/12 16:34:54 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7693588145466990158 2020/06/12 16:35:20 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7793135634219297619 2020/06/12 16:35:36 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7836504974793015945 2020/06/12 16:35:51 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7844648380161784907 2020/06/12 16:36:17 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-7863549980287682432 2020/06/12 16:36:33 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8075091395649869677 2020/06/12 16:36:49 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8107431922140390994 2020/06/12 16:37:06 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8212326920035395934 2020/06/12 16:37:32 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8343083231986017479 2020/06/12 16:37:49 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8419113724231589749 2020/06/12 16:38:15 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8479013015637121848 2020/06/12 16:38:31 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8513324427187718577 2020/06/12 16:38:57 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8518715734984959063 2020/06/12 16:39:13 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8523409579138213660 2020/06/12 16:39:29 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8623262108381621889 2020/06/12 16:39:45 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8756990262427217335 2020/06/12 16:40:11 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8792193062271299449 2020/06/12 16:40:38 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8929497185392422181 2020/06/12 16:40:53 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8969595858080325411 2020/06/12 16:41:20 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-8998942493828795857 2020/06/12 16:41:46 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-9035098292990692788 2020/06/12 16:42:04 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-9081526900987647109 2020/06/12 16:42:31 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-9122166340107529186 2020/06/12 16:42:48 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-9126839716162034978 2020/06/12 16:43:14 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-9219402473155355765 2020/06/12 16:43:31 [INFO] Deleting ECS Capacity Provider: arn:aws:ecs:us-west-2:--OMITTED--:capacity-provider/tf-acc-test-961530247773045243 2020/06/12 16:43:59 Sweeper Tests ran successfully: - aws_ecs_service - aws_ecs_cluster - aws_ecs_capacity_provider 2020/06/12 16:43:59 [DEBUG] Running Sweepers for region (us-east-1): 2020/06/12 16:43:59 [DEBUG] Running Sweeper (aws_ecs_service) in region (us-east-1) ... 2020/06/12 16:44:01 [DEBUG] Running Sweeper (aws_ecs_cluster) in region (us-east-1) 2020/06/12 16:44:02 [DEBUG] Running Sweeper (aws_ecs_capacity_provider) in region (us-east-1) 2020/06/12 16:44:02 [INFO] Skipping AWS managed ECS Capacity Provider: arn:aws:ecs:us-east-1:--OMITTED--:capacity-provider/FARGATE 2020/06/12 16:44:02 [INFO] Skipping AWS managed ECS Capacity Provider: arn:aws:ecs:us-east-1:--OMITTED--:capacity-provider/FARGATE_SPOT 2020/06/12 16:44:02 Sweeper Tests ran successfully: - aws_ecs_service - aws_ecs_cluster - aws_ecs_capacity_provider ok github.com/terraform-providers/terraform-provider-aws/aws 2149.008s ``` Output from sweeper in AWS GovCloud (US): ``` 2020/06/12 16:44:12 [DEBUG] Running Sweepers for region (us-gov-west-1): 2020/06/12 16:44:12 [DEBUG] Running Sweeper (aws_ecs_service) in region (us-gov-west-1) ... 2020/06/12 16:44:15 [DEBUG] Running Sweeper (aws_ecs_cluster) in region (us-gov-west-1) 2020/06/12 16:44:15 [DEBUG] Running Sweeper (aws_ecs_capacity_provider) in region (us-gov-west-1) 2020/06/12 16:44:16 [INFO] Skipping AWS managed ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/FARGATE 2020/06/12 16:44:16 [INFO] Skipping AWS managed ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/FARGATE_SPOT 2020/06/12 16:44:16 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-1079359272588390431 2020/06/12 16:44:32 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-1091721403030643061 2020/06/12 16:44:49 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-124118701737104973 2020/06/12 16:45:05 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-1469479908550615785 2020/06/12 16:45:21 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-1495328979254299097 2020/06/12 16:45:37 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-1570192552920022875 2020/06/12 16:45:53 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-1702879253617485878 2020/06/12 16:46:10 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-1733051630240083998 2020/06/12 16:46:26 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-1738132548683597872 2020/06/12 16:46:42 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-1805662976645609271 2020/06/12 16:47:09 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-2062192335317079329 2020/06/12 16:47:25 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-2069707065133575272 2020/06/12 16:47:41 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-2150453984918292807 2020/06/12 16:47:57 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-22275916688579299 2020/06/12 16:48:23 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-2253671394065094375 2020/06/12 16:48:49 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-2339228133098955551 2020/06/12 16:49:07 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-2574156211684266178 2020/06/12 16:49:22 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-2752762380700125995 2020/06/12 16:49:48 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-2848989872978494094 2020/06/12 16:50:04 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-2946953622752534318 2020/06/12 16:50:20 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3090104475356873478 2020/06/12 16:50:46 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3103740844478557513 2020/06/12 16:51:02 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3217263961319180477 2020/06/12 16:51:19 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-326240655165255790 2020/06/12 16:51:35 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3390004477179913570 2020/06/12 16:51:51 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3436726835335989273 2020/06/12 16:52:07 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-34375498090738970 2020/06/12 16:52:33 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3507721227677392471 2020/06/12 16:52:52 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3520766046891218589 2020/06/12 16:53:07 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-358056573252401799 2020/06/12 16:53:24 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3666070025503284267 2020/06/12 16:53:40 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3784109517244378956 2020/06/12 16:54:06 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-3820898817682438418 2020/06/12 16:54:23 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4011506940693376517 2020/06/12 16:54:38 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4129453105226147385 2020/06/12 16:55:04 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4197907046127220584 2020/06/12 16:55:20 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4241770633343722587 2020/06/12 16:55:36 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4368985032101678892 2020/06/12 16:55:51 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4439420728626315697 2020/06/12 16:56:08 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4496714593119619411 2020/06/12 16:56:24 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4501204739468185120 2020/06/12 16:56:40 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4567042511816903030 2020/06/12 16:56:56 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4577682418065442379 2020/06/12 16:57:22 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4676535917872459824 2020/06/12 16:57:38 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4702765677836468414 2020/06/12 16:58:04 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-477025602905606478 2020/06/12 16:58:20 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4853695499339201595 2020/06/12 16:58:36 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-4893123258322799210 2020/06/12 16:58:51 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-5194606615636257359 2020/06/12 16:59:08 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-5206318030543204649 2020/06/12 16:59:25 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-539729257610020514 2020/06/12 16:59:41 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-5586108974564028837 2020/06/12 16:59:57 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-5606817826525324114 2020/06/12 17:00:13 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-5614593278380130199 2020/06/12 17:00:39 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-5714164974269524343 2020/06/12 17:00:56 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-5777601936334426422 2020/06/12 17:01:12 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-5943809032881333271 2020/06/12 17:01:28 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-6245031636814385264 2020/06/12 17:01:45 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-6254238723968645778 2020/06/12 17:02:01 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-6289699168039464661 2020/06/12 17:02:17 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-629892732581660436 2020/06/12 17:02:33 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-637710366700534262 2020/06/12 17:02:50 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-6416618778353496698 2020/06/12 17:03:07 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-6469841988342455847 2020/06/12 17:03:22 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-6574546048640787759 2020/06/12 17:03:38 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-6716032750032290186 2020/06/12 17:03:54 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-6716265721765535018 2020/06/12 17:04:10 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-6875491434630647580 2020/06/12 17:04:26 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-7044978827743853716 2020/06/12 17:04:42 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-705583589249211132 2020/06/12 17:04:58 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-710929199183527839 2020/06/12 17:05:15 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-7138691677249010592 2020/06/12 17:05:33 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-7826596618679709446 2020/06/12 17:05:48 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-7826762715546186838 2020/06/12 17:06:04 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-7861646026289255697 2020/06/12 17:06:20 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-7867972157839323201 2020/06/12 17:06:46 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-7940736878705957151 2020/06/12 17:07:02 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-7979796976286617461 2020/06/12 17:07:18 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8029412752402447798 2020/06/12 17:07:34 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8107260796896052449 2020/06/12 17:08:00 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-819058898540929989 2020/06/12 17:08:16 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8308574199723922186 2020/06/12 17:08:32 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8348767479935320744 2020/06/12 17:08:58 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8445543790345720213 2020/06/12 17:09:14 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8459315989560723109 2020/06/12 17:09:30 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-852133974718322774 2020/06/12 17:09:46 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-857313015089578341 2020/06/12 17:10:02 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8667170982155728193 2020/06/12 17:10:18 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8699906308846331113 2020/06/12 17:10:35 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-872591246763788047 2020/06/12 17:10:51 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8743345519762083033 2020/06/12 17:11:07 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8904882139544984054 2020/06/12 17:11:23 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-8937249607375741125 2020/06/12 17:11:50 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-9001311395659872235 2020/06/12 17:12:05 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-9036553020323666542 2020/06/12 17:12:22 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-9101050942840404948 2020/06/12 17:12:37 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-9175494597999527555 2020/06/12 17:13:05 [INFO] Deleting ECS Capacity Provider: arn:aws-us-gov:ecs:us-gov-west-1:--OMITTED--:capacity-provider/tf-acc-test-922326287809433763 2020/06/12 17:13:20 Sweeper Tests ran successfully: - aws_ecs_service - aws_ecs_cluster - aws_ecs_capacity_provider ok github.com/terraform-providers/terraform-provider-aws/aws 1749.481s ``` --- aws/internal/service/ecs/waiter/status.go | 36 +++++ aws/internal/service/ecs/waiter/waiter.go | 31 ++++ aws/resource_aws_ecs_capacity_provider.go | 25 +++- ...resource_aws_ecs_capacity_provider_test.go | 133 +++++++++++++++++- .../r/ecs_capacity_provider.html.markdown | 2 - 5 files changed, 221 insertions(+), 6 deletions(-) create mode 100644 aws/internal/service/ecs/waiter/status.go create mode 100644 aws/internal/service/ecs/waiter/waiter.go diff --git a/aws/internal/service/ecs/waiter/status.go b/aws/internal/service/ecs/waiter/status.go new file mode 100644 index 00000000000..034af60b4e5 --- /dev/null +++ b/aws/internal/service/ecs/waiter/status.go @@ -0,0 +1,36 @@ +package waiter + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/ecs" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +const ( + // EventSubscription NotFound + CapacityProviderStatusNotFound = "NotFound" + + // EventSubscription Unknown + CapacityProviderStatusUnknown = "Unknown" +) + +// CapacityProviderStatus fetches the Capacity Provider and its Status +func CapacityProviderStatus(conn *ecs.ECS, capacityProvider string) resource.StateRefreshFunc { + return func() (interface{}, string, error) { + input := &ecs.DescribeCapacityProvidersInput{ + CapacityProviders: aws.StringSlice([]string{capacityProvider}), + } + + output, err := conn.DescribeCapacityProviders(input) + + if err != nil { + return nil, CapacityProviderStatusUnknown, err + } + + if len(output.CapacityProviders) == 0 { + return nil, CapacityProviderStatusNotFound, nil + } + + return output.CapacityProviders[0], aws.StringValue(output.CapacityProviders[0].Status), nil + } +} diff --git a/aws/internal/service/ecs/waiter/waiter.go b/aws/internal/service/ecs/waiter/waiter.go new file mode 100644 index 00000000000..33b956fd1ef --- /dev/null +++ b/aws/internal/service/ecs/waiter/waiter.go @@ -0,0 +1,31 @@ +package waiter + +import ( + "time" + + "github.com/aws/aws-sdk-go/service/ecs" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +const ( + // Maximum amount of time to wait for a Capacity Provider to return INACTIVE + CapacityProviderInactiveTimeout = 20 * time.Minute +) + +// CapacityProviderInactive waits for a Capacity Provider to return INACTIVE +func CapacityProviderInactive(conn *ecs.ECS, capacityProvider string) (*ecs.CapacityProvider, error) { + stateConf := &resource.StateChangeConf{ + Pending: []string{ecs.CapacityProviderStatusActive}, + Target: []string{ecs.CapacityProviderStatusInactive}, + Refresh: CapacityProviderStatus(conn, capacityProvider), + Timeout: CapacityProviderInactiveTimeout, + } + + outputRaw, err := stateConf.WaitForState() + + if v, ok := outputRaw.(*ecs.CapacityProvider); ok { + return v, err + } + + return nil, err +} diff --git a/aws/resource_aws_ecs_capacity_provider.go b/aws/resource_aws_ecs_capacity_provider.go index 8d806d293d1..cd3dc032443 100644 --- a/aws/resource_aws_ecs_capacity_provider.go +++ b/aws/resource_aws_ecs_capacity_provider.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/helper/validation" "github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags" + "github.com/terraform-providers/terraform-provider-aws/aws/internal/service/ecs/waiter" ) func resourceAwsEcsCapacityProvider() *schema.Resource { @@ -159,6 +160,12 @@ func resourceAwsEcsCapacityProviderRead(d *schema.ResourceData, meta interface{} return nil } + if aws.StringValue(provider.Status) == ecs.CapacityProviderStatusInactive { + log.Printf("[WARN] ECS Capacity Provider (%s) is INACTIVE, removing from state", d.Id()) + d.SetId("") + return nil + } + d.Set("arn", provider.CapacityProviderArn) d.Set("name", provider.Name) @@ -188,8 +195,22 @@ func resourceAwsEcsCapacityProviderUpdate(d *schema.ResourceData, meta interface } func resourceAwsEcsCapacityProviderDelete(d *schema.ResourceData, meta interface{}) error { - // Reference: https://github.com/aws/containers-roadmap/issues/632 - log.Printf("[WARN] delete is not yet implemented for ECS capacity providers") + conn := meta.(*AWSClient).ecsconn + + input := &ecs.DeleteCapacityProviderInput{ + CapacityProvider: aws.String(d.Id()), + } + + _, err := conn.DeleteCapacityProvider(input) + + if err != nil { + return fmt.Errorf("error deleting ECS Capacity Provider (%s): %w", d.Id(), err) + } + + if _, err := waiter.CapacityProviderInactive(conn, d.Id()); err != nil { + return fmt.Errorf("error waiting for ECS Capacity Provider (%s) to delete: %w", d.Id(), err) + } + return nil } diff --git a/aws/resource_aws_ecs_capacity_provider_test.go b/aws/resource_aws_ecs_capacity_provider_test.go index f31b9a331f3..7d692b53109 100644 --- a/aws/resource_aws_ecs_capacity_provider_test.go +++ b/aws/resource_aws_ecs_capacity_provider_test.go @@ -2,16 +2,100 @@ package aws import ( "fmt" + "log" "testing" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ecs" + multierror "github.com/hashicorp/go-multierror" "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/terraform-providers/terraform-provider-aws/aws/internal/service/ecs/waiter" ) -// TODO sweepers once Delete is implemented +func init() { + resource.AddTestSweepers("aws_ecs_capacity_provider", &resource.Sweeper{ + Name: "aws_ecs_capacity_provider", + F: testSweepEcsCapacityProviders, + Dependencies: []string{ + "aws_ecs_cluster", + "aws_ecs_service", + }, + }) +} + +func testSweepEcsCapacityProviders(region string) error { + client, err := sharedClientForRegion(region) + + if err != nil { + return fmt.Errorf("error getting client: %w", err) + } + + conn := client.(*AWSClient).ecsconn + input := &ecs.DescribeCapacityProvidersInput{} + var sweeperErrs *multierror.Error + + for { + output, err := conn.DescribeCapacityProviders(input) + + if testSweepSkipSweepError(err) { + log.Printf("[WARN] Skipping ECS Capacity Provider sweep for %s: %s", region, err) + return sweeperErrs.ErrorOrNil() + } + + if err != nil { + sweeperErrs = multierror.Append(sweeperErrs, fmt.Errorf("error retrieving ECS Capacity Provider: %w", err)) + return sweeperErrs + } + + for _, capacityProvider := range output.CapacityProviders { + if capacityProvider == nil { + continue + } + + arn := aws.StringValue(capacityProvider.CapacityProviderArn) + input := &ecs.DeleteCapacityProviderInput{ + CapacityProvider: capacityProvider.CapacityProviderArn, + } + + if aws.StringValue(capacityProvider.Name) == "FARGATE" || aws.StringValue(capacityProvider.Name) == "FARGATE_SPOT" { + log.Printf("[INFO] Skipping AWS managed ECS Capacity Provider: %s", arn) + continue + } + + if aws.StringValue(capacityProvider.Status) == ecs.CapacityProviderStatusInactive { + log.Printf("[INFO] Skipping ECS Capacity Provider with INACTIVE status: %s", arn) + continue + } + + log.Printf("[INFO] Deleting ECS Capacity Provider: %s", arn) + _, err := conn.DeleteCapacityProvider(input) + + if err != nil { + sweeperErr := fmt.Errorf("error deleting ECS Capacity Provider (%s): %w", arn, err) + log.Printf("[ERROR] %s", sweeperErr) + sweeperErrs = multierror.Append(sweeperErrs, sweeperErr) + continue + } + + if _, err := waiter.CapacityProviderInactive(conn, arn); err != nil { + sweeperErr := fmt.Errorf("error waiting for ECS Capacity Provider (%s) to delete: %w", arn, err) + log.Printf("[ERROR] %s", sweeperErr) + sweeperErrs = multierror.Append(sweeperErrs, sweeperErr) + continue + } + } + + if aws.StringValue(output.NextToken) == "" { + break + } + + input.NextToken = output.NextToken + } + + return sweeperErrs.ErrorOrNil() +} func TestAccAWSEcsCapacityProvider_basic(t *testing.T) { var provider ecs.CapacityProvider @@ -49,6 +133,28 @@ func TestAccAWSEcsCapacityProvider_basic(t *testing.T) { }) } +func TestAccAWSEcsCapacityProvider_disappears(t *testing.T) { + var provider ecs.CapacityProvider + rName := acctest.RandomWithPrefix("tf-acc-test") + resourceName := "aws_ecs_capacity_provider.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSEcsCapacityProviderDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAWSEcsCapacityProviderConfig(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSEcsCapacityProviderExists(resourceName, &provider), + testAccCheckResourceDisappears(testAccProvider, resourceAwsEcsCapacityProvider(), resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + func TestAccAWSEcsCapacityProvider_ManagedScaling(t *testing.T) { var provider ecs.CapacityProvider rName := acctest.RandomWithPrefix("tf-acc-test") @@ -163,7 +269,30 @@ func TestAccAWSEcsCapacityProvider_Tags(t *testing.T) { // TODO add an update test config - Reference: https://github.com/aws/containers-roadmap/issues/633 func testAccCheckAWSEcsCapacityProviderDestroy(s *terraform.State) error { - // Reference: https://github.com/aws/containers-roadmap/issues/632 + conn := testAccProvider.Meta().(*AWSClient).ecsconn + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_ecs_capacity_provider" { + continue + } + + input := &ecs.DescribeCapacityProvidersInput{ + CapacityProviders: aws.StringSlice([]string{rs.Primary.ID}), + } + + output, err := conn.DescribeCapacityProviders(input) + + if err != nil { + return err + } + + for _, capacityProvider := range output.CapacityProviders { + if aws.StringValue(capacityProvider.CapacityProviderArn) == rs.Primary.ID && aws.StringValue(capacityProvider.Status) != ecs.CapacityProviderStatusInactive { + return fmt.Errorf("ECS Capacity Provider (%s) still exists", rs.Primary.ID) + } + } + } + return nil } diff --git a/website/docs/r/ecs_capacity_provider.html.markdown b/website/docs/r/ecs_capacity_provider.html.markdown index 127938f292e..9eedeb39802 100644 --- a/website/docs/r/ecs_capacity_provider.html.markdown +++ b/website/docs/r/ecs_capacity_provider.html.markdown @@ -10,8 +10,6 @@ description: |- Provides an ECS cluster capacity provider. More information can be found on the [ECS Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-capacity-providers.html). -~> **NOTE:** The AWS API does not currently support deleting ECS cluster capacity providers. Removing this Terraform resource will only remove the Terraform state for it. - ## Example Usage ```hcl