openstudio-aws 0.2.5 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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/
|