openstudio-aws 0.2.5 → 0.3.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.
- checksums.yaml +4 -4
- data/lib/openstudio-aws.rb +1 -1
- data/lib/openstudio/aws/aws.rb +99 -33
- data/lib/openstudio/aws/version.rb +1 -1
- data/lib/openstudio/lib/openstudio_aws_instance.rb +74 -25
- data/lib/openstudio/lib/openstudio_aws_wrapper.rb +84 -41
- data/lib/openstudio/lib/{server_script.sh → server_script.sh.template} +43 -21
- data/lib/openstudio/lib/worker_script.sh.template +31 -15
- data/spec/aws_instances/aws_spec_api.rb +18 -28
- data/spec/openstudio-aws/ami_list_spec.rb +8 -1
- data/spec/openstudio-aws/aws_instance_spec.rb +1 -1
- data/spec/openstudio-aws/aws_spec.rb +11 -0
- data/spec/openstudio-aws/aws_wrapper_spec.rb +14 -3
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.0.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.1.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.10.xml +27 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.11.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.12.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.13.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.14.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.15.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.16.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.17.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.18.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.19.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.2.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.20.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.21.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.3.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.4.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.5.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.6.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.7.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.8.xml +19 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.9.xml +27 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.0.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.1.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.10.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.11.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.12.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.13.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.14.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.15.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.16.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.17.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.18.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.19.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.2.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.20.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.21.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.3.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.4.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.5.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.6.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.7.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.8.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.9.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.0.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.1.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.10.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.11.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.12.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.13.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.14.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.15.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.16.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.17.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.18.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.19.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.2.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.20.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.21.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.3.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.4.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.5.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.6.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.7.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.8.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.9.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-proxy-configuration.xml +13 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.0.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.1.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.10.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.11.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.12.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.13.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.14.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.15.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.16.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.17.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.18.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.19.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.2.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.20.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.21.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.3.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.4.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.5.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.6.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.7.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.8.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.9.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-should-error.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.0.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.1.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.10.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.11.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.12.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.13.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.14.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.15.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.16.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.17.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.18.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.19.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.2.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.20.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.21.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.3.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.4.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.5.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.6.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.7.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.8.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.9.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-version-testing.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.0.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.1.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.10.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.11.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.12.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.13.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.14.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.15.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.16.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.17.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.18.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.19.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.2.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.20.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.21.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.3.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.4.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.5.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.6.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.7.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.8.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.9.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.0.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.1.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.10.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.11.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.12.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.13.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.14.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.15.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.16.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.17.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.18.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.19.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.2.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.3.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.4.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.5.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.6.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.7.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.8.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.9.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config-create-a-new-config.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.0.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.1.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.10.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.11.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.12.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.13.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.14.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.15.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.16.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.17.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.18.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.19.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.2.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.3.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.4.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.5.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.6.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.7.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.8.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.9.xml +7 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.0.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.1.xml +20 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.10.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.11.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.12.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.13.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.14.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.15.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.16.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.17.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.18.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.19.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.2.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.20.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.21.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.3.xml +28 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.4.xml +22 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.5.xml +16 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.6.xml +16 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.7.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.8.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.9.xml +14 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.0.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.1.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.10.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.11.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.12.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.13.xml +23 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.14.xml +23 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.15.xml +23 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.16.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.17.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.18.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.19.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.2.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.20.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.21.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.3.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.4.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.5.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.6.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.7.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.8.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.9.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAmis.0.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.1.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.10.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.11.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.12.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.13.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.14.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.15.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.16.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.17.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.18.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.19.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.2.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.20.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.21.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.3.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.4.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.5.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.6.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.7.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.8.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.9.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.0.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.1.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.10.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.11.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.12.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.13.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.14.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.15.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.16.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.17.xml +25 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.18.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.19.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.2.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.20.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.21.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.3.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.4.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.5.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.6.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.7.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.8.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.9.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.0.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.1.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.10.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.11.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.12.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.13.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.14.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.15.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.16.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.17.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.18.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.19.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.2.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.20.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.21.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.3.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.4.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.5.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.6.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.7.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.8.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.9.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.0.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.1.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.10.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.11.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.12.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.13.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.14.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.15.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.16.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.17.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.18.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.19.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.2.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.3.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.4.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.5.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.6.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.7.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.8.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.9.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-ami-list.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.0.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.1.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.10.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.11.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.12.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.13.xml +25 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.14.xml +25 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.15.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.16.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.17.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.18.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.19.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.2.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.20.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.21.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.3.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.4.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.5.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.6.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.7.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.8.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.9.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.0.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.1.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.10.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.11.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.12.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.13.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.14.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.15.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.16.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.17.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.18.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.19.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.2.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.20.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.21.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.3.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.4.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.5.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.6.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.7.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.8.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.9.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.0.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.1.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.10.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.11.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.12.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.13.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.14.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.15.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.16.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.17.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.18.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.19.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.2.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.20.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.21.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.3.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.4.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.5.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.6.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.7.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.8.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.9.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-new-instance.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.0.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.1.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.10.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.11.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.12.xml +122 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.13.xml +122 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.14.xml +122 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.15.xml +122 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.16.xml +142 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.17.xml +142 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.18.xml +142 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.19.xml +147 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.2.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.20.xml +147 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.3.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.4.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.5.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.6.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.7.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.8.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.9.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.xml +117 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.0.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.1.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.10.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.11.xml +1387 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.12.xml +1387 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.13.xml +1387 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.14.xml +1387 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.15.xml +1535 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.16.xml +1535 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.17.xml +1555 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.18.xml +1867 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.19.xml +1867 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.2.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.3.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.4.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.5.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.6.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.7.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.8.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.9.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.xml +1355 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.0.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.1.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.10.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.11.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.12.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.13.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.14.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.15.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.16.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.17.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.18.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.19.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.2.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.20.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.21.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.3.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.4.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.5.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.6.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.7.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.8.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.9.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.0.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.1.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.10.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.11.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.12.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.13.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.14.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.15.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.16.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.17.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.18.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.19.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.2.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.20.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.21.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.3.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.4.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.5.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.6.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.7.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.8.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.9.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-unauthenticated-session.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.0.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.1.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.10.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.11.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.12.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.13.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.14.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.15.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.16.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.17.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.18.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.19.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.2.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.20.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.21.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.3.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.4.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.5.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.6.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.7.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.8.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.9.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.xml +7 -0
- metadata +1019 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7e3f40caa3eed2715d9774ae42a8913b3d605434
|
|
4
|
+
data.tar.gz: ac233b57d15ba24a027019e94c919da9a0850cf0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 76a729d74b97e3b9fe3e8e737b303c38939443567d2006e9ebfd46ce709995a7d0e1a29305951ceeb362122e36d7a9a55968aba2e6127f03dfefae29ef7c94cf
|
|
7
|
+
data.tar.gz: 5d46f753111b741a8b51349d2e83c1ef75689f51a42d006a590d5e0795a1d4e7f46acb25c259d43188a3bca411fa66afe469cca186b14a04c849498b8458d092
|
data/lib/openstudio-aws.rb
CHANGED
data/lib/openstudio/aws/aws.rb
CHANGED
|
@@ -80,7 +80,9 @@ module OpenStudio
|
|
|
80
80
|
@default_amis = OpenStudioAmis.new(options[:ami_lookup_version], ami_options).get_amis
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# # def load_data_from_json(json_filename)
|
|
84
86
|
# @os_aws.load_data_from_json
|
|
85
87
|
#
|
|
86
88
|
#
|
|
@@ -90,11 +92,13 @@ module OpenStudio
|
|
|
90
92
|
def create_server(options = {}, instances_json = 'server_data.json')
|
|
91
93
|
defaults = {
|
|
92
94
|
instance_type: 'm2.xlarge',
|
|
93
|
-
|
|
95
|
+
security_groups: [],
|
|
94
96
|
image_id: @default_amis[:server],
|
|
95
97
|
user_id: 'unknown_user',
|
|
96
98
|
|
|
97
99
|
# optional -- will default later
|
|
100
|
+
associate_public_ip_address: nil,
|
|
101
|
+
subnet_id: nil,
|
|
98
102
|
ebs_volume_id: nil,
|
|
99
103
|
aws_key_pair_name: nil,
|
|
100
104
|
private_key_file_name: nil, # required if using an existing "aws_key_pair_name"
|
|
@@ -102,12 +106,24 @@ module OpenStudio
|
|
|
102
106
|
}
|
|
103
107
|
options = defaults.merge(options)
|
|
104
108
|
|
|
109
|
+
# for backwards compatibilty, still allow security_group
|
|
110
|
+
if options[:security_group]
|
|
111
|
+
warn "Pass security_groups as an array instead of security_group. security_group will be deprecated in 0.4.0"
|
|
112
|
+
options[:security_groups] = [ options[:security_group] ]
|
|
113
|
+
end
|
|
114
|
+
|
|
105
115
|
if options[:aws_key_pair_name]
|
|
106
116
|
fail 'Must pass in the private_key_file_name' unless options[:private_key_file_name]
|
|
107
117
|
fail "Private key was not found: #{options[:private_key_file_name]}" unless File.exist? options[:private_key_file_name]
|
|
108
118
|
end
|
|
109
119
|
|
|
110
|
-
|
|
120
|
+
if options[:security_groups].empty?
|
|
121
|
+
# if the user has not specified any security groups, then create one called: 'openstudio-server-sg-v1'
|
|
122
|
+
@os_aws.create_or_retrieve_default_security_group
|
|
123
|
+
else
|
|
124
|
+
@os_aws.security_groups = options[:security_groups]
|
|
125
|
+
end
|
|
126
|
+
|
|
111
127
|
@os_aws.create_or_retrieve_key_pair options[:aws_key_pair_name]
|
|
112
128
|
|
|
113
129
|
# If using an already_existing key_pair, then you must pass in the private key file name
|
|
@@ -119,7 +135,17 @@ module OpenStudio
|
|
|
119
135
|
@os_aws.save_private_key('ec2_server_key.pem')
|
|
120
136
|
end
|
|
121
137
|
|
|
122
|
-
server_options = {
|
|
138
|
+
server_options = {
|
|
139
|
+
user_id: options[:user_id],
|
|
140
|
+
tags: options[:tags],
|
|
141
|
+
subnet_id: options[:subnet_id],
|
|
142
|
+
associate_public_ip_address: options[:associate_public_ip_address],
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
# save the worker pem and public to the directory
|
|
146
|
+
# presently, this will always overwrite the worker key, is that okay? Is this really needed later?
|
|
147
|
+
@os_aws.save_worker_keys('.')
|
|
148
|
+
|
|
123
149
|
# if instance_data[:ebs_volume_id]
|
|
124
150
|
# server_options[:ebs_volume_id] = instance_data[:ebs_volume_id]
|
|
125
151
|
# end
|
|
@@ -127,7 +153,7 @@ module OpenStudio
|
|
|
127
153
|
@os_aws.launch_server(options[:image_id], options[:instance_type], server_options)
|
|
128
154
|
|
|
129
155
|
@instances_json = instances_json
|
|
130
|
-
|
|
156
|
+
save_cluster_json(@instances_json)
|
|
131
157
|
|
|
132
158
|
# Print out some debugging commands (probably work on mac/linux only)
|
|
133
159
|
puts ''
|
|
@@ -139,11 +165,13 @@ module OpenStudio
|
|
|
139
165
|
def create_workers(number_of_instances, options = {}, user_id = 'unknown_user')
|
|
140
166
|
defaults = {
|
|
141
167
|
instance_type: 'm2.4xlarge',
|
|
142
|
-
|
|
143
|
-
image_id:
|
|
168
|
+
security_groups: [],
|
|
169
|
+
image_id: nil, # don't prescribe the image id so that it can determine later
|
|
144
170
|
user_id: user_id,
|
|
145
171
|
|
|
146
172
|
# optional -- will default later
|
|
173
|
+
associate_public_ip_address: nil,
|
|
174
|
+
subnet_id: nil,
|
|
147
175
|
ebs_volume_id: nil,
|
|
148
176
|
aws_key_pair_name: nil,
|
|
149
177
|
private_key_file_name: nil, # required if using an existing "aws_key_pair_name",
|
|
@@ -151,13 +179,16 @@ module OpenStudio
|
|
|
151
179
|
}
|
|
152
180
|
options = defaults.merge(options)
|
|
153
181
|
|
|
182
|
+
# for backwards compatibilty, still allow security_group
|
|
183
|
+
if options[:security_group]
|
|
184
|
+
warn "Pass security_groups as an array instead of security_group. security_group will be deprecated in 0.4.0"
|
|
185
|
+
options[:security_groups] = [ options[:security_group] ]
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
|
|
154
189
|
# Get the right worker AMI ids based on the type of instance
|
|
155
190
|
if options[:image_id].nil?
|
|
156
|
-
|
|
157
|
-
options[:image_id] = @default_amis[:cc2worker]
|
|
158
|
-
else
|
|
159
|
-
options[:image_id] = @default_amis[:worker]
|
|
160
|
-
end
|
|
191
|
+
options[:image_id] = determine_image_type(options[:instance_type])
|
|
161
192
|
end
|
|
162
193
|
|
|
163
194
|
fail "Can't create workers without a server instance running" if @os_aws.server.nil?
|
|
@@ -166,29 +197,21 @@ module OpenStudio
|
|
|
166
197
|
puts ''
|
|
167
198
|
puts 'No workers requested'
|
|
168
199
|
else
|
|
169
|
-
worker_options = {
|
|
200
|
+
worker_options = {
|
|
201
|
+
user_id: options[:user_id],
|
|
202
|
+
tags: options[:tags],
|
|
203
|
+
subnet_id: options[:subnet_id],
|
|
204
|
+
associate_public_ip_address: options[:associate_public_ip_address]
|
|
205
|
+
}
|
|
206
|
+
|
|
170
207
|
# if options[:ebs_volume_size]
|
|
171
208
|
# worker_options[:ebs_volume_size] = options[:ebs_volume_size]
|
|
172
209
|
# end
|
|
173
210
|
|
|
174
211
|
@os_aws.launch_workers(options[:image_id], options[:instance_type], number_of_instances, worker_options)
|
|
175
212
|
|
|
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
213
|
# Add the worker data to the JSON
|
|
189
|
-
|
|
190
|
-
h[:workers] = @os_aws.to_os_worker_hash[:workers]
|
|
191
|
-
File.open(@instances_json, 'w') { |f| f << JSON.pretty_generate(h) }
|
|
214
|
+
save_cluster_json @instances_json
|
|
192
215
|
|
|
193
216
|
puts ''
|
|
194
217
|
puts 'Worker SSH Command:'
|
|
@@ -203,6 +226,21 @@ module OpenStudio
|
|
|
203
226
|
@os_aws.configure_server_and_workers
|
|
204
227
|
end
|
|
205
228
|
|
|
229
|
+
# Return information on the cluster instances as a hash. This includes IP addresses, host names, number of processors, etc.
|
|
230
|
+
# @return [Hash] Data about the configured cluster
|
|
231
|
+
def cluster_info
|
|
232
|
+
h = @os_aws.server.to_os_hash
|
|
233
|
+
h[:workers] = @os_aws.to_os_worker_hash[:workers]
|
|
234
|
+
|
|
235
|
+
h
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
# Save a JSON with information about the cluster that was configured.
|
|
239
|
+
# @param filename [String] Path and filename to save the JSON file
|
|
240
|
+
def save_cluster_json(filename)
|
|
241
|
+
File.open(@instances_json, 'w') { |f| f << JSON.pretty_generate(cluster_info) }
|
|
242
|
+
end
|
|
243
|
+
|
|
206
244
|
# openstudio_instance_type as symbol
|
|
207
245
|
def stop_instances(group_id, openstudio_instance_type)
|
|
208
246
|
instances = @os_aws.describe_running_instances(group_id, openstudio_instance_type.to_sym)
|
|
@@ -221,24 +259,41 @@ module OpenStudio
|
|
|
221
259
|
resp
|
|
222
260
|
end
|
|
223
261
|
|
|
224
|
-
# Warning, this appears that it terminates all the instances
|
|
225
|
-
def terminate_instances_by_group_id(group_id
|
|
226
|
-
instances = @os_aws.describe_running_instances(group_id
|
|
262
|
+
# Warning, this appears that it terminates all the instances
|
|
263
|
+
def terminate_instances_by_group_id(group_id)
|
|
264
|
+
instances = @os_aws.describe_running_instances(group_id)
|
|
227
265
|
ids = instances.map { |k, _| k[:instance_id] }
|
|
228
266
|
|
|
229
267
|
puts "Terminating the following instances #{ids}"
|
|
230
268
|
resp = []
|
|
231
269
|
resp = @os_aws.terminate_instances(ids).to_hash unless ids.empty?
|
|
232
|
-
resp
|
|
270
|
+
resp[:terminating_instances].first[:current_state][:name] == 'shutting-down'
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
# Terminate the entire cluster
|
|
274
|
+
def terminate
|
|
275
|
+
puts "Terminating any instance with group ID: #{@os_aws.group_uuid}"
|
|
276
|
+
|
|
277
|
+
terminate_instances_by_group_id(@os_aws.group_uuid)
|
|
233
278
|
end
|
|
234
279
|
|
|
235
280
|
def load_instance_info_from_file(filename)
|
|
236
281
|
fail 'Could not find instance description JSON file' unless File.exist? filename
|
|
237
282
|
|
|
238
283
|
h = JSON.parse(File.read(filename), symbolize_names: true)
|
|
239
|
-
|
|
284
|
+
if h[:location] == 'AWS'
|
|
285
|
+
@os_aws.find_server(h)
|
|
286
|
+
else
|
|
287
|
+
puts "Instance file '#{filename}' does not have the location of 'AWS'"
|
|
288
|
+
return false
|
|
289
|
+
end
|
|
240
290
|
|
|
241
291
|
# load the worker nodes someday
|
|
292
|
+
true
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def server
|
|
296
|
+
@os_aws.server
|
|
242
297
|
end
|
|
243
298
|
|
|
244
299
|
# Send a file to the server or worker nodes
|
|
@@ -276,6 +331,17 @@ module OpenStudio
|
|
|
276
331
|
end
|
|
277
332
|
end
|
|
278
333
|
|
|
334
|
+
def determine_image_type(instance_type)
|
|
335
|
+
image = nil
|
|
336
|
+
if instance_type =~ /cc2/
|
|
337
|
+
image = @default_amis[:cc2worker]
|
|
338
|
+
else
|
|
339
|
+
image = @default_amis[:worker]
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
image
|
|
343
|
+
end
|
|
344
|
+
|
|
279
345
|
private
|
|
280
346
|
|
|
281
347
|
def os_aws_file_location
|
|
@@ -24,20 +24,24 @@ class OpenStudioAwsInstance
|
|
|
24
24
|
attr_reader :openstudio_instance_type
|
|
25
25
|
attr_reader :data
|
|
26
26
|
attr_reader :private_key_file_name
|
|
27
|
+
attr_reader :private_ip_address
|
|
27
28
|
attr_reader :group_uuid
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
|
|
31
|
+
# param security_groups can be a single instance or an array
|
|
32
|
+
def initialize(aws_session, openstudio_instance_type, key_pair_name, security_groups, group_uuid, private_key,
|
|
33
|
+
private_key_file_name, subnet_id, proxy = nil)
|
|
31
34
|
@data = nil # stored information about the instance
|
|
32
35
|
@aws = aws_session
|
|
33
36
|
@openstudio_instance_type = openstudio_instance_type # :server, :worker
|
|
34
37
|
@key_pair_name = key_pair_name
|
|
35
|
-
@
|
|
38
|
+
@security_groups = security_groups
|
|
36
39
|
@group_uuid = group_uuid.to_s
|
|
37
40
|
@init_timestamp = Time.now # This is the timestamp and is typically just tracked for the server
|
|
38
41
|
@private_key = private_key
|
|
39
42
|
@private_key_file_name = private_key_file_name
|
|
40
43
|
@proxy = proxy
|
|
44
|
+
@subnet_id = subnet_id
|
|
41
45
|
|
|
42
46
|
# Important System information
|
|
43
47
|
@host = nil
|
|
@@ -74,12 +78,10 @@ class OpenStudioAwsInstance
|
|
|
74
78
|
# need to wait until it is available
|
|
75
79
|
|
|
76
80
|
@aws.attach_volume(
|
|
77
|
-
|
|
78
81
|
volume_id: resp[:volume_id],
|
|
79
82
|
instance_id: instance_id,
|
|
80
83
|
# required
|
|
81
84
|
device: '/dev/sdh'
|
|
82
|
-
|
|
83
85
|
)
|
|
84
86
|
|
|
85
87
|
# Wait for the volume to attach
|
|
@@ -88,21 +90,42 @@ class OpenStudioAwsInstance
|
|
|
88
90
|
end
|
|
89
91
|
|
|
90
92
|
def launch_instance(image_id, instance_type, user_data, user_id, options = {})
|
|
91
|
-
#
|
|
93
|
+
# determine the instance type of the server
|
|
92
94
|
instance = {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
min_count: 1,
|
|
102
|
-
max_count: 1
|
|
95
|
+
image_id: image_id,
|
|
96
|
+
key_name: @key_pair_name,
|
|
97
|
+
security_group_ids: @security_groups,
|
|
98
|
+
subnet_id: options[:subnet_id],
|
|
99
|
+
user_data: Base64.encode64(user_data),
|
|
100
|
+
instance_type: instance_type,
|
|
101
|
+
min_count: 1,
|
|
102
|
+
max_count: 1
|
|
103
103
|
}
|
|
104
|
+
|
|
105
|
+
if options[:availability_zone]
|
|
106
|
+
# use the availability zone from the server
|
|
107
|
+
# logger.info("user_data #{user_data.inspect}")
|
|
108
|
+
instance[:placement] ||= {}
|
|
109
|
+
instance[:placement][:availability_zone] = options[:availability_zone]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
if options[:associate_public_ip_address]
|
|
113
|
+
# You have to delete the security group and subnet_id from the instance hash and put into the network interface
|
|
114
|
+
# otherwise you will get an error on launch with an InvalidParameterCombination error.
|
|
115
|
+
instance[:network_interfaces] = [
|
|
116
|
+
{
|
|
117
|
+
subnet_id: instance.delete(:subnet_id),
|
|
118
|
+
groups: instance.delete(:security_group_ids),
|
|
119
|
+
device_index: 0,
|
|
120
|
+
associate_public_ip_address: true
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Documentation for run_instances is here: http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html#run_instances-instance_method
|
|
104
126
|
result = @aws.run_instances(instance)
|
|
105
127
|
|
|
128
|
+
|
|
106
129
|
# determine how many processors are suppose to be in this image (lookup for now?)
|
|
107
130
|
processors = find_processors(instance_type)
|
|
108
131
|
|
|
@@ -133,11 +156,18 @@ class OpenStudioAwsInstance
|
|
|
133
156
|
end
|
|
134
157
|
|
|
135
158
|
# only asked for 1 instance, so therefore it should be the first
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
159
|
+
begin
|
|
160
|
+
tries ||= 3
|
|
161
|
+
aws_instance = result.data.instances.first
|
|
162
|
+
@aws.create_tags(
|
|
163
|
+
resources: [aws_instance.instance_id],
|
|
164
|
+
tags: aws_tags
|
|
165
|
+
)
|
|
166
|
+
rescue Aws::EC2::Errors::InvalidInstanceIDNotFound
|
|
167
|
+
sleep 1000
|
|
168
|
+
retry unless (tries -= 1).zero?
|
|
169
|
+
end
|
|
170
|
+
|
|
141
171
|
|
|
142
172
|
# get the instance information
|
|
143
173
|
test_result = @aws.describe_instance_status(instance_ids: [aws_instance.instance_id]).data.instance_statuses.first
|
|
@@ -185,12 +215,14 @@ class OpenStudioAwsInstance
|
|
|
185
215
|
# private_key_path: "#{File.expand_path(@private_key_path)}"
|
|
186
216
|
#:private_key => @private_key, # need to stop printing this out
|
|
187
217
|
location: 'AWS',
|
|
218
|
+
availability_zone: @data.availability_zone,
|
|
188
219
|
server: {
|
|
189
220
|
id: @data.id,
|
|
190
|
-
ip:
|
|
221
|
+
ip: "http://#{@data.ip}",
|
|
191
222
|
dns: @data.dns,
|
|
192
223
|
procs: @data.procs,
|
|
193
|
-
private_key_file_name: @private_key_file_name
|
|
224
|
+
private_key_file_name: @private_key_file_name,
|
|
225
|
+
private_ip_address: @private_ip_address
|
|
194
226
|
}
|
|
195
227
|
}
|
|
196
228
|
else
|
|
@@ -202,6 +234,14 @@ class OpenStudioAwsInstance
|
|
|
202
234
|
h
|
|
203
235
|
end
|
|
204
236
|
|
|
237
|
+
def ip
|
|
238
|
+
@data.ip
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def hostname
|
|
242
|
+
"http://#{@data.ip}"
|
|
243
|
+
end
|
|
244
|
+
|
|
205
245
|
def find_processors(instance)
|
|
206
246
|
lookup = {
|
|
207
247
|
'm3.medium' => 1,
|
|
@@ -385,11 +425,20 @@ class OpenStudioAwsInstance
|
|
|
385
425
|
# store some of the data into a custom struct. The instance is the full description. The remaining fields are
|
|
386
426
|
# just easier accessors to the data in the raw request except for procs which is a custom request.
|
|
387
427
|
def create_struct(instance, procs)
|
|
388
|
-
instance_struct = Struct.new(:instance, :id, :ip, :dns, :procs)
|
|
389
|
-
s = instance_struct.new(
|
|
428
|
+
instance_struct = Struct.new(:instance, :id, :ip, :dns, :procs, :availability_zone, :private_ip_address)
|
|
429
|
+
s = instance_struct.new(
|
|
430
|
+
instance,
|
|
431
|
+
instance[:instance_id],
|
|
432
|
+
instance[:public_ip_address],
|
|
433
|
+
instance[:public_dns_name],
|
|
434
|
+
procs,
|
|
435
|
+
instance[:placement][:availability_zone],
|
|
436
|
+
instance[:private_ip_address]
|
|
437
|
+
)
|
|
390
438
|
|
|
391
439
|
# store some values into the member variables
|
|
392
440
|
@ip_address = instance[:public_ip_address]
|
|
441
|
+
@private_ip_address = instance[:private_ip_address]
|
|
393
442
|
@instance_id = instance[:instance_id]
|
|
394
443
|
|
|
395
444
|
s
|
|
@@ -42,23 +42,26 @@ class OpenStudioAwsWrapper
|
|
|
42
42
|
include Logging
|
|
43
43
|
|
|
44
44
|
attr_reader :group_uuid
|
|
45
|
-
attr_reader :security_group_name
|
|
46
45
|
attr_reader :key_pair_name
|
|
47
46
|
attr_reader :server
|
|
48
47
|
attr_reader :workers
|
|
49
48
|
attr_reader :proxy
|
|
49
|
+
attr_reader :worker_keys
|
|
50
50
|
|
|
51
51
|
attr_accessor :private_key_file_name
|
|
52
|
+
attr_accessor :security_groups
|
|
52
53
|
|
|
53
54
|
VALID_OPTIONS = [:proxy, :credentials]
|
|
54
55
|
|
|
55
56
|
def initialize(options = {}, group_uuid = nil)
|
|
56
57
|
@group_uuid = group_uuid || (SecureRandom.uuid).gsub('-', '')
|
|
57
58
|
|
|
58
|
-
@
|
|
59
|
+
@security_groups = []
|
|
59
60
|
@key_pair_name = nil
|
|
60
61
|
@private_key_file_name = nil
|
|
61
62
|
|
|
63
|
+
@worker_keys = SSHKey.generate
|
|
64
|
+
|
|
62
65
|
@private_key = nil # Private key data
|
|
63
66
|
|
|
64
67
|
# List of instances
|
|
@@ -72,32 +75,33 @@ class OpenStudioAwsWrapper
|
|
|
72
75
|
@aws = Aws::EC2::Client.new(options[:credentials])
|
|
73
76
|
end
|
|
74
77
|
|
|
75
|
-
def
|
|
76
|
-
tmp_name = sg_name || 'openstudio-server-sg-v1'
|
|
78
|
+
def create_or_retrieve_default_security_group(tmp_name = 'openstudio-server-sg-v2.1')
|
|
77
79
|
group = @aws.describe_security_groups(filters: [{ name: 'group-name', values: [tmp_name] }])
|
|
78
80
|
logger.info "Length of the security group is: #{group.data.security_groups.length}"
|
|
79
81
|
if group.data.security_groups.length == 0
|
|
80
|
-
logger.info '
|
|
82
|
+
logger.info 'security group not found --- will create a new one'
|
|
81
83
|
@aws.create_security_group(group_name: tmp_name, description: "group dynamically created by #{__FILE__}")
|
|
82
84
|
@aws.authorize_security_group_ingress(
|
|
83
85
|
group_name: tmp_name,
|
|
84
86
|
ip_permissions: [
|
|
85
|
-
{ ip_protocol: 'tcp', from_port:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
ip_permissions: [
|
|
91
|
-
{ ip_protocol: 'icmp', from_port: -1, to_port: -1, ip_ranges: [cidr_ip: '0.0.0.0/0']
|
|
92
|
-
}
|
|
87
|
+
{ ip_protocol: 'tcp', from_port: 22, to_port: 22, ip_ranges: [cidr_ip: '0.0.0.0/0'] }, # Eventually make this only the user's IP address seen by the internet
|
|
88
|
+
{ ip_protocol: 'tcp', from_port: 80, to_port: 80, ip_ranges: [cidr_ip: '0.0.0.0/0'] },
|
|
89
|
+
{ ip_protocol: 'tcp', from_port: 443, to_port: 443, ip_ranges: [cidr_ip: '0.0.0.0/0'] },
|
|
90
|
+
{ ip_protocol: 'tcp', from_port: 0, to_port: 65535, user_id_group_pairs: [{ group_name: tmp_name}]}, # allow all machines in the security group talk to each other openly
|
|
91
|
+
{ ip_protocol: 'icmp', from_port: -1, to_port: -1, ip_ranges: [cidr_ip: '0.0.0.0/0'] }
|
|
93
92
|
]
|
|
94
93
|
)
|
|
95
94
|
|
|
96
95
|
# reload group information
|
|
97
96
|
group = @aws.describe_security_groups(filters: [{ name: 'group-name', values: [tmp_name] }])
|
|
97
|
+
else
|
|
98
|
+
logger.info "Found existing security group"
|
|
98
99
|
end
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
|
|
101
|
+
@security_groups = [group.data.security_groups.first.group_id]
|
|
102
|
+
logger.info("server_group #{group.data.security_groups.first.group_name}:#{group.data.security_groups.first.group_id}")
|
|
103
|
+
|
|
104
|
+
group.data.security_groups.first
|
|
101
105
|
end
|
|
102
106
|
|
|
103
107
|
def describe_availability_zones
|
|
@@ -260,7 +264,17 @@ class OpenStudioAwsWrapper
|
|
|
260
264
|
end
|
|
261
265
|
|
|
262
266
|
def load_private_key(filename)
|
|
263
|
-
|
|
267
|
+
if !File.exist? filename
|
|
268
|
+
# check if the file basename exists in your user directory
|
|
269
|
+
filename = File.expand_path("~/.ssh/#{File.basename(filename)}")
|
|
270
|
+
if File.exist? filename
|
|
271
|
+
puts "Found key of same name in user's home ssh folder #{filename}"
|
|
272
|
+
# using the key in your home directory
|
|
273
|
+
else
|
|
274
|
+
fail "Could not find private key #{filename}" unless File.exist? filename
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
|
|
264
278
|
@private_key_file_name = File.expand_path filename
|
|
265
279
|
@private_key = File.read(filename)
|
|
266
280
|
end
|
|
@@ -275,15 +289,30 @@ class OpenStudioAwsWrapper
|
|
|
275
289
|
end
|
|
276
290
|
end
|
|
277
291
|
|
|
292
|
+
# save off the worker public/private keys that were created
|
|
293
|
+
def save_worker_keys(directory='.')
|
|
294
|
+
File.open("#{directory}/ec2_worker_key.pem", 'w') { |f| f << @worker_keys.private_key}
|
|
295
|
+
File.open("#{directory}/ec2_worker_key.pub", 'w') { |f| f << @worker_keys.public_key}
|
|
296
|
+
end
|
|
297
|
+
|
|
278
298
|
def launch_server(image_id, instance_type, launch_options = {})
|
|
279
|
-
defaults = {
|
|
299
|
+
defaults = {
|
|
300
|
+
user_id: 'unknown_user',
|
|
301
|
+
tags: [],
|
|
302
|
+
ebs_volume_size: nil
|
|
303
|
+
}
|
|
280
304
|
launch_options = defaults.merge(launch_options)
|
|
281
305
|
|
|
282
|
-
|
|
283
|
-
|
|
306
|
+
# replace the server_script.sh.template with the keys to add
|
|
307
|
+
user_data = File.read(File.expand_path(File.dirname(__FILE__)) + '/server_script.sh.template')
|
|
308
|
+
user_data.gsub!(/SERVER_HOSTNAME/, 'openstudio.server')
|
|
309
|
+
user_data.gsub!(/WORKER_PRIVATE_KEY_TEMPLATE/, worker_keys.private_key.gsub("\n","\\n"))
|
|
310
|
+
user_data.gsub!(/WORKER_PUBLIC_KEY_TEMPLATE/, worker_keys.ssh_public_key)
|
|
311
|
+
|
|
312
|
+
@server = OpenStudioAwsInstance.new(@aws, :server, @key_pair_name, @security_groups, @group_uuid, @private_key,
|
|
284
313
|
@private_key_file_name, @proxy)
|
|
285
314
|
|
|
286
|
-
# create the EBS volumes instead of the ephemeral storage - needed especially for the m3 instances (SSD)
|
|
315
|
+
# TODO: create the EBS volumes instead of the ephemeral storage - needed especially for the m3 instances (SSD)
|
|
287
316
|
|
|
288
317
|
fail 'image_id is nil' unless image_id
|
|
289
318
|
fail 'instance type is nil' unless instance_type
|
|
@@ -291,19 +320,25 @@ class OpenStudioAwsWrapper
|
|
|
291
320
|
end
|
|
292
321
|
|
|
293
322
|
def launch_workers(image_id, instance_type, num, launch_options = {})
|
|
294
|
-
defaults = {
|
|
323
|
+
defaults = {
|
|
324
|
+
user_id: 'unknown_user',
|
|
325
|
+
tags: [],
|
|
326
|
+
ebs_volume_size: nil,
|
|
327
|
+
availability_zone: @server.data.availability_zone,
|
|
328
|
+
worker_public_key: ''
|
|
329
|
+
}
|
|
295
330
|
launch_options = defaults.merge(launch_options)
|
|
296
331
|
|
|
297
332
|
user_data = File.read(File.expand_path(File.dirname(__FILE__)) + '/worker_script.sh.template')
|
|
298
|
-
user_data.gsub!(/SERVER_IP/, @server.data.
|
|
299
|
-
user_data.gsub!(/SERVER_HOSTNAME/, '
|
|
300
|
-
user_data.gsub!(/
|
|
333
|
+
user_data.gsub!(/SERVER_IP/, @server.data.private_ip_address)
|
|
334
|
+
user_data.gsub!(/SERVER_HOSTNAME/, 'openstudio.server')
|
|
335
|
+
user_data.gsub!(/WORKER_PUBLIC_KEY_TEMPLATE/, worker_keys.ssh_public_key)
|
|
301
336
|
logger.info("worker user_data #{user_data.inspect}")
|
|
302
337
|
|
|
303
338
|
# thread the launching of the workers
|
|
304
339
|
|
|
305
340
|
num.times do
|
|
306
|
-
@workers << OpenStudioAwsInstance.new(@aws, :worker, @key_pair_name, @
|
|
341
|
+
@workers << OpenStudioAwsInstance.new(@aws, :worker, @key_pair_name, @security_groups, @group_uuid,
|
|
307
342
|
@private_key, @private_key_file_name, @proxy)
|
|
308
343
|
end
|
|
309
344
|
|
|
@@ -321,15 +356,17 @@ class OpenStudioAwsWrapper
|
|
|
321
356
|
end
|
|
322
357
|
|
|
323
358
|
# blocking method that waits for servers and workers to be fully configured (i.e. execution of user_data has
|
|
324
|
-
# occured on all nodes)
|
|
359
|
+
# occured on all nodes). Ideally none of these methods would ever need to exist.
|
|
360
|
+
#
|
|
361
|
+
# @return [Boolean] Will return true unless an exception is raised
|
|
325
362
|
def configure_server_and_workers
|
|
326
363
|
logger.info('waiting for server user_data to complete')
|
|
327
364
|
@server.wait_command('[ -e /home/ubuntu/user_data_done ] && echo "true"')
|
|
328
365
|
logger.info('waiting for worker user_data to complete')
|
|
329
366
|
@workers.each { |worker| worker.wait_command('[ -e /home/ubuntu/user_data_done ] && echo "true"') }
|
|
330
367
|
|
|
331
|
-
ips = "master|#{@server.data.
|
|
332
|
-
@workers.each { |worker| ips << "worker|#{worker.data.
|
|
368
|
+
ips = "master|#{@server.data.private_ip_address}|#{@server.data.dns}|#{@server.data.procs}|ubuntu|ubuntu|true\n"
|
|
369
|
+
@workers.each { |worker| ips << "worker|#{worker.data.private_ip_address}|#{worker.data.dns}|#{worker.data.procs}|ubuntu|ubuntu|true\n" }
|
|
333
370
|
file = Tempfile.new('ip_addresses')
|
|
334
371
|
file.write(ips)
|
|
335
372
|
file.close
|
|
@@ -337,11 +374,9 @@ class OpenStudioAwsWrapper
|
|
|
337
374
|
file.unlink
|
|
338
375
|
logger.info("ips #{ips}")
|
|
339
376
|
@server.shell_command('chmod 664 /home/ubuntu/ip_addresses')
|
|
340
|
-
@server.shell_command('~/setup-ssh-keys.sh')
|
|
341
|
-
@server.shell_command('~/setup-ssh-worker-nodes.sh ip_addresses')
|
|
342
377
|
|
|
343
378
|
mongoid = File.read(File.expand_path(File.dirname(__FILE__)) + '/mongoid.yml.template')
|
|
344
|
-
mongoid.gsub!(/SERVER_IP/, @server.data.
|
|
379
|
+
mongoid.gsub!(/SERVER_IP/, @server.data.private_ip_address)
|
|
345
380
|
file = Tempfile.new('mongoid.yml')
|
|
346
381
|
file.write(mongoid)
|
|
347
382
|
file.close
|
|
@@ -352,8 +387,6 @@ class OpenStudioAwsWrapper
|
|
|
352
387
|
@server.shell_command('chmod 664 /mnt/openstudio/rails-models/mongoid.yml')
|
|
353
388
|
@workers.each { |worker| worker.shell_command('chmod 664 /mnt/openstudio/rails-models/mongoid.yml') }
|
|
354
389
|
|
|
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
|
|
357
390
|
true
|
|
358
391
|
end
|
|
359
392
|
|
|
@@ -361,25 +394,29 @@ class OpenStudioAwsWrapper
|
|
|
361
394
|
# if it is found, then it will set the @server member variable.
|
|
362
395
|
# Note that the information around keys and security groups is pulled from the instance information.
|
|
363
396
|
def find_server(server_data_hash)
|
|
364
|
-
group_uuid = server_data_hash[:group_id] || @group_uuid
|
|
397
|
+
@group_uuid = server_data_hash[:group_id] || @group_uuid
|
|
365
398
|
load_private_key(server_data_hash[:server][:private_key_file_name])
|
|
366
399
|
|
|
367
400
|
logger.info "finding the server for groupid of #{group_uuid}"
|
|
368
401
|
fail 'no group uuid defined either in member variable or method argument' if group_uuid.nil?
|
|
369
402
|
|
|
403
|
+
@server = nil
|
|
370
404
|
resp = describe_running_instances(group_uuid, :server)
|
|
371
405
|
if resp
|
|
372
406
|
fail "more than one server running with group uuid of #{group_uuid} found, expecting only one" if resp.size > 1
|
|
373
407
|
resp = resp.first
|
|
374
408
|
if !@server
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
409
|
+
if resp
|
|
410
|
+
logger.info "Server found and loading data into object [instance id is #{resp[:instance_id]}]"
|
|
411
|
+
@server = OpenStudioAwsInstance.new(@aws, :server, resp[:key_name], resp[:security_groups].first[:group_name], group_uuid, @private_key, @private_key_file_name, @proxy)
|
|
412
|
+
|
|
413
|
+
@server.load_instance_data(resp)
|
|
414
|
+
end
|
|
378
415
|
else
|
|
379
416
|
logger.info "Server instance is already defined with instance #{resp[:instance_id]}"
|
|
380
417
|
end
|
|
381
418
|
else
|
|
382
|
-
|
|
419
|
+
puts 'could not find a running server instance'
|
|
383
420
|
end
|
|
384
421
|
|
|
385
422
|
# Really don't need to return anything because this sets the class instance variable
|
|
@@ -437,7 +474,8 @@ class OpenStudioAwsWrapper
|
|
|
437
474
|
ip: "http://#{worker.data.ip}",
|
|
438
475
|
dns: worker.data.dns,
|
|
439
476
|
procs: worker.data.procs,
|
|
440
|
-
private_key_file_name: worker.private_key_file_name
|
|
477
|
+
private_key_file_name: worker.private_key_file_name,
|
|
478
|
+
private_ip_address: worker.private_ip_address
|
|
441
479
|
)
|
|
442
480
|
end
|
|
443
481
|
|
|
@@ -502,8 +540,13 @@ class OpenStudioAwsWrapper
|
|
|
502
540
|
a[:tested] = false
|
|
503
541
|
end
|
|
504
542
|
|
|
505
|
-
|
|
506
|
-
|
|
543
|
+
if ami[:tags_hash][:openstudio_version].to_version >= '1.6.0'
|
|
544
|
+
if ami[:name] =~ /Server/
|
|
545
|
+
a[:amis][:server] = ami[:image_id]
|
|
546
|
+
elsif ami[:name] =~ /Worker/
|
|
547
|
+
a[:amis][:worker] = ami[:image_id]
|
|
548
|
+
end
|
|
549
|
+
elsif ami[:tags_hash][:openstudio_version].to_version >= '1.5.0'
|
|
507
550
|
if ami[:name] =~ /Server/
|
|
508
551
|
a[:amis][:server] = ami[:image_id]
|
|
509
552
|
elsif ami[:name] =~ /Worker/
|