vagrant-proxmox 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vagrant-proxmox/action/message_upload_server_error.rb +1 -1
- data/lib/vagrant-proxmox/action/upload_iso_file.rb +3 -3
- data/lib/vagrant-proxmox/action/upload_template_file.rb +3 -3
- data/lib/vagrant-proxmox/config.rb +12 -0
- data/lib/vagrant-proxmox/proxmox/connection.rb +10 -5
- data/lib/vagrant-proxmox/version.rb +1 -1
- data/locales/en.yml +3 -1
- data/spec/actions/upload_iso_file_action_spec.rb +15 -3
- data/spec/actions/upload_template_file_action_spec.rb +15 -3
- data/spec/config_spec.rb +26 -1
- data/spec/proxmox/connection_spec.rb +51 -4
- metadata +31 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4565859e642abb0c27f2447e318af6947fa1c1a1
|
4
|
+
data.tar.gz: 2d1c4fbf9d77a08728d95a83d2acf818e422b82d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8e544f6029a57e4c13d2a6b9cf56269879defcce1d8fa34b2f45bbf64bb13d7baad5777f8be94c4b0d5a40fd69cfba29c8d55b2f62ca8cee28db1fd1dfbd2a1
|
7
|
+
data.tar.gz: a9f4ef692d5f8eeaa0d11292e1804bda3f3dbad3bc62c3d1c97af5365f0cb4c07761f23e65f1417c36119580e3a2e1d8f31cde880098c625a1a500e08a1c1f75
|
@@ -14,16 +14,16 @@ module VagrantPlugins
|
|
14
14
|
env[:result] = :ok
|
15
15
|
config = env[:machine].provider_config
|
16
16
|
if config.qemu_iso_file
|
17
|
-
env[:result] = upload_file env, config.qemu_iso_file
|
17
|
+
env[:result] = upload_file env, config.qemu_iso_file, config.replace_qemu_iso_file
|
18
18
|
end
|
19
19
|
next_action env
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
23
|
-
def upload_file env, filename
|
23
|
+
def upload_file env, filename, replace
|
24
24
|
if File.exist? filename
|
25
25
|
begin
|
26
|
-
connection(env).upload_file(filename, content_type: 'iso', node: env[:proxmox_selected_node], storage: 'local')
|
26
|
+
connection(env).upload_file(filename, content_type: 'iso', node: env[:proxmox_selected_node], storage: 'local', replace: replace)
|
27
27
|
:ok
|
28
28
|
rescue
|
29
29
|
:server_upload_error
|
@@ -14,16 +14,16 @@ module VagrantPlugins
|
|
14
14
|
env[:result] = :ok
|
15
15
|
config = env[:machine].provider_config
|
16
16
|
if config.openvz_template_file
|
17
|
-
env[:result] = upload_file env, config.openvz_template_file
|
17
|
+
env[:result] = upload_file env, config.openvz_template_file, config.replace_openvz_template_file
|
18
18
|
end
|
19
19
|
next_action env
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
23
|
-
def upload_file env, filename
|
23
|
+
def upload_file env, filename, replace
|
24
24
|
if File.exist? filename
|
25
25
|
begin
|
26
|
-
connection(env).upload_file(filename, content_type: 'vztmpl', node: env[:proxmox_selected_node], storage: 'local')
|
26
|
+
connection(env).upload_file(filename, content_type: 'vztmpl', node: env[:proxmox_selected_node], storage: 'local', replace: replace)
|
27
27
|
:ok
|
28
28
|
rescue
|
29
29
|
:server_upload_error
|
@@ -37,6 +37,11 @@ module VagrantPlugins
|
|
37
37
|
# @return [String]
|
38
38
|
attr_accessor :openvz_template_file
|
39
39
|
|
40
|
+
# Should the openvz os template be replaced (deleted before upload)?
|
41
|
+
#
|
42
|
+
# @return [Boolean]
|
43
|
+
attr_accessor :replace_openvz_template_file
|
44
|
+
|
40
45
|
# The id range to use for the virtual machines
|
41
46
|
#
|
42
47
|
# @return [Range]
|
@@ -102,6 +107,11 @@ module VagrantPlugins
|
|
102
107
|
# @return [String]
|
103
108
|
attr_accessor :qemu_iso_file
|
104
109
|
|
110
|
+
# Should the qemu iso file replaced (deleted before upload)?
|
111
|
+
#
|
112
|
+
# @return [Boolean]
|
113
|
+
attr_accessor :replace_qemu_iso_file
|
114
|
+
|
105
115
|
# The qemu disk size to use for the virtual machine, e.g. '30G'
|
106
116
|
#
|
107
117
|
# @return [String]
|
@@ -133,6 +143,7 @@ module VagrantPlugins
|
|
133
143
|
@vm_type = UNSET_VALUE
|
134
144
|
@openvz_os_template = UNSET_VALUE
|
135
145
|
@openvz_template_file = UNSET_VALUE
|
146
|
+
@replace_openvz_template_file = false
|
136
147
|
@vm_id_range = 900..999
|
137
148
|
@vm_name_prefix = 'vagrant_'
|
138
149
|
@vm_memory = 512
|
@@ -146,6 +157,7 @@ module VagrantPlugins
|
|
146
157
|
@qemu_sockets = 1
|
147
158
|
@qemu_iso = UNSET_VALUE
|
148
159
|
@qemu_iso_file = UNSET_VALUE
|
160
|
+
@replace_qemu_iso_file = false
|
149
161
|
@qemu_disk_size = UNSET_VALUE
|
150
162
|
@qemu_storage = 'raid'
|
151
163
|
@qemu_nic_model = 'e1000'
|
@@ -126,7 +126,8 @@ module VagrantPlugins
|
|
126
126
|
free_vm_ids.empty? ? raise(VagrantPlugins::Proxmox::Errors::NoVmIdAvailable) : free_vm_ids.first
|
127
127
|
end
|
128
128
|
|
129
|
-
def upload_file file, content_type: required('content_type'), node: required('node'), storage: required('storage')
|
129
|
+
def upload_file file, content_type: required('content_type'), node: required('node'), storage: required('storage'), replace: false
|
130
|
+
delete_file(filename: file, content_type: content_type, node: node, storage: storage) if replace
|
130
131
|
unless is_file_in_storage? filename: file, node: node, storage: storage
|
131
132
|
res = post "/nodes/#{node}/storage/#{storage}/upload", content: content_type,
|
132
133
|
filename: File.new(file, 'rb'), node: node, storage: storage
|
@@ -134,6 +135,10 @@ module VagrantPlugins
|
|
134
135
|
end
|
135
136
|
end
|
136
137
|
|
138
|
+
def delete_file filename: required('filename'), content_type: required('content_type'), node: required('node'), storage: required('storage')
|
139
|
+
delete "/nodes/#{node}/storage/#{storage}/content/#{content_type}/#{File.basename filename}"
|
140
|
+
end
|
141
|
+
|
137
142
|
def list_storage_files node: required('node'), storage: required('storage')
|
138
143
|
res = get "/nodes/#{node}/storage/#{storage}/content"
|
139
144
|
res[:data].map { |e| e[:volid] }
|
@@ -146,9 +151,9 @@ module VagrantPlugins
|
|
146
151
|
def get_vm_info vm_id
|
147
152
|
response = get '/cluster/resources?type=vm'
|
148
153
|
response[:data]
|
149
|
-
|
150
|
-
|
151
|
-
|
154
|
+
.select { |m| m[:id] =~ /^[a-z]*\/#{vm_id}$/ }
|
155
|
+
.map { |m| {id: vm_id, type: /^(.*)\/(.*)$/.match(m[:id])[1], node: m[:node]} }
|
156
|
+
.first
|
152
157
|
end
|
153
158
|
|
154
159
|
private
|
@@ -175,7 +180,7 @@ module VagrantPlugins
|
|
175
180
|
end
|
176
181
|
|
177
182
|
private
|
178
|
-
def delete path
|
183
|
+
def delete path, params = {}
|
179
184
|
begin
|
180
185
|
response = RestClient.delete "#{api_url}#{path}", headers
|
181
186
|
JSON.parse response.to_s, symbolize_names: true
|
data/locales/en.yml
CHANGED
@@ -40,6 +40,8 @@ en:
|
|
40
40
|
stop_vm_timeout: |-
|
41
41
|
Stopping the vm on the proxmox server timed out.
|
42
42
|
timeout: 'Timeout error'
|
43
|
+
upload_timeout: |-
|
44
|
+
Uploading a file to the proxmox server timed out.
|
43
45
|
vm_create_error: |-
|
44
46
|
Unable to create the virtual machine!
|
45
47
|
|
@@ -64,7 +66,7 @@ en:
|
|
64
66
|
VM must be running to execute this command. Run `vagrant up`
|
65
67
|
to start the virtual machine.
|
66
68
|
file_not_found: "File for upload not found"
|
67
|
-
|
69
|
+
server_upload_error: "Error during upload"
|
68
70
|
ssh_error: Unable to establish an ssh connection to the virtual machine...
|
69
71
|
no_vm_type_specified: "No vm_type specified"
|
70
72
|
no_qemu_iso_or_qemu_iso_file_specified_for_vm_type_openvz: "No qemu_iso or qemu_iso_file specified for vm_type=:qemu"
|
@@ -11,29 +11,41 @@ module VagrantPlugins::Proxmox
|
|
11
11
|
proxmox_connection: connection, proxmox_selected_node: node} }
|
12
12
|
let(:iso_file) { 'some_iso.iso' }
|
13
13
|
let(:iso_file_exists) { true }
|
14
|
+
let(:replace_iso_file) { false }
|
14
15
|
let(:node) { 'node1' }
|
15
16
|
|
16
17
|
subject(:action) { described_class.new(-> (_) {}, environment) }
|
17
18
|
|
18
19
|
before do
|
19
20
|
env[:machine].provider_config.qemu_iso_file = iso_file
|
21
|
+
env[:machine].provider_config.replace_qemu_iso_file = replace_iso_file
|
20
22
|
allow(File).to receive(:exist?).with(iso_file).and_return(iso_file_exists)
|
21
23
|
end
|
22
24
|
|
23
25
|
context 'with a specified iso file' do
|
24
26
|
|
25
27
|
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')
|
28
|
+
expect(connection).to receive(:upload_file).with(iso_file, content_type: 'iso', node: node, storage: 'local', replace: replace_iso_file)
|
27
29
|
action.call env
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
31
33
|
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')
|
34
|
+
allow(connection).to receive(:upload_file).with(iso_file, content_type: 'iso', node: node, storage: 'local', replace: replace_iso_file)
|
33
35
|
action.call env
|
34
36
|
expect(env[:result]).to eq(:ok)
|
35
37
|
end
|
36
38
|
|
39
|
+
context 'The iso file should be replaced' do
|
40
|
+
|
41
|
+
let(:replace_iso_file) { true }
|
42
|
+
|
43
|
+
it 'should delete the iso file on the server' do
|
44
|
+
expect(connection).to receive(:delete_file).with(filename: iso_file, content_type: 'iso', node: node, storage: 'local')
|
45
|
+
action.call env
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
37
49
|
context 'when a server error occurs' do
|
38
50
|
|
39
51
|
before do
|
@@ -67,4 +79,4 @@ module VagrantPlugins::Proxmox
|
|
67
79
|
end
|
68
80
|
end
|
69
81
|
end
|
70
|
-
end
|
82
|
+
end
|
@@ -11,29 +11,41 @@ module VagrantPlugins::Proxmox
|
|
11
11
|
proxmox_connection: connection, proxmox_selected_node: node} }
|
12
12
|
let(:template_file) { 'template.tar.gz' }
|
13
13
|
let(:template_file_exists) { true }
|
14
|
+
let(:replace_template_file) { false }
|
14
15
|
let(:node) { 'node1' }
|
15
16
|
|
16
17
|
subject(:action) { described_class.new(-> (_) {}, environment) }
|
17
18
|
|
18
19
|
before do
|
19
20
|
env[:machine].provider_config.openvz_template_file = template_file
|
21
|
+
env[:machine].provider_config.replace_openvz_template_file = replace_template_file
|
20
22
|
allow(File).to receive(:exist?).with(template_file).and_return(template_file_exists)
|
21
23
|
end
|
22
24
|
|
23
25
|
context 'with a specified template file' do
|
24
26
|
|
25
27
|
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')
|
28
|
+
expect(connection).to receive(:upload_file).with(template_file, content_type: 'vztmpl', node: node, storage: 'local', replace: replace_template_file)
|
27
29
|
action.call env
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
31
33
|
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')
|
34
|
+
allow(connection).to receive(:upload_file).with(template_file, content_type: 'vztmpl', node: node, storage: 'local', replace: replace_template_file)
|
33
35
|
action.call env
|
34
36
|
expect(env[:result]).to eq(:ok)
|
35
37
|
end
|
36
38
|
|
39
|
+
context 'the template file should be replaced' do
|
40
|
+
|
41
|
+
let(:replace_template_file) { true }
|
42
|
+
|
43
|
+
it 'should delete the template file on the server' do
|
44
|
+
expect(connection).to receive(:delete_file).with(filename: template_file, content_type: 'vztmpl', node: node, storage: 'local')
|
45
|
+
action.call env
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
37
49
|
context 'when a server error occurs' do
|
38
50
|
|
39
51
|
before do
|
@@ -67,4 +79,4 @@ module VagrantPlugins::Proxmox
|
|
67
79
|
end
|
68
80
|
end
|
69
81
|
end
|
70
|
-
end
|
82
|
+
end
|
data/spec/config_spec.rb
CHANGED
@@ -36,6 +36,11 @@ describe VagrantPlugins::Proxmox::Config do
|
|
36
36
|
it { is_expected.to be_nil }
|
37
37
|
end
|
38
38
|
|
39
|
+
describe '#replace_openvz_template_file' do
|
40
|
+
subject { super().replace_openvz_template_file }
|
41
|
+
it { is_expected.to eq(false) }
|
42
|
+
end
|
43
|
+
|
39
44
|
describe '#vm_id_range' do
|
40
45
|
subject { super().vm_id_range }
|
41
46
|
it { is_expected.to eq(900..999) }
|
@@ -91,6 +96,11 @@ describe VagrantPlugins::Proxmox::Config do
|
|
91
96
|
it { is_expected.to be_nil }
|
92
97
|
end
|
93
98
|
|
99
|
+
describe '#replace_qemu_iso_file' do
|
100
|
+
subject { super().replace_qemu_iso_file }
|
101
|
+
it { is_expected.to eq(false) }
|
102
|
+
end
|
103
|
+
|
94
104
|
describe '#qemu_disk_size' do
|
95
105
|
subject { super().qemu_disk_size }
|
96
106
|
it { is_expected.to be_nil }
|
@@ -103,8 +113,10 @@ describe VagrantPlugins::Proxmox::Config do
|
|
103
113
|
let(:proxmox_qemu_iso) { '' }
|
104
114
|
let(:proxmox_openvz_os_template) { "proxmox.openvz_os_template = 'local:vztmpl/template.tar.gz'" }
|
105
115
|
let(:proxmox_openvz_template_file) { '' }
|
116
|
+
let(:proxmox_replace_openvz_template_file) { '' }
|
106
117
|
let(:proxmox_vm_type) { 'proxmox.vm_type = :openvz' }
|
107
118
|
let(:proxmox_qemu_iso_file) { '' }
|
119
|
+
let(:proxmox_replace_qemu_iso_file) { '' }
|
108
120
|
let(:proxmox_qemu_disk_size) { '' }
|
109
121
|
let(:vagrantfile_content) { "
|
110
122
|
Vagrant.configure('2') do |config|
|
@@ -115,8 +127,10 @@ Vagrant.configure('2') do |config|
|
|
115
127
|
#{proxmox_vm_type}
|
116
128
|
#{proxmox_openvz_os_template}
|
117
129
|
#{proxmox_openvz_template_file}
|
130
|
+
#{proxmox_replace_openvz_template_file}
|
118
131
|
#{proxmox_qemu_iso}
|
119
132
|
#{proxmox_qemu_iso_file}
|
133
|
+
#{proxmox_replace_qemu_iso_file}
|
120
134
|
#{proxmox_qemu_disk_size}
|
121
135
|
proxmox.vm_id_range = 900..910
|
122
136
|
proxmox.vm_name_prefix = 'vagrant_test_'
|
@@ -183,6 +197,17 @@ end
|
|
183
197
|
end
|
184
198
|
end
|
185
199
|
|
200
|
+
context 'with a new template file to be overwritten' do
|
201
|
+
let(:proxmox_replace_openvz_template_file) { 'proxmox.replace_openvz_template_file = true' }
|
202
|
+
|
203
|
+
describe '#openvz_template_file' do
|
204
|
+
before do
|
205
|
+
end
|
206
|
+
subject { super().replace_openvz_template_file }
|
207
|
+
it { is_expected.to eq(true) }
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
186
211
|
describe '#vm_id_range' do
|
187
212
|
subject { super().vm_id_range }
|
188
213
|
it { is_expected.to eq(900..910) }
|
@@ -338,7 +363,7 @@ end
|
|
338
363
|
|
339
364
|
context 'when the disk size contains a unit' do
|
340
365
|
|
341
|
-
let (:proxmox_qemu_disk_size) {"proxmox.qemu_disk_size = '15G' "}
|
366
|
+
let (:proxmox_qemu_disk_size) { "proxmox.qemu_disk_size = '15G' " }
|
342
367
|
|
343
368
|
it 'should be converted into gigabytes' do
|
344
369
|
expect(config.qemu_disk_size).to eq('15')
|
@@ -611,6 +611,7 @@ module VagrantPlugins::Proxmox
|
|
611
611
|
describe '#upload_file' do
|
612
612
|
|
613
613
|
let (:file) { '/my/dir/template.tar.gz' }
|
614
|
+
let (:replace_openvz_template_file) { false }
|
614
615
|
let (:storage_file_list) { [] }
|
615
616
|
|
616
617
|
before do
|
@@ -640,11 +641,57 @@ module VagrantPlugins::Proxmox
|
|
640
641
|
|
641
642
|
let (:storage_file_list) { [{volid: 'local:vztmpl/template.tar.gz'}] }
|
642
643
|
|
643
|
-
|
644
|
-
|
645
|
-
|
644
|
+
context 'when the file is not set to be replaced' do
|
645
|
+
|
646
|
+
it 'should not upload the file' do
|
647
|
+
expect(connection).not_to receive(:post).with('/nodes/localhost/storage/local/upload', anything())
|
648
|
+
connection.upload_file file, content_type: 'vztmpl', node: 'localhost', storage: 'local'
|
649
|
+
end
|
650
|
+
end
|
651
|
+
|
652
|
+
context 'when the file is set to be replaced' do
|
653
|
+
|
654
|
+
let (:replace_openvz_template_file) { true }
|
655
|
+
|
656
|
+
it 'should delete the file before upload' do
|
657
|
+
expect(connection).to receive(:delete_file).with(filename: file, content_type: 'vztmpl', node: 'localhost', storage: 'local')
|
658
|
+
connection.upload_file file, content_type: 'vztmpl', node: 'localhost', storage: 'local', replace: true
|
659
|
+
end
|
660
|
+
end
|
661
|
+
end
|
662
|
+
end
|
663
|
+
|
664
|
+
describe '#delete_file' do
|
665
|
+
|
666
|
+
let (:file) { '/my/dir/template.tar.gz' }
|
667
|
+
let (:replace_openvz_template_file) { true }
|
668
|
+
let (:storage_file_list) { [] }
|
669
|
+
|
670
|
+
before do
|
671
|
+
allow(connection).to receive_messages :post => {data: 'task_id'}.to_json
|
672
|
+
allow(connection).to receive_messages :wait_for_completion => 'OK'
|
673
|
+
allow(connection).to receive_messages :get_vm_info => vm_info
|
674
|
+
end
|
675
|
+
|
676
|
+
it 'waits for completion of the server task' do
|
677
|
+
expect(connection).to receive(:wait_for_completion)
|
678
|
+
connection.stop_vm '100'
|
679
|
+
end
|
680
|
+
|
681
|
+
it 'should return the task exit status' do
|
682
|
+
expect(connection.stop_vm('100')).to eq('OK')
|
683
|
+
end
|
684
|
+
|
685
|
+
context 'the file exists in the storage' do
|
686
|
+
|
687
|
+
let (:storage_file_list) { [{volid: 'local:vztmpl/template.tar.gz'}] }
|
688
|
+
|
689
|
+
it 'should delete the file from the storage' do
|
690
|
+
expect(connection).to receive(:delete).with("/nodes/localhost/storage/local/content/iso/template.tar.gz")
|
691
|
+
connection.delete_file filename: file, content_type: 'iso', node: 'localhost', storage: 'local'
|
646
692
|
end
|
647
693
|
end
|
694
|
+
|
648
695
|
end
|
649
696
|
|
650
697
|
describe '#list_storage_files' do
|
@@ -659,4 +706,4 @@ module VagrantPlugins::Proxmox
|
|
659
706
|
end
|
660
707
|
end
|
661
708
|
end
|
662
|
-
end
|
709
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-proxmox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dirk Grappendorf
|
@@ -10,118 +10,118 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-06-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rest-client
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - ~>
|
19
|
+
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 1.6.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- - ~>
|
26
|
+
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: 1.6.7
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: retryable
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- - ~>
|
33
|
+
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: 1.3.3
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- - ~>
|
40
|
+
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: 1.3.3
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: activesupport
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - ~>
|
47
|
+
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: 4.0.0
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- - ~>
|
54
|
+
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: 4.0.0
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: rake
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rspec
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- - ~>
|
75
|
+
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: 3.0.0
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- - ~>
|
82
|
+
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: 3.0.0
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: simplecov
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- - ~>
|
89
|
+
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: 0.9.0
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- - ~>
|
96
|
+
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: 0.9.0
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: simplecov-rcov
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
|
-
- - ~>
|
103
|
+
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: 0.2.3
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
|
-
- - ~>
|
110
|
+
- - "~>"
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: 0.2.3
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: geminabox
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
|
-
- - ~>
|
117
|
+
- - "~>"
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: 0.11.1
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- - ~>
|
124
|
+
- - "~>"
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: 0.11.1
|
127
127
|
- !ruby/object:Gem::Dependency
|
@@ -142,70 +142,70 @@ dependencies:
|
|
142
142
|
name: libnotify
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
144
144
|
requirements:
|
145
|
-
- - ~>
|
145
|
+
- - "~>"
|
146
146
|
- !ruby/object:Gem::Version
|
147
147
|
version: 0.8.3
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
|
-
- - ~>
|
152
|
+
- - "~>"
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: 0.8.3
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
156
|
name: timecop
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
|
-
- - ~>
|
159
|
+
- - "~>"
|
160
160
|
- !ruby/object:Gem::Version
|
161
161
|
version: 0.7.1
|
162
162
|
type: :development
|
163
163
|
prerelease: false
|
164
164
|
version_requirements: !ruby/object:Gem::Requirement
|
165
165
|
requirements:
|
166
|
-
- - ~>
|
166
|
+
- - "~>"
|
167
167
|
- !ruby/object:Gem::Version
|
168
168
|
version: 0.7.1
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
170
|
name: cucumber
|
171
171
|
requirement: !ruby/object:Gem::Requirement
|
172
172
|
requirements:
|
173
|
-
- - ~>
|
173
|
+
- - "~>"
|
174
174
|
- !ruby/object:Gem::Version
|
175
175
|
version: 1.3.15
|
176
176
|
type: :development
|
177
177
|
prerelease: false
|
178
178
|
version_requirements: !ruby/object:Gem::Requirement
|
179
179
|
requirements:
|
180
|
-
- - ~>
|
180
|
+
- - "~>"
|
181
181
|
- !ruby/object:Gem::Version
|
182
182
|
version: 1.3.15
|
183
183
|
- !ruby/object:Gem::Dependency
|
184
184
|
name: webmock
|
185
185
|
requirement: !ruby/object:Gem::Requirement
|
186
186
|
requirements:
|
187
|
-
- - ~>
|
187
|
+
- - "~>"
|
188
188
|
- !ruby/object:Gem::Version
|
189
189
|
version: 1.18.0
|
190
190
|
type: :development
|
191
191
|
prerelease: false
|
192
192
|
version_requirements: !ruby/object:Gem::Requirement
|
193
193
|
requirements:
|
194
|
-
- - ~>
|
194
|
+
- - "~>"
|
195
195
|
- !ruby/object:Gem::Version
|
196
196
|
version: 1.18.0
|
197
197
|
- !ruby/object:Gem::Dependency
|
198
198
|
name: awesome_print
|
199
199
|
requirement: !ruby/object:Gem::Requirement
|
200
200
|
requirements:
|
201
|
-
- - ~>
|
201
|
+
- - "~>"
|
202
202
|
- !ruby/object:Gem::Version
|
203
203
|
version: 1.2.0
|
204
204
|
type: :development
|
205
205
|
prerelease: false
|
206
206
|
version_requirements: !ruby/object:Gem::Requirement
|
207
207
|
requirements:
|
208
|
-
- - ~>
|
208
|
+
- - "~>"
|
209
209
|
- !ruby/object:Gem::Version
|
210
210
|
version: 1.2.0
|
211
211
|
description: Enables Vagrant to manage virtual machines on a Proxmox server.
|
@@ -302,17 +302,17 @@ require_paths:
|
|
302
302
|
- lib
|
303
303
|
required_ruby_version: !ruby/object:Gem::Requirement
|
304
304
|
requirements:
|
305
|
-
- -
|
305
|
+
- - ">="
|
306
306
|
- !ruby/object:Gem::Version
|
307
307
|
version: '2'
|
308
308
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
309
309
|
requirements:
|
310
|
-
- -
|
310
|
+
- - ">="
|
311
311
|
- !ruby/object:Gem::Version
|
312
312
|
version: '0'
|
313
313
|
requirements: []
|
314
314
|
rubyforge_project:
|
315
|
-
rubygems_version: 2.
|
315
|
+
rubygems_version: 2.4.6
|
316
316
|
signing_key:
|
317
317
|
specification_version: 4
|
318
318
|
summary: Enables Vagrant to manage virtual machines on a Proxmox server.
|