awspec-api_gateway_extended 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +12 -0
  3. data/.rubocop.yml +93 -0
  4. data/.tachikoma.yml +1 -0
  5. data/.travis.yml +21 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +191 -0
  9. data/Rakefile +64 -0
  10. data/awspec-logo.png +0 -0
  11. data/awspec.gemspec +40 -0
  12. data/bin/console +7 -0
  13. data/bin/setup +5 -0
  14. data/bin/toolbox +5 -0
  15. data/doc/_resource_types/acm.md +24 -0
  16. data/doc/_resource_types/alb.md +47 -0
  17. data/doc/_resource_types/alb_listener.md +29 -0
  18. data/doc/_resource_types/alb_target_group.md +35 -0
  19. data/doc/_resource_types/ami.md +19 -0
  20. data/doc/_resource_types/apigateway.md +7 -0
  21. data/doc/_resource_types/autoscaling_group.md +47 -0
  22. data/doc/_resource_types/batch_compute_environment.md +23 -0
  23. data/doc/_resource_types/batch_job_definition.md +7 -0
  24. data/doc/_resource_types/batch_job_queue.md +23 -0
  25. data/doc/_resource_types/cloudformation_stack.md +8 -0
  26. data/doc/_resource_types/cloudfront_distribution.md +67 -0
  27. data/doc/_resource_types/cloudtrail.md +47 -0
  28. data/doc/_resource_types/cloudwatch_alarm.md +39 -0
  29. data/doc/_resource_types/cloudwatch_logs.md +48 -0
  30. data/doc/_resource_types/codebuild.md +1 -0
  31. data/doc/_resource_types/codedeploy.md +1 -0
  32. data/doc/_resource_types/codedeploy_deployment_group.md +17 -0
  33. data/doc/_resource_types/customer_gateway.md +25 -0
  34. data/doc/_resource_types/directconnect_virtual_interface.md +30 -0
  35. data/doc/_resource_types/dynamodb_table.md +52 -0
  36. data/doc/_resource_types/ebs.md +49 -0
  37. data/doc/_resource_types/ec2.md +203 -0
  38. data/doc/_resource_types/ec2_account_attributes.md +8 -0
  39. data/doc/_resource_types/ecs_cluster.md +23 -0
  40. data/doc/_resource_types/ecs_container_instance.md +18 -0
  41. data/doc/_resource_types/ecs_service.md +15 -0
  42. data/doc/_resource_types/ecs_task_definition.md +15 -0
  43. data/doc/_resource_types/efs.md +15 -0
  44. data/doc/_resource_types/eip.md +23 -0
  45. data/doc/_resource_types/eks.md +14 -0
  46. data/doc/_resource_types/elasticache.md +57 -0
  47. data/doc/_resource_types/elasticache_cache_parameter_group.md +17 -0
  48. data/doc/_resource_types/elasticsearch.md +48 -0
  49. data/doc/_resource_types/elastictranscoder_pipeline.md +15 -0
  50. data/doc/_resource_types/elb.md +82 -0
  51. data/doc/_resource_types/emr.md +21 -0
  52. data/doc/_resource_types/firehose.md +31 -0
  53. data/doc/_resource_types/iam_group.md +94 -0
  54. data/doc/_resource_types/iam_policy.md +39 -0
  55. data/doc/_resource_types/iam_role.md +78 -0
  56. data/doc/_resource_types/iam_user.md +86 -0
  57. data/doc/_resource_types/internet_gateway.md +31 -0
  58. data/doc/_resource_types/kinesis.md +7 -0
  59. data/doc/_resource_types/kms.md +70 -0
  60. data/doc/_resource_types/lambda.md +40 -0
  61. data/doc/_resource_types/lambda_account_settings.md +10 -0
  62. data/doc/_resource_types/launch_configuration.md +15 -0
  63. data/doc/_resource_types/launch_template.md +48 -0
  64. data/doc/_resource_types/mq.md +33 -0
  65. data/doc/_resource_types/nat_gateway.md +39 -0
  66. data/doc/_resource_types/network_acl.md +61 -0
  67. data/doc/_resource_types/network_interface.md +66 -0
  68. data/doc/_resource_types/nlb.md +41 -0
  69. data/doc/_resource_types/nlb_listener.md +29 -0
  70. data/doc/_resource_types/nlb_target_group.md +35 -0
  71. data/doc/_resource_types/rds.md +100 -0
  72. data/doc/_resource_types/rds_account_attributes.md +8 -0
  73. data/doc/_resource_types/rds_db_cluster_parameter_group.md +16 -0
  74. data/doc/_resource_types/rds_db_parameter_group.md +15 -0
  75. data/doc/_resource_types/redshift.md +61 -0
  76. data/doc/_resource_types/redshift_cluster_parameter_group.md +17 -0
  77. data/doc/_resource_types/route53_hosted_zone.md +27 -0
  78. data/doc/_resource_types/route_table.md +60 -0
  79. data/doc/_resource_types/s3_bucket.md +158 -0
  80. data/doc/_resource_types/secretsmanager.md +15 -0
  81. data/doc/_resource_types/security_group.md +44 -0
  82. data/doc/_resource_types/ses_identity.md +17 -0
  83. data/doc/_resource_types/ses_send_quota.md +9 -0
  84. data/doc/_resource_types/sns_topic.md +134 -0
  85. data/doc/_resource_types/sqs.md +7 -0
  86. data/doc/_resource_types/ssm_parameter.md +33 -0
  87. data/doc/_resource_types/subnet.md +41 -0
  88. data/doc/_resource_types/vpc.md +88 -0
  89. data/doc/_resource_types/vpn_connection.md +25 -0
  90. data/doc/_resource_types/vpn_gateway.md +25 -0
  91. data/doc/_resource_types/waf_web_acl.md +29 -0
  92. data/doc/_resource_types/wafregional_web_acl.md +29 -0
  93. data/doc/contributing.md +45 -0
  94. data/doc/resource_types.md +3860 -0
  95. data/exe/awspec +5 -0
  96. data/lib/awspec.rb +23 -0
  97. data/lib/awspec/cli.rb +25 -0
  98. data/lib/awspec/command/generate.rb +69 -0
  99. data/lib/awspec/config.rb +41 -0
  100. data/lib/awspec/error.rb +32 -0
  101. data/lib/awspec/ext.rb +4 -0
  102. data/lib/awspec/ext/array.rb +8 -0
  103. data/lib/awspec/ext/hash.rb +10 -0
  104. data/lib/awspec/ext/string.rb +17 -0
  105. data/lib/awspec/ext/struct.rb +8 -0
  106. data/lib/awspec/generator.rb +55 -0
  107. data/lib/awspec/generator/doc/type.rb +60 -0
  108. data/lib/awspec/generator/doc/type/account.rb +71 -0
  109. data/lib/awspec/generator/doc/type/account_attribute.rb +69 -0
  110. data/lib/awspec/generator/doc/type/account_attribute_base.rb +32 -0
  111. data/lib/awspec/generator/doc/type/acm.rb +19 -0
  112. data/lib/awspec/generator/doc/type/alb.rb +21 -0
  113. data/lib/awspec/generator/doc/type/alb_listener.rb +18 -0
  114. data/lib/awspec/generator/doc/type/alb_target_group.rb +17 -0
  115. data/lib/awspec/generator/doc/type/ami.rb +19 -0
  116. data/lib/awspec/generator/doc/type/apigateway.rb +17 -0
  117. data/lib/awspec/generator/doc/type/autoscaling_group.rb +16 -0
  118. data/lib/awspec/generator/doc/type/base.rb +99 -0
  119. data/lib/awspec/generator/doc/type/batch_compute_environment.rb +23 -0
  120. data/lib/awspec/generator/doc/type/batch_job_definition.rb +17 -0
  121. data/lib/awspec/generator/doc/type/batch_job_queue.rb +17 -0
  122. data/lib/awspec/generator/doc/type/cloudformation_stack.rb +17 -0
  123. data/lib/awspec/generator/doc/type/cloudfront_distribution.rb +20 -0
  124. data/lib/awspec/generator/doc/type/cloudtrail.rb +17 -0
  125. data/lib/awspec/generator/doc/type/cloudwatch_alarm.rb +17 -0
  126. data/lib/awspec/generator/doc/type/cloudwatch_event.rb +17 -0
  127. data/lib/awspec/generator/doc/type/cloudwatch_logs.rb +17 -0
  128. data/lib/awspec/generator/doc/type/codebuild.rb +17 -0
  129. data/lib/awspec/generator/doc/type/codedeploy.rb +17 -0
  130. data/lib/awspec/generator/doc/type/codedeploy_deployment_group.rb +17 -0
  131. data/lib/awspec/generator/doc/type/customer_gateway.rb +19 -0
  132. data/lib/awspec/generator/doc/type/directconnect_virtual_interface.rb +21 -0
  133. data/lib/awspec/generator/doc/type/dynamodb_table.rb +19 -0
  134. data/lib/awspec/generator/doc/type/ebs.rb +19 -0
  135. data/lib/awspec/generator/doc/type/ec2.rb +21 -0
  136. data/lib/awspec/generator/doc/type/ec2_account_attributes.rb +17 -0
  137. data/lib/awspec/generator/doc/type/ecr_repository.rb +15 -0
  138. data/lib/awspec/generator/doc/type/ecs_cluster.rb +19 -0
  139. data/lib/awspec/generator/doc/type/ecs_container_instance.rb +19 -0
  140. data/lib/awspec/generator/doc/type/ecs_service.rb +19 -0
  141. data/lib/awspec/generator/doc/type/ecs_task_definition.rb +19 -0
  142. data/lib/awspec/generator/doc/type/efs.rb +17 -0
  143. data/lib/awspec/generator/doc/type/eip.rb +17 -0
  144. data/lib/awspec/generator/doc/type/eks.rb +20 -0
  145. data/lib/awspec/generator/doc/type/elasticache.rb +22 -0
  146. data/lib/awspec/generator/doc/type/elasticache_cache_parameter_group.rb +17 -0
  147. data/lib/awspec/generator/doc/type/elasticsearch.rb +17 -0
  148. data/lib/awspec/generator/doc/type/elastictranscoder_pipeline.rb +21 -0
  149. data/lib/awspec/generator/doc/type/elb.rb +21 -0
  150. data/lib/awspec/generator/doc/type/emr.rb +19 -0
  151. data/lib/awspec/generator/doc/type/firehose.rb +17 -0
  152. data/lib/awspec/generator/doc/type/iam_group.rb +17 -0
  153. data/lib/awspec/generator/doc/type/iam_policy.rb +17 -0
  154. data/lib/awspec/generator/doc/type/iam_role.rb +17 -0
  155. data/lib/awspec/generator/doc/type/iam_user.rb +17 -0
  156. data/lib/awspec/generator/doc/type/internet_gateway.rb +17 -0
  157. data/lib/awspec/generator/doc/type/kinesis.rb +17 -0
  158. data/lib/awspec/generator/doc/type/kms.rb +17 -0
  159. data/lib/awspec/generator/doc/type/lambda.rb +17 -0
  160. data/lib/awspec/generator/doc/type/lambda_account_settings.rb +17 -0
  161. data/lib/awspec/generator/doc/type/launch_configuration.rb +17 -0
  162. data/lib/awspec/generator/doc/type/launch_template.rb +17 -0
  163. data/lib/awspec/generator/doc/type/mq.rb +19 -0
  164. data/lib/awspec/generator/doc/type/nat_gateway.rb +20 -0
  165. data/lib/awspec/generator/doc/type/network_acl.rb +20 -0
  166. data/lib/awspec/generator/doc/type/network_interface.rb +21 -0
  167. data/lib/awspec/generator/doc/type/nlb.rb +20 -0
  168. data/lib/awspec/generator/doc/type/nlb_listener.rb +18 -0
  169. data/lib/awspec/generator/doc/type/nlb_target_group.rb +17 -0
  170. data/lib/awspec/generator/doc/type/rds.rb +22 -0
  171. data/lib/awspec/generator/doc/type/rds_account_attributes.rb +17 -0
  172. data/lib/awspec/generator/doc/type/rds_db_cluster_parameter_group.rb +15 -0
  173. data/lib/awspec/generator/doc/type/rds_db_parameter_group.rb +15 -0
  174. data/lib/awspec/generator/doc/type/redshift.rb +21 -0
  175. data/lib/awspec/generator/doc/type/redshift_cluster_parameter_group.rb +17 -0
  176. data/lib/awspec/generator/doc/type/route53_hosted_zone.rb +16 -0
  177. data/lib/awspec/generator/doc/type/route_table.rb +16 -0
  178. data/lib/awspec/generator/doc/type/s3_bucket.rb +16 -0
  179. data/lib/awspec/generator/doc/type/secretsmanager.rb +17 -0
  180. data/lib/awspec/generator/doc/type/security_group.rb +16 -0
  181. data/lib/awspec/generator/doc/type/ses_identity.rb +22 -0
  182. data/lib/awspec/generator/doc/type/ses_send_quota.rb +17 -0
  183. data/lib/awspec/generator/doc/type/sns_topic.rb +18 -0
  184. data/lib/awspec/generator/doc/type/sqs.rb +17 -0
  185. data/lib/awspec/generator/doc/type/ssm_parameter.rb +17 -0
  186. data/lib/awspec/generator/doc/type/subnet.rb +18 -0
  187. data/lib/awspec/generator/doc/type/vpc.rb +19 -0
  188. data/lib/awspec/generator/doc/type/vpn_connection.rb +19 -0
  189. data/lib/awspec/generator/doc/type/vpn_gateway.rb +19 -0
  190. data/lib/awspec/generator/doc/type/waf_web_acl.rb +17 -0
  191. data/lib/awspec/generator/doc/type/wafregional_web_acl.rb +17 -0
  192. data/lib/awspec/generator/spec/acm.rb +43 -0
  193. data/lib/awspec/generator/spec/alb.rb +38 -0
  194. data/lib/awspec/generator/spec/alb_listener.rb +110 -0
  195. data/lib/awspec/generator/spec/autoscaling_group.rb +56 -0
  196. data/lib/awspec/generator/spec/cloudwatch_alarm.rb +43 -0
  197. data/lib/awspec/generator/spec/cloudwatch_event.rb +27 -0
  198. data/lib/awspec/generator/spec/cloudwatch_logs.rb +68 -0
  199. data/lib/awspec/generator/spec/codebuild.rb +23 -0
  200. data/lib/awspec/generator/spec/directconnect.rb +33 -0
  201. data/lib/awspec/generator/spec/ebs.rb +55 -0
  202. data/lib/awspec/generator/spec/ec2.rb +82 -0
  203. data/lib/awspec/generator/spec/efs.rb +28 -0
  204. data/lib/awspec/generator/spec/eip.rb +30 -0
  205. data/lib/awspec/generator/spec/elasticsearch.rb +41 -0
  206. data/lib/awspec/generator/spec/elb.rb +59 -0
  207. data/lib/awspec/generator/spec/iam_group.rb +39 -0
  208. data/lib/awspec/generator/spec/iam_policy.rb +56 -0
  209. data/lib/awspec/generator/spec/iam_role.rb +39 -0
  210. data/lib/awspec/generator/spec/iam_user.rb +39 -0
  211. data/lib/awspec/generator/spec/internet_gateway.rb +35 -0
  212. data/lib/awspec/generator/spec/kms.rb +34 -0
  213. data/lib/awspec/generator/spec/lambda.rb +29 -0
  214. data/lib/awspec/generator/spec/nat_gateway.rb +39 -0
  215. data/lib/awspec/generator/spec/network_acl.rb +96 -0
  216. data/lib/awspec/generator/spec/network_interface.rb +80 -0
  217. data/lib/awspec/generator/spec/nlb.rb +38 -0
  218. data/lib/awspec/generator/spec/nlb_listener.rb +110 -0
  219. data/lib/awspec/generator/spec/rds.rb +62 -0
  220. data/lib/awspec/generator/spec/rds_db_cluster_parameter_group.rb +23 -0
  221. data/lib/awspec/generator/spec/rds_db_parameter_group.rb +23 -0
  222. data/lib/awspec/generator/spec/redshift.rb +65 -0
  223. data/lib/awspec/generator/spec/redshift_cluster_parameter_group.rb +23 -0
  224. data/lib/awspec/generator/spec/route53_hosted_zone.rb +72 -0
  225. data/lib/awspec/generator/spec/route_table.rb +128 -0
  226. data/lib/awspec/generator/spec/s3_bucket.rb +124 -0
  227. data/lib/awspec/generator/spec/security_group.rb +95 -0
  228. data/lib/awspec/generator/spec/subnet.rb +47 -0
  229. data/lib/awspec/generator/spec/vpc.rb +65 -0
  230. data/lib/awspec/generator/template.rb +145 -0
  231. data/lib/awspec/helper.rb +8 -0
  232. data/lib/awspec/helper/client_wrap.rb +49 -0
  233. data/lib/awspec/helper/color.rb +5 -0
  234. data/lib/awspec/helper/finder.rb +168 -0
  235. data/lib/awspec/helper/finder/account_attributes.rb +61 -0
  236. data/lib/awspec/helper/finder/acm.rb +40 -0
  237. data/lib/awspec/helper/finder/alb.rb +68 -0
  238. data/lib/awspec/helper/finder/ami.rb +22 -0
  239. data/lib/awspec/helper/finder/apigateway.rb +35 -0
  240. data/lib/awspec/helper/finder/autoscaling.rb +60 -0
  241. data/lib/awspec/helper/finder/batch.rb +20 -0
  242. data/lib/awspec/helper/finder/cloudformation.rb +12 -0
  243. data/lib/awspec/helper/finder/cloudfront.rb +21 -0
  244. data/lib/awspec/helper/finder/cloudtrail.rb +29 -0
  245. data/lib/awspec/helper/finder/cloudwatch.rb +33 -0
  246. data/lib/awspec/helper/finder/cloudwatch_event.rb +15 -0
  247. data/lib/awspec/helper/finder/cloudwatch_logs.rb +93 -0
  248. data/lib/awspec/helper/finder/codebuild.rb +24 -0
  249. data/lib/awspec/helper/finder/codedeploy.rb +15 -0
  250. data/lib/awspec/helper/finder/directconnect.rb +19 -0
  251. data/lib/awspec/helper/finder/dynamodb.rb +10 -0
  252. data/lib/awspec/helper/finder/ebs.rb +43 -0
  253. data/lib/awspec/helper/finder/ec2.rb +203 -0
  254. data/lib/awspec/helper/finder/ecr.rb +10 -0
  255. data/lib/awspec/helper/finder/ecs.rb +45 -0
  256. data/lib/awspec/helper/finder/efs.rb +63 -0
  257. data/lib/awspec/helper/finder/eks.rb +10 -0
  258. data/lib/awspec/helper/finder/elasticache.rb +21 -0
  259. data/lib/awspec/helper/finder/elasticsearch.rb +19 -0
  260. data/lib/awspec/helper/finder/elastictranscoder.rb +21 -0
  261. data/lib/awspec/helper/finder/elb.rb +37 -0
  262. data/lib/awspec/helper/finder/emr.rb +9 -0
  263. data/lib/awspec/helper/finder/firehose.rb +13 -0
  264. data/lib/awspec/helper/finder/iam.rb +118 -0
  265. data/lib/awspec/helper/finder/kinesis.rb +14 -0
  266. data/lib/awspec/helper/finder/kms.rb +38 -0
  267. data/lib/awspec/helper/finder/lambda.rb +35 -0
  268. data/lib/awspec/helper/finder/mq.rb +11 -0
  269. data/lib/awspec/helper/finder/nlb.rb +68 -0
  270. data/lib/awspec/helper/finder/rds.rb +59 -0
  271. data/lib/awspec/helper/finder/redshift.rb +37 -0
  272. data/lib/awspec/helper/finder/route53.rb +41 -0
  273. data/lib/awspec/helper/finder/s3.rb +80 -0
  274. data/lib/awspec/helper/finder/secretsmanager.rb +11 -0
  275. data/lib/awspec/helper/finder/security_group.rb +35 -0
  276. data/lib/awspec/helper/finder/ses.rb +13 -0
  277. data/lib/awspec/helper/finder/sns_topic.rb +82 -0
  278. data/lib/awspec/helper/finder/sqs.rb +17 -0
  279. data/lib/awspec/helper/finder/ssm_parameter.rb +32 -0
  280. data/lib/awspec/helper/finder/subnet.rb +29 -0
  281. data/lib/awspec/helper/finder/vpc.rb +115 -0
  282. data/lib/awspec/helper/finder/waf.rb +53 -0
  283. data/lib/awspec/helper/finder/wafregional.rb +53 -0
  284. data/lib/awspec/helper/type.rb +72 -0
  285. data/lib/awspec/matcher.rb +85 -0
  286. data/lib/awspec/matcher/be_allowed.rb +25 -0
  287. data/lib/awspec/matcher/be_allowed_action.rb +19 -0
  288. data/lib/awspec/matcher/be_attached_to.rb +19 -0
  289. data/lib/awspec/matcher/be_connected_to_vpc.rb +13 -0
  290. data/lib/awspec/matcher/be_denied.rb +25 -0
  291. data/lib/awspec/matcher/be_opened.rb +17 -0
  292. data/lib/awspec/matcher/be_opened_only.rb +17 -0
  293. data/lib/awspec/matcher/belong_to_alb.rb +8 -0
  294. data/lib/awspec/matcher/belong_to_cache_subnet_group.rb +5 -0
  295. data/lib/awspec/matcher/belong_to_cluster_subnet_group.rb +5 -0
  296. data/lib/awspec/matcher/belong_to_db_subnet_group.rb +5 -0
  297. data/lib/awspec/matcher/belong_to_domain.rb +5 -0
  298. data/lib/awspec/matcher/belong_to_iam_group.rb +8 -0
  299. data/lib/awspec/matcher/belong_to_metric.rb +13 -0
  300. data/lib/awspec/matcher/belong_to_nlb.rb +8 -0
  301. data/lib/awspec/matcher/belong_to_replication_group.rb +6 -0
  302. data/lib/awspec/matcher/belong_to_subnet.rb +31 -0
  303. data/lib/awspec/matcher/belong_to_vpc.rb +8 -0
  304. data/lib/awspec/matcher/have_attribute_definition.rb +9 -0
  305. data/lib/awspec/matcher/have_cluster_parameter_group.rb +9 -0
  306. data/lib/awspec/matcher/have_custom_response_error_code.rb +21 -0
  307. data/lib/awspec/matcher/have_db_parameter_group.rb +9 -0
  308. data/lib/awspec/matcher/have_env_var.rb +9 -0
  309. data/lib/awspec/matcher/have_env_var_value.rb +18 -0
  310. data/lib/awspec/matcher/have_env_vars.rb +5 -0
  311. data/lib/awspec/matcher/have_inline_policy.rb +9 -0
  312. data/lib/awspec/matcher/have_key_policy.rb +9 -0
  313. data/lib/awspec/matcher/have_key_schema.rb +9 -0
  314. data/lib/awspec/matcher/have_network_interface.rb +15 -0
  315. data/lib/awspec/matcher/have_option_group.rb +9 -0
  316. data/lib/awspec/matcher/have_origin.rb +21 -0
  317. data/lib/awspec/matcher/have_private_ip_address.rb +9 -0
  318. data/lib/awspec/matcher/have_record_set.rb +41 -0
  319. data/lib/awspec/matcher/have_route.rb +34 -0
  320. data/lib/awspec/matcher/have_rule.rb +36 -0
  321. data/lib/awspec/matcher/have_subscription_attributes.rb +16 -0
  322. data/lib/awspec/matcher/have_subscription_filter.rb +9 -0
  323. data/lib/awspec/matcher/have_tag.rb +13 -0
  324. data/lib/awspec/matcher/have_vpc_peering_connection.rb +13 -0
  325. data/lib/awspec/matcher/include_subscribed.rb +5 -0
  326. data/lib/awspec/resource_reader.rb +58 -0
  327. data/lib/awspec/setup.rb +84 -0
  328. data/lib/awspec/shared_context.rb +37 -0
  329. data/lib/awspec/stub.rb +7 -0
  330. data/lib/awspec/stub/account.rb +147 -0
  331. data/lib/awspec/stub/acm.rb +34 -0
  332. data/lib/awspec/stub/alb.rb +261 -0
  333. data/lib/awspec/stub/alb_listener.rb +307 -0
  334. data/lib/awspec/stub/alb_target_group.rb +325 -0
  335. data/lib/awspec/stub/ami.rb +58 -0
  336. data/lib/awspec/stub/apigateway.rb +114 -0
  337. data/lib/awspec/stub/autoscaling_group.rb +241 -0
  338. data/lib/awspec/stub/batch_compute_environment.rb +40 -0
  339. data/lib/awspec/stub/batch_job_definition.rb +28 -0
  340. data/lib/awspec/stub/batch_job_queue.rb +22 -0
  341. data/lib/awspec/stub/cloudformation_stack.rb +49 -0
  342. data/lib/awspec/stub/cloudfront_distribution.rb +230 -0
  343. data/lib/awspec/stub/cloudtrail.rb +35 -0
  344. data/lib/awspec/stub/cloudwatch_alarm.rb +40 -0
  345. data/lib/awspec/stub/cloudwatch_event.rb +15 -0
  346. data/lib/awspec/stub/cloudwatch_logs.rb +41 -0
  347. data/lib/awspec/stub/codebuild.rb +10 -0
  348. data/lib/awspec/stub/codedeploy.rb +12 -0
  349. data/lib/awspec/stub/codedeploy_deployment_group.rb +39 -0
  350. data/lib/awspec/stub/customer_gateway.rb +16 -0
  351. data/lib/awspec/stub/directconnect_virtual_interface.rb +25 -0
  352. data/lib/awspec/stub/duplicated_resource_type.rb +26 -0
  353. data/lib/awspec/stub/dynamodb_table.rb +34 -0
  354. data/lib/awspec/stub/ebs.rb +67 -0
  355. data/lib/awspec/stub/ec2.rb +235 -0
  356. data/lib/awspec/stub/ec2_has_multi_security_groups.rb +21 -0
  357. data/lib/awspec/stub/ecr_repository.rb +13 -0
  358. data/lib/awspec/stub/ecs.rb +199 -0
  359. data/lib/awspec/stub/ecs_cluster.rb +99 -0
  360. data/lib/awspec/stub/ecs_container_instance.rb +78 -0
  361. data/lib/awspec/stub/ecs_service.rb +51 -0
  362. data/lib/awspec/stub/ecs_task_definition.rb +58 -0
  363. data/lib/awspec/stub/efs.rb +43 -0
  364. data/lib/awspec/stub/eip.rb +13 -0
  365. data/lib/awspec/stub/eks.rb +28 -0
  366. data/lib/awspec/stub/elasticache.rb +91 -0
  367. data/lib/awspec/stub/elasticache_cache_parameter_group.rb +28 -0
  368. data/lib/awspec/stub/elasticsearch.rb +52 -0
  369. data/lib/awspec/stub/elastictranscoder_pipeline.rb +63 -0
  370. data/lib/awspec/stub/elb.rb +166 -0
  371. data/lib/awspec/stub/emr.rb +65 -0
  372. data/lib/awspec/stub/firehose.rb +24 -0
  373. data/lib/awspec/stub/iam_group.rb +90 -0
  374. data/lib/awspec/stub/iam_policy.rb +70 -0
  375. data/lib/awspec/stub/iam_role.rb +60 -0
  376. data/lib/awspec/stub/iam_user.rb +71 -0
  377. data/lib/awspec/stub/internet_gateway.rb +36 -0
  378. data/lib/awspec/stub/kinesis.rb +37 -0
  379. data/lib/awspec/stub/kms.rb +75 -0
  380. data/lib/awspec/stub/lambda.rb +47 -0
  381. data/lib/awspec/stub/launch_configuration.rb +56 -0
  382. data/lib/awspec/stub/launch_template.rb +16 -0
  383. data/lib/awspec/stub/mq.rb +111 -0
  384. data/lib/awspec/stub/nat_gateway.rb +41 -0
  385. data/lib/awspec/stub/network_acl.rb +97 -0
  386. data/lib/awspec/stub/network_interface.rb +144 -0
  387. data/lib/awspec/stub/nlb.rb +119 -0
  388. data/lib/awspec/stub/nlb_listener.rb +131 -0
  389. data/lib/awspec/stub/nlb_target_group.rb +187 -0
  390. data/lib/awspec/stub/rds.rb +106 -0
  391. data/lib/awspec/stub/rds_db_cluster_parameter_group.rb +20 -0
  392. data/lib/awspec/stub/rds_db_parameter_group.rb +20 -0
  393. data/lib/awspec/stub/redshift.rb +67 -0
  394. data/lib/awspec/stub/redshift_cluster_parameter_group.rb +20 -0
  395. data/lib/awspec/stub/route53_hosted_zone.rb +169 -0
  396. data/lib/awspec/stub/route_table.rb +207 -0
  397. data/lib/awspec/stub/s3_bucket.rb +135 -0
  398. data/lib/awspec/stub/secretsmanager.rb +36 -0
  399. data/lib/awspec/stub/security_group.rb +159 -0
  400. data/lib/awspec/stub/ses_identity.rb +41 -0
  401. data/lib/awspec/stub/sns_topic.rb +29 -0
  402. data/lib/awspec/stub/sqs.rb +30 -0
  403. data/lib/awspec/stub/ssm_parameter.rb +16 -0
  404. data/lib/awspec/stub/subnet.rb +33 -0
  405. data/lib/awspec/stub/vpc.rb +114 -0
  406. data/lib/awspec/stub/vpn_connection.rb +20 -0
  407. data/lib/awspec/stub/vpn_gateway.rb +15 -0
  408. data/lib/awspec/stub/waf_web_acl.rb +62 -0
  409. data/lib/awspec/stub/wafregional_web_acl.rb +62 -0
  410. data/lib/awspec/toolbox.rb +18 -0
  411. data/lib/awspec/type/account.rb +39 -0
  412. data/lib/awspec/type/account_attribute.rb +28 -0
  413. data/lib/awspec/type/account_attribute_base.rb +4 -0
  414. data/lib/awspec/type/acm.rb +41 -0
  415. data/lib/awspec/type/alb.rb +54 -0
  416. data/lib/awspec/type/alb_listener.rb +43 -0
  417. data/lib/awspec/type/alb_target_group.rb +22 -0
  418. data/lib/awspec/type/ami.rb +25 -0
  419. data/lib/awspec/type/apigateway.rb +65 -0
  420. data/lib/awspec/type/autoscaling_group.rb +54 -0
  421. data/lib/awspec/type/base.rb +63 -0
  422. data/lib/awspec/type/batch_compute_environment.rb +32 -0
  423. data/lib/awspec/type/batch_job_definition.rb +16 -0
  424. data/lib/awspec/type/batch_job_queue.rb +31 -0
  425. data/lib/awspec/type/cloudformation_stack.rb +11 -0
  426. data/lib/awspec/type/cloudfront_distribution.rb +60 -0
  427. data/lib/awspec/type/cloudtrail.rb +35 -0
  428. data/lib/awspec/type/cloudwatch_alarm.rb +23 -0
  429. data/lib/awspec/type/cloudwatch_event.rb +19 -0
  430. data/lib/awspec/type/cloudwatch_logs.rb +37 -0
  431. data/lib/awspec/type/codebuild.rb +11 -0
  432. data/lib/awspec/type/codedeploy.rb +11 -0
  433. data/lib/awspec/type/codedeploy_deployment_group.rb +33 -0
  434. data/lib/awspec/type/customer_gateway.rb +40 -0
  435. data/lib/awspec/type/directconnect_virtual_interface.rb +27 -0
  436. data/lib/awspec/type/dynamodb_table.rb +40 -0
  437. data/lib/awspec/type/ebs.rb +37 -0
  438. data/lib/awspec/type/ec2.rb +154 -0
  439. data/lib/awspec/type/ec2_account_attributes.rb +7 -0
  440. data/lib/awspec/type/ecr_repository.rb +18 -0
  441. data/lib/awspec/type/ecs_cluster.rb +46 -0
  442. data/lib/awspec/type/ecs_container_instance.rb +30 -0
  443. data/lib/awspec/type/ecs_service.rb +29 -0
  444. data/lib/awspec/type/ecs_task_definition.rb +24 -0
  445. data/lib/awspec/type/efs.rb +22 -0
  446. data/lib/awspec/type/eip.rb +16 -0
  447. data/lib/awspec/type/eks.rb +24 -0
  448. data/lib/awspec/type/elasticache.rb +68 -0
  449. data/lib/awspec/type/elasticache_cache_parameter_group.rb +42 -0
  450. data/lib/awspec/type/elasticsearch.rb +23 -0
  451. data/lib/awspec/type/elastictranscoder_pipeline.rb +21 -0
  452. data/lib/awspec/type/elb.rb +94 -0
  453. data/lib/awspec/type/emr.rb +40 -0
  454. data/lib/awspec/type/firehose.rb +30 -0
  455. data/lib/awspec/type/iam_group.rb +48 -0
  456. data/lib/awspec/type/iam_policy.rb +60 -0
  457. data/lib/awspec/type/iam_role.rb +38 -0
  458. data/lib/awspec/type/iam_user.rb +38 -0
  459. data/lib/awspec/type/internet_gateway.rb +20 -0
  460. data/lib/awspec/type/kinesis.rb +73 -0
  461. data/lib/awspec/type/kms.rb +21 -0
  462. data/lib/awspec/type/lambda.rb +23 -0
  463. data/lib/awspec/type/lambda_account_settings.rb +7 -0
  464. data/lib/awspec/type/launch_configuration.rb +28 -0
  465. data/lib/awspec/type/launch_template.rb +34 -0
  466. data/lib/awspec/type/mq.rb +57 -0
  467. data/lib/awspec/type/nat_gateway.rb +29 -0
  468. data/lib/awspec/type/network_acl.rb +117 -0
  469. data/lib/awspec/type/network_interface.rb +56 -0
  470. data/lib/awspec/type/nlb.rb +35 -0
  471. data/lib/awspec/type/nlb_listener.rb +43 -0
  472. data/lib/awspec/type/nlb_target_group.rb +22 -0
  473. data/lib/awspec/type/rds.rb +109 -0
  474. data/lib/awspec/type/rds_account_attributes.rb +7 -0
  475. data/lib/awspec/type/rds_db_cluster_parameter_group.rb +21 -0
  476. data/lib/awspec/type/rds_db_parameter_group.rb +21 -0
  477. data/lib/awspec/type/redshift.rb +88 -0
  478. data/lib/awspec/type/redshift_cluster_parameter_group.rb +20 -0
  479. data/lib/awspec/type/resource_base.rb +24 -0
  480. data/lib/awspec/type/route53_hosted_zone.rb +65 -0
  481. data/lib/awspec/type/route_table.rb +84 -0
  482. data/lib/awspec/type/s3_bucket.rb +139 -0
  483. data/lib/awspec/type/secretsmanager.rb +14 -0
  484. data/lib/awspec/type/security_group.rb +148 -0
  485. data/lib/awspec/type/ses_identity.rb +70 -0
  486. data/lib/awspec/type/ses_send_quota.rb +7 -0
  487. data/lib/awspec/type/sns_topic.rb +50 -0
  488. data/lib/awspec/type/sqs.rb +37 -0
  489. data/lib/awspec/type/ssm_parameter.rb +26 -0
  490. data/lib/awspec/type/subnet.rb +39 -0
  491. data/lib/awspec/type/vpc.rb +66 -0
  492. data/lib/awspec/type/vpn_connection.rb +40 -0
  493. data/lib/awspec/type/vpn_gateway.rb +40 -0
  494. data/lib/awspec/type/waf_web_acl.rb +24 -0
  495. data/lib/awspec/type/wafregional_web_acl.rb +24 -0
  496. data/lib/awspec/version.rb +3 -0
  497. metadata +744 -0
@@ -0,0 +1,95 @@
1
+ module Awspec::Generator
2
+ module Spec
3
+ class SecurityGroup
4
+ include Awspec::Helper::Finder
5
+ def generate_by_vpc_id(vpc_id)
6
+ describes = %w(
7
+ group_id group_name
8
+ )
9
+ vpc = find_vpc(vpc_id)
10
+ raise 'Not Found VPC' unless vpc
11
+ @vpc_id = vpc[:vpc_id]
12
+ @vpc_tag_name = vpc.tag_name
13
+ sgs = select_security_group_by_vpc_id(@vpc_id)
14
+
15
+ specs = sgs.map do |sg|
16
+ linespecs = generate_linespecs(sg)
17
+ inbound_rule_count = sg[:ip_permissions].reduce(0) do |sum, permission|
18
+ sum += permission.ip_ranges.count + permission.user_id_group_pairs.count
19
+ end
20
+ outbound_rule_count = sg[:ip_permissions_egress].reduce(0) do |sum, permission|
21
+ sum += permission.ip_ranges.count + permission.user_id_group_pairs.count
22
+ end
23
+ content = ERB.new(security_group_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
24
+ end
25
+ specs.join("\n")
26
+ end
27
+
28
+ def generate_linespecs(sg)
29
+ linespecs = []
30
+ permissions = { 'inbound' => sg.ip_permissions, 'outbound' => sg.ip_permissions_egress }
31
+ %w(inbound outbound).each do |inout|
32
+ permissions[inout].each do |permission|
33
+ port = if permission.from_port.nil?
34
+ nil
35
+ elsif permission.from_port == permission.to_port
36
+ permission.from_port
37
+ else
38
+ "'" + permission.from_port.to_s + '-' + permission.to_port.to_s + "'"
39
+ end
40
+
41
+ protocol = if permission.ip_protocol.to_i < 0
42
+ 'all'
43
+ else
44
+ permission.ip_protocol
45
+ end
46
+
47
+ permission.ip_ranges.each do |ip_range|
48
+ target = ip_range.cidr_ip
49
+ linespecs.push(ERB.new(security_group_spec_linetemplate, nil, '-').result(binding))
50
+ end
51
+ permission.user_id_group_pairs.each do |group|
52
+ target = group.group_name
53
+ target = group.group_id unless group.group_name
54
+ linespecs.push(ERB.new(security_group_spec_linetemplate, nil, '-').result(binding))
55
+ end
56
+ end
57
+ end
58
+ linespecs
59
+ end
60
+
61
+ def security_group_spec_linetemplate
62
+ template = <<-'EOF'
63
+ its(:<%= inout %>) { should be_opened<%- unless port.nil? -%>(<%= port %>)<%- end -%>.protocol('<%= protocol %>').for('<%= target %>') }
64
+ EOF
65
+ template
66
+ end
67
+
68
+ def security_group_spec_template
69
+ template = <<-'EOF'
70
+ describe security_group('<%= sg.group_name %>') do
71
+ it { should exist }
72
+ <% describes.each do |describe| %>
73
+ <%- if sg.key?(describe) -%>
74
+ its(:<%= describe %>) { should eq '<%= sg[describe] %>' }
75
+ <%- end -%>
76
+ <% end %>
77
+ <% linespecs.each do |line| %>
78
+ <%= line %>
79
+ <% end %>
80
+ its(:inbound_rule_count) { should eq <%= inbound_rule_count %> }
81
+ its(:outbound_rule_count) { should eq <%= outbound_rule_count %> }
82
+ its(:inbound_permissions_count) { should eq <%= sg.ip_permissions.count %> }
83
+ its(:outbound_permissions_count) { should eq <%= sg.ip_permissions_egress.count %> }
84
+ <%- if @vpc_tag_name -%>
85
+ it { should belong_to_vpc('<%= @vpc_tag_name %>') }
86
+ <%- else -%>
87
+ it { should belong_to_vpc('<%= @vpc_id %>') }
88
+ <%- end -%>
89
+ end
90
+ EOF
91
+ template
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,47 @@
1
+ module Awspec::Generator
2
+ module Spec
3
+ class Subnet
4
+ include Awspec::Helper::Finder
5
+ def generate_by_vpc_id(vpc_id)
6
+ describes = %w(
7
+ subnet_id cidr_block
8
+ )
9
+ vpc = find_vpc(vpc_id)
10
+ raise 'Not Found VPC' unless vpc
11
+ @vpc_id = vpc[:vpc_id]
12
+ @vpc_tag_name = vpc.tag_name
13
+ subnets = select_subnet_by_vpc_id(@vpc_id)
14
+ specs = subnets.map do |subnet|
15
+ subnet_id = subnet[:subnet_id]
16
+ subnet_tag_name = subnet.tag_name
17
+ content = ERB.new(subnet_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
18
+ end
19
+ specs.join("\n")
20
+ end
21
+
22
+ def subnet_spec_template
23
+ template = <<-'EOF'
24
+ <%- if subnet_tag_name -%>
25
+ describe subnet('<%= subnet_tag_name %>') do
26
+ <%- else -%>
27
+ describe subnet('<%= subnet_id %>') do
28
+ <%- end -%>
29
+ it { should exist }
30
+ it { should be_<%= subnet.state %> }
31
+ it { should belong_to_vpc('<%= @vpc_tag_name %>') }
32
+ <% describes.each do |describe| %>
33
+ <%- if subnet.members.include?(describe.to_sym) && !subnet[describe.to_sym].nil? -%>
34
+ <%- if subnet[describe].is_a?(String) -%>
35
+ its(:<%= describe %>) { should eq '<%= subnet[describe] %>' }
36
+ <%- else -%>
37
+ its(:<%= describe %>) { should eq <%= subnet[describe] %> }
38
+ <%- end -%>
39
+ <%- end -%>
40
+ <% end %>
41
+ end
42
+ EOF
43
+ template
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,65 @@
1
+ module Awspec::Generator
2
+ module Spec
3
+ class Vpc
4
+ include Awspec::Helper::Finder
5
+ def generate_by_vpc_id(vpc_id)
6
+ describes = %w(
7
+ vpc_id cidr_block
8
+ )
9
+ vpc = find_vpc(vpc_id)
10
+ raise 'Not Found VPC' unless vpc
11
+ @vpc_id = vpc[:vpc_id]
12
+ @vpc_tag_name = vpc.tag_name
13
+ route_tables = select_route_table_by_vpc_id(@vpc_id)
14
+ network_acls = select_network_acl_by_vpc_id(@vpc_id)
15
+ vpc_attributes = select_vpc_attribute(@vpc_id)
16
+ spec = ERB.new(vpc_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
17
+ end
18
+
19
+ # rubocop:disable all
20
+ def vpc_spec_template
21
+ template = <<-'EOF'
22
+ <%- if @vpc_tag_name -%>
23
+ describe vpc('<%= @vpc_tag_name %>') do
24
+ <%- else -%>
25
+ describe vpc('<%= @vpc_id %>') do
26
+ <%- end -%>
27
+ it { should exist }
28
+ it { should be_<%= vpc.state %> }
29
+ <% describes.each do |describe| %>
30
+ <%- if vpc.key?(describe) -%>
31
+ <%- if vpc[describe].is_a?(String) -%>
32
+ its(:<%= describe %>) { should eq '<%= vpc[describe] %>' }
33
+ <%- else -%>
34
+ its(:<%= describe %>) { should eq <%= vpc[describe] %> }
35
+ <%- end -%>
36
+ <%- end -%>
37
+ <% end %>
38
+ <% route_tables.each do |route_table| %>
39
+ <%- if route_table.tag_name -%>
40
+ it { should have_route_table('<%= route_table.tag_name %>') }
41
+ <%- else -%>
42
+ it { should have_route_table('<%= route_table.route_table_id %>') }
43
+ <%- end -%>
44
+ <% end %>
45
+ <% network_acls.each do |network_acl| %>
46
+ <%- if network_acl.tag_name -%>
47
+ it { should have_network_acl('<%= network_acl.tag_name %>') }
48
+ <%- else -%>
49
+ it { should have_network_acl('<%= network_acl.network_acl_id %>') }
50
+ <%- end -%>
51
+ <% end %>
52
+ <% vpc_attributes.each do |vpc_attribute| %>
53
+ <%- if vpc_attribute[1] -%>
54
+ it { should have_vpc_attribute('<%= vpc_attribute[0] %>') }
55
+ <%- else -%>
56
+ it { should_not have_vpc_attribute('<%= vpc_attribute[0] %>') }
57
+ <%- end -%>
58
+ <% end %>
59
+ end
60
+ EOF
61
+ template
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,145 @@
1
+ module Awspec::Generator
2
+ class Template
3
+ def self.generate(type)
4
+ @type = type
5
+ @account_attribute = false
6
+ @root_path = File.dirname(__FILE__) + '/../../../'
7
+ generate_stub
8
+ generate_type
9
+ generate_type_spec
10
+ generate_generator_doc
11
+ generate_resource_type_doc
12
+ put_message
13
+ end
14
+
15
+ def self.generate_account_attribute(type)
16
+ @type = type
17
+ @account_attribute = true
18
+ @root_path = File.dirname(__FILE__) + '/../../../'
19
+ generate_type
20
+ generate_account_attribute_generator_doc
21
+ generate_resource_type_doc
22
+ put_message
23
+ end
24
+
25
+ def self.generate_type
26
+ path = 'lib/awspec/type/' + @type.underscore + '.rb'
27
+ base = @account_attribute ? 'AccountAttributeBase' : 'ResourceBase'
28
+ content = <<-"EOF"
29
+ module Awspec::Type
30
+ class #{@type.camelize} < #{base}
31
+ def resource_via_client
32
+ @resource_via_client ||= # FIXME
33
+ end
34
+
35
+ def id
36
+ @id ||= # FIXME
37
+ end
38
+ end
39
+ end
40
+ EOF
41
+ self.file_check_and_puts(path, content)
42
+ end
43
+
44
+ def self.generate_stub
45
+ path = 'lib/awspec/stub/' + @type.underscore + '.rb'
46
+ content = <<-"EOF"
47
+ # Aws.config[:ec2] = {
48
+ # stub_responses: true
49
+ # }
50
+ EOF
51
+ self.file_check_and_puts(path, content)
52
+ end
53
+
54
+ def self.generate_type_spec
55
+ path = 'spec/type/' + @type.underscore + '_spec.rb'
56
+ content = <<-"EOF"
57
+ require 'spec_helper'
58
+ Awspec::Stub.load '#{@type.underscore}'
59
+
60
+ describe #{@type.underscore}('my-#{@type.underscore.tr('_', '-')}') do
61
+ it { should exist }
62
+ end
63
+ EOF
64
+ self.file_check_and_puts(path, content)
65
+ end
66
+
67
+ def self.generate_generator_doc
68
+ path = 'lib/awspec/generator/doc/type/' + @type.underscore + '.rb'
69
+ content = <<-"EOF"
70
+ module Awspec::Generator
71
+ module Doc
72
+ module Type
73
+ class #{@type.camelize} < Base
74
+ def initialize
75
+ super
76
+ @type_name = '#{@type.camelize}'
77
+ @type = Awspec::Type::#{@type.camelize}.new('my-#{@type.underscore.tr('_', '-')}')
78
+ @ret = @type.resource_via_client
79
+ @matchers = []
80
+ @ignore_matchers = []
81
+ @describes = []
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+ EOF
88
+ self.file_check_and_puts(path, content)
89
+ end
90
+
91
+ def self.generate_account_attribute_generator_doc
92
+ path = 'lib/awspec/generator/doc/type/' + @type.underscore + '.rb'
93
+ content = <<-"EOF"
94
+ module Awspec::Generator
95
+ module Doc
96
+ module Type
97
+ class #{@type.camelize} < AccountAttributeBase
98
+ def initialize
99
+ super
100
+ @type_name = '#{@type.camelize}'
101
+ @type = Awspec::Type::#{@type.camelize}.new
102
+ @ret = @type.resource_via_client
103
+ @matchers = []
104
+ @ignore_matchers = []
105
+ @describes = []
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ EOF
112
+ self.file_check_and_puts(path, content)
113
+ end
114
+
115
+ def self.generate_resource_type_doc
116
+ path = 'doc/_resource_types/' + @type.underscore + '.md'
117
+ content = <<-"EOF"
118
+ ### exist
119
+ EOF
120
+ self.file_check_and_puts(path, content)
121
+ end
122
+
123
+ def self.put_message
124
+ content = <<-"EOF"
125
+
126
+ Generate #{@type.camelize} template files.
127
+
128
+ * !! AND add '#{@type.underscore}' to Awspec::Helper::Type::TYPES in lib/awspec/helper/type.rb *
129
+ * !! AND add '#{@type.underscore}' client to lib/awspec/helper/finder.rb *
130
+
131
+ EOF
132
+ end
133
+
134
+ def self.file_check_and_puts(path, content)
135
+ if File.exist? @root_path + path
136
+ $stderr.puts "!! #{path} already exists"
137
+ else
138
+ File.open(@root_path + path, 'w') do |f|
139
+ f.puts content
140
+ end
141
+ puts " + #{path}"
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,8 @@
1
+ require 'awspec/helper/color'
2
+ require 'awspec/helper/type'
3
+ require 'awspec/helper/finder'
4
+ extend Awspec::Helper::Type
5
+ class RSpec::Core::ExampleGroup
6
+ extend Awspec::Helper::Type
7
+ include Awspec::Helper::Type
8
+ end
@@ -0,0 +1,49 @@
1
+ require 'awspec/config'
2
+
3
+ module Awspec::Helper
4
+ class ClientWrap
5
+ attr_reader :client, :backoff, :iteration, :backoff_limit, :symbol
6
+ def initialize(real_client = nil)
7
+ raise ArgumentError, 'Client can not be nil' if real_client.nil?
8
+ config = Awspec::Config.instance
9
+ @client = real_client
10
+ @backoff = config[:client_backoff]
11
+ @orig_backoff = @backoff
12
+ @iteration = config[:client_iteration]
13
+ @orig_iter = @iteration
14
+ @backoff_limit = config[:client_backoff_limit]
15
+ # build the symbol we'll use to compare to any errors caught in method_missing
16
+ # below.
17
+ @symbol = real_client.class.to_s.split('::').shift(2).push('Errors', 'RequestLimitExceeded').join('::').to_sym
18
+ end
19
+
20
+ protected
21
+
22
+ # used to capture only the "RequestLimitExceeded" error from an aws
23
+ # client api call. In the case of matching it we want to try again,
24
+ # backing off successively each time, until the backoff_limit is reached or
25
+ # exceeded, in which case, the error will be re-raised and it should fail
26
+ # as expected.
27
+ def method_missing(m, *args, &block)
28
+ begin
29
+ results = client.send(m, *args, &block)
30
+ rescue Exception => e # rubocop:disable Lint/RescueException
31
+ raise unless e.class.to_s == symbol.to_s && backoff < backoff_limit
32
+
33
+ @backoff = backoff + (iteration * iteration * 0.5)
34
+ @iteration += 1
35
+ sleep backoff
36
+ results = self.send(m, *args, &block)
37
+ end
38
+
39
+ reset_backoff
40
+
41
+ results
42
+ end
43
+
44
+ def reset_backoff
45
+ @backoff = @orig_backoff
46
+ @iteration = @orig_iter
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,5 @@
1
+ require 'term/ansicolor'
2
+
3
+ class Color
4
+ extend Term::ANSIColor
5
+ end
@@ -0,0 +1,168 @@
1
+ require 'aws-sdk'
2
+ require 'awspec/helper/finder/nlb'
3
+ require 'awspec/helper/finder/alb'
4
+ require 'awspec/helper/finder/vpc'
5
+ require 'awspec/helper/finder/subnet'
6
+ require 'awspec/helper/finder/ec2'
7
+ require 'awspec/helper/finder/ecr'
8
+ require 'awspec/helper/finder/ecs'
9
+ require 'awspec/helper/finder/efs'
10
+ require 'awspec/helper/finder/security_group'
11
+ require 'awspec/helper/finder/rds'
12
+ require 'awspec/helper/finder/route53'
13
+ require 'awspec/helper/finder/s3'
14
+ require 'awspec/helper/finder/autoscaling'
15
+ require 'awspec/helper/finder/ebs'
16
+ require 'awspec/helper/finder/elb'
17
+ require 'awspec/helper/finder/firehose'
18
+ require 'awspec/helper/finder/lambda'
19
+ require 'awspec/helper/finder/iam'
20
+ require 'awspec/helper/finder/kms'
21
+ require 'awspec/helper/finder/elasticache'
22
+ require 'awspec/helper/finder/elasticsearch'
23
+ require 'awspec/helper/finder/cloudwatch'
24
+ require 'awspec/helper/finder/cloudwatch_event'
25
+ require 'awspec/helper/finder/ses'
26
+ require 'awspec/helper/finder/directconnect'
27
+ require 'awspec/helper/finder/ami'
28
+ require 'awspec/helper/finder/cloudfront'
29
+ require 'awspec/helper/finder/elastictranscoder'
30
+ require 'awspec/helper/finder/cloudtrail'
31
+ require 'awspec/helper/finder/waf'
32
+ require 'awspec/helper/finder/wafregional'
33
+ require 'awspec/helper/finder/acm'
34
+ require 'awspec/helper/finder/cloudwatch_logs'
35
+ require 'awspec/helper/finder/dynamodb'
36
+ require 'awspec/helper/finder/sqs'
37
+ require 'awspec/helper/finder/cloudformation'
38
+ require 'awspec/helper/finder/ssm_parameter'
39
+ require 'awspec/helper/finder/codebuild'
40
+ require 'awspec/helper/finder/apigateway'
41
+ require 'awspec/helper/finder/kinesis'
42
+ require 'awspec/helper/finder/batch'
43
+ require 'awspec/helper/finder/eks'
44
+ require 'awspec/helper/finder/sns_topic'
45
+ require 'awspec/helper/finder/emr'
46
+ require 'awspec/helper/finder/redshift'
47
+ require 'awspec/helper/finder/codedeploy'
48
+ require 'awspec/helper/finder/mq'
49
+ require 'awspec/helper/finder/secretsmanager'
50
+
51
+ require 'awspec/helper/finder/account_attributes'
52
+
53
+ require 'awspec/helper/client_wrap'
54
+
55
+ module Awspec::Helper
56
+ module Finder
57
+ include Awspec::Helper::Finder::Nlb
58
+ include Awspec::Helper::Finder::Alb
59
+ include Awspec::Helper::Finder::Vpc
60
+ include Awspec::Helper::Finder::Subnet
61
+ include Awspec::Helper::Finder::Ec2
62
+ include Awspec::Helper::Finder::Ecr
63
+ include Awspec::Helper::Finder::Ecs
64
+ include Awspec::Helper::Finder::Efs
65
+ include Awspec::Helper::Finder::Firehose
66
+ include Awspec::Helper::Finder::SecurityGroup
67
+ include Awspec::Helper::Finder::Rds
68
+ include Awspec::Helper::Finder::Route53
69
+ include Awspec::Helper::Finder::S3
70
+ include Awspec::Helper::Finder::Autoscaling
71
+ include Awspec::Helper::Finder::Ebs
72
+ include Awspec::Helper::Finder::Elb
73
+ include Awspec::Helper::Finder::Lambda
74
+ include Awspec::Helper::Finder::Iam
75
+ include Awspec::Helper::Finder::Kms
76
+ include Awspec::Helper::Finder::Elasticache
77
+ include Awspec::Helper::Finder::Elasticsearch
78
+ include Awspec::Helper::Finder::Cloudwatch
79
+ include Awspec::Helper::Finder::CloudwatchEvent
80
+ include Awspec::Helper::Finder::Ses
81
+ include Awspec::Helper::Finder::Directconnect
82
+ include Awspec::Helper::Finder::Ami
83
+ include Awspec::Helper::Finder::Cloudfront
84
+ include Awspec::Helper::Finder::Elastictranscoder
85
+ include Awspec::Helper::Finder::Cloudtrail
86
+ include Awspec::Helper::Finder::Waf
87
+ include Awspec::Helper::Finder::WafRegional
88
+ include Awspec::Helper::Finder::Acm
89
+ include Awspec::Helper::Finder::AccountAttributes
90
+ include Awspec::Helper::Finder::CloudwatchLogs
91
+ include Awspec::Helper::Finder::Dynamodb
92
+ include Awspec::Helper::Finder::Sqs
93
+ include Awspec::Helper::Finder::SsmParameter
94
+ include Awspec::Helper::Finder::Cloudformation
95
+ include Awspec::Helper::Finder::Codebuild
96
+ include Awspec::Helper::Finder::Apigateway
97
+ include Awspec::Helper::Finder::Kinesis
98
+ include Awspec::Helper::Finder::Batch
99
+ include Awspec::Helper::Finder::Eks
100
+ include Awspec::Helper::Finder::SNSTopic
101
+ include Awspec::Helper::Finder::Emr
102
+ include Awspec::Helper::Finder::Redshift
103
+ include Awspec::Helper::Finder::Codedeploy
104
+ include Awspec::Helper::Finder::Mq
105
+ include Awspec::Helper::Finder::Secretsmanager
106
+
107
+ CLIENTS = {
108
+ ec2_client: Aws::EC2::Client,
109
+ ecr_client: Aws::ECR::Client,
110
+ ecs_client: Aws::ECS::Client,
111
+ efs_client: Aws::EFS::Client,
112
+ firehose_client: Aws::Firehose::Client,
113
+ rds_client: Aws::RDS::Client,
114
+ route53_client: Aws::Route53::Client,
115
+ s3_client: Aws::S3::Client,
116
+ autoscaling_client: Aws::AutoScaling::Client,
117
+ elb_client: Aws::ElasticLoadBalancing::Client,
118
+ elbv2_client: Aws::ElasticLoadBalancingV2::Client,
119
+ lambda_client: Aws::Lambda::Client,
120
+ iam_client: Aws::IAM::Client,
121
+ kms_client: Aws::KMS::Client,
122
+ elasticache_client: Aws::ElastiCache::Client,
123
+ cloudwatch_client: Aws::CloudWatch::Client,
124
+ cloudwatch_event_client: Aws::CloudWatchEvents::Client,
125
+ ses_client: Aws::SES::Client,
126
+ directconnect_client: Aws::DirectConnect::Client,
127
+ cloudfront_client: Aws::CloudFront::Client,
128
+ elastictranscoder_client: Aws::ElasticTranscoder::Client,
129
+ elasticsearch_client: Aws::ElasticsearchService::Client,
130
+ cloudtrail_client: Aws::CloudTrail::Client,
131
+ waf_client: Aws::WAF::Client,
132
+ wafregional_client: Aws::WAFRegional::Client,
133
+ sts_client: Aws::STS::Client,
134
+ acm_client: Aws::ACM::Client,
135
+ cloudwatch_logs_client: Aws::CloudWatchLogs::Client,
136
+ dynamodb_client: Aws::DynamoDB::Client,
137
+ sqs_client: Aws::SQS::Client,
138
+ ssm_client: Aws::SSM::Client,
139
+ cloudformation_client: Aws::CloudFormation::Client,
140
+ codebuild_client: Aws::CodeBuild::Client,
141
+ apigateway_client: Aws::APIGateway::Client,
142
+ kinesis_client: Aws::Kinesis::Client,
143
+ batch_client: Aws::Batch::Client,
144
+ eks_client: Aws::EKS::Client,
145
+ sns_client: Aws::SNS::Client,
146
+ emr_client: Aws::EMR::Client,
147
+ redshift_client: Aws::Redshift::Client,
148
+ codedeploy_client: Aws::CodeDeploy::Client,
149
+ mq_client: Aws::MQ::Client,
150
+ secretsmanager_client: Aws::SecretsManager::Client
151
+ }
152
+
153
+ CLIENT_OPTIONS = {
154
+ http_proxy: ENV['http_proxy'] || ENV['https_proxy'] || nil
155
+ }
156
+
157
+ CLIENTS.each do |method_name, client|
158
+ define_method method_name do
159
+ unless self.methods.include? "@#{method_name}"
160
+ instance_variable_set(
161
+ "@#{method_name}",
162
+ Awspec::Helper::ClientWrap.new(client.new(CLIENT_OPTIONS))
163
+ )
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end