openstudio-aws 0.1.26 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/Rakefile +33 -34
- data/lib/openstudio/aws/aws.rb +148 -24
- data/lib/openstudio/aws/config.rb +1 -0
- data/lib/openstudio/aws/version.rb +1 -1
- data/lib/openstudio/lib/ami_list.rb +1 -1
- data/lib/openstudio/lib/openstudio_aws_instance.rb +260 -26
- data/lib/openstudio/lib/openstudio_aws_logger.rb +0 -18
- data/lib/openstudio/lib/openstudio_aws_wrapper.rb +111 -75
- data/lib/openstudio/lib/os-aws.rb +14 -6
- data/lib/openstudio/lib/server_script.sh +40 -26
- data/lib/openstudio/lib/worker_script.sh.template +26 -16
- data/lib/openstudio-aws.rb +2 -0
- data/spec/aws_instances/aws_spec_api.rb +80 -4
- data/spec/openstudio-aws/aws_instance_spec.rb +19 -0
- data/spec/openstudio-aws/aws_spec.rb +32 -11
- data/spec/openstudio-aws/aws_wrapper_spec.rb +5 -5
- data/spec/openstudio-aws/config_spec.rb +1 -1
- 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 +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.11.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.12.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.13.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.2.xml +11 -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 +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.9.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-ami-lists.xml +11 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-a-new-instance.0.xml +26 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-a-new-instance.xml +35 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-ebs-storage.0.xml +14 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-ebs-storage.xml +14 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.0.xml +14 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.1.xml +21 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-custom-keys.2.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.xml +16 -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.2.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.2.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.2.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-workers-before-server.0.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-workers-before-server.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.2.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.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.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 +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.1.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.10.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.11.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.12.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.13.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.2.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.3.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.4.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.5.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.6.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.7.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.8.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-1.9.xml +13 -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 +9 -0
- data/spec/reports/SPEC-OpenStudioAmis-version-2.2.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.2.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 +21 -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.2.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsInstance-processors.3.xml +25 -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 +25 -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.2.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-OpenStudioAwsMethods-processors.0.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsMethods-processors.1.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsMethods-processors.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsMethods.0.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsMethods.1.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsMethods.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.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 +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.2.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.2.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-create-new-ami-json.3.xml +11 -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 +9 -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.2.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 +103 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.1.xml +103 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.10.xml +107 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.11.xml +107 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.12.xml +107 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.2.xml +103 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.3.xml +103 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.4.xml +107 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.5.xml +107 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.6.xml +107 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.7.xml +107 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.8.xml +107 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.9.xml +107 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-1.xml +103 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.0.xml +1111 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.1.xml +1111 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.10.xml +1113 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.11.xml +1113 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.12.xml +1133 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.2.xml +1111 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.3.xml +1111 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.4.xml +1113 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.5.xml +1113 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.6.xml +1113 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.7.xml +1113 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.8.xml +1113 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.9.xml +1113 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-version-2.xml +1111 -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.2.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.2.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.2.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
- data/spec/resources/upload_me.sh +5 -0
- metadata +664 -7
- data/lib/openstudio/lib/openstudio_aws_methods.rb +0 -237
- data/spec/openstudio-aws/aws_methods_spec.rb +0 -24
@@ -18,29 +18,76 @@
|
|
18
18
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
19
19
|
######################################################################
|
20
20
|
|
21
|
-
require 'securerandom'
|
22
|
-
require_relative 'openstudio_aws_logger'
|
23
|
-
require_relative 'openstudio_aws_methods'
|
24
|
-
|
25
21
|
class OpenStudioAwsInstance
|
26
22
|
include Logging
|
27
|
-
include OpenStudioAwsMethods
|
28
23
|
|
29
24
|
attr_reader :openstudio_instance_type
|
30
25
|
attr_reader :data
|
26
|
+
attr_reader :private_key_file_name
|
27
|
+
attr_reader :group_uuid
|
31
28
|
|
32
|
-
def initialize(aws_session, openstudio_instance_type, key_pair_name, security_group_name, group_uuid, private_key, proxy = nil,
|
29
|
+
def initialize(aws_session, openstudio_instance_type, key_pair_name, security_group_name, group_uuid, private_key, private_key_file_name, proxy = nil, _options = {})
|
33
30
|
@data = nil # stored information about the instance
|
34
31
|
@aws = aws_session
|
35
32
|
@openstudio_instance_type = openstudio_instance_type # :server, :worker
|
36
33
|
@key_pair_name = key_pair_name
|
37
34
|
@security_group_name = security_group_name
|
38
35
|
@group_uuid = group_uuid.to_s
|
36
|
+
@init_timestamp = Time.now # This is the timestamp and is typically just tracked for the server
|
39
37
|
@private_key = private_key
|
38
|
+
@private_key_file_name = private_key_file_name
|
40
39
|
@proxy = proxy
|
40
|
+
|
41
|
+
# Important System information
|
42
|
+
@host = nil
|
43
|
+
@instance_id = nil
|
44
|
+
@user = 'ubuntu'
|
41
45
|
end
|
42
46
|
|
43
|
-
def
|
47
|
+
def create_and_attach_volume(size, instance_id, availability_zone)
|
48
|
+
options = {
|
49
|
+
size: size,
|
50
|
+
# required
|
51
|
+
availability_zone: availability_zone,
|
52
|
+
volume_type: 'standard'
|
53
|
+
# encrypted: true
|
54
|
+
}
|
55
|
+
resp = @aws.create_volume(options).to_hash
|
56
|
+
|
57
|
+
# get the instance information
|
58
|
+
test_result = @aws.describe_volumes(volume_ids: [resp[:volume_id]])
|
59
|
+
puts test_result
|
60
|
+
begin
|
61
|
+
Timeout.timeout(600) { # 10 minutes
|
62
|
+
while test_result.nil? || test_result.instance_state.name != 'available'
|
63
|
+
# refresh the server instance information
|
64
|
+
|
65
|
+
sleep 5
|
66
|
+
test_result = @aws.describe_volumes(volume_ids: [resp[:volume_id]])
|
67
|
+
logger.info '... waiting for EBS volume to be available ...'
|
68
|
+
end
|
69
|
+
}
|
70
|
+
rescue TimeoutError
|
71
|
+
raise "EBS volume was unable to be created due to timeout #{instance_id}"
|
72
|
+
end
|
73
|
+
|
74
|
+
# need to wait until it is available
|
75
|
+
|
76
|
+
@aws.attach_volume(
|
77
|
+
|
78
|
+
volume_id: resp[:volume_id],
|
79
|
+
instance_id: instance_id,
|
80
|
+
# required
|
81
|
+
device: '/dev/sdh'
|
82
|
+
|
83
|
+
)
|
84
|
+
|
85
|
+
# Wait for the volume to attach
|
86
|
+
|
87
|
+
# true?
|
88
|
+
end
|
89
|
+
|
90
|
+
def launch_instance(image_id, instance_type, user_data, user_id, ebs_volume_size = nil)
|
44
91
|
# logger.info("user_data #{user_data.inspect}")
|
45
92
|
instance = {
|
46
93
|
image_id: image_id,
|
@@ -48,10 +95,12 @@ class OpenStudioAwsInstance
|
|
48
95
|
security_groups: [@security_group_name],
|
49
96
|
user_data: Base64.encode64(user_data),
|
50
97
|
instance_type: instance_type,
|
98
|
+
placement: {
|
99
|
+
availability_zone: 'us-east-1c'
|
100
|
+
},
|
51
101
|
min_count: 1,
|
52
102
|
max_count: 1
|
53
103
|
}
|
54
|
-
# logger.info instance.inspect
|
55
104
|
result = @aws.run_instances(instance)
|
56
105
|
|
57
106
|
# determine how many processors are suppose to be in this image (lookup for now?)
|
@@ -60,22 +109,20 @@ class OpenStudioAwsInstance
|
|
60
109
|
# only asked for 1 instance, so therefore it should be the first
|
61
110
|
aws_instance = result.data.instances.first
|
62
111
|
@aws.create_tags(
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
]
|
72
|
-
|
112
|
+
resources: [aws_instance.instance_id],
|
113
|
+
tags: [
|
114
|
+
{ key: 'Name', value: "OpenStudio-#{@openstudio_instance_type.capitalize}" }, # todo: abstract out the server and version
|
115
|
+
{ key: 'GroupUUID', value: @group_uuid },
|
116
|
+
{ key: 'NumberOfProcessors', value: processors.to_s },
|
117
|
+
{ key: 'Purpose', value: "OpenStudio#{@openstudio_instance_type.capitalize}" },
|
118
|
+
{ key: 'UserID', value: user_id }
|
119
|
+
]
|
73
120
|
)
|
74
121
|
|
75
122
|
# get the instance information
|
76
123
|
test_result = @aws.describe_instance_status(instance_ids: [aws_instance.instance_id]).data.instance_statuses.first
|
77
124
|
begin
|
78
|
-
Timeout.timeout(600) {# 10 minutes
|
125
|
+
Timeout.timeout(600) { # 10 minutes
|
79
126
|
while test_result.nil? || test_result.instance_state.name != 'running'
|
80
127
|
# refresh the server instance information
|
81
128
|
|
@@ -85,7 +132,11 @@ class OpenStudioAwsInstance
|
|
85
132
|
end
|
86
133
|
}
|
87
134
|
rescue TimeoutError
|
88
|
-
raise "
|
135
|
+
raise "Instance was unable to launch due to timeout #{aws_instance.instance_id}"
|
136
|
+
end
|
137
|
+
|
138
|
+
if ebs_volume_size
|
139
|
+
create_and_attach_volume(ebs_volume_size, aws_instance.instance_id, aws_instance.placement.availability_zone)
|
89
140
|
end
|
90
141
|
|
91
142
|
# now grab information about the instance
|
@@ -108,14 +159,19 @@ class OpenStudioAwsInstance
|
|
108
159
|
h = ''
|
109
160
|
if @openstudio_instance_type == :server
|
110
161
|
h = {
|
111
|
-
|
112
|
-
|
162
|
+
group_id: @group_uuid,
|
163
|
+
timestamp: @init_timestamp.to_i,
|
164
|
+
time_created: @init_timestamp.to_s,
|
165
|
+
# private_key_path: "#{File.expand_path(@private_key_path)}"
|
166
|
+
#:private_key => @private_key, # need to stop printing this out
|
167
|
+
location: 'AWS',
|
113
168
|
server: {
|
114
169
|
id: @data.id,
|
115
170
|
ip: 'http://' + @data.ip,
|
116
171
|
dns: @data.dns,
|
117
|
-
procs: @data.procs
|
118
|
-
|
172
|
+
procs: @data.procs,
|
173
|
+
private_key_file_name: @private_key_file_name
|
174
|
+
}
|
119
175
|
}
|
120
176
|
else
|
121
177
|
fail 'do not know how to convert :worker instance to_os_hash. Use the os_aws.to_worker_hash method'
|
@@ -126,12 +182,190 @@ class OpenStudioAwsInstance
|
|
126
182
|
h
|
127
183
|
end
|
128
184
|
|
185
|
+
def find_processors(instance)
|
186
|
+
lookup = {
|
187
|
+
'm3.medium' => 1,
|
188
|
+
'm3.large' => 2,
|
189
|
+
'm3.xlarge' => 4,
|
190
|
+
'm3.2xlarge' => 8,
|
191
|
+
'c3.large' => 2,
|
192
|
+
'c3.xlarge' => 4,
|
193
|
+
'c3.2xlarge' => 8,
|
194
|
+
'c3.4xlarge' => 16,
|
195
|
+
'c3.8xlarge' => 32,
|
196
|
+
'r3.large' => 2,
|
197
|
+
'r3.xlarge' => 4,
|
198
|
+
'r3.2xlarge' => 8,
|
199
|
+
'r3.4xlarge' => 16,
|
200
|
+
'r3.8xlarge' => 32,
|
201
|
+
't1.micro' => 1,
|
202
|
+
'm1.small' => 1,
|
203
|
+
'm2.2xlarge' => 4,
|
204
|
+
'm2.4xlarge' => 8,
|
205
|
+
}
|
206
|
+
|
207
|
+
processors = 1
|
208
|
+
if lookup.key?(instance)
|
209
|
+
processors = lookup[instance]
|
210
|
+
else
|
211
|
+
# logger.warn "Could not find the number of processors for instance type of #{instance}" if logger
|
212
|
+
end
|
213
|
+
|
214
|
+
if @openstudio_instance_type == :server
|
215
|
+
# take out 3 of the processors for doing work with a max of 1 to work
|
216
|
+
# 1 for server
|
217
|
+
# 1 for mongodb
|
218
|
+
# 1 for child processes to download files
|
219
|
+
processors = [processors - 2, 1].max # this is 2 for now because the current server decrements by 1 (which will be removed if 2.0-pre6)
|
220
|
+
end
|
221
|
+
|
222
|
+
processors
|
223
|
+
end
|
224
|
+
|
225
|
+
def get_proxy
|
226
|
+
proxy = nil
|
227
|
+
if @proxy
|
228
|
+
if @proxy[:username]
|
229
|
+
proxy = Net::SSH::Proxy::HTTP.new(@proxy[:host], @proxy[:port], user: @proxy[:username], password: proxy[:password])
|
230
|
+
else
|
231
|
+
proxy = Net::SSH::Proxy::HTTP.new(@proxy[:host], @proxy[:port])
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
proxy
|
236
|
+
end
|
237
|
+
|
238
|
+
def upload_file(local_path, remote_path)
|
239
|
+
retries = 0
|
240
|
+
begin
|
241
|
+
Net::SCP.start(@data.ip, @user, proxy: get_proxy, key_data: [@private_key]) do |scp|
|
242
|
+
scp.upload! local_path, remote_path
|
243
|
+
end
|
244
|
+
rescue SystemCallError, Timeout::Error => e
|
245
|
+
# port 22 might not be available immediately after the instance finishes launching
|
246
|
+
return if retries == 5
|
247
|
+
retries += 1
|
248
|
+
sleep 1
|
249
|
+
retry
|
250
|
+
rescue
|
251
|
+
# Unknown upload error, retry
|
252
|
+
return if retries == 5
|
253
|
+
retries += 1
|
254
|
+
sleep 1
|
255
|
+
retry
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
# Send a command through SSH Shell to an instance.
|
260
|
+
# Need to pass the command as a string.
|
261
|
+
def shell_command(command, load_env = true)
|
262
|
+
logger.info("ssh_command #{command} with load environment #{load_env}")
|
263
|
+
command = "source /etc/profile; source ~/.bash_profile; #{command}" if load_env
|
264
|
+
Net::SSH.start(@data.ip, @user, proxy: get_proxy, key_data: [@private_key]) do |ssh|
|
265
|
+
channel = ssh.open_channel do |ch|
|
266
|
+
ch.exec "#{command}" do |ch, success|
|
267
|
+
fail "could not execute #{command}" unless success
|
268
|
+
# "on_data" is called when the process wr_ites something to stdout
|
269
|
+
ch.on_data do |_c, data|
|
270
|
+
# $stdout.print data
|
271
|
+
logger.info("#{data.inspect}")
|
272
|
+
end
|
273
|
+
# "on_extended_data" is called when the process writes something to s_tde_rr
|
274
|
+
ch.on_extended_data do |_c, _type, data|
|
275
|
+
# $stderr.print data
|
276
|
+
logger.info("#{data.inspect}")
|
277
|
+
end
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
rescue Net::SSH::HostKeyMismatch => e
|
282
|
+
e.remember_host!
|
283
|
+
logger.info('key mismatch, retry')
|
284
|
+
sleep 1
|
285
|
+
retry
|
286
|
+
rescue SystemCallError, Timeout::Error => e
|
287
|
+
# port 22 might not be available immediately after the instance finishes launching
|
288
|
+
sleep 1
|
289
|
+
logger.info('SystemCallError, Waiting for SSH to become available')
|
290
|
+
retry
|
291
|
+
end
|
292
|
+
|
293
|
+
def wait_command(command)
|
294
|
+
flag = 0
|
295
|
+
while flag == 0
|
296
|
+
logger.info("wait_command #{command}")
|
297
|
+
Net::SSH.start(@data.ip, @user, proxy: get_proxy, key_data: [@private_key]) do |ssh|
|
298
|
+
channel = ssh.open_channel do |ch|
|
299
|
+
ch.exec "#{command}" do |ch, success|
|
300
|
+
fail "could not execute #{command}" unless success
|
301
|
+
# "on_data" is called_ when the process writes something to stdout
|
302
|
+
ch.on_data do |_c, data|
|
303
|
+
logger.info("#{data.inspect}")
|
304
|
+
if data.chomp == 'true'
|
305
|
+
logger.info("wait_command #{command} is true")
|
306
|
+
flag = 1
|
307
|
+
else
|
308
|
+
sleep 10
|
309
|
+
end
|
310
|
+
end
|
311
|
+
# "on_extended_data" is called when the process writes some_thi_ng to stderr
|
312
|
+
ch.on_extended_data do |_c, _type, data|
|
313
|
+
logger.info("#{data.inspect}")
|
314
|
+
if data == 'true'
|
315
|
+
logger.info("wait_command #{command} is true")
|
316
|
+
flag = 1
|
317
|
+
else
|
318
|
+
sleep 10
|
319
|
+
end
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
324
|
+
end
|
325
|
+
rescue Net::SSH::HostKeyMismatch => e
|
326
|
+
e.remember_host!
|
327
|
+
logger.info('key mismatch, retry')
|
328
|
+
sleep 10
|
329
|
+
retry
|
330
|
+
rescue SystemCallError, Timeout::Error => e
|
331
|
+
# port 22 might not be available immediately after the instance finishes launching
|
332
|
+
sleep 10
|
333
|
+
logger.info('Timeout. Perhaps there is a communication error to EC2? Will try again')
|
334
|
+
retry
|
335
|
+
end
|
336
|
+
|
337
|
+
def download_file(remote_path, local_path)
|
338
|
+
retries = 0
|
339
|
+
begin
|
340
|
+
Net::SCP.start(@data.ip, @user, proxy: get_proxy, key_data: [@private_key]) do |scp|
|
341
|
+
scp.download! remote_path, local_path
|
342
|
+
end
|
343
|
+
rescue SystemCallError, Timeout::Error => e
|
344
|
+
# port 22 might not be available immediately after the instance finishes launching
|
345
|
+
return if retries == 5
|
346
|
+
retries += 1
|
347
|
+
sleep 1
|
348
|
+
retry
|
349
|
+
rescue
|
350
|
+
return if retries == 5
|
351
|
+
retries += 1
|
352
|
+
sleep 1
|
353
|
+
retry
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
129
357
|
private
|
130
358
|
|
131
|
-
# store the data into a custom struct. The instance is the full description. The remaining fields are
|
359
|
+
# store some of the data into a custom struct. The instance is the full description. The remaining fields are
|
132
360
|
# just easier accessors to the data in the raw request except for procs which is a custom request.
|
133
361
|
def create_struct(instance, procs)
|
134
362
|
instance_struct = Struct.new(:instance, :id, :ip, :dns, :procs)
|
135
|
-
instance_struct.new(instance, instance[:instance_id], instance[:public_ip_address], instance[:public_dns_name], procs)
|
363
|
+
s = instance_struct.new(instance, instance[:instance_id], instance[:public_ip_address], instance[:public_dns_name], procs)
|
364
|
+
|
365
|
+
# store some values into the member variables
|
366
|
+
@ip_address = instance[:public_ip_address]
|
367
|
+
@instance_id = instance[:instance_id]
|
368
|
+
|
369
|
+
s
|
136
370
|
end
|
137
371
|
end
|
@@ -18,24 +18,6 @@
|
|
18
18
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
19
19
|
######################################################################
|
20
20
|
|
21
|
-
######################################################################
|
22
|
-
# == Synopsis
|
23
|
-
#
|
24
|
-
# Uses the aws-sdk gem to communicate with AWS
|
25
|
-
#
|
26
|
-
# == Usage
|
27
|
-
#
|
28
|
-
# ruby aws.rb access_key secret_key us-east-1 EC2 launch_server "{\"instance_type\":\"t1.micro\"}"
|
29
|
-
#
|
30
|
-
# ARGV[0] - Access Key
|
31
|
-
# ARGV[1] - Secret Key
|
32
|
-
# ARGV[2] - Region
|
33
|
-
# ARGV[3] - Service (e.g. "EC2" or "CloudWatch")
|
34
|
-
# ARGV[4] - Command (e.g. "launch_server")
|
35
|
-
# ARGV[5] - Optional json with parameters associated with command
|
36
|
-
#
|
37
|
-
######################################################################
|
38
|
-
|
39
21
|
require 'logger'
|
40
22
|
|
41
23
|
# module for logging
|