openstudio-aws 0.1.26 → 0.2.0

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 (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