vagrant-aws 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +11 -2
- data/CHANGELOG.md +3 -0
- data/Gemfile +8 -2
- data/LICENSE +8 -0
- data/README.md +192 -65
- data/Rakefile +18 -7
- data/dummy.box +0 -0
- data/example_box/README.md +13 -0
- data/example_box/metadata.json +3 -0
- data/lib/vagrant-aws.rb +17 -13
- data/lib/vagrant-aws/action.rb +107 -0
- data/lib/vagrant-aws/action/connect_aws.rb +38 -0
- data/lib/vagrant-aws/action/is_created.rb +18 -0
- data/lib/vagrant-aws/action/message_already_created.rb +16 -0
- data/lib/vagrant-aws/action/message_not_created.rb +16 -0
- data/lib/vagrant-aws/action/read_ssh_info.rb +47 -0
- data/lib/vagrant-aws/action/read_state.rb +38 -0
- data/lib/vagrant-aws/action/run_instance.rb +148 -0
- data/lib/vagrant-aws/action/sync_folders.rb +57 -0
- data/lib/vagrant-aws/action/terminate_instance.rb +26 -0
- data/lib/vagrant-aws/action/timed_provision.rb +21 -0
- data/lib/vagrant-aws/action/warn_networks.rb +19 -0
- data/lib/vagrant-aws/config.rb +253 -38
- data/lib/vagrant-aws/errors.rb +15 -25
- data/lib/vagrant-aws/plugin.rb +73 -0
- data/lib/vagrant-aws/provider.rb +50 -0
- data/lib/vagrant-aws/util/timer.rb +17 -0
- data/lib/vagrant-aws/version.rb +4 -2
- data/locales/en.yml +65 -61
- data/spec/vagrant-aws/config_spec.rb +161 -0
- data/vagrant-aws.gemspec +54 -25
- metadata +79 -86
- data/lib/vagrant-aws/action/create.rb +0 -56
- data/lib/vagrant-aws/action/create_image.rb +0 -106
- data/lib/vagrant-aws/action/create_sshkey.rb +0 -39
- data/lib/vagrant-aws/action/deregister_image.rb +0 -27
- data/lib/vagrant-aws/action/populate_ssh.rb +0 -41
- data/lib/vagrant-aws/action/prepare_provisioners.rb +0 -127
- data/lib/vagrant-aws/action/resume.rb +0 -20
- data/lib/vagrant-aws/action/suspend.rb +0 -20
- data/lib/vagrant-aws/action/terminate.rb +0 -21
- data/lib/vagrant-aws/box.rb +0 -20
- data/lib/vagrant-aws/box_collection.rb +0 -15
- data/lib/vagrant-aws/command.rb +0 -186
- data/lib/vagrant-aws/environment.rb +0 -79
- data/lib/vagrant-aws/middleware.rb +0 -53
- data/lib/vagrant-aws/system.rb +0 -24
- data/lib/vagrant-aws/vm.rb +0 -94
- data/lib/vagrant_init.rb +0 -4
- data/test/test_helper.rb +0 -24
- data/test/vagrant-aws/action/create_image_test.rb +0 -63
- data/test/vagrant-aws/action/create_ssh_key_test.rb +0 -43
- data/test/vagrant-aws/action/create_test.rb +0 -65
- data/test/vagrant-aws/action/terminate_test.rb +0 -20
- data/test/vagrant-aws/command_test.rb +0 -21
- data/test/vagrant-aws/config_test.rb +0 -14
data/lib/vagrant_init.rb
DELETED
data/test/test_helper.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'contest'
|
3
|
-
require 'mocha'
|
4
|
-
require 'vagrant-aws'
|
5
|
-
|
6
|
-
Fog.mock!
|
7
|
-
|
8
|
-
module Vagrant
|
9
|
-
module TestHelpers
|
10
|
-
|
11
|
-
# Creates and _loads_ a Vagrant environment at the given path.
|
12
|
-
# If no path is given, then a default {#vagrantfile} is used.
|
13
|
-
def vagrant_env(*args)
|
14
|
-
path = args.shift if Pathname === args.first
|
15
|
-
path ||= vagrantfile
|
16
|
-
VagrantAWS::Environment.new(:cwd => path).load!
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
class Test::Unit::TestCase
|
23
|
-
include Vagrant::TestHelpers
|
24
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class CreateImageTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
setup do
|
6
|
-
@app, @env = action_env
|
7
|
-
|
8
|
-
@env.env.vm = VagrantAWS::VM.new(:env => @env.env, :name => "default")
|
9
|
-
@middleware = VagrantAWS::Action::CreateImage.new(@app, @env)
|
10
|
-
|
11
|
-
@env["vm"].expects(:created?).returns(true)
|
12
|
-
|
13
|
-
@env["vm"].vm = @env["vm"].connection.servers.create
|
14
|
-
@env["vm"].vm.root_device_type = "ebs" # Fog mock instances are "instance-store" by default
|
15
|
-
|
16
|
-
@env["vm"].connection.data[:images] = { "notused" => { "imageId" => @env["vm"].vm.image_id }}
|
17
|
-
end
|
18
|
-
|
19
|
-
should "return error if instance not running" do
|
20
|
-
@env["vm"].vm.stubs(:running?).returns(false)
|
21
|
-
assert_raise(Vagrant::Errors::VMNotRunningError) do
|
22
|
-
@middleware.call(@env)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context "instance running" do
|
27
|
-
setup do
|
28
|
-
@env["vm"].vm.stubs(:running?).returns(true)
|
29
|
-
end
|
30
|
-
|
31
|
-
should "not create image unless register specified" do
|
32
|
-
@env["vm"].connection.expects(:create_image).never
|
33
|
-
@middleware.call(@env)
|
34
|
-
end
|
35
|
-
|
36
|
-
should "create image if register specified" do
|
37
|
-
@env["vm"].connection.expects(:create_image => @env["vm"].connection.create_image(@env["vm"].vm.id, "test", "test"))
|
38
|
-
@env["image.register"] = true
|
39
|
-
@middleware.call(@env)
|
40
|
-
end
|
41
|
-
|
42
|
-
context "recovery" do
|
43
|
-
setup do
|
44
|
-
@internal_image = @env["vm"].connection.create_image(@env["vm"].vm.id, "test", "test")
|
45
|
-
@env["vm"].connection.stubs(:create_image).returns(@internal_image)
|
46
|
-
end
|
47
|
-
|
48
|
-
should "deregister if error during registration" do
|
49
|
-
@env["image.register"] = true
|
50
|
-
@middleware.call(@env)
|
51
|
-
@middleware.image.expects(:deregister).with(true)
|
52
|
-
@middleware.recover(@env)
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
should "call the next app" do
|
58
|
-
@app.expects(:call).once
|
59
|
-
@middleware.call(@env)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class CreateSSHKeyActionTest < Test::Unit::TestCase
|
4
|
-
setup do
|
5
|
-
@app, @env = action_env
|
6
|
-
|
7
|
-
@env.env.vm = VagrantAWS::VM.new(:env => @env.env, :name => "default")
|
8
|
-
@connection = @env["vm"].connection # We need to trigger the connection creation to load FOG models
|
9
|
-
|
10
|
-
@middleware = VagrantAWS::Action::CreateSSHKey.new(@app, @env)
|
11
|
-
|
12
|
-
@env["config"].aws.key_name = "default"
|
13
|
-
end
|
14
|
-
|
15
|
-
should "call the next app" do
|
16
|
-
@app.expects(:call).once
|
17
|
-
@middleware.call(@env)
|
18
|
-
end
|
19
|
-
|
20
|
-
should "not do anything if key name is provided" do
|
21
|
-
@env["vm"].connection.expects(:key_pairs).never
|
22
|
-
@middleware.call(@env)
|
23
|
-
end
|
24
|
-
|
25
|
-
context "no key specified" do
|
26
|
-
setup do
|
27
|
-
@env["config"].aws.key_name = nil
|
28
|
-
end
|
29
|
-
|
30
|
-
should "use pre-existing key pair if available" do
|
31
|
-
@env.env.expects(:ssh_keys).returns(["existing_key"])
|
32
|
-
@connection.data[:key_pairs] = { "notused" => { "keyName" => "existing_key"} }
|
33
|
-
@middleware.call(@env)
|
34
|
-
end
|
35
|
-
|
36
|
-
should "create key pair if none available" do
|
37
|
-
@env.env.expects(:ssh_keys).returns([])
|
38
|
-
File.stubs(:open).with(@env.env.ssh_keys_path.join("vagrantaws_#{Mac.addr.gsub(':','')}"), File::WRONLY|File::TRUNC|File::CREAT, 0600).returns(nil)
|
39
|
-
@middleware.call(@env)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class CreateActionTest < Test::Unit::TestCase
|
4
|
-
setup do
|
5
|
-
@app, @env = action_env
|
6
|
-
|
7
|
-
@env.env.vm = VagrantAWS::VM.new(:env => @env.env, :name => "default")
|
8
|
-
@connection = @env["vm"].connection # We need to trigger the connection creation to load FOG models
|
9
|
-
|
10
|
-
@middleware = VagrantAWS::Action::Create.new(@app, @env)
|
11
|
-
|
12
|
-
# Setup FOG mocks
|
13
|
-
@env["config"].aws.key_name = "default"
|
14
|
-
@connection.data[:key_pairs] = { "notused" => { "keyName" => "default"} }
|
15
|
-
@connection.data[:images] = { "default" => { "imageId" => @env["config"].aws.image, "imageState" => 'available' } }
|
16
|
-
end
|
17
|
-
|
18
|
-
should "call the next app" do
|
19
|
-
@app.expects(:call).once
|
20
|
-
@middleware.call(@env)
|
21
|
-
end
|
22
|
-
|
23
|
-
should "create running AWS server" do
|
24
|
-
@middleware.call(@env)
|
25
|
-
|
26
|
-
assert_not_nil @env["vm"].vm
|
27
|
-
assert_instance_of Fog::Compute::AWS::Server, @env["vm"].vm
|
28
|
-
assert @env["vm"].vm.running?
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
should "mark environment erroneous and not continue chain on failure" do
|
33
|
-
Fog::Compute::AWS::Servers.any_instance.stubs(:create).returns(nil)
|
34
|
-
@app.expects(:call).never
|
35
|
-
assert_raises(VagrantAWS::Errors::VMCreateFailure) {
|
36
|
-
@middleware.call(@env)
|
37
|
-
}
|
38
|
-
end
|
39
|
-
|
40
|
-
context "recovery" do
|
41
|
-
setup do
|
42
|
-
@env["vm"].stubs(:created?).returns(true)
|
43
|
-
end
|
44
|
-
|
45
|
-
should "not run the destroy action on recover if error is a VagrantError" do
|
46
|
-
@env["vagrant.error"] = Vagrant::Errors::VMImportFailure.new
|
47
|
-
@env.env.actions.expects(:run).never
|
48
|
-
@middleware.recover(@env)
|
49
|
-
end
|
50
|
-
|
51
|
-
should "not run the destroy action on recover if VM is not created" do
|
52
|
-
@env.env.vm.stubs(:created?).returns(false)
|
53
|
-
@env.env.actions.expects(:run).never
|
54
|
-
@middleware.recover(@env)
|
55
|
-
end
|
56
|
-
|
57
|
-
should "run the destroy action on recover" do
|
58
|
-
@env.env.vm.stubs(:created?).returns(true)
|
59
|
-
@env.env.actions.expects(:run).with(:aws_destroy).once
|
60
|
-
@middleware.recover(@env)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
65
|
-
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
class TerminateActionTest < Test::Unit::TestCase
|
4
|
-
setup do
|
5
|
-
@app, @env = action_env
|
6
|
-
@env.env.vm = VagrantAWS::VM.new(:env => @env.env, :name => "default")
|
7
|
-
@middleware = VagrantAWS::Action::Terminate.new(@app, @env)
|
8
|
-
|
9
|
-
@internal_vm = mock("internal")
|
10
|
-
@env.env.vm.stubs(:vm).returns(@internal_vm)
|
11
|
-
end
|
12
|
-
|
13
|
-
should "destroy VM and attached images" do
|
14
|
-
@internal_vm.expects(:destroy).once
|
15
|
-
@env["vm"].expects(:vm=).with(nil).once
|
16
|
-
@app.expects(:call).with(@env).once
|
17
|
-
@middleware.call(@env)
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class CommandTest < Test::Unit::TestCase
|
4
|
-
setup do
|
5
|
-
@env = vagrant_env
|
6
|
-
end
|
7
|
-
|
8
|
-
context "up" do
|
9
|
-
|
10
|
-
should "run aws_up" do
|
11
|
-
@env.config.aws.key_name = "default"
|
12
|
-
@env.vms.values.each do |vm|
|
13
|
-
vm.env.actions.expects(:run).with(:aws_up, {'provision.enabled' => true}).once
|
14
|
-
end
|
15
|
-
@env.cli("aws","up")
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
class ConfigTest < Test::Unit::TestCase
|
4
|
-
setup do
|
5
|
-
@config = VagrantAWS::Config.new
|
6
|
-
@errors = Vagrant::Config::ErrorRecorder.new
|
7
|
-
end
|
8
|
-
|
9
|
-
should "be valid by default" do
|
10
|
-
@config.validate(@errors)
|
11
|
-
assert @errors.errors.empty?
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|