foreman_fog_proxmox 0.9.4 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of foreman_fog_proxmox might be problematic. Click here for more details.

Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_fog_proxmox/proxmox_vm.js +89 -0
  3. data/app/assets/javascripts/foreman_fog_proxmox/proxmox_vm_container.js +5 -41
  4. data/app/assets/javascripts/foreman_fog_proxmox/proxmox_vm_server.js +2 -21
  5. data/app/controllers/concerns/foreman_fog_proxmox/controller/parameters/compute_resource.rb +1 -1
  6. data/app/controllers/foreman_fog_proxmox/compute_resources_controller.rb +46 -6
  7. data/app/helpers/proxmox_container_helper.rb +3 -1
  8. data/app/helpers/proxmox_server_helper.rb +2 -1
  9. data/app/helpers/proxmox_vm_helper.rb +19 -0
  10. data/app/models/concerns/fog_extensions/proxmox/node.rb +0 -5
  11. data/app/models/concerns/fog_extensions/proxmox/server.rb +1 -1
  12. data/app/models/foreman_fog_proxmox/proxmox.rb +9 -13
  13. data/app/models/foreman_fog_proxmox/proxmox_images.rb +10 -5
  14. data/app/models/foreman_fog_proxmox/proxmox_vm_commands.rb +6 -2
  15. data/app/models/foreman_fog_proxmox/proxmox_vm_new.rb +22 -6
  16. data/app/models/foreman_fog_proxmox/proxmox_vm_queries.rb +9 -7
  17. data/app/models/foreman_fog_proxmox/vms.rb +37 -0
  18. data/app/overrides/compute_resources_vms/form/add_vm_type_node_to_new_form.rb +25 -0
  19. data/app/views/compute_resources/form/_proxmox.html.erb +0 -2
  20. data/app/views/compute_resources/show/_proxmox.html.erb +4 -0
  21. data/app/views/compute_resources_vms/form/proxmox/_add_vm_type_node_to_new_form.html.erb +24 -0
  22. data/app/views/compute_resources_vms/form/proxmox/_add_vm_type_to_networks_form.html.erb +2 -1
  23. data/app/views/compute_resources_vms/form/proxmox/_add_vm_type_to_networks_new_childs_form.html.erb +2 -1
  24. data/app/views/compute_resources_vms/form/proxmox/_add_vm_type_to_nic_provider_specific_form.html.erb +3 -2
  25. data/app/views/compute_resources_vms/form/proxmox/_add_vm_type_to_volumes_edit.html.erb +6 -5
  26. data/app/views/compute_resources_vms/form/proxmox/_base.html.erb +3 -3
  27. data/app/views/compute_resources_vms/form/proxmox/_general.html.erb +2 -1
  28. data/app/views/compute_resources_vms/form/proxmox/_network.html.erb +2 -2
  29. data/app/views/compute_resources_vms/form/proxmox/container/_extended.html.erb +3 -2
  30. data/app/views/compute_resources_vms/form/proxmox/container/_network.html.erb +4 -3
  31. data/app/views/compute_resources_vms/form/proxmox/container/_volume_mp.html.erb +1 -1
  32. data/app/views/compute_resources_vms/form/proxmox/container/_volume_rootfs.html.erb +1 -1
  33. data/app/views/compute_resources_vms/form/proxmox/server/_config.html.erb +1 -1
  34. data/app/views/compute_resources_vms/form/proxmox/server/_network.html.erb +4 -3
  35. data/app/views/compute_resources_vms/form/proxmox/server/_volume.html.erb +1 -1
  36. data/app/views/compute_resources_vms/index/_proxmox.html.erb +4 -2
  37. data/config/routes.rb +7 -2
  38. data/lib/foreman_fog_proxmox/engine.rb +4 -0
  39. data/lib/foreman_fog_proxmox/version.rb +1 -1
  40. data/locale/en/foreman_fog_proxmox.edit.po +508 -0
  41. data/locale/en/foreman_fog_proxmox.po +34 -7
  42. data/locale/en/foreman_fog_proxmox.po.time_stamp +0 -0
  43. data/locale/foreman_fog_proxmox.pot +112 -70
  44. data/locale/fr/foreman_fog_proxmox.edit.po +508 -0
  45. data/locale/fr/foreman_fog_proxmox.po +39 -12
  46. data/locale/fr/foreman_fog_proxmox.po.time_stamp +0 -0
  47. data/test/factories/foreman_fog_proxmox/proxmox_node_mock_factory.rb +28 -8
  48. data/test/factories/proxmox_factory.rb +0 -1
  49. data/test/functional/compute_resources_controller_test.rb +16 -4
  50. data/test/unit/foreman_fog_proxmox/helpers/proxmox_server_helper_test.rb +1 -0
  51. data/test/unit/foreman_fog_proxmox/proxmox_test.rb +0 -1
  52. data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_container_test.rb +33 -8
  53. data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_create_test.rb +2 -2
  54. data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_test.rb +22 -2
  55. data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_volumes_test.rb +18 -6
  56. metadata +9 -2
@@ -17,8 +17,8 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=2; plural=n>1;\n"
18
18
  "\n"
19
19
 
20
- msgid "%s console is not supported at this time"
21
- msgstr "%s console pas encore supportée"
20
+ msgid "%<s>s console is not supported at this time"
21
+ msgstr ""
22
22
 
23
23
  msgid "Add Volume"
24
24
  msgstr "Ajouter un volume"
@@ -47,6 +47,12 @@ msgstr ""
47
47
  msgid "CDROM"
48
48
  msgstr ""
49
49
 
50
+ msgid "CIDR IPv4 prefix"
51
+ msgstr ""
52
+
53
+ msgid "CIDR IPv6 prefix"
54
+ msgstr ""
55
+
50
56
  msgid "CPU"
51
57
  msgstr ""
52
58
 
@@ -62,15 +68,15 @@ msgstr ""
62
68
  msgid "Cache"
63
69
  msgstr ""
64
70
 
65
- msgid "Caps lock ON"
66
- msgstr "Touches verrouillées"
67
-
68
71
  msgid "Card"
69
72
  msgstr "Carte"
70
73
 
71
74
  msgid "Change the password"
72
75
  msgstr "Changer le mot de passe"
73
76
 
77
+ msgid "Cluster nodes"
78
+ msgstr "Noeuds de la ferme"
79
+
74
80
  msgid "Controller"
75
81
  msgstr "Contrôleur"
76
82
 
@@ -80,6 +86,12 @@ msgstr "Coeurs"
80
86
  msgid "Create image?"
81
87
  msgstr "Créer image?"
82
88
 
89
+ msgid "DHCP IPv4"
90
+ msgstr ""
91
+
92
+ msgid "DHCP IPv6"
93
+ msgstr ""
94
+
83
95
  msgid "DNS"
84
96
  msgstr ""
85
97
 
@@ -110,6 +122,15 @@ msgstr "Activer/désactiver la virtualisation matérielle de KVM"
110
122
  msgid "Extended"
111
123
  msgstr "Etendu"
112
124
 
125
+ msgid "Failed retrieving proxmox compute client caused by %<e>s"
126
+ msgstr ""
127
+
128
+ msgid "Failed retrieving proxmox identity client caused by %<e>s"
129
+ msgstr ""
130
+
131
+ msgid "Failed retrieving proxmox network client caused by %<e>s"
132
+ msgstr ""
133
+
113
134
  msgid "Failed retrieving proxmox server vm by vmid=%<vmid>s"
114
135
  msgstr ""
115
136
 
@@ -131,6 +152,12 @@ msgstr ""
131
152
  msgid "ForemanFogProxmox plugin adds Proxmox VE compute resource to Foreman using fog-proxmox gem."
132
153
  msgstr "Le plugin ForemanFogProxmox ajoute la ressource de calcul Proxmox VE à foreman en utilisant le gem fog-proxmox"
133
154
 
155
+ msgid "Gateway IPv4"
156
+ msgstr ""
157
+
158
+ msgid "Gateway IPv6"
159
+ msgstr ""
160
+
134
161
  msgid "General"
135
162
  msgstr "Général"
136
163
 
@@ -206,7 +233,7 @@ msgid "Password to authenticate with - used for SSH finish step."
206
233
  msgstr "Mot de passe d'authentification - utilisé dans la dernière phase avec SSH."
207
234
 
208
235
  msgid "Path"
209
- msgstr ""
236
+ msgstr "Chemin"
210
237
 
211
238
  msgid "Physical"
212
239
  msgstr "Physique"
@@ -230,7 +257,7 @@ msgid "Rate limit"
230
257
  msgstr "Taux limite"
231
258
 
232
259
  msgid "Renew expired token ?"
233
- msgstr ""
260
+ msgstr "Renouveler jeton expiré?"
234
261
 
235
262
  msgid "Root password"
236
263
  msgstr "Mot de passe root"
@@ -256,6 +283,9 @@ msgstr ""
256
283
  msgid "Spectre-CTRL"
257
284
  msgstr ""
258
285
 
286
+ msgid "Start after creation?"
287
+ msgstr "Démarrer après création?"
288
+
259
289
  msgid "Start at boot"
260
290
  msgstr "Démarrer au boot"
261
291
 
@@ -278,13 +308,10 @@ msgid "Time"
278
308
  msgstr "Temps"
279
309
 
280
310
  msgid "Token expires on"
281
- msgstr ""
282
-
283
- msgid "Token expires on #{token_deadline}"
284
- msgstr ""
311
+ msgstr "Jeton expire le "
285
312
 
286
313
  msgid "Token has expired?"
287
- msgstr ""
314
+ msgstr "Jeton expiré?"
288
315
 
289
316
  msgid "Type"
290
317
  msgstr ""
@@ -21,26 +21,41 @@ module ForemanFogProxmox
21
21
  module ProxmoxNodeMockFactory
22
22
  def mock_node_servers(cr, servers)
23
23
  node = mock('node')
24
+ nodes = mock('nodes')
25
+ node.stubs(:node).returns('pve')
24
26
  node.stubs(:servers).returns(servers)
25
- cr.stubs(:nodes).returns([node])
26
- cr.stubs(:node).returns(node)
27
+ nodes.stubs(:get).returns(node)
28
+ nodes.stubs(:all).returns([node])
29
+ client = mock('client')
30
+ client.stubs(:nodes).returns(nodes)
31
+ cr.stubs(:client).returns(client)
27
32
  cr
28
33
  end
29
34
 
30
35
  def mock_node_containers(cr, containers)
31
36
  node = mock('node')
37
+ nodes = mock('nodes')
38
+ node.stubs(:node).returns('pve')
32
39
  node.stubs(:containers).returns(containers)
33
- cr.stubs(:node).returns(node)
34
- cr.stubs(:nodes).returns([node])
40
+ nodes.stubs(:get).returns(node)
41
+ nodes.stubs(:all).returns([node])
42
+ client = mock('client')
43
+ client.stubs(:nodes).returns(nodes)
44
+ cr.stubs(:client).returns(client)
35
45
  cr
36
46
  end
37
47
 
38
48
  def mock_node_servers_containers(cr, servers, containers)
39
49
  node = mock('node')
50
+ node.stubs(:node).returns('pve')
40
51
  node.stubs(:containers).returns(containers)
41
52
  node.stubs(:servers).returns(servers)
42
- cr.stubs(:node).returns(node)
43
- cr.stubs(:nodes).returns([node])
53
+ nodes = mock('nodes')
54
+ nodes.stubs(:get).returns(node)
55
+ nodes.stubs(:all).returns([node])
56
+ client = mock('client')
57
+ client.stubs(:nodes).returns(nodes)
58
+ cr.stubs(:client).returns(client)
44
59
  cr
45
60
  end
46
61
 
@@ -53,8 +68,13 @@ module ForemanFogProxmox
53
68
  node2.stubs(:node).returns('node2')
54
69
  node2.stubs(:servers).returns(n2s)
55
70
  node2.stubs(:containers).returns(n2c)
56
- cr.stubs(:node).returns(node1)
57
- cr.stubs(:nodes).returns([node1, node2])
71
+ nodes = mock('nodes')
72
+ nodes.stubs(:get).with('pve').returns(node1)
73
+ nodes.stubs(:get).with('pve2').returns(node2)
74
+ nodes.stubs(:all).returns([node1, node2])
75
+ client = mock('client')
76
+ client.stubs(:nodes).returns(nodes)
77
+ cr.stubs(:client).returns(client)
58
78
  cr
59
79
  end
60
80
  end
@@ -30,7 +30,6 @@ FactoryBot.define do
30
30
  user { 'root@pam' }
31
31
  password { 'proxmox01' }
32
32
  url { 'https://192.168.56.101:8006/api2/json' }
33
- node_id { 'pve' }
34
33
  end
35
34
 
36
35
  factory :proxmox_cr, :class => ForemanFogProxmox::Proxmox, :traits => [:proxmox]
@@ -20,14 +20,26 @@ require 'test_plugin_helper'
20
20
 
21
21
  module ForemanFogProxmox
22
22
  class ComputeResourcesControllerTest < ActionController::TestCase
23
- test 'should get isos' do
24
- get :isos, params: { :storage => 'local' }
23
+ test 'should get isos by node and storage' do
24
+ get :isos_by_node_and_storage, params: { :node_id => 'pve', :storage => 'local' }
25
25
  assert_response :found
26
26
  show_response = @response.body
27
27
  assert_not show_response.empty?
28
28
  end
29
- test 'should get ostemplates' do
30
- get :ostemplates, params: { :storage => 'local' }
29
+ test 'should get ostemplates by node and storage' do
30
+ get :ostemplates_by_node_and_storage, params: { :node_id => 'pve', :storage => 'local' }
31
+ assert_response :found
32
+ show_response = @response.body
33
+ assert_not show_response.empty?
34
+ end
35
+ test 'should get isos by node' do
36
+ get :isos_by_node, params: { :node_id => 'pve' }
37
+ assert_response :found
38
+ show_response = @response.body
39
+ assert_not show_response.empty?
40
+ end
41
+ test 'should get ostemplates by node' do
42
+ get :ostemplates_by_node, params: { :node_id => 'pve' }
31
43
  assert_response :found
32
44
  show_response = @response.body
33
45
  assert_not show_response.empty?
@@ -56,6 +56,7 @@ module ForemanFogProxmox
56
56
 
57
57
  let(:host_delete) do
58
58
  { 'vmid' => '100',
59
+ 'node_id' => 'pve',
59
60
  'name' => 'test',
60
61
  'type' => 'qemu',
61
62
  'cdrom' => 'image',
@@ -35,7 +35,6 @@ module ForemanFogProxmox
35
35
  should validate_presence_of(:url)
36
36
  should validate_presence_of(:user)
37
37
  should validate_presence_of(:password)
38
- should validate_presence_of(:node_id)
39
38
  should allow_value('root@pam').for(:user)
40
39
  should_not allow_value('root').for(:user)
41
40
  should_not allow_value('a').for(:url)
@@ -35,6 +35,23 @@ module ForemanFogProxmox
35
35
  @cr = FactoryBot.build_stubbed(:proxmox_cr)
36
36
  end
37
37
 
38
+ it 'migrates container from one node to another in the cluster' do
39
+ uuid = '100'
40
+ config = mock('config')
41
+ config.stubs(:attributes).returns(:cores => '')
42
+ vm = mock('vm')
43
+ vm.stubs(:config).returns(config)
44
+ vm.stubs(:container?).returns(true)
45
+ vm.stubs(:type).returns('lxc')
46
+ vm.stubs(:node_id).returns('pve')
47
+ @cr.stubs(:find_vm_by_uuid).returns(vm)
48
+ attr = { 'templated' => '0', 'node_id' => 'pve', 'config_attributes' => { 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0' } }.with_indifferent_access
49
+ @cr.stubs(:parse_container_vm).returns('vmid' => '100', 'node_id' => 'pve2', 'type' => 'lxc', 'cores' => '1', 'cpulimit' => '1')
50
+ expected_attr = { :cores => '1', :cpulimit => '1' }
51
+ vm.expects(:update, expected_attr)
52
+ @cr.save_vm(uuid, attr)
53
+ end
54
+
38
55
  it 'saves modified container config' do
39
56
  uuid = '100'
40
57
  config = mock('config')
@@ -43,9 +60,10 @@ module ForemanFogProxmox
43
60
  vm.stubs(:config).returns(config)
44
61
  vm.stubs(:container?).returns(true)
45
62
  vm.stubs(:type).returns('lxc')
63
+ vm.stubs(:node_id).returns('pve')
46
64
  @cr.stubs(:find_vm_by_uuid).returns(vm)
47
- attr = { 'templated' => '0', 'config_attributes' => { 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0' } }.with_indifferent_access
48
- @cr.stubs(:parse_container_vm).returns('vmid' => '100', 'type' => 'lxc', 'cores' => '1', 'cpulimit' => '1')
65
+ attr = { 'templated' => '0', 'node_id' => 'pve', 'config_attributes' => { 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0' } }.with_indifferent_access
66
+ @cr.stubs(:parse_container_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'lxc', 'cores' => '1', 'cpulimit' => '1')
49
67
  expected_attr = { :cores => '1', :cpulimit => '1' }
50
68
  vm.expects(:update, expected_attr)
51
69
  @cr.save_vm(uuid, attr)
@@ -66,9 +84,11 @@ module ForemanFogProxmox
66
84
  vm.stubs(:config).returns(config)
67
85
  vm.stubs(:container?).returns(true)
68
86
  vm.stubs(:type).returns('lxc')
87
+ vm.stubs(:node_id).returns('pve')
69
88
  @cr.stubs(:find_vm_by_uuid).returns(vm)
70
89
  new_attributes = {
71
90
  'templated' => '0',
91
+ 'node_id' => 'pve',
72
92
  'config_attributes' => {
73
93
  'cores' => '1',
74
94
  'cpulimit' => '1'
@@ -85,7 +105,7 @@ module ForemanFogProxmox
85
105
  }
86
106
  }
87
107
  }.with_indifferent_access
88
- @cr.stubs(:parse_container_vm).returns('vmid' => '100', 'type' => 'lxc', 'cores' => '1', 'cpulimit' => '1')
108
+ @cr.stubs(:parse_container_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'lxc', 'cores' => '1', 'cpulimit' => '1')
89
109
  expected_config_attr = { :cores => '1', :cpulimit => '1' }
90
110
  expected_volume_attr =
91
111
  [
@@ -118,10 +138,12 @@ module ForemanFogProxmox
118
138
  vm.stubs(:config).returns(config)
119
139
  vm.stubs(:container?).returns(true)
120
140
  vm.stubs(:type).returns('lxc')
141
+ vm.stubs(:node_id).returns('pve')
121
142
  @cr.stubs(:find_vm_by_uuid).returns(vm)
122
143
  new_attributes =
123
144
  {
124
145
  'templated' => '0',
146
+ 'node_id' => 'pve',
125
147
  'config_attributes' => {
126
148
  'cores' => '1',
127
149
  'cpulimit' => '1',
@@ -141,6 +163,7 @@ module ForemanFogProxmox
141
163
  }.with_indifferent_access
142
164
  @cr.stubs(:parse_container_vm).returns(
143
165
  'vmid' => '100',
166
+ 'node_id' => 'pve',
144
167
  'type' => 'lxc',
145
168
  'cores' => '1',
146
169
  'cpulimit' => '1'
@@ -169,9 +192,11 @@ module ForemanFogProxmox
169
192
  vm.stubs(:config).returns(config)
170
193
  vm.stubs(:container?).returns(true)
171
194
  vm.stubs(:type).returns('lxc')
195
+ vm.stubs(:node_id).returns('pve')
172
196
  @cr.stubs(:find_vm_by_uuid).returns(vm)
173
197
  new_attributes = {
174
198
  'templated' => '0',
199
+ 'node_id' => 'pve',
175
200
  'config_attributes' => {
176
201
  'cores' => '1',
177
202
  'cpulimit' => '1'
@@ -189,7 +214,7 @@ module ForemanFogProxmox
189
214
  }
190
215
  }
191
216
  }.with_indifferent_access
192
- @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
217
+ @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
193
218
  expected_config_attr = { :cores => '1', :cpulimit => '1' }
194
219
  expected_volume_attr = { :id => 'mp0', :volid => 'local-lvm:vm-100-disk-0', :size => 1_073_741_824 }, { :mp => '/opt/toto' }
195
220
  vm.expects(:attach, expected_volume_attr)
@@ -200,11 +225,11 @@ module ForemanFogProxmox
200
225
 
201
226
  describe 'create_vm' do
202
227
  it 'creates container without bootstart' do
203
- args = { vmid: '100', type: 'lxc', config_attributes: { onboot: '0' } }
228
+ args = { vmid: '100', type: 'lxc', node_id: 'pve', start_after_create: '0' }
204
229
  servers = mock('servers')
205
230
  servers.stubs(:id_valid?).returns(true)
206
231
  containers = mock('containers')
207
- containers.stubs(:create).with(vmid: 100, type: 'lxc', config_attributes: { onboot: '0' })
232
+ containers.stubs(:create).with(vmid: 100, type: 'lxc', node_id: 'pve', start_after_create: '0')
208
233
  cr = mock_node_servers_containers(ForemanFogProxmox::Proxmox.new, servers, containers)
209
234
  cr.stubs(:convert_sizes).with(args)
210
235
  cr.stubs(:parse_container_vm).with(args).returns(args)
@@ -214,12 +239,12 @@ module ForemanFogProxmox
214
239
  end
215
240
 
216
241
  it 'creates container with bootstart' do
217
- args = { vmid: '100', type: 'lxc', config_attributes: { onboot: '0' } }
242
+ args = { vmid: '100', type: 'lxc', node_id: 'pve', start_after_create: '1' }
218
243
  servers = mock('servers')
219
244
  servers.stubs(:id_valid?).returns(true)
220
245
  containers = mock('containers')
221
246
  vm = mock('vm')
222
- containers.stubs(:create).with(vmid: 100, type: 'lxc', config_attributes: { onboot: '0' }).returns(vm)
247
+ containers.stubs(:create).with(vmid: 100, type: 'lxc', node_id: 'pve', start_after_create: '1').returns(vm)
223
248
  cr = mock_node_servers_containers(ForemanFogProxmox::Proxmox.new, servers, containers)
224
249
  cr.stubs(:convert_sizes).with(args)
225
250
  cr.stubs(:parse_container_vm).with(args).returns(args)
@@ -43,7 +43,7 @@ module ForemanFogProxmox
43
43
  end
44
44
 
45
45
  it 'creates server without bootstart' do
46
- args = { vmid: '100', type: 'qemu', config_attributes: { onboot: '0' } }
46
+ args = { vmid: '100', type: 'qemu', node_id: 'pve', start_after_create: '0' }
47
47
  servers = mock('servers')
48
48
  servers.stubs(:id_valid?).returns(true)
49
49
  cr = mock_node_servers(ForemanFogProxmox::Proxmox.new, servers)
@@ -56,7 +56,7 @@ module ForemanFogProxmox
56
56
  end
57
57
 
58
58
  it 'creates server with bootstart' do
59
- args = { vmid: '100', type: 'qemu', config_attributes: { onboot: '1' } }
59
+ args = { vmid: '100', type: 'qemu', node_id: 'pve', start_after_create: '1' }
60
60
  servers = mock('servers')
61
61
  servers.stubs(:id_valid?).returns(true)
62
62
  cr = mock_node_servers(ForemanFogProxmox::Proxmox.new, servers)
@@ -35,6 +35,22 @@ module ForemanFogProxmox
35
35
  @cr = FactoryBot.build_stubbed(:proxmox_cr)
36
36
  end
37
37
 
38
+ it 'migrates server from node to another one in the cluster' do
39
+ uuid = '100'
40
+ config = mock('config')
41
+ config.stubs(:attributes).returns(:cores => '')
42
+ vm = mock('vm')
43
+ vm.stubs(:config).returns(config)
44
+ vm.stubs(:container?).returns(false)
45
+ vm.stubs(:templated?).returns(false)
46
+ vm.stubs(:type).returns('qemu')
47
+ vm.stubs(:node_id).returns('pve')
48
+ @cr.stubs(:find_vm_by_uuid).returns(vm)
49
+ attr = { 'templated' => '0', 'node_id' => 'pve2' }
50
+ vm.expects(:migrate)
51
+ @cr.save_vm(uuid, attr)
52
+ end
53
+
38
54
  it 'saves modified server config with same volumes' do
39
55
  uuid = '100'
40
56
  config = mock('config')
@@ -44,9 +60,10 @@ module ForemanFogProxmox
44
60
  vm.stubs(:container?).returns(false)
45
61
  vm.stubs(:templated?).returns(false)
46
62
  vm.stubs(:type).returns('qemu')
63
+ vm.stubs(:node_id).returns('pve')
47
64
  @cr.stubs(:find_vm_by_uuid).returns(vm)
48
- attr = { 'templated' => '0', 'config_attributes' => { 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0' } }.with_indifferent_access
49
- @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0')
65
+ attr = { 'templated' => '0', 'node_id' => 'pve', 'config_attributes' => { 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0' } }.with_indifferent_access
66
+ @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0')
50
67
  expected_attr = { :cores => '1', :cpulimit => '1' }.with_indifferent_access
51
68
  vm.expects(:update, expected_attr)
52
69
  @cr.save_vm(uuid, attr)
@@ -80,9 +97,11 @@ module ForemanFogProxmox
80
97
  vm.stubs(:config).returns(config)
81
98
  vm.stubs(:container?).returns(false)
82
99
  vm.stubs(:type).returns('qemu')
100
+ vm.stubs(:node_id).returns('pve')
83
101
  @cr.stubs(:find_vm_by_uuid).returns(vm)
84
102
  new_attributes = {
85
103
  'templated' => '0',
104
+ 'node_id' => 'pve',
86
105
  'config_attributes' => {
87
106
  'cores' => '1',
88
107
  'cpulimit' => '1'
@@ -96,6 +115,7 @@ module ForemanFogProxmox
96
115
  }.with_indifferent_access
97
116
  @cr.stubs(:parse_server_vm).returns(
98
117
  'vmid' => '100',
118
+ 'node_id' => 'pve',
99
119
  'type' => 'qemu',
100
120
  'cores' => '1',
101
121
  'cpulimit' => '1',
@@ -50,9 +50,11 @@ module ForemanFogProxmox
50
50
  vm.stubs(:config).returns(config)
51
51
  vm.stubs(:container?).returns(false)
52
52
  vm.stubs(:type).returns('qemu')
53
+ vm.stubs(:node_id).returns('pve')
53
54
  @cr.stubs(:find_vm_by_uuid).returns(vm)
54
55
  new_attributes = {
55
56
  'templated' => '0',
57
+ 'node_id' => 'pve',
56
58
  'config_attributes' => {
57
59
  'cores' => '1',
58
60
  'cpulimit' => '1'
@@ -69,7 +71,7 @@ module ForemanFogProxmox
69
71
  }
70
72
  }
71
73
  }.with_indifferent_access
72
- @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0')
74
+ @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0')
73
75
  expected_config_attr = { :cores => '1', :cpulimit => '1' }
74
76
  expected_volume_attr = { id: 'scsi0', storage: 'local:lvm', size: (2_147_483_648 / GIGA).to_s }
75
77
  vm.expects(:attach, expected_volume_attr)
@@ -93,9 +95,11 @@ module ForemanFogProxmox
93
95
  vm.stubs(:container?).returns(false)
94
96
  vm.stubs(:templated?).returns(false)
95
97
  vm.stubs(:type).returns('qemu')
98
+ vm.stubs(:node_id).returns('pve')
96
99
  @cr.stubs(:find_vm_by_uuid).returns(vm)
97
100
  new_attributes = {
98
101
  'templated' => '0',
102
+ 'node_id' => 'pve',
99
103
  'config_attributes' => {
100
104
  'cores' => '1',
101
105
  'cpulimit' => '1'
@@ -113,7 +117,7 @@ module ForemanFogProxmox
113
117
  }
114
118
  }
115
119
  }.with_indifferent_access
116
- @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1', 'config_attributes' => { 'onboot' => '0' })
120
+ @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1', 'config_attributes' => { 'onboot' => '0' })
117
121
  expected_config_attr = { :cores => '1', :cpulimit => '1' }
118
122
  expected_volume_attr = 'scsi0'
119
123
  vm.expects(:detach, expected_volume_attr)
@@ -137,9 +141,11 @@ module ForemanFogProxmox
137
141
  vm.stubs(:container?).returns(false)
138
142
  vm.stubs(:templated?).returns(false)
139
143
  vm.stubs(:type).returns('qemu')
144
+ vm.stubs(:node_id).returns('pve')
140
145
  @cr.stubs(:find_vm_by_uuid).returns(vm)
141
146
  new_attributes = {
142
147
  'templated' => '0',
148
+ 'node_id' => 'pve',
143
149
  'config_attributes' => {
144
150
  'cores' => '1',
145
151
  'cpulimit' => '1'
@@ -157,7 +163,7 @@ module ForemanFogProxmox
157
163
  }
158
164
  }
159
165
  }.with_indifferent_access
160
- @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
166
+ @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
161
167
  expected_config_attr = { :cores => '1', :cpulimit => '1' }
162
168
  expected_volume_attr = ['scsi0', '+1G']
163
169
  vm.expects(:extend, expected_volume_attr)
@@ -179,9 +185,11 @@ module ForemanFogProxmox
179
185
  vm.stubs(:config).returns(config)
180
186
  vm.stubs(:container?).returns(false)
181
187
  vm.stubs(:type).returns('qemu')
188
+ vm.stubs(:node_id).returns('pve')
182
189
  @cr.stubs(:find_vm_by_uuid).returns(vm)
183
190
  new_attributes = {
184
191
  'templated' => '0',
192
+ 'node_id' => 'pve',
185
193
  'config_attributes' => {
186
194
  'cores' => '1',
187
195
  'cpulimit' => '1'
@@ -199,7 +207,7 @@ module ForemanFogProxmox
199
207
  }
200
208
  }
201
209
  }.with_indifferent_access
202
- @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
210
+ @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
203
211
  err = assert_raises Foreman::Exception do
204
212
  @cr.save_vm(uuid, new_attributes)
205
213
  end
@@ -220,9 +228,11 @@ module ForemanFogProxmox
220
228
  vm.stubs(:config).returns(config)
221
229
  vm.stubs(:container?).returns(false)
222
230
  vm.stubs(:type).returns('qemu')
231
+ vm.stubs(:node_id).returns('pve')
223
232
  @cr.stubs(:find_vm_by_uuid).returns(vm)
224
233
  new_attributes = {
225
234
  'templated' => '0',
235
+ 'node_id' => 'pve',
226
236
  'config_attributes' => {
227
237
  'cores' => '1',
228
238
  'cpulimit' => '1'
@@ -240,7 +250,7 @@ module ForemanFogProxmox
240
250
  }
241
251
  }
242
252
  }.with_indifferent_access
243
- @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
253
+ @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
244
254
  expected_config_attr = { :cores => '1', :cpulimit => '1' }
245
255
  expected_volume_attr = ['scsi0', 'local-lvm2']
246
256
  vm.expects(:move, expected_volume_attr)
@@ -264,9 +274,11 @@ module ForemanFogProxmox
264
274
  vm.stubs(:config).returns(config)
265
275
  vm.stubs(:container?).returns(false)
266
276
  vm.stubs(:type).returns('qemu')
277
+ vm.stubs(:node_id).returns('pve')
267
278
  @cr.stubs(:find_vm_by_uuid).returns(vm)
268
279
  new_attributes = {
269
280
  'templated' => '0',
281
+ 'node_id' => 'pve',
270
282
  'config_attributes' => {
271
283
  'cores' => '1',
272
284
  'cpulimit' => '1'
@@ -284,7 +296,7 @@ module ForemanFogProxmox
284
296
  }
285
297
  }
286
298
  }.with_indifferent_access
287
- @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
299
+ @cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'pve', 'type' => 'qemu', 'cores' => '1', 'cpulimit' => '1')
288
300
  expected_config_attr = { :cores => '1', :cpulimit => '1' }
289
301
  expected_volume_attr = { :id => 'scsi0', :volid => 'local-lvm:vm-100-disk-0', :size => 1_073_741_824 }, { :cache => 'directsync' }
290
302
  vm.expects(:attach, expected_volume_attr)