foreman_fog_proxmox 0.14.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +42 -29
- data/app/controllers/concerns/foreman_fog_proxmox/compute_resources_vms_controller.rb +17 -7
- data/app/controllers/concerns/foreman_fog_proxmox/controller/parameters/compute_resource.rb +1 -1
- data/app/controllers/concerns/foreman_fog_proxmox/hosts_controller.rb +8 -3
- data/app/controllers/foreman_fog_proxmox/compute_resources_controller.rb +6 -3
- data/app/helpers/proxmox_compute_controllers_helper.rb +2 -1
- data/app/helpers/proxmox_compute_resources_helper.rb +3 -3
- data/app/helpers/proxmox_compute_resources_vms_helper.rb +16 -7
- data/app/helpers/proxmox_form_helper.rb +9 -5
- data/app/helpers/proxmox_vm_config_helper.rb +16 -25
- data/app/helpers/proxmox_vm_interfaces_helper.rb +19 -6
- data/app/helpers/proxmox_vm_os_template_helper.rb +2 -5
- data/app/helpers/proxmox_vm_uuid_helper.rb +1 -1
- data/app/helpers/proxmox_vm_volumes_helper.rb +22 -25
- data/app/models/concerns/fog_extensions/proxmox/node.rb +2 -2
- data/app/models/concerns/fog_extensions/proxmox/server.rb +9 -5
- data/app/models/concerns/host_ext/proxmox/associator.rb +3 -2
- data/app/models/concerns/host_ext/proxmox/for_vm.rb +1 -1
- data/app/models/concerns/host_ext/proxmox/interfaces.rb +7 -3
- data/app/models/concerns/orchestration/proxmox/compute.rb +11 -4
- data/app/models/foreman_fog_proxmox/options_select.rb +1 -3
- data/app/models/foreman_fog_proxmox/proxmox.rb +12 -10
- data/app/models/foreman_fog_proxmox/proxmox_compute_attributes.rb +15 -3
- data/app/models/foreman_fog_proxmox/proxmox_connection.rb +6 -2
- data/app/models/foreman_fog_proxmox/proxmox_console.rb +3 -1
- data/app/models/foreman_fog_proxmox/proxmox_images.rb +2 -2
- data/app/models/foreman_fog_proxmox/proxmox_interfaces.rb +28 -6
- data/app/models/foreman_fog_proxmox/proxmox_operating_systems.rb +6 -1
- data/app/models/foreman_fog_proxmox/proxmox_pools.rb +4 -4
- data/app/models/foreman_fog_proxmox/proxmox_version.rb +7 -3
- data/app/models/foreman_fog_proxmox/proxmox_vm_commands.rb +9 -7
- data/app/models/foreman_fog_proxmox/proxmox_vm_new.rb +37 -24
- data/app/models/foreman_fog_proxmox/proxmox_vm_queries.rb +4 -5
- data/app/models/foreman_fog_proxmox/proxmox_volumes.rb +23 -12
- data/app/models/foreman_fog_proxmox/vms.rb +2 -2
- data/app/views/compute_resources_vms/form/proxmox/container/_config.html.erb +2 -2
- data/app/views/compute_resources_vms/form/proxmox/container/_volume_mp.html.erb +1 -1
- data/app/views/compute_resources_vms/form/proxmox/container/_volume_rootfs.html.erb +1 -1
- data/app/views/compute_resources_vms/form/proxmox/server/_config.html.erb +3 -3
- data/app/views/compute_resources_vms/form/proxmox/server/_volume_hard_disk.html.erb +1 -1
- data/config/routes.rb +8 -4
- data/db/migrate/20210312105013_update_proxmox_uuid_host.rb +1 -2
- data/lib/foreman_fog_proxmox/engine.rb +4 -3
- data/lib/foreman_fog_proxmox/semver.rb +1 -4
- data/lib/foreman_fog_proxmox/version.rb +1 -1
- data/locale/en/foreman_fog_proxmox.po +140 -47
- data/locale/foreman_fog_proxmox.pot +300 -137
- data/locale/fr/foreman_fog_proxmox.po +145 -52
- data/test/factories/foreman_fog_proxmox/proxmox_container_mock_factory.rb +6 -7
- data/test/factories/foreman_fog_proxmox/proxmox_server_mock_factory.rb +6 -7
- data/test/functional/compute_resources_controller_test.rb +4 -2
- data/test/test_plugin_helper.rb +12 -7
- data/test/unit/foreman_fog_proxmox/helpers/proxmox_container_helper_test.rb +38 -47
- data/test/unit/foreman_fog_proxmox/helpers/proxmox_server_helper_test.rb +49 -34
- data/test/unit/foreman_fog_proxmox/helpers/proxmox_vm_helper_test.rb +29 -65
- data/test/unit/foreman_fog_proxmox/helpers/proxmox_vm_volumes_helper_test.rb +3 -3
- data/test/unit/foreman_fog_proxmox/proxmox_compute_attributes_test.rb +22 -13
- data/test/unit/foreman_fog_proxmox/proxmox_interfaces_test.rb +18 -9
- data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_container_test.rb +45 -35
- data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_create_test.rb +0 -4
- data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cdrom_test.rb +34 -22
- data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cloudinit_test.rb +20 -14
- data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_hard_disk_test.rb +76 -54
- data/test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_test.rb +26 -15
- data/test/unit/foreman_fog_proxmox/proxmox_vm_queries_test.rb +1 -1
- data/test/unit/foreman_fog_proxmox/semver_test.rb +2 -1
- metadata +35 -21
@@ -39,7 +39,8 @@ module ForemanFogProxmox
|
|
39
39
|
|
40
40
|
it 'raises Foreman::Exception when server proxmox NIC id does not match net[k] with k integer' do
|
41
41
|
compute_attributes = ActiveSupport::HashWithIndifferentAccess.new({ 'id' => 'dsfqsfqzef' })
|
42
|
-
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'eth0',
|
42
|
+
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'eth0',
|
43
|
+
:compute_attributes => compute_attributes)
|
43
44
|
host = FactoryBot.build(
|
44
45
|
:host_empty,
|
45
46
|
:interfaces => [physical_nic],
|
@@ -56,7 +57,8 @@ module ForemanFogProxmox
|
|
56
57
|
mac_address = '36:25:8c:53:0c:50'
|
57
58
|
ip6 = Array.new(4) { format('%<x>s', x: rand(16**4)) }.join(':') + '::1'
|
58
59
|
compute_attributes = ActiveSupport::HashWithIndifferentAccess.new({ 'id' => 'net0' })
|
59
|
-
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'net0', :ip => ip, :ip6 => ip6,
|
60
|
+
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'net0', :ip => ip, :ip6 => ip6,
|
61
|
+
:mac => mac_address, :compute_attributes => compute_attributes)
|
60
62
|
host = FactoryBot.build(
|
61
63
|
:host_empty,
|
62
64
|
:interfaces => [physical_nic],
|
@@ -72,7 +74,8 @@ module ForemanFogProxmox
|
|
72
74
|
|
73
75
|
it 'raises Foreman::Exception when container proxmox NIC id does not match net[k] with k integer' do
|
74
76
|
compute_attributes = ActiveSupport::HashWithIndifferentAccess.new({ 'id' => 'dsfqsfqzef' })
|
75
|
-
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'eth0',
|
77
|
+
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'eth0',
|
78
|
+
:compute_attributes => compute_attributes)
|
76
79
|
host = FactoryBot.build(
|
77
80
|
:host_empty,
|
78
81
|
:interfaces => [physical_nic],
|
@@ -88,8 +91,10 @@ module ForemanFogProxmox
|
|
88
91
|
ip = '192.168.56.100'
|
89
92
|
cidr = '31'
|
90
93
|
ip6 = Array.new(4) { format('%<x>s', x: rand(16**4)) }.join(':') + '::1'
|
91
|
-
compute_attributes = ActiveSupport::HashWithIndifferentAccess.new({ 'id' => 'net0', 'cidr' => cidr, 'gw' => ip,
|
92
|
-
|
94
|
+
compute_attributes = ActiveSupport::HashWithIndifferentAccess.new({ 'id' => 'net0', 'cidr' => cidr, 'gw' => ip,
|
95
|
+
'ip' => ip, 'dhcp6' => '1' })
|
96
|
+
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'net0', :ip => ip, :ip6 => ip6,
|
97
|
+
:compute_attributes => compute_attributes)
|
93
98
|
host = FactoryBot.build(
|
94
99
|
:host_empty,
|
95
100
|
:interfaces => [physical_nic],
|
@@ -107,8 +112,10 @@ module ForemanFogProxmox
|
|
107
112
|
ip = '192.168.56.100'
|
108
113
|
cidr6 = '100'
|
109
114
|
ip6 = '2001:0:1234::c1c0:abcd:876'
|
110
|
-
compute_attributes = ActiveSupport::HashWithIndifferentAccess.new({ 'id' => 'net0', 'cidr6' => cidr6,
|
111
|
-
|
115
|
+
compute_attributes = ActiveSupport::HashWithIndifferentAccess.new({ 'id' => 'net0', 'cidr6' => cidr6,
|
116
|
+
'dhcp' => '1', 'gw6' => ip6 })
|
117
|
+
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'net0', :ip => ip, :ip6 => ip6,
|
118
|
+
:compute_attributes => compute_attributes)
|
112
119
|
host = FactoryBot.build(
|
113
120
|
:host_empty,
|
114
121
|
:interfaces => [physical_nic],
|
@@ -127,8 +134,10 @@ module ForemanFogProxmox
|
|
127
134
|
mac_address = '36:25:8c:53:0c:50'
|
128
135
|
ip6 = '2001:0:1234::c1c0:abcd:876'
|
129
136
|
firewall = '1'
|
130
|
-
compute_attributes = ActiveSupport::HashWithIndifferentAccess.new({ 'id' => 'net0', 'dhcp' => '1',
|
131
|
-
|
137
|
+
compute_attributes = ActiveSupport::HashWithIndifferentAccess.new({ 'id' => 'net0', 'dhcp' => '1',
|
138
|
+
'ip6' => ip6, 'firewall' => firewall })
|
139
|
+
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'net0', :ip => ip, :ip6 => ip6,
|
140
|
+
:mac => mac_address, :compute_attributes => compute_attributes)
|
132
141
|
host = FactoryBot.build(
|
133
142
|
:host_empty,
|
134
143
|
:interfaces => [physical_nic],
|
@@ -46,8 +46,10 @@ module ForemanFogProxmox
|
|
46
46
|
vm.stubs(:node_id).returns('proxmox')
|
47
47
|
vm.stubs(:attributes).returns(node_id: 'proxmox', type: 'lxc')
|
48
48
|
@cr.stubs(:find_vm_by_uuid).returns(vm)
|
49
|
-
attr = { 'templated' => '0', 'node_id' => 'proxmox',
|
50
|
-
|
49
|
+
attr = { 'templated' => '0', 'node_id' => 'proxmox',
|
50
|
+
'config_attributes' => { 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0' } }.with_indifferent_access
|
51
|
+
@cr.stubs(:parse_container_vm).returns('vmid' => '100', 'node_id' => 'proxmox2', 'type' => 'lxc',
|
52
|
+
'cores' => '1', 'cpulimit' => '1')
|
51
53
|
expected_attr = { :cores => '1', :cpulimit => '1' }
|
52
54
|
vm.expects(:update, expected_attr)
|
53
55
|
@cr.save_vm(uuid, attr)
|
@@ -64,8 +66,10 @@ module ForemanFogProxmox
|
|
64
66
|
vm.stubs(:node_id).returns('proxmox')
|
65
67
|
vm.stubs(:attributes).returns(node_id: 'proxmox', type: 'lxc')
|
66
68
|
@cr.stubs(:find_vm_by_uuid).returns(vm)
|
67
|
-
attr = { 'templated' => '0', 'node_id' => 'proxmox',
|
68
|
-
|
69
|
+
attr = { 'templated' => '0', 'node_id' => 'proxmox',
|
70
|
+
'config_attributes' => { 'cores' => '1', 'cpulimit' => '1', 'onboot' => '0' } }.with_indifferent_access
|
71
|
+
@cr.stubs(:parse_container_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'lxc',
|
72
|
+
'cores' => '1', 'cpulimit' => '1')
|
69
73
|
expected_attr = { :cores => '1', :cpulimit => '1' }
|
70
74
|
vm.expects(:update, expected_attr)
|
71
75
|
@cr.save_vm(uuid, attr)
|
@@ -76,7 +80,9 @@ module ForemanFogProxmox
|
|
76
80
|
config = mock('config')
|
77
81
|
disks = mock('disks')
|
78
82
|
disk = mock('disk')
|
79
|
-
disk.stubs(:size).returns(
|
83
|
+
disk.stubs(:size).returns('1')
|
84
|
+
disk.stubs(:hard_disk?).returns(true)
|
85
|
+
disk.stubs(:cdrom?).returns(false)
|
80
86
|
disk.stubs(:storage).returns('local-lvm')
|
81
87
|
disk.stubs(:id).returns('mp0')
|
82
88
|
disks.stubs(:get).returns
|
@@ -95,7 +101,7 @@ module ForemanFogProxmox
|
|
95
101
|
'node_id' => 'proxmox',
|
96
102
|
'config_attributes' => {
|
97
103
|
'cores' => '1',
|
98
|
-
'cpulimit' => '1'
|
104
|
+
'cpulimit' => '1',
|
99
105
|
},
|
100
106
|
'volumes_attributes' => {
|
101
107
|
'0' => {
|
@@ -103,24 +109,25 @@ module ForemanFogProxmox
|
|
103
109
|
'_delete' => '',
|
104
110
|
'device' => '0',
|
105
111
|
'storage' => 'local-lvm',
|
106
|
-
'size' => '
|
112
|
+
'size' => '2',
|
107
113
|
'cache' => 'none',
|
108
|
-
'mp' => '/opt/path'
|
109
|
-
}
|
110
|
-
}
|
114
|
+
'mp' => '/opt/path',
|
115
|
+
},
|
116
|
+
},
|
111
117
|
}.with_indifferent_access
|
112
|
-
@cr.stubs(:parse_container_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'lxc',
|
118
|
+
@cr.stubs(:parse_container_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'lxc',
|
119
|
+
'cores' => '1', 'cpulimit' => '1')
|
113
120
|
expected_config_attr = { :cores => '1', :cpulimit => '1' }
|
114
121
|
expected_volume_attr =
|
115
122
|
[
|
116
123
|
{
|
117
124
|
id: 'mp0',
|
118
125
|
storage: 'local:lvm',
|
119
|
-
size:
|
126
|
+
size: '2',
|
120
127
|
},
|
121
128
|
{
|
122
|
-
mp: '/opt/path'
|
123
|
-
}
|
129
|
+
mp: '/opt/path',
|
130
|
+
},
|
124
131
|
]
|
125
132
|
vm.expects(:attach, expected_volume_attr)
|
126
133
|
vm.expects(:update, expected_config_attr)
|
@@ -132,10 +139,13 @@ module ForemanFogProxmox
|
|
132
139
|
config = mock('config')
|
133
140
|
disks = mock('disks')
|
134
141
|
disk = mock('disk')
|
135
|
-
disk.stubs(:size).returns(
|
142
|
+
disk.stubs(:size).returns('1')
|
143
|
+
disk.stubs(:hard_disk?).returns(true)
|
144
|
+
disk.stubs(:cdrom?).returns(false)
|
136
145
|
disk.stubs(:storage).returns('local-lvm')
|
146
|
+
disk.stubs(:volid).returns('local-lvm:vm-100-disk-0')
|
137
147
|
disk.stubs(:id).returns('rootfs')
|
138
|
-
disk.stubs(:attributes).returns(id: 'rootfs', storage: 'local-lvm', size:
|
148
|
+
disk.stubs(:attributes).returns(id: 'rootfs', storage: 'local-lvm', size: '1')
|
139
149
|
disks.stubs(:get).returns(disk)
|
140
150
|
config.stubs(:disks).returns(disks)
|
141
151
|
config.stubs(:attributes).returns(:cores => '')
|
@@ -145,7 +155,7 @@ module ForemanFogProxmox
|
|
145
155
|
vm.stubs(:container?).returns(true)
|
146
156
|
vm.stubs(:type).returns('lxc')
|
147
157
|
vm.stubs(:node_id).returns('proxmox')
|
148
|
-
vm.stubs(:attributes).returns(node_id
|
158
|
+
vm.stubs(:attributes).returns(:node_id => 'proxmox', :type => 'lxc', 'rootfs' => '')
|
149
159
|
@cr.stubs(:find_vm_by_uuid).returns(vm)
|
150
160
|
new_attributes =
|
151
161
|
{
|
@@ -154,19 +164,19 @@ module ForemanFogProxmox
|
|
154
164
|
'config_attributes' => {
|
155
165
|
'cores' => '1',
|
156
166
|
'cpulimit' => '1',
|
157
|
-
'onboot' => '0'
|
167
|
+
'onboot' => '0',
|
158
168
|
},
|
159
169
|
'volumes_attributes' => {
|
160
170
|
'0' => {
|
161
171
|
'id' => 'rootfs',
|
162
172
|
'_delete' => '',
|
163
|
-
'volid' => 'local-lvm:
|
173
|
+
'volid' => 'local-lvm:vm-100-disk-0',
|
164
174
|
'device' => '0',
|
165
175
|
'storage' => 'local-lvm',
|
166
|
-
'size' => '
|
167
|
-
'cache' => 'none'
|
168
|
-
}
|
169
|
-
}
|
176
|
+
'size' => '2',
|
177
|
+
'cache' => 'none',
|
178
|
+
},
|
179
|
+
},
|
170
180
|
}.with_indifferent_access
|
171
181
|
@cr.stubs(:parse_container_vm).returns(
|
172
182
|
'vmid' => '100',
|
@@ -188,11 +198,13 @@ module ForemanFogProxmox
|
|
188
198
|
disks = mock('disks')
|
189
199
|
disk = mock('disk')
|
190
200
|
disk.stubs(:rootfs?).returns(false)
|
201
|
+
disk.stubs(:hard_disk?).returns(true)
|
202
|
+
disk.stubs(:cdrom?).returns(false)
|
191
203
|
disk.stubs(:volid).returns('local-lvm:vm-100-disk-0')
|
192
204
|
disk.stubs(:id).returns('mp0')
|
193
|
-
disk.stubs(:size).returns(
|
205
|
+
disk.stubs(:size).returns('1')
|
194
206
|
disk.stubs(:storage).returns('local-lvm')
|
195
|
-
disk.stubs(:attributes).returns(id: 'mp0', storage: 'local-lvm', size:
|
207
|
+
disk.stubs(:attributes).returns(id: 'mp0', storage: 'local-lvm', size: '1', volid: 'local-lvm:vm-100-disk-0')
|
196
208
|
disks.stubs(:get).returns(disk)
|
197
209
|
config.stubs(:disks).returns(disks)
|
198
210
|
config.stubs(:attributes).returns(:cores => '')
|
@@ -209,7 +221,7 @@ module ForemanFogProxmox
|
|
209
221
|
'node_id' => 'proxmox',
|
210
222
|
'config_attributes' => {
|
211
223
|
'cores' => '1',
|
212
|
-
'cpulimit' => '1'
|
224
|
+
'cpulimit' => '1',
|
213
225
|
},
|
214
226
|
'volumes_attributes' => {
|
215
227
|
'0' => {
|
@@ -219,14 +231,15 @@ module ForemanFogProxmox
|
|
219
231
|
'device' => '0',
|
220
232
|
'controller' => 'mp',
|
221
233
|
'storage' => 'local-lvm',
|
222
|
-
'size' => '
|
223
|
-
'mp' => '/opt/toto'
|
224
|
-
}
|
225
|
-
}
|
234
|
+
'size' => '1',
|
235
|
+
'mp' => '/opt/toto',
|
236
|
+
},
|
237
|
+
},
|
226
238
|
}.with_indifferent_access
|
227
|
-
@cr.stubs(:parse_typed_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
239
|
+
@cr.stubs(:parse_typed_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
240
|
+
'cpulimit' => '1')
|
228
241
|
expected_config_attr = { :cores => '1', :cpulimit => '1' }
|
229
|
-
expected_volume_attr = { :id => 'mp0', :volid => 'local-lvm:vm-100-disk-0', :size =>
|
242
|
+
expected_volume_attr = { :id => 'mp0', :volid => 'local-lvm:vm-100-disk-0', :size => '1' }, { :mp => '/opt/toto' }
|
230
243
|
vm.expects(:attach, expected_volume_attr)
|
231
244
|
vm.expects(:update, expected_config_attr)
|
232
245
|
@cr.save_vm(uuid, new_attributes)
|
@@ -241,7 +254,6 @@ module ForemanFogProxmox
|
|
241
254
|
containers = mock('containers')
|
242
255
|
containers.stubs(:create).with(args)
|
243
256
|
cr = mock_node_servers_containers(ForemanFogProxmox::Proxmox.new, servers, containers)
|
244
|
-
cr.stubs(:convert_sizes).with(args)
|
245
257
|
cr.stubs(:parse_typed_vm).with(args, 'lxc').returns(args)
|
246
258
|
vm = mock('vm')
|
247
259
|
cr.stubs(:find_vm_by_uuid).with((args[:vmid]).to_s).returns(vm)
|
@@ -256,7 +268,6 @@ module ForemanFogProxmox
|
|
256
268
|
vm = mock('vm')
|
257
269
|
containers.stubs(:create).with(args).returns(vm)
|
258
270
|
cr = mock_node_servers_containers(ForemanFogProxmox::Proxmox.new, servers, containers)
|
259
|
-
cr.stubs(:convert_sizes).with(args)
|
260
271
|
cr.stubs(:parse_typed_vm).with(args, 'lxc').returns(args)
|
261
272
|
cr.stubs(:find_vm_by_uuid).with((args[:vmid]).to_s).returns(vm)
|
262
273
|
cr.stubs(:start_on_boot).with(vm, args).returns(vm)
|
@@ -271,7 +282,6 @@ module ForemanFogProxmox
|
|
271
282
|
vm = mock('vm')
|
272
283
|
containers.stubs(:create).with(args).returns(vm)
|
273
284
|
cr = mock_node_servers_containers(ForemanFogProxmox::Proxmox.new, servers, containers)
|
274
|
-
cr.stubs(:convert_sizes).with(args)
|
275
285
|
cr.stubs(:parse_typed_vm).with(args, 'lxc').returns(args)
|
276
286
|
cr.stubs(:find_vm_by_uuid).with((args[:vmid]).to_s).returns(vm)
|
277
287
|
cr.create_vm(args)
|
@@ -48,7 +48,6 @@ module ForemanFogProxmox
|
|
48
48
|
servers.stubs(:id_valid?).returns(true)
|
49
49
|
servers.stubs(:next_id).returns('101')
|
50
50
|
cr = mock_node_servers(ForemanFogProxmox::Proxmox.new, servers)
|
51
|
-
cr.stubs(:convert_sizes).with(args)
|
52
51
|
cr.stubs(:parse_typed_vm).with(args, 'qemu').returns(args)
|
53
52
|
servers.stubs(:create).with(args)
|
54
53
|
vm = mock('vm')
|
@@ -61,7 +60,6 @@ module ForemanFogProxmox
|
|
61
60
|
servers = mock('servers')
|
62
61
|
servers.stubs(:id_valid?).returns(true)
|
63
62
|
cr = mock_node_servers(ForemanFogProxmox::Proxmox.new, servers)
|
64
|
-
cr.stubs(:convert_sizes).with(args)
|
65
63
|
cr.stubs(:parse_typed_vm).with(args, 'qemu').returns(args)
|
66
64
|
servers.stubs(:create).with(args)
|
67
65
|
vm = mock('vm')
|
@@ -74,7 +72,6 @@ module ForemanFogProxmox
|
|
74
72
|
servers = mock('servers')
|
75
73
|
servers.stubs(:id_valid?).returns(true)
|
76
74
|
cr = mock_node_servers(ForemanFogProxmox::Proxmox.new, servers)
|
77
|
-
cr.stubs(:convert_sizes).with(args)
|
78
75
|
cr.stubs(:parse_typed_vm).with(args, 'qemu').returns(args)
|
79
76
|
vm = mock('vm')
|
80
77
|
servers.stubs(:create).with(args).returns(vm)
|
@@ -88,7 +85,6 @@ module ForemanFogProxmox
|
|
88
85
|
servers = mock('servers')
|
89
86
|
servers.stubs(:id_valid?).returns(true)
|
90
87
|
cr = mock_node_servers(ForemanFogProxmox::Proxmox.new, servers)
|
91
|
-
cr.stubs(:convert_sizes).with(args)
|
92
88
|
cr.stubs(:parse_typed_vm).with(args, 'qemu').returns(args)
|
93
89
|
vm = mock('vm')
|
94
90
|
servers.stubs(:create).with(args).returns(vm)
|
@@ -24,7 +24,7 @@ require 'factories/foreman_fog_proxmox/proxmox_server_mock_factory'
|
|
24
24
|
require 'active_support/core_ext/hash/indifferent_access'
|
25
25
|
|
26
26
|
module ForemanFogProxmox
|
27
|
-
class
|
27
|
+
class ProxmoxVmCommandsServerUpdateCdromTest < ActiveSupport::TestCase
|
28
28
|
include ComputeResourceTestHelpers
|
29
29
|
include ProxmoxNodeMockFactory
|
30
30
|
include ProxmoxServerMockFactory
|
@@ -42,6 +42,8 @@ module ForemanFogProxmox
|
|
42
42
|
disk = mock('disk')
|
43
43
|
disk.stubs(:storage).returns('local-lvm')
|
44
44
|
disk.stubs(:id).returns('ide2')
|
45
|
+
disk.stubs(:hard_disk?).returns(false)
|
46
|
+
disk.stubs(:cdrom?).returns(true)
|
45
47
|
disks.stubs(:get).returns
|
46
48
|
config.stubs(:disks).returns(disks)
|
47
49
|
config.stubs(:attributes).returns(:cores => '')
|
@@ -58,7 +60,7 @@ module ForemanFogProxmox
|
|
58
60
|
'node_id' => 'proxmox',
|
59
61
|
'config_attributes' => {
|
60
62
|
'cores' => '1',
|
61
|
-
'cpulimit' => '1'
|
63
|
+
'cpulimit' => '1',
|
62
64
|
},
|
63
65
|
'volumes_attributes' => {
|
64
66
|
'0' => {
|
@@ -69,13 +71,15 @@ module ForemanFogProxmox
|
|
69
71
|
'storage_type' => 'cdrom',
|
70
72
|
'storage' => 'local-lvm',
|
71
73
|
'cdrom' => 'image',
|
72
|
-
'volid' => 'local-lvm:iso/ubuntu-20_4.iso'
|
73
|
-
}
|
74
|
-
}
|
74
|
+
'volid' => 'local-lvm:iso/ubuntu-20_4.iso',
|
75
|
+
},
|
76
|
+
},
|
75
77
|
}.with_indifferent_access
|
76
|
-
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
78
|
+
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
79
|
+
'cpulimit' => '1', 'onboot' => '0')
|
77
80
|
expected_config_attr = { :cores => '1', :cpulimit => '1' }
|
78
|
-
expected_volume_attr = { id: 'ide2', storage: 'local:lvm', volid: 'local-lvm:iso/ubuntu-20_4.iso',
|
81
|
+
expected_volume_attr = { id: 'ide2', storage: 'local:lvm', volid: 'local-lvm:iso/ubuntu-20_4.iso',
|
82
|
+
media: 'cdrom' }
|
79
83
|
vm.expects(:attach, expected_volume_attr)
|
80
84
|
vm.expects(:update, expected_config_attr)
|
81
85
|
@cr.save_vm(uuid, new_attributes)
|
@@ -86,17 +90,19 @@ module ForemanFogProxmox
|
|
86
90
|
config = mock('config')
|
87
91
|
disks = mock('disks')
|
88
92
|
disk = mock('disk')
|
89
|
-
disk.stubs(:size).returns(
|
93
|
+
disk.stubs(:size).returns('1')
|
94
|
+
disk.stubs(:hard_disk?).returns(false)
|
95
|
+
disk.stubs(:cdrom?).returns(true)
|
96
|
+
disk.stubs(:cloud_init?).returns(false)
|
90
97
|
disk.stubs(:storage).returns('local-lvm')
|
91
98
|
disk.stubs(:volid).returns('local-lvm:iso/ubuntu-20_4.iso')
|
92
99
|
disk.stubs(:media).returns('cdrom')
|
93
100
|
disk.stubs(:id).returns('ide2')
|
94
101
|
disks.stubs(:get).returns(disk)
|
95
102
|
config.stubs(:disks).returns(disks)
|
96
|
-
config.stubs(:attributes).returns(:cores => '')
|
103
|
+
config.stubs(:attributes).returns(:cores => '1', :cpulimit => '1')
|
97
104
|
vm = mock('vm')
|
98
105
|
vm.stubs(:identity).returns(uuid)
|
99
|
-
vm.stubs(:attributes).returns('ide2' => '')
|
100
106
|
vm.stubs(:config).returns(config)
|
101
107
|
vm.stubs(:container?).returns(false)
|
102
108
|
vm.stubs(:templated?).returns(false)
|
@@ -108,7 +114,7 @@ module ForemanFogProxmox
|
|
108
114
|
'node_id' => 'proxmox',
|
109
115
|
'config_attributes' => {
|
110
116
|
'cores' => '1',
|
111
|
-
'cpulimit' => '1'
|
117
|
+
'cpulimit' => '1',
|
112
118
|
},
|
113
119
|
'volumes_attributes' => {
|
114
120
|
'0' => {
|
@@ -117,11 +123,13 @@ module ForemanFogProxmox
|
|
117
123
|
'device' => '2',
|
118
124
|
'controller' => 'ide',
|
119
125
|
'storage_type' => 'cdrom',
|
120
|
-
'cdrom' => 'none'
|
121
|
-
|
122
|
-
|
126
|
+
'cdrom' => 'none',
|
127
|
+
'volid' => '',
|
128
|
+
},
|
129
|
+
},
|
123
130
|
}.with_indifferent_access
|
124
|
-
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
131
|
+
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
132
|
+
'cpulimit' => '1', 'config_attributes' => { 'onboot' => '0' })
|
125
133
|
expected_config_attr = { :cores => '1', :cpulimit => '1' }
|
126
134
|
expected_volume_attr = 'ide2'
|
127
135
|
vm.expects(:detach, expected_volume_attr)
|
@@ -134,12 +142,15 @@ module ForemanFogProxmox
|
|
134
142
|
config = mock('config')
|
135
143
|
disks = mock('disks')
|
136
144
|
disk = mock('disk')
|
137
|
-
disk.stubs(:size).returns(
|
145
|
+
disk.stubs(:size).returns('1')
|
146
|
+
disk.stubs(:hard_disk?).returns(false)
|
147
|
+
disk.stubs(:cdrom?).returns(true)
|
148
|
+
disk.stubs(:cloud_init?).returns(false)
|
138
149
|
disk.stubs(:storage).returns('local-lvm')
|
139
150
|
disk.stubs(:volid).returns('local-lvm:iso/ubuntu-20_4.iso')
|
140
151
|
disk.stubs(:media).returns('cdrom')
|
141
152
|
disk.stubs(:id).returns('ide2')
|
142
|
-
disk.stubs(:attributes).returns(id: 'ide2', storage: 'local-lvm', volid: 'local-lvm:vm-100-disk-0', size:
|
153
|
+
disk.stubs(:attributes).returns(id: 'ide2', storage: 'local-lvm', volid: 'local-lvm:vm-100-disk-0', size: '1')
|
143
154
|
disks.stubs(:get).returns(disk)
|
144
155
|
config.stubs(:disks).returns(disks)
|
145
156
|
config.stubs(:attributes).returns(:cores => '')
|
@@ -156,7 +167,7 @@ module ForemanFogProxmox
|
|
156
167
|
'node_id' => 'proxmox',
|
157
168
|
'config_attributes' => {
|
158
169
|
'cores' => '1',
|
159
|
-
'cpulimit' => '1'
|
170
|
+
'cpulimit' => '1',
|
160
171
|
},
|
161
172
|
'volumes_attributes' => {
|
162
173
|
'0' => {
|
@@ -165,11 +176,12 @@ module ForemanFogProxmox
|
|
165
176
|
'device' => '2',
|
166
177
|
'controller' => 'ide',
|
167
178
|
'storage_type' => 'cdrom',
|
168
|
-
'cdrom' => 'cdrom'
|
169
|
-
}
|
170
|
-
}
|
179
|
+
'cdrom' => 'cdrom',
|
180
|
+
},
|
181
|
+
},
|
171
182
|
}.with_indifferent_access
|
172
|
-
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
183
|
+
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
184
|
+
'cpulimit' => '1')
|
173
185
|
expected_config_attr = { :cores => '1', :cpulimit => '1' }
|
174
186
|
expected_volume_attr = { :id => 'ide2', :cdrom => 'cdrom' }
|
175
187
|
vm.expects(:attach, expected_volume_attr)
|
@@ -24,7 +24,7 @@ require 'factories/foreman_fog_proxmox/proxmox_server_mock_factory'
|
|
24
24
|
require 'active_support/core_ext/hash/indifferent_access'
|
25
25
|
|
26
26
|
module ForemanFogProxmox
|
27
|
-
class
|
27
|
+
class ProxmoxVmCommandsServerUpdateCloudinitTest < ActiveSupport::TestCase
|
28
28
|
include ComputeResourceTestHelpers
|
29
29
|
include ProxmoxNodeMockFactory
|
30
30
|
include ProxmoxServerMockFactory
|
@@ -58,7 +58,7 @@ module ForemanFogProxmox
|
|
58
58
|
'node_id' => 'proxmox',
|
59
59
|
'config_attributes' => {
|
60
60
|
'cores' => '1',
|
61
|
-
'cpulimit' => '1'
|
61
|
+
'cpulimit' => '1',
|
62
62
|
},
|
63
63
|
'volumes_attributes' => {
|
64
64
|
'0' => {
|
@@ -68,11 +68,12 @@ module ForemanFogProxmox
|
|
68
68
|
'controller' => 'ide',
|
69
69
|
'storage_type' => 'cloud_init',
|
70
70
|
'storage' => 'local-lvm',
|
71
|
-
'volid' => 'local-lvm:cloudinit'
|
72
|
-
}
|
73
|
-
}
|
71
|
+
'volid' => 'local-lvm:cloudinit',
|
72
|
+
},
|
73
|
+
},
|
74
74
|
}.with_indifferent_access
|
75
|
-
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
75
|
+
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
76
|
+
'cpulimit' => '1', 'onboot' => '0')
|
76
77
|
expected_config_attr = { :cores => '1', :cpulimit => '1' }
|
77
78
|
expected_volume_attr = { id: 'ide0', storage: 'local:lvm', volid: 'local-lvm:cloudinit', media: 'cdrom' }
|
78
79
|
vm.expects(:attach, expected_volume_attr)
|
@@ -80,19 +81,22 @@ module ForemanFogProxmox
|
|
80
81
|
@cr.save_vm(uuid, new_attributes)
|
81
82
|
end
|
82
83
|
|
83
|
-
it 'saves modified server config with removed
|
84
|
+
it 'saves modified server config with removed cloudinit' do
|
84
85
|
uuid = '100'
|
85
86
|
config = mock('config')
|
86
87
|
disks = mock('disks')
|
87
88
|
disk = mock('disk')
|
88
|
-
disk.stubs(:size).returns(
|
89
|
+
disk.stubs(:size).returns('1')
|
89
90
|
disk.stubs(:storage).returns('local-lvm')
|
90
91
|
disk.stubs(:volid).returns('local-lvm:vm-100-cloudinit')
|
91
92
|
disk.stubs(:media).returns('cdrom')
|
92
93
|
disk.stubs(:id).returns('ide0')
|
94
|
+
disk.stubs(:hard_disk?).returns(false)
|
95
|
+
disk.stubs(:cdrom?).returns(false)
|
96
|
+
disk.stubs(:cloud_init?).returns(true)
|
93
97
|
disks.stubs(:get).returns(disk)
|
94
98
|
config.stubs(:disks).returns(disks)
|
95
|
-
config.stubs(:attributes).returns(:cores => '')
|
99
|
+
config.stubs(:attributes).returns(:cores => '1')
|
96
100
|
vm = mock('vm')
|
97
101
|
vm.stubs(:identity).returns(uuid)
|
98
102
|
vm.stubs(:attributes).returns('ide0' => '')
|
@@ -107,7 +111,7 @@ module ForemanFogProxmox
|
|
107
111
|
'node_id' => 'proxmox',
|
108
112
|
'config_attributes' => {
|
109
113
|
'cores' => '1',
|
110
|
-
'cpulimit' => '1'
|
114
|
+
'cpulimit' => '1',
|
111
115
|
},
|
112
116
|
'volumes_attributes' => {
|
113
117
|
'0' => {
|
@@ -115,11 +119,13 @@ module ForemanFogProxmox
|
|
115
119
|
'_delete' => '1',
|
116
120
|
'device' => '0',
|
117
121
|
'controller' => 'ide',
|
118
|
-
'storage_type' => 'cloud_init'
|
119
|
-
|
120
|
-
|
122
|
+
'storage_type' => 'cloud_init',
|
123
|
+
'volid' => 'local-lvm:vm-100-cloudinit',
|
124
|
+
},
|
125
|
+
},
|
121
126
|
}.with_indifferent_access
|
122
|
-
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
127
|
+
@cr.stubs(:parse_server_vm).returns('vmid' => '100', 'node_id' => 'proxmox', 'type' => 'qemu', 'cores' => '1',
|
128
|
+
'cpulimit' => '1', 'config_attributes' => { 'onboot' => '0' })
|
123
129
|
expected_config_attr = { :cores => '1', :cpulimit => '1' }
|
124
130
|
expected_volume_attr = 'ide0'
|
125
131
|
vm.expects(:detach, expected_volume_attr)
|