openstudio-aws 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +14 -13
- data/lib/openstudio-aws.rb +9 -7
- data/lib/openstudio/aws/aws.rb +53 -40
- data/lib/openstudio/aws/config.rb +0 -1
- data/lib/openstudio/aws/version.rb +2 -2
- data/lib/openstudio/lib/ami_list.rb +79 -0
- data/lib/openstudio/lib/openstudio_aws_instance.rb +138 -0
- data/lib/openstudio/lib/openstudio_aws_logger.rb +61 -0
- data/lib/openstudio/lib/openstudio_aws_methods.rb +232 -0
- data/lib/openstudio/lib/openstudio_aws_wrapper.rb +315 -0
- data/lib/openstudio/lib/os-aws.rb +77 -351
- data/spec/aws_instances/aws_spec_api.rb +70 -0
- data/spec/openstudio-aws/ami_list_spec.rb +37 -0
- data/spec/openstudio-aws/aws_methods_spec.rb +26 -0
- data/spec/openstudio-aws/lib_spec.rb +48 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-create-a-new-instance.xml +43 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Aws-workers-before-server.xml +9 -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.xml +9 -0
- data/spec/reports/SPEC-OpenStudio-Aws-Config.0.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.xml +13 -0
- data/spec/reports/SPEC-OpenStudioAmis.0.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAmis.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsMethods-processors.0.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.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.0.xml +11 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session-availability.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.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper-authenticated-session.0.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.xml +9 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.0.xml +7 -0
- data/spec/reports/SPEC-OpenStudioAwsWrapper.xml +7 -0
- metadata +70 -10
- data/lib/openstudio/aws/send_data.rb +0 -42
- data/spec/openstudio-aws/aws_spec.rb +0 -53
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OpenStudio::Aws::Aws do
|
4
|
+
context "create a new instance" do
|
5
|
+
before(:all) do
|
6
|
+
@config = OpenStudio::Aws::Config.new
|
7
|
+
@aws = OpenStudio::Aws::Aws.new
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should create a new instance" do
|
11
|
+
@aws.should_not be_nil
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should ask the user to create a new config file" do
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should create a server" do
|
18
|
+
# use the default instance type
|
19
|
+
options = {instance_type: "t1.micro", image_id: "ami-fb301292"}
|
20
|
+
|
21
|
+
#options = {instance_type: "m1.small" }
|
22
|
+
@aws.create_server(options)
|
23
|
+
expect(@aws.os_aws.server).not_to be_nil
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should create a 1 worker" do
|
27
|
+
options = {instance_type: "t1.micro", image_id: "ami-21301248"}
|
28
|
+
#options = {instance_type: "m1.small" }
|
29
|
+
#server_json[:instance_type] = "m2.4xlarge"
|
30
|
+
#server_json[:instance_type] = "m2.2xlarge"
|
31
|
+
#server_json[:instance_type] = "t1.micro"
|
32
|
+
|
33
|
+
@aws.create_workers(1, options)
|
34
|
+
|
35
|
+
expect(@aws.os_aws.workers).to have(1).thing
|
36
|
+
expect(@aws.os_aws.workers[0].data[:dns]).not_to be_nil
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should be able to connect a worker to an existing server" do
|
40
|
+
options = {instance_type: "t1.micro", image_id: "ami-a9e4ccc0"}
|
41
|
+
|
42
|
+
# will require a new @aws class--but attached to same group_uuid
|
43
|
+
@config = OpenStudio::Aws::Config.new
|
44
|
+
@aws_2 = OpenStudio::Aws::Aws.new
|
45
|
+
|
46
|
+
@aws_2.os_aws.find_server(@aws.os_aws.group_uuid)
|
47
|
+
|
48
|
+
expect(@aws.os_aws.server).not_to be_nil
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should kill running instances" do
|
52
|
+
# how to test this?
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "workers before server" do
|
57
|
+
before(:all) do
|
58
|
+
@aws = OpenStudio::Aws::Aws.new
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should not create any workers" do
|
62
|
+
expect { @aws.create_workers(5) }.to raise_error
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context "larger cluster" do
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OpenStudioAmis do
|
4
|
+
|
5
|
+
context "version 1" do
|
6
|
+
it "should default to an ami if nothing passed" do
|
7
|
+
a = OpenStudioAmis.new
|
8
|
+
amis = a.get_amis
|
9
|
+
|
10
|
+
expect(amis['server']).not_to be_nil
|
11
|
+
expect(amis['worker']).not_to be_nil
|
12
|
+
expect(amis['cc2worker']).not_to be_nil
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return specific amis if passed a version" do
|
16
|
+
a = OpenStudioAmis.new(1, "1.2.0", nil)
|
17
|
+
|
18
|
+
amis = a.get_amis
|
19
|
+
|
20
|
+
expect(amis['server']).to eq("ami-29e5cd40")
|
21
|
+
expect(amis['worker']).to eq("ami-a9e4ccc0")
|
22
|
+
expect(amis['cc2worker']).to eq("ami-5be4cc32")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should raise if passed an invalid version" do
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "version 2" do
|
31
|
+
it "should default the server version" do
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OpenStudioAwsMethods do
|
4
|
+
class DummyClass
|
5
|
+
end
|
6
|
+
|
7
|
+
before :each do
|
8
|
+
@dummy_class = DummyClass.new
|
9
|
+
@dummy_class.extend(OpenStudioAwsMethods)
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
context "processors" do
|
14
|
+
it "should default to 1 with a warning" do
|
15
|
+
r = @dummy_class.find_processors("unknowninstance")
|
16
|
+
expect(r).to eq(1)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should return known values for various instances" do
|
20
|
+
r = @dummy_class.find_processors("c3.8xlarge")
|
21
|
+
expect(r).to eq(16)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OpenStudioAwsWrapper do
|
4
|
+
context "unauthenticated session" do
|
5
|
+
it "should fail to authenticate" do
|
6
|
+
credentials = {:access_key_id => "blah", :secret_access_key => "key", :region => "us-east-1", :ssl_verify_peer => false}
|
7
|
+
@os_aws = OpenStudioAwsWrapper.new(credentials)
|
8
|
+
expect { @os_aws.describe_availability_zones }.to raise_exception
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context "authenticated session" do
|
13
|
+
before :all do
|
14
|
+
config = OpenStudio::Aws::Config.new
|
15
|
+
|
16
|
+
credentials = {:access_key_id => config.access_key, :secret_access_key => config.secret_key, :region => "us-east-1", :ssl_verify_peer => false}
|
17
|
+
@os_aws = OpenStudioAwsWrapper.new(credentials)
|
18
|
+
end
|
19
|
+
|
20
|
+
context "new instance" do
|
21
|
+
it "should be created" do
|
22
|
+
expect { @os_aws }.not_to be_nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "availability" do
|
27
|
+
it "should describe the zones" do
|
28
|
+
resp = @os_aws.describe_availability_zones
|
29
|
+
expect { resp }.not_to be_nil
|
30
|
+
resp[:availability_zone_info].length.should eq(4)
|
31
|
+
|
32
|
+
resp[:availability_zone_info].inspect.should eq("[{:zone_name=>\"us-east-1a\", :state=>\"available\", :region_name=>\"us-east-1\", :messages=>[]}, {:zone_name=>\"us-east-1b\", :state=>\"available\", :region_name=>\"us-east-1\", :messages=>[]}, {:zone_name=>\"us-east-1c\", :state=>\"available\", :region_name=>\"us-east-1\", :messages=>[]}, {:zone_name=>\"us-east-1d\", :state=>\"available\", :region_name=>\"us-east-1\", :messages=>[]}]")
|
33
|
+
|
34
|
+
resp = @os_aws.describe_availability_zones_json
|
35
|
+
expect { resp }.not_to be_nil
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should list number of instances" do
|
40
|
+
resp = @os_aws.describe_total_instances
|
41
|
+
expect { resp }.not_to be_nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudio::Aws::Aws create a new instance" tests="6" time="767.414597" failures="0" errors="2" skipped="0">
|
3
|
+
<testcase name="OpenStudio::Aws::Aws create a new instance should create a new instance" time="0.00136">
|
4
|
+
</testcase>
|
5
|
+
<testcase name="OpenStudio::Aws::Aws create a new instance should ask the user to create a new config file" time="9.7e-05">
|
6
|
+
</testcase>
|
7
|
+
<testcase name="OpenStudio::Aws::Aws create a new instance should create a server" time="87.80665">
|
8
|
+
</testcase>
|
9
|
+
<testcase name="OpenStudio::Aws::Aws create a new instance should create a 1 worker" time="678.844013">
|
10
|
+
<failure type="NoMethodError" message="undefined method `ip' for #<OpenStudioAwsInstance:0x007f926e1a2900>">
|
11
|
+
undefined method `ip' for #<OpenStudioAwsInstance:0x007f926e1a2900> (NoMethodError)
|
12
|
+
NoMethodError:
|
13
|
+
undefined method `ip' for #<OpenStudioAwsInstance:0x007f926e1a2900>
|
14
|
+
./lib/openstudio/lib/openstudio_aws_wrapper.rb:249:in `configure_server_and_workers'
|
15
|
+
./lib/openstudio/aws/aws.rb:91:in `create_workers'
|
16
|
+
./spec/aws_instances/aws_spec_api.rb:33:in `block (3 levels) in <top (required)>' </failure>
|
17
|
+
</testcase>
|
18
|
+
<testcase name="OpenStudio::Aws::Aws create a new instance should be able to connect a worker to an existing server" time="0.70369">
|
19
|
+
<failure type="ArgumentError" message="wrong number of arguments (5 for 6)">
|
20
|
+
wrong number of arguments (5 for 6) (ArgumentError)
|
21
|
+
ArgumentError:
|
22
|
+
wrong number of arguments (5 for 6)
|
23
|
+
./lib/openstudio/lib/openstudio_aws_instance.rb:32:in `initialize'
|
24
|
+
./lib/openstudio/lib/openstudio_aws_wrapper.rb:287:in `new'
|
25
|
+
./lib/openstudio/lib/openstudio_aws_wrapper.rb:287:in `find_server'
|
26
|
+
./spec/aws_instances/aws_spec_api.rb:46:in `block (3 levels) in <top (required)>' </failure>
|
27
|
+
</testcase>
|
28
|
+
<testcase name="OpenStudio::Aws::Aws create a new instance should kill running instances" time="0.000119">
|
29
|
+
</testcase>
|
30
|
+
<system-out>
|
31
|
+
{"timestamp":"1389645426","server":{"id":"i-ad7ba783","ip":"http://54.227.167.113","dns":"ec2-54-227-167-113.compute-1.amazonaws.com","procs":1}}
|
32
|
+
|
33
|
+
Server SSH Command:
|
34
|
+
ssh -i ec2_server_key.pem ubuntu@ec2-54-227-167-113.compute-1.amazonaws.com
|
35
|
+
|
36
|
+
Worker SSH Command:
|
37
|
+
ssh -i ec2_server_key.pem ubuntu@ec2-54-204-155-209.compute-1.amazonaws.com
|
38
|
+
|
39
|
+
Waiting for server/worker configurations
|
40
|
+
</system-out>
|
41
|
+
<system-err>
|
42
|
+
</system-err>
|
43
|
+
</testsuite>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudio::Aws::Aws workers before server" tests="1" time="0.004718" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudio::Aws::Aws workers before server should not create any workers" time="0.000853">
|
4
|
+
</testcase>
|
5
|
+
<system-out>
|
6
|
+
</system-out>
|
7
|
+
<system-err>
|
8
|
+
</system-err>
|
9
|
+
</testsuite>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudio::Aws::Config create a new config" tests="1" time="0.000619" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudio::Aws::Config create a new config should create a new instance" time="0.000477">
|
4
|
+
</testcase>
|
5
|
+
<system-out>
|
6
|
+
</system-out>
|
7
|
+
<system-err>
|
8
|
+
</system-err>
|
9
|
+
</testsuite>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudio::Aws::Config create a new config" tests="1" time="0.000624" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudio::Aws::Config create a new config should create a new instance" time="0.000456">
|
4
|
+
</testcase>
|
5
|
+
<system-out>
|
6
|
+
</system-out>
|
7
|
+
<system-err>
|
8
|
+
</system-err>
|
9
|
+
</testsuite>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudioAmis version 1" tests="2" time="0.013878" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudioAmis version 1 should default to an ami if nothing passed" time="0.007389">
|
4
|
+
</testcase>
|
5
|
+
<testcase name="OpenStudioAmis version 1 should return specific amis if passed a version" time="0.006203">
|
6
|
+
</testcase>
|
7
|
+
<system-out>
|
8
|
+
{"server"=>"ami-29e5cd40", "worker"=>"ami-a9e4ccc0", "cc2worker"=>"ami-5be4cc32"}
|
9
|
+
{"server"=>"ami-29e5cd40", "worker"=>"ami-a9e4ccc0", "cc2worker"=>"ami-5be4cc32"}
|
10
|
+
</system-out>
|
11
|
+
<system-err>
|
12
|
+
</system-err>
|
13
|
+
</testsuite>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudioAmis version 1" tests="2" time="0.020436" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudioAmis version 1 should default to an ami if nothing passed" time="0.012969">
|
4
|
+
</testcase>
|
5
|
+
<testcase name="OpenStudioAmis version 1 should return specific amis if passed a version" time="0.007211">
|
6
|
+
</testcase>
|
7
|
+
<system-out>
|
8
|
+
{"server"=>"ami-29e5cd40", "worker"=>"ami-a9e4ccc0", "cc2worker"=>"ami-5be4cc32"}
|
9
|
+
{"server"=>"ami-29e5cd40", "worker"=>"ami-a9e4ccc0", "cc2worker"=>"ami-5be4cc32"}
|
10
|
+
</system-out>
|
11
|
+
<system-err>
|
12
|
+
</system-err>
|
13
|
+
</testsuite>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudioAwsMethods processors" tests="2" time="0.000455" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudioAwsMethods processors should default to 1 with a warning" time="0.000173">
|
4
|
+
</testcase>
|
5
|
+
<testcase name="OpenStudioAwsMethods processors should return known values for various instances" time="0.000121">
|
6
|
+
</testcase>
|
7
|
+
<system-out>
|
8
|
+
</system-out>
|
9
|
+
<system-err>
|
10
|
+
</system-err>
|
11
|
+
</testsuite>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudioAwsMethods processors" tests="2" time="0.000467" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudioAwsMethods processors should default to 1 with a warning" time="0.000161">
|
4
|
+
</testcase>
|
5
|
+
<testcase name="OpenStudioAwsMethods processors should return known values for various instances" time="0.000126">
|
6
|
+
</testcase>
|
7
|
+
<system-out>
|
8
|
+
</system-out>
|
9
|
+
<system-err>
|
10
|
+
</system-err>
|
11
|
+
</testsuite>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudioAwsWrapper authenticated session availability" tests="2" time="0.871159" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudioAwsWrapper authenticated session availability should describe the zones" time="0.508461">
|
4
|
+
</testcase>
|
5
|
+
<testcase name="OpenStudioAwsWrapper authenticated session availability should list number of instances" time="0.362309">
|
6
|
+
</testcase>
|
7
|
+
<system-out>
|
8
|
+
</system-out>
|
9
|
+
<system-err>
|
10
|
+
</system-err>
|
11
|
+
</testsuite>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudioAwsWrapper authenticated session availability" tests="2" time="1.218258" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudioAwsWrapper authenticated session availability should describe the zones" time="0.655451">
|
4
|
+
</testcase>
|
5
|
+
<testcase name="OpenStudioAwsWrapper authenticated session availability should list number of instances" time="0.562497">
|
6
|
+
</testcase>
|
7
|
+
<system-out>
|
8
|
+
</system-out>
|
9
|
+
<system-err>
|
10
|
+
</system-err>
|
11
|
+
</testsuite>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudioAwsWrapper authenticated session new instance" tests="1" time="0.00027" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudioAwsWrapper authenticated session new instance should be created" time="0.000146">
|
4
|
+
</testcase>
|
5
|
+
<system-out>
|
6
|
+
</system-out>
|
7
|
+
<system-err>
|
8
|
+
</system-err>
|
9
|
+
</testsuite>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudioAwsWrapper authenticated session new instance" tests="1" time="0.00028" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudioAwsWrapper authenticated session new instance should be created" time="0.000152">
|
4
|
+
</testcase>
|
5
|
+
<system-out>
|
6
|
+
</system-out>
|
7
|
+
<system-err>
|
8
|
+
</system-err>
|
9
|
+
</testsuite>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<testsuite name="OpenStudioAwsWrapper unauthenticated session" tests="1" time="0.864671" failures="0" errors="0" skipped="0">
|
3
|
+
<testcase name="OpenStudioAwsWrapper unauthenticated session should fail to authenticate" time="0.864502">
|
4
|
+
</testcase>
|
5
|
+
<system-out>
|
6
|
+
</system-out>
|
7
|
+
<system-err>
|
8
|
+
</system-err>
|
9
|
+
</testsuite>
|