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
@@ -41,8 +41,8 @@ module ForemanFogProxmox
|
|
41
41
|
'config_attributes' => {
|
42
42
|
'onboot' => '0',
|
43
43
|
'description' => '',
|
44
|
-
'memory' => '
|
45
|
-
'swap' => '
|
44
|
+
'memory' => '1024',
|
45
|
+
'swap' => '512',
|
46
46
|
'cores' => '1',
|
47
47
|
'cpulimit' => '',
|
48
48
|
'cpuunits' => '',
|
@@ -50,12 +50,12 @@ module ForemanFogProxmox
|
|
50
50
|
'ostype' => 'debian',
|
51
51
|
'hostname' => 'toto-tata.pve',
|
52
52
|
'nameserver' => '',
|
53
|
-
'searchdomain' => ''
|
53
|
+
'searchdomain' => '',
|
54
54
|
|
55
55
|
},
|
56
56
|
'volumes_attributes' => {
|
57
|
-
'0' => { 'id' => 'rootfs', 'storage' => 'local-lvm', 'size' => '
|
58
|
-
'1' => { 'id' => 'mp0', 'storage' => 'local-lvm', 'size' => '
|
57
|
+
'0' => { 'id' => 'rootfs', 'storage' => 'local-lvm', 'size' => '1', 'cache' => '' },
|
58
|
+
'1' => { 'id' => 'mp0', 'storage' => 'local-lvm', 'size' => '1', 'mp' => '/opt/path' },
|
59
59
|
},
|
60
60
|
'interfaces_attributes' => {
|
61
61
|
'0' => {
|
@@ -67,8 +67,8 @@ module ForemanFogProxmox
|
|
67
67
|
'ip6' => 'dhcp',
|
68
68
|
'rate' => '',
|
69
69
|
'gw' => '192.168.56.100',
|
70
|
-
'gw6' => '2001:0:1234::c1c0:abcd:876'
|
71
|
-
}
|
70
|
+
'gw6' => '2001:0:1234::c1c0:abcd:876',
|
71
|
+
},
|
72
72
|
},
|
73
73
|
'1' => {
|
74
74
|
'id' => 'net1',
|
@@ -78,9 +78,9 @@ module ForemanFogProxmox
|
|
78
78
|
'ip' => 'dhcp',
|
79
79
|
'ip6' => 'dhcp',
|
80
80
|
'gw' => '192.168.56.100',
|
81
|
-
'gw6' => '2001:0:1234::c1c0:abcd:876'
|
82
|
-
}
|
83
|
-
}
|
81
|
+
'gw6' => '2001:0:1234::c1c0:abcd:876',
|
82
|
+
},
|
83
|
+
},
|
84
84
|
} }
|
85
85
|
end
|
86
86
|
|
@@ -92,10 +92,10 @@ module ForemanFogProxmox
|
|
92
92
|
:type => 'lxc',
|
93
93
|
'node_id' => 'proxmox',
|
94
94
|
:node_id => 'proxmox',
|
95
|
-
:memory =>
|
96
|
-
'templated' => 0,
|
97
|
-
:onboot => 0,
|
98
|
-
:swap =>
|
95
|
+
:memory => '1024',
|
96
|
+
'templated' => '0',
|
97
|
+
:onboot => '0',
|
98
|
+
:swap => '512',
|
99
99
|
'cores' => '1',
|
100
100
|
:arch => 'amd64',
|
101
101
|
:ostype => 'debian',
|
@@ -103,8 +103,8 @@ module ForemanFogProxmox
|
|
103
103
|
'ostemplate_storage' => 'local',
|
104
104
|
'ostemplate_file' => 'local:vztmpl/alpine-3.7-default_20171211_amd64.tar.xz',
|
105
105
|
'password' => 'proxmox01',
|
106
|
-
:rootfs => 'local-lvm:
|
107
|
-
:mp0 => 'local-lvm:
|
106
|
+
:rootfs => 'local-lvm:1',
|
107
|
+
:mp0 => 'local-lvm:1,mp=/opt/path',
|
108
108
|
'net0' => 'name=eth0,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876',
|
109
109
|
'net1' => 'model=eth1,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876' }
|
110
110
|
end
|
@@ -114,22 +114,20 @@ module ForemanFogProxmox
|
|
114
114
|
'name' => 'test',
|
115
115
|
'type' => 'lxc',
|
116
116
|
'node_id' => 'proxmox',
|
117
|
-
'volumes_attributes' => { '0' => { '_delete' => '1', 'device' => '0', 'storage' => 'local-lvm', 'size' => '
|
117
|
+
'volumes_attributes' => { '0' => { '_delete' => '1', 'device' => '0', 'storage' => 'local-lvm', 'size' => '1', 'mp' => '/opt/path' } },
|
118
118
|
'interfaces_attributes' => { '0' => { '_delete' => '1', 'id' => 'net0', 'name' => 'eth0' } } }
|
119
119
|
end
|
120
120
|
|
121
121
|
test '#memory' do
|
122
|
-
memory = parse_typed_memory(host_form['config_attributes'], type)
|
123
|
-
assert memory.key?(
|
124
|
-
assert_equal
|
125
|
-
assert memory.key?(
|
126
|
-
assert_equal
|
122
|
+
memory = parse_typed_memory(host_form['config_attributes'].select { |key, _value| config_typed_keys(type)[:memory].include? key }, type)
|
123
|
+
assert memory.key?('memory')
|
124
|
+
assert_equal '1024', memory['memory']
|
125
|
+
assert memory.key?('swap')
|
126
|
+
assert_equal '512', memory['swap']
|
127
127
|
end
|
128
128
|
|
129
129
|
test '#cpu' do
|
130
|
-
cpu = parse_typed_cpu(host_form['config_attributes'], type)
|
131
|
-
assert cpu.key?(:cores)
|
132
|
-
assert_equal '1', cpu[:cores]
|
130
|
+
cpu = parse_typed_cpu(host_form['config_attributes'].select { |key, _value| config_typed_keys(type)[:cpu].include? key }, type)
|
133
131
|
assert cpu.key?(:arch)
|
134
132
|
assert_equal 'amd64', cpu[:arch]
|
135
133
|
end
|
@@ -137,22 +135,11 @@ module ForemanFogProxmox
|
|
137
135
|
test '#ostemplate' do
|
138
136
|
ostemplate = parse_container_ostemplate(host_form)
|
139
137
|
expected_ostemplate = {
|
140
|
-
:ostemplate => 'local:vztmpl/alpine-3.7-default_20171211_amd64.tar.xz'
|
138
|
+
:ostemplate => 'local:vztmpl/alpine-3.7-default_20171211_amd64.tar.xz',
|
141
139
|
}
|
142
140
|
assert_equal expected_ostemplate, ostemplate
|
143
141
|
end
|
144
142
|
|
145
|
-
test '#vm host_form' do
|
146
|
-
vm = parse_typed_vm(host_form, type)
|
147
|
-
assert_equal 536_870_912, vm[:memory]
|
148
|
-
assert_equal 'local-lvm:1073741824', vm[:rootfs]
|
149
|
-
assert_equal 'name=eth0,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876', vm[:net0]
|
150
|
-
assert_equal 'toto-tata.pve', vm[:hostname]
|
151
|
-
assert_not vm.key?(:config)
|
152
|
-
assert_not vm.key?(:node)
|
153
|
-
assert_not vm.key?(:type)
|
154
|
-
end
|
155
|
-
|
156
143
|
test '#vm container' do
|
157
144
|
vm = parse_typed_vm(host_form, type)
|
158
145
|
expected_vm = ActiveSupport::HashWithIndifferentAccess.new(
|
@@ -160,16 +147,16 @@ module ForemanFogProxmox
|
|
160
147
|
:password => 'proxmox01',
|
161
148
|
:ostemplate => 'local:vztmpl/alpine-3.7-default_20171211_amd64.tar.xz',
|
162
149
|
:onboot => '0',
|
163
|
-
:memory =>
|
164
|
-
:swap =>
|
150
|
+
:memory => '1024',
|
151
|
+
:swap => '512',
|
165
152
|
:cores => '1',
|
166
153
|
:arch => 'amd64',
|
167
154
|
:ostype => 'debian',
|
168
155
|
:hostname => 'toto-tata.pve',
|
169
156
|
:net0 => 'name=eth0,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876',
|
170
157
|
:net1 => 'name=eth1,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876',
|
171
|
-
:rootfs => 'local-lvm:
|
172
|
-
:mp0 => 'local-lvm:
|
158
|
+
:rootfs => 'local-lvm:1',
|
159
|
+
:mp0 => 'local-lvm:1,mp=/opt/path'
|
173
160
|
)
|
174
161
|
assert_equal expected_vm, vm
|
175
162
|
end
|
@@ -180,10 +167,10 @@ module ForemanFogProxmox
|
|
180
167
|
assert_equal 2, volumes.size
|
181
168
|
assert rootfs = volumes.first
|
182
169
|
assert rootfs.key?(:rootfs)
|
183
|
-
assert_equal 'local-lvm:
|
170
|
+
assert_equal 'local-lvm:1', rootfs[:rootfs]
|
184
171
|
assert mp0 = volumes[1]
|
185
172
|
assert mp0.key?(:mp0)
|
186
|
-
assert_equal 'local-lvm:
|
173
|
+
assert_equal 'local-lvm:1,mp=/opt/path', mp0[:mp0]
|
187
174
|
end
|
188
175
|
|
189
176
|
test '#interface with name eth0 and bridge' do
|
@@ -192,7 +179,8 @@ module ForemanFogProxmox
|
|
192
179
|
add_or_delete_typed_interface(host_form['interfaces_attributes']['0'], deletes, nics, type)
|
193
180
|
assert 1, nics.length
|
194
181
|
assert nics[0].key?(:net0)
|
195
|
-
assert_equal 'name=eth0,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876',
|
182
|
+
assert_equal 'name=eth0,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876',
|
183
|
+
nics[0][:net0]
|
196
184
|
end
|
197
185
|
|
198
186
|
test '#interface with name eth1 and bridge' do
|
@@ -201,7 +189,8 @@ module ForemanFogProxmox
|
|
201
189
|
add_or_delete_typed_interface(host_form['interfaces_attributes']['1'], deletes, nics, type)
|
202
190
|
assert 1, nics.length
|
203
191
|
assert nics[0].key?(:net1)
|
204
|
-
assert_equal 'name=eth1,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876',
|
192
|
+
assert_equal 'name=eth1,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876',
|
193
|
+
nics[0][:net1]
|
205
194
|
end
|
206
195
|
|
207
196
|
test '#interface delete net0' do
|
@@ -217,8 +206,10 @@ module ForemanFogProxmox
|
|
217
206
|
interfaces_to_add, interfaces_to_delete = parse_typed_interfaces(host_form, type)
|
218
207
|
assert_empty interfaces_to_delete
|
219
208
|
assert_equal 2, interfaces_to_add.length
|
220
|
-
assert_includes interfaces_to_add,
|
221
|
-
|
209
|
+
assert_includes interfaces_to_add,
|
210
|
+
{ net0: 'name=eth0,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876' }
|
211
|
+
assert_includes interfaces_to_add,
|
212
|
+
{ net1: 'name=eth1,bridge=vmbr0,ip=dhcp,ip6=dhcp,gw=192.168.56.100,gw6=2001:0:1234::c1c0:abcd:876' }
|
222
213
|
end
|
223
214
|
end
|
224
215
|
end
|
@@ -38,23 +38,27 @@ module ForemanFogProxmox
|
|
38
38
|
'type' => 'qemu',
|
39
39
|
'config_attributes' => {
|
40
40
|
'name' => 'toto-tata.pve',
|
41
|
-
'memory' => '
|
42
|
-
'balloon' => '
|
43
|
-
'shares' => '
|
41
|
+
'memory' => '1024',
|
42
|
+
'balloon' => '512',
|
43
|
+
'shares' => '512',
|
44
44
|
'cpu_type' => 'kvm64',
|
45
45
|
'spectre' => '+1',
|
46
46
|
'pcid' => '0',
|
47
47
|
'cores' => '1',
|
48
|
-
'sockets' => '1'
|
48
|
+
'sockets' => '1',
|
49
49
|
},
|
50
50
|
'volumes_attributes' => {
|
51
|
-
'0' => { 'id' => 'scsi0', 'storage_type' => 'hard_disk', 'controller' => 'scsi', 'device' => '0', 'storage' => 'local-lvm', 'size' => '
|
52
|
-
'1' => { 'id' => 'virtio0', 'storage_type' => 'hard_disk', 'controller' => 'virtio', 'device' => '0', 'storage' => 'local-lvm', 'size' => '
|
53
|
-
'2' => { 'id' => 'ide2', 'storage_type' => 'cdrom', 'controller' => 'ide', 'device' => '2', 'storage' => 'local-lvm', 'cdrom' => 'none' }
|
51
|
+
'0' => { 'id' => 'scsi0', 'storage_type' => 'hard_disk', 'controller' => 'scsi', 'device' => '0', 'storage' => 'local-lvm', 'size' => '10', 'cache' => 'none' },
|
52
|
+
'1' => { 'id' => 'virtio0', 'storage_type' => 'hard_disk', 'controller' => 'virtio', 'device' => '0', 'storage' => 'local-lvm', 'size' => '10', 'cache' => 'none' },
|
53
|
+
'2' => { 'id' => 'ide2', 'storage_type' => 'cdrom', 'controller' => 'ide', 'device' => '2', 'storage' => 'local-lvm', 'cdrom' => 'none' },
|
54
54
|
},
|
55
55
|
'interfaces_attributes' => {
|
56
|
-
'0' => { 'id' => 'net0',
|
57
|
-
|
56
|
+
'0' => { 'id' => 'net0',
|
57
|
+
'compute_attributes' => { 'model' => 'virtio', 'bridge' => 'vmbr0', 'firewall' => '0', 'link_down' => '0',
|
58
|
+
'rate' => nil } },
|
59
|
+
'1' => { 'id' => 'net1',
|
60
|
+
'compute_attributes' => { 'model' => 'e1000', 'bridge' => 'vmbr0', 'firewall' => '0',
|
61
|
+
'link_down' => '0' } },
|
58
62
|
} }
|
59
63
|
end
|
60
64
|
|
@@ -64,20 +68,21 @@ module ForemanFogProxmox
|
|
64
68
|
'name' => 'test',
|
65
69
|
'type' => 'qemu',
|
66
70
|
'volumes_attributes' => {
|
67
|
-
'0' => { '_delete' => '1', 'storage_type' => 'hard_disk', 'controller' => 'scsi', 'device' => '0', 'storage' => 'local-lvm', 'size' => '
|
68
|
-
'1' => { '_delete' => '', 'storage_type' => 'cdrom', 'controller' => 'ide', 'device' => '2', 'storage' => 'local-lvm', 'volid' => 'local-lvm:iso/debian-netinst.iso', 'cdrom' => 'image' }
|
71
|
+
'0' => { '_delete' => '1', 'storage_type' => 'hard_disk', 'controller' => 'scsi', 'device' => '0', 'storage' => 'local-lvm', 'size' => '10' },
|
72
|
+
'1' => { '_delete' => '', 'storage_type' => 'cdrom', 'controller' => 'ide', 'device' => '2', 'storage' => 'local-lvm', 'volid' => 'local-lvm:iso/debian-netinst.iso', 'cdrom' => 'image' },
|
69
73
|
},
|
70
|
-
'interfaces_attributes' => { '0' => { '_delete' => '1', 'id' => 'net0',
|
74
|
+
'interfaces_attributes' => { '0' => { '_delete' => '1', 'id' => 'net0',
|
75
|
+
'compute_attributes' => { 'model' => 'virtio' } } } }
|
71
76
|
end
|
72
77
|
|
73
78
|
test '#memory' do
|
74
|
-
memory = parse_typed_memory(host_form['config_attributes'], type)
|
75
|
-
|
76
|
-
assert_equal
|
79
|
+
memory = parse_typed_memory(host_form['config_attributes'].select { |key, _value| config_typed_keys(type)[:memory].include? key }, type)
|
80
|
+
expected_memory = { 'memory' => '1024', 'balloon' => '512', 'shares' => '512' }
|
81
|
+
assert_equal expected_memory, memory
|
77
82
|
end
|
78
83
|
|
79
84
|
test '#cpu' do
|
80
|
-
cpu = parse_typed_cpu(host_form['config_attributes'], type)
|
85
|
+
cpu = parse_typed_cpu(host_form['config_attributes'].select { |key, _value| config_typed_keys(type)[:cpu].include? key }, type)
|
81
86
|
assert cpu.key?(:cpu)
|
82
87
|
assert_equal 'cputype=kvm64,flags=+spec-ctrl', cpu[:cpu]
|
83
88
|
end
|
@@ -103,40 +108,48 @@ module ForemanFogProxmox
|
|
103
108
|
end
|
104
109
|
|
105
110
|
test '#vm' do
|
111
|
+
expected_vm = ActiveSupport::HashWithIndifferentAccess.new(
|
112
|
+
{
|
113
|
+
'vmid' => '100',
|
114
|
+
'name' => 'toto-tata.pve',
|
115
|
+
'memory' => '1024',
|
116
|
+
'balloon' => '512',
|
117
|
+
'shares' => '512',
|
118
|
+
'cores' => '1',
|
119
|
+
'sockets' => '1',
|
120
|
+
'cpu' => 'cputype=kvm64,flags=+spec-ctrl',
|
121
|
+
'net0' => 'model=virtio,bridge=vmbr0,firewall=0,link_down=0',
|
122
|
+
'net1' => 'model=e1000,bridge=vmbr0,firewall=0,link_down=0',
|
123
|
+
'scsi0' => 'local-lvm:10,cache=none',
|
124
|
+
'virtio0' => 'local-lvm:10,cache=none',
|
125
|
+
'ide2' => 'none,media=cdrom',
|
126
|
+
}
|
127
|
+
)
|
106
128
|
vm = parse_typed_vm(host_form, type)
|
107
|
-
assert_equal
|
108
|
-
assert_equal '1', vm['sockets']
|
109
|
-
assert_equal 'cputype=kvm64,flags=+spec-ctrl', vm[:cpu]
|
110
|
-
assert_equal 536_870_912, vm[:memory]
|
111
|
-
assert_equal 268_435_456, vm[:balloon]
|
112
|
-
assert_equal 5, vm[:shares]
|
113
|
-
assert_equal 'local-lvm:1073741824,cache=none', vm[:scsi0]
|
114
|
-
assert_equal 'model=virtio,bridge=vmbr0,firewall=0,link_down=0', vm[:net0]
|
115
|
-
assert_equal 'toto-tata.pve', vm[:name]
|
116
|
-
assert_not vm.key?(:config)
|
117
|
-
assert_not vm.key?(:node)
|
129
|
+
assert_equal expected_vm, vm
|
118
130
|
end
|
119
131
|
|
120
|
-
test '#volume with scsi
|
132
|
+
test '#volume with scsi 10Gb' do
|
121
133
|
volumes = parse_typed_volumes(host_form['volumes_attributes'], type)
|
122
134
|
assert_not volumes.empty?
|
123
135
|
assert volumes.size, 3
|
124
136
|
scsi0 = (volumes.select { |volume| volume.key?(:scsi0) }).first
|
125
|
-
assert_equal 'local-lvm:
|
137
|
+
assert_equal 'local-lvm:10,cache=none', scsi0[:scsi0]
|
126
138
|
end
|
127
139
|
|
128
|
-
test '#volume with virtio
|
140
|
+
test '#volume with virtio 10Gb' do
|
129
141
|
volumes = parse_typed_volumes(host_form['volumes_attributes'], type)
|
130
142
|
assert_not volumes.empty?
|
131
143
|
assert volumes.size, 3
|
132
144
|
virtio0 = (volumes.select { |volume| volume.key?(:virtio0) }).first
|
133
|
-
assert_equal 'local-lvm:
|
145
|
+
assert_equal 'local-lvm:10,cache=none', virtio0[:virtio0]
|
134
146
|
end
|
135
147
|
|
136
148
|
test '#interface with model virtio and bridge' do
|
137
149
|
interfaces_to_delete = []
|
138
150
|
interfaces_to_add = []
|
139
|
-
add_or_delete_typed_interface(host_form['interfaces_attributes']['0'], interfaces_to_delete, interfaces_to_add,
|
151
|
+
add_or_delete_typed_interface(host_form['interfaces_attributes']['0'], interfaces_to_delete, interfaces_to_add,
|
152
|
+
type)
|
140
153
|
assert_empty interfaces_to_delete
|
141
154
|
assert_equal 1, interfaces_to_add.length
|
142
155
|
assert interfaces_to_add[0].key?(:net0)
|
@@ -146,7 +159,8 @@ module ForemanFogProxmox
|
|
146
159
|
test '#interface with model e1000 and bridge' do
|
147
160
|
interfaces_to_delete = []
|
148
161
|
interfaces_to_add = []
|
149
|
-
add_or_delete_typed_interface(host_form['interfaces_attributes']['1'], interfaces_to_delete, interfaces_to_add,
|
162
|
+
add_or_delete_typed_interface(host_form['interfaces_attributes']['1'], interfaces_to_delete, interfaces_to_add,
|
163
|
+
type)
|
150
164
|
assert_empty interfaces_to_delete
|
151
165
|
assert_equal 1, interfaces_to_add.length
|
152
166
|
assert interfaces_to_add[0].key?(:net1)
|
@@ -156,7 +170,8 @@ module ForemanFogProxmox
|
|
156
170
|
test '#interface delete net0' do
|
157
171
|
interfaces_to_delete = []
|
158
172
|
interfaces_to_add = []
|
159
|
-
add_or_delete_typed_interface(host_delete['interfaces_attributes']['0'], interfaces_to_delete,
|
173
|
+
add_or_delete_typed_interface(host_delete['interfaces_attributes']['0'], interfaces_to_delete,
|
174
|
+
interfaces_to_add, type)
|
160
175
|
assert_empty interfaces_to_add
|
161
176
|
assert_equal 1, interfaces_to_delete.length
|
162
177
|
assert_equal 'net0', interfaces_to_delete[0]
|
@@ -42,13 +42,13 @@ module ForemanFogProxmox
|
|
42
42
|
:node_id => 'proxmox',
|
43
43
|
:service => service,
|
44
44
|
'templated' => '0',
|
45
|
-
'memory' => '
|
45
|
+
'memory' => '512',
|
46
46
|
'swap' => '',
|
47
47
|
'cores' => '1',
|
48
48
|
'arch' => 'amd64',
|
49
49
|
'ostype' => 'debian',
|
50
|
-
'rootfs' => 'local-lvm:
|
51
|
-
'mp0' => 'local-lvm:
|
50
|
+
'rootfs' => 'local-lvm:10',
|
51
|
+
'mp0' => 'local-lvm:10',
|
52
52
|
'net0' => 'name=eth0,bridge=vmbr0,ip=dhcp,ip6=dhcp',
|
53
53
|
'net1' => 'name=eth1,bridge=vmbr0,ip=dhcp,ip6=dhcp'
|
54
54
|
)
|
@@ -66,8 +66,7 @@ module ForemanFogProxmox
|
|
66
66
|
:type => 'qemu',
|
67
67
|
'templated' => '0',
|
68
68
|
'ide2' => 'local-lvm:iso/debian-netinst.iso,media=cdrom',
|
69
|
-
'memory' => '
|
70
|
-
'min_memory' => '',
|
69
|
+
'memory' => '1024',
|
71
70
|
'ballon' => '',
|
72
71
|
'shares' => '',
|
73
72
|
'cpu_type' => 'kvm64',
|
@@ -75,7 +74,7 @@ module ForemanFogProxmox
|
|
75
74
|
'pcid' => '0',
|
76
75
|
'cores' => '1',
|
77
76
|
'sockets' => '1',
|
78
|
-
'scsi0' => 'local-lvm:
|
77
|
+
'scsi0' => 'local-lvm:10,cache=none',
|
79
78
|
'net0' => 'model=virtio,bridge=vmbr0',
|
80
79
|
'net1' => 'model=e1000,bridge=vmbr0'
|
81
80
|
)
|
@@ -87,22 +86,21 @@ module ForemanFogProxmox
|
|
87
86
|
'node_id' => 'proxmox',
|
88
87
|
'type' => 'qemu',
|
89
88
|
'config_attributes' => {
|
90
|
-
'memory' => '
|
91
|
-
'
|
92
|
-
'
|
93
|
-
'shares' => '',
|
89
|
+
'memory' => '1024',
|
90
|
+
'balloon' => '512',
|
91
|
+
'shares' => '512',
|
94
92
|
'cpu_type' => 'kvm64',
|
95
93
|
'spectre' => '1',
|
96
94
|
'pcid' => '0',
|
97
95
|
'cores' => '1',
|
98
|
-
'sockets' => '1'
|
96
|
+
'sockets' => '1',
|
99
97
|
},
|
100
98
|
'volumes_attributes' => {
|
101
|
-
'0' => { 'controller' => 'scsi', 'device' => '0', 'storage' => 'local-lvm', 'size' => '
|
99
|
+
'0' => { 'controller' => 'scsi', 'device' => '0', 'storage' => 'local-lvm', 'size' => '10', 'cache' => 'none' },
|
102
100
|
},
|
103
101
|
'interfaces_attributes' => {
|
104
102
|
'0' => { 'id' => 'net0', 'model' => 'virtio', 'bridge' => 'vmbr0', 'firewall' => '0', 'disconnect' => '0' },
|
105
|
-
'1' => { 'id' => 'net1', 'model' => 'e1000', 'bridge' => 'vmbr0', 'firewall' => '0', 'disconnect' => '0' }
|
103
|
+
'1' => { 'id' => 'net1', 'model' => 'e1000', 'bridge' => 'vmbr0', 'firewall' => '0', 'disconnect' => '0' },
|
106
104
|
} }
|
107
105
|
end
|
108
106
|
|
@@ -117,8 +115,8 @@ module ForemanFogProxmox
|
|
117
115
|
'config_attributes' => {
|
118
116
|
'onboot' => '0',
|
119
117
|
'description' => '',
|
120
|
-
'memory' => '
|
121
|
-
'swap' => '',
|
118
|
+
'memory' => '1024',
|
119
|
+
'swap' => '512',
|
122
120
|
'cores' => '1',
|
123
121
|
'cpulimit' => '',
|
124
122
|
'cpuunits' => '',
|
@@ -126,16 +124,16 @@ module ForemanFogProxmox
|
|
126
124
|
'ostype' => 'debian',
|
127
125
|
'hostname' => '',
|
128
126
|
'nameserver' => '',
|
129
|
-
'searchdomain' => ''
|
127
|
+
'searchdomain' => '',
|
130
128
|
|
131
129
|
},
|
132
130
|
'volumes_attributes' => {
|
133
|
-
'0' => { 'id' => 'rootfs', 'storage' => 'local-lvm', 'size' => '
|
134
|
-
'1' => { 'id' => 'mp0', 'storage' => 'local-lvm', 'size' => '
|
131
|
+
'0' => { 'id' => 'rootfs', 'storage' => 'local-lvm', 'size' => '10' },
|
132
|
+
'1' => { 'id' => 'mp0', 'storage' => 'local-lvm', 'size' => '10' },
|
135
133
|
},
|
136
134
|
'interfaces_attributes' => {
|
137
135
|
'0' => { 'id' => 'net0', 'name' => 'eth0', 'bridge' => 'vmbr0', 'ip' => 'dhcp', 'ip6' => 'dhcp' },
|
138
|
-
'1' => { 'id' => 'net1', 'name' => 'eth1', 'bridge' => 'vmbr0', 'ip' => 'dhcp', 'ip6' => 'dhcp' }
|
136
|
+
'1' => { 'id' => 'net1', 'name' => 'eth1', 'bridge' => 'vmbr0', 'ip' => 'dhcp', 'ip6' => 'dhcp' },
|
139
137
|
} }
|
140
138
|
end
|
141
139
|
|
@@ -147,72 +145,38 @@ module ForemanFogProxmox
|
|
147
145
|
|
148
146
|
it '#server qemu' do
|
149
147
|
config_hash = object_to_config_hash(server, 'qemu')
|
150
|
-
expected_config_hash = ActiveSupport::HashWithIndifferentAccess.new(server.config.attributes).reject
|
148
|
+
expected_config_hash = ActiveSupport::HashWithIndifferentAccess.new(server.config.attributes).reject do |key, _value|
|
149
|
+
excluded_qemu_keys.include? key
|
150
|
+
end
|
151
151
|
assert_equal expected_config_hash, config_hash['config_attributes']
|
152
152
|
end
|
153
153
|
|
154
154
|
it '#server lxc' do
|
155
155
|
config_hash = object_to_config_hash(server, 'lxc')
|
156
156
|
assert config_hash.key?('config_attributes')
|
157
|
-
expected_config_hash = ActiveSupport::HashWithIndifferentAccess.new(server.config.attributes).reject
|
157
|
+
expected_config_hash = ActiveSupport::HashWithIndifferentAccess.new(server.config.attributes).reject do |key, _value|
|
158
|
+
excluded_qemu_keys.include? key
|
159
|
+
end
|
158
160
|
assert_equal expected_config_hash, config_hash['config_attributes']
|
159
161
|
end
|
160
162
|
|
161
163
|
it '#container qemu' do
|
162
164
|
config_hash = object_to_config_hash(container, 'qemu')
|
163
165
|
assert config_hash.key?('config_attributes')
|
164
|
-
expected_config_hash = ActiveSupport::HashWithIndifferentAccess.new(container.config.attributes).reject
|
166
|
+
expected_config_hash = ActiveSupport::HashWithIndifferentAccess.new(container.config.attributes).reject do |key, _value|
|
167
|
+
excluded_lxc_keys.include? key
|
168
|
+
end
|
165
169
|
assert_equal expected_config_hash, config_hash['config_attributes']
|
166
170
|
end
|
167
171
|
|
168
172
|
it '#container lxc' do
|
169
173
|
config_hash = object_to_config_hash(container, 'lxc')
|
170
174
|
assert config_hash.key?('config_attributes')
|
171
|
-
expected_config_hash = ActiveSupport::HashWithIndifferentAccess.new(container.config.attributes).reject
|
175
|
+
expected_config_hash = ActiveSupport::HashWithIndifferentAccess.new(container.config.attributes).reject do |key, _value|
|
176
|
+
excluded_lxc_keys.include? key
|
177
|
+
end
|
172
178
|
assert_equal expected_config_hash, config_hash['config_attributes']
|
173
179
|
end
|
174
180
|
end
|
175
|
-
|
176
|
-
describe 'convert_sizes' do
|
177
|
-
setup { Fog.mock! }
|
178
|
-
teardown { Fog.unmock! }
|
179
|
-
|
180
|
-
it '#server' do
|
181
|
-
convert_sizes(host_server)
|
182
|
-
assert_equal '512', host_server['config_attributes']['memory']
|
183
|
-
assert_equal '1', host_server['volumes_attributes']['0']['size']
|
184
|
-
end
|
185
|
-
|
186
|
-
it '#container' do
|
187
|
-
convert_sizes(host_container)
|
188
|
-
assert_equal '512', host_container['config_attributes']['memory']
|
189
|
-
assert_equal '1', host_container['volumes_attributes']['0']['size']
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
describe 'convert_memory_size' do
|
194
|
-
setup { Fog.mock! }
|
195
|
-
teardown { Fog.unmock! }
|
196
|
-
|
197
|
-
it '#server memory' do
|
198
|
-
convert_memory_size(host_server['config_attributes'], 'memory')
|
199
|
-
assert_equal '512', host_server['config_attributes']['memory']
|
200
|
-
end
|
201
|
-
|
202
|
-
it '#server min_memory nil' do
|
203
|
-
convert_memory_size(host_server['config_attributes'], 'min_memory')
|
204
|
-
assert_nil host_server['config_attributes']['min_memory']
|
205
|
-
end
|
206
|
-
|
207
|
-
it '#container memory' do
|
208
|
-
convert_memory_size(host_container['config_attributes'], 'memory')
|
209
|
-
assert_equal '512', host_container['config_attributes']['memory']
|
210
|
-
end
|
211
|
-
|
212
|
-
it '#container swap empty' do
|
213
|
-
convert_memory_size(host_container['config_attributes'], 'swap')
|
214
|
-
assert_empty host_container['config_attributes']['swap']
|
215
|
-
end
|
216
|
-
end
|
217
181
|
end
|
218
182
|
end
|
@@ -47,11 +47,11 @@ module ForemanFogProxmox
|
|
47
47
|
:compute_attributes => {
|
48
48
|
'type' => 'qemu',
|
49
49
|
'config_attributes' => {
|
50
|
-
'ostype' => 'l26'
|
50
|
+
'ostype' => 'l26',
|
51
51
|
},
|
52
52
|
'interfaces_attributes' => {
|
53
|
-
'0' => physical_nic
|
54
|
-
}
|
53
|
+
'0' => physical_nic,
|
54
|
+
},
|
55
55
|
}
|
56
56
|
)
|
57
57
|
err = assert_raises Foreman::Exception do
|
@@ -61,18 +61,19 @@ module ForemanFogProxmox
|
|
61
61
|
end
|
62
62
|
|
63
63
|
it 'sets container hostname with host name' do
|
64
|
-
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'net0', :primary => true,
|
64
|
+
physical_nic = FactoryBot.build(:nic_base_empty, :identifier => 'net0', :primary => true,
|
65
|
+
:compute_attributes => { 'dhcp' => '1', 'dhcp6' => '1' })
|
65
66
|
host = FactoryBot.build(
|
66
67
|
:host_empty,
|
67
68
|
:interfaces => [physical_nic],
|
68
69
|
:compute_attributes => {
|
69
70
|
'type' => 'lxc',
|
70
71
|
'config_attributes' => {
|
71
|
-
'hostname' => ''
|
72
|
+
'hostname' => '',
|
72
73
|
},
|
73
74
|
'interfaces_attributes' => {
|
74
|
-
'0' => {}
|
75
|
-
}
|
75
|
+
'0' => {},
|
76
|
+
},
|
76
77
|
}
|
77
78
|
)
|
78
79
|
@cr.host_compute_attrs(host)
|
@@ -91,7 +92,9 @@ module ForemanFogProxmox
|
|
91
92
|
vm_attrs = @cr.vm_compute_attributes(vm)
|
92
93
|
assert_not vm_attrs.key?(:config)
|
93
94
|
assert vm_attrs.key?(:config_attributes)
|
94
|
-
assert_equal config_attributes.reject { |key, value|
|
95
|
+
assert_equal config_attributes.reject { |key, value|
|
96
|
+
excluded_keys.include?(key) || value.to_s.empty?
|
97
|
+
}, vm_attrs[:config_attributes]
|
95
98
|
assert_not vm_attrs[:config_attributes].key?(:disks)
|
96
99
|
assert vm_attrs.key?(:volumes_attributes)
|
97
100
|
assert_equal volume_attributes, vm_attrs[:volumes_attributes]['0']
|
@@ -99,8 +102,10 @@ module ForemanFogProxmox
|
|
99
102
|
assert vm_attrs.key?(:interfaces_attributes)
|
100
103
|
assert_equal interface_attributes[:id], vm_attrs[:interfaces_attributes]['0'][:id]
|
101
104
|
assert_equal interface_attributes[:mac], vm_attrs[:interfaces_attributes]['0'][:compute_attributes][:macaddr]
|
102
|
-
assert_equal interface_attributes[:compute_attributes][:model],
|
103
|
-
|
105
|
+
assert_equal interface_attributes[:compute_attributes][:model],
|
106
|
+
vm_attrs[:interfaces_attributes]['0'][:compute_attributes][:model]
|
107
|
+
assert_equal interface_attributes[:compute_attributes][:bridge],
|
108
|
+
vm_attrs[:interfaces_attributes]['0'][:compute_attributes][:bridge]
|
104
109
|
end
|
105
110
|
|
106
111
|
it 'converts a container to hash' do
|
@@ -108,15 +113,19 @@ module ForemanFogProxmox
|
|
108
113
|
vm_attrs = @cr.vm_compute_attributes(vm)
|
109
114
|
assert_not vm_attrs.key?(:config)
|
110
115
|
assert vm_attrs.key?(:config_attributes)
|
111
|
-
assert_equal config_attributes.reject { |key, value|
|
116
|
+
assert_equal config_attributes.reject { |key, value|
|
117
|
+
excluded_keys.include?(key) || value.to_s.empty?
|
118
|
+
}, vm_attrs[:config_attributes]
|
112
119
|
assert_not vm_attrs[:config_attributes].key?(:disks)
|
113
120
|
assert vm_attrs.key?(:volumes_attributes)
|
114
121
|
assert_equal volume_attributes, vm_attrs[:volumes_attributes]['0']
|
115
122
|
assert vm_attrs.key?(:interfaces_attributes)
|
116
123
|
assert_equal interface_attributes[:id], vm_attrs[:interfaces_attributes]['0'][:id]
|
117
|
-
assert_equal interface_attributes[:compute_attributes][:name],
|
124
|
+
assert_equal interface_attributes[:compute_attributes][:name],
|
125
|
+
vm_attrs[:interfaces_attributes]['0'][:compute_attributes][:name]
|
118
126
|
assert_equal interface_attributes[:mac], vm_attrs[:interfaces_attributes]['0'][:compute_attributes][:hwaddr]
|
119
|
-
assert_equal interface_attributes[:compute_attributes][:bridge],
|
127
|
+
assert_equal interface_attributes[:compute_attributes][:bridge],
|
128
|
+
vm_attrs[:interfaces_attributes]['0'][:compute_attributes][:bridge]
|
120
129
|
end
|
121
130
|
end
|
122
131
|
end
|