vagrant-proxmox 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sanity_checks.rb +1 -1
- data/lib/vagrant-proxmox.rb +1 -2
- data/lib/vagrant-proxmox/action.rb +133 -86
- data/lib/vagrant-proxmox/action/connect_proxmox.rb +10 -10
- data/lib/vagrant-proxmox/action/create_vm.rb +33 -28
- data/lib/vagrant-proxmox/action/destroy_vm.rb +10 -6
- data/lib/vagrant-proxmox/action/get_node_list.rb +8 -6
- data/lib/vagrant-proxmox/action/is_created.rb +1 -0
- data/lib/vagrant-proxmox/action/is_stopped.rb +1 -0
- data/lib/vagrant-proxmox/action/message_file_not_found.rb +21 -0
- data/lib/vagrant-proxmox/action/message_not_running.rb +20 -0
- data/lib/vagrant-proxmox/action/message_upload_server_error.rb +20 -0
- data/lib/vagrant-proxmox/action/proxmox_action.rb +6 -22
- data/lib/vagrant-proxmox/action/read_ssh_info.rb +1 -0
- data/lib/vagrant-proxmox/action/read_state.rb +11 -14
- data/lib/vagrant-proxmox/action/select_node.rb +23 -0
- data/lib/vagrant-proxmox/action/shutdown_vm.rb +8 -8
- data/lib/vagrant-proxmox/action/start_vm.rb +20 -12
- data/lib/vagrant-proxmox/action/stop_vm.rb +9 -8
- data/lib/vagrant-proxmox/action/sync_folders.rb +1 -1
- data/lib/vagrant-proxmox/action/upload_iso_file.rb +38 -0
- data/lib/vagrant-proxmox/action/upload_template_file.rb +38 -0
- data/lib/vagrant-proxmox/config.rb +85 -5
- data/lib/vagrant-proxmox/errors.rb +22 -2
- data/lib/vagrant-proxmox/plugin.rb +0 -14
- data/lib/vagrant-proxmox/proxmox/connection.rb +217 -0
- data/lib/vagrant-proxmox/proxmox/errors.rb +23 -0
- data/lib/vagrant-proxmox/version.rb +1 -1
- data/locales/en.yml +29 -2
- data/spec/actions/cleanup_after_destroy_action_spec.rb +2 -2
- data/spec/actions/connect_proxmox_action_spec.rb +32 -15
- data/spec/actions/create_vm_action_spec.rb +155 -130
- data/spec/actions/destroy_vm_action_spec.rb +50 -23
- data/spec/actions/get_node_list_action_spec.rb +25 -12
- data/spec/actions/is_created_action_spec.rb +8 -8
- data/spec/actions/is_stopped_action_spec.rb +8 -8
- data/spec/actions/message_already_running_action_spec.rb +2 -2
- data/spec/actions/message_already_stopped_action_spec.rb +2 -2
- data/spec/actions/message_file_not_found_spec.rb +23 -0
- data/spec/actions/message_not_created_action_spec.rb +2 -2
- data/spec/actions/message_not_running_action_spec.rb +23 -0
- data/spec/actions/message_upload_server_error_spec.rb +23 -0
- data/spec/actions/proxmox_action_shared.rb +0 -64
- data/spec/actions/proxmox_action_spec.rb +57 -0
- data/spec/actions/read_ssh_info_action_spec.rb +6 -6
- data/spec/actions/read_state_action_spec.rb +36 -34
- data/spec/actions/select_node_spec.rb +33 -0
- data/spec/actions/shutdown_vm_action_spec.rb +50 -22
- data/spec/actions/start_vm_action_spec.rb +87 -33
- data/spec/actions/stop_vm_action_spec.rb +50 -23
- data/spec/actions/sync_folders_action_spec.rb +9 -9
- data/spec/actions/upload_iso_file_action_spec.rb +70 -0
- data/spec/actions/upload_template_file_action_spec.rb +70 -0
- data/spec/commands/destroy_command_spec.rb +25 -25
- data/spec/commands/halt_command_spec.rb +17 -17
- data/spec/commands/provision_command_spec.rb +22 -9
- data/spec/commands/ssh_command_spec.rb +18 -5
- data/spec/commands/ssh_run_command_spec.rb +19 -6
- data/spec/commands/status_command_spec.rb +2 -2
- data/spec/commands/up_command_spec.rb +174 -34
- data/spec/config_spec.rb +325 -46
- data/spec/plugin_spec.rb +1 -8
- data/spec/provider_spec.rb +4 -4
- data/spec/proxmox/connection_spec.rb +662 -0
- data/spec/proxmox/rest_call_shared.rb +41 -0
- data/spec/sanity_checks_spec.rb +1 -1
- data/spec/spec_helper.rb +15 -97
- data/spec/spec_helpers/common_helpers.rb +111 -0
- data/spec/spec_helpers/time_helpers.rb +90 -0
- metadata +161 -45
@@ -8,27 +8,27 @@ module VagrantPlugins::Proxmox
|
|
8
8
|
let(:environment) { Vagrant::Environment.new vagrantfile_name: 'dummy_box/Vagrantfile' }
|
9
9
|
let(:env) { {machine: environment.machine(environment.primary_machine_name, :proxmox), ui: double('ui').as_null_object} }
|
10
10
|
|
11
|
-
subject { described_class.new(-> (_) {}, environment) }
|
11
|
+
subject(:action) { described_class.new(-> (_) {}, environment) }
|
12
12
|
|
13
13
|
describe '#call' do
|
14
14
|
|
15
15
|
before do
|
16
|
-
env[:machine].
|
17
|
-
env[:machine].communicate.
|
18
|
-
Vagrant::Util::Subprocess.
|
16
|
+
allow(env[:machine]).to receive(:ssh_info) { {host: '127.0.0.1', port: 22, username: 'vagrant', private_key_path: ['key']} }
|
17
|
+
allow(env[:machine].communicate).to receive :sudo
|
18
|
+
allow(Vagrant::Util::Subprocess).to receive_messages :execute => Vagrant::Util::Subprocess::Result.new(0, nil, nil)
|
19
19
|
end
|
20
20
|
|
21
21
|
it_behaves_like 'a proxmox action call'
|
22
22
|
|
23
23
|
it 'should print a message to the user interface' do
|
24
24
|
expect(env[:ui]).to receive(:info).with("Rsyncing folder: #{Dir.pwd}/ => /vagrant")
|
25
|
-
|
25
|
+
action.call env
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'should create a directory on the vm with the predefined ownership' do
|
29
29
|
expect(env[:machine].communicate).to receive(:sudo).with("mkdir -p '/vagrant'")
|
30
30
|
expect(env[:machine].communicate).to receive(:sudo).with("chown vagrant '/vagrant'")
|
31
|
-
|
31
|
+
action.call env
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'should rsync the directory with the vm' do
|
@@ -36,12 +36,12 @@ module VagrantPlugins::Proxmox
|
|
36
36
|
'rsync', '--verbose', '--archive', '--compress', '--delete',
|
37
37
|
'-e', "ssh -p 22 -i 'key' -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null",
|
38
38
|
"#{Dir.pwd}/", 'vagrant@127.0.0.1:/vagrant')
|
39
|
-
|
39
|
+
action.call env
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'should raise an error if the rsync fails' do
|
43
|
-
allow(Vagrant::Util::Subprocess).to
|
44
|
-
expect {
|
43
|
+
allow(Vagrant::Util::Subprocess).to receive_messages :execute => Vagrant::Util::Subprocess::Result.new(1, nil, nil)
|
44
|
+
expect { action.call(env) }.to raise_error Errors::RsyncError
|
45
45
|
end
|
46
46
|
|
47
47
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'actions/proxmox_action_shared'
|
3
|
+
|
4
|
+
module VagrantPlugins::Proxmox
|
5
|
+
|
6
|
+
describe Action::UploadIsoFile do
|
7
|
+
|
8
|
+
let(:environment) { Vagrant::Environment.new vagrantfile_name: 'dummy_box/Vagrantfile_qemu' }
|
9
|
+
let(:connection) { Connection.new 'https://your.proxmox.server/api2/json' }
|
10
|
+
let(:env) { {machine: environment.machine(environment.primary_machine_name, :proxmox),
|
11
|
+
proxmox_connection: connection, proxmox_selected_node: node} }
|
12
|
+
let(:iso_file) { 'some_iso.iso' }
|
13
|
+
let(:iso_file_exists) { true }
|
14
|
+
let(:node) { 'node1' }
|
15
|
+
|
16
|
+
subject(:action) { described_class.new(-> (_) {}, environment) }
|
17
|
+
|
18
|
+
before do
|
19
|
+
env[:machine].provider_config.qemu_iso_file = iso_file
|
20
|
+
allow(File).to receive(:exist?).with(iso_file).and_return(iso_file_exists)
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'with a specified iso file' do
|
24
|
+
|
25
|
+
it 'should upload the iso file into the local storage of the selected node' do
|
26
|
+
expect(connection).to receive(:upload_file).with(iso_file, content_type: 'iso', node: node, storage: 'local')
|
27
|
+
action.call env
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should return :ok after a successful upload' do
|
32
|
+
allow(connection).to receive(:upload_file).with(iso_file, content_type: 'iso', node: node, storage: 'local')
|
33
|
+
action.call env
|
34
|
+
expect(env[:result]).to eq(:ok)
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when a server error occurs' do
|
38
|
+
|
39
|
+
before do
|
40
|
+
allow(connection).to receive(:upload_file).and_raise ApiError::ServerError
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should return :server_error' do
|
44
|
+
action.call env
|
45
|
+
expect(env[:result]).to eq(:server_upload_error)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'without a specified iso file' do
|
50
|
+
|
51
|
+
let(:iso_file) { nil }
|
52
|
+
|
53
|
+
it 'does nothing and returns OK' do
|
54
|
+
expect(connection).not_to receive(:upload_file)
|
55
|
+
action.call env
|
56
|
+
expect(env[:result]).to eq(:ok)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'the specified iso file does not exist' do
|
61
|
+
|
62
|
+
let (:iso_file_exists) { false }
|
63
|
+
|
64
|
+
it 'should return :file_not_found' do
|
65
|
+
action.call env
|
66
|
+
expect(env[:result]).to eq(:file_not_found)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'actions/proxmox_action_shared'
|
3
|
+
|
4
|
+
module VagrantPlugins::Proxmox
|
5
|
+
|
6
|
+
describe Action::UploadTemplateFile do
|
7
|
+
|
8
|
+
let(:environment) { Vagrant::Environment.new vagrantfile_name: 'dummy_box/Vagrantfile' }
|
9
|
+
let(:connection) { Connection.new 'https://your.proxmox.server/api2/json' }
|
10
|
+
let(:env) { {machine: environment.machine(environment.primary_machine_name, :proxmox),
|
11
|
+
proxmox_connection: connection, proxmox_selected_node: node} }
|
12
|
+
let(:template_file) { 'template.tar.gz' }
|
13
|
+
let(:template_file_exists) { true }
|
14
|
+
let(:node) { 'node1' }
|
15
|
+
|
16
|
+
subject(:action) { described_class.new(-> (_) {}, environment) }
|
17
|
+
|
18
|
+
before do
|
19
|
+
env[:machine].provider_config.openvz_template_file = template_file
|
20
|
+
allow(File).to receive(:exist?).with(template_file).and_return(template_file_exists)
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'with a specified template file' do
|
24
|
+
|
25
|
+
it 'should upload the template file into the local storage of the selected node' do
|
26
|
+
expect(connection).to receive(:upload_file).with(template_file, content_type: 'vztmpl', node: node, storage: 'local')
|
27
|
+
action.call env
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should return :ok after a successful upload' do
|
32
|
+
allow(connection).to receive(:upload_file).with(template_file, content_type: 'vztmpl', node: node, storage: 'local')
|
33
|
+
action.call env
|
34
|
+
expect(env[:result]).to eq(:ok)
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when a server error occurs' do
|
38
|
+
|
39
|
+
before do
|
40
|
+
allow(connection).to receive(:upload_file).and_raise ApiError::ServerError
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should return :server_error' do
|
44
|
+
action.call env
|
45
|
+
expect(env[:result]).to eq(:server_upload_error)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'without a specified template file' do
|
50
|
+
|
51
|
+
let(:template_file) { nil }
|
52
|
+
|
53
|
+
it 'does nothing and returns OK' do
|
54
|
+
expect(connection).not_to receive(:upload_file)
|
55
|
+
action.call env
|
56
|
+
expect(env[:result]).to eq(:ok)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'the specified template file does not exist' do
|
61
|
+
|
62
|
+
let (:template_file_exists) { false }
|
63
|
+
|
64
|
+
it 'should return :file_not_found' do
|
65
|
+
action.call env
|
66
|
+
expect(env[:result]).to eq(:file_not_found)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -10,10 +10,10 @@ module VagrantPlugins::Proxmox
|
|
10
10
|
|
11
11
|
context 'the vm is not created on the proxmox server' do
|
12
12
|
it 'should call the appropriate actions to print a ui message that the vm is not created' do
|
13
|
-
Action::ConnectProxmox.
|
14
|
-
Action::IsCreated.
|
15
|
-
Action::MessageNotCreated.
|
16
|
-
Action::DestroyVm.
|
13
|
+
expect(Action::ConnectProxmox).to be_called
|
14
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = false }
|
15
|
+
expect(Action::MessageNotCreated).to be_called
|
16
|
+
expect(Action::DestroyVm).to be_omitted
|
17
17
|
execute_vagrant_command environment, :destroy
|
18
18
|
end
|
19
19
|
end
|
@@ -22,11 +22,11 @@ module VagrantPlugins::Proxmox
|
|
22
22
|
|
23
23
|
context 'the destroy command is not confirmed' do
|
24
24
|
it 'should call the appropriate actions to print a ui message that the vm will not be destroyed' do
|
25
|
-
Action::ConnectProxmox.
|
26
|
-
Action::IsCreated.
|
27
|
-
::Vagrant::Action::Builtin::DestroyConfirm.
|
28
|
-
::VagrantPlugins::ProviderVirtualBox::Action::MessageWillNotDestroy.
|
29
|
-
Action::DestroyVm.
|
25
|
+
expect(Action::ConnectProxmox).to be_called
|
26
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
27
|
+
expect(::Vagrant::Action::Builtin::DestroyConfirm).to be_called { |env| env[:result] = false }
|
28
|
+
expect(::VagrantPlugins::ProviderVirtualBox::Action::MessageWillNotDestroy).to be_called
|
29
|
+
expect(Action::DestroyVm).to be_omitted
|
30
30
|
execute_vagrant_command environment, :destroy
|
31
31
|
end
|
32
32
|
end
|
@@ -34,28 +34,28 @@ module VagrantPlugins::Proxmox
|
|
34
34
|
context 'the destroy command is confirmed' do
|
35
35
|
context 'the vm is running' do
|
36
36
|
it 'should call the appropriate actions to destroy the vm' do
|
37
|
-
Action::ConnectProxmox.
|
38
|
-
Action::IsCreated.
|
39
|
-
::Vagrant::Action::Builtin::DestroyConfirm.
|
40
|
-
Action::IsStopped.
|
41
|
-
Action::ShutdownVm.
|
42
|
-
Action::DestroyVm.
|
43
|
-
::Vagrant::Action::Builtin::ProvisionerCleanup.
|
44
|
-
Action::CleanupAfterDestroy.
|
37
|
+
expect(Action::ConnectProxmox).to be_called
|
38
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
39
|
+
expect(::Vagrant::Action::Builtin::DestroyConfirm).to be_called { |env| env[:result] = true }
|
40
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = false }
|
41
|
+
expect(Action::ShutdownVm).to be_called
|
42
|
+
expect(Action::DestroyVm).to be_called
|
43
|
+
expect(::Vagrant::Action::Builtin::ProvisionerCleanup).to be_called
|
44
|
+
expect(Action::CleanupAfterDestroy).to be_called
|
45
45
|
execute_vagrant_command environment, :destroy
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
context 'the vm is stopped' do
|
50
50
|
it 'should call the appropriate actions to destroy the vm' do
|
51
|
-
Action::ConnectProxmox.
|
52
|
-
Action::IsCreated.
|
53
|
-
Action::DestroyConfirm.
|
54
|
-
Action::IsStopped.
|
55
|
-
Action::DestroyVm.
|
56
|
-
::Vagrant::Action::Builtin::ProvisionerCleanup.
|
57
|
-
Action::CleanupAfterDestroy.
|
58
|
-
Action::ShutdownVm.
|
51
|
+
expect(Action::ConnectProxmox).to be_called
|
52
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
53
|
+
expect(Action::DestroyConfirm).to be_called { |env| env[:result] = true }
|
54
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = true }
|
55
|
+
expect(Action::DestroyVm).to be_called
|
56
|
+
expect(::Vagrant::Action::Builtin::ProvisionerCleanup).to be_called
|
57
|
+
expect(Action::CleanupAfterDestroy).to be_called
|
58
|
+
expect(Action::ShutdownVm).to be_omitted
|
59
59
|
execute_vagrant_command environment, :destroy
|
60
60
|
end
|
61
61
|
end
|
@@ -9,34 +9,34 @@ module VagrantPlugins::Proxmox
|
|
9
9
|
|
10
10
|
context 'the vm is not created on the proxmox server' do
|
11
11
|
it 'should call the appropriate actions and print a ui message that the vm is not created' do
|
12
|
-
Action::ConfigValidate.
|
13
|
-
Action::IsCreated.
|
14
|
-
Action::MessageNotCreated.
|
15
|
-
Action::ConnectProxmox.
|
16
|
-
Action::ShutdownVm.
|
12
|
+
expect(Action::ConfigValidate).to be_called
|
13
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = false }
|
14
|
+
expect(Action::MessageNotCreated).to be_called
|
15
|
+
expect(Action::ConnectProxmox).to be_omitted
|
16
|
+
expect(Action::ShutdownVm).to be_omitted
|
17
17
|
execute_vagrant_command environment, :halt
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
context 'the vm is stopped' do
|
22
|
-
it 'should
|
23
|
-
Action::ConfigValidate.
|
24
|
-
Action::IsCreated.
|
25
|
-
Action::IsStopped.
|
26
|
-
Action::MessageAlreadyStopped.
|
27
|
-
Action::ConnectProxmox.
|
28
|
-
Action::ShutdownVm.
|
22
|
+
it 'should not shut down the vm and print a vm message that the vm is already stopped' do
|
23
|
+
expect(Action::ConfigValidate).to be_called
|
24
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
25
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = true }
|
26
|
+
expect(Action::MessageAlreadyStopped).to be_called
|
27
|
+
expect(Action::ConnectProxmox).to be_omitted
|
28
|
+
expect(Action::ShutdownVm).to be_omitted
|
29
29
|
execute_vagrant_command environment, :halt
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
context 'the vm is running' do
|
34
34
|
it 'should call the appropriate actions to shut down the vm' do
|
35
|
-
Action::ConfigValidate.
|
36
|
-
Action::IsCreated.
|
37
|
-
Action::IsStopped.
|
38
|
-
Action::ConnectProxmox.
|
39
|
-
Action::ShutdownVm.
|
35
|
+
expect(Action::ConfigValidate).to be_called
|
36
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
37
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = false }
|
38
|
+
expect(Action::ConnectProxmox).to be_called
|
39
|
+
expect(Action::ShutdownVm).to be_called
|
40
40
|
execute_vagrant_command environment, :halt
|
41
41
|
end
|
42
42
|
end
|
@@ -9,25 +9,38 @@ module VagrantPlugins::Proxmox
|
|
9
9
|
|
10
10
|
context 'the vm is not created on the proxmox server' do
|
11
11
|
it 'should call the appropriate actions and print a ui message that the vm is not created' do
|
12
|
-
Action::ConfigValidate.
|
13
|
-
Action::IsCreated.
|
14
|
-
Action::MessageNotCreated.
|
15
|
-
Action::Provision.
|
16
|
-
Action::SyncFolders.
|
12
|
+
expect(Action::ConfigValidate).to be_called
|
13
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = false }
|
14
|
+
expect(Action::MessageNotCreated).to be_called
|
15
|
+
expect(Action::Provision).to be_omitted
|
16
|
+
expect(Action::SyncFolders).to be_omitted
|
17
17
|
execute_vagrant_command environment, :provision
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
context 'the vm exists on the proxmox server' do
|
22
22
|
it 'should call the appropriate actions and provision the vm' do
|
23
|
-
Action::ConfigValidate.
|
24
|
-
Action::IsCreated.
|
25
|
-
Action::
|
26
|
-
Action::
|
23
|
+
expect(Action::ConfigValidate).to be_called
|
24
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
25
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = false }
|
26
|
+
expect(Action::Provision).to be_called
|
27
|
+
expect(Action::SyncFolders).to be_called
|
27
28
|
execute_vagrant_command environment, :provision
|
28
29
|
end
|
29
30
|
end
|
30
31
|
|
32
|
+
context 'the vm exists on the proxmox server but is not running' do
|
33
|
+
|
34
|
+
it 'should state that the machine is not currently running' do
|
35
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
36
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = true }
|
37
|
+
expect(Action::MessageNotRunning).to be_called
|
38
|
+
expect(Action::Provision).to be_omitted
|
39
|
+
execute_vagrant_command environment, :provision
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
31
44
|
end
|
32
45
|
|
33
46
|
end
|
@@ -9,9 +9,9 @@ module VagrantPlugins::Proxmox
|
|
9
9
|
|
10
10
|
context 'the vm is not created on the proxmox server' do
|
11
11
|
it 'should call the appropriate actions and print a ui message that the vm is not created' do
|
12
|
-
Action::IsCreated.
|
13
|
-
Action::MessageNotCreated.
|
14
|
-
Action::SSHExec.
|
12
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = false }
|
13
|
+
expect(Action::MessageNotCreated).to be_called
|
14
|
+
expect(Action::SSHExec).to be_omitted
|
15
15
|
execute_vagrant_command environment, :ssh
|
16
16
|
end
|
17
17
|
end
|
@@ -19,8 +19,21 @@ module VagrantPlugins::Proxmox
|
|
19
19
|
context 'the vm exists on the proxmox server' do
|
20
20
|
|
21
21
|
it 'should call the appropriate actions to open a ssh connection' do
|
22
|
-
Action::IsCreated.
|
23
|
-
Action::
|
22
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
23
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = false }
|
24
|
+
expect(Action::SSHExec).to be_called
|
25
|
+
execute_vagrant_command environment, :ssh
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'the vm exists on the proxmox server but is not running' do
|
31
|
+
|
32
|
+
it 'should state that the machine is not currently running' do
|
33
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
34
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = true }
|
35
|
+
expect(Action::MessageNotRunning).to be_called
|
36
|
+
expect(Action::SSHExec).to be_omitted
|
24
37
|
execute_vagrant_command environment, :ssh
|
25
38
|
end
|
26
39
|
|
@@ -10,19 +10,32 @@ module VagrantPlugins::Proxmox
|
|
10
10
|
|
11
11
|
context 'the vm is not created on the proxmox server' do
|
12
12
|
it 'should call the appropriate actions and print a ui message that the vm is not created' do
|
13
|
-
Action::IsCreated.
|
14
|
-
Action::MessageNotCreated.
|
15
|
-
Action::SSHRun.
|
13
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = false }
|
14
|
+
expect(Action::MessageNotCreated).to be_called
|
15
|
+
expect(Action::SSHRun).to be_omitted
|
16
16
|
execute_vagrant_command environment, :ssh, '--command', 'foo'
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
context 'the vm exists on the proxmox server' do
|
21
|
-
before { env[:machine].
|
21
|
+
before { allow(env[:machine]).to receive(:ssh_info) { {host: '127.0.0.1', port: 22, username: 'vagrant', private_key_path: 'key'} } }
|
22
22
|
|
23
23
|
it 'should call the appropriate actions to execute a command via ssh on the vm' do
|
24
|
-
Action::IsCreated.
|
25
|
-
Action::
|
24
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
25
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = false }
|
26
|
+
expect(Action::SSHRun).to be_called
|
27
|
+
execute_vagrant_command environment, :ssh, '--command', 'foo'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'the vm exists on the proxmox server and is not running' do
|
32
|
+
before { allow(env[:machine]).to receive(:ssh_info) { {host: '127.0.0.1', port: 22, username: 'vagrant', private_key_path: 'key'} } }
|
33
|
+
|
34
|
+
it 'should call the appropriate actions to execute a command via ssh on the vm' do
|
35
|
+
expect(Action::IsCreated).to be_called { |env| env[:result] = true }
|
36
|
+
expect(Action::IsStopped).to be_called { |env| env[:result] = true }
|
37
|
+
expect(Action::MessageNotRunning).to be_called
|
38
|
+
expect(Action::SSHRun).to be_omitted
|
26
39
|
execute_vagrant_command environment, :ssh, '--command', 'foo'
|
27
40
|
end
|
28
41
|
end
|