zaws 0.0.5 → 0.1.1

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 (282) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.travis.yml +9 -18
  4. data/Gemfile +0 -0
  5. data/Gemfile.lock +26 -35
  6. data/Gemfile.lock.linux +69 -0
  7. data/Gemfile.lock.mac +81 -0
  8. data/Gemfile.lock.windows +77 -0
  9. data/LICENSE +0 -0
  10. data/README.md +11 -0
  11. data/Rakefile +1 -7
  12. data/archive/cloud_trail/cloud_trail.feature +124 -0
  13. data/bin/win_zaws.bat +2 -0
  14. data/lib/zaws.rb +54 -41
  15. data/lib/zaws/command/ai.rb +34 -0
  16. data/lib/zaws/command/bucket.rb +35 -0
  17. data/lib/zaws/command/cloud_trail.rb +43 -0
  18. data/lib/zaws/command/compute.rb +152 -87
  19. data/lib/zaws/command/config.rb +42 -0
  20. data/lib/zaws/command/elasticip.rb +19 -9
  21. data/lib/zaws/command/hosted_zone.rb +31 -18
  22. data/lib/zaws/command/iam.rb +37 -0
  23. data/lib/zaws/command/load_balancer.rb +54 -51
  24. data/lib/zaws/command/nessus.rb +41 -0
  25. data/lib/zaws/command/newrelic.rb +30 -0
  26. data/lib/zaws/command/route_table.rb +135 -122
  27. data/lib/zaws/command/security_group.rb +95 -82
  28. data/lib/zaws/command/subnet.rb +58 -46
  29. data/lib/zaws/command/sumo.rb +34 -0
  30. data/lib/zaws/command/vpc.rb +53 -0
  31. data/lib/zaws/external/awscli/awscli.rb +65 -0
  32. data/lib/zaws/external/awscli/commands.rb +10 -0
  33. data/lib/zaws/external/awscli/commands/aws.rb +40 -0
  34. data/lib/zaws/external/awscli/commands/ec2.rb +74 -0
  35. data/lib/zaws/external/awscli/commands/ec2/allocate_address.rb +42 -0
  36. data/lib/zaws/external/awscli/commands/ec2/assign_private_ip_addresses.rb +49 -0
  37. data/lib/zaws/external/awscli/commands/ec2/associate_address.rb +48 -0
  38. data/lib/zaws/external/awscli/commands/ec2/associate_route_table.rb +48 -0
  39. data/lib/zaws/external/awscli/commands/ec2/authorize_security_group_ingress.rb +70 -0
  40. data/lib/zaws/external/awscli/commands/ec2/create_route.rb +60 -0
  41. data/lib/zaws/external/awscli/commands/ec2/create_route_table.rb +40 -0
  42. data/lib/zaws/external/awscli/commands/ec2/create_security_group.rb +58 -0
  43. data/lib/zaws/external/awscli/commands/ec2/create_subnet.rb +62 -0
  44. data/lib/zaws/external/awscli/commands/ec2/create_tags.rb +53 -0
  45. data/lib/zaws/external/awscli/commands/ec2/create_vpc.rb +21 -0
  46. data/lib/zaws/external/awscli/commands/ec2/delete_route.rb +54 -0
  47. data/lib/zaws/external/awscli/commands/ec2/delete_route_table.rb +46 -0
  48. data/lib/zaws/external/awscli/commands/ec2/delete_security_group.rb +46 -0
  49. data/lib/zaws/external/awscli/commands/ec2/delete_subnet.rb +46 -0
  50. data/lib/zaws/external/awscli/commands/ec2/describe_addresses.rb +41 -0
  51. data/lib/zaws/external/awscli/commands/ec2/describe_images.rb +58 -0
  52. data/lib/zaws/external/awscli/commands/ec2/describe_instances.rb +56 -0
  53. data/lib/zaws/external/awscli/commands/ec2/describe_route_tables.rb +44 -0
  54. data/lib/zaws/external/awscli/commands/ec2/describe_security_groups.rb +50 -0
  55. data/lib/zaws/external/awscli/commands/ec2/describe_subnets.rb +48 -0
  56. data/lib/zaws/external/awscli/commands/ec2/describe_vpc_peering_connections.rb +23 -0
  57. data/lib/zaws/external/awscli/commands/ec2/describe_vpcs.rb +26 -0
  58. data/lib/zaws/external/awscli/commands/ec2/disable_vgw_route_propagation.rb +48 -0
  59. data/lib/zaws/external/awscli/commands/ec2/disassociate-address.rb +42 -0
  60. data/lib/zaws/external/awscli/commands/ec2/disassociate_route_table.rb +41 -0
  61. data/lib/zaws/external/awscli/commands/ec2/enable_vgw_route_propagation.rb +48 -0
  62. data/lib/zaws/external/awscli/commands/ec2/filter.rb +115 -0
  63. data/lib/zaws/external/awscli/commands/ec2/modify_instance_attribute.rb +62 -0
  64. data/lib/zaws/external/awscli/commands/ec2/network_interfaces.rb +63 -0
  65. data/lib/zaws/external/awscli/commands/ec2/release_address.rb +42 -0
  66. data/lib/zaws/external/awscli/commands/ec2/revoke_security_group_ingress.rb +70 -0
  67. data/lib/zaws/external/awscli/commands/ec2/run_instances.rb +21 -0
  68. data/lib/zaws/external/awscli/commands/ec2/stop_instances.rb +21 -0
  69. data/lib/zaws/external/awscli/commands/ec2/terminate_instances.rb +40 -0
  70. data/lib/zaws/external/awscli/commands/ec2/unassign_private_ip_addresses.rb +49 -0
  71. data/lib/zaws/external/awscli/commands/elb.rb +19 -0
  72. data/lib/zaws/external/awscli/commands/elb/create_load_balancer.rb +64 -0
  73. data/lib/zaws/external/awscli/commands/elb/create_load_balancer_listeners.rb +47 -0
  74. data/lib/zaws/external/awscli/commands/elb/delete_load_balancer.rb +40 -0
  75. data/lib/zaws/external/awscli/commands/elb/delete_load_balancer_listeners.rb +49 -0
  76. data/lib/zaws/external/awscli/commands/elb/deregister_instances_with_load_balancer.rb +49 -0
  77. data/lib/zaws/external/awscli/commands/elb/describe_load_balancers.rb +30 -0
  78. data/lib/zaws/external/awscli/commands/elb/register_instances_with_load_balancer.rb +49 -0
  79. data/lib/zaws/external/awscli/commands/iam.rb +31 -0
  80. data/lib/zaws/external/awscli/commands/iam/GetPolicy.rb +21 -0
  81. data/lib/zaws/external/awscli/commands/iam/GetPolicyVersion.rb +21 -0
  82. data/lib/zaws/external/awscli/commands/iam/GetRolePolicy.rb +21 -0
  83. data/lib/zaws/external/awscli/commands/route53.rb +19 -0
  84. data/lib/zaws/external/awscli/commands/route53/list_hosted_zones.rb +30 -0
  85. data/lib/zaws/external/awscli/commands/route53/list_resource_record_sets.rb +41 -0
  86. data/lib/zaws/external/awscli/commands/s3/ls.rb +34 -0
  87. data/lib/zaws/external/awscli/commands/s3/mb.rb +41 -0
  88. data/lib/zaws/external/awscli/commands/s3/sync.rb +48 -0
  89. data/lib/zaws/external/awscli/credentials.rb +22 -0
  90. data/lib/zaws/external/awscli/data.rb +10 -0
  91. data/lib/zaws/external/awscli/data/ec2.rb +33 -0
  92. data/lib/zaws/external/awscli/data/ec2/instance.rb +162 -0
  93. data/lib/zaws/external/awscli/data/ec2/security_group.rb +51 -0
  94. data/lib/zaws/external/awscli/data/ec2/subnet.rb +59 -0
  95. data/lib/zaws/external/awscli/data/ec2/vpc.rb +85 -0
  96. data/lib/zaws/external/awscli/data/iam.rb +34 -0
  97. data/lib/zaws/external/awscli/data/iam/policy.rb +42 -0
  98. data/lib/zaws/external/awscli/data/iam/policy_document.rb +52 -0
  99. data/lib/zaws/external/awscli/data/iam/policy_version.rb +42 -0
  100. data/lib/zaws/external/awscli/data/iam/role_policy.rb +52 -0
  101. data/lib/zaws/external/awscli/generators/result/ec2/addresses.rb +70 -0
  102. data/lib/zaws/external/awscli/generators/result/ec2/allocation_id.rb +39 -0
  103. data/lib/zaws/external/awscli/generators/result/ec2/association_id.rb +29 -0
  104. data/lib/zaws/external/awscli/generators/result/ec2/images.rb +46 -0
  105. data/lib/zaws/external/awscli/generators/result/ec2/instances.rb +57 -0
  106. data/lib/zaws/external/awscli/generators/result/ec2/ip_permissions.rb +70 -0
  107. data/lib/zaws/external/awscli/generators/result/ec2/network_interfaces.rb +53 -0
  108. data/lib/zaws/external/awscli/generators/result/ec2/private_ip_addresses.rb +41 -0
  109. data/lib/zaws/external/awscli/generators/result/ec2/route_tables.rb +80 -0
  110. data/lib/zaws/external/awscli/generators/result/ec2/routes.rb +58 -0
  111. data/lib/zaws/external/awscli/generators/result/ec2/security_groups.rb +73 -0
  112. data/lib/zaws/external/awscli/generators/result/ec2/subnets.rb +88 -0
  113. data/lib/zaws/external/awscli/generators/result/ec2/tags.rb +34 -0
  114. data/lib/zaws/external/awscli/generators/result/ec2/virtual_gateway.rb +32 -0
  115. data/lib/zaws/external/awscli/generators/result/elb/listeners.rb +65 -0
  116. data/lib/zaws/external/awscli/generators/result/elb/load_balancers.rb +61 -0
  117. data/lib/zaws/external/awscli/generators/result/route53/hosted_zones.rb +52 -0
  118. data/lib/zaws/external/awscli/regions.rb +13 -0
  119. data/lib/zaws/external/nessusapi/data/agents.rb +36 -0
  120. data/lib/zaws/external/nessusapi/data/scanners.rb +35 -0
  121. data/lib/zaws/external/nessusapi/nessusapi.rb +57 -0
  122. data/lib/zaws/external/nessusapi/reources.rb +10 -0
  123. data/lib/zaws/external/nessusapi/resources/agents.rb +18 -0
  124. data/lib/zaws/external/nessusapi/resources/agents/list.rb +20 -0
  125. data/lib/zaws/external/nessusapi/resources/scanners.rb +18 -0
  126. data/lib/zaws/external/nessusapi/resources/scanners/list.rb +20 -0
  127. data/lib/zaws/external/newrelicapi/data/servers.rb +36 -0
  128. data/lib/zaws/external/newrelicapi/newrelic_client.rb +64 -0
  129. data/lib/zaws/external/newrelicapi/newrelic_creds.rb +60 -0
  130. data/lib/zaws/external/newrelicapi/newrelicapi.rb +46 -0
  131. data/lib/zaws/external/newrelicapi/resources/servers.rb +18 -0
  132. data/lib/zaws/external/newrelicapi/resources/servers/list.rb +20 -0
  133. data/lib/zaws/external/sumoapi/data/collectors.rb +35 -0
  134. data/lib/zaws/external/sumoapi/data/sources.rb +35 -0
  135. data/lib/zaws/external/sumoapi/resources/collectors.rb +18 -0
  136. data/lib/zaws/external/sumoapi/resources/collectors/list.rb +20 -0
  137. data/lib/zaws/external/sumoapi/resources/sources.rb +18 -0
  138. data/lib/zaws/external/sumoapi/resources/sources/list.rb +20 -0
  139. data/lib/zaws/external/sumoapi/sumo_client.rb +63 -0
  140. data/lib/zaws/external/sumoapi/sumo_creds.rb +67 -0
  141. data/lib/zaws/external/sumoapi/sumoapi.rb +56 -0
  142. data/lib/zaws/helper/data_lattice.rb +22 -0
  143. data/lib/zaws/helper/filestore.rb +48 -0
  144. data/lib/zaws/helper/filter.rb +15 -0
  145. data/lib/zaws/helper/inifile.rb +632 -0
  146. data/lib/zaws/helper/nessus_client.rb +143 -0
  147. data/lib/zaws/helper/nessus_creds.rb +67 -0
  148. data/lib/zaws/helper/option.rb +14 -15
  149. data/lib/zaws/helper/output.rb +81 -29
  150. data/lib/zaws/helper/process_hash.rb +47 -0
  151. data/lib/zaws/helper/shell.rb +0 -0
  152. data/lib/zaws/helper/verbose.rb +15 -0
  153. data/lib/zaws/helper/zfile.rb +8 -8
  154. data/lib/zaws/services/ai.rb +35 -0
  155. data/lib/zaws/services/ai/query.rb +135 -0
  156. data/lib/zaws/services/aws.rb +41 -0
  157. data/lib/zaws/services/chef.rb +0 -0
  158. data/lib/zaws/services/cloud_trail.rb +76 -0
  159. data/lib/zaws/services/config.rb +31 -0
  160. data/lib/zaws/services/ec2.rb +47 -0
  161. data/lib/zaws/services/ec2/compute.rb +352 -0
  162. data/lib/zaws/services/ec2/elasticip.rb +82 -0
  163. data/lib/zaws/services/ec2/route_table.rb +210 -0
  164. data/lib/zaws/services/ec2/security_group.rb +186 -0
  165. data/lib/zaws/services/ec2/subnet.rb +111 -0
  166. data/lib/zaws/services/ec2/vpc.rb +69 -0
  167. data/lib/zaws/{elb.rb → services/elb.rb} +3 -2
  168. data/lib/zaws/services/elb/load_balancer.rb +160 -0
  169. data/lib/zaws/services/iam.rb +25 -0
  170. data/lib/zaws/services/iam/policy.rb +25 -0
  171. data/lib/zaws/services/iam/role.rb +23 -0
  172. data/lib/zaws/services/nessus.rb +24 -0
  173. data/lib/zaws/services/nessus/agents.rb +19 -0
  174. data/lib/zaws/services/nessus/scanners.rb +19 -0
  175. data/lib/zaws/services/newrelic.rb +21 -0
  176. data/lib/zaws/services/newrelic/servers.rb +19 -0
  177. data/lib/zaws/{route53.rb → services/route53.rb} +1 -1
  178. data/lib/zaws/services/route53/hosted_zone.rb +36 -0
  179. data/lib/zaws/services/s3.rb +15 -0
  180. data/lib/zaws/services/s3/bucket.rb +42 -0
  181. data/lib/zaws/services/sumo.rb +21 -0
  182. data/lib/zaws/services/sumo/collectors.rb +19 -0
  183. data/lib/zaws/services/vmware.rb +0 -0
  184. data/lib/zaws/version.rb +1 -1
  185. data/shove_all.sh +6 -0
  186. data/shove_all_mac.sh +6 -0
  187. data/shove_all_windows.sh +6 -0
  188. data/spec/spec_helper.rb +0 -0
  189. data/spec/zaws/command/ec2/compute/assoc_security_group_spec.rb +135 -0
  190. data/spec/zaws/command/ec2/compute/compute_spec.rb +321 -0
  191. data/spec/zaws/command/ec2/compute/images_spec.rb +69 -0
  192. data/spec/zaws/command/ec2/compute/management_spec.rb +364 -0
  193. data/spec/zaws/command/ec2/compute/network_spec.rb +93 -0
  194. data/spec/zaws/command/ec2/compute/node_spec.rb +70 -0
  195. data/spec/zaws/command/ec2/compute/secondary_ip_spec.rb +212 -0
  196. data/spec/zaws/command/ec2/compute/storage_spec.rb +63 -0
  197. data/spec/zaws/command/ec2/elasticip_spec.rb +271 -0
  198. data/spec/zaws/command/ec2/route_table_spec.rb +844 -0
  199. data/spec/zaws/command/ec2/security_group_spec.rb +710 -0
  200. data/spec/zaws/command/ec2/subnet_spec.rb +273 -0
  201. data/spec/zaws/command/ec2/vpc_spec.rb +180 -0
  202. data/spec/zaws/command/elb/load_balancer_spec.rb +633 -0
  203. data/spec/zaws/command/iam/policy_spec.rb +101 -0
  204. data/spec/zaws/command/iam/role_policy_spec.rb +35 -0
  205. data/spec/zaws/command/route53/hosted_zone_spec.rb +100 -0
  206. data/spec/zaws/command/s3/bucket_spec.rb +70 -0
  207. data/spec/zaws/external/awscli/data/ec2/instance_spec.rb +90 -0
  208. data/spec/zaws/external/awscli/data/iam/policy_document_spec.rb +56 -0
  209. data/spec/zaws/external/awscli/data/iam/role_policy_spec.rb +54 -0
  210. data/spec/zaws/external/awscli/get_aws_version_spec.rb +18 -0
  211. data/spec/zaws/helper/option_spec.rb +54 -0
  212. data/spec/zaws/helper/output_spec.rb +144 -0
  213. data/spec/zaws/helper/process_hash_spec.rb +48 -0
  214. data/spec/zaws/helper/shell_spec.rb +56 -0
  215. data/spec/zaws/nessus/scanners.json +0 -0
  216. data/spec/zaws/version_spec.rb +18 -0
  217. data/zaws.gemspec +1 -3
  218. metadata +260 -189
  219. data/feature/compute/assoc_security_group.feature +0 -55
  220. data/feature/compute/compute.feature +0 -138
  221. data/feature/compute/secondary_ip.feature +0 -107
  222. data/feature/compute/view.feature +0 -23
  223. data/feature/compute/view_images.feature +0 -24
  224. data/feature/elasticip/elasticip.feature +0 -138
  225. data/feature/elasticip/view.feature +0 -18
  226. data/feature/hosted_zone/view.feature +0 -17
  227. data/feature/hosted_zone/view_record.feature +0 -29
  228. data/feature/load_balancer/instance_registration.feature +0 -120
  229. data/feature/load_balancer/listener.feature +0 -86
  230. data/feature/load_balancer/load_balancer.feature +0 -101
  231. data/feature/load_balancer/view.feature +0 -18
  232. data/feature/route_table/assoc_subnet.feature +0 -128
  233. data/feature/route_table/route_propagation.feature +0 -93
  234. data/feature/route_table/route_table.feature +0 -91
  235. data/feature/route_table/route_to_gateway.feature +0 -69
  236. data/feature/route_table/route_to_instance.feature +0 -115
  237. data/feature/route_table/view.feature +0 -25
  238. data/feature/security_group/ingress_cidr.feature +0 -144
  239. data/feature/security_group/ingress_group.feature +0 -184
  240. data/feature/security_group/security_group.feature +0 -107
  241. data/feature/security_group/view.feature +0 -23
  242. data/feature/subnet/subnet.feature +0 -94
  243. data/feature/subnet/view.feature +0 -24
  244. data/feature/support/env.rb +0 -14
  245. data/feature/version.feature +0 -6
  246. data/lib/zaws/aws.rb +0 -26
  247. data/lib/zaws/ec2.rb +0 -40
  248. data/lib/zaws/ec2/compute.rb +0 -247
  249. data/lib/zaws/ec2/elasticip.rb +0 -79
  250. data/lib/zaws/ec2/route_table.rb +0 -207
  251. data/lib/zaws/ec2/security_group.rb +0 -154
  252. data/lib/zaws/ec2/subnet.rb +0 -109
  253. data/lib/zaws/elb/load_balancer.rb +0 -157
  254. data/lib/zaws/route53/hosted_zone.rb +0 -36
  255. data/spec/zaws/ec2/compute/add_volume_spec.rb +0 -39
  256. data/spec/zaws/ec2/compute/block_device_mapping_spec.rb +0 -31
  257. data/spec/zaws/ec2/compute/instance_id_by_external_id_spec.rb +0 -23
  258. data/spec/zaws/ec2/compute/instance_ping_spec.rb +0 -34
  259. data/spec/zaws/ec2/compute/instance_running_spec.rb +0 -47
  260. data/spec/zaws/ec2/compute/network_interface_json_spec.rb +0 -57
  261. data/spec/zaws/ec2/compute/nosdcheck_spec.rb +0 -17
  262. data/spec/zaws/ec2/compute/tag_instance_spec.rb +0 -21
  263. data/spec/zaws/ec2/security_group/id_by_name_spec.rb +0 -32
  264. data/spec/zaws/ec2/subnet/available_spec.rb +0 -22
  265. data/spec/zaws/ec2/subnet/declare_spec.rb +0 -31
  266. data/spec/zaws/ec2/subnet/exists_spec.rb +0 -33
  267. data/spec/zaws/ec2/subnet/id_array_by_cidrblock_array_spec.rb +0 -48
  268. data/spec/zaws/ec2/subnet/id_by_cidrblock_spec.rb +0 -35
  269. data/spec/zaws/ec2/subnet/id_by_ip_spec.rb +0 -42
  270. data/spec/zaws/ec2/subnet/view_spec.rb +0 -34
  271. data/spec/zaws/elb/load_balancer/calculated_listener_spec.rb +0 -18
  272. data/spec/zaws/helper/option/absent_spec.rb +0 -14
  273. data/spec/zaws/helper/option/exclusive_spec.rb +0 -14
  274. data/spec/zaws/helper/option/exists_spec.rb +0 -18
  275. data/spec/zaws/helper/option/minimum_spec.rb +0 -14
  276. data/spec/zaws/helper/output/binary_nagios_check_spec.rb +0 -19
  277. data/spec/zaws/helper/output/colorize_spec.rb +0 -30
  278. data/spec/zaws/helper/output/opt_exclusive_spec.rb +0 -14
  279. data/spec/zaws/helper/output/opt_minimum_spec.rb +0 -15
  280. data/spec/zaws/helper/output/opt_required_spec.rb +0 -12
  281. data/spec/zaws/helper/shell/cli_spec.rb +0 -33
  282. data/spec/zaws/helper/shell/if_then_spec.rb +0 -24
@@ -0,0 +1,31 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Commands
4
+ class IAM
5
+ def initialize(shellout,aws)
6
+ @shellout=shellout
7
+ @aws=aws
8
+ end
9
+
10
+ def getRolePolicy
11
+ # http://docs.aws.amazon.com/cli/latest/reference/iam/get-role-policy.html
12
+ @_getRolePolicy ||= (ZAWS::AWSCLI::Commands::IAM::GetRolePolicy.new(@shellout,@aws))
13
+ return @_getRolePolicy
14
+ end
15
+
16
+ def getPolicy
17
+ @_getPolicy ||= (ZAWS::AWSCLI::Commands::IAM::GetPolicy.new(@shellout,@aws))
18
+ return @_getPolicy
19
+ end
20
+
21
+ def getPolicyVersion
22
+ # http://docs.aws.amazon.com/cli/latest/reference/iam/get-role-policy.html
23
+ @_getPolicyVersion ||= (ZAWS::AWSCLI::Commands::IAM::GetPolicyVersion.new(@shellout,@aws))
24
+ return @_getPolicyVersion
25
+ end
26
+
27
+
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Commands
4
+ class IAM
5
+ class GetPolicy
6
+
7
+ def initialize(shellout,awscli)
8
+ @shellout=shellout
9
+ @awscli=awscli
10
+ end
11
+
12
+ def execute(policy_arn,view,verbose)
13
+ comline="aws --output #{view} iam get-policy --policy-arn #{policy_arn}"
14
+ @awscli.data_iam.policy.load(comline,@shellout.cli(comline,verbose),verbose)
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Commands
4
+ class IAM
5
+ class GetPolicyVersion
6
+
7
+ def initialize(shellout,awscli)
8
+ @shellout=shellout
9
+ @awscli=awscli
10
+ end
11
+
12
+ def execute(policy_arn,version,view,verbose)
13
+ comline="aws --output #{view} iam get-policy-version --policy-arn #{policy_arn} --version-id #{version}"
14
+ @awscli.data_iam.policy_version.load(comline,@shellout.cli(comline,verbose),verbose)
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Commands
4
+ class IAM
5
+ class GetRolePolicy
6
+
7
+ def initialize(shellout,awscli)
8
+ @shellout=shellout
9
+ @awscli=awscli
10
+ end
11
+
12
+ def execute(role,policy,view,verbose)
13
+ comline="aws --output #{view} iam get-role-policy --role-name #{role} --policy-name #{policy}"
14
+ @awscli.data_iam.role_policy.load(comline,@shellout.cli(comline,verbose),verbose)
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Commands
4
+ class EC2
5
+ def initialize(shellout, aws)
6
+ @shellout=shellout
7
+ @aws=aws
8
+ end
9
+
10
+ def listHostedZones
11
+ @_listHostedZones ||= (ZAWS::External::AWSCLI::Commands::Route53::ListdHostedZones.new(@shellout, @aws))
12
+ return @_listHostedZones
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,30 @@
1
+ module ZAWS
2
+ class External
3
+ class AWSCLI
4
+ class Commands
5
+ class Route53
6
+ class ListHostedZones
7
+ def initialize(shellout=nil, awscli=nil)
8
+ @shellout=shellout
9
+ @awscli=awscli
10
+ @aws=nil
11
+ self
12
+ end
13
+
14
+ def get_command
15
+ command = "route53 list-hosted-zones"
16
+ return command
17
+ end
18
+
19
+ def aws
20
+ @aws ||= ZAWS::External::AWSCLI::Commands::AWS.new(self)
21
+ @aws
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,41 @@
1
+ module ZAWS
2
+ class External
3
+ class AWSCLI
4
+ class Commands
5
+ class Route53
6
+ class ListResourceRecordSets
7
+ def initialize(shellout=nil, awscli=nil)
8
+ @shellout=shellout
9
+ @awscli=awscli
10
+ clear_settings
11
+ self
12
+ end
13
+
14
+ def clear_settings
15
+ @aws=nil
16
+ @hosted_zone_id=nil
17
+ end
18
+
19
+ def hosted_zone_id(id)
20
+ @hosted_zone_id=id
21
+ self
22
+ end
23
+
24
+ def get_command
25
+ command = "route53 list-resource-record-sets"
26
+ command = "#{command} --hosted-zone-id #{@hosted_zone_id}" if @hosted_zone_id
27
+ return command
28
+ end
29
+
30
+ def aws
31
+ @aws ||= ZAWS::External::AWSCLI::Commands::AWS.new(self)
32
+ @aws
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+
@@ -0,0 +1,34 @@
1
+ module ZAWS
2
+ class External
3
+ class AWSCLI
4
+ class Commands
5
+ class S3
6
+ class Ls
7
+ def initialize(shellout=nil, awscli=nil)
8
+ @shellout=shellout
9
+ @awscli=awscli
10
+ clear_settings
11
+ self
12
+ end
13
+
14
+ def clear_settings
15
+ @aws=nil
16
+ end
17
+
18
+ def get_command
19
+ command = "s3 ls"
20
+ return command
21
+ end
22
+
23
+ def aws
24
+ @aws ||= ZAWS::External::AWSCLI::Commands::AWS.new(self)
25
+ @aws
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
@@ -0,0 +1,41 @@
1
+ module ZAWS
2
+ class External
3
+ class AWSCLI
4
+ class Commands
5
+ class S3
6
+ class Mb
7
+ def initialize(shellout=nil, awscli=nil)
8
+ @shellout=shellout
9
+ @awscli=awscli
10
+ clear_settings
11
+ self
12
+ end
13
+
14
+ def clear_settings
15
+ @aws=nil
16
+ @name=nil
17
+ end
18
+
19
+ def bucket_name(name)
20
+ @name=name
21
+ self
22
+ end
23
+
24
+ def get_command
25
+ command = "s3 mb"
26
+ command = "#{command} s3://#{@name}" if @name
27
+ return command
28
+ end
29
+
30
+ def aws
31
+ @aws ||= ZAWS::External::AWSCLI::Commands::AWS.new(self)
32
+ @aws
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+
@@ -0,0 +1,48 @@
1
+ module ZAWS
2
+ class External
3
+ class AWSCLI
4
+ class Commands
5
+ class S3
6
+ class Sync
7
+ def initialize(shellout=nil, awscli=nil)
8
+ @shellout=shellout
9
+ @awscli=awscli
10
+ clear_settings
11
+ self
12
+ end
13
+
14
+ def clear_settings
15
+ @aws=nil
16
+ @source_name=nil
17
+ @target_name=nil
18
+ end
19
+
20
+ def source_name(source_name)
21
+ @source_name=source_name
22
+ self
23
+ end
24
+
25
+ def target_name(target_name)
26
+ @target_name=target_name
27
+ self
28
+ end
29
+
30
+ def get_command
31
+ command = "s3 sync"
32
+ command = "#{command} #{@source_name}" if @source_name
33
+ command = "#{command} #{@target_name}" if @target_name
34
+ return command
35
+ end
36
+
37
+ def aws
38
+ @aws ||= ZAWS::External::AWSCLI::Commands::AWS.new(self)
39
+ @aws
40
+ end
41
+
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+
@@ -0,0 +1,22 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Credentials
4
+ def initialize(filename)
5
+ @awsconfig=ZAWS::Helper::IniFile.new(:filename=>filename)
6
+ end
7
+
8
+ def profiles
9
+ @awsconfig.sections
10
+ end
11
+
12
+ def access_key(profile)
13
+ @awsconfig.to_h()[profile]['aws_access_key_id']
14
+ end
15
+
16
+ def secret_key(profile)
17
+ @awsconfig.to_h()[profile]['aws_secret_access_key']
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,10 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ def initialize(shellout,aws)
5
+ @shellout=shellout
6
+ @aws=aws
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,33 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ class EC2
5
+
6
+ def initialize(shellout, aws)
7
+ @shellout=shellout
8
+ @aws=aws
9
+ end
10
+
11
+ def filestore
12
+ @aws.filestore
13
+ end
14
+
15
+ def subnet
16
+ @_Subnet ||= (ZAWS::AWSCLI::Data::EC2::Subnet.new(@shellout, self))
17
+ return @_Subnet
18
+ end
19
+
20
+ def instance
21
+ @_Instance ||= (ZAWS::AWSCLI::Data::EC2::Instance.new(@shellout, self.filestore))
22
+ return @_Instance
23
+ end
24
+
25
+ def vpc
26
+ @_vpc ||= (ZAWS::AWSCLI::Data::EC2::VPC.new(@shellout, self))
27
+ return @_vpc
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,162 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ class EC2
5
+ class Instance
6
+
7
+ def initialize(shellout, filestore)
8
+ @shellout=shellout
9
+ @filestore=filestore
10
+ @instance_hash=nil
11
+ end
12
+
13
+ def validJSON
14
+ return (@instance_hash.nil?)
15
+ end
16
+
17
+ def load_cached(command,verbose)
18
+ fileinstances = @filestore.retrieve("instance",command)
19
+ if fileinstances.nil?
20
+ return false
21
+ else
22
+ load(command,fileinstances,verbose,false)
23
+ return true
24
+ end
25
+ end
26
+
27
+ def load(command, data, verbose,cache=true)
28
+ @instance_raw_data = data
29
+ verbose.puts(@instance_raw_data) if verbose
30
+ @instance_hash=nil
31
+ begin
32
+ @instance_hash =JSON.parse(data)
33
+ create_lookup_hashes()
34
+ @filestore.store("instance",@instance_raw_data,Time.now + @filestore.timeout,command) if cache
35
+ rescue JSON::ParserError => e
36
+ end
37
+ end
38
+
39
+ def view(view=nil)
40
+ if view=="yaml"
41
+ return @instance_hash.to_yaml
42
+ elsif view=="hash"
43
+ return @instance_hash
44
+ else
45
+ return @instance_raw_data
46
+ end
47
+ end
48
+
49
+ def hash_identification(single_instance_hash)
50
+ instance_name = nil
51
+ instance_externalid = nil
52
+ if single_instance_hash["Tags"]
53
+ single_instance_hash["Tags"].each do |tag|
54
+ instance_name = tag["Value"] if tag["Key"] == "Name"
55
+ instance_externalid = tag["Value"] if tag["Key"] == "Name"
56
+ end
57
+ end
58
+ @ids_to_names[single_instance_hash["InstanceId"]] = instance_name if single_instance_hash["InstanceId"] and instance_name
59
+ @ids_to_externalid[single_instance_hash["InstanceId"]] = instance_externalid if single_instance_hash["InstanceId"] and instance_externalid
60
+ @externalids_to_id[instance_externalid] = single_instance_hash["InstanceId"] if single_instance_hash["InstanceId"] and instance_externalid
61
+ @names_to_id[instance_name] = single_instance_hash["InstanceId"] if single_instance_hash["InstanceId"] and instance_name
62
+ end
63
+
64
+ def create_lookup_hashes()
65
+ @ids_to_names = {}
66
+ @ids_to_externalid = {}
67
+ @externalids_to_id = {}
68
+ @names_to_id = {}
69
+ @names_to_status = {}
70
+ @externalid_to_status = {}
71
+ @ids_interval={}
72
+ if @instance_hash and @instance_hash["Reservations"]
73
+ @instance_hash["Reservations"].each do |res|
74
+ if res["Instances"]
75
+ res["Instances"].each do |ins|
76
+ hash_identification(ins)
77
+ hash_status(ins)
78
+ hash_interval(ins)
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ def hash_interval(single_instance_hash)
86
+ instance_interval =nil
87
+ if single_instance_hash["Tags"]
88
+ single_instance_hash["Tags"].each do |tag|
89
+ instance_interval = tag["Value"] if tag["Key"] == "interval"
90
+ end
91
+ end
92
+ @ids_interval[single_instance_hash["InstanceId"]]=instance_interval if single_instance_hash["InstanceId"] and instance_interval
93
+ end
94
+
95
+ def hash_status(single_instance_hash)
96
+ instance_name = nil
97
+ instance_externalid = nil
98
+ instance_status = nil
99
+ if single_instance_hash["Tags"]
100
+ single_instance_hash["Tags"].each do |tag|
101
+ instance_name = tag["Value"] if tag["Key"] == "Name"
102
+ instance_externalid = tag["Value"] if tag["Key"] == "externalid"
103
+ end
104
+ end
105
+ instance_status = single_instance_hash["State"]["Name"] if single_instance_hash["State"] and single_instance_hash["State"]["Name"]
106
+ @names_to_status[instance_name]=instance_status if instance_status and instance_name
107
+ @externalid_to_status[instance_externalid]=instance_status if instance_status and instance_externalid
108
+ end
109
+
110
+ def status(name, externalid)
111
+ return @names_to_status[name] if @names_to_status[name]
112
+ return @externalid_to_status[externalid] if @externalid_to_status[externalid]
113
+ return "unknown"
114
+ end
115
+
116
+ def instanceid(name, externalid)
117
+ return @names_to_id[name] if @names_to_id[name]
118
+ return @externalids_to_id[externalid] if @externalids_to_id[externalid]
119
+ return "unknown"
120
+ end
121
+
122
+ def externalid(instanceid)
123
+ return @ids_to_externalid[instanceid] if @ids_to_externalid[instanceid]
124
+ return "unknown"
125
+ end
126
+
127
+ def name(instanceid)
128
+ return @ids_to_names[instanceid] if @ids_to_names[instanceid]
129
+ return "unknown"
130
+ end
131
+
132
+ def has_interval?(instanceid)
133
+ return @ids_interval[instanceid] ? true : false
134
+ end
135
+
136
+ def interval_start(instanceid)
137
+ return @ids_interval[instanceid] ? @ids_interval[instanceid].split(":")[0] : "-1"
138
+ end
139
+
140
+ def interval_end(instanceid)
141
+ return @ids_interval[instanceid] ? @ids_interval[instanceid].split(":")[1] : "-1"
142
+ end
143
+
144
+ def interval_email(instanceid)
145
+ return @ids_interval[instanceid] ? @ids_interval[instanceid].split(":")[2] : "-1"
146
+ end
147
+
148
+ def names_by_ids(instanceids)
149
+ names = nil
150
+ instanceids.split("\n").each do |item|
151
+ if @ids_to_names[item]
152
+ names += "\n" + @ids_to_names[item] if !names.nil?
153
+ names = @ids_to_names[item] if names.nil?
154
+ end
155
+ end
156
+ return names
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
162
+ end