vagrant-proxmox 0.0.8 → 0.0.9
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.
- 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.
|