vagrant-rimu 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +12 -0
  3. data/.gitignore +11 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +1170 -0
  6. data/.travis.yml +55 -0
  7. data/Gemfile +23 -0
  8. data/LICENSE +373 -0
  9. data/README.md +109 -0
  10. data/Rakefile +6 -0
  11. data/Vagrantfile +6 -0
  12. data/gemfiles/vagrant_1.5.gemfile +18 -0
  13. data/gemfiles/vagrant_1.6.gemfile +18 -0
  14. data/gemfiles/vagrant_1.7.gemfile +18 -0
  15. data/lib/vagrant-rimu/actions/billing_methods.rb +20 -0
  16. data/lib/vagrant-rimu/actions/connect_to_rimu.rb +23 -0
  17. data/lib/vagrant-rimu/actions/create.rb +91 -0
  18. data/lib/vagrant-rimu/actions/is_created.rb +16 -0
  19. data/lib/vagrant-rimu/actions/is_stopped.rb +17 -0
  20. data/lib/vagrant-rimu/actions/list_distributions.rb +20 -0
  21. data/lib/vagrant-rimu/actions/list_servers.rb +20 -0
  22. data/lib/vagrant-rimu/actions/message_already_created.rb +16 -0
  23. data/lib/vagrant-rimu/actions/message_already_off.rb +16 -0
  24. data/lib/vagrant-rimu/actions/message_not_created.rb +16 -0
  25. data/lib/vagrant-rimu/actions/message_will_not_destroy.rb +17 -0
  26. data/lib/vagrant-rimu/actions/modify_provision_path.rb +37 -0
  27. data/lib/vagrant-rimu/actions/move.rb +22 -0
  28. data/lib/vagrant-rimu/actions/read_ssh_info.rb +43 -0
  29. data/lib/vagrant-rimu/actions/read_state.rb +37 -0
  30. data/lib/vagrant-rimu/actions/rebuild.rb +52 -0
  31. data/lib/vagrant-rimu/actions/reload.rb +23 -0
  32. data/lib/vagrant-rimu/actions/setup_sudo.rb +43 -0
  33. data/lib/vagrant-rimu/actions/setup_user.rb +68 -0
  34. data/lib/vagrant-rimu/actions/start_instance.rb +29 -0
  35. data/lib/vagrant-rimu/actions/stop_instance.rb +26 -0
  36. data/lib/vagrant-rimu/actions/terminate_instance.rb +26 -0
  37. data/lib/vagrant-rimu/actions.rb +237 -0
  38. data/lib/vagrant-rimu/commands/billing_methods.rb +18 -0
  39. data/lib/vagrant-rimu/commands/distributions.rb +18 -0
  40. data/lib/vagrant-rimu/commands/list_servers.rb +18 -0
  41. data/lib/vagrant-rimu/commands/move.rb +18 -0
  42. data/lib/vagrant-rimu/commands/rebuild.rb +20 -0
  43. data/lib/vagrant-rimu/commands/root.rb +67 -0
  44. data/lib/vagrant-rimu/config.rb +190 -0
  45. data/lib/vagrant-rimu/errors.rb +21 -0
  46. data/lib/vagrant-rimu/plugin.rb +80 -0
  47. data/lib/vagrant-rimu/provider.rb +54 -0
  48. data/lib/vagrant-rimu/version.rb +5 -0
  49. data/lib/vagrant-rimu.rb +20 -0
  50. data/locales/en.yml +79 -0
  51. data/spec/spec_helper.rb +29 -0
  52. data/spec/vagrant-rimu/actions/connect_to_rimu_spec.rb +38 -0
  53. data/spec/vagrant-rimu/actions/message_already_created_spec.rb +33 -0
  54. data/spec/vagrant-rimu/actions/message_already_off_spec.rb +33 -0
  55. data/spec/vagrant-rimu/actions/message_not_created_spec.rb +33 -0
  56. data/spec/vagrant-rimu/actions/message_will_not_destroy_spec.rb +36 -0
  57. data/spec/vagrant-rimu/actions/modify_provision_path_spec.rb +81 -0
  58. data/spec/vagrant-rimu/actions/read_ssh_info_spec.rb +62 -0
  59. data/spec/vagrant-rimu/actions/read_state_spec.rb +59 -0
  60. data/spec/vagrant-rimu/actions/rebuild_spec.rb +148 -0
  61. data/spec/vagrant-rimu/actions/reload_spec.rb +42 -0
  62. data/spec/vagrant-rimu/actions/setup_sudo_spec.rb +94 -0
  63. data/spec/vagrant-rimu/actions/setup_user_spec.rb +78 -0
  64. data/spec/vagrant-rimu/actions/start_instance_spec.rb +64 -0
  65. data/spec/vagrant-rimu/actions/stop_instance_spec.rb +57 -0
  66. data/spec/vagrant-rimu/actions/terminate_instance_spec.rb +54 -0
  67. data/spec/vagrant-rimu/actions_spec.rb +22 -0
  68. data/spec/vagrant-rimu/commands/billing_methods_spec.rb +4 -0
  69. data/spec/vagrant-rimu/commands/distributions_spec.rb +4 -0
  70. data/spec/vagrant-rimu/commands/list_servers_spec.rb +4 -0
  71. data/spec/vagrant-rimu/commands/move_spec.rb +4 -0
  72. data/spec/vagrant-rimu/commands/rebuild_spec.rb +4 -0
  73. data/spec/vagrant-rimu/commands/root_spec.rb +4 -0
  74. data/spec/vagrant-rimu/config_spec.rb +162 -0
  75. data/spec/vagrant-rimu/provider_spec.rb +13 -0
  76. data/test/Vagrantfile +30 -0
  77. data/test/scripts/provision.sh +3 -0
  78. data/test/test.sh +12 -0
  79. data/test/test_rimu_id_rsa +51 -0
  80. data/test/test_rimu_id_rsa.pub +1 -0
  81. data/vagrant-rimu.gemspec +25 -0
  82. metadata +238 -0
@@ -0,0 +1,148 @@
1
+ require 'pathname'
2
+ require 'spec_helper'
3
+
4
+ # action_root = Pathname.new(File.expand_path('../../../../lib/vagrant-rimu/actions', __FILE__))
5
+ # autoload :StopInstance, action_root.join('stop_instance')
6
+
7
+ describe VagrantPlugins::Rimu::Actions::Rebuild do
8
+ let(:ssh) { double('ssh') }
9
+ let(:servers) { double('servers') }
10
+ let(:machine) { double('machine') }
11
+ let(:reinstall) { double('reinstall') }
12
+ let(:communicate) { double('communicate') }
13
+ let(:id) { '200' }
14
+
15
+ let(:config) do
16
+ double.tap do |config|
17
+ config.stub(:api_url) { nil }
18
+ config.stub(:api_key) { 'foo' }
19
+ config.stub(:host_name) { 'rimu.example.com' }
20
+ config.stub(:root_password) { nil }
21
+ config.stub(:distro_code) { nil }
22
+ config.stub(:control_panel) { nil }
23
+ config.stub(:vps_to_clone) { nil }
24
+ config.stub(:minimal_init) { nil }
25
+ config.stub(:disk_space_mb) { nil }
26
+ config.stub(:memory_mb) { nil }
27
+ config.stub(:disk_space_2_mb) { nil }
28
+ config.stub(:setup?) { true }
29
+ ssh.stub(:username) { 'rimu' }
30
+ ssh.stub(:username=) { 'rimu' }
31
+ ssh.stub(:private_key_path) { 'test/test_rimu_id_rsa' }
32
+ config.stub(:ssh) { ssh }
33
+ end
34
+ end
35
+
36
+ let(:env) do
37
+ {}.tap do |env|
38
+ env[:ui] = double('ui').tap do |ui|
39
+ ui.stub(:info).with(anything)
40
+ ui.stub(:error).with(anything)
41
+ end
42
+ env[:rimu_api] = double('rimu_api').tap do |os|
43
+ servers.stub(:reinstall) { reinstall }
44
+ os.stub(:servers) { servers }
45
+ end
46
+ machine.stub(:id) { id }
47
+ env[:machine] = machine
48
+ env[:machine].stub(:config) { config }
49
+ env[:machine].stub(:provider_config) { config }
50
+ communicate.stub(:ready?) { true }
51
+ env[:machine].stub(:communicate) { communicate }
52
+ end
53
+ end
54
+
55
+ let(:app) do
56
+ double('app').tap do |app|
57
+ app.stub(:call).with(anything)
58
+ end
59
+ end
60
+
61
+ describe 'call' do
62
+ context 'when vps_to_clone option is not set' do
63
+ it 'reinstall the server using instantiation_options' do
64
+ # env.stub(:interrupted) { false }
65
+ expect(env[:machine].provider_config).to receive(:setup?)
66
+ expect(env[:machine].communicate).to receive(:ready?)
67
+ expect(env[:machine].config.ssh).to receive(:username=).with(ssh.username)
68
+ expect(env[:rimu_api].servers).to receive(:reinstall).with(
69
+ id.to_i,
70
+ {
71
+ :instantiation_options=> {
72
+ :domain_name=>config.host_name,
73
+ :password=>nil,
74
+ :distro=>nil,
75
+ :control_panel=>nil
76
+ },
77
+ :is_just_minimal_init=>nil,
78
+ :vps_parameters=>{
79
+ :disk_space_mb=>nil,
80
+ :memory_mb=>nil,
81
+ :disk_space_2_mb=>nil
82
+ }
83
+ }
84
+ )
85
+ expect(app).to receive(:call)
86
+ @action = VagrantPlugins::Rimu::Actions::Rebuild.new(app, env)
87
+ @action.call(env)
88
+ end
89
+ end
90
+
91
+ context 'when vps_to_clone option is set' do
92
+ it 'reinstall the server using instantiation_via_clone_options' do
93
+ vps_clone = 9999
94
+ # env.stub(:interrupted) { false }
95
+ env[:machine].provider_config.stub(:vps_to_clone) { vps_clone }
96
+ expect(env[:machine].provider_config).to receive(:setup?)
97
+ expect(env[:machine].communicate).to receive(:ready?)
98
+ expect(env[:machine].config.ssh).to receive(:username=).with(ssh.username)
99
+ expect(env[:rimu_api].servers).to receive(:reinstall).with(
100
+ id.to_i,
101
+ {
102
+ :instantiation_via_clone_options=> {
103
+ :domain_name=>config.host_name,
104
+ :vps_order_oid_to_clone => vps_clone,
105
+ },
106
+ :is_just_minimal_init=>nil,
107
+ :vps_parameters=>{
108
+ :disk_space_mb=>nil,
109
+ :memory_mb=>nil,
110
+ :disk_space_2_mb=>nil
111
+ }
112
+ }
113
+ )
114
+ expect(app).to receive(:call)
115
+ @action = VagrantPlugins::Rimu::Actions::Rebuild.new(app, env)
116
+ @action.call(env)
117
+ end
118
+
119
+ # it 'raise an exception if ssh not ready' do
120
+ # vps_clone = 9999
121
+ # env.stub(:interrupted) { nil }
122
+ # env[:machine].communicate.stub(:ready?) { false }
123
+ # env[:machine].provider_config.stub(:vps_to_clone) { vps_clone }
124
+ # expect(env[:machine].provider_config).to receive(:setup?)
125
+ # expect(env[:machine].communicate).to receive(:ready?)
126
+ # # expect(env[:machine].config.ssh).to receive(:username=).with(ssh.username)
127
+ # expect(env[:rimu_api].servers).to receive(:reinstall).with(
128
+ # id.to_i,
129
+ # {
130
+ # :instantiation_via_clone_options=> {
131
+ # :domain_name=>config.host_name,
132
+ # :vps_order_oid_to_clone => vps_clone,
133
+ # },
134
+ # :is_just_minimal_init=>nil,
135
+ # :vps_parameters=>{
136
+ # :disk_space_mb=>nil,
137
+ # :memory_mb=>nil,
138
+ # :disk_space_2_mb=>nil
139
+ # }
140
+ # }
141
+ # )
142
+ # expect(app).not_to receive(:call)
143
+ # @action = VagrantPlugins::Rimu::Actions::Rebuild.new(app, env)
144
+ # lambda { @action.call(env) }.should raise_error
145
+ # end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,42 @@
1
+ require 'pathname'
2
+ require 'spec_helper'
3
+
4
+ # action_root = Pathname.new(File.expand_path('../../../../lib/vagrant-rimu/actions', __FILE__))
5
+ # autoload :StopInstance, action_root.join('stop_instance')
6
+
7
+ describe VagrantPlugins::Rimu::Actions::Reload do
8
+ let(:servers) { double('servers') }
9
+ let(:reboot) { double('reboot') }
10
+ let(:machine) { double('machine') }
11
+ let(:id) { '200' }
12
+
13
+ let(:env) do
14
+ {}.tap do |env|
15
+ env[:ui] = double('ui').tap do |ui|
16
+ ui.stub(:info).with(anything)
17
+ ui.stub(:error).with(anything)
18
+ end
19
+ env[:rimu_api] = double('rimu_api').tap do |os|
20
+ servers.stub(:reboot) { reboot }
21
+ os.stub(:servers) { servers }
22
+ end
23
+ machine.stub(:id) { id }
24
+ env[:machine] = machine
25
+ end
26
+ end
27
+
28
+ let(:app) do
29
+ double('app').tap do |app|
30
+ app.stub(:call).with(anything)
31
+ end
32
+ end
33
+
34
+ describe 'call' do
35
+ it 'restarts the server' do
36
+ expect(env[:rimu_api].servers).to receive(:reboot).with(id.to_i)
37
+ expect(app).to receive(:call)
38
+ @action = VagrantPlugins::Rimu::Actions::Reload.new(app, env)
39
+ @action.call(env)
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,94 @@
1
+ require 'pathname'
2
+ require 'spec_helper'
3
+
4
+ # action_root = Pathname.new(File.expand_path('../../../../lib/vagrant-rimu/actions', __FILE__))
5
+ # autoload :StopInstance, action_root.join('stop_instance')
6
+
7
+ describe VagrantPlugins::Rimu::Actions::SetupSudo do
8
+ let(:ssh) { double('ssh') }
9
+ let(:guest) { double('guest') }
10
+ let(:machine) { double('machine') }
11
+ let(:execute) { double('execute') }
12
+ let(:communicate) { double('communicate') }
13
+
14
+ let(:config) do
15
+ double.tap do |config|
16
+ config.stub(:api_url) { nil }
17
+ config.stub(:api_key) { 'foo' }
18
+ ssh.stub(:username) { 'rimu' }
19
+ ssh.stub(:username=) { 'rimu' }
20
+ ssh.stub(:private_key_path) { 'test/test_rimu_id_rsa' }
21
+ config.stub(:ssh) { ssh }
22
+ end
23
+ end
24
+
25
+ let(:env) do
26
+ {}.tap do |env|
27
+ env[:ui] = double('ui').tap do |ui|
28
+ ui.stub(:info).with(anything)
29
+ ui.stub(:error).with(anything)
30
+ end
31
+ communicate.stub(:execute) { execute }
32
+ env[:machine] = machine
33
+ guest.stub(:name) { 'redhat' }
34
+ guest.stub(:respond_to?).with(:name) { true }
35
+ env[:machine].stub(:guest) { guest }
36
+ env[:machine].stub(:config) { config }
37
+ env[:machine].stub(:communicate) { communicate }
38
+ env[:machine].stub(:provider_config) { config }
39
+ end
40
+ end
41
+
42
+ let(:app) do
43
+ double('app').tap do |app|
44
+ app.stub(:call).with(anything)
45
+ end
46
+ end
47
+
48
+ describe 'call' do
49
+ user = 'rimu'
50
+ context 'when guest name is set to redhat' do
51
+ it 'setup sudo' do
52
+ env[:machine].provider_config.stub(:setup?) { true }
53
+ expect(env[:machine].provider_config).to receive(:setup?)
54
+ expect(env[:machine].config.ssh).to receive(:username=).with('root')
55
+ expect(env[:machine].guest).to receive(:respond_to?).with(:name)
56
+ expect(env[:machine].communicate).to receive(:execute)
57
+ expect(env[:machine].config.ssh).to receive(:username=).with(user)
58
+ expect(app).to receive(:call)
59
+ @action = VagrantPlugins::Rimu::Actions::SetupSudo.new(app, env)
60
+ @action.call(env)
61
+ end
62
+ end
63
+
64
+ context 'when guest name is not set to redhat' do
65
+ it 'do nothing' do
66
+ env[:machine].provider_config.stub(:setup?) { true }
67
+ env[:machine].guest.stub(:name) { 'debian' }
68
+ expect(env[:machine].provider_config).to receive(:setup?)
69
+ expect(env[:machine].config.ssh).to receive(:username=).with('root')
70
+ expect(env[:machine].guest).to receive(:respond_to?).with(:name)
71
+ expect(env[:machine].communicate).not_to receive(:execute)
72
+ expect(env[:machine].config.ssh).to receive(:username=).with(user)
73
+ expect(app).to receive(:call)
74
+ @action = VagrantPlugins::Rimu::Actions::SetupSudo.new(app, env)
75
+ @action.call(env)
76
+ end
77
+ end
78
+
79
+ context 'when setup is not enabled' do
80
+ it 'do nothing' do
81
+ env[:machine].provider_config.stub(:setup?) { false }
82
+ env[:machine].guest.stub(:name) { 'debian' }
83
+ expect(env[:machine].provider_config).to receive(:setup?)
84
+ expect(env[:machine].config.ssh).not_to receive(:username=).with('root')
85
+ expect(env[:machine].guest).not_to receive(:respond_to?).with(:name)
86
+ expect(env[:machine].communicate).not_to receive(:execute)
87
+ expect(env[:machine].config.ssh).not_to receive(:username=).with(user)
88
+ expect(app).to receive(:call)
89
+ @action = VagrantPlugins::Rimu::Actions::SetupSudo.new(app, env)
90
+ @action.call(env)
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,78 @@
1
+ require 'pathname'
2
+ require 'spec_helper'
3
+
4
+ # action_root = Pathname.new(File.expand_path('../../../../lib/vagrant-rimu/actions', __FILE__))
5
+ # autoload :StopInstance, action_root.join('stop_instance')
6
+
7
+ describe VagrantPlugins::Rimu::Actions::SetupUser do
8
+ let(:ssh) { double('ssh') }
9
+ let(:m_env) { double('m_env') }
10
+ let(:machine) { double('machine') }
11
+ let(:execute) { double('execute') }
12
+ let(:communicate) { double('communicate') }
13
+
14
+ let(:config) do
15
+ double.tap do |config|
16
+ config.stub(:api_url) { nil }
17
+ config.stub(:api_key) { 'foo' }
18
+ ssh.stub(:username) { 'rimu' }
19
+ ssh.stub(:username=) { 'rimu' }
20
+ ssh.stub(:private_key_path) { 'test/test_rimu_id_rsa' }
21
+ config.stub(:ssh) { ssh }
22
+ end
23
+ end
24
+
25
+ let(:env) do
26
+ {}.tap do |env|
27
+ env[:ui] = double('ui').tap do |ui|
28
+ ui.stub(:info).with(anything)
29
+ ui.stub(:error).with(anything)
30
+ end
31
+ communicate.stub(:execute) { execute }
32
+ env[:machine] = machine
33
+ m_env.stub(:root_path) { '.' }
34
+ env[:machine].stub(:env) { m_env }
35
+ env[:machine].stub(:config) { config }
36
+ env[:machine].stub(:communicate) { communicate }
37
+ env[:machine].stub(:provider_config) { config }
38
+ end
39
+ end
40
+
41
+ let(:app) do
42
+ double('app').tap do |app|
43
+ app.stub(:call).with(anything)
44
+ end
45
+ end
46
+
47
+ describe 'call' do
48
+ user = 'rimu'
49
+ context 'when setup is enabled' do
50
+ it 'setup user' do
51
+ env[:machine].provider_config.stub(:setup?) { true }
52
+ expect(env[:machine].provider_config).to receive(:setup?)
53
+ expect(env[:machine].config.ssh).to receive(:username)
54
+ expect(env[:machine].config.ssh).to receive(:username=).with('root')
55
+ expect(env[:machine].communicate).to receive(:execute)
56
+ expect(env[:machine].config.ssh).to receive(:private_key_path)
57
+ expect(env[:machine].config.ssh).to receive(:username=).with(user)
58
+ expect(app).to receive(:call)
59
+ @action = VagrantPlugins::Rimu::Actions::SetupUser.new(app, env)
60
+ @action.call(env)
61
+ end
62
+ end
63
+ context 'when setup is not enabled' do
64
+ it 'do nothing' do
65
+ env[:machine].provider_config.stub(:setup?) { false }
66
+ expect(env[:machine].provider_config).to receive(:setup?)
67
+ expect(env[:machine].config.ssh).not_to receive(:username)
68
+ expect(env[:machine].config.ssh).not_to receive(:username=).with('root')
69
+ expect(env[:machine].communicate).not_to receive(:execute)
70
+ expect(env[:machine].config.ssh).not_to receive(:private_key_path)
71
+ expect(env[:machine].config.ssh).not_to receive(:username=).with(user)
72
+ expect(app).to receive(:call)
73
+ @action = VagrantPlugins::Rimu::Actions::SetupUser.new(app, env)
74
+ @action.call(env)
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,64 @@
1
+ require 'pathname'
2
+ require 'spec_helper'
3
+
4
+ # action_root = Pathname.new(File.expand_path('../../../../lib/vagrant-rimu/actions', __FILE__))
5
+ # autoload :StartInstance, action_root.join('stop_instance')
6
+
7
+ describe VagrantPlugins::Rimu::Actions::StartInstance do
8
+ let(:servers) { double('servers') }
9
+ let(:start) { double('start') }
10
+ let(:machine) { double('machine') }
11
+ let(:id) { '200' }
12
+
13
+ let(:env) do
14
+ {}.tap do |env|
15
+ env[:ui] = double('ui').tap do |ui|
16
+ ui.stub(:info).with(anything)
17
+ ui.stub(:error).with(anything)
18
+ end
19
+ machine.stub(:id) { id }
20
+ env[:machine] = machine
21
+ end
22
+ end
23
+
24
+ let(:app) do
25
+ double('app').tap do |app|
26
+ app.stub(:call).with(anything)
27
+ end
28
+ end
29
+
30
+ describe 'call' do
31
+ it 'starts server' do
32
+ env[:rimu_api] = double('rimu_api').tap do |os|
33
+ start.stub(:running_state) { 'RUNNING' }
34
+ servers.stub(:start) { start }
35
+ os.stub(:servers) { servers }
36
+ end
37
+ expect(env[:rimu_api].servers).to receive(:start).with(id.to_i)
38
+ expect(app).to receive(:call)
39
+ @action = VagrantPlugins::Rimu::Actions::StartInstance.new(app, env)
40
+ @action.call(env)
41
+ end
42
+
43
+ it 'raises exception if api does not respond' do
44
+ env[:rimu_api] = double('rimu_api').tap do |os|
45
+ servers.stub(:start) { nil }
46
+ os.stub(:servers) { servers }
47
+ end
48
+ expect(env[:rimu_api].servers).to receive(:start).with(id.to_i)
49
+ @action = VagrantPlugins::Rimu::Actions::StartInstance.new(app, env)
50
+ lambda { @action.call(env) }.should raise_error(VagrantPlugins::Rimu::Errors::ApiError)
51
+ end
52
+
53
+ it 'raises exception if server does not start' do
54
+ env[:rimu_api] = double('rimu_api').tap do |os|
55
+ start.stub(:running_state) { 'NOTRUNNING' }
56
+ servers.stub(:start) { start }
57
+ os.stub(:servers) { servers }
58
+ end
59
+ expect(env[:rimu_api].servers).to receive(:start).with(id.to_i)
60
+ @action = VagrantPlugins::Rimu::Actions::StartInstance.new(app, env)
61
+ lambda { @action.call(env) }.should raise_error(VagrantPlugins::Rimu::Errors::ApiError)
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,57 @@
1
+ require 'pathname'
2
+ require 'spec_helper'
3
+
4
+ # action_root = Pathname.new(File.expand_path('../../../../lib/vagrant-rimu/actions', __FILE__))
5
+ # autoload :StopInstance, action_root.join('stop_instance')
6
+
7
+ describe VagrantPlugins::Rimu::Actions::StopInstance do
8
+ let(:servers) { double('servers') }
9
+ let(:shutdown) { double('shutdown') }
10
+ let(:machine) { double('machine') }
11
+ let(:state) { double('state') }
12
+ let(:id) { '200' }
13
+
14
+ let(:env) do
15
+ {}.tap do |env|
16
+ env[:ui] = double('ui').tap do |ui|
17
+ ui.stub(:info).with(anything)
18
+ ui.stub(:error).with(anything)
19
+ end
20
+ env[:rimu_api] = double('rimu_api').tap do |os|
21
+ servers.stub(:shutdown) { shutdown }
22
+ os.stub(:servers) { servers }
23
+ end
24
+ machine.stub(:id) { id }
25
+ env[:machine] = machine
26
+ end
27
+ end
28
+
29
+ let(:app) do
30
+ double('app').tap do |app|
31
+ app.stub(:call).with(anything)
32
+ end
33
+ end
34
+
35
+ describe 'call' do
36
+ context 'when server state id is not :stopped' do
37
+ it 'stops the server' do
38
+ state.stub(:id) { :running }
39
+ env[:machine].stub(:state) { state }
40
+ expect(env[:rimu_api].servers).to receive(:shutdown).with(id.to_i)
41
+ expect(app).to receive(:call)
42
+ @action = VagrantPlugins::Rimu::Actions::StopInstance.new(app, env)
43
+ @action.call(env)
44
+ end
45
+ end
46
+ context 'when server id is :stopped' do
47
+ it 'does nothing' do
48
+ state.stub(:id) { :stopped }
49
+ env[:machine].stub(:state) { state }
50
+ expect(env[:rimu_api].servers).to_not receive(:shutdown)
51
+ expect(app).to receive(:call)
52
+ @action = VagrantPlugins::Rimu::Actions::StopInstance.new(app, env)
53
+ @action.call(env)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,54 @@
1
+ require 'ostruct'
2
+ require 'pathname'
3
+
4
+ require 'spec_helper'
5
+
6
+ # action_root = Pathname.new(File.expand_path('../../../../lib/vagrant-rimu/actions', __FILE__))
7
+ # autoload :StopInstance, action_root.join('stop_instance')
8
+
9
+ describe VagrantPlugins::Rimu::Actions::TerminateInstance do
10
+ let(:servers) { double('servers') }
11
+ let(:cancel) { double('cancel') }
12
+
13
+ let(:env) do
14
+ {}.tap do |env|
15
+ env[:ui] = double('ui').tap do |ui|
16
+ ui.stub(:info).with(anything)
17
+ ui.stub(:error).with(anything)
18
+ end
19
+ env[:rimu_api] = double('rimu_api').tap do |os|
20
+ servers.stub(:cancel) { cancel }
21
+ os.stub(:servers) { servers }
22
+ end
23
+ env[:machine] = OpenStruct.new
24
+ end
25
+ end
26
+
27
+ let(:app) do
28
+ double('app').tap do |app|
29
+ app.stub(:call).with(anything)
30
+ end
31
+ end
32
+
33
+ describe 'call' do
34
+ context 'when server id is set' do
35
+ it 'terminates the server' do
36
+ id = '200'
37
+ env[:machine].id = id
38
+ expect(env[:rimu_api].servers).to receive(:cancel).with(id.to_i)
39
+ expect(app).to receive(:call)
40
+ @action = VagrantPlugins::Rimu::Actions::TerminateInstance.new(app, env)
41
+ @action.call(env)
42
+ end
43
+ end
44
+ context 'when server id is not set' do
45
+ it 'do nothing' do
46
+ env[:machine].id = nil
47
+ expect(env[:rimu_api].servers).to_not receive(:cancel)
48
+ expect(app).to receive(:call)
49
+ @action = VagrantPlugins::Rimu::Actions::TerminateInstance.new(app, env)
50
+ @action.call(env)
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::Rimu::Actions do
4
+ let(:builder) do
5
+ double('builder').tap do |builder|
6
+ builder.stub(:use)
7
+ end
8
+ end
9
+
10
+ # before :each do
11
+ # Actions.stub(:new_builder) { builder }
12
+ # end
13
+ #
14
+ # describe 'action_destroy' do
15
+ # it 'add others middleware to builder' do
16
+ # expect(builder).to receive(:use).with(ConfigValidate)
17
+ # expect(builder).to receive(:use).with(ConnectToRimu)
18
+ # expect(builder).to receive(:use).with(Call, ReadState)
19
+ # Actions.action_destroy
20
+ # end
21
+ # end
22
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::Rimu::Commands::BillingMethods do
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::Rimu::Commands::Distributions do
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::Rimu::Commands::ListServers do
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::Rimu::Commands::Move do
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::Rimu::Commands::Rebuild do
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::Rimu::Commands::Root do
4
+ end