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,51 @@
1
+ module ZAWS
2
+ class External
3
+ class AWSCLI
4
+ class Data
5
+ class EC2
6
+ class SecurityGroup
7
+
8
+ def initialize(shellout, ec2)
9
+ @shellout=shellout
10
+ @ec2=ec2
11
+ @ssecurity_group_hash=nil
12
+ end
13
+
14
+ def validJSON
15
+ return (@security_group_hash.nil?)
16
+ end
17
+
18
+ def load(data, verbose)
19
+ @security_group_raw_data = data
20
+ verbose.puts(@security_group_raw_data) if verbose
21
+ @security_group_hash=nil
22
+ begin
23
+ @security_group_hash=JSON.parse(data)
24
+ rescue JSON::ParserError => e
25
+ end
26
+ end
27
+
28
+ def view(viewtype=nil,verbose=nil)
29
+ details = @ec2.filestore.retrieve("securitygroups#{viewtype}", @ec2.command_ec2.describeSecurityGroups.aws.get_command)
30
+ if details.nil?
31
+ verbose.puts "Did not use cache." if verbose
32
+ load(@ec2.command_ec2.describeSecurityGroups.execute(verbose), verbose)
33
+ @ec2.filestore.store("securitygroups#{viewtype}", @security_group_raw_data, Time.now + @ec2.filestore.timeout, @ec2.command_ec2.describeSecurityGroups.aws.get_command)
34
+ else
35
+ verbose.puts "used cache." if verbose
36
+ load(details, verbose)
37
+ end
38
+ return @security_group_raw_data
39
+ end
40
+
41
+ def exists
42
+ val = (@security_group_hash["SecurityGroups"].count == 1)
43
+ sgroupid = val ? @security_group_hash["SecurityGroups"][0]["GroupId"] : nil
44
+ return val, sgroupid
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,59 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ class EC2
5
+ class Subnet
6
+
7
+ def initialize(shellout, ec2)
8
+ @shellout=shellout
9
+ @ec2=ec2
10
+ @subnet_hash=nil
11
+ end
12
+
13
+ def validJSON
14
+ return (@subnet_hash.nil?)
15
+ end
16
+
17
+ def load(command, data,verbose)
18
+ @subnet_raw_data = data
19
+ verbose.puts(@subnet_raw_data) if verbose
20
+ @subnet_hash=nil
21
+ begin
22
+ @subnet_hash =JSON.parse(data)
23
+ rescue JSON::ParserError => e
24
+ end
25
+ end
26
+
27
+ def view()
28
+ return @subnet_raw_data
29
+ end
30
+
31
+ def available()
32
+ if @subnet_hash and @subnet_hash["Subnet"]
33
+ return (@subnet_hash["Subnet"]["State"] == "available")
34
+ end
35
+ if @subnet_hash and @subnet_hash["Subnets"] and @subnet_hash["Subnets"].count == 1
36
+ return (@subnet_hash["Subnets"][0]["State"] == "available")
37
+ end
38
+ return false
39
+ end
40
+
41
+ def id_by_ip(ip,verbose=nil)
42
+ return nil if not @subnet_hash["Subnets"]
43
+ subnet_id=nil
44
+ @subnet_hash["Subnets"].each { |x| subnet_id = x["SubnetId"] if (NetAddr::CIDR.create(x["CidrBlock"])).contains?(ip) }
45
+ verbose.puts subnet_id if verbose
46
+ return subnet_id
47
+ end
48
+
49
+ def id_by_cidrblock(verbose=nil)
50
+ return nil if not @subnet_hash["Subnets"]
51
+ subnet_id= @subnet_hash["Subnets"].count == 1 ? @subnet_hash["Subnets"][0]["SubnetId"] : nil
52
+ verbose.puts subnet_id if verbose
53
+ return subnet_id
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,85 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ class EC2
5
+ class VPC
6
+
7
+ def initialize(shellout, ec2)
8
+ @shellout=shellout
9
+ @ec2=ec2
10
+ @vpc_hash=nil
11
+ end
12
+
13
+ def validJSON
14
+ return (not @vpc_hash.nil?)
15
+ end
16
+
17
+ def load(command, data, verbose)
18
+ @vpc_raw_data = data
19
+ @vpc_hash=nil
20
+ begin
21
+ @vpc_hash =JSON.parse(data)
22
+ rescue JSON::ParserError => e
23
+ end
24
+ end
25
+
26
+ def view()
27
+ return @vpc_raw_data
28
+ end
29
+
30
+ def hash_vpc_name_externalid()
31
+ vpc_name_externalid={}
32
+ if validJSON
33
+ @vpc_hash['Vpcs'].each do |vpc|
34
+ vals={}
35
+ vals['externalid']="null"
36
+ vals['Name']="null"
37
+ vpc['Tags'].each do |tag|
38
+ vals['Name']=tag['Value'] if tag['Key']=='Name'
39
+ vals['externalid']=tag['Value'] if tag['Key']=='externalid'
40
+ end
41
+ vpc_name_externalid[vpc['VpcId']]=vals
42
+ end
43
+ end
44
+ return vpc_name_externalid
45
+ end
46
+
47
+ def exists(cidr,externalid)
48
+ result = false
49
+ if validJSON
50
+ @vpc_hash['Vpcs'].each do |vpc|
51
+ if result
52
+ break
53
+ elsif vpc['Tags']
54
+ vpc['Tags'].each do |tag|
55
+ result = tag['Key']=='externalid' ? (externalid==tag['Value']) : false
56
+ end
57
+ result = (result and (vpc['CidrBlock']==cidr))
58
+ end
59
+ end
60
+ end
61
+ result
62
+ end
63
+
64
+ def available()
65
+ if @vpc_hash and @vpc_hash["Vpc"]
66
+ return (@vpc_hash["Vpc"]["State"] == "available")
67
+ end
68
+ if @vpc_hash and @vpc_hash["Vpcs"] and @vpc_hash["Vpcs"].count==1
69
+ return (@vpc_hash["Vpcs"][0]["State"]=="available")
70
+ end
71
+ false
72
+ end
73
+
74
+ def id()
75
+ if @vpc_hash and @vpc_hash["Vpc"]
76
+ return (@vpc_hash["Vpc"]["VpcId"])
77
+ end
78
+ 0
79
+ end
80
+
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,34 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ class IAM
5
+ def initialize(shellout,aws)
6
+ @shellout=shellout
7
+ @aws=aws
8
+ end
9
+
10
+ def role_policy
11
+ @_role_policy ||= (ZAWS::AWSCLI::Data::IAM::RolePolicy.new(@shellout,self))
12
+ return @_role_policy
13
+ end
14
+
15
+ def policy
16
+ @_policy ||= (ZAWS::AWSCLI::Data::IAM::Policy.new(@shellout,self))
17
+ return @_policy
18
+ end
19
+
20
+ def policy_document
21
+ @_policy_document ||= (ZAWS::AWSCLI::Data::IAM::PolicyDocument.new(@shellout,self))
22
+ return @_policy_document
23
+ end
24
+
25
+ def policy_version
26
+ @_policy_version ||= (ZAWS::AWSCLI::Data::IAM::PolicyVersion.new(@shellout,self))
27
+ return @_policy_version
28
+ end
29
+
30
+
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,42 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ class IAM
5
+ class Policy
6
+
7
+ def initialize(shellout,iam)
8
+ @shellout=shellout
9
+ @iam=iam
10
+ @policy_hash=nil
11
+ end
12
+
13
+ def validJSON
14
+ return (@policy_hash.nil?)
15
+ end
16
+
17
+ def load(command,data,verbose)
18
+ @policy_raw_data = data
19
+ verbose.puts(@policy_raw_data) if verbose
20
+ @policy_hash=nil
21
+ begin
22
+ @policy_hash =JSON.parse(data)
23
+ rescue JSON::ParserError => e
24
+ end
25
+ end
26
+
27
+ def view()
28
+ return @policy_raw_data
29
+ end
30
+
31
+ def defaultVersion()
32
+ if @policy_hash and @policy_hash["Policy"] and @policy_hash["Policy"]["DefaultVersionId"]
33
+ return @policy_hash["Policy"]["DefaultVersionId"]
34
+ end
35
+ return nil
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,52 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ class IAM
5
+ class PolicyDocument
6
+
7
+ def initialize(shellout,iam)
8
+ @shellout=shellout
9
+ @iam=iam
10
+ @subnet_hash=nil
11
+ end
12
+
13
+ def validJSON
14
+ return (@subnet_hash.nil?)
15
+ end
16
+
17
+ def load(command,data,verbose)
18
+ @policy_doc_raw_data = data
19
+ verbose.puts(@policy_doc_raw_data) if verbose
20
+ @policy_doc_hash=nil
21
+ begin
22
+ @policy_doc_hash =JSON.parse(data)
23
+ rescue JSON::ParserError => e
24
+ end
25
+ end
26
+
27
+ def view()
28
+ return @policy_doc_raw_data
29
+ end
30
+
31
+ def resource_instance_ids()
32
+ instance_ids=nil
33
+ if @policy_doc_hash and @policy_doc_hash["Statement"]
34
+ statements = @policy_doc_hash["Statement"]
35
+ statements.each do |item|
36
+ if item["Resource"]
37
+ item["Resource"].each do |res|
38
+ if res =~ /:instance/
39
+ instance_ids += ("\n" + res[/([^\/]+)$/]) if ! instance_ids.nil?
40
+ instance_ids = res[/([^\/]+)$/] if instance_ids.nil?
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ instance_ids
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,42 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ class IAM
5
+ class PolicyVersion
6
+
7
+ def initialize(shellout, iam)
8
+ @shellout=shellout
9
+ @iam=iam
10
+ @policy_ver_hash=nil
11
+ end
12
+
13
+ def validJSON
14
+ return (@policy_ver_hash.nil?)
15
+ end
16
+
17
+ def load(command, data, verbose)
18
+ @policy_ver_raw_data = data
19
+ verbose.puts(@policy_ver_raw_data) if verbose
20
+ @policy_ver_hash=nil
21
+ begin
22
+ @policy_ver_hash =JSON.parse(data)
23
+ push_policy_document(command, verbose)
24
+ rescue JSON::ParserError => e
25
+ end
26
+ end
27
+
28
+ def push_policy_document(command, verbose)
29
+ if @policy_ver_hash and @policy_ver_hash["PolicyVersion"] and @policy_ver_hash["PolicyVersion"]["Document"]
30
+ @iam.policy_document.load(command, @policy_ver_hash["PolicyVersion"]["Document"].to_json, verbose)
31
+ end
32
+ end
33
+
34
+ def view()
35
+ return @policy_ver_raw_data
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,52 @@
1
+ module ZAWS
2
+ class AWSCLI
3
+ class Data
4
+ class IAM
5
+ class RolePolicy
6
+
7
+ def initialize(shellout, iam)
8
+ @shellout=shellout
9
+ @iam=iam
10
+ @subnet_hash=nil
11
+ end
12
+
13
+ def validJSON
14
+ return (@subnet_hash.nil?)
15
+ end
16
+
17
+ def load(command, data, verbose)
18
+ @subnet_raw_data = data
19
+ verbose.puts(@subnet_raw_data) if verbose
20
+ @subnet_hash=nil
21
+ begin
22
+ @subnet_hash =JSON.parse(data)
23
+ rescue JSON::ParserError => e
24
+ end
25
+ end
26
+
27
+ def view()
28
+ return @subnet_raw_data
29
+ end
30
+
31
+ def resource_instance_ids()
32
+ instance_ids=nil
33
+ if @subnet_hash and @subnet_hash["PolicyDocument"] and @subnet_hash["PolicyDocument"]["Statement"]
34
+ statements = @subnet_hash["PolicyDocument"]["Statement"]
35
+ statements.each do |item|
36
+ if item["Resource"]
37
+ item["Resource"].each do |res|
38
+ if res =~ /:instance/
39
+ instance_ids += ("\n" + res[/([^\/]+)$/]) if !instance_ids.nil?
40
+ instance_ids = res[/([^\/]+)$/] if instance_ids.nil?
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ instance_ids
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,70 @@
1
+ module ZAWS
2
+ class External
3
+ class AWSCLI
4
+ class Generators
5
+ class Result
6
+ class EC2
7
+ class Addresses
8
+ def initialize
9
+ @addresses= {}
10
+ @addresses["Addresses"]= []
11
+ self
12
+ end
13
+
14
+ def instance_id(addres_number, id)
15
+ resize_addresses_array(addres_number)
16
+ @addresses["Addresses"][addres_number]["InstanceId"]=id
17
+ self
18
+ end
19
+
20
+ def public_ip(addres_number, ip)
21
+ resize_addresses_array(addres_number)
22
+ @addresses["Addresses"][addres_number]["PublicIp"]=ip
23
+ self
24
+ end
25
+
26
+ def domain(addres_number, domain)
27
+ resize_addresses_array(addres_number)
28
+ @addresses["Addresses"][addres_number]["Domain"]=domain
29
+ self
30
+ end
31
+
32
+ def association_id(addres_number, id)
33
+ resize_addresses_array(addres_number)
34
+ @addresses["Addresses"][addres_number]["AssociationId"]=id
35
+ self
36
+ end
37
+
38
+ def allocation_id(addres_number, id)
39
+ resize_addresses_array(addres_number)
40
+ @addresses["Addresses"][addres_number]["AllocationId"]=id
41
+ self
42
+ end
43
+
44
+ def resize_addresses_array(index)
45
+ while index > @addresses["Addresses"].length-1
46
+ @addresses["Addresses"].push({})
47
+ end
48
+ end
49
+
50
+ def add(addresses)
51
+ @addresses["Addresses"].concat(addresses.get_addresses_array)
52
+ self
53
+ end
54
+
55
+ def get_json
56
+ @addresses.to_json
57
+ end
58
+
59
+ def get_addresses_array
60
+ @addresses["Addresses"]
61
+ end
62
+
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+