openstudio-aws 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (363) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +10 -0
  3. data/lib/openstudio-aws.rb +1 -0
  4. data/lib/openstudio/aws/aws.rb +41 -34
  5. data/lib/openstudio/aws/version.rb +1 -1
  6. data/lib/openstudio/lib/openstudio_aws_instance.rb +37 -17
  7. data/lib/openstudio/lib/openstudio_aws_wrapper.rb +41 -28
  8. data/spec/aws_instances/aws_spec_api.rb +106 -19
  9. data/spec/openstudio-aws/ami_list_spec.rb +3 -0
  10. data/spec/openstudio-aws/aws_spec.rb +4 -4
  11. data/spec/openstudio-aws/aws_wrapper_spec.rb +1 -0
  12. metadata +2 -703
  13. data/lib/openstudio/lib/os-aws.rb +0 -295
  14. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.0.xml +0 -11
  15. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.1.xml +0 -11
  16. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.10.xml +0 -11
  17. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.11.xml +0 -11
  18. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.12.xml +0 -11
  19. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.13.xml +0 -11
  20. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.14.xml +0 -11
  21. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.2.xml +0 -11
  22. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.3.xml +0 -11
  23. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.4.xml +0 -11
  24. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.5.xml +0 -11
  25. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.6.xml +0 -11
  26. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.7.xml +0 -11
  27. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.8.xml +0 -11
  28. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.9.xml +0 -11
  29. data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.xml +0 -11
  30. data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-a-new-instance.0.xml +0 -26
  31. data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-a-new-instance.xml +0 -35
  32. data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-ebs-storage.0.xml +0 -14
  33. data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-ebs-storage.xml +0 -14
  34. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.0.xml +0 -14
  35. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.1.xml +0 -21
  36. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.2.xml +0 -11
  37. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.3.xml +0 -11
  38. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.4.xml +0 -11
  39. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.5.xml +0 -11
  40. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.6.xml +0 -11
  41. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.7.xml +0 -11
  42. data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.xml +0 -16
  43. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.0.xml +0 -13
  44. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.1.xml +0 -13
  45. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.10.xml +0 -13
  46. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.11.xml +0 -13
  47. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.12.xml +0 -13
  48. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.13.xml +0 -13
  49. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.14.xml +0 -13
  50. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.2.xml +0 -13
  51. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.3.xml +0 -13
  52. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.4.xml +0 -13
  53. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.5.xml +0 -13
  54. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.6.xml +0 -13
  55. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.7.xml +0 -13
  56. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.8.xml +0 -13
  57. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.9.xml +0 -13
  58. data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.xml +0 -13
  59. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.0.xml +0 -9
  60. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.1.xml +0 -9
  61. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.10.xml +0 -9
  62. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.11.xml +0 -9
  63. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.12.xml +0 -9
  64. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.13.xml +0 -9
  65. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.14.xml +0 -9
  66. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.2.xml +0 -9
  67. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.3.xml +0 -9
  68. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.4.xml +0 -9
  69. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.5.xml +0 -9
  70. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.6.xml +0 -9
  71. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.7.xml +0 -9
  72. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.8.xml +0 -9
  73. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.9.xml +0 -9
  74. data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.xml +0 -9
  75. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.0.xml +0 -9
  76. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.1.xml +0 -9
  77. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.10.xml +0 -9
  78. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.11.xml +0 -9
  79. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.12.xml +0 -9
  80. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.13.xml +0 -9
  81. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.14.xml +0 -9
  82. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.2.xml +0 -9
  83. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.3.xml +0 -9
  84. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.4.xml +0 -9
  85. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.5.xml +0 -9
  86. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.6.xml +0 -9
  87. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.7.xml +0 -9
  88. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.8.xml +0 -9
  89. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.9.xml +0 -9
  90. data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.xml +0 -9
  91. data/spec/reports/SPEC-OpenStudio-Aws-Aws-workers-before-server.0.xml +0 -9
  92. data/spec/reports/SPEC-OpenStudio-Aws-Aws-workers-before-server.xml +0 -9
  93. data/spec/reports/SPEC-OpenStudio-Aws-Aws.0.xml +0 -7
  94. data/spec/reports/SPEC-OpenStudio-Aws-Aws.1.xml +0 -7
  95. data/spec/reports/SPEC-OpenStudio-Aws-Aws.10.xml +0 -7
  96. data/spec/reports/SPEC-OpenStudio-Aws-Aws.11.xml +0 -7
  97. data/spec/reports/SPEC-OpenStudio-Aws-Aws.12.xml +0 -7
  98. data/spec/reports/SPEC-OpenStudio-Aws-Aws.13.xml +0 -7
  99. data/spec/reports/SPEC-OpenStudio-Aws-Aws.14.xml +0 -7
  100. data/spec/reports/SPEC-OpenStudio-Aws-Aws.15.xml +0 -7
  101. data/spec/reports/SPEC-OpenStudio-Aws-Aws.16.xml +0 -7
  102. data/spec/reports/SPEC-OpenStudio-Aws-Aws.2.xml +0 -7
  103. data/spec/reports/SPEC-OpenStudio-Aws-Aws.3.xml +0 -7
  104. data/spec/reports/SPEC-OpenStudio-Aws-Aws.4.xml +0 -7
  105. data/spec/reports/SPEC-OpenStudio-Aws-Aws.5.xml +0 -7
  106. data/spec/reports/SPEC-OpenStudio-Aws-Aws.6.xml +0 -7
  107. data/spec/reports/SPEC-OpenStudio-Aws-Aws.7.xml +0 -7
  108. data/spec/reports/SPEC-OpenStudio-Aws-Aws.8.xml +0 -7
  109. data/spec/reports/SPEC-OpenStudio-Aws-Aws.9.xml +0 -7
  110. data/spec/reports/SPEC-OpenStudio-Aws-Aws.xml +0 -7
  111. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.0.xml +0 -9
  112. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.1.xml +0 -9
  113. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.10.xml +0 -9
  114. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.11.xml +0 -9
  115. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.12.xml +0 -9
  116. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.13.xml +0 -9
  117. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.2.xml +0 -9
  118. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.3.xml +0 -9
  119. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.4.xml +0 -9
  120. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.5.xml +0 -9
  121. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.6.xml +0 -9
  122. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.7.xml +0 -9
  123. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.8.xml +0 -9
  124. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.9.xml +0 -9
  125. data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.xml +0 -9
  126. data/spec/reports/SPEC-OpenStudio-Aws-Config.0.xml +0 -7
  127. data/spec/reports/SPEC-OpenStudio-Aws-Config.1.xml +0 -7
  128. data/spec/reports/SPEC-OpenStudio-Aws-Config.10.xml +0 -7
  129. data/spec/reports/SPEC-OpenStudio-Aws-Config.11.xml +0 -7
  130. data/spec/reports/SPEC-OpenStudio-Aws-Config.12.xml +0 -7
  131. data/spec/reports/SPEC-OpenStudio-Aws-Config.13.xml +0 -7
  132. data/spec/reports/SPEC-OpenStudio-Aws-Config.2.xml +0 -7
  133. data/spec/reports/SPEC-OpenStudio-Aws-Config.3.xml +0 -7
  134. data/spec/reports/SPEC-OpenStudio-Aws-Config.4.xml +0 -7
  135. data/spec/reports/SPEC-OpenStudio-Aws-Config.5.xml +0 -7
  136. data/spec/reports/SPEC-OpenStudio-Aws-Config.6.xml +0 -7
  137. data/spec/reports/SPEC-OpenStudio-Aws-Config.7.xml +0 -7
  138. data/spec/reports/SPEC-OpenStudio-Aws-Config.8.xml +0 -7
  139. data/spec/reports/SPEC-OpenStudio-Aws-Config.9.xml +0 -7
  140. data/spec/reports/SPEC-OpenStudio-Aws-Config.xml +0 -7
  141. data/spec/reports/SPEC-OpenStudioAmis-version-1.0.xml +0 -13
  142. data/spec/reports/SPEC-OpenStudioAmis-version-1.1.xml +0 -13
  143. data/spec/reports/SPEC-OpenStudioAmis-version-1.10.xml +0 -13
  144. data/spec/reports/SPEC-OpenStudioAmis-version-1.11.xml +0 -13
  145. data/spec/reports/SPEC-OpenStudioAmis-version-1.12.xml +0 -13
  146. data/spec/reports/SPEC-OpenStudioAmis-version-1.13.xml +0 -13
  147. data/spec/reports/SPEC-OpenStudioAmis-version-1.14.xml +0 -13
  148. data/spec/reports/SPEC-OpenStudioAmis-version-1.2.xml +0 -13
  149. data/spec/reports/SPEC-OpenStudioAmis-version-1.3.xml +0 -13
  150. data/spec/reports/SPEC-OpenStudioAmis-version-1.4.xml +0 -13
  151. data/spec/reports/SPEC-OpenStudioAmis-version-1.5.xml +0 -13
  152. data/spec/reports/SPEC-OpenStudioAmis-version-1.6.xml +0 -13
  153. data/spec/reports/SPEC-OpenStudioAmis-version-1.7.xml +0 -13
  154. data/spec/reports/SPEC-OpenStudioAmis-version-1.8.xml +0 -13
  155. data/spec/reports/SPEC-OpenStudioAmis-version-1.9.xml +0 -13
  156. data/spec/reports/SPEC-OpenStudioAmis-version-1.xml +0 -13
  157. data/spec/reports/SPEC-OpenStudioAmis-version-2.0.xml +0 -9
  158. data/spec/reports/SPEC-OpenStudioAmis-version-2.1.xml +0 -9
  159. data/spec/reports/SPEC-OpenStudioAmis-version-2.10.xml +0 -9
  160. data/spec/reports/SPEC-OpenStudioAmis-version-2.11.xml +0 -9
  161. data/spec/reports/SPEC-OpenStudioAmis-version-2.12.xml +0 -9
  162. data/spec/reports/SPEC-OpenStudioAmis-version-2.13.xml +0 -9
  163. data/spec/reports/SPEC-OpenStudioAmis-version-2.14.xml +0 -9
  164. data/spec/reports/SPEC-OpenStudioAmis-version-2.2.xml +0 -9
  165. data/spec/reports/SPEC-OpenStudioAmis-version-2.3.xml +0 -9
  166. data/spec/reports/SPEC-OpenStudioAmis-version-2.4.xml +0 -9
  167. data/spec/reports/SPEC-OpenStudioAmis-version-2.5.xml +0 -9
  168. data/spec/reports/SPEC-OpenStudioAmis-version-2.6.xml +0 -9
  169. data/spec/reports/SPEC-OpenStudioAmis-version-2.7.xml +0 -9
  170. data/spec/reports/SPEC-OpenStudioAmis-version-2.8.xml +0 -9
  171. data/spec/reports/SPEC-OpenStudioAmis-version-2.9.xml +0 -9
  172. data/spec/reports/SPEC-OpenStudioAmis-version-2.xml +0 -9
  173. data/spec/reports/SPEC-OpenStudioAmis.0.xml +0 -7
  174. data/spec/reports/SPEC-OpenStudioAmis.1.xml +0 -7
  175. data/spec/reports/SPEC-OpenStudioAmis.10.xml +0 -7
  176. data/spec/reports/SPEC-OpenStudioAmis.11.xml +0 -7
  177. data/spec/reports/SPEC-OpenStudioAmis.12.xml +0 -7
  178. data/spec/reports/SPEC-OpenStudioAmis.13.xml +0 -7
  179. data/spec/reports/SPEC-OpenStudioAmis.14.xml +0 -7
  180. data/spec/reports/SPEC-OpenStudioAmis.2.xml +0 -7
  181. data/spec/reports/SPEC-OpenStudioAmis.3.xml +0 -7
  182. data/spec/reports/SPEC-OpenStudioAmis.4.xml +0 -7
  183. data/spec/reports/SPEC-OpenStudioAmis.5.xml +0 -7
  184. data/spec/reports/SPEC-OpenStudioAmis.6.xml +0 -7
  185. data/spec/reports/SPEC-OpenStudioAmis.7.xml +0 -7
  186. data/spec/reports/SPEC-OpenStudioAmis.8.xml +0 -7
  187. data/spec/reports/SPEC-OpenStudioAmis.9.xml +0 -7
  188. data/spec/reports/SPEC-OpenStudioAmis.xml +0 -7
  189. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.0.xml +0 -21
  190. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.1.xml +0 -11
  191. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.10.xml +0 -11
  192. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.11.xml +0 -11
  193. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.12.xml +0 -11
  194. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.2.xml +0 -11
  195. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.3.xml +0 -25
  196. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.4.xml +0 -11
  197. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.5.xml +0 -11
  198. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.6.xml +0 -11
  199. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.7.xml +0 -11
  200. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.8.xml +0 -11
  201. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.9.xml +0 -11
  202. data/spec/reports/SPEC-OpenStudioAwsInstance-processors.xml +0 -25
  203. data/spec/reports/SPEC-OpenStudioAwsInstance.0.xml +0 -7
  204. data/spec/reports/SPEC-OpenStudioAwsInstance.1.xml +0 -7
  205. data/spec/reports/SPEC-OpenStudioAwsInstance.10.xml +0 -7
  206. data/spec/reports/SPEC-OpenStudioAwsInstance.11.xml +0 -7
  207. data/spec/reports/SPEC-OpenStudioAwsInstance.12.xml +0 -7
  208. data/spec/reports/SPEC-OpenStudioAwsInstance.2.xml +0 -7
  209. data/spec/reports/SPEC-OpenStudioAwsInstance.3.xml +0 -7
  210. data/spec/reports/SPEC-OpenStudioAwsInstance.4.xml +0 -7
  211. data/spec/reports/SPEC-OpenStudioAwsInstance.5.xml +0 -7
  212. data/spec/reports/SPEC-OpenStudioAwsInstance.6.xml +0 -7
  213. data/spec/reports/SPEC-OpenStudioAwsInstance.7.xml +0 -7
  214. data/spec/reports/SPEC-OpenStudioAwsInstance.8.xml +0 -7
  215. data/spec/reports/SPEC-OpenStudioAwsInstance.9.xml +0 -7
  216. data/spec/reports/SPEC-OpenStudioAwsInstance.xml +0 -7
  217. data/spec/reports/SPEC-OpenStudioAwsMethods-processors.0.xml +0 -11
  218. data/spec/reports/SPEC-OpenStudioAwsMethods-processors.1.xml +0 -11
  219. data/spec/reports/SPEC-OpenStudioAwsMethods-processors.xml +0 -11
  220. data/spec/reports/SPEC-OpenStudioAwsMethods.0.xml +0 -7
  221. data/spec/reports/SPEC-OpenStudioAwsMethods.1.xml +0 -7
  222. data/spec/reports/SPEC-OpenStudioAwsMethods.xml +0 -7
  223. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.0.xml +0 -9
  224. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.1.xml +0 -9
  225. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.10.xml +0 -9
  226. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.11.xml +0 -9
  227. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.12.xml +0 -9
  228. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.13.xml +0 -9
  229. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.2.xml +0 -9
  230. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.3.xml +0 -9
  231. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.4.xml +0 -9
  232. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.5.xml +0 -9
  233. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.6.xml +0 -9
  234. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.7.xml +0 -9
  235. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.8.xml +0 -9
  236. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.9.xml +0 -9
  237. data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.xml +0 -9
  238. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.0.xml +0 -11
  239. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.1.xml +0 -11
  240. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.10.xml +0 -11
  241. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.11.xml +0 -11
  242. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.12.xml +0 -11
  243. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.13.xml +0 -11
  244. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.14.xml +0 -11
  245. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.2.xml +0 -11
  246. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.3.xml +0 -11
  247. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.4.xml +0 -11
  248. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.5.xml +0 -11
  249. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.6.xml +0 -11
  250. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.7.xml +0 -11
  251. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.8.xml +0 -11
  252. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.9.xml +0 -11
  253. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.xml +0 -11
  254. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.0.xml +0 -11
  255. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.1.xml +0 -11
  256. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.10.xml +0 -11
  257. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.11.xml +0 -11
  258. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.12.xml +0 -11
  259. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.13.xml +0 -11
  260. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.14.xml +0 -11
  261. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.2.xml +0 -11
  262. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.3.xml +0 -11
  263. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.4.xml +0 -11
  264. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.5.xml +0 -11
  265. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.6.xml +0 -9
  266. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.7.xml +0 -11
  267. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.8.xml +0 -11
  268. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.9.xml +0 -11
  269. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.xml +0 -11
  270. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.0.xml +0 -9
  271. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.1.xml +0 -9
  272. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.10.xml +0 -9
  273. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.11.xml +0 -9
  274. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.12.xml +0 -9
  275. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.13.xml +0 -9
  276. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.14.xml +0 -9
  277. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.2.xml +0 -9
  278. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.3.xml +0 -9
  279. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.4.xml +0 -9
  280. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.5.xml +0 -9
  281. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.6.xml +0 -9
  282. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.7.xml +0 -9
  283. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.8.xml +0 -9
  284. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.9.xml +0 -9
  285. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.xml +0 -9
  286. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.0.xml +0 -103
  287. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.1.xml +0 -103
  288. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.10.xml +0 -107
  289. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.11.xml +0 -107
  290. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.12.xml +0 -107
  291. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.13.xml +0 -108
  292. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.2.xml +0 -103
  293. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.3.xml +0 -103
  294. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.4.xml +0 -107
  295. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.5.xml +0 -107
  296. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.6.xml +0 -107
  297. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.7.xml +0 -107
  298. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.8.xml +0 -107
  299. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.9.xml +0 -107
  300. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.xml +0 -103
  301. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.0.xml +0 -1111
  302. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.1.xml +0 -1111
  303. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.10.xml +0 -1113
  304. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.11.xml +0 -1113
  305. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.12.xml +0 -1133
  306. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.13.xml +0 -1263
  307. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.2.xml +0 -1111
  308. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.3.xml +0 -1111
  309. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.4.xml +0 -1113
  310. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.5.xml +0 -1113
  311. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.6.xml +0 -1113
  312. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.7.xml +0 -1113
  313. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.8.xml +0 -1113
  314. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.9.xml +0 -1113
  315. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.xml +0 -1111
  316. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.0.xml +0 -7
  317. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.1.xml +0 -7
  318. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.10.xml +0 -7
  319. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.11.xml +0 -7
  320. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.12.xml +0 -7
  321. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.13.xml +0 -7
  322. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.14.xml +0 -7
  323. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.2.xml +0 -7
  324. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.3.xml +0 -7
  325. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.4.xml +0 -7
  326. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.5.xml +0 -7
  327. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.6.xml +0 -7
  328. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.7.xml +0 -7
  329. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.8.xml +0 -7
  330. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.9.xml +0 -7
  331. data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.xml +0 -7
  332. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.0.xml +0 -9
  333. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.1.xml +0 -9
  334. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.10.xml +0 -9
  335. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.11.xml +0 -9
  336. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.12.xml +0 -9
  337. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.13.xml +0 -9
  338. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.14.xml +0 -9
  339. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.2.xml +0 -9
  340. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.3.xml +0 -9
  341. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.4.xml +0 -9
  342. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.5.xml +0 -9
  343. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.6.xml +0 -9
  344. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.7.xml +0 -9
  345. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.8.xml +0 -9
  346. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.9.xml +0 -9
  347. data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.xml +0 -9
  348. data/spec/reports/SPEC-OpenStudioAwsWrapper.0.xml +0 -7
  349. data/spec/reports/SPEC-OpenStudioAwsWrapper.1.xml +0 -7
  350. data/spec/reports/SPEC-OpenStudioAwsWrapper.10.xml +0 -7
  351. data/spec/reports/SPEC-OpenStudioAwsWrapper.11.xml +0 -7
  352. data/spec/reports/SPEC-OpenStudioAwsWrapper.12.xml +0 -7
  353. data/spec/reports/SPEC-OpenStudioAwsWrapper.13.xml +0 -7
  354. data/spec/reports/SPEC-OpenStudioAwsWrapper.14.xml +0 -7
  355. data/spec/reports/SPEC-OpenStudioAwsWrapper.2.xml +0 -7
  356. data/spec/reports/SPEC-OpenStudioAwsWrapper.3.xml +0 -7
  357. data/spec/reports/SPEC-OpenStudioAwsWrapper.4.xml +0 -7
  358. data/spec/reports/SPEC-OpenStudioAwsWrapper.5.xml +0 -7
  359. data/spec/reports/SPEC-OpenStudioAwsWrapper.6.xml +0 -7
  360. data/spec/reports/SPEC-OpenStudioAwsWrapper.7.xml +0 -7
  361. data/spec/reports/SPEC-OpenStudioAwsWrapper.8.xml +0 -7
  362. data/spec/reports/SPEC-OpenStudioAwsWrapper.9.xml +0 -7
  363. data/spec/reports/SPEC-OpenStudioAwsWrapper.xml +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05896fabcda97abcb347532edcfc7a177c498815
4
- data.tar.gz: 920f0bd7ebe65eaede3f224555a04b8a177ef8dc
3
+ metadata.gz: 60c7a1fc72d71ce4c4dbc7d0ebfebdc54facedfc
4
+ data.tar.gz: 05a41b5ad8f6d1227f8ee7451ec933f1802a9941
5
5
  SHA512:
6
- metadata.gz: 6cec51f927a1027f54fac563961a3df91286aa5c6490147187b091887594c9b27f144aa735b95ab72ad684a7d388a58e5c2715270da71ff7806b007c8e53e44b
7
- data.tar.gz: ed92542a65387c426876960918dc7497600675aa5c9729ce1927e3262a6d5c52fa3f5861b4f2ae285744f861beeb3264883911eb96dccc1529f11c110b4896dd
6
+ metadata.gz: 51d1d6994dc81b161de452642efadbf30ca114af68d6073b9ee2baf1ca324d64e064de1944f4c9ccb87109f4824f718bd23fb8718b360933566646218061c364
7
+ data.tar.gz: aac1a5ddb1db0242725637c44889e48cb69e6e620a7287e0f95e461a06a7213a4edd3d03a19e79cae0c4b3c3dbc5f064fadf03ae8917480fec1d3a327e95a646
data/Rakefile CHANGED
@@ -73,3 +73,13 @@ end
73
73
 
74
74
  desc 'reinstall the gem (uninstall, build, and reinstall'
75
75
  task reinstall: [:uninstall, :install]
76
+
77
+ require 'rubocop/rake_task'
78
+ desc 'Run RuboCop on the lib directory'
79
+ RuboCop::RakeTask.new(:rubocop) do |task|
80
+ task.options = ['--no-color', '--out=rubocop-results.xml']
81
+ task.formatters = ['RuboCop::Formatter::CheckstyleFormatter']
82
+ task.requires = ['rubocop/formatter/checkstyle_formatter']
83
+ # don't abort rake on failure
84
+ task.fail_on_error = false
85
+ end
@@ -6,6 +6,7 @@ require 'logger'
6
6
  require 'securerandom'
7
7
  require 'semantic'
8
8
  require 'semantic/core_ext'
9
+ require 'fileutils'
9
10
 
10
11
  # AWS SDK CORE
11
12
  begin
@@ -27,7 +27,7 @@ module OpenStudio
27
27
  region: 'us-east-1',
28
28
  ssl_verify_peer: false,
29
29
  host: 'developer.nrel.gov',
30
- url: '/downloads/buildings/openstudio/api',
30
+ url: '/downloads/buildings/openstudio/api'
31
31
  }
32
32
  options = defaults.merge(options)
33
33
 
@@ -98,6 +98,7 @@ module OpenStudio
98
98
  ebs_volume_id: nil,
99
99
  aws_key_pair_name: nil,
100
100
  private_key_file_name: nil, # required if using an existing "aws_key_pair_name"
101
+ tags: []
101
102
  }
102
103
  options = defaults.merge(options)
103
104
 
@@ -118,7 +119,7 @@ module OpenStudio
118
119
  @os_aws.save_private_key('ec2_server_key.pem')
119
120
  end
120
121
 
121
- server_options = { user_id: options[:user_id] }
122
+ server_options = { user_id: options[:user_id], tags: options[:tags] }
122
123
  # if instance_data[:ebs_volume_id]
123
124
  # server_options[:ebs_volume_id] = instance_data[:ebs_volume_id]
124
125
  # end
@@ -135,17 +136,18 @@ module OpenStudio
135
136
  puts "ssh -i #{@os_aws.private_key_file_name} ubuntu@#{@os_aws.server.data[:dns]}"
136
137
  end
137
138
 
138
- def create_workers(number_of_instances, options = {}, _user_id = 'unknown_user')
139
+ def create_workers(number_of_instances, options = {}, user_id = 'unknown_user')
139
140
  defaults = {
140
141
  instance_type: 'm2.4xlarge',
141
142
  security_group: 'openstudio-server-sg-v1',
142
143
  image_id: @default_amis[:server],
143
- user_id: 'unknown_user',
144
+ user_id: user_id,
144
145
 
145
146
  # optional -- will default later
146
147
  ebs_volume_id: nil,
147
148
  aws_key_pair_name: nil,
148
- private_key_file_name: nil, # required if using an existing "aws_key_pair_name"
149
+ private_key_file_name: nil, # required if using an existing "aws_key_pair_name",
150
+ tags: []
149
151
  }
150
152
  options = defaults.merge(options)
151
153
 
@@ -160,34 +162,39 @@ module OpenStudio
160
162
 
161
163
  fail "Can't create workers without a server instance running" if @os_aws.server.nil?
162
164
 
163
- worker_options = { user_id: options[:user_id] }
164
- # if options[:ebs_volume_size]
165
- # worker_options[:ebs_volume_size] = options[:ebs_volume_size]
166
- # end
167
-
168
- @os_aws.launch_workers(options[:image_id], options[:instance_type], number_of_instances, worker_options)
169
-
170
- ## append the information to the server_data hash that already exists
171
- # @server_data[:instance_type] = instance_data[:instance_type]
172
- # @server_data[:num] = number_of_instances
173
- # server_string = @server_data.to_json.gsub("\"", "\\\\\"")
174
- #
175
- # start_string = "ruby #{os_aws_file_location} #{@config.access_key} #{@config.secret_key} us-east-1 EC2 launch_workers \"#{server_string}\""
176
- # puts "Worker Command: #{start_string}"
177
- # worker_data_string = `#{start_string}`
178
- # @worker_data = JSON.parse(worker_data_string, :symbolize_names => true)
179
- # File.open("worker_data.json", "w") { |f| f << JSON.pretty_generate(worker_data) }
180
- #
181
- ## Print out some debugging commands (probably work on mac/linux only)
182
- # Add the worker data to the JSON
183
- h = JSON.parse(File.read(@instances_json))
184
- h[:workers] = @os_aws.to_os_worker_hash[:workers]
185
- File.open(@instances_json, 'w') { |f| f << JSON.pretty_generate(h) }
186
-
187
- puts ''
188
- puts 'Worker SSH Command:'
189
- @os_aws.workers.each do |worker|
190
- puts "ssh -i #{@os_aws.private_key_file_name} ubuntu@#{worker.data[:dns]}"
165
+ if number_of_instances == 0
166
+ puts ''
167
+ puts 'No workers requested'
168
+ else
169
+ worker_options = { user_id: options[:user_id], tags: options[:tags] }
170
+ # if options[:ebs_volume_size]
171
+ # worker_options[:ebs_volume_size] = options[:ebs_volume_size]
172
+ # end
173
+
174
+ @os_aws.launch_workers(options[:image_id], options[:instance_type], number_of_instances, worker_options)
175
+
176
+ ## append the information to the server_data hash that already exists
177
+ # @server_data[:instance_type] = instance_data[:instance_type]
178
+ # @server_data[:num] = number_of_instances
179
+ # server_string = @server_data.to_json.gsub("\"", "\\\\\"")
180
+ #
181
+ # start_string = "ruby #{os_aws_file_location} #{@config.access_key} #{@config.secret_key} us-east-1 EC2 launch_workers \"#{server_string}\""
182
+ # puts "Worker Command: #{start_string}"
183
+ # worker_data_string = `#{start_string}`
184
+ # @worker_data = JSON.parse(worker_data_string, :symbolize_names => true)
185
+ # File.open("worker_data.json", "w") { |f| f << JSON.pretty_generate(worker_data) }
186
+ #
187
+ ## Print out some debugging commands (probably work on mac/linux only)
188
+ # Add the worker data to the JSON
189
+ h = JSON.parse(File.read(@instances_json))
190
+ h[:workers] = @os_aws.to_os_worker_hash[:workers]
191
+ File.open(@instances_json, 'w') { |f| f << JSON.pretty_generate(h) }
192
+
193
+ puts ''
194
+ puts 'Worker SSH Command:'
195
+ @os_aws.workers.each do |worker|
196
+ puts "ssh -i #{@os_aws.private_key_file_name} ubuntu@#{worker.data[:dns]}"
197
+ end
191
198
  end
192
199
 
193
200
  puts ''
@@ -206,7 +213,7 @@ module OpenStudio
206
213
  resp
207
214
  end
208
215
 
209
- # @params(ids): array of instances
216
+ # @params(ids): array of instance ids
210
217
  def terminate_instances(ids)
211
218
  puts "Terminating the following instances #{ids}"
212
219
  resp = []
@@ -1,5 +1,5 @@
1
1
  module OpenStudio
2
2
  module Aws
3
- VERSION = '0.2.3'
3
+ VERSION = '0.2.4'
4
4
  end
5
5
  end
@@ -26,7 +26,8 @@ class OpenStudioAwsInstance
26
26
  attr_reader :private_key_file_name
27
27
  attr_reader :group_uuid
28
28
 
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 = {})
29
+ def initialize(aws_session, openstudio_instance_type, key_pair_name, security_group_name, group_uuid, private_key,
30
+ private_key_file_name, proxy = nil)
30
31
  @data = nil # stored information about the instance
31
32
  @aws = aws_session
32
33
  @openstudio_instance_type = openstudio_instance_type # :server, :worker
@@ -56,9 +57,8 @@ class OpenStudioAwsInstance
56
57
 
57
58
  # get the instance information
58
59
  test_result = @aws.describe_volumes(volume_ids: [resp[:volume_id]])
59
- puts test_result
60
60
  begin
61
- Timeout.timeout(600) { # 10 minutes
61
+ Timeout.timeout(600) do # 10 minutes
62
62
  while test_result.nil? || test_result.instance_state.name != 'available'
63
63
  # refresh the server instance information
64
64
 
@@ -66,7 +66,7 @@ class OpenStudioAwsInstance
66
66
  test_result = @aws.describe_volumes(volume_ids: [resp[:volume_id]])
67
67
  logger.info '... waiting for EBS volume to be available ...'
68
68
  end
69
- }
69
+ end
70
70
  rescue TimeoutError
71
71
  raise "EBS volume was unable to be created due to timeout #{instance_id}"
72
72
  end
@@ -87,7 +87,7 @@ class OpenStudioAwsInstance
87
87
  # true?
88
88
  end
89
89
 
90
- def launch_instance(image_id, instance_type, user_data, user_id, ebs_volume_size = nil)
90
+ def launch_instance(image_id, instance_type, user_data, user_id, options = {})
91
91
  # logger.info("user_data #{user_data.inspect}")
92
92
  instance = {
93
93
  image_id: image_id,
@@ -106,23 +106,43 @@ class OpenStudioAwsInstance
106
106
  # determine how many processors are suppose to be in this image (lookup for now?)
107
107
  processors = find_processors(instance_type)
108
108
 
109
+ # create the tag structure
110
+ aws_tags = [
111
+ { key: 'Name', value: "OpenStudio-#{@openstudio_instance_type.capitalize}" },
112
+ { key: 'GroupUUID', value: @group_uuid },
113
+ { key: 'NumberOfProcessors', value: processors.to_s },
114
+ { key: 'Purpose', value: "OpenStudio#{@openstudio_instance_type.capitalize}" },
115
+ { key: 'UserID', value: user_id }
116
+ ]
117
+
118
+ # add in any manual tags
119
+ options[:tags].each do |tag|
120
+ t = tag.split('=')
121
+ if t.size != 2
122
+ logger.error "Tag '#{t}' not defined or does not have an equal sign"
123
+ puts "Tag '#{t}' not defined or does not have an equal sign"
124
+ next
125
+ end
126
+ if %w(Name GroupUUID NumberOfProcessors Purpose UserID).include? t[0]
127
+ logger.error "Tag name '#{t[0]}' is a reserved tag"
128
+ puts "Tag name '#{t[0]}' is a reserved tag"
129
+ next
130
+ end
131
+
132
+ aws_tags << { key: t[0].strip, value: t[1].strip }
133
+ end
134
+
109
135
  # only asked for 1 instance, so therefore it should be the first
110
136
  aws_instance = result.data.instances.first
111
137
  @aws.create_tags(
112
138
  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
- ]
139
+ tags: aws_tags
120
140
  )
121
141
 
122
142
  # get the instance information
123
143
  test_result = @aws.describe_instance_status(instance_ids: [aws_instance.instance_id]).data.instance_statuses.first
124
144
  begin
125
- Timeout.timeout(600) { # 10 minutes
145
+ Timeout.timeout(600) do # 10 minutes
126
146
  while test_result.nil? || test_result.instance_state.name != 'running'
127
147
  # refresh the server instance information
128
148
 
@@ -130,13 +150,13 @@ class OpenStudioAwsInstance
130
150
  test_result = @aws.describe_instance_status(instance_ids: [aws_instance.instance_id]).data.instance_statuses.first
131
151
  logger.info '... waiting for instance to be running ...'
132
152
  end
133
- }
153
+ end
134
154
  rescue TimeoutError
135
155
  raise "Instance was unable to launch due to timeout #{aws_instance.instance_id}"
136
156
  end
137
157
 
138
- if ebs_volume_size
139
- create_and_attach_volume(ebs_volume_size, aws_instance.instance_id, aws_instance.placement.availability_zone)
158
+ if options[:ebs_volume_size]
159
+ create_and_attach_volume(options[:ebs_volume_size], aws_instance.instance_id, aws_instance.placement.availability_zone)
140
160
  end
141
161
 
142
162
  # now grab information about the instance
@@ -201,7 +221,7 @@ class OpenStudioAwsInstance
201
221
  't1.micro' => 1,
202
222
  'm1.small' => 1,
203
223
  'm2.2xlarge' => 4,
204
- 'm2.4xlarge' => 8,
224
+ 'm2.4xlarge' => 8
205
225
  }
206
226
 
207
227
  processors = 1
@@ -149,11 +149,11 @@ class OpenStudioAwsWrapper
149
149
  if group_uuid && openstudio_instance_type
150
150
  # {:key=>"Purpose", :value=>"OpenStudioWorker"}
151
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) }
152
+ i_h[:tags].any? { |h| (h[:key] == 'GroupUUID') && (h[:value] == group_uuid.to_s) }
153
153
  instance_data << i_h
154
154
  end
155
155
  elsif group_uuid
156
- if i_h[:tags].any? { |h|(h[:key] == 'GroupUUID') && (h[:value] == group_uuid.to_s) }
156
+ if i_h[:tags].any? { |h| (h[:key] == 'GroupUUID') && (h[:value] == group_uuid.to_s) }
157
157
  instance_data << i_h
158
158
  end
159
159
  elsif openstudio_instance_type
@@ -218,13 +218,13 @@ class OpenStudioAwsWrapper
218
218
  def terminate_instances(ids)
219
219
  begin
220
220
  resp = @aws.terminate_instances(
221
- instance_ids: ids,
221
+ instance_ids: ids
222
222
  )
223
223
  rescue Aws::EC2::Errors::InvalidInstanceIDNotFound
224
224
  # Log that the instances couldn't be found?
225
- return resp = {error: 'instances could not be found'}
225
+ return resp = { error: 'instances could not be found' }
226
226
  end
227
-
227
+
228
228
  resp
229
229
  end
230
230
 
@@ -275,23 +275,24 @@ class OpenStudioAwsWrapper
275
275
  end
276
276
  end
277
277
 
278
- def launch_server(image_id, instance_type, options = {})
279
- defaults = { user_id: 'unknown_user' }
280
- options = defaults.merge(options)
278
+ def launch_server(image_id, instance_type, launch_options = {})
279
+ defaults = { user_id: 'unknown_user', tags: [], ebs_volume_size: nil }
280
+ launch_options = defaults.merge(launch_options)
281
281
 
282
282
  user_data = File.read(File.expand_path(File.dirname(__FILE__)) + '/server_script.sh')
283
- @server = OpenStudioAwsInstance.new(@aws, :server, @key_pair_name, @security_group_name, @group_uuid, @private_key, @private_key_file_name, @proxy)
283
+ @server = OpenStudioAwsInstance.new(@aws, :server, @key_pair_name, @security_group_name, @group_uuid, @private_key,
284
+ @private_key_file_name, @proxy)
284
285
 
285
286
  # create the EBS volumes instead of the ephemeral storage - needed especially for the m3 instances (SSD)
286
287
 
287
288
  fail 'image_id is nil' unless image_id
288
289
  fail 'instance type is nil' unless instance_type
289
- @server.launch_instance(image_id, instance_type, user_data, options[:user_id], options[:ebs_volume_size])
290
+ @server.launch_instance(image_id, instance_type, user_data, launch_options[:user_id], launch_options)
290
291
  end
291
292
 
292
- def launch_workers(image_id, instance_type, num, options = {})
293
- defaults = { user_id: 'unknown_user' }
294
- options = defaults.merge(options)
293
+ def launch_workers(image_id, instance_type, num, launch_options = {})
294
+ defaults = { user_id: 'unknown_user', tags: [], ebs_volume_size: nil }
295
+ launch_options = defaults.merge(launch_options)
295
296
 
296
297
  user_data = File.read(File.expand_path(File.dirname(__FILE__)) + '/worker_script.sh.template')
297
298
  user_data.gsub!(/SERVER_IP/, @server.data.ip)
@@ -302,17 +303,18 @@ class OpenStudioAwsWrapper
302
303
  # thread the launching of the workers
303
304
 
304
305
  num.times do
305
- @workers << OpenStudioAwsInstance.new(@aws, :worker, @key_pair_name, @security_group_name, @group_uuid, @private_key, @private_key_file_name, @proxy)
306
+ @workers << OpenStudioAwsInstance.new(@aws, :worker, @key_pair_name, @security_group_name, @group_uuid,
307
+ @private_key, @private_key_file_name, @proxy)
306
308
  end
307
309
 
308
310
  threads = []
309
311
  @workers.each do |worker|
310
312
  threads << Thread.new do
311
313
  # 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])
314
+ worker.launch_instance(image_id, instance_type, user_data, launch_options[:user_id], launch_options)
313
315
  end
314
316
  end
315
- threads.each { |t| t.join }
317
+ threads.each(&:join)
316
318
 
317
319
  # todo: do we need to have a flag if the worker node is successful?
318
320
  # todo: do we need to check the current list of running workers?
@@ -350,7 +352,8 @@ class OpenStudioAwsWrapper
350
352
  @server.shell_command('chmod 664 /mnt/openstudio/rails-models/mongoid.yml')
351
353
  @workers.each { |worker| worker.shell_command('chmod 664 /mnt/openstudio/rails-models/mongoid.yml') }
352
354
 
353
- sleep 60 # wait 60 more seconds for everything -- this is cheesy
355
+ # I'm removing this as of 10/6/14. This should have been resolved by now.
356
+ # sleep 60 # wait 60 more seconds for everything -- this is cheesy
354
357
  true
355
358
  end
356
359
 
@@ -499,16 +502,26 @@ class OpenStudioAwsWrapper
499
502
  a[:tested] = false
500
503
  end
501
504
 
502
- if ami[:name] =~ /Worker|Cluster/
503
- if ami[:virtualization_type] == 'paravirtual'
505
+ # TODO: in 1.6.0 just stop putting in the cc2workers.
506
+ if ami[:tags_hash][:openstudio_version].to_version >= '1.5.0'
507
+ if ami[:name] =~ /Server/
508
+ a[:amis][:server] = ami[:image_id]
509
+ elsif ami[:name] =~ /Worker/
504
510
  a[:amis][:worker] = ami[:image_id]
505
- elsif ami[:virtualization_type] == 'hvm'
506
511
  a[:amis][:cc2worker] = ami[:image_id]
507
- else
508
- fail "unknown virtualization_type in #{ami[:name]}"
509
512
  end
510
- elsif ami[:name] =~ /Server/
511
- a[:amis][:server] = ami[:image_id]
513
+ else
514
+ if ami[:name] =~ /Worker|Cluster/
515
+ if ami[:virtualization_type] == 'paravirtual'
516
+ a[:amis][:worker] = ami[:image_id]
517
+ elsif ami[:virtualization_type] == 'hvm'
518
+ a[:amis][:cc2worker] = ami[:image_id]
519
+ else
520
+ fail "unknown virtualization_type in #{ami[:name]}"
521
+ end
522
+ elsif ami[:name] =~ /Server/
523
+ a[:amis][:server] = ami[:image_id]
524
+ end
512
525
  end
513
526
  end
514
527
  # puts "Current AMIs: #{JSON.pretty_generate(amis)}"
@@ -522,7 +535,7 @@ class OpenStudioAwsWrapper
522
535
  next_version = get_next_version('0.0.1', list_of_svs)
523
536
  list_of_svs << next_version
524
537
 
525
- amis[:openstudio_server][next_version.to_sym] = {} unless amis[:openstudio_server][next_version.to_sym]
538
+ amis[:openstudio_server][next_version.to_sym] ||= {}
526
539
  a = amis[:openstudio_server][next_version.to_sym]
527
540
  a[:amis] = {} unless a[:amis]
528
541
 
@@ -541,10 +554,10 @@ class OpenStudioAwsWrapper
541
554
  a = amis[:openstudio_server][key]
542
555
  ov = a[:openstudio_version]
543
556
 
544
- amis[:openstudio][ov] = {} unless amis[:openstudio][ov]
557
+ amis[:openstudio][ov] ||= {}
545
558
  osv = key
546
- amis[:openstudio][ov][osv] = {} unless amis[:openstudio][ov][osv]
547
- amis[:openstudio][ov][osv][:amis] = {} unless amis[:openstudio][ov][osv][:amis]
559
+ amis[:openstudio][ov][osv] ||= {}
560
+ amis[:openstudio][ov][osv][:amis] ||= {}
548
561
  amis[:openstudio][ov][osv][:amis][:server] = a[:amis][:server]
549
562
  amis[:openstudio][ov][osv][:amis][:worker] = a[:amis][:worker]
550
563
  amis[:openstudio][ov][osv][:amis][:cc2worker] = a[:amis][:cc2worker]
@@ -10,11 +10,11 @@ describe OpenStudio::Aws::Aws do
10
10
  end
11
11
 
12
12
  it 'should create a new instance' do
13
- @aws.should_not be_nil
13
+ expect(@aws).to be_nil
14
14
  end
15
15
 
16
16
  it 'should create a server' do
17
- options = { instance_type: 'm1.small', image_id: 'ami-29faca40' }
17
+ options = { instance_type: 'm3.medium', image_id: 'ami-3c0fbf54' }
18
18
 
19
19
  test_pem_file = 'ec2_server_key.pem'
20
20
  FileUtils.rm_f test_pem_file if File.exist? test_pem_file
@@ -26,32 +26,31 @@ describe OpenStudio::Aws::Aws do
26
26
  expect(File.exist?('server_data.json')).to be true
27
27
  expect(@aws.os_aws.server).not_to be_nil
28
28
 
29
- h = @os_aws.server.to_os_hash
29
+ h = @aws.os_aws.server.to_os_hash
30
30
  expect(h[:group_id]).to be_a String
31
- expect(h[:group_id]).to match /^\d{10}$/
32
- expect(h[:location]).to be 'AWS'
31
+ expect(h[:group_id]).to match /^[\d\S]{32}$/
32
+ expect(h[:location]).to eq 'AWS'
33
33
 
34
34
  @group_id = h[:group_id]
35
-
36
35
  end
37
36
 
38
37
  it 'should create a 1 worker' do
39
- options = { instance_type: 'm1.small', image_id: 'ami-95f9c9fc' }
38
+ options = { instance_type: 'm3.medium', image_id: 'ami-040ebe6c' }
40
39
 
41
40
  @aws.create_workers(1, options)
42
41
 
43
- expect(@aws.os_aws.workers).to have(1).thing
42
+ expect(@aws.os_aws.workers.size).to eq 1
44
43
  expect(@aws.os_aws.workers[0].data[:dns]).not_to be_nil
45
44
  end
46
45
 
47
46
  it 'should be able to connect a worker to an existing server' do
48
- options = { instance_type: 'm1.small', image_id: 'ami-29faca40' }
47
+ options = { instance_type: 'm3.medium', image_id: 'ami-3c0fbf54' }
49
48
 
50
49
  # will require a new @aws class--but attached to same group_uuid
51
50
  @config = OpenStudio::Aws::Config.new
52
51
  @aws_2 = OpenStudio::Aws::Aws.new
53
52
 
54
- @aws_2.os_aws.find_server(@aws.os_aws.group_uuid)
53
+ @aws_2.os_aws.find_server(@aws.os_aws.server.to_os_hash)
55
54
 
56
55
  expect(@aws.os_aws.server).not_to be_nil
57
56
  end
@@ -70,7 +69,7 @@ describe OpenStudio::Aws::Aws do
70
69
  config = OpenStudio::Aws::Config.new
71
70
  aws = OpenStudio::Aws::Aws.new
72
71
 
73
- options = { instance_type: 'm1.small', image_id: 'ami-29faca40' }
72
+ options = { instance_type: 'm3.medium', image_id: 'ami-3c0fbf54' }
74
73
 
75
74
  aws.create_server(options)
76
75
  end
@@ -81,26 +80,26 @@ describe OpenStudio::Aws::Aws do
81
80
  j = JSON.parse(File.read('server_data.json'), symbolize_names: true)
82
81
 
83
82
  config = OpenStudio::Aws::Config.new
84
- aws = OpenStudio::Aws::Aws.new
83
+ aws2 = OpenStudio::Aws::Aws.new
85
84
 
86
- aws.load_instance_info_from_file('server_data.json')
85
+ aws2.load_instance_info_from_file('server_data.json')
87
86
 
88
- expect(aws.os_aws.server.group_uuid).to eq j[:group_id]
89
- puts aws.os_aws.server.inspect
87
+ expect(aws2.os_aws.server.group_uuid).to eq j[:group_id]
88
+ puts aws2.os_aws.server.inspect
90
89
 
91
90
  local_file = File.expand_path('spec/resources/upload_me.sh')
92
91
  remote_file = '/home/ubuntu/i_uploaded_this_file.sh'
93
92
 
94
- aws.upload_file(:server, local_file, remote_file)
93
+ aws2.upload_file(:server, local_file, remote_file)
95
94
 
96
- aws.shell_command(:server, "source #{remote_file}")
95
+ aws2.shell_command(:server, "source #{remote_file}")
97
96
 
98
97
  FileUtils.rm_f 'success.receipt' if File.exist? 'success.receipt'
99
- aws.download_remote_file(:server, '/home/ubuntu/success.receipt', 'success.receipt')
98
+ aws2.download_remote_file(:server, '/home/ubuntu/success.receipt', 'success.receipt')
100
99
  expect(File.exist?('success.receipt')).to be true
101
100
 
102
101
  FileUtils.rm_f 'gemlist.receipt' if File.exist? 'gemlist.receipt'
103
- aws.download_remote_file(:server, '/home/ubuntu/gemlist.receipt', 'gemlist.receipt')
102
+ aws2.download_remote_file(:server, '/home/ubuntu/gemlist.receipt', 'gemlist.receipt')
104
103
  expect(File.exist?('gemlist.receipt')).to be true
105
104
  gemlist = File.read('gemlist.receipt')
106
105
  expect(gemlist).to match /^s3 \(.*\)$/
@@ -121,6 +120,94 @@ describe OpenStudio::Aws::Aws do
121
120
  end
122
121
  end
123
122
 
123
+ context 'create aws tags' do
124
+ before(:all) do
125
+ @config = OpenStudio::Aws::Config.new
126
+ @aws = OpenStudio::Aws::Aws.new
127
+
128
+ @group_id = nil
129
+ end
130
+
131
+ it 'should create a server with tags' do
132
+ begin
133
+ options = {
134
+ instance_type: 'm3.medium',
135
+ image_id: 'ami-3c0fbf54',
136
+ tags: [
137
+ 'ci_tests=true',
138
+ 'nothing=else',
139
+ 'this=is the end ',
140
+ 'this= is the beginning '
141
+ ]
142
+ }
143
+
144
+ test_pem_file = 'ec2_server_key.pem'
145
+ FileUtils.rm_f test_pem_file if File.exist? test_pem_file
146
+ FileUtils.rm_f 'server_data.json' if File.exist? 'server_data.json'
147
+
148
+ @aws.create_server(options)
149
+
150
+ expect(File.exist?('ec2_server_key.pem')).to be true
151
+ expect(File.exist?('server_data.json')).to be true
152
+ expect(@aws.os_aws.server).not_to be_nil
153
+
154
+ h = @aws.os_aws.server.to_os_hash
155
+ expect(h[:group_id]).to be_a String
156
+ expect(h[:group_id]).to match /^[\d\S]{32}$/
157
+ expect(h[:location]).to eq 'AWS'
158
+
159
+ puts h.inspect
160
+
161
+ @group_id = h[:group_id]
162
+ ensure
163
+ @aws.terminate_instances_by_group_id(h[:group_id], :server)
164
+ end
165
+
166
+ end
167
+ end
168
+
169
+ context 'server only' do
170
+ before(:all) do
171
+ @config = OpenStudio::Aws::Config.new
172
+ @aws = OpenStudio::Aws::Aws.new
173
+
174
+ @group_id = nil
175
+ end
176
+
177
+ it 'should create allow a zero length worker' do
178
+ begin
179
+ begin
180
+ options = {
181
+ instance_type: 'm3.medium',
182
+ image_id: 'ami-3c0fbf54', # server AMI
183
+ tags: [
184
+ 'ci_tests=true',
185
+ 'ServerOnly=true'
186
+ ]
187
+ }
188
+
189
+ expect { @aws.create_workers(0) }.to raise_error "Can't create workers without a server instance running"
190
+
191
+ test_pem_file = 'ec2_server_key.pem'
192
+ FileUtils.rm_f test_pem_file if File.exist? test_pem_file
193
+ FileUtils.rm_f 'server_data.json' if File.exist? 'server_data.json'
194
+
195
+ @aws.create_server(options)
196
+
197
+ # Still have to call "create workers" or the configuration won't happen.
198
+ @aws.create_workers(0, options)
199
+
200
+ h = @aws.os_aws.server.to_os_hash
201
+ expect(h[:group_id]).to be_a String
202
+ expect(h[:group_id]).to match /^[\d\S]{32}$/
203
+ expect(h[:location]).to eq 'AWS'
204
+ ensure
205
+ @aws.terminate_instances_by_group_id(h[:group_id], :server)
206
+ end
207
+ end
208
+ end
209
+ end
210
+
124
211
  # context 'create ebs storage' do
125
212
  # before(:all) do
126
213
  # @aws = OpenStudio::Aws::Aws.new