zaws 0.0.5 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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,633 @@
1
+ require 'spec_helper'
2
+
3
+ describe ZAWS::Services::ELB::LoadBalancer do
4
+
5
+ let(:load_balancer_created) { ZAWS::Helper::Output.colorize("Load balancer created.", AWS_consts::COLOR_YELLOW) }
6
+ let(:load_balancer_not_created) { ZAWS::Helper::Output.colorize("Load balancer already exists. Skipping creation.", AWS_consts::COLOR_GREEN) }
7
+
8
+ let(:instance_not_registratered) { ZAWS::Helper::Output.colorize("Instance already registered. Skipping registration.", AWS_consts::COLOR_GREEN) }
9
+ let(:instance_registered) { ZAWS::Helper::Output.colorize("New instance registered.", AWS_consts::COLOR_YELLOW) }
10
+
11
+ let(:instance_not_deregistered) { ZAWS::Helper::Output.colorize("Instance not registered. Skipping deregistration.", AWS_consts::COLOR_GREEN) }
12
+ let(:instance_deregistered) { ZAWS::Helper::Output.colorize("Instance deregistered.", AWS_consts::COLOR_YELLOW) }
13
+
14
+ let(:load_balancer_listener_created) { ZAWS::Helper::Output.colorize("Listener created.", AWS_consts::COLOR_YELLOW) }
15
+ let(:load_balancer_listener_not_created) { ZAWS::Helper::Output.colorize("Listerner exists. Skipping creation.", AWS_consts::COLOR_GREEN) }
16
+
17
+ let(:load_balancer_listener_deleted) { ZAWS::Helper::Output.colorize("Listerner deleted.", AWS_consts::COLOR_YELLOW) }
18
+ let(:load_balancer_listener_not_deleted) { ZAWS::Helper::Output.colorize("Listener does not exist. Skipping deletion.", AWS_consts::COLOR_GREEN) }
19
+
20
+ let(:load_balancer_deleted) { ZAWS::Helper::Output.colorize("Load balancer deleted.", AWS_consts::COLOR_YELLOW) }
21
+ let(:load_balancer_not_deleted) { ZAWS::Helper::Output.colorize("Load balancer does not exist. Skipping deletion.", AWS_consts::COLOR_GREEN) }
22
+
23
+
24
+ let(:output_json) { "json" }
25
+ let(:region) { "us-west-1" }
26
+ let(:elb_name) { "name-???" }
27
+ let (:vpc_id) { "my_vpc_id" }
28
+ let (:external_id) { "my_instance" }
29
+ let (:security_group_name) { "my_security_group" }
30
+ let (:instance_id) { "i-12345678" }
31
+ let (:instance_id2) { "i-1234567a" }
32
+
33
+ let(:delete_load_balancer_listener) {
34
+ dlbl= ZAWS::External::AWSCLI::Commands::ELB::DeleteLoadBalancerListeners.new
35
+ listener=ZAWS::External::AWSCLI::Generators::Result::ELB::Listeners.new
36
+ listener.protocol(0, "HTTP").load_balancer_port(0, 80).instance_protocol(0, "HTTP").instance_port(0, 80)
37
+ dlbl.aws.region(region)
38
+ dlbl.listeners(listener.get_listeners_array).load_balancer_name('name-???')
39
+ }
40
+
41
+ let(:create_load_balancer_listeners) {
42
+ clbl= ZAWS::External::AWSCLI::Commands::ELB::CreateLoadBalancerListeners.new
43
+ listener=ZAWS::External::AWSCLI::Generators::Result::ELB::Listeners.new
44
+ listener.protocol(0, "tcp").load_balancer_port(0, 80).instance_protocol(0, "tcp").instance_port(0, 80)
45
+ clbl.aws.region(region)
46
+ clbl.listeners(listener.get_listeners_array).load_balancer_name('name-???')
47
+ }
48
+
49
+ let(:describe_load_balancer_json) {
50
+ desc_load_balancers= ZAWS::External::AWSCLI::Commands::ELB::DescribeLoadBalancers.new
51
+ desc_load_balancers.aws.output(output_json).region(region)
52
+ desc_load_balancers
53
+ }
54
+
55
+ let(:empty_load_balancer) {
56
+ ZAWS::External::AWSCLI::Generators::Result::ELB::LoadBalancers.new
57
+ }
58
+
59
+ let (:security_groups) {
60
+ security_groups = ZAWS::External::AWSCLI::Generators::Result::EC2::SecurityGroups.new
61
+ security_groups.group_name(0, security_group_name).group_id(0, "sg-X")
62
+ }
63
+
64
+
65
+ let(:describe_security_groups_by_name_by_vpcid) {
66
+ desc_sec_grps = ZAWS::External::AWSCLI::Commands::EC2::DescribeSecurityGroups.new
67
+ desc_sec_grps.filter.group_name(security_group_name).vpc_id(vpc_id)
68
+ desc_sec_grps.aws.output(output_json).region(region)
69
+ desc_sec_grps }
70
+
71
+ let (:instances) {
72
+ tags = ZAWS::External::AWSCLI::Generators::Result::EC2::Tags.new
73
+ tags = tags.add("externalid", instance_id)
74
+ instances = ZAWS::External::AWSCLI::Generators::Result::EC2::Instances.new
75
+ instances.instance_id(0, instance_id).security_groups(0, security_groups).tags(0, tags)
76
+ }
77
+
78
+ let (:instances2) {
79
+ tags = ZAWS::External::AWSCLI::Generators::Result::EC2::Tags.new
80
+ tags = tags.add("externalid", instance_id2)
81
+ instances = ZAWS::External::AWSCLI::Generators::Result::EC2::Instances.new
82
+ instances.instance_id(0, instance_id2).security_groups(0, security_groups).tags(0, tags)
83
+ }
84
+
85
+ let(:single_load_balancer) {
86
+ listener=ZAWS::External::AWSCLI::Generators::Result::ELB::Listeners.new
87
+ lb= ZAWS::External::AWSCLI::Generators::Result::ELB::LoadBalancers.new
88
+ lb.name(0, elb_name).instances(0, instances).listeners(0, listener)
89
+ }
90
+
91
+ let(:single_load_balancer_with_listener) {
92
+ listener=ZAWS::External::AWSCLI::Generators::Result::ELB::Listeners.new
93
+ listener.instance_port(0, 80).load_balancer_port(0, 80).protocol(0, "HTTP").instance_protocol(0, "HTTP")
94
+ lb= ZAWS::External::AWSCLI::Generators::Result::ELB::LoadBalancers.new
95
+ lb.name(0, elb_name).instances(0, instances).listeners(0, listener)
96
+ }
97
+
98
+ let (:describe_instances) {
99
+ tags = ZAWS::External::AWSCLI::Generators::Result::EC2::Tags.new
100
+ tags = tags.add("externalid", instance_id)
101
+ desc_instances = ZAWS::External::AWSCLI::Commands::EC2::DescribeInstances.new
102
+ desc_instances.filter.vpc_id(vpc_id).tags(tags)
103
+ desc_instances.aws.output(output_json).region(region)
104
+ desc_instances
105
+ }
106
+
107
+ let (:describe_instances2) {
108
+ tags = ZAWS::External::AWSCLI::Generators::Result::EC2::Tags.new
109
+ tags = tags.add("externalid", instance_id2)
110
+ desc_instances = ZAWS::External::AWSCLI::Commands::EC2::DescribeInstances.new
111
+ desc_instances.filter.vpc_id(vpc_id).tags(tags)
112
+ desc_instances.aws.output(output_json).region(region)
113
+ desc_instances
114
+ }
115
+
116
+ let (:register_instances_with_load_balancer) {
117
+ riwlb = ZAWS::External::AWSCLI::Commands::ELB::RegisterInstancesWithLoadBalancer.new
118
+ riwlb.aws.region(region)
119
+ riwlb.load_balancer_name(elb_name).instances(instance_id2)
120
+ }
121
+
122
+ let (:deregister_instances_with_load_balancer) {
123
+ riwlb = ZAWS::External::AWSCLI::Commands::ELB::DeregisterInstancesWithLoadBalancer.new
124
+ riwlb.aws.region(region)
125
+ riwlb.load_balancer_name(elb_name).instances(instance_id)
126
+ }
127
+
128
+ let (:subnets1) {
129
+ subnets = ZAWS::External::AWSCLI::Generators::Result::EC2::Subnets.new
130
+ subnets = subnets.vpc_id(0, vpc_id).cidr_block(0, "10.0.0.0/24").map_public_ip_on_launch(0, false)
131
+ subnets = subnets.default_for_az(0, false).state(0, "available").subnet_id(0, "subnet-YYYYYY")
132
+ @subnets_exists = subnets.available_ip_address_count(0, 251)
133
+ }
134
+
135
+ let (:subnets2) {
136
+ subnets = ZAWS::External::AWSCLI::Generators::Result::EC2::Subnets.new
137
+ subnets = subnets.vpc_id(0, vpc_id).cidr_block(0, "10.0.1.0/24").map_public_ip_on_launch(0, false)
138
+ subnets = subnets.default_for_az(0, false).state(0, "available").subnet_id(0, "subnet-ZZZZZZ")
139
+ @subnets_exists2 = subnets.available_ip_address_count(0, 251)
140
+ }
141
+
142
+
143
+ let(:aws_desc_subnets_by_vpcid_and_cidr) {
144
+ desc_subnets = ZAWS::External::AWSCLI::Commands::EC2::DescribeSubnets.new
145
+ desc_subnets.filter.vpc_id(vpc_id).cidr("10.0.0.0/24")
146
+ desc_subnets.aws.output("json").region(region)
147
+ desc_subnets
148
+ }
149
+
150
+ let(:aws_desc_subnets_by_vpcid_and_cidr_2) {
151
+ desc_subnets = ZAWS::External::AWSCLI::Commands::EC2::DescribeSubnets.new
152
+ desc_subnets.filter.vpc_id(vpc_id).cidr("10.0.1.0/24")
153
+ desc_subnets.aws.output("json").region(region)
154
+ desc_subnets
155
+ }
156
+
157
+ let(:create_load_balancer) {
158
+ clb = ZAWS::External::AWSCLI::Commands::ELB::CreateLoadBalancer.new
159
+ listener=ZAWS::External::AWSCLI::Generators::Result::ELB::Listeners.new
160
+ listener.protocol(0, "tcp").load_balancer_port(0, 80).instance_protocol(0, "tcp").instance_port(0, 80)
161
+ clb.subnets(['subnet-YYYYYY', 'subnet-ZZZZZZ']).security_groups(["sg-X"])
162
+ clb.aws.region(region)
163
+ clb.listeners(listener.get_listeners_array).load_balancer_name('name-???')
164
+ }
165
+
166
+ let(:delete_load_balancer) {
167
+ dlb = ZAWS::External::AWSCLI::Commands::ELB::DeleteLoadBalancer.new
168
+ dlb.aws.region(region)
169
+ dlb.load_balancer_name('name-???')
170
+ }
171
+
172
+ let(:ok_elb) { ZAWS::Helper::Output.colorize("OK: Load Balancer Exists.", AWS_consts::COLOR_GREEN) }
173
+ let(:critical_elb) { ZAWS::Helper::Output.colorize("CRITICAL: Load Balancer does not exist.", AWS_consts::COLOR_RED) }
174
+ let(:ok_instance_registered) { ZAWS::Helper::Output.colorize("OK: Instance registerd.", AWS_consts::COLOR_GREEN) }
175
+ let(:critical_instance_registered) { ZAWS::Helper::Output.colorize("CRITICAL: Instance not registered.", AWS_consts::COLOR_RED) }
176
+ let(:ok_listener_exists) { ZAWS::Helper::Output.colorize("OK: Listerner exists.", AWS_consts::COLOR_GREEN) }
177
+ let(:critical_listener_exists) { ZAWS::Helper::Output.colorize("CRITICAL: Listener does not exist.", AWS_consts::COLOR_RED) }
178
+
179
+ before(:each) {
180
+ @var_security_group_id="sg-abcd1234"
181
+ @var_output_json="json"
182
+ @var_output_table="table"
183
+ @var_region="us-west-1"
184
+ @var_vpc_id="my_vpc_id"
185
+ @var_sec_group_name="my_security_group_name"
186
+
187
+ options_json = {:region => @var_region,
188
+ :verbose => false,
189
+ :check => false,
190
+ :undofile => false,
191
+ :viewtype => 'json'
192
+ }
193
+
194
+ options_table = {:region => @var_region,
195
+ :verbose => false,
196
+ :check => false,
197
+ :undofile => false,
198
+ :viewtype => 'table'
199
+ }
200
+
201
+ options_json_vpcid = {:region => @var_region,
202
+ :verbose => false,
203
+ :check => false,
204
+ :undofile => false,
205
+ :viewtype => 'json',
206
+ :vpcid => vpc_id,
207
+ :cidrblocks => ["10.0.0.0/24", "10.0.1.0/24"]
208
+ }
209
+
210
+ options_json_vpcid_check = {:region => @var_region,
211
+ :verbose => false,
212
+ :check => true,
213
+ :undofile => false,
214
+ :viewtype => 'json',
215
+ :vpcid => vpc_id,
216
+ :cidrblock => '"10.0.0.0/28" "10.0.1.0/28"'
217
+ }
218
+
219
+ options_json_vpcid_undo = {:region => @var_region,
220
+ :verbose => false,
221
+ :check => true,
222
+ :undofile => 'undo.sh',
223
+ :viewtype => 'json',
224
+ :vpcid => vpc_id,
225
+ :cidrblock => '"10.0.0.0/28" "10.0.1.0/28"'
226
+ }
227
+
228
+ @textout=double('outout')
229
+ @shellout=double('ZAWS::Helper::Shell')
230
+ @undofile=double('ZAWS::Helper::ZFile')
231
+ @aws=ZAWS::AWS.new(@shellout, ZAWS::AWSCLI.new(@shellout, true), @undofile)
232
+
233
+ @command_load_balancer = ZAWS::Command::Load_Balancer.new([], options_table, {})
234
+ @command_load_balancer.aws=@aws
235
+ @command_load_balancer.out=@textout
236
+ @command_load_balancer.print_exit_code = true
237
+
238
+ @command_load_balancer_json = ZAWS::Command::Load_Balancer.new([], options_json, {})
239
+ @command_load_balancer_json.aws=@aws
240
+ @command_load_balancer_json.out=@textout
241
+ @command_load_balancer_json.print_exit_code = true
242
+
243
+ @command_load_balancer_json_vpcid = ZAWS::Command::Load_Balancer.new([], options_json_vpcid, {})
244
+ @command_load_balancer_json_vpcid.aws=@aws
245
+ @command_load_balancer_json_vpcid.out=@textout
246
+ @command_load_balancer_json_vpcid.print_exit_code = true
247
+
248
+ @command_load_balancer_json_vpcid_check = ZAWS::Command::Load_Balancer.new([], options_json_vpcid_check, {})
249
+ @command_load_balancer_json_vpcid_check.aws=@aws
250
+ @command_load_balancer_json_vpcid_check.out=@textout
251
+ @command_load_balancer_json_vpcid_check.print_exit_code = true
252
+
253
+ @command_load_balancer_json_vpcid_undo = ZAWS::Command::Load_Balancer.new([], options_json_vpcid_undo, {})
254
+ @command_load_balancer_json_vpcid_undo.aws=@aws
255
+ @command_load_balancer_json_vpcid_undo.out=@textout
256
+ @command_load_balancer_json_vpcid_undo.print_exit_code = true
257
+ }
258
+
259
+ describe "#view" do
260
+ it "Get load balancer in a human readable table." do
261
+ desc_load_balancers= ZAWS::External::AWSCLI::Commands::ELB::DescribeLoadBalancers.new
262
+ desc_load_balancers.aws.output(@var_output_table).region(@var_region)
263
+ expect(@shellout).to receive(:cli).with(desc_load_balancers.aws.get_command, nil).ordered.and_return('test output')
264
+ expect(@textout).to receive(:puts).with('test output').ordered
265
+ @command_load_balancer.view()
266
+ end
267
+
268
+ it "Get load balancer in JSON form " do
269
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).ordered.and_return('test output')
270
+ expect(@textout).to receive(:puts).with('test output').ordered
271
+ @command_load_balancer_json.view()
272
+ end
273
+ end
274
+
275
+ describe "#exists" do
276
+ context "Load balancer exists" do
277
+ it "true, it does exist" do
278
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
279
+ expect(@textout).to receive(:puts).with('true')
280
+ @command_load_balancer_json.exists(elb_name)
281
+ end
282
+ end
283
+ context "Load balancer does not exist" do
284
+ it "false, it does not exist" do
285
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(empty_load_balancer.get_json)
286
+ expect(@textout).to receive(:puts).with('false')
287
+ @command_load_balancer_json.exists(elb_name)
288
+ end
289
+ end
290
+ end
291
+
292
+
293
+ describe "#calculated_listener" do
294
+ it "Creates a JSON object with a listner definition" do
295
+ # example output for: aws ec2 escribe-subnets
296
+ json_expectation = "[{\"Protocol\":\"tcp\",\"LoadBalancerPort\":80,\"InstanceProtocol\":\"tcp\",\"InstancePort\":80}]"
297
+ expect(@aws.elb.load_balancer.calculated_listener("tcp", "80", "tcp", "80")).to eql(json_expectation)
298
+ end
299
+ end
300
+
301
+ describe "#exists_instance" do
302
+ context "instance is registered" do
303
+ it "returns true" do
304
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
305
+ expect(@shellout).to receive(:cli).with(describe_instances.aws.get_command, nil).and_return(instances.get_json)
306
+ expect(@textout).to receive(:puts).with('true')
307
+ @command_load_balancer_json_vpcid.exists_instance(elb_name, instance_id)
308
+ end
309
+ end
310
+ context "instance is not registered" do
311
+ it "returns false" do
312
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
313
+ expect(@shellout).to receive(:cli).with(describe_instances2.aws.get_command, nil).and_return(instances2.get_json)
314
+ expect(@textout).to receive(:puts).with('false')
315
+ @command_load_balancer_json_vpcid.exists_instance(elb_name, instance_id2)
316
+ end
317
+ end
318
+ end
319
+
320
+ describe "#create_in_subnet" do
321
+ context "check flag provided and load balancer created" do
322
+ it "ok" do
323
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
324
+ expect(@textout).to receive(:puts).with(ok_elb)
325
+ begin
326
+ @command_load_balancer_json_vpcid_check.create_in_subnet(elb_name, 'tcp', 80, 'tcp', 80, 'my_security_group_name')
327
+ rescue SystemExit => e
328
+ expect(e.status).to eq(0)
329
+ end
330
+ end
331
+ end
332
+ context "check flag provided and load balancer created" do
333
+ it "critical" do
334
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(empty_load_balancer.get_json)
335
+ expect(@textout).to receive(:puts).with(critical_elb)
336
+
337
+ begin
338
+ @command_load_balancer_json_vpcid_check.create_in_subnet(elb_name, 'tcp', 80, 'tcp', 80, 'my_security_group_name')
339
+ rescue SystemExit => e
340
+ expect(e.status).to eq(2)
341
+ end
342
+ end
343
+ end
344
+
345
+ end
346
+
347
+ describe "#create_in_subnet" do
348
+ context "load balancer does not exist" do
349
+ it "create load balancer" do
350
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(empty_load_balancer.get_json)
351
+ expect(@shellout).to receive(:cli).with(aws_desc_subnets_by_vpcid_and_cidr.aws.get_command, nil).and_return(subnets1.get_json)
352
+ expect(@shellout).to receive(:cli).with(aws_desc_subnets_by_vpcid_and_cidr_2.aws.get_command, nil).and_return(subnets2.get_json)
353
+ expect(@shellout).to receive(:cli).with(describe_security_groups_by_name_by_vpcid.aws.get_command, nil).and_return(security_groups.get_json)
354
+ expect(@shellout).to receive(:cli).with(create_load_balancer.aws.get_command, nil).and_return('{ "DNSName": "???.us-west-1.elb.amazonaws.com" }')
355
+ expect(@textout).to receive(:puts).with(load_balancer_created)
356
+ begin
357
+ @command_load_balancer_json_vpcid.create_in_subnet(elb_name, 'tcp', 80, 'tcp', 80, 'my_security_group')
358
+ rescue SystemExit => e
359
+ expect(e.status).to eq(0)
360
+ end
361
+ end
362
+ end
363
+ context "load balancer does exist" do
364
+ it "skip creating load balancer" do
365
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
366
+ expect(@textout).to receive(:puts).with(load_balancer_not_created)
367
+ begin
368
+ @command_load_balancer_json_vpcid.create_in_subnet(elb_name, 'tcp', 80, 'tcp', 80, 'my_security_group')
369
+ rescue SystemExit => e
370
+ expect(e.status).to eq(0)
371
+ end
372
+ end
373
+ end
374
+ context "check flag provided and load balancer created" do
375
+ it "ok" do
376
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
377
+ expect(@textout).to receive(:puts).with(ok_elb)
378
+ begin
379
+ @command_load_balancer_json_vpcid_check.create_in_subnet(elb_name, 'tcp', 80, 'tcp', 80, 'my_security_group_name')
380
+ rescue SystemExit => e
381
+ expect(e.status).to eq(0)
382
+ end
383
+ end
384
+ end
385
+ context "check flag provided and load not balancer created" do
386
+ it "critical" do
387
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(empty_load_balancer.get_json)
388
+ expect(@textout).to receive(:puts).with(critical_elb)
389
+
390
+ begin
391
+ @command_load_balancer_json_vpcid_check.create_in_subnet(elb_name, 'tcp', 80, 'tcp', 80, 'my_security_group_name')
392
+ rescue SystemExit => e
393
+ expect(e.status).to eq(2)
394
+ end
395
+ end
396
+ end
397
+ context "undo file provided and load balancer exists" do
398
+ it "output delete statement to undo file" do
399
+ expect(@undofile).to receive(:prepend).with("zaws load_balancer delete #{elb_name} --region #{region} $XTRA_OPTS", '#Delete load balancer', 'undo.sh')
400
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
401
+ expect(@textout).to receive(:puts).with(ok_elb)
402
+ begin
403
+ @command_load_balancer_json_vpcid_undo.create_in_subnet(elb_name, 'tcp', 80, 'tcp', 80, 'my_security_group_name')
404
+ rescue SystemExit => e
405
+ expect(e.status).to eq(0)
406
+ end
407
+ end
408
+ end
409
+
410
+ end
411
+
412
+ describe "#delete" do
413
+ context "load balancer exists" do
414
+ it "delete it" do
415
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
416
+ expect(@shellout).to receive(:cli).with(delete_load_balancer.aws.get_command, nil).and_return('{ "return": "true" }')
417
+ expect(@textout).to receive(:puts).with(load_balancer_deleted)
418
+ begin
419
+ @command_load_balancer_json_vpcid.delete(elb_name)
420
+ rescue SystemExit => e
421
+ expect(e.status).to eq(0)
422
+ end
423
+ end
424
+ end
425
+ context "load balancer does not exist" do
426
+ it "skip deletion" do
427
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(empty_load_balancer.get_json)
428
+ expect(@textout).to receive(:puts).with(load_balancer_not_deleted)
429
+ begin
430
+ @command_load_balancer_json_vpcid.delete(elb_name)
431
+ rescue SystemExit => e
432
+ expect(e.status).to eq(0)
433
+ end
434
+ end
435
+ end
436
+ end
437
+
438
+ describe "#deregister_instance" do
439
+ context "instance registered" do
440
+ it "deregister it" do
441
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
442
+ expect(@shellout).to receive(:cli).with(describe_instances.aws.get_command, nil).and_return(instances.get_json)
443
+ expect(@shellout).to receive(:cli).with(deregister_instances_with_load_balancer.aws.get_command, nil).and_return('{ "return" : "true" }')
444
+ expect(@textout).to receive(:puts).with(instance_deregistered)
445
+ @command_load_balancer_json_vpcid.deregister_instance(elb_name, instance_id)
446
+ end
447
+ end
448
+ context "instance not registered" do
449
+ it "nothing to do" do
450
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
451
+ expect(@shellout).to receive(:cli).with(describe_instances2.aws.get_command, nil).and_return(instances2.get_json)
452
+ expect(@textout).to receive(:puts).with(instance_not_deregistered)
453
+ @command_load_balancer_json_vpcid.deregister_instance(elb_name, instance_id2)
454
+ end
455
+ end
456
+ end
457
+
458
+ describe "#register_instance" do
459
+ context "instance registered" do
460
+ it "skip, because it exists already" do
461
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
462
+ expect(@shellout).to receive(:cli).with(describe_instances.aws.get_command, nil).and_return(instances.get_json)
463
+ expect(@textout).to receive(:puts).with(instance_not_registratered)
464
+ begin
465
+ @command_load_balancer_json_vpcid.register_instance(elb_name, instance_id)
466
+ rescue SystemExit => e
467
+ expect(e.status).to eq(0)
468
+ end
469
+ end
470
+ end
471
+ context "instance not registered" do
472
+ it "instance registered" do
473
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
474
+ expect(@shellout).to receive(:cli).with(describe_instances2.aws.get_command, nil).and_return(instances2.get_json)
475
+ expect(@shellout).to receive(:cli).with(register_instances_with_load_balancer.aws.get_command, nil).and_return({"Instances" => instances2.get_instances_array}.to_json)
476
+ expect(@textout).to receive(:puts).with(instance_registered)
477
+ begin
478
+ @command_load_balancer_json_vpcid.register_instance(elb_name, instance_id2)
479
+ rescue SystemExit => e
480
+ expect(e.status).to eq(0)
481
+ end
482
+ end
483
+ end
484
+ context "check flag provided and instance registered" do
485
+ it "ok" do
486
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
487
+ expect(@shellout).to receive(:cli).with(describe_instances.aws.get_command, nil).and_return(instances.get_json)
488
+ expect(@textout).to receive(:puts).with(ok_instance_registered)
489
+ begin
490
+ @command_load_balancer_json_vpcid_check.register_instance(elb_name, instance_id)
491
+ rescue SystemExit => e
492
+ expect(e.status).to eq(0)
493
+ end
494
+ end
495
+ end
496
+ context "check flag provided and instance not registered" do
497
+ it "critical" do
498
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
499
+ expect(@shellout).to receive(:cli).with(describe_instances2.aws.get_command, nil).and_return(instances2.get_json)
500
+ expect(@textout).to receive(:puts).with(critical_instance_registered)
501
+ begin
502
+ @command_load_balancer_json_vpcid_check.register_instance(elb_name, instance_id2)
503
+ rescue SystemExit => e
504
+ expect(e.status).to eq(2)
505
+ end
506
+ end
507
+ end
508
+ context "undo file provided and instance registered" do
509
+ it "output delete statement to undo file" do
510
+ expect(@undofile).to receive(:prepend).with("zaws load_balancer deregister_instance #{elb_name} #{instance_id} --region #{region} --vpcid my_vpc_id $XTRA_OPTS", '#Deregister instance', 'undo.sh')
511
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
512
+ expect(@shellout).to receive(:cli).with(describe_instances.aws.get_command, nil).and_return(instances.get_json)
513
+ expect(@textout).to receive(:puts).with(ok_instance_registered)
514
+ begin
515
+ @command_load_balancer_json_vpcid_undo.register_instance(elb_name, instance_id)
516
+ rescue SystemExit => e
517
+ expect(e.status).to eq(0)
518
+ end
519
+ end
520
+ end
521
+
522
+ end
523
+
524
+ describe "#exists_listener" do
525
+ context "listener on load balancer exists" do
526
+ it "returns true" do
527
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer_with_listener.get_json)
528
+ expect(@textout).to receive(:puts).with('true')
529
+ @command_load_balancer_json_vpcid.exists_listener(elb_name, "HTTP", 80, "HTTP", 80)
530
+ end
531
+ end
532
+ context "no listner on load balancer exists" do
533
+ it "returns false" do
534
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
535
+ expect(@textout).to receive(:puts).with('false')
536
+ @command_load_balancer_json_vpcid.exists_listener(elb_name, "HTTP", 80, "HTTP", 80)
537
+ end
538
+ end
539
+ end
540
+
541
+
542
+ describe "#declare_listener" do
543
+ context "listner not on load balancer exists" do
544
+ it "listener created" do
545
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
546
+ expect(@shellout).to receive(:cli).with(create_load_balancer_listeners.aws.get_command, nil).and_return('{ "return": "true" }')
547
+ expect(@textout).to receive(:puts).with(load_balancer_listener_created)
548
+ begin
549
+ @command_load_balancer_json_vpcid.declare_listener(elb_name, "tcp", 80, "tcp", 80)
550
+ rescue SystemExit => e
551
+ expect(e.status).to eq(0)
552
+ end
553
+ end
554
+ end
555
+ context "listner on load balancer exists" do
556
+ it "listener not created" do
557
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer_with_listener.get_json)
558
+ expect(@textout).to receive(:puts).with(load_balancer_listener_not_created)
559
+ begin
560
+ @command_load_balancer_json_vpcid.declare_listener(elb_name, "HTTP", 80, "HTTP", 80)
561
+ rescue SystemExit => e
562
+ expect(e.status).to eq(0)
563
+ end
564
+ end
565
+ end
566
+ context "undo file present and listner on load balancer exists" do
567
+ it "undo file created" do
568
+ expect(@undofile).to receive(:prepend).with("zaws load_balancer delete_listener #{elb_name} HTTP 80 HTTP 80 --region #{region} $XTRA_OPTS", '#Delete listener', 'undo.sh')
569
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer_with_listener.get_json)
570
+ expect(@textout).to receive(:puts).with(ok_listener_exists)
571
+ begin
572
+ @command_load_balancer_json_vpcid_undo.declare_listener(elb_name, "HTTP", 80, "HTTP", 80)
573
+ rescue SystemExit => e
574
+ expect(e.status).to eq(0)
575
+ end
576
+ end
577
+ end
578
+
579
+ context "check flag specified and listner on load balancer exists" do
580
+ it "returns ok" do
581
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer_with_listener.get_json)
582
+ expect(@textout).to receive(:puts).with(ok_listener_exists)
583
+ begin
584
+ @command_load_balancer_json_vpcid_check.declare_listener(elb_name, "HTTP", 80, "HTTP", 80)
585
+ rescue SystemExit => e
586
+ expect(e.status).to eq(2)
587
+ end
588
+ end
589
+ end
590
+ context "check flag specified and listner not on load balancer exists" do
591
+ it "returns critical" do
592
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
593
+ expect(@textout).to receive(:puts).with(critical_listener_exists)
594
+ begin
595
+ @command_load_balancer_json_vpcid_check.declare_listener(elb_name, "HTTP", 80, "HTTP", 80)
596
+ rescue SystemExit => e
597
+ expect(e.status).to eq(2)
598
+ end
599
+ end
600
+ end
601
+ end
602
+
603
+ describe "#delete_listener" do
604
+ context "listner not on load balancer exists" do
605
+ it "nothing to do" do
606
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer.get_json)
607
+ expect(@textout).to receive(:puts).with(load_balancer_listener_not_deleted)
608
+ begin
609
+ @command_load_balancer_json_vpcid.delete_listener(elb_name, "tcp", 80, "tcp", 80)
610
+ rescue SystemExit => e
611
+ expect(e.status).to eq(0)
612
+ end
613
+ end
614
+ end
615
+ context "listner on load balancer exists" do
616
+ it "listener not created" do
617
+ expect(@shellout).to receive(:cli).with(describe_load_balancer_json.aws.get_command, nil).and_return(single_load_balancer_with_listener.get_json)
618
+ expect(@shellout).to receive(:cli).with(delete_load_balancer_listener.aws.get_command, nil).and_return('{ "return": "true" }')
619
+ expect(@textout).to receive(:puts).with(load_balancer_listener_deleted)
620
+ begin
621
+ @command_load_balancer_json_vpcid.delete_listener(elb_name, "HTTP", 80, "HTTP", 80)
622
+ rescue SystemExit => e
623
+ expect(e.status).to eq(0)
624
+ end
625
+ end
626
+ end
627
+ end
628
+
629
+
630
+ end
631
+
632
+
633
+