fog-aws 3.0.0 → 3.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (499) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +10 -0
  3. data/.github/workflows/ruby.yml +36 -0
  4. data/.github/workflows/stale.yml +23 -0
  5. data/.gitignore +1 -0
  6. data/CHANGELOG.md +354 -22
  7. data/Gemfile +1 -1
  8. data/LICENSE.md +1 -1
  9. data/README.md +60 -7
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/fog-aws.gemspec +5 -4
  14. data/lib/fog/aws.rb +27 -19
  15. data/lib/fog/aws/auto_scaling.rb +1 -0
  16. data/lib/fog/aws/cdn.rb +15 -2
  17. data/lib/fog/aws/compute.rb +36 -23
  18. data/lib/fog/aws/credential_fetcher.rb +62 -8
  19. data/lib/fog/aws/dns.rb +154 -5
  20. data/lib/fog/aws/efs.rb +1 -1
  21. data/lib/fog/aws/elasticache.rb +4 -2
  22. data/lib/fog/aws/elb.rb +3 -2
  23. data/lib/fog/aws/elbv2.rb +72 -0
  24. data/lib/fog/aws/glacier.rb +83 -21
  25. data/lib/fog/aws/kinesis.rb +23 -15
  26. data/lib/fog/aws/models/auto_scaling/group.rb +10 -0
  27. data/lib/fog/aws/models/cdn/distribution.rb +4 -4
  28. data/lib/fog/aws/models/cdn/distribution_helper.rb +2 -2
  29. data/lib/fog/aws/models/cdn/distributions.rb +4 -4
  30. data/lib/fog/aws/models/cdn/distributions_helper.rb +2 -2
  31. data/lib/fog/aws/models/cdn/invalidation.rb +2 -2
  32. data/lib/fog/aws/models/cdn/invalidations.rb +3 -3
  33. data/lib/fog/aws/models/cdn/streaming_distribution.rb +3 -3
  34. data/lib/fog/aws/models/cdn/streaming_distributions.rb +4 -4
  35. data/lib/fog/aws/models/compute/address.rb +3 -2
  36. data/lib/fog/aws/models/compute/addresses.rb +3 -3
  37. data/lib/fog/aws/models/compute/dhcp_option.rb +2 -2
  38. data/lib/fog/aws/models/compute/dhcp_options.rb +7 -7
  39. data/lib/fog/aws/models/compute/flavor.rb +2 -2
  40. data/lib/fog/aws/models/compute/flavors.rb +2719 -397
  41. data/lib/fog/aws/models/compute/image.rb +2 -2
  42. data/lib/fog/aws/models/compute/images.rb +3 -3
  43. data/lib/fog/aws/models/compute/internet_gateway.rb +2 -2
  44. data/lib/fog/aws/models/compute/internet_gateways.rb +7 -7
  45. data/lib/fog/aws/models/compute/key_pair.rb +2 -2
  46. data/lib/fog/aws/models/compute/key_pairs.rb +3 -3
  47. data/lib/fog/aws/models/compute/network_acl.rb +4 -4
  48. data/lib/fog/aws/models/compute/network_acls.rb +6 -6
  49. data/lib/fog/aws/models/compute/network_interface.rb +2 -2
  50. data/lib/fog/aws/models/compute/network_interfaces.rb +4 -4
  51. data/lib/fog/aws/models/compute/route_table.rb +2 -2
  52. data/lib/fog/aws/models/compute/route_tables.rb +7 -7
  53. data/lib/fog/aws/models/compute/security_group.rb +2 -2
  54. data/lib/fog/aws/models/compute/security_groups.rb +3 -3
  55. data/lib/fog/aws/models/compute/server.rb +6 -4
  56. data/lib/fog/aws/models/compute/servers.rb +13 -8
  57. data/lib/fog/aws/models/compute/snapshot.rb +9 -8
  58. data/lib/fog/aws/models/compute/snapshots.rb +3 -3
  59. data/lib/fog/aws/models/compute/spot_request.rb +2 -2
  60. data/lib/fog/aws/models/compute/spot_requests.rb +3 -3
  61. data/lib/fog/aws/models/compute/subnet.rb +2 -2
  62. data/lib/fog/aws/models/compute/subnets.rb +3 -3
  63. data/lib/fog/aws/models/compute/tag.rb +2 -2
  64. data/lib/fog/aws/models/compute/tags.rb +3 -3
  65. data/lib/fog/aws/models/compute/volume.rb +3 -3
  66. data/lib/fog/aws/models/compute/volumes.rb +3 -3
  67. data/lib/fog/aws/models/compute/vpc.rb +10 -4
  68. data/lib/fog/aws/models/compute/vpcs.rb +3 -3
  69. data/lib/fog/aws/models/dns/record.rb +2 -2
  70. data/lib/fog/aws/models/dns/records.rb +4 -4
  71. data/lib/fog/aws/models/dns/zone.rb +3 -3
  72. data/lib/fog/aws/models/dns/zones.rb +4 -4
  73. data/lib/fog/aws/models/efs/file_system.rb +4 -0
  74. data/lib/fog/aws/models/rds/cluster.rb +9 -1
  75. data/lib/fog/aws/models/rds/server.rb +66 -63
  76. data/lib/fog/aws/models/storage/directories.rb +3 -3
  77. data/lib/fog/aws/models/storage/directory.rb +40 -6
  78. data/lib/fog/aws/models/storage/file.rb +132 -7
  79. data/lib/fog/aws/models/storage/files.rb +36 -6
  80. data/lib/fog/aws/models/storage/version.rb +2 -2
  81. data/lib/fog/aws/models/storage/versions.rb +3 -3
  82. data/lib/fog/aws/parsers/cdn/distribution.rb +2 -2
  83. data/lib/fog/aws/parsers/cdn/get_distribution_list.rb +2 -2
  84. data/lib/fog/aws/parsers/cdn/get_invalidation.rb +2 -2
  85. data/lib/fog/aws/parsers/cdn/get_invalidation_list.rb +2 -2
  86. data/lib/fog/aws/parsers/cdn/get_streaming_distribution_list.rb +2 -2
  87. data/lib/fog/aws/parsers/cdn/post_invalidation.rb +2 -2
  88. data/lib/fog/aws/parsers/cdn/streaming_distribution.rb +1 -1
  89. data/lib/fog/aws/parsers/compute/allocate_address.rb +2 -2
  90. data/lib/fog/aws/parsers/compute/assign_private_ip_addresses.rb +2 -2
  91. data/lib/fog/aws/parsers/compute/associate_address.rb +2 -2
  92. data/lib/fog/aws/parsers/compute/associate_route_table.rb +2 -2
  93. data/lib/fog/aws/parsers/compute/attach_network_interface.rb +2 -2
  94. data/lib/fog/aws/parsers/compute/attach_volume.rb +2 -2
  95. data/lib/fog/aws/parsers/compute/basic.rb +2 -2
  96. data/lib/fog/aws/parsers/compute/cancel_spot_instance_requests.rb +2 -2
  97. data/lib/fog/aws/parsers/compute/copy_image.rb +2 -2
  98. data/lib/fog/aws/parsers/compute/copy_snapshot.rb +2 -2
  99. data/lib/fog/aws/parsers/compute/create_dhcp_options.rb +2 -2
  100. data/lib/fog/aws/parsers/compute/create_image.rb +2 -2
  101. data/lib/fog/aws/parsers/compute/create_internet_gateway.rb +2 -2
  102. data/lib/fog/aws/parsers/compute/create_key_pair.rb +2 -2
  103. data/lib/fog/aws/parsers/compute/create_network_acl.rb +2 -2
  104. data/lib/fog/aws/parsers/compute/create_network_interface.rb +2 -2
  105. data/lib/fog/aws/parsers/compute/create_route_table.rb +2 -2
  106. data/lib/fog/aws/parsers/compute/create_security_group.rb +2 -2
  107. data/lib/fog/aws/parsers/compute/create_snapshot.rb +3 -3
  108. data/lib/fog/aws/parsers/compute/create_subnet.rb +35 -8
  109. data/lib/fog/aws/parsers/compute/create_volume.rb +2 -2
  110. data/lib/fog/aws/parsers/compute/create_vpc.rb +2 -2
  111. data/lib/fog/aws/parsers/compute/deregister_image.rb +2 -2
  112. data/lib/fog/aws/parsers/compute/describe_account_attributes.rb +2 -2
  113. data/lib/fog/aws/parsers/compute/describe_addresses.rb +32 -11
  114. data/lib/fog/aws/parsers/compute/describe_availability_zones.rb +2 -2
  115. data/lib/fog/aws/parsers/compute/describe_classic_link_instances.rb +2 -2
  116. data/lib/fog/aws/parsers/compute/describe_dhcp_options.rb +2 -2
  117. data/lib/fog/aws/parsers/compute/describe_image_attribute.rb +122 -0
  118. data/lib/fog/aws/parsers/compute/describe_images.rb +2 -2
  119. data/lib/fog/aws/parsers/compute/describe_instance_attribute.rb +2 -2
  120. data/lib/fog/aws/parsers/compute/describe_instance_status.rb +2 -2
  121. data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -2
  122. data/lib/fog/aws/parsers/compute/describe_internet_gateways.rb +2 -2
  123. data/lib/fog/aws/parsers/compute/describe_key_pairs.rb +2 -2
  124. data/lib/fog/aws/parsers/compute/describe_network_acls.rb +2 -2
  125. data/lib/fog/aws/parsers/compute/describe_network_interface_attribute.rb +2 -2
  126. data/lib/fog/aws/parsers/compute/describe_network_interfaces.rb +2 -2
  127. data/lib/fog/aws/parsers/compute/describe_placement_groups.rb +2 -2
  128. data/lib/fog/aws/parsers/compute/describe_regions.rb +2 -2
  129. data/lib/fog/aws/parsers/compute/describe_reserved_instances.rb +2 -2
  130. data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +2 -2
  131. data/lib/fog/aws/parsers/compute/describe_route_tables.rb +2 -2
  132. data/lib/fog/aws/parsers/compute/describe_security_groups.rb +3 -3
  133. data/lib/fog/aws/parsers/compute/describe_snapshots.rb +2 -2
  134. data/lib/fog/aws/parsers/compute/describe_spot_price_history.rb +2 -2
  135. data/lib/fog/aws/parsers/compute/describe_subnets.rb +35 -8
  136. data/lib/fog/aws/parsers/compute/describe_tags.rb +2 -2
  137. data/lib/fog/aws/parsers/compute/describe_volume_status.rb +2 -2
  138. data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -2
  139. data/lib/fog/aws/parsers/compute/describe_volumes_modifications.rb +2 -2
  140. data/lib/fog/aws/parsers/compute/describe_vpc_attribute.rb +2 -2
  141. data/lib/fog/aws/parsers/compute/describe_vpc_classic_link.rb +2 -2
  142. data/lib/fog/aws/parsers/compute/describe_vpc_classic_link_dns_support.rb +2 -2
  143. data/lib/fog/aws/parsers/compute/describe_vpcs.rb +2 -2
  144. data/lib/fog/aws/parsers/compute/detach_volume.rb +2 -2
  145. data/lib/fog/aws/parsers/compute/get_console_output.rb +2 -2
  146. data/lib/fog/aws/parsers/compute/get_password_data.rb +2 -2
  147. data/lib/fog/aws/parsers/compute/import_key_pair.rb +2 -2
  148. data/lib/fog/aws/parsers/compute/modify_subnet_attribute.rb +2 -2
  149. data/lib/fog/aws/parsers/compute/modify_volume.rb +2 -2
  150. data/lib/fog/aws/parsers/compute/monitor_unmonitor_instances.rb +2 -2
  151. data/lib/fog/aws/parsers/compute/move_address_to_vpc.rb +2 -2
  152. data/lib/fog/aws/parsers/compute/network_acl_parser.rb +2 -2
  153. data/lib/fog/aws/parsers/compute/network_interface_parser.rb +2 -2
  154. data/lib/fog/aws/parsers/compute/purchase_reserved_instances_offering.rb +2 -2
  155. data/lib/fog/aws/parsers/compute/register_image.rb +2 -2
  156. data/lib/fog/aws/parsers/compute/replace_network_acl_association.rb +2 -2
  157. data/lib/fog/aws/parsers/compute/restore_address_to_classic.rb +2 -2
  158. data/lib/fog/aws/parsers/compute/run_instances.rb +2 -2
  159. data/lib/fog/aws/parsers/compute/spot_datafeed_subscription.rb +2 -2
  160. data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -2
  161. data/lib/fog/aws/parsers/compute/start_stop_instances.rb +2 -2
  162. data/lib/fog/aws/parsers/compute/terminate_instances.rb +2 -2
  163. data/lib/fog/aws/parsers/dns/change_resource_record_sets.rb +2 -2
  164. data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +3 -3
  165. data/lib/fog/aws/parsers/dns/delete_hosted_zone.rb +2 -2
  166. data/lib/fog/aws/parsers/dns/get_change.rb +2 -2
  167. data/lib/fog/aws/parsers/dns/get_hosted_zone.rb +5 -5
  168. data/lib/fog/aws/parsers/dns/health_check.rb +2 -2
  169. data/lib/fog/aws/parsers/dns/list_health_checks.rb +2 -2
  170. data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +5 -3
  171. data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +2 -2
  172. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +3 -3
  173. data/lib/fog/aws/parsers/elbv2/create_load_balancer.rb +88 -0
  174. data/lib/fog/aws/parsers/elbv2/describe_listeners.rb +110 -0
  175. data/lib/fog/aws/parsers/elbv2/describe_load_balancers.rb +88 -0
  176. data/lib/fog/aws/parsers/elbv2/describe_tags.rb +53 -0
  177. data/lib/fog/aws/parsers/elbv2/empty.rb +10 -0
  178. data/lib/fog/aws/parsers/rds/db_parser.rb +41 -2
  179. data/lib/fog/aws/parsers/storage/access_control_list.rb +2 -2
  180. data/lib/fog/aws/parsers/storage/complete_multipart_upload.rb +2 -2
  181. data/lib/fog/aws/parsers/storage/copy_object.rb +2 -2
  182. data/lib/fog/aws/parsers/storage/cors_configuration.rb +2 -2
  183. data/lib/fog/aws/parsers/storage/delete_multiple_objects.rb +2 -2
  184. data/lib/fog/aws/parsers/storage/get_bucket.rb +2 -2
  185. data/lib/fog/aws/parsers/storage/get_bucket_lifecycle.rb +2 -2
  186. data/lib/fog/aws/parsers/storage/get_bucket_location.rb +2 -2
  187. data/lib/fog/aws/parsers/storage/get_bucket_logging.rb +2 -2
  188. data/lib/fog/aws/parsers/storage/get_bucket_notification.rb +2 -2
  189. data/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb +2 -2
  190. data/lib/fog/aws/parsers/storage/get_bucket_tagging.rb +2 -2
  191. data/lib/fog/aws/parsers/storage/get_bucket_versioning.rb +2 -2
  192. data/lib/fog/aws/parsers/storage/get_bucket_website.rb +2 -2
  193. data/lib/fog/aws/parsers/storage/get_object_tagging.rb +33 -0
  194. data/lib/fog/aws/parsers/storage/get_request_payment.rb +2 -2
  195. data/lib/fog/aws/parsers/storage/get_service.rb +2 -2
  196. data/lib/fog/aws/parsers/storage/initiate_multipart_upload.rb +2 -2
  197. data/lib/fog/aws/parsers/storage/list_multipart_uploads.rb +2 -2
  198. data/lib/fog/aws/parsers/storage/list_parts.rb +2 -2
  199. data/lib/fog/aws/parsers/storage/upload_part_copy_object.rb +18 -0
  200. data/lib/fog/aws/parsers/sts/assume_role_with_web_identity.rb +1 -1
  201. data/lib/fog/aws/requests/auto_scaling/set_instance_protection.rb +67 -0
  202. data/lib/fog/aws/requests/cdn/delete_distribution.rb +6 -6
  203. data/lib/fog/aws/requests/cdn/delete_streaming_distribution.rb +6 -6
  204. data/lib/fog/aws/requests/cdn/get_distribution.rb +5 -5
  205. data/lib/fog/aws/requests/cdn/get_distribution_list.rb +3 -3
  206. data/lib/fog/aws/requests/cdn/get_invalidation.rb +5 -5
  207. data/lib/fog/aws/requests/cdn/get_invalidation_list.rb +4 -4
  208. data/lib/fog/aws/requests/cdn/get_streaming_distribution.rb +5 -5
  209. data/lib/fog/aws/requests/cdn/get_streaming_distribution_list.rb +3 -3
  210. data/lib/fog/aws/requests/cdn/post_distribution.rb +6 -6
  211. data/lib/fog/aws/requests/cdn/post_invalidation.rb +5 -5
  212. data/lib/fog/aws/requests/cdn/post_streaming_distribution.rb +6 -6
  213. data/lib/fog/aws/requests/cdn/put_distribution_config.rb +7 -7
  214. data/lib/fog/aws/requests/cdn/put_streaming_distribution_config.rb +7 -7
  215. data/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +2 -2
  216. data/lib/fog/aws/requests/compute/allocate_address.rb +4 -4
  217. data/lib/fog/aws/requests/compute/assign_private_ip_addresses.rb +5 -5
  218. data/lib/fog/aws/requests/compute/associate_address.rb +7 -7
  219. data/lib/fog/aws/requests/compute/associate_dhcp_options.rb +4 -4
  220. data/lib/fog/aws/requests/compute/associate_route_table.rb +5 -5
  221. data/lib/fog/aws/requests/compute/attach_classic_link_vpc.rb +7 -7
  222. data/lib/fog/aws/requests/compute/attach_internet_gateway.rb +4 -4
  223. data/lib/fog/aws/requests/compute/attach_network_interface.rb +6 -6
  224. data/lib/fog/aws/requests/compute/attach_volume.rb +7 -7
  225. data/lib/fog/aws/requests/compute/authorize_security_group_egress.rb +6 -6
  226. data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +11 -11
  227. data/lib/fog/aws/requests/compute/cancel_spot_instance_requests.rb +4 -4
  228. data/lib/fog/aws/requests/compute/copy_image.rb +3 -3
  229. data/lib/fog/aws/requests/compute/copy_snapshot.rb +3 -3
  230. data/lib/fog/aws/requests/compute/create_dhcp_options.rb +3 -3
  231. data/lib/fog/aws/requests/compute/create_image.rb +3 -3
  232. data/lib/fog/aws/requests/compute/create_internet_gateway.rb +3 -3
  233. data/lib/fog/aws/requests/compute/create_key_pair.rb +4 -4
  234. data/lib/fog/aws/requests/compute/create_network_acl.rb +4 -4
  235. data/lib/fog/aws/requests/compute/create_network_acl_entry.rb +5 -5
  236. data/lib/fog/aws/requests/compute/create_network_interface.rb +6 -6
  237. data/lib/fog/aws/requests/compute/create_placement_group.rb +3 -3
  238. data/lib/fog/aws/requests/compute/create_route.rb +10 -10
  239. data/lib/fog/aws/requests/compute/create_route_table.rb +4 -4
  240. data/lib/fog/aws/requests/compute/create_security_group.rb +4 -4
  241. data/lib/fog/aws/requests/compute/create_snapshot.rb +3 -3
  242. data/lib/fog/aws/requests/compute/create_spot_datafeed_subscription.rb +3 -3
  243. data/lib/fog/aws/requests/compute/create_subnet.rb +6 -6
  244. data/lib/fog/aws/requests/compute/create_tags.rb +3 -3
  245. data/lib/fog/aws/requests/compute/create_volume.rb +11 -11
  246. data/lib/fog/aws/requests/compute/create_vpc.rb +7 -7
  247. data/lib/fog/aws/requests/compute/delete_dhcp_options.rb +4 -4
  248. data/lib/fog/aws/requests/compute/delete_internet_gateway.rb +4 -4
  249. data/lib/fog/aws/requests/compute/delete_key_pair.rb +3 -3
  250. data/lib/fog/aws/requests/compute/delete_network_acl.rb +5 -5
  251. data/lib/fog/aws/requests/compute/delete_network_acl_entry.rb +5 -5
  252. data/lib/fog/aws/requests/compute/delete_network_interface.rb +5 -5
  253. data/lib/fog/aws/requests/compute/delete_placement_group.rb +3 -3
  254. data/lib/fog/aws/requests/compute/delete_route.rb +6 -6
  255. data/lib/fog/aws/requests/compute/delete_route_table.rb +5 -5
  256. data/lib/fog/aws/requests/compute/delete_security_group.rb +9 -9
  257. data/lib/fog/aws/requests/compute/delete_snapshot.rb +4 -4
  258. data/lib/fog/aws/requests/compute/delete_spot_datafeed_subscription.rb +3 -3
  259. data/lib/fog/aws/requests/compute/delete_subnet.rb +4 -4
  260. data/lib/fog/aws/requests/compute/delete_tags.rb +3 -3
  261. data/lib/fog/aws/requests/compute/delete_volume.rb +5 -5
  262. data/lib/fog/aws/requests/compute/delete_vpc.rb +4 -4
  263. data/lib/fog/aws/requests/compute/deregister_image.rb +4 -4
  264. data/lib/fog/aws/requests/compute/describe_account_attributes.rb +3 -3
  265. data/lib/fog/aws/requests/compute/describe_addresses.rb +3 -3
  266. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -3
  267. data/lib/fog/aws/requests/compute/describe_classic_link_instances.rb +3 -3
  268. data/lib/fog/aws/requests/compute/describe_dhcp_options.rb +3 -3
  269. data/lib/fog/aws/requests/compute/describe_image_attribute.rb +74 -0
  270. data/lib/fog/aws/requests/compute/describe_images.rb +3 -3
  271. data/lib/fog/aws/requests/compute/describe_instance_attribute.rb +4 -4
  272. data/lib/fog/aws/requests/compute/describe_instance_status.rb +3 -3
  273. data/lib/fog/aws/requests/compute/describe_instances.rb +4 -4
  274. data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +3 -3
  275. data/lib/fog/aws/requests/compute/describe_key_pairs.rb +3 -3
  276. data/lib/fog/aws/requests/compute/describe_network_acls.rb +3 -3
  277. data/lib/fog/aws/requests/compute/describe_network_interface_attribute.rb +5 -5
  278. data/lib/fog/aws/requests/compute/describe_network_interfaces.rb +3 -3
  279. data/lib/fog/aws/requests/compute/describe_placement_groups.rb +3 -3
  280. data/lib/fog/aws/requests/compute/describe_regions.rb +3 -3
  281. data/lib/fog/aws/requests/compute/describe_reserved_instances.rb +3 -3
  282. data/lib/fog/aws/requests/compute/describe_reserved_instances_offerings.rb +3 -3
  283. data/lib/fog/aws/requests/compute/describe_route_tables.rb +3 -3
  284. data/lib/fog/aws/requests/compute/describe_security_groups.rb +15 -4
  285. data/lib/fog/aws/requests/compute/describe_snapshots.rb +3 -3
  286. data/lib/fog/aws/requests/compute/describe_spot_datafeed_subscription.rb +3 -3
  287. data/lib/fog/aws/requests/compute/describe_spot_instance_requests.rb +3 -3
  288. data/lib/fog/aws/requests/compute/describe_spot_price_history.rb +5 -5
  289. data/lib/fog/aws/requests/compute/describe_subnets.rb +3 -3
  290. data/lib/fog/aws/requests/compute/describe_tags.rb +3 -3
  291. data/lib/fog/aws/requests/compute/describe_volume_status.rb +3 -3
  292. data/lib/fog/aws/requests/compute/describe_volumes.rb +3 -3
  293. data/lib/fog/aws/requests/compute/describe_volumes_modifications.rb +3 -3
  294. data/lib/fog/aws/requests/compute/describe_vpc_attribute.rb +5 -5
  295. data/lib/fog/aws/requests/compute/describe_vpc_classic_link.rb +4 -4
  296. data/lib/fog/aws/requests/compute/describe_vpc_classic_link_dns_support.rb +3 -3
  297. data/lib/fog/aws/requests/compute/describe_vpcs.rb +3 -3
  298. data/lib/fog/aws/requests/compute/detach_classic_link_vpc.rb +5 -5
  299. data/lib/fog/aws/requests/compute/detach_internet_gateway.rb +4 -4
  300. data/lib/fog/aws/requests/compute/detach_network_interface.rb +4 -4
  301. data/lib/fog/aws/requests/compute/detach_volume.rb +5 -5
  302. data/lib/fog/aws/requests/compute/disable_vpc_classic_link.rb +4 -4
  303. data/lib/fog/aws/requests/compute/disable_vpc_classic_link_dns_support.rb +4 -4
  304. data/lib/fog/aws/requests/compute/disassociate_address.rb +5 -5
  305. data/lib/fog/aws/requests/compute/disassociate_route_table.rb +5 -5
  306. data/lib/fog/aws/requests/compute/enable_vpc_classic_link.rb +4 -4
  307. data/lib/fog/aws/requests/compute/enable_vpc_classic_link_dns_support.rb +4 -4
  308. data/lib/fog/aws/requests/compute/get_console_output.rb +4 -4
  309. data/lib/fog/aws/requests/compute/get_password_data.rb +4 -4
  310. data/lib/fog/aws/requests/compute/import_key_pair.rb +4 -4
  311. data/lib/fog/aws/requests/compute/modify_image_attribute.rb +4 -4
  312. data/lib/fog/aws/requests/compute/modify_instance_attribute.rb +3 -3
  313. data/lib/fog/aws/requests/compute/modify_instance_placement.rb +33 -0
  314. data/lib/fog/aws/requests/compute/modify_network_interface_attribute.rb +8 -8
  315. data/lib/fog/aws/requests/compute/modify_snapshot_attribute.rb +3 -3
  316. data/lib/fog/aws/requests/compute/modify_subnet_attribute.rb +3 -3
  317. data/lib/fog/aws/requests/compute/modify_volume.rb +5 -5
  318. data/lib/fog/aws/requests/compute/modify_volume_attribute.rb +4 -4
  319. data/lib/fog/aws/requests/compute/modify_vpc_attribute.rb +7 -7
  320. data/lib/fog/aws/requests/compute/monitor_instances.rb +4 -4
  321. data/lib/fog/aws/requests/compute/move_address_to_vpc.rb +4 -4
  322. data/lib/fog/aws/requests/compute/purchase_reserved_instances_offering.rb +3 -3
  323. data/lib/fog/aws/requests/compute/reboot_instances.rb +4 -4
  324. data/lib/fog/aws/requests/compute/register_image.rb +4 -4
  325. data/lib/fog/aws/requests/compute/release_address.rb +5 -5
  326. data/lib/fog/aws/requests/compute/replace_network_acl_association.rb +5 -5
  327. data/lib/fog/aws/requests/compute/replace_network_acl_entry.rb +5 -5
  328. data/lib/fog/aws/requests/compute/replace_route.rb +10 -10
  329. data/lib/fog/aws/requests/compute/request_spot_instances.rb +8 -8
  330. data/lib/fog/aws/requests/compute/reset_network_interface_attribute.rb +6 -6
  331. data/lib/fog/aws/requests/compute/restore_address_to_classic.rb +5 -5
  332. data/lib/fog/aws/requests/compute/revoke_security_group_egress.rb +4 -4
  333. data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +4 -4
  334. data/lib/fog/aws/requests/compute/run_instances.rb +24 -4
  335. data/lib/fog/aws/requests/compute/start_instances.rb +4 -4
  336. data/lib/fog/aws/requests/compute/stop_instances.rb +15 -7
  337. data/lib/fog/aws/requests/compute/terminate_instances.rb +4 -4
  338. data/lib/fog/aws/requests/compute/unmonitor_instances.rb +4 -4
  339. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +6 -139
  340. data/lib/fog/aws/requests/dns/create_health_check.rb +3 -3
  341. data/lib/fog/aws/requests/dns/create_hosted_zone.rb +4 -4
  342. data/lib/fog/aws/requests/dns/delete_health_check.rb +2 -2
  343. data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +4 -4
  344. data/lib/fog/aws/requests/dns/get_change.rb +4 -4
  345. data/lib/fog/aws/requests/dns/get_health_check.rb +3 -3
  346. data/lib/fog/aws/requests/dns/get_hosted_zone.rb +4 -4
  347. data/lib/fog/aws/requests/dns/list_health_checks.rb +3 -3
  348. data/lib/fog/aws/requests/dns/list_hosted_zones.rb +3 -3
  349. data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +5 -5
  350. data/lib/fog/aws/requests/dynamodb/update_item.rb +6 -5
  351. data/lib/fog/aws/requests/efs/create_file_system.rb +15 -3
  352. data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -7
  353. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +1 -1
  354. data/lib/fog/aws/requests/elb/describe_instance_health.rb +1 -1
  355. data/lib/fog/aws/requests/elb/describe_tags.rb +1 -1
  356. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +1 -1
  357. data/lib/fog/aws/requests/elbv2/add_tags.rb +45 -0
  358. data/lib/fog/aws/requests/elbv2/create_load_balancer.rb +160 -0
  359. data/lib/fog/aws/requests/elbv2/describe_listeners.rb +38 -0
  360. data/lib/fog/aws/requests/elbv2/describe_load_balancers.rb +100 -0
  361. data/lib/fog/aws/requests/elbv2/describe_tags.rb +50 -0
  362. data/lib/fog/aws/requests/elbv2/remove_tags.rb +45 -0
  363. data/lib/fog/aws/requests/lambda/invoke.rb +7 -7
  364. data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +1 -1
  365. data/lib/fog/aws/requests/rds/create_db_instance.rb +1 -1
  366. data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +2 -2
  367. data/lib/fog/aws/requests/rds/modify_db_instance.rb +1 -1
  368. data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +1 -1
  369. data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +3 -3
  370. data/lib/fog/aws/requests/storage/acl_utils.rb +3 -3
  371. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +4 -4
  372. data/lib/fog/aws/requests/storage/copy_object.rb +3 -3
  373. data/lib/fog/aws/requests/storage/cors_utils.rb +3 -3
  374. data/lib/fog/aws/requests/storage/delete_bucket.rb +2 -2
  375. data/lib/fog/aws/requests/storage/delete_bucket_cors.rb +2 -2
  376. data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +2 -2
  377. data/lib/fog/aws/requests/storage/delete_bucket_policy.rb +2 -2
  378. data/lib/fog/aws/requests/storage/delete_bucket_tagging.rb +2 -2
  379. data/lib/fog/aws/requests/storage/delete_bucket_website.rb +2 -2
  380. data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +21 -11
  381. data/lib/fog/aws/requests/storage/delete_object.rb +2 -2
  382. data/lib/fog/aws/requests/storage/delete_object_url.rb +2 -2
  383. data/lib/fog/aws/requests/storage/get_bucket.rb +3 -3
  384. data/lib/fog/aws/requests/storage/get_bucket_acl.rb +4 -4
  385. data/lib/fog/aws/requests/storage/get_bucket_cors.rb +4 -4
  386. data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +3 -3
  387. data/lib/fog/aws/requests/storage/get_bucket_location.rb +5 -6
  388. data/lib/fog/aws/requests/storage/get_bucket_logging.rb +3 -3
  389. data/lib/fog/aws/requests/storage/get_bucket_notification.rb +3 -3
  390. data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +3 -3
  391. data/lib/fog/aws/requests/storage/get_bucket_policy.rb +2 -2
  392. data/lib/fog/aws/requests/storage/get_bucket_tagging.rb +3 -3
  393. data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +3 -3
  394. data/lib/fog/aws/requests/storage/get_bucket_website.rb +3 -3
  395. data/lib/fog/aws/requests/storage/get_object.rb +2 -2
  396. data/lib/fog/aws/requests/storage/get_object_acl.rb +4 -4
  397. data/lib/fog/aws/requests/storage/get_object_http_url.rb +2 -2
  398. data/lib/fog/aws/requests/storage/get_object_https_url.rb +2 -2
  399. data/lib/fog/aws/requests/storage/get_object_tagging.rb +41 -0
  400. data/lib/fog/aws/requests/storage/get_object_torrent.rb +2 -2
  401. data/lib/fog/aws/requests/storage/get_object_url.rb +2 -2
  402. data/lib/fog/aws/requests/storage/get_request_payment.rb +3 -3
  403. data/lib/fog/aws/requests/storage/get_service.rb +5 -5
  404. data/lib/fog/aws/requests/storage/head_bucket.rb +2 -2
  405. data/lib/fog/aws/requests/storage/head_object.rb +2 -2
  406. data/lib/fog/aws/requests/storage/head_object_url.rb +2 -2
  407. data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +4 -4
  408. data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +3 -3
  409. data/lib/fog/aws/requests/storage/list_parts.rb +3 -3
  410. data/lib/fog/aws/requests/storage/post_object_hidden_fields.rb +2 -2
  411. data/lib/fog/aws/requests/storage/post_object_restore.rb +2 -2
  412. data/lib/fog/aws/requests/storage/put_bucket.rb +2 -2
  413. data/lib/fog/aws/requests/storage/put_bucket_acl.rb +4 -4
  414. data/lib/fog/aws/requests/storage/put_bucket_cors.rb +4 -4
  415. data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +2 -2
  416. data/lib/fog/aws/requests/storage/put_bucket_logging.rb +2 -2
  417. data/lib/fog/aws/requests/storage/put_bucket_notification.rb +2 -2
  418. data/lib/fog/aws/requests/storage/put_bucket_policy.rb +2 -2
  419. data/lib/fog/aws/requests/storage/put_bucket_tagging.rb +2 -2
  420. data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +2 -2
  421. data/lib/fog/aws/requests/storage/put_bucket_website.rb +2 -2
  422. data/lib/fog/aws/requests/storage/put_object.rb +9 -7
  423. data/lib/fog/aws/requests/storage/put_object_acl.rb +4 -4
  424. data/lib/fog/aws/requests/storage/put_object_tagging.rb +42 -0
  425. data/lib/fog/aws/requests/storage/put_object_url.rb +2 -2
  426. data/lib/fog/aws/requests/storage/put_request_payment.rb +2 -2
  427. data/lib/fog/aws/requests/storage/shared_mock_methods.rb +4 -3
  428. data/lib/fog/aws/requests/storage/sync_clock.rb +2 -2
  429. data/lib/fog/aws/requests/storage/upload_part.rb +3 -3
  430. data/lib/fog/aws/requests/storage/upload_part_copy.rb +119 -0
  431. data/lib/fog/aws/requests/sts/assume_role_with_web_identity.rb +7 -6
  432. data/lib/fog/aws/service_mapper.rb +5 -5
  433. data/lib/fog/aws/storage.rb +50 -19
  434. data/lib/fog/aws/version.rb +1 -1
  435. data/tests/credentials_tests.rb +102 -39
  436. data/tests/helper.rb +2 -2
  437. data/tests/helpers/collection_helper.rb +3 -4
  438. data/tests/helpers/compute/flavors_helper.rb +1 -5
  439. data/tests/helpers/compute/server_helper.rb +1 -3
  440. data/tests/helpers/compute/servers_helper.rb +0 -2
  441. data/tests/helpers/dns_helper.rb +32 -31
  442. data/tests/helpers/formats_helper.rb +58 -56
  443. data/tests/helpers/formats_helper_tests.rb +22 -25
  444. data/tests/helpers/mock_helper.rb +96 -96
  445. data/tests/helpers/model_helper.rb +4 -5
  446. data/tests/helpers/responds_to_helper.rb +1 -1
  447. data/tests/helpers/schema_validator_tests.rb +21 -24
  448. data/tests/helpers/succeeds_helper.rb +2 -2
  449. data/tests/models/compute/address_tests.rb +1 -1
  450. data/tests/models/compute/network_acl_tests.rb +4 -4
  451. data/tests/models/compute/security_group_tests.rb +1 -1
  452. data/tests/models/compute/volume_tests.rb +1 -1
  453. data/tests/models/elb/model_tests.rb +1 -1
  454. data/tests/models/storage/directory_tests.rb +113 -2
  455. data/tests/models/storage/files_tests.rb +32 -0
  456. data/tests/parsers/compute/describe_images_tests.rb +2 -2
  457. data/tests/parsers/elb/describe_load_balancers.rb +1 -1
  458. data/tests/parsers/elbv2/create_load_balancer_tests.rb +48 -0
  459. data/tests/parsers/elbv2/describe_listeners_tests.rb +76 -0
  460. data/tests/parsers/elbv2/describe_load_balancers_tests.rb +54 -0
  461. data/tests/parsers/elbv2/describe_tags_tests.rb +35 -0
  462. data/tests/requests/auto_scaling/auto_scaling_tests.rb +8 -0
  463. data/tests/requests/compute/address_tests.rb +9 -9
  464. data/tests/requests/compute/assign_private_ip_tests.rb +3 -3
  465. data/tests/requests/compute/image_tests.rb +11 -2
  466. data/tests/requests/compute/instance_attrib_tests.rb +1 -1
  467. data/tests/requests/compute/instance_tests.rb +5 -5
  468. data/tests/requests/compute/internet_gateway_tests.rb +1 -1
  469. data/tests/requests/compute/key_pair_tests.rb +1 -1
  470. data/tests/requests/compute/network_acl_tests.rb +2 -2
  471. data/tests/requests/compute/network_interface_tests.rb +6 -6
  472. data/tests/requests/compute/placement_group_tests.rb +2 -2
  473. data/tests/requests/compute/region_tests.rb +4 -4
  474. data/tests/requests/compute/route_tests.rb +24 -24
  475. data/tests/requests/compute/security_group_tests.rb +14 -14
  476. data/tests/requests/compute/snapshot_tests.rb +1 -1
  477. data/tests/requests/compute/spot_datafeed_subscription_tests.rb +1 -1
  478. data/tests/requests/compute/subnet_tests.rb +3 -3
  479. data/tests/requests/compute/tag_tests.rb +3 -3
  480. data/tests/requests/compute/volume_tests.rb +11 -11
  481. data/tests/requests/compute/vpc_tests.rb +9 -3
  482. data/tests/requests/dns/change_resource_record_sets_tests.rb +3 -3
  483. data/tests/requests/efs/helper.rb +2 -0
  484. data/tests/requests/elbv2/helper.rb +66 -0
  485. data/tests/requests/elbv2/load_balancer_tests.rb +50 -0
  486. data/tests/requests/glacier/tree_hash_tests.rb +29 -0
  487. data/tests/requests/storage/acl_utils_tests.rb +24 -24
  488. data/tests/requests/storage/bucket_tests.rb +1 -1
  489. data/tests/requests/storage/cors_utils_tests.rb +14 -14
  490. data/tests/requests/storage/multipart_copy_tests.rb +93 -0
  491. data/tests/requests/storage/object_tests.rb +7 -0
  492. data/tests/requests/storage/versioning_tests.rb +38 -0
  493. data/tests/requests/sts/assume_role_with_web_identity_tests.rb +2 -0
  494. data/tests/signaturev4_tests.rb +21 -22
  495. data/tests/signed_params_tests.rb +7 -7
  496. data/tests/storage_tests.rb +1 -1
  497. metadata +61 -17
  498. data/.travis.yml +0 -55
  499. data/gemfiles/Gemfile-ruby-2.0 +0 -7
@@ -1,7 +1,6 @@
1
1
  def flavors_tests(connection, params = {}, mocks_implemented = true)
2
2
  tests('success') do
3
-
4
- tests("#all").succeeds do
3
+ tests('#all').succeeds do
5
4
  pending if Fog.mocking? && !mocks_implemented
6
5
  connection.flavors.all
7
6
  end
@@ -14,11 +13,9 @@ def flavors_tests(connection, params = {}, mocks_implemented = true)
14
13
  pending if Fog.mocking? && !mocks_implemented
15
14
  connection.flavors.get(@identity)
16
15
  end
17
-
18
16
  end
19
17
 
20
18
  tests('failure') do
21
-
22
19
  if !Fog.mocking? || mocks_implemented
23
20
  invalid_flavor_identity = connection.flavors.first.identity.to_s.gsub(/\w/, '0')
24
21
  end
@@ -27,6 +24,5 @@ def flavors_tests(connection, params = {}, mocks_implemented = true)
27
24
  pending if Fog.mocking? && !mocks_implemented
28
25
  connection.flavors.get(invalid_flavor_identity)
29
26
  end
30
-
31
27
  end
32
28
  end
@@ -1,6 +1,5 @@
1
1
  def server_tests(connection, params = {}, mocks_implemented = true)
2
2
  model_tests(connection.servers, params, mocks_implemented) do
3
-
4
3
  tests('#reload').returns(true) do
5
4
  pending if Fog.mocking? && !mocks_implemented
6
5
  @instance.wait_for { ready? }
@@ -8,7 +7,7 @@ def server_tests(connection, params = {}, mocks_implemented = true)
8
7
  !identity.nil? && identity == @instance.reload.identity
9
8
  end
10
9
 
11
- responds_to([:ready?, :state])
10
+ responds_to(%i[ready state])
12
11
  yield if block_given?
13
12
 
14
13
  tests('#reboot').succeeds do
@@ -20,6 +19,5 @@ def server_tests(connection, params = {}, mocks_implemented = true)
20
19
  if !Fog.mocking? || mocks_implemented
21
20
  @instance.wait_for { ready? }
22
21
  end
23
-
24
22
  end
25
23
  end
@@ -1,10 +1,8 @@
1
1
  def servers_tests(connection, params = {}, mocks_implemented = true)
2
2
  collection_tests(connection.servers, params, mocks_implemented) do
3
-
4
3
  if !Fog.mocking? || mocks_implemented
5
4
  @instance.wait_for { ready? }
6
5
  yield if block_given?
7
6
  end
8
-
9
7
  end
10
8
  end
@@ -1,54 +1,55 @@
1
1
  def dns_providers
2
2
  {
3
- :aws => {
4
- :mocked => false
3
+ aws: {
4
+ mocked: false
5
5
  },
6
- :bluebox => {
7
- :mocked => false,
8
- :zone_attributes => {
9
- :ttl => 60
6
+ bluebox: {
7
+ mocked: false,
8
+ zone_attributes: {
9
+ ttl: 60
10
10
  }
11
11
  },
12
- :dnsimple => {
13
- :mocked => false
12
+ dnsimple: {
13
+ mocked: false
14
14
  },
15
- :dnsmadeeasy => {
16
- :mocked => false
15
+ dnsmadeeasy: {
16
+ mocked: false
17
17
  },
18
- :dynect => {
19
- :mocked => false,
20
- :zone_attributes => {
21
- :email => 'fog@example.com'
18
+ dynect: {
19
+ mocked: false,
20
+ zone_attributes: {
21
+ email: 'fog@example.com'
22
22
  }
23
23
  },
24
- :linode => {
25
- :mocked => false,
26
- :zone_attributes => {
27
- :email => 'fog@example.com'
24
+ linode: {
25
+ mocked: false,
26
+ zone_attributes: {
27
+ email: 'fog@example.com'
28
28
  }
29
29
  },
30
- :zerigo => {
31
- :mocked => false
30
+ zerigo: {
31
+ mocked: false
32
32
  },
33
- :rackspace => {
34
- :mocked => false,
35
- :zone_attributes => {
36
- :email => 'fog@example.com'
33
+ rackspace: {
34
+ mocked: false,
35
+ zone_attributes: {
36
+ email: 'fog@example.com'
37
37
  }
38
38
  },
39
- :rage4 => {
40
- :mocked => false
39
+ rage4: {
40
+ mocked: false
41
41
  }
42
42
  }
43
43
  end
44
44
 
45
- def generate_unique_domain( with_trailing_dot = false)
46
- #get time (with 1/100th of sec accuracy)
47
- #want unique domain name and if provider is fast, this can be called more than once per second
48
- time= (Time.now.to_f * 100).to_i
45
+ def generate_unique_domain(with_trailing_dot = false)
46
+ # get time (with 1/100th of sec accuracy)
47
+ # want unique domain name and if provider is fast,
48
+ # this can be called more than once per second
49
+ time = (Time.now.to_f * 100).to_i
49
50
  domain = 'test-' + time.to_s + '.com'
50
51
  if with_trailing_dot
51
- domain+= '.'
52
+ domain += '.'
52
53
  end
53
54
 
54
55
  domain
@@ -1,4 +1,6 @@
1
- require "fog/schema/data_validator"
1
+ # frozen_string_literal: true
2
+
3
+ require 'fog/schema/data_validator'
2
4
 
3
5
  # format related hackery
4
6
  # allows both true.is_a?(Fog::Boolean) and false.is_a?(Fog::Boolean)
@@ -15,62 +17,62 @@ module Fog
15
17
  module Array; end
16
18
  end
17
19
  end
18
- [FalseClass, TrueClass].each {|klass| klass.send(:include, Fog::Boolean)}
19
- [FalseClass, TrueClass, NilClass, Fog::Boolean].each {|klass| klass.send(:include, Fog::Nullable::Boolean)}
20
- [NilClass, String].each {|klass| klass.send(:include, Fog::Nullable::String)}
21
- [NilClass, Time].each {|klass| klass.send(:include, Fog::Nullable::Time)}
22
- [Integer, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Integer)}
23
- [Float, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Float)}
24
- [Hash, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Hash)}
25
- [Array, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Array)}
20
+ [FalseClass, TrueClass].each { |klass| klass.send(:include, Fog::Boolean) }
21
+ [FalseClass, TrueClass, NilClass, Fog::Boolean].each { |klass| klass.send(:include, Fog::Nullable::Boolean) }
22
+ [NilClass, String].each { |klass| klass.send(:include, Fog::Nullable::String) }
23
+ [NilClass, Time].each { |klass| klass.send(:include, Fog::Nullable::Time) }
24
+ [Integer, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Integer) }
25
+ [Float, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Float) }
26
+ [Hash, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Hash) }
27
+ [Array, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Array) }
26
28
 
27
29
  module Shindo
30
+ # Generates a Shindo test that compares a hash schema to the result
31
+ # of the passed in block returning true if they match.
32
+ #
33
+ # The schema that is passed in is a Hash or Array of hashes that
34
+ # have Classes in place of values. When checking the schema the
35
+ # value should match the Class.
36
+ #
37
+ # Strict mode will fail if the data has additional keys. Setting
38
+ # +strict+ to +false+ will allow additional keys to appear.
39
+ #
40
+ # @param [Hash] schema A Hash schema
41
+ # @param [Hash] options Options to change validation rules
42
+ # @option options [Boolean] :allow_extra_keys
43
+ # If +true+ does not fail when keys are in the data that are
44
+ # not specified in the schema. This allows new values to
45
+ # appear in API output without breaking the check.
46
+ # @option options [Boolean] :allow_optional_rules
47
+ # If +true+ does not fail if extra keys are in the schema
48
+ # that do not match the data. Not recommended!
49
+ # @yield Data to check with schema
50
+ #
51
+ # @example Using in a test
52
+ # Shindo.tests("comparing welcome data against schema") do
53
+ # data = {:welcome => "Hello" }
54
+ # data_matches_schema(:welcome => String) { data }
55
+ # end
56
+ #
57
+ # comparing welcome data against schema
58
+ # + data matches schema
59
+ #
60
+ # @example Example schema
61
+ # {
62
+ # "id" => String,
63
+ # "ram" => Integer,
64
+ # "disks" => [
65
+ # {
66
+ # "size" => Float
67
+ # }
68
+ # ],
69
+ # "dns_name" => Fog::Nullable::String,
70
+ # "active" => Fog::Boolean,
71
+ # "created" => DateTime
72
+ # }
73
+ #
74
+ # @return [Boolean]
28
75
  class Tests
29
- # Generates a Shindo test that compares a hash schema to the result
30
- # of the passed in block returning true if they match.
31
- #
32
- # The schema that is passed in is a Hash or Array of hashes that
33
- # have Classes in place of values. When checking the schema the
34
- # value should match the Class.
35
- #
36
- # Strict mode will fail if the data has additional keys. Setting
37
- # +strict+ to +false+ will allow additional keys to appear.
38
- #
39
- # @param [Hash] schema A Hash schema
40
- # @param [Hash] options Options to change validation rules
41
- # @option options [Boolean] :allow_extra_keys
42
- # If +true+ does not fail when keys are in the data that are
43
- # not specified in the schema. This allows new values to
44
- # appear in API output without breaking the check.
45
- # @option options [Boolean] :allow_optional_rules
46
- # If +true+ does not fail if extra keys are in the schema
47
- # that do not match the data. Not recommended!
48
- # @yield Data to check with schema
49
- #
50
- # @example Using in a test
51
- # Shindo.tests("comparing welcome data against schema") do
52
- # data = {:welcome => "Hello" }
53
- # data_matches_schema(:welcome => String) { data }
54
- # end
55
- #
56
- # comparing welcome data against schema
57
- # + data matches schema
58
- #
59
- # @example Example schema
60
- # {
61
- # "id" => String,
62
- # "ram" => Integer,
63
- # "disks" => [
64
- # {
65
- # "size" => Float
66
- # }
67
- # ],
68
- # "dns_name" => Fog::Nullable::String,
69
- # "active" => Fog::Boolean,
70
- # "created" => DateTime
71
- # }
72
- #
73
- # @return [Boolean]
74
76
  def data_matches_schema(schema, options = {})
75
77
  test('data matches schema') do
76
78
  validator = Fog::Schema::DataValidator.new
@@ -84,9 +86,9 @@ module Shindo
84
86
  def formats(format, strict = true)
85
87
  test('has proper format') do
86
88
  if strict
87
- options = {:allow_extra_keys => false, :allow_optional_rules => true}
89
+ options = { allow_extra_keys: false, allow_optional_rules: true }
88
90
  else
89
- options = {:allow_extra_keys => true, :allow_optional_rules => true}
91
+ options = { allow_extra_keys: true, allow_optional_rules: true }
90
92
  end
91
93
  validator = Fog::Schema::DataValidator.new
92
94
  valid = validator.validate(yield, format, options)
@@ -1,37 +1,37 @@
1
1
  Shindo.tests('test_helper', 'meta') do
2
2
 
3
3
  tests('comparing welcome data against schema') do
4
- data = {:welcome => "Hello" }
5
- data_matches_schema(:welcome => String) { data }
4
+ data = { welcome: 'Hello' }
5
+ data_matches_schema(welcome: String) { data }
6
6
  end
7
7
 
8
8
  tests('#data_matches_schema') do
9
9
  tests('when value matches schema expectation') do
10
- data_matches_schema({"key" => String}) { {"key" => "Value"} }
10
+ data_matches_schema('key' => String) { { 'key' => 'Value' } }
11
11
  end
12
12
 
13
13
  tests('when values within an array all match schema expectation') do
14
- data_matches_schema({"key" => [Integer]}) { {"key" => [1, 2]} }
14
+ data_matches_schema('key' => [Integer]) { { 'key' => [1, 2] } }
15
15
  end
16
16
 
17
17
  tests('when nested values match schema expectation') do
18
- data_matches_schema({"key" => {:nested_key => String}}) { {"key" => {:nested_key => "Value"}} }
18
+ data_matches_schema('key' => { nested_key: String }) { { 'key' => { nested_key: 'Value' } } }
19
19
  end
20
20
 
21
21
  tests('when collection of values all match schema expectation') do
22
- data_matches_schema([{"key" => String}]) { [{"key" => "Value"}, {"key" => "Value"}] }
22
+ data_matches_schema([{ 'key' => String }]) { [{ 'key' => 'Value' }, { 'key' => 'Value' }] }
23
23
  end
24
24
 
25
25
  tests('when collection is empty although schema covers optional members') do
26
- data_matches_schema([{"key" => String}], {:allow_optional_rules => true}) { [] }
26
+ data_matches_schema([{ 'key' => String }], allow_optional_rules: true) { [] }
27
27
  end
28
28
 
29
29
  tests('when additional keys are passed and not strict') do
30
- data_matches_schema({"key" => String}, {:allow_extra_keys => true}) { {"key" => "Value", :extra => "Bonus"} }
30
+ data_matches_schema({ 'key' => String }, allow_extra_keys: true) { { 'key' => 'Value', extra: 'Bonus' } }
31
31
  end
32
32
 
33
33
  tests('when value is nil and schema expects NilClass') do
34
- data_matches_schema({"key" => NilClass}) { {"key" => nil} }
34
+ data_matches_schema('key' => NilClass) { { 'key' => nil } }
35
35
  end
36
36
 
37
37
  tests('when value and schema match as hashes') do
@@ -43,46 +43,45 @@ Shindo.tests('test_helper', 'meta') do
43
43
  end
44
44
 
45
45
  tests('when value is a Time') do
46
- data_matches_schema({"time" => Time}) { {"time" => Time.now} }
46
+ data_matches_schema('time' => Time) { { 'time' => Time.now } }
47
47
  end
48
48
 
49
49
  tests('when key is missing but value should be NilClass (#1477)') do
50
- data_matches_schema({"key" => NilClass}, {:allow_optional_rules => true}) { {} }
50
+ data_matches_schema({ 'key' => NilClass }, allow_optional_rules: true) { {} }
51
51
  end
52
52
 
53
53
  tests('when key is missing but value is nullable (#1477)') do
54
- data_matches_schema({"key" => Fog::Nullable::String}, {:allow_optional_rules => true}) { {} }
54
+ data_matches_schema({ 'key' => Fog::Nullable::String }, allow_optional_rules: true) { {} }
55
55
  end
56
56
  end
57
57
 
58
58
  tests('#formats backwards compatible changes') do
59
-
60
59
  tests('when value matches schema expectation') do
61
- formats({"key" => String}) { {"key" => "Value"} }
60
+ formats('key' => String) { { 'key' => 'Value' } }
62
61
  end
63
62
 
64
63
  tests('when values within an array all match schema expectation') do
65
- formats({"key" => [Integer]}) { {"key" => [1, 2]} }
64
+ formats('key' => [Integer]) { { 'key' => [1, 2] } }
66
65
  end
67
66
 
68
67
  tests('when nested values match schema expectation') do
69
- formats({"key" => {:nested_key => String}}) { {"key" => {:nested_key => "Value"}} }
68
+ formats('key' => { nested_key: String }) { { 'key' => { nested_key: 'Value' } } }
70
69
  end
71
70
 
72
71
  tests('when collection of values all match schema expectation') do
73
- formats([{"key" => String}]) { [{"key" => "Value"}, {"key" => "Value"}] }
72
+ formats([{ 'key' => String }]) { [{ 'key' => 'Value' }, { 'key' => 'Value' }] }
74
73
  end
75
74
 
76
75
  tests('when collection is empty although schema covers optional members') do
77
- formats([{"key" => String}]) { [] }
76
+ formats([{ 'key' => String }]) { [] }
78
77
  end
79
78
 
80
79
  tests('when additional keys are passed and not strict') do
81
- formats({"key" => String}, false) { {"key" => "Value", :extra => "Bonus"} }
80
+ formats({ 'key' => String }, false) { { 'key' => 'Value', :extra => 'Bonus' } }
82
81
  end
83
82
 
84
83
  tests('when value is nil and schema expects NilClass') do
85
- formats({"key" => NilClass}) { {"key" => nil} }
84
+ formats('key' => NilClass) { { 'key' => nil } }
86
85
  end
87
86
 
88
87
  tests('when value and schema match as hashes') do
@@ -94,17 +93,15 @@ Shindo.tests('test_helper', 'meta') do
94
93
  end
95
94
 
96
95
  tests('when value is a Time') do
97
- formats({"time" => Time}) { {"time" => Time.now} }
96
+ formats('time' => Time) { { 'time' => Time.now } }
98
97
  end
99
98
 
100
99
  tests('when key is missing but value should be NilClass (#1477)') do
101
- formats({"key" => NilClass}) { {} }
100
+ formats('key' => NilClass) { {} }
102
101
  end
103
102
 
104
103
  tests('when key is missing but value is nullable (#1477)') do
105
- formats({"key" => Fog::Nullable::String}) { {} }
104
+ formats('key' => Fog::Nullable::String) { {} }
106
105
  end
107
-
108
106
  end
109
-
110
107
  end
@@ -9,101 +9,101 @@ end
9
9
  # if in mocked mode, fill in some fake credentials for us
10
10
  if Fog.mock?
11
11
  Fog.credentials = {
12
- :aws_access_key_id => 'aws_access_key_id',
13
- :aws_secret_access_key => 'aws_secret_access_key',
14
- :ia_access_key_id => 'aws_access_key_id',
15
- :ia_secret_access_key => 'aws_secret_access_key',
16
- :bluebox_api_key => 'bluebox_api_key',
17
- :bluebox_customer_id => 'bluebox_customer_id',
18
- :brightbox_client_id => 'brightbox_client_id',
19
- :brightbox_secret => 'brightbox_secret',
20
- :cloudstack_disk_offering_id => '',
21
- :cloudstack_host => 'http://cloudstack.example.org',
22
- :cloudstack_network_ids => '',
23
- :cloudstack_service_offering_id => '4437ac6c-9fe3-477a-57ec-60a5a45896a4',
24
- :cloudstack_template_id => '8a31cf9c-f248-0588-256e-9dbf58785216',
25
- :cloudstack_zone_id => 'c554c592-e09c-9df5-7688-4a32754a4305',
26
- :cloudstack_project_id => 'f1f1f1f1-f1f1-f1f1-f1f1-f1f1f1f1f1f1',
27
- :clodo_api_key => 'clodo_api_key',
28
- :clodo_username => 'clodo_username',
29
- :digitalocean_api_key => 'digitalocean_api_key',
30
- :digitalocean_client_id => 'digitalocean_client_id',
31
- :dnsimple_email => 'dnsimple_email',
32
- :dnsimple_password => 'dnsimple_password',
33
- :dnsmadeeasy_api_key => 'dnsmadeeasy_api_key',
34
- :dnsmadeeasy_secret_key => 'dnsmadeeasy_secret_key',
35
- :glesys_username => 'glesys_username',
36
- :glesys_api_key => 'glesys_api_key',
37
- :go_grid_api_key => 'go_grid_api_key',
38
- :go_grid_shared_secret => 'go_grid_shared_secret',
39
- :google_storage_access_key_id => 'google_storage_access_key_id',
40
- :google_storage_secret_access_key => 'google_storage_secret_access_key',
41
- :google_project => 'google_project_name',
42
- :google_client_email => 'fake@developer.gserviceaccount.com',
43
- :google_key_location => '~/fake.p12',
44
- :hp_access_key => 'hp_access_key',
45
- :hp_secret_key => 'hp_secret_key',
46
- :hp_tenant_id => 'hp_tenant_id',
47
- :hp_avl_zone => 'hp_avl_zone',
48
- :os_account_meta_temp_url_key => 'os_account_meta_temp_url_key',
49
- :ibm_username => 'ibm_username',
50
- :ibm_password => 'ibm_password',
51
- :joyent_username => "joyentuser",
52
- :joyent_password => "joyentpass",
53
- :linode_api_key => 'linode_api_key',
54
- :local_root => '~/.fog',
55
- :bare_metal_cloud_password => 'bare_metal_cloud_password',
56
- :bare_metal_cloud_username => 'bare_metal_cloud_username',
57
- :ninefold_compute_key => 'ninefold_compute_key',
58
- :ninefold_compute_secret => 'ninefold_compute_secret',
59
- :ninefold_storage_secret => 'ninefold_storage_secret',
60
- :ninefold_storage_token => 'ninefold_storage_token',
61
- # :public_key_path => '~/.ssh/id_rsa.pub',
62
- # :private_key_path => '~/.ssh/id_rsa',
63
- :opennebula_endpoint => 'http://opennebula:2633/RPC2',
64
- :opennebula_username => 'oneadmin',
65
- :opennebula_password => 'oneadmin',
66
- :openstack_api_key => 'openstack_api_key',
67
- :openstack_username => 'openstack_username',
68
- :openstack_tenant => 'openstack_tenant',
69
- :openstack_auth_url => 'http://openstack:35357/v2.0/tokens',
70
- :ovirt_url => 'http://ovirt:8080/api',
71
- :ovirt_username => 'admin@internal',
72
- :ovirt_password => '123123',
73
- :profitbricks_username => 'profitbricks_username',
74
- :profitbricks_password => 'profitbricks_password',
75
- :libvirt_uri => 'qemu://libvirt/system',
76
- :rackspace_api_key => 'rackspace_api_key',
77
- :rackspace_region => 'dfw',
78
- :rackspace_username => 'rackspace_username',
79
- :riakcs_access_key_id => 'riakcs_access_key_id',
80
- :riakcs_secret_access_key => 'riakcs_secret_access_key',
81
- :sakuracloud_api_token => 'sakuracloud_api_token',
82
- :sakuracloud_api_token_secret => 'sakuracloud_api_token_secret',
83
- :storm_on_demand_username => 'storm_on_demand_username',
84
- :storm_on_demand_password => 'storm_on_demand_password',
85
- :vcloud_host => 'vcloud_host',
86
- :vcloud_password => 'vcloud_password',
87
- :vcloud_username => 'vcloud_username',
88
- :vcloud_director_host => 'vcloud-director-host',
89
- :vcloud_director_password => 'vcloud_director_password',
90
- :vcloud_director_username => 'vcd_user@vcd_org_name',
91
- :zerigo_email => 'zerigo_email',
92
- :zerigo_token => 'zerigo_token',
93
- :dynect_customer => 'dynect_customer',
94
- :dynect_username => 'dynect_username',
95
- :dynect_password => 'dynect_password',
96
- :vsphere_server => 'virtualcenter.lan',
97
- :vsphere_username => 'apiuser',
98
- :vsphere_password => 'apipassword',
99
- :vsphere_expected_pubkey_hash => 'abcdef1234567890',
100
- :libvirt_username => 'root',
101
- :libvirt_password => 'password',
102
- :cloudsigma_username => 'csuname',
103
- :cloudsigma_password => 'cspass',
104
- :docker_username => 'docker-fan',
105
- :docker_password => 'i<3docker',
106
- :docker_email => 'dockerfan@gmail.com',
107
- :docker_url => 'unix://var/run/docker.sock'
12
+ aws_access_key_id: 'aws_access_key_id',
13
+ aws_secret_access_key: 'aws_secret_access_key',
14
+ ia_access_key_id: 'aws_access_key_id',
15
+ ia_secret_access_key: 'aws_secret_access_key',
16
+ bluebox_api_key: 'bluebox_api_key',
17
+ bluebox_customer_id: 'bluebox_customer_id',
18
+ brightbox_client_id: 'brightbox_client_id',
19
+ brightbox_secret: 'brightbox_secret',
20
+ cloudstack_disk_offering_id: '',
21
+ cloudstack_host: 'http://cloudstack.example.org',
22
+ cloudstack_network_ids: '',
23
+ cloudstack_service_offering_id: '4437ac6c-9fe3-477a-57ec-60a5a45896a4',
24
+ cloudstack_template_id: '8a31cf9c-f248-0588-256e-9dbf58785216',
25
+ cloudstack_zone_id: 'c554c592-e09c-9df5-7688-4a32754a4305',
26
+ cloudstack_project_id: 'f1f1f1f1-f1f1-f1f1-f1f1-f1f1f1f1f1f1',
27
+ clodo_api_key: 'clodo_api_key',
28
+ clodo_username: 'clodo_username',
29
+ digitalocean_api_key: 'digitalocean_api_key',
30
+ digitalocean_client_id: 'digitalocean_client_id',
31
+ dnsimple_email: 'dnsimple_email',
32
+ dnsimple_password: 'dnsimple_password',
33
+ dnsmadeeasy_api_key: 'dnsmadeeasy_api_key',
34
+ dnsmadeeasy_secret_key: 'dnsmadeeasy_secret_key',
35
+ glesys_username: 'glesys_username',
36
+ glesys_api_key: 'glesys_api_key',
37
+ go_grid_api_key: 'go_grid_api_key',
38
+ go_grid_shared_secret: 'go_grid_shared_secret',
39
+ google_storage_access_key_id: 'google_storage_access_key_id',
40
+ google_storage_secret_access_key: 'google_storage_secret_access_key',
41
+ google_project: 'google_project_name',
42
+ google_client_email: 'fake@developer.gserviceaccount.com',
43
+ google_key_location: '~/fake.p12',
44
+ hp_access_key: 'hp_access_key',
45
+ hp_secret_key: 'hp_secret_key',
46
+ hp_tenant_id: 'hp_tenant_id',
47
+ hp_avl_zone: 'hp_avl_zone',
48
+ os_account_meta_temp_url_key: 'os_account_meta_temp_url_key',
49
+ ibm_username: 'ibm_username',
50
+ ibm_password: 'ibm_password',
51
+ joyent_username: 'joyentuser',
52
+ joyent_password: 'joyentpass',
53
+ linode_api_key: 'linode_api_key',
54
+ local_root: '~/.fog',
55
+ bare_metal_cloud_password: 'bare_metal_cloud_password',
56
+ bare_metal_cloud_username: 'bare_metal_cloud_username',
57
+ ninefold_compute_key: 'ninefold_compute_key',
58
+ ninefold_compute_secret: 'ninefold_compute_secret',
59
+ ninefold_storage_secret: 'ninefold_storage_secret',
60
+ ninefold_storage_token: 'ninefold_storage_token',
61
+ # public_key_path: '~/.ssh/id_rsa.pub',
62
+ # private_key_path: '~/.ssh/id_rsa',
63
+ opennebula_endpoint: 'http://opennebula:2633/RPC2',
64
+ opennebula_username: 'oneadmin',
65
+ opennebula_password: 'oneadmin',
66
+ openstack_api_key: 'openstack_api_key',
67
+ openstack_username: 'openstack_username',
68
+ openstack_tenant: 'openstack_tenant',
69
+ openstack_auth_url: 'http://openstack:35357/v2.0/tokens',
70
+ ovirt_url: 'http://ovirt:8080/api',
71
+ ovirt_username: 'admin@internal',
72
+ ovirt_password: '123123',
73
+ profitbricks_username: 'profitbricks_username',
74
+ profitbricks_password: 'profitbricks_password',
75
+ libvirt_uri: 'qemu://libvirt/system',
76
+ rackspace_api_key: 'rackspace_api_key',
77
+ rackspace_region: 'dfw',
78
+ rackspace_username: 'rackspace_username',
79
+ riakcs_access_key_id: 'riakcs_access_key_id',
80
+ riakcs_secret_access_key: 'riakcs_secret_access_key',
81
+ sakuracloud_api_token: 'sakuracloud_api_token',
82
+ sakuracloud_api_token_secret: 'sakuracloud_api_token_secret',
83
+ storm_on_demand_username: 'storm_on_demand_username',
84
+ storm_on_demand_password: 'storm_on_demand_password',
85
+ vcloud_host: 'vcloud_host',
86
+ vcloud_password: 'vcloud_password',
87
+ vcloud_username: 'vcloud_username',
88
+ vcloud_director_host: 'vcloud-director-host',
89
+ vcloud_director_password: 'vcloud_director_password',
90
+ vcloud_director_username: 'vcd_user@vcd_org_name',
91
+ zerigo_email: 'zerigo_email',
92
+ zerigo_token: 'zerigo_token',
93
+ dynect_customer: 'dynect_customer',
94
+ dynect_username: 'dynect_username',
95
+ dynect_password: 'dynect_password',
96
+ vsphere_server: 'virtualcenter.lan',
97
+ vsphere_username: 'apiuser',
98
+ vsphere_password: 'apipassword',
99
+ vsphere_expected_pubkey_hash: 'abcdef1234567890',
100
+ libvirt_username: 'root',
101
+ libvirt_password: 'password',
102
+ cloudsigma_username: 'csuname',
103
+ cloudsigma_password: 'cspass',
104
+ docker_username: 'docker-fan',
105
+ docker_password: 'i<3docker',
106
+ docker_email: 'dockerfan@gmail.com',
107
+ docker_url: 'unix://var/run/docker.sock'
108
108
  }.merge(Fog.credentials)
109
109
  end