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
@@ -48,17 +48,20 @@ class OpenStudioAwsWrapper
48
48
  attr_reader :workers
49
49
  attr_reader :proxy
50
50
 
51
- # todo: put this into a module
52
- VALID_OPTIONS = [
53
- :proxy, :credentials
54
- ]
51
+ attr_accessor :private_key_file_name
52
+
53
+ VALID_OPTIONS = [:proxy, :credentials]
55
54
 
56
55
  def initialize(options = {}, group_uuid = nil)
57
- @group_uuid = group_uuid || Time.now.to_i.to_s
56
+ @group_uuid = group_uuid || (SecureRandom.uuid).gsub('-', '')
58
57
 
59
58
  @security_group_name = nil
60
59
  @key_pair_name = nil
61
- @private_key = nil
60
+ @private_key_file_name = nil
61
+
62
+ @private_key = nil # Private key data
63
+
64
+ # List of instances
62
65
  @server = nil
63
66
  @workers = []
64
67
 
@@ -66,7 +69,7 @@ class OpenStudioAwsWrapper
66
69
  @proxy = options[:proxy] ? options[:proxy] : nil
67
70
 
68
71
  # need to remove the prxoy information here
69
- @aws = Aws::EC2.new(options[:credentials])
72
+ @aws = Aws::EC2::Client.new(options[:credentials])
70
73
  end
71
74
 
72
75
  def create_or_retrieve_security_group(sg_name = nil)
@@ -77,21 +80,17 @@ class OpenStudioAwsWrapper
77
80
  logger.info 'server group not found --- will create a new one'
78
81
  @aws.create_security_group(group_name: tmp_name, description: "group dynamically created by #{__FILE__}")
79
82
  @aws.authorize_security_group_ingress(
80
-
81
- group_name: tmp_name,
82
- ip_permissions: [
83
- { ip_protocol: 'tcp', from_port: 1, to_port: 65535, ip_ranges: [cidr_ip: '0.0.0.0/0'] }
84
- ]
85
-
83
+ group_name: tmp_name,
84
+ ip_permissions: [
85
+ { ip_protocol: 'tcp', from_port: 1, to_port: 65_535, ip_ranges: [cidr_ip: '0.0.0.0/0'] }
86
+ ]
86
87
  )
87
88
  @aws.authorize_security_group_ingress(
88
-
89
- group_name: tmp_name,
90
- ip_permissions: [
91
- { ip_protocol: 'icmp', from_port: -1, to_port: -1, ip_ranges: [cidr_ip: '0.0.0.0/0']
92
- }
93
- ]
94
-
89
+ group_name: tmp_name,
90
+ ip_permissions: [
91
+ { ip_protocol: 'icmp', from_port: -1, to_port: -1, ip_ranges: [cidr_ip: '0.0.0.0/0']
92
+ }
93
+ ]
95
94
  )
96
95
 
97
96
  # reload group information
@@ -131,34 +130,40 @@ class OpenStudioAwsWrapper
131
130
  resp = nil
132
131
  if group_uuid
133
132
  resp = @aws.describe_instances(
134
-
135
- filters: [
136
- { name: 'instance-state-code', values: [0.to_s, 16.to_s] }, # running or pending
137
- { name: 'tag-key', values: ['GroupUUID'] },
138
- { name: 'tag-value', values: [group_uuid.to_s] } # todo: how to check for the server versions
139
- # {:name => "tag-value", :values => [group_uuid.to_s, "OpenStudio#{@openstudio_instance_type.capitalize}"]}
140
- # {:name => "tag:key=value", :values => ["GroupUUID=#{group_uuid.to_s}"]}
141
- ]
142
-
133
+ filters: [
134
+ { name: 'instance-state-code', values: [0.to_s, 16.to_s] }, # running or pending
135
+ { name: 'tag-key', values: ['GroupUUID'] },
136
+ { name: 'tag-value', values: [group_uuid.to_s] }
137
+ ]
143
138
  )
144
139
  else
145
- # todo: need to restrict this to only the current user
146
140
  resp = @aws.describe_instances
147
141
  end
148
142
 
149
143
  instance_data = nil
150
144
  if resp
151
- if resp.reservations.length > 0
152
- resp = resp.reservations.first
153
- if resp.instances
154
- instance_data = []
155
- resp.instances.each do |i|
156
- instance_data << i.to_hash
145
+ instance_data = []
146
+ resp.reservations.each do |r|
147
+ r.instances.each do |i|
148
+ i_h = i.to_hash
149
+ if group_uuid && openstudio_instance_type
150
+ # {:key=>"Purpose", :value=>"OpenStudioWorker"}
151
+ if i_h[:tags].any? { |h| (h[:key] == 'Purpose') && (h[:value] == "OpenStudio#{openstudio_instance_type.capitalize}") } &&
152
+ i_h[:tags].any? { |h|(h[:key] == 'GroupUUID') && (h[:value] == group_uuid.to_s) }
153
+ instance_data << i_h
154
+ end
155
+ elsif group_uuid
156
+ if i_h[:tags].any? { |h|(h[:key] == 'GroupUUID') && (h[:value] == group_uuid.to_s) }
157
+ instance_data << i_h
158
+ end
159
+ elsif openstudio_instance_type
160
+ if i_h[:tags].any? { |h| (h[:key] == 'Purpose') && (h[:value] == "OpenStudio#{openstudio_instance_type.capitalize}") }
161
+ instance_data << i_h
162
+ end
163
+ else
164
+ instance_data << i_h
157
165
  end
158
-
159
166
  end
160
- else
161
- logger.info 'no running instances found'
162
167
  end
163
168
  end
164
169
 
@@ -201,7 +206,29 @@ class OpenStudioAwsWrapper
201
206
  resp
202
207
  end
203
208
 
204
- def create_or_retrieve_key_pair(key_pair_name = nil, private_key_file = nil)
209
+ def stop_instances(ids)
210
+ resp = @aws.stop_instances(
211
+ instance_ids: ids,
212
+ force: true
213
+ )
214
+
215
+ resp
216
+ end
217
+
218
+ def terminate_instances(ids)
219
+ begin
220
+ resp = @aws.terminate_instances(
221
+ instance_ids: ids,
222
+ )
223
+ rescue Aws::EC2::Errors::InvalidInstanceIDNotFound
224
+ # Log that the instances couldn't be found?
225
+ return resp = {error: 'instances could not be found'}
226
+ end
227
+
228
+ resp
229
+ end
230
+
231
+ def create_or_retrieve_key_pair(key_pair_name = nil)
205
232
  tmp_name = key_pair_name || "os-key-pair-#{@group_uuid}"
206
233
 
207
234
  # the describe_key_pairs method will raise an expection if it can't find the keypair, so catch it
@@ -226,23 +253,25 @@ class OpenStudioAwsWrapper
226
253
  logger.info "found existing keypair #{resp.key_pairs.first}"
227
254
  @key_pair_name = resp.key_pairs.first[:key_name]
228
255
 
229
- if File.exists(private_key_file)
230
- @private_key = File.read(private_key_file, 'r')
231
- else
232
- # should we raise?
233
- logger.error "Could not find the private key file to load from #{private_key_file}"
234
- end
256
+ # This will not set the private key because it doesn't live on the remote system
235
257
  end
236
258
 
237
259
  logger.info("create key pair: #{@key_pair_name}")
238
260
  end
239
261
 
262
+ def load_private_key(filename)
263
+ fail "Could not find private key #{filename}" unless File.exist? filename
264
+ @private_key_file_name = File.expand_path filename
265
+ @private_key = File.read(filename)
266
+ end
267
+
240
268
  def save_private_key(filename)
241
269
  if @private_key
270
+ @private_key_file_name = File.expand_path filename
242
271
  File.open(filename, 'w') { |f| f << @private_key }
243
272
  File.chmod(0600, filename)
244
273
  else
245
- logger.error 'no private key found in which to persist'
274
+ fail "No private key found in which to persist with filename #{filename}"
246
275
  end
247
276
  end
248
277
 
@@ -251,11 +280,13 @@ class OpenStudioAwsWrapper
251
280
  options = defaults.merge(options)
252
281
 
253
282
  user_data = File.read(File.expand_path(File.dirname(__FILE__)) + '/server_script.sh')
254
- @server = OpenStudioAwsInstance.new(@aws, :server, @key_pair_name, @security_group_name, @group_uuid, @private_key, @proxy)
283
+ @server = OpenStudioAwsInstance.new(@aws, :server, @key_pair_name, @security_group_name, @group_uuid, @private_key, @private_key_file_name, @proxy)
284
+
285
+ # create the EBS volumes instead of the ephemeral storage - needed especially for the m3 instances (SSD)
255
286
 
256
287
  fail 'image_id is nil' unless image_id
257
288
  fail 'instance type is nil' unless instance_type
258
- @server.launch_instance(image_id, instance_type, user_data, options[:user_id])
289
+ @server.launch_instance(image_id, instance_type, user_data, options[:user_id], options[:ebs_volume_size])
259
290
  end
260
291
 
261
292
  def launch_workers(image_id, instance_type, num, options = {})
@@ -271,13 +302,14 @@ class OpenStudioAwsWrapper
271
302
  # thread the launching of the workers
272
303
 
273
304
  num.times do
274
- @workers << OpenStudioAwsInstance.new(@aws, :worker, @key_pair_name, @security_group_name, @group_uuid, @private_key, @proxy)
305
+ @workers << OpenStudioAwsInstance.new(@aws, :worker, @key_pair_name, @security_group_name, @group_uuid, @private_key, @private_key_file_name, @proxy)
275
306
  end
276
307
 
277
308
  threads = []
278
309
  @workers.each do |worker|
279
310
  threads << Thread.new do
280
- worker.launch_instance(image_id, instance_type, user_data, options[:user_id])
311
+ # create the EBS volumes instead of the ephemeral storage - needed especially for the m3 instances (SSD)
312
+ worker.launch_instance(image_id, instance_type, user_data, options[:user_id], options[:ebs_volume_size])
281
313
  end
282
314
  end
283
315
  threads.each { |t| t.join }
@@ -289,45 +321,45 @@ class OpenStudioAwsWrapper
289
321
  # blocking method that waits for servers and workers to be fully configured (i.e. execution of user_data has
290
322
  # occured on all nodes)
291
323
  def configure_server_and_workers
292
- # todo: add a timeout here!
293
324
  logger.info('waiting for server user_data to complete')
294
- @server.wait_command(@server.data.ip, '[ -e /home/ubuntu/user_data_done ] && echo "true"')
295
- @logger.info('waiting for worker user_data to complete')
296
- @workers.each { |worker| worker.wait_command(worker.data.ip, '[ -e /home/ubuntu/user_data_done ] && echo "true"') }
325
+ @server.wait_command('[ -e /home/ubuntu/user_data_done ] && echo "true"')
326
+ logger.info('waiting for worker user_data to complete')
327
+ @workers.each { |worker| worker.wait_command('[ -e /home/ubuntu/user_data_done ] && echo "true"') }
297
328
 
298
329
  ips = "master|#{@server.data.ip}|#{@server.data.dns}|#{@server.data.procs}|ubuntu|ubuntu|true\n"
299
330
  @workers.each { |worker| ips << "worker|#{worker.data.ip}|#{worker.data.dns}|#{worker.data.procs}|ubuntu|ubuntu|true\n" }
300
331
  file = Tempfile.new('ip_addresses')
301
332
  file.write(ips)
302
333
  file.close
303
- @server.upload_file(@server.data.ip, file.path, 'ip_addresses')
334
+ @server.upload_file(file.path, 'ip_addresses')
304
335
  file.unlink
305
336
  logger.info("ips #{ips}")
306
- @server.shell_command(@server.data.ip, 'chmod 664 /home/ubuntu/ip_addresses')
307
- @server.shell_command(@server.data.ip, '~/setup-ssh-keys.sh')
308
- @server.shell_command(@server.data.ip, '~/setup-ssh-worker-nodes.sh ip_addresses')
337
+ @server.shell_command('chmod 664 /home/ubuntu/ip_addresses')
338
+ @server.shell_command('~/setup-ssh-keys.sh')
339
+ @server.shell_command('~/setup-ssh-worker-nodes.sh ip_addresses')
309
340
 
310
341
  mongoid = File.read(File.expand_path(File.dirname(__FILE__)) + '/mongoid.yml.template')
311
342
  mongoid.gsub!(/SERVER_IP/, @server.data.ip)
312
343
  file = Tempfile.new('mongoid.yml')
313
344
  file.write(mongoid)
314
345
  file.close
315
- @server.upload_file(@server.data.ip, file.path, '/mnt/openstudio/rails-models/mongoid.yml')
316
- @workers.each { |worker| worker.upload_file(worker.data.ip, file.path, '/mnt/openstudio/rails-models/mongoid.yml') }
346
+ @server.upload_file(file.path, '/mnt/openstudio/rails-models/mongoid.yml')
347
+ @workers.each { |worker| worker.upload_file(file.path, '/mnt/openstudio/rails-models/mongoid.yml') }
317
348
  file.unlink
318
349
 
319
- # Does this command crash it?
320
- @server.shell_command(@server.data.ip, 'chmod 664 /mnt/openstudio/rails-models/mongoid.yml')
321
- @workers.each { |worker| worker.shell_command(worker.data.ip, 'chmod 664 /mnt/openstudio/rails-models/mongoid.yml') }
350
+ @server.shell_command('chmod 664 /mnt/openstudio/rails-models/mongoid.yml')
351
+ @workers.each { |worker| worker.shell_command('chmod 664 /mnt/openstudio/rails-models/mongoid.yml') }
322
352
 
353
+ sleep 60 # wait 60 more seconds for everything -- this is cheesy
323
354
  true
324
355
  end
325
356
 
326
357
  # method to query the amazon api to find the server (if it exists), based on the group id
327
358
  # if it is found, then it will set the @server member variable.
328
359
  # Note that the information around keys and security groups is pulled from the instance information.
329
- def find_server(group_uuid = nil)
330
- group_uuid = group_uuid || @group_uuid
360
+ def find_server(server_data_hash)
361
+ group_uuid = server_data_hash[:group_id] || @group_uuid
362
+ load_private_key(server_data_hash[:server][:private_key_file_name])
331
363
 
332
364
  logger.info "finding the server for groupid of #{group_uuid}"
333
365
  fail 'no group uuid defined either in member variable or method argument' if group_uuid.nil?
@@ -338,7 +370,7 @@ class OpenStudioAwsWrapper
338
370
  resp = resp.first
339
371
  if !@server
340
372
  logger.info "Server found and loading data into object [instance id is #{resp[:instance_id]}]"
341
- @server = OpenStudioAwsInstance.new(@aws, :server, resp[:key_name], resp[:security_groups].first[:group_name], group_uuid, @private_key)
373
+ @server = OpenStudioAwsInstance.new(@aws, :server, resp[:key_name], resp[:security_groups].first[:group_name], group_uuid, @private_key, @private_key_file_name)
342
374
  @server.load_instance_data(resp)
343
375
  else
344
376
  logger.info "Server instance is already defined with instance #{resp[:instance_id]}"
@@ -346,6 +378,9 @@ class OpenStudioAwsWrapper
346
378
  else
347
379
  fail 'could not find a running server instance'
348
380
  end
381
+
382
+ # Really don't need to return anything because this sets the class instance variable
383
+ @server
349
384
  end
350
385
 
351
386
  # method to hit the existing list of available amis and compare to the list of AMIs on Amazon and then generate the
@@ -393,14 +428,15 @@ class OpenStudioAwsWrapper
393
428
 
394
429
  def to_os_worker_hash
395
430
  worker_hash = []
396
- @workers.each { |worker|
431
+ @workers.each do |worker|
397
432
  worker_hash.push(
398
- id: worker.data.id,
399
- ip: 'http://' + worker.data.ip,
400
- dns: worker.data.dns,
401
- procs: worker.data.procs
402
- )
403
- }
433
+ id: worker.data.id,
434
+ ip: "http://#{worker.data.ip}",
435
+ dns: worker.data.dns,
436
+ procs: worker.data.procs,
437
+ private_key_file_name: worker.private_key_file_name
438
+ )
439
+ end
404
440
 
405
441
  out = { workers: worker_hash }
406
442
  logger.info out
@@ -515,7 +551,7 @@ class OpenStudioAwsWrapper
515
551
  end
516
552
 
517
553
  # sort the openstudio server version
518
- amis[:openstudio_server] = Hash[amis[:openstudio_server].sort_by { |k, v| v[:openstudio_server_version].to_version }.reverse]
554
+ amis[:openstudio_server] = Hash[amis[:openstudio_server].sort_by { |_k, v| v[:openstudio_server_version].to_version }.reverse]
519
555
 
520
556
  # now sort the openstudio section & determine the defaults
521
557
  amis[:openstudio].keys.each do |key|
@@ -84,7 +84,7 @@ end
84
84
  Aws.config = { access_key_id: ARGV[0], secret_access_key: ARGV[1], region: ARGV[2], ssl_verify_peer: false }
85
85
 
86
86
  if ARGV[3] == 'EC2'
87
- @aws = Aws::EC2.new
87
+ @aws = Aws::EC2::Client.new
88
88
  elsif ARGV[3] == 'CloudWatch'
89
89
  @aws = AWS::CloudWatch.new
90
90
  else
@@ -166,7 +166,7 @@ begin
166
166
  @server_instance_type = @params['instance_type']
167
167
  begin
168
168
  os_aws.launch_server(@server_image_id, @server_instance_type)
169
- rescue Exception => e
169
+ rescue => e
170
170
  error(-1, "Server status: #{e.message}")
171
171
  end
172
172
 
@@ -180,6 +180,7 @@ begin
180
180
 
181
181
  # find the private key in the users home directory, or crash
182
182
  if File.exist?(SERVER_PEM_FILENAME)
183
+ # TODO: this will no longer work. need to refactor this file to be more like the OpenSTudio analysis spreadsheet
183
184
  os_aws.create_or_retrieve_key_pair(nil, SERVER_PEM_FILENAME)
184
185
  else
185
186
  fail "Could not find previous private key which should be here: #{SERVER_PEM_FILENAME}"
@@ -196,7 +197,7 @@ begin
196
197
  begin
197
198
  # this will launch and configure with threads inside os_aws
198
199
  os_aws.launch_workers(@worker_image_id, @worker_instance_type, @params['num'])
199
- rescue Exception => e
200
+ rescue => e
200
201
  error(-1, "Server status: #{e.message}")
201
202
  end
202
203
 
@@ -263,7 +264,14 @@ begin
263
264
  when 'estimated_charges'
264
265
  endTime = Time.now.utc
265
266
  startTime = endTime - 86_400
266
- resp = @aws.client.get_metric_statistics(dimensions: [{ name: 'ServiceName', value: 'AmazonEC2' }, { name: 'Currency', value: 'USD' }], metric_name: 'EstimatedCharges', namespace: 'AWS/Billing', start_time: startTime.iso8601, end_time: endTime.iso8601, period: 300, statistics: ['Maximum'])
267
+ resp = @aws.client.get_metric_statistics(dimensions: [{ name: 'ServiceName', value: 'AmazonEC2' },
268
+ { name: 'Currency', value: 'USD' }],
269
+ metric_name: 'EstimatedCharges',
270
+ namespace: 'AWS/Billing',
271
+ start_time: startTime.iso8601,
272
+ end_time: endTime.iso8601,
273
+ period: 300,
274
+ statistics: ['Maximum'])
267
275
  error(-1, 'No Billing Data') if resp.data[:datapoints].length == 0
268
276
  datapoints = resp.data[:datapoints]
269
277
  datapoints.sort! { |a, b| a[:timestamp] <=> b[:timestamp] }
@@ -273,9 +281,9 @@ begin
273
281
  else
274
282
  error(-1, "Unknown command: #{ARGV[4]} (#{ARGV[3]})")
275
283
  end
276
- # puts \"Status: #{resp.http_response.status}\"
284
+ # puts \"Status: #{resp.http_response.status}\"
277
285
  rescue SystemExit => e
278
- rescue Exception => e
286
+ rescue => e
279
287
  if e.message == 'getaddrinfo: No such host is known. '
280
288
  error(503, 'Offline')
281
289
  elsif defined? e.http_response
@@ -11,9 +11,12 @@ FILE=/etc/hosts
11
11
  if grep -q "$ENTRY" $FILE; then
12
12
  echo "entry already exists"
13
13
  else
14
- sudo sh -c "echo $ENTRY >> /etc/hosts"
14
+ sh -c "echo $ENTRY >> /etc/hosts"
15
15
  fi
16
16
 
17
+ rm -rf /mnt
18
+ mkdir /mnt
19
+
17
20
  # copy all the setup scripts to the appropriate home directory
18
21
  # the scripts are called by the AWS connector for passwordless ssh config
19
22
  cp /data/launch-instance/setup* /home/ubuntu/
@@ -21,55 +24,66 @@ chmod 775 /home/ubuntu/setup*
21
24
  chown ubuntu:ubuntu /home/ubuntu/setup*
22
25
 
23
26
  # stop the various services that use mongo
24
- sudo service delayed_job stop
25
- sudo service apache2 stop
26
- sudo service mongodb stop
27
+ service delayed_job stop
28
+ service apache2 stop
29
+ service mongodb stop
27
30
 
28
31
  # remove mongo db & add it back
29
- sudo mkdir -p /mnt/mongodb/data
30
- sudo chown mongodb:nogroup /mnt/mongodb/data
31
- sudo rm -rf /var/lib/mongodb
32
+ mkdir -p /mnt/mongodb/data
33
+ chown mongodb:nogroup /mnt/mongodb/data
34
+ rm -rf /var/lib/mongodb
32
35
 
33
36
  # restart mongo
34
- sudo service mongodb start
37
+ service mongodb start
35
38
  # delay the continuation because mongo is a forked process and when it initializes
36
39
  # it has to create the preallocated journal files (takes ~ 90 seconds on a slower system)
37
40
  sleep 2m
38
41
 
39
42
  # restart the rails application
40
- sudo service apache2 stop
41
- sudo service apache2 start
43
+ service apache2 stop
44
+ service apache2 start
42
45
 
43
46
  # Add in the database indexes after making the db directory
44
- sudo chmod 777 /var/www/rails/openstudio/public
45
- cd /var/www/rails/openstudio
46
- rake db:purge
47
- rake db:mongoid:create_indexes
47
+ chmod 777 /var/www/rails/openstudio/public
48
+ su - ubuntu -c 'cd /var/www/rails/openstudio && bundle exec rake db:purge'
49
+ su - ubuntu -c 'cd /var/www/rails/openstudio && bundle exec rake db:mongoid:create_indexes'
50
+
51
+ ## Worker Data Configuration -- On Vagrant this is a separate file
48
52
 
49
- ## Worker Data Configuration
50
53
  # Force the generation of various directories that are in the EBS mnt
51
- sudo rm -rf /mnt/openstudio
52
- sudo mkdir -p /mnt/openstudio
53
- sudo chown -R ubuntu:www-data /mnt/openstudio
54
- sudo chmod -R 775 /mnt/openstudio
54
+ rm -rf /mnt/openstudio
55
+ mkdir -p /mnt/openstudio
56
+ chown -R ubuntu:www-data /mnt/openstudio
57
+ chmod -R 775 /mnt/openstudio
55
58
 
56
59
  # save application files into the right directory
57
60
  cp -rf /data/worker-nodes/* /mnt/openstudio/
58
61
 
62
+ # install workflow dependencies
63
+ su - ubuntu -c 'cd /mnt/openstudio && rm -f'
64
+ rm -f /mnt/openstudio/Gemfile.lock
65
+ cd /mnt/openstudio && bundle update
66
+ su - ubuntu -c 'cd /mnt/openstudio && bundle update'
67
+
59
68
  # copy over the models needed for mongo
60
- cd /mnt/openstudio/rails-models && unzip -o rails-models.zip
69
+ cd /mnt/openstudio/rails-models && unzip -o rails-models.zip -d models
61
70
 
62
71
  # rerun the permissions after unzipping the files
63
- sudo chown -R ubuntu:www-data /mnt/openstudio
64
- sudo find /mnt/openstudio -type d -print0 | xargs -0 chmod 775
65
- sudo find /mnt/openstudio -type f -print0 | xargs -0 chmod 664
66
- ## End of Worker Data Configuration
72
+ chown -R ubuntu:www-data /mnt/openstudio
73
+ find /mnt/openstudio -type d -print0 | xargs -0 chmod 775
74
+ find /mnt/openstudio -type f -print0 | xargs -0 chmod 664
75
+
76
+ ## End Worker Data Configuration
67
77
 
68
78
  # restart rserve
69
- sudo service Rserve restart
79
+ service Rserve restart
70
80
 
71
81
  # restart delayed jobs
72
- sudo service delayed_job start
82
+ service delayed_job start
83
+
84
+ # Delay 1 minutes to make sure everything had tme to start.
85
+ # This is a hack, sorry.
86
+ sleep 1m
73
87
 
74
88
  #file flag the user_data has completed
75
89
  cat /dev/null > /home/ubuntu/user_data_done
@@ -10,7 +10,7 @@ FILE=/etc/hosts
10
10
  if grep -q "$ENTRY" $FILE; then
11
11
  echo "entry already exists"
12
12
  else
13
- sudo sh -c "echo $ENTRY >> /etc/hosts"
13
+ sh -c "echo $ENTRY >> /etc/hosts"
14
14
  fi
15
15
 
16
16
  # copy all the setup scripts to the appropriate home directory
@@ -18,31 +18,41 @@ cp /data/launch-instance/setup* /home/ubuntu/
18
18
  chmod 775 /home/ubuntu/setup*
19
19
  chown ubuntu:ubuntu /home/ubuntu/setup*
20
20
 
21
- ## Worker Data Configuration
21
+ ## Worker Data Configuration -- On Vagrant this is a separate file
22
+
22
23
  # Force the generation of various directories that are in the EBS mnt
23
- sudo rm -rf /mnt/openstudio
24
- sudo mkdir -p /mnt/openstudio
25
- sudo chown -R ubuntu:www-data /mnt/openstudio
26
- sudo chmod -R 775 /mnt/openstudio
24
+ rm -rf /mnt/openstudio
25
+ mkdir -p /mnt/openstudio
26
+ chown -R ubuntu:www-data /mnt/openstudio
27
+ chmod -R 775 /mnt/openstudio
27
28
 
28
29
  # save application files into the right directory
29
30
  cp -rf /data/worker-nodes/* /mnt/openstudio/
30
31
 
32
+ # install workflow dependencies
33
+ su - ubuntu -c 'cd /mnt/openstudio && rm -f'
34
+ rm -f /mnt/openstudio/Gemfile.lock
35
+ cd /mnt/openstudio && bundle update
36
+ su - ubuntu -c 'cd /mnt/openstudio && bundle update'
37
+
31
38
  # copy over the models needed for mongo
32
- cd /mnt/openstudio/rails-models && unzip -o rails-models.zip
39
+ cd /mnt/openstudio/rails-models && unzip -o rails-models.zip -d models
33
40
 
34
41
  # rerun the permissions after unzipping the files
35
- sudo chown -R ubuntu:www-data /mnt/openstudio
36
- sudo find /mnt/openstudio -type d -print0 | xargs -0 chmod 775
37
- sudo find /mnt/openstudio -type f -print0 | xargs -0 chmod 664
38
- ## End of Worker Data Configuration
42
+ chown -R ubuntu:www-data /mnt/openstudio
43
+ find /mnt/openstudio -type d -print0 | xargs -0 chmod 775
44
+ find /mnt/openstudio -type f -print0 | xargs -0 chmod 664
45
+
46
+ ## End Worker Data Configuration
39
47
 
40
48
  #turn off hyperthreading
41
- for cpunum in $(
42
- cat /sys/devices/system/cpu/cpu*/topology/thread_siblings_list |
43
- cut -s -d, -f2- | tr ',' '\n' | sort -un); do
44
- echo 0 > /sys/devices/system/cpu/cpu$cpunum/online
45
- done
49
+ # NL: do not turn off hyperthreading, rather, just limit the number of cores and see if it
50
+ # makes a difference.
51
+ #for cpunum in $(
52
+ # cat /sys/devices/system/cpu/cpu*/topology/thread_siblings_list |
53
+ # cut -s -d, -f2- | tr ',' '\n' | sort -un); do
54
+ # echo 0 > /sys/devices/system/cpu/cpu$cpunum/online
55
+ #done
46
56
 
47
57
  #file flag the user_data has completed
48
58
  cat /dev/null > /home/ubuntu/user_data_done
@@ -3,6 +3,7 @@ require 'net/scp'
3
3
  require 'net/http'
4
4
  require 'yaml'
5
5
  require 'logger'
6
+ require 'securerandom'
6
7
  require 'semantic'
7
8
  require 'semantic/core_ext'
8
9
 
@@ -15,6 +16,7 @@ rescue LoadError
15
16
  exit
16
17
  end
17
18
 
19
+ require 'openstudio/lib/openstudio_aws_logger'
18
20
  require 'openstudio/aws/aws'
19
21
  require 'openstudio/aws/config'
20
22
  require 'openstudio/aws/version'