openstudio-aws 0.1.26 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (351) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/Rakefile +33 -34
  4. data/lib/openstudio/aws/aws.rb +148 -24
  5. data/lib/openstudio/aws/config.rb +1 -0
  6. data/lib/openstudio/aws/version.rb +1 -1
  7. data/lib/openstudio/lib/ami_list.rb +1 -1
  8. data/lib/openstudio/lib/openstudio_aws_instance.rb +260 -26
  9. data/lib/openstudio/lib/openstudio_aws_logger.rb +0 -18
  10. data/lib/openstudio/lib/openstudio_aws_wrapper.rb +111 -75
  11. data/lib/openstudio/lib/os-aws.rb +14 -6
  12. data/lib/openstudio/lib/server_script.sh +40 -26
  13. data/lib/openstudio/lib/worker_script.sh.template +26 -16
  14. data/lib/openstudio-aws.rb +2 -0
  15. data/spec/aws_instances/aws_spec_api.rb +80 -4
  16. data/spec/openstudio-aws/aws_instance_spec.rb +19 -0
  17. data/spec/openstudio-aws/aws_spec.rb +32 -11
  18. data/spec/openstudio-aws/aws_wrapper_spec.rb +5 -5
  19. data/spec/openstudio-aws/config_spec.rb +1 -1
  20. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.0.xml +11 -0
  21. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.1.xml +11 -0
  22. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.10.xml +11 -0
  23. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.11.xml +11 -0
  24. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.12.xml +11 -0
  25. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.13.xml +11 -0
  26. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.2.xml +11 -0
  27. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.3.xml +11 -0
  28. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.4.xml +11 -0
  29. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.5.xml +11 -0
  30. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.6.xml +11 -0
  31. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.7.xml +11 -0
  32. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.8.xml +11 -0
  33. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.9.xml +11 -0
  34. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.xml +11 -0
  35. data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-a-new-instance.0.xml +26 -0
  36. data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-a-new-instance.xml +35 -0
  37. data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-ebs-storage.0.xml +14 -0
  38. data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-ebs-storage.xml +14 -0
  39. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.0.xml +14 -0
  40. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.1.xml +21 -0
  41. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.2.xml +11 -0
  42. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.3.xml +11 -0
  43. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.4.xml +11 -0
  44. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.5.xml +11 -0
  45. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.6.xml +11 -0
  46. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.xml +16 -0
  47. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.0.xml +13 -0
  48. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.1.xml +13 -0
  49. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.10.xml +13 -0
  50. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.11.xml +13 -0
  51. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.12.xml +13 -0
  52. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.13.xml +13 -0
  53. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.2.xml +13 -0
  54. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.3.xml +13 -0
  55. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.4.xml +13 -0
  56. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.5.xml +13 -0
  57. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.6.xml +13 -0
  58. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.7.xml +13 -0
  59. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.8.xml +13 -0
  60. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.9.xml +13 -0
  61. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.xml +13 -0
  62. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.0.xml +9 -0
  63. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.1.xml +9 -0
  64. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.10.xml +9 -0
  65. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.11.xml +9 -0
  66. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.12.xml +9 -0
  67. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.13.xml +9 -0
  68. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.2.xml +9 -0
  69. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.3.xml +9 -0
  70. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.4.xml +9 -0
  71. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.5.xml +9 -0
  72. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.6.xml +9 -0
  73. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.7.xml +9 -0
  74. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.8.xml +9 -0
  75. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.9.xml +9 -0
  76. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.xml +9 -0
  77. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.0.xml +9 -0
  78. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.1.xml +9 -0
  79. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.10.xml +9 -0
  80. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.11.xml +9 -0
  81. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.12.xml +9 -0
  82. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.13.xml +9 -0
  83. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.2.xml +9 -0
  84. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.3.xml +9 -0
  85. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.4.xml +9 -0
  86. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.5.xml +9 -0
  87. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.6.xml +9 -0
  88. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.7.xml +9 -0
  89. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.8.xml +9 -0
  90. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.9.xml +9 -0
  91. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.xml +9 -0
  92. data/spec/reports/SPEC-OpenStudio-Aws-Aws-workers-before-server.0.xml +9 -0
  93. data/spec/reports/SPEC-OpenStudio-Aws-Aws-workers-before-server.xml +9 -0
  94. data/spec/reports/SPEC-OpenStudio-Aws-Aws.0.xml +7 -0
  95. data/spec/reports/SPEC-OpenStudio-Aws-Aws.1.xml +7 -0
  96. data/spec/reports/SPEC-OpenStudio-Aws-Aws.10.xml +7 -0
  97. data/spec/reports/SPEC-OpenStudio-Aws-Aws.11.xml +7 -0
  98. data/spec/reports/SPEC-OpenStudio-Aws-Aws.12.xml +7 -0
  99. data/spec/reports/SPEC-OpenStudio-Aws-Aws.13.xml +7 -0
  100. data/spec/reports/SPEC-OpenStudio-Aws-Aws.14.xml +7 -0
  101. data/spec/reports/SPEC-OpenStudio-Aws-Aws.15.xml +7 -0
  102. data/spec/reports/SPEC-OpenStudio-Aws-Aws.2.xml +7 -0
  103. data/spec/reports/SPEC-OpenStudio-Aws-Aws.3.xml +7 -0
  104. data/spec/reports/SPEC-OpenStudio-Aws-Aws.4.xml +7 -0
  105. data/spec/reports/SPEC-OpenStudio-Aws-Aws.5.xml +7 -0
  106. data/spec/reports/SPEC-OpenStudio-Aws-Aws.6.xml +7 -0
  107. data/spec/reports/SPEC-OpenStudio-Aws-Aws.7.xml +7 -0
  108. data/spec/reports/SPEC-OpenStudio-Aws-Aws.8.xml +7 -0
  109. data/spec/reports/SPEC-OpenStudio-Aws-Aws.9.xml +7 -0
  110. data/spec/reports/SPEC-OpenStudio-Aws-Aws.xml +7 -0
  111. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.0.xml +9 -0
  112. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.1.xml +9 -0
  113. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.10.xml +9 -0
  114. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.11.xml +9 -0
  115. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.12.xml +9 -0
  116. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.2.xml +9 -0
  117. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.3.xml +9 -0
  118. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.4.xml +9 -0
  119. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.5.xml +9 -0
  120. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.6.xml +9 -0
  121. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.7.xml +9 -0
  122. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.8.xml +9 -0
  123. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.9.xml +9 -0
  124. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.xml +9 -0
  125. data/spec/reports/SPEC-OpenStudio-Aws-Config.0.xml +7 -0
  126. data/spec/reports/SPEC-OpenStudio-Aws-Config.1.xml +7 -0
  127. data/spec/reports/SPEC-OpenStudio-Aws-Config.10.xml +7 -0
  128. data/spec/reports/SPEC-OpenStudio-Aws-Config.11.xml +7 -0
  129. data/spec/reports/SPEC-OpenStudio-Aws-Config.12.xml +7 -0
  130. data/spec/reports/SPEC-OpenStudio-Aws-Config.2.xml +7 -0
  131. data/spec/reports/SPEC-OpenStudio-Aws-Config.3.xml +7 -0
  132. data/spec/reports/SPEC-OpenStudio-Aws-Config.4.xml +7 -0
  133. data/spec/reports/SPEC-OpenStudio-Aws-Config.5.xml +7 -0
  134. data/spec/reports/SPEC-OpenStudio-Aws-Config.6.xml +7 -0
  135. data/spec/reports/SPEC-OpenStudio-Aws-Config.7.xml +7 -0
  136. data/spec/reports/SPEC-OpenStudio-Aws-Config.8.xml +7 -0
  137. data/spec/reports/SPEC-OpenStudio-Aws-Config.9.xml +7 -0
  138. data/spec/reports/SPEC-OpenStudio-Aws-Config.xml +7 -0
  139. data/spec/reports/SPEC-OpenStudioAmis-version-1.0.xml +13 -0
  140. data/spec/reports/SPEC-OpenStudioAmis-version-1.1.xml +13 -0
  141. data/spec/reports/SPEC-OpenStudioAmis-version-1.10.xml +13 -0
  142. data/spec/reports/SPEC-OpenStudioAmis-version-1.11.xml +13 -0
  143. data/spec/reports/SPEC-OpenStudioAmis-version-1.12.xml +13 -0
  144. data/spec/reports/SPEC-OpenStudioAmis-version-1.13.xml +13 -0
  145. data/spec/reports/SPEC-OpenStudioAmis-version-1.2.xml +13 -0
  146. data/spec/reports/SPEC-OpenStudioAmis-version-1.3.xml +13 -0
  147. data/spec/reports/SPEC-OpenStudioAmis-version-1.4.xml +13 -0
  148. data/spec/reports/SPEC-OpenStudioAmis-version-1.5.xml +13 -0
  149. data/spec/reports/SPEC-OpenStudioAmis-version-1.6.xml +13 -0
  150. data/spec/reports/SPEC-OpenStudioAmis-version-1.7.xml +13 -0
  151. data/spec/reports/SPEC-OpenStudioAmis-version-1.8.xml +13 -0
  152. data/spec/reports/SPEC-OpenStudioAmis-version-1.9.xml +13 -0
  153. data/spec/reports/SPEC-OpenStudioAmis-version-1.xml +13 -0
  154. data/spec/reports/SPEC-OpenStudioAmis-version-2.0.xml +9 -0
  155. data/spec/reports/SPEC-OpenStudioAmis-version-2.1.xml +9 -0
  156. data/spec/reports/SPEC-OpenStudioAmis-version-2.10.xml +9 -0
  157. data/spec/reports/SPEC-OpenStudioAmis-version-2.11.xml +9 -0
  158. data/spec/reports/SPEC-OpenStudioAmis-version-2.12.xml +9 -0
  159. data/spec/reports/SPEC-OpenStudioAmis-version-2.13.xml +9 -0
  160. data/spec/reports/SPEC-OpenStudioAmis-version-2.2.xml +9 -0
  161. data/spec/reports/SPEC-OpenStudioAmis-version-2.3.xml +9 -0
  162. data/spec/reports/SPEC-OpenStudioAmis-version-2.4.xml +9 -0
  163. data/spec/reports/SPEC-OpenStudioAmis-version-2.5.xml +9 -0
  164. data/spec/reports/SPEC-OpenStudioAmis-version-2.6.xml +9 -0
  165. data/spec/reports/SPEC-OpenStudioAmis-version-2.7.xml +9 -0
  166. data/spec/reports/SPEC-OpenStudioAmis-version-2.8.xml +9 -0
  167. data/spec/reports/SPEC-OpenStudioAmis-version-2.9.xml +9 -0
  168. data/spec/reports/SPEC-OpenStudioAmis-version-2.xml +9 -0
  169. data/spec/reports/SPEC-OpenStudioAmis.0.xml +7 -0
  170. data/spec/reports/SPEC-OpenStudioAmis.1.xml +7 -0
  171. data/spec/reports/SPEC-OpenStudioAmis.10.xml +7 -0
  172. data/spec/reports/SPEC-OpenStudioAmis.11.xml +7 -0
  173. data/spec/reports/SPEC-OpenStudioAmis.12.xml +7 -0
  174. data/spec/reports/SPEC-OpenStudioAmis.13.xml +7 -0
  175. data/spec/reports/SPEC-OpenStudioAmis.2.xml +7 -0
  176. data/spec/reports/SPEC-OpenStudioAmis.3.xml +7 -0
  177. data/spec/reports/SPEC-OpenStudioAmis.4.xml +7 -0
  178. data/spec/reports/SPEC-OpenStudioAmis.5.xml +7 -0
  179. data/spec/reports/SPEC-OpenStudioAmis.6.xml +7 -0
  180. data/spec/reports/SPEC-OpenStudioAmis.7.xml +7 -0
  181. data/spec/reports/SPEC-OpenStudioAmis.8.xml +7 -0
  182. data/spec/reports/SPEC-OpenStudioAmis.9.xml +7 -0
  183. data/spec/reports/SPEC-OpenStudioAmis.xml +7 -0
  184. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.0.xml +21 -0
  185. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.1.xml +11 -0
  186. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.10.xml +11 -0
  187. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.11.xml +11 -0
  188. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.2.xml +11 -0
  189. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.3.xml +25 -0
  190. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.4.xml +11 -0
  191. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.5.xml +11 -0
  192. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.6.xml +11 -0
  193. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.7.xml +11 -0
  194. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.8.xml +11 -0
  195. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.9.xml +11 -0
  196. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.xml +25 -0
  197. data/spec/reports/SPEC-OpenStudioAwsInstance.0.xml +7 -0
  198. data/spec/reports/SPEC-OpenStudioAwsInstance.1.xml +7 -0
  199. data/spec/reports/SPEC-OpenStudioAwsInstance.10.xml +7 -0
  200. data/spec/reports/SPEC-OpenStudioAwsInstance.11.xml +7 -0
  201. data/spec/reports/SPEC-OpenStudioAwsInstance.2.xml +7 -0
  202. data/spec/reports/SPEC-OpenStudioAwsInstance.3.xml +7 -0
  203. data/spec/reports/SPEC-OpenStudioAwsInstance.4.xml +7 -0
  204. data/spec/reports/SPEC-OpenStudioAwsInstance.5.xml +7 -0
  205. data/spec/reports/SPEC-OpenStudioAwsInstance.6.xml +7 -0
  206. data/spec/reports/SPEC-OpenStudioAwsInstance.7.xml +7 -0
  207. data/spec/reports/SPEC-OpenStudioAwsInstance.8.xml +7 -0
  208. data/spec/reports/SPEC-OpenStudioAwsInstance.9.xml +7 -0
  209. data/spec/reports/SPEC-OpenStudioAwsInstance.xml +7 -0
  210. data/spec/reports/SPEC-OpenStudioAwsMethods-processors.0.xml +11 -0
  211. data/spec/reports/SPEC-OpenStudioAwsMethods-processors.1.xml +11 -0
  212. data/spec/reports/SPEC-OpenStudioAwsMethods-processors.xml +11 -0
  213. data/spec/reports/SPEC-OpenStudioAwsMethods.0.xml +7 -0
  214. data/spec/reports/SPEC-OpenStudioAwsMethods.1.xml +7 -0
  215. data/spec/reports/SPEC-OpenStudioAwsMethods.xml +7 -0
  216. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.0.xml +9 -0
  217. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.1.xml +9 -0
  218. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.10.xml +9 -0
  219. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.11.xml +9 -0
  220. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.12.xml +9 -0
  221. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.2.xml +9 -0
  222. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.3.xml +9 -0
  223. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.4.xml +9 -0
  224. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.5.xml +9 -0
  225. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.6.xml +9 -0
  226. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.7.xml +9 -0
  227. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.8.xml +9 -0
  228. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.9.xml +9 -0
  229. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.xml +9 -0
  230. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.0.xml +11 -0
  231. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.1.xml +11 -0
  232. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.10.xml +11 -0
  233. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.11.xml +11 -0
  234. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.12.xml +11 -0
  235. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.13.xml +11 -0
  236. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.2.xml +11 -0
  237. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.3.xml +11 -0
  238. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.4.xml +11 -0
  239. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.5.xml +11 -0
  240. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.6.xml +11 -0
  241. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.7.xml +11 -0
  242. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.8.xml +11 -0
  243. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.9.xml +11 -0
  244. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.xml +11 -0
  245. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.0.xml +11 -0
  246. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.1.xml +11 -0
  247. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.10.xml +11 -0
  248. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.11.xml +11 -0
  249. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.12.xml +11 -0
  250. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.13.xml +11 -0
  251. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.2.xml +11 -0
  252. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.3.xml +11 -0
  253. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.4.xml +11 -0
  254. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.5.xml +11 -0
  255. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.6.xml +9 -0
  256. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.7.xml +11 -0
  257. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.8.xml +11 -0
  258. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.9.xml +11 -0
  259. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.xml +11 -0
  260. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.0.xml +9 -0
  261. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.1.xml +9 -0
  262. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.10.xml +9 -0
  263. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.11.xml +9 -0
  264. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.12.xml +9 -0
  265. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.13.xml +9 -0
  266. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.2.xml +9 -0
  267. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.3.xml +9 -0
  268. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.4.xml +9 -0
  269. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.5.xml +9 -0
  270. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.6.xml +9 -0
  271. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.7.xml +9 -0
  272. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.8.xml +9 -0
  273. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.9.xml +9 -0
  274. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.xml +9 -0
  275. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.0.xml +103 -0
  276. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.1.xml +103 -0
  277. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.10.xml +107 -0
  278. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.11.xml +107 -0
  279. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.12.xml +107 -0
  280. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.2.xml +103 -0
  281. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.3.xml +103 -0
  282. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.4.xml +107 -0
  283. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.5.xml +107 -0
  284. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.6.xml +107 -0
  285. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.7.xml +107 -0
  286. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.8.xml +107 -0
  287. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.9.xml +107 -0
  288. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.xml +103 -0
  289. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.0.xml +1111 -0
  290. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.1.xml +1111 -0
  291. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.10.xml +1113 -0
  292. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.11.xml +1113 -0
  293. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.12.xml +1133 -0
  294. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.2.xml +1111 -0
  295. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.3.xml +1111 -0
  296. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.4.xml +1113 -0
  297. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.5.xml +1113 -0
  298. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.6.xml +1113 -0
  299. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.7.xml +1113 -0
  300. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.8.xml +1113 -0
  301. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.9.xml +1113 -0
  302. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.xml +1111 -0
  303. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.0.xml +7 -0
  304. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.1.xml +7 -0
  305. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.10.xml +7 -0
  306. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.11.xml +7 -0
  307. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.12.xml +7 -0
  308. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.13.xml +7 -0
  309. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.2.xml +7 -0
  310. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.3.xml +7 -0
  311. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.4.xml +7 -0
  312. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.5.xml +7 -0
  313. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.6.xml +7 -0
  314. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.7.xml +7 -0
  315. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.8.xml +7 -0
  316. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.9.xml +7 -0
  317. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.xml +7 -0
  318. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.0.xml +9 -0
  319. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.1.xml +9 -0
  320. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.10.xml +9 -0
  321. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.11.xml +9 -0
  322. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.12.xml +9 -0
  323. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.13.xml +9 -0
  324. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.2.xml +9 -0
  325. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.3.xml +9 -0
  326. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.4.xml +9 -0
  327. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.5.xml +9 -0
  328. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.6.xml +9 -0
  329. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.7.xml +9 -0
  330. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.8.xml +9 -0
  331. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.9.xml +9 -0
  332. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.xml +9 -0
  333. data/spec/reports/SPEC-OpenStudioAwsWrapper.0.xml +7 -0
  334. data/spec/reports/SPEC-OpenStudioAwsWrapper.1.xml +7 -0
  335. data/spec/reports/SPEC-OpenStudioAwsWrapper.10.xml +7 -0
  336. data/spec/reports/SPEC-OpenStudioAwsWrapper.11.xml +7 -0
  337. data/spec/reports/SPEC-OpenStudioAwsWrapper.12.xml +7 -0
  338. data/spec/reports/SPEC-OpenStudioAwsWrapper.13.xml +7 -0
  339. data/spec/reports/SPEC-OpenStudioAwsWrapper.2.xml +7 -0
  340. data/spec/reports/SPEC-OpenStudioAwsWrapper.3.xml +7 -0
  341. data/spec/reports/SPEC-OpenStudioAwsWrapper.4.xml +7 -0
  342. data/spec/reports/SPEC-OpenStudioAwsWrapper.5.xml +7 -0
  343. data/spec/reports/SPEC-OpenStudioAwsWrapper.6.xml +7 -0
  344. data/spec/reports/SPEC-OpenStudioAwsWrapper.7.xml +7 -0
  345. data/spec/reports/SPEC-OpenStudioAwsWrapper.8.xml +7 -0
  346. data/spec/reports/SPEC-OpenStudioAwsWrapper.9.xml +7 -0
  347. data/spec/reports/SPEC-OpenStudioAwsWrapper.xml +7 -0
  348. data/spec/resources/upload_me.sh +5 -0
  349. metadata +664 -7
  350. data/lib/openstudio/lib/openstudio_aws_methods.rb +0 -237
  351. data/spec/openstudio-aws/aws_methods_spec.rb +0 -24
@@ -18,29 +18,76 @@
18
18
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
19
  ######################################################################
20
20
 
21
- require 'securerandom'
22
- require_relative 'openstudio_aws_logger'
23
- require_relative 'openstudio_aws_methods'
24
-
25
21
  class OpenStudioAwsInstance
26
22
  include Logging
27
- include OpenStudioAwsMethods
28
23
 
29
24
  attr_reader :openstudio_instance_type
30
25
  attr_reader :data
26
+ attr_reader :private_key_file_name
27
+ attr_reader :group_uuid
31
28
 
32
- def initialize(aws_session, openstudio_instance_type, key_pair_name, security_group_name, group_uuid, private_key, proxy = nil, options = {})
29
+ def initialize(aws_session, openstudio_instance_type, key_pair_name, security_group_name, group_uuid, private_key, private_key_file_name, proxy = nil, _options = {})
33
30
  @data = nil # stored information about the instance
34
31
  @aws = aws_session
35
32
  @openstudio_instance_type = openstudio_instance_type # :server, :worker
36
33
  @key_pair_name = key_pair_name
37
34
  @security_group_name = security_group_name
38
35
  @group_uuid = group_uuid.to_s
36
+ @init_timestamp = Time.now # This is the timestamp and is typically just tracked for the server
39
37
  @private_key = private_key
38
+ @private_key_file_name = private_key_file_name
40
39
  @proxy = proxy
40
+
41
+ # Important System information
42
+ @host = nil
43
+ @instance_id = nil
44
+ @user = 'ubuntu'
41
45
  end
42
46
 
43
- def launch_instance(image_id, instance_type, user_data, user_id)
47
+ def create_and_attach_volume(size, instance_id, availability_zone)
48
+ options = {
49
+ size: size,
50
+ # required
51
+ availability_zone: availability_zone,
52
+ volume_type: 'standard'
53
+ # encrypted: true
54
+ }
55
+ resp = @aws.create_volume(options).to_hash
56
+
57
+ # get the instance information
58
+ test_result = @aws.describe_volumes(volume_ids: [resp[:volume_id]])
59
+ puts test_result
60
+ begin
61
+ Timeout.timeout(600) { # 10 minutes
62
+ while test_result.nil? || test_result.instance_state.name != 'available'
63
+ # refresh the server instance information
64
+
65
+ sleep 5
66
+ test_result = @aws.describe_volumes(volume_ids: [resp[:volume_id]])
67
+ logger.info '... waiting for EBS volume to be available ...'
68
+ end
69
+ }
70
+ rescue TimeoutError
71
+ raise "EBS volume was unable to be created due to timeout #{instance_id}"
72
+ end
73
+
74
+ # need to wait until it is available
75
+
76
+ @aws.attach_volume(
77
+
78
+ volume_id: resp[:volume_id],
79
+ instance_id: instance_id,
80
+ # required
81
+ device: '/dev/sdh'
82
+
83
+ )
84
+
85
+ # Wait for the volume to attach
86
+
87
+ # true?
88
+ end
89
+
90
+ def launch_instance(image_id, instance_type, user_data, user_id, ebs_volume_size = nil)
44
91
  # logger.info("user_data #{user_data.inspect}")
45
92
  instance = {
46
93
  image_id: image_id,
@@ -48,10 +95,12 @@ class OpenStudioAwsInstance
48
95
  security_groups: [@security_group_name],
49
96
  user_data: Base64.encode64(user_data),
50
97
  instance_type: instance_type,
98
+ placement: {
99
+ availability_zone: 'us-east-1c'
100
+ },
51
101
  min_count: 1,
52
102
  max_count: 1
53
103
  }
54
- # logger.info instance.inspect
55
104
  result = @aws.run_instances(instance)
56
105
 
57
106
  # determine how many processors are suppose to be in this image (lookup for now?)
@@ -60,22 +109,20 @@ class OpenStudioAwsInstance
60
109
  # only asked for 1 instance, so therefore it should be the first
61
110
  aws_instance = result.data.instances.first
62
111
  @aws.create_tags(
63
-
64
- resources: [aws_instance.instance_id],
65
- tags: [
66
- { key: 'Name', value: "OpenStudio-#{@openstudio_instance_type.capitalize}" }, # todo: abstract out the server and version
67
- { key: 'GroupUUID', value: @group_uuid },
68
- { key: 'NumberOfProcessors', value: processors.to_s },
69
- { key: 'Purpose', value: "OpenStudio#{@openstudio_instance_type.capitalize}" },
70
- { key: 'UserID', value: user_id }
71
- ]
72
-
112
+ resources: [aws_instance.instance_id],
113
+ tags: [
114
+ { key: 'Name', value: "OpenStudio-#{@openstudio_instance_type.capitalize}" }, # todo: abstract out the server and version
115
+ { key: 'GroupUUID', value: @group_uuid },
116
+ { key: 'NumberOfProcessors', value: processors.to_s },
117
+ { key: 'Purpose', value: "OpenStudio#{@openstudio_instance_type.capitalize}" },
118
+ { key: 'UserID', value: user_id }
119
+ ]
73
120
  )
74
121
 
75
122
  # get the instance information
76
123
  test_result = @aws.describe_instance_status(instance_ids: [aws_instance.instance_id]).data.instance_statuses.first
77
124
  begin
78
- Timeout.timeout(600) {# 10 minutes
125
+ Timeout.timeout(600) { # 10 minutes
79
126
  while test_result.nil? || test_result.instance_state.name != 'running'
80
127
  # refresh the server instance information
81
128
 
@@ -85,7 +132,11 @@ class OpenStudioAwsInstance
85
132
  end
86
133
  }
87
134
  rescue TimeoutError
88
- raise "Intance was unable to launch due to timeout #{aws_instance.instance_id}"
135
+ raise "Instance was unable to launch due to timeout #{aws_instance.instance_id}"
136
+ end
137
+
138
+ if ebs_volume_size
139
+ create_and_attach_volume(ebs_volume_size, aws_instance.instance_id, aws_instance.placement.availability_zone)
89
140
  end
90
141
 
91
142
  # now grab information about the instance
@@ -108,14 +159,19 @@ class OpenStudioAwsInstance
108
159
  h = ''
109
160
  if @openstudio_instance_type == :server
110
161
  h = {
111
- timestamp: @group_uuid,
112
- #:private_key => @private_key, # need to stop printing this out
162
+ group_id: @group_uuid,
163
+ timestamp: @init_timestamp.to_i,
164
+ time_created: @init_timestamp.to_s,
165
+ # private_key_path: "#{File.expand_path(@private_key_path)}"
166
+ #:private_key => @private_key, # need to stop printing this out
167
+ location: 'AWS',
113
168
  server: {
114
169
  id: @data.id,
115
170
  ip: 'http://' + @data.ip,
116
171
  dns: @data.dns,
117
- procs: @data.procs
118
- }
172
+ procs: @data.procs,
173
+ private_key_file_name: @private_key_file_name
174
+ }
119
175
  }
120
176
  else
121
177
  fail 'do not know how to convert :worker instance to_os_hash. Use the os_aws.to_worker_hash method'
@@ -126,12 +182,190 @@ class OpenStudioAwsInstance
126
182
  h
127
183
  end
128
184
 
185
+ def find_processors(instance)
186
+ lookup = {
187
+ 'm3.medium' => 1,
188
+ 'm3.large' => 2,
189
+ 'm3.xlarge' => 4,
190
+ 'm3.2xlarge' => 8,
191
+ 'c3.large' => 2,
192
+ 'c3.xlarge' => 4,
193
+ 'c3.2xlarge' => 8,
194
+ 'c3.4xlarge' => 16,
195
+ 'c3.8xlarge' => 32,
196
+ 'r3.large' => 2,
197
+ 'r3.xlarge' => 4,
198
+ 'r3.2xlarge' => 8,
199
+ 'r3.4xlarge' => 16,
200
+ 'r3.8xlarge' => 32,
201
+ 't1.micro' => 1,
202
+ 'm1.small' => 1,
203
+ 'm2.2xlarge' => 4,
204
+ 'm2.4xlarge' => 8,
205
+ }
206
+
207
+ processors = 1
208
+ if lookup.key?(instance)
209
+ processors = lookup[instance]
210
+ else
211
+ # logger.warn "Could not find the number of processors for instance type of #{instance}" if logger
212
+ end
213
+
214
+ if @openstudio_instance_type == :server
215
+ # take out 3 of the processors for doing work with a max of 1 to work
216
+ # 1 for server
217
+ # 1 for mongodb
218
+ # 1 for child processes to download files
219
+ processors = [processors - 2, 1].max # this is 2 for now because the current server decrements by 1 (which will be removed if 2.0-pre6)
220
+ end
221
+
222
+ processors
223
+ end
224
+
225
+ def get_proxy
226
+ proxy = nil
227
+ if @proxy
228
+ if @proxy[:username]
229
+ proxy = Net::SSH::Proxy::HTTP.new(@proxy[:host], @proxy[:port], user: @proxy[:username], password: proxy[:password])
230
+ else
231
+ proxy = Net::SSH::Proxy::HTTP.new(@proxy[:host], @proxy[:port])
232
+ end
233
+ end
234
+
235
+ proxy
236
+ end
237
+
238
+ def upload_file(local_path, remote_path)
239
+ retries = 0
240
+ begin
241
+ Net::SCP.start(@data.ip, @user, proxy: get_proxy, key_data: [@private_key]) do |scp|
242
+ scp.upload! local_path, remote_path
243
+ end
244
+ rescue SystemCallError, Timeout::Error => e
245
+ # port 22 might not be available immediately after the instance finishes launching
246
+ return if retries == 5
247
+ retries += 1
248
+ sleep 1
249
+ retry
250
+ rescue
251
+ # Unknown upload error, retry
252
+ return if retries == 5
253
+ retries += 1
254
+ sleep 1
255
+ retry
256
+ end
257
+ end
258
+
259
+ # Send a command through SSH Shell to an instance.
260
+ # Need to pass the command as a string.
261
+ def shell_command(command, load_env = true)
262
+ logger.info("ssh_command #{command} with load environment #{load_env}")
263
+ command = "source /etc/profile; source ~/.bash_profile; #{command}" if load_env
264
+ Net::SSH.start(@data.ip, @user, proxy: get_proxy, key_data: [@private_key]) do |ssh|
265
+ channel = ssh.open_channel do |ch|
266
+ ch.exec "#{command}" do |ch, success|
267
+ fail "could not execute #{command}" unless success
268
+ # "on_data" is called when the process wr_ites something to stdout
269
+ ch.on_data do |_c, data|
270
+ # $stdout.print data
271
+ logger.info("#{data.inspect}")
272
+ end
273
+ # "on_extended_data" is called when the process writes something to s_tde_rr
274
+ ch.on_extended_data do |_c, _type, data|
275
+ # $stderr.print data
276
+ logger.info("#{data.inspect}")
277
+ end
278
+ end
279
+ end
280
+ end
281
+ rescue Net::SSH::HostKeyMismatch => e
282
+ e.remember_host!
283
+ logger.info('key mismatch, retry')
284
+ sleep 1
285
+ retry
286
+ rescue SystemCallError, Timeout::Error => e
287
+ # port 22 might not be available immediately after the instance finishes launching
288
+ sleep 1
289
+ logger.info('SystemCallError, Waiting for SSH to become available')
290
+ retry
291
+ end
292
+
293
+ def wait_command(command)
294
+ flag = 0
295
+ while flag == 0
296
+ logger.info("wait_command #{command}")
297
+ Net::SSH.start(@data.ip, @user, proxy: get_proxy, key_data: [@private_key]) do |ssh|
298
+ channel = ssh.open_channel do |ch|
299
+ ch.exec "#{command}" do |ch, success|
300
+ fail "could not execute #{command}" unless success
301
+ # "on_data" is called_ when the process writes something to stdout
302
+ ch.on_data do |_c, data|
303
+ logger.info("#{data.inspect}")
304
+ if data.chomp == 'true'
305
+ logger.info("wait_command #{command} is true")
306
+ flag = 1
307
+ else
308
+ sleep 10
309
+ end
310
+ end
311
+ # "on_extended_data" is called when the process writes some_thi_ng to stderr
312
+ ch.on_extended_data do |_c, _type, data|
313
+ logger.info("#{data.inspect}")
314
+ if data == 'true'
315
+ logger.info("wait_command #{command} is true")
316
+ flag = 1
317
+ else
318
+ sleep 10
319
+ end
320
+ end
321
+ end
322
+ end
323
+ end
324
+ end
325
+ rescue Net::SSH::HostKeyMismatch => e
326
+ e.remember_host!
327
+ logger.info('key mismatch, retry')
328
+ sleep 10
329
+ retry
330
+ rescue SystemCallError, Timeout::Error => e
331
+ # port 22 might not be available immediately after the instance finishes launching
332
+ sleep 10
333
+ logger.info('Timeout. Perhaps there is a communication error to EC2? Will try again')
334
+ retry
335
+ end
336
+
337
+ def download_file(remote_path, local_path)
338
+ retries = 0
339
+ begin
340
+ Net::SCP.start(@data.ip, @user, proxy: get_proxy, key_data: [@private_key]) do |scp|
341
+ scp.download! remote_path, local_path
342
+ end
343
+ rescue SystemCallError, Timeout::Error => e
344
+ # port 22 might not be available immediately after the instance finishes launching
345
+ return if retries == 5
346
+ retries += 1
347
+ sleep 1
348
+ retry
349
+ rescue
350
+ return if retries == 5
351
+ retries += 1
352
+ sleep 1
353
+ retry
354
+ end
355
+ end
356
+
129
357
  private
130
358
 
131
- # store the data into a custom struct. The instance is the full description. The remaining fields are
359
+ # store some of the data into a custom struct. The instance is the full description. The remaining fields are
132
360
  # just easier accessors to the data in the raw request except for procs which is a custom request.
133
361
  def create_struct(instance, procs)
134
362
  instance_struct = Struct.new(:instance, :id, :ip, :dns, :procs)
135
- instance_struct.new(instance, instance[:instance_id], instance[:public_ip_address], instance[:public_dns_name], procs)
363
+ s = instance_struct.new(instance, instance[:instance_id], instance[:public_ip_address], instance[:public_dns_name], procs)
364
+
365
+ # store some values into the member variables
366
+ @ip_address = instance[:public_ip_address]
367
+ @instance_id = instance[:instance_id]
368
+
369
+ s
136
370
  end
137
371
  end
@@ -18,24 +18,6 @@
18
18
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
19
  ######################################################################
20
20
 
21
- ######################################################################
22
- # == Synopsis
23
- #
24
- # Uses the aws-sdk gem to communicate with AWS
25
- #
26
- # == Usage
27
- #
28
- # ruby aws.rb access_key secret_key us-east-1 EC2 launch_server "{\"instance_type\":\"t1.micro\"}"
29
- #
30
- # ARGV[0] - Access Key
31
- # ARGV[1] - Secret Key
32
- # ARGV[2] - Region
33
- # ARGV[3] - Service (e.g. "EC2" or "CloudWatch")
34
- # ARGV[4] - Command (e.g. "launch_server")
35
- # ARGV[5] - Optional json with parameters associated with command
36
- #
37
- ######################################################################
38
-
39
21
  require 'logger'
40
22
 
41
23
  # module for logging