Skip to content

Commit 7d62a45

Browse files
authored
Merge pull request jiangcuo#163 from jiangcuo/port-pve-manager
bump pve-manager to 8.3.2+port1
2 parents 0d42370 + e06098c commit 7d62a45

3 files changed

Lines changed: 405 additions & 0 deletions

File tree

Lines changed: 385 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,385 @@
1+
diff --git a/Makefile b/Makefile
2+
index 54601ee2..92fc0596 100644
3+
--- a/Makefile
4+
+++ b/Makefile
5+
@@ -58,6 +58,8 @@ install: vzdump-hook-script.pl
6+
install -d $(DESTDIR)/var/lib/vz/template/iso
7+
install -m 0644 vzdump-hook-script.pl $(DOCDIR)/examples/vzdump-hook-script.pl
8+
install -m 0644 spice-example-sh $(DOCDIR)/examples/spice-example-sh
9+
+ install -d $(DESTDIR)/lib/udev/rules.d
10+
+ install -m 0644 udev/99-query-machine-info.rules $(DESTDIR)/lib/udev/rules.d/99-query-machine-info.rules
11+
set -e && for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done
12+
13+
.PHONY: distclean
14+
diff --git a/bin/Makefile b/bin/Makefile
15+
index 82d5c633..0b9bd9f6 100644
16+
--- a/bin/Makefile
17+
+++ b/bin/Makefile
18+
@@ -23,7 +23,8 @@ SCRIPTS = \
19+
pveupgrade \
20+
pveupdate \
21+
pveperf \
22+
- pvereport
23+
+ pvereport \
24+
+ query-machine-info
25+
26+
HELPERS = \
27+
pve-startall-delay \
28+
diff --git a/bin/query-machine-info b/bin/query-machine-info
29+
new file mode 100755
30+
index 00000000..f62fc797
31+
--- /dev/null
32+
+++ b/bin/query-machine-info
33+
@@ -0,0 +1,10 @@
34+
+#!/bin/bash
35+
+filename="/run/pve/query-machine-info"
36+
+cpuname=$(lscpu|grep "BIOS Model name"|cut -d ":" -f2|xargs)
37+
+if [ -z "$cpuname" ];then
38+
+ cpuname=$(lscpu|grep "Model name"|grep -v 'BIOS'|cut -d ":" -f2|xargs)
39+
+ if [ -z "$cpuname" ];then
40+
+ cpuname="unknow"
41+
+ fi
42+
+fi
43+
+dmidecode | jc --dmidecode | jq --arg cpu "$cpuname" '. += [{"cpu": $cpu}]' >$filename
44+
diff --git a/debian/control b/debian/control
45+
index 68333187..2a29d7ac 100644
46+
--- a/debian/control
47+
+++ b/debian/control
48+
@@ -38,11 +38,14 @@ Architecture: any
49+
Depends: apt (>= 1.5~),
50+
ca-certificates,
51+
cstream,
52+
+ dmidecode,
53+
dtach,
54+
fonts-font-awesome,
55+
fonts-font-logos,
56+
gdisk,
57+
hdparm,
58+
+ jc,
59+
+ jq,
60+
libapt-pkg-perl,
61+
libcrypt-ssleay-perl,
62+
libfile-readbackwards-perl,
63+
diff --git a/debian/postinst b/debian/postinst
64+
index aba39904..e0d3c6ec 100755
65+
--- a/debian/postinst
66+
+++ b/debian/postinst
67+
@@ -140,6 +140,7 @@ case "$1" in
68+
deb-systemd-invoke reload-or-try-restart pveproxy.service || true
69+
deb-systemd-invoke reload-or-try-restart spiceproxy.service || true
70+
deb-systemd-invoke reload-or-try-restart pvescheduler.service || true
71+
+ deb-systemd-invoke reload-or-try-restart pve-query-machine-info.service || true
72+
73+
exit 0;;
74+
75+
@@ -169,7 +170,7 @@ case "$1" in
76+
77+
# same as dh_systemd_enable (code copied)
78+
79+
- UNITS="pvedaemon.service pveproxy.service spiceproxy.service pvestatd.service pvebanner.service pvescheduler.service pve-daily-update.timer"
80+
+ UNITS="pvedaemon.service pveproxy.service spiceproxy.service pvestatd.service pvebanner.service pvescheduler.service pve-daily-update.timer pve-query-machine-info.service"
81+
NO_RESTART_UNITS="pvenetcommit.service pve-guests.service"
82+
83+
for unit in ${UNITS} ${NO_RESTART_UNITS}; do
84+
diff --git a/services/Makefile b/services/Makefile
85+
index 8a60fa9b..31e91363 100644
86+
--- a/services/Makefile
87+
+++ b/services/Makefile
88+
@@ -13,7 +13,8 @@ SERVICES= \
89+
pve-storage.target \
90+
pve-daily-update.service\
91+
pve-daily-update.timer \
92+
- pvescheduler.service
93+
+ pvescheduler.service \
94+
+ pve-query-machine-info.service
95+
96+
.PHONY: install
97+
install: $(SERVICES)
98+
diff --git a/services/pve-query-machine-info.service b/services/pve-query-machine-info.service
99+
new file mode 100644
100+
index 00000000..fcdc693a
101+
--- /dev/null
102+
+++ b/services/pve-query-machine-info.service
103+
@@ -0,0 +1,13 @@
104+
+[Unit]
105+
+Description=PVE Query Machine Info
106+
+RequiresMountsFor=/run
107+
+Before=pvedaemon.service
108+
+Before=pveproxy.service
109+
+
110+
+[Service]
111+
+ExecStart=/usr/bin/query-machine-info
112+
+Type=oneshot
113+
+RemainAfterExit=yes
114+
+
115+
+[Install]
116+
+WantedBy=multi-user.target
117+
diff --git a/udev/99-query-machine-info.rules b/udev/99-query-machine-info.rules
118+
new file mode 100644
119+
index 00000000..dc28d11b
120+
--- /dev/null
121+
+++ b/udev/99-query-machine-info.rules
122+
@@ -0,0 +1,2 @@
123+
+ACTION=="add", SUBSYSTEM=="*", RUN="/usr/bin/query-machine-info"
124+
+ACTION=="remove", SUBSYSTEM=="*", RUN="/usr/bin/query-machine-info"
125+
diff --git a/www/manager6/Makefile b/www/manager6/Makefile
126+
index c94a5cdf..9b47c34e 100644
127+
--- a/www/manager6/Makefile
128+
+++ b/www/manager6/Makefile
129+
@@ -232,6 +232,7 @@ JSSRC= \
130+
pool/StatusView.js \
131+
pool/Summary.js \
132+
qemu/AgentIPView.js \
133+
+ qemu/ArchEdit.js \
134+
qemu/AudioEdit.js \
135+
qemu/BootOrderEdit.js \
136+
qemu/CDEdit.js \
137+
diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
138+
index dde4d24e..4a7a5a9e 100644
139+
--- a/www/manager6/Utils.js
140+
+++ b/www/manager6/Utils.js
141+
@@ -48,13 +48,23 @@ Ext.define('PVE.Utils', {
142+
kvm_ostypes: {
143+
'Linux': [
144+
{ desc: '6.x - 2.6 Kernel', val: 'l26' },
145+
+ { desc: '2.4 Kernel - x86', val: 'l24' },
146+
],
147+
'Microsoft Windows': [
148+
{ desc: '11/2022', val: 'win11' },
149+
+ { desc: '10/2016/2019 - x86', val: 'win10' },
150+
+ { desc: '8.x/2012/2012r2 - x86', val: 'win8' },
151+
+ { desc: '7/2008r2 - x86', val: 'win7' },
152+
+ { desc: 'Vista/2008 - x86', val: 'w2k8' },
153+
+ { desc: 'XP/2003 - x86', val: 'wxp' },
154+
+ { desc: '2000 - x86', val: 'w2k' },
155+
],
156+
'Other': [
157+
{ desc: '-', val: 'other' },
158+
],
159+
+ 'Solaris Kernel - x86': [
160+
+ { desc: '-', val: 'solaris' },
161+
+ ],
162+
},
163+
164+
is_windows: function(ostype) {
165+
@@ -486,7 +496,7 @@ Ext.define('PVE.Utils', {
166+
},
167+
168+
render_qemu_machine: function(value) {
169+
- return value || Proxmox.Utils.defaultText + ' (virt)';
170+
+ return value || Proxmox.Utils.defaultText;
171+
},
172+
173+
render_qemu_bios: function(value) {
174+
@@ -1310,6 +1320,14 @@ Ext.define('PVE.Utils', {
175+
return retVal.length < 1 ? value : retVal;
176+
},
177+
178+
+ render_get_arch: function(value) {
179+
+ if (!value){
180+
+ return Proxmox.Utils.defaultText;
181+
+ }else{
182+
+ return value;
183+
+ }
184+
+ },
185+
+
186+
windowHostname: function() {
187+
return window.location.hostname.replace(Proxmox.Utils.IP6_bracket_match,
188+
function(m, addr, offset, original) { return addr; });
189+
diff --git a/www/manager6/form/CPUModelSelector.js b/www/manager6/form/CPUModelSelector.js
190+
index f1c40a31..407a7178 100644
191+
--- a/www/manager6/form/CPUModelSelector.js
192+
+++ b/www/manager6/form/CPUModelSelector.js
193+
@@ -15,7 +15,7 @@ Ext.define('PVE.form.CPUModelSelector', {
194+
valueField: 'name',
195+
displayField: 'displayname',
196+
197+
- emptyText: Proxmox.Utils.defaultText + ' (host)',
198+
+ emptyText: Proxmox.Utils.defaultText,
199+
allowBlank: true,
200+
201+
editable: true,
202+
diff --git a/www/manager6/qemu/ArchEdit.js b/www/manager6/qemu/ArchEdit.js
203+
new file mode 100644
204+
index 00000000..c65ec7e9
205+
--- /dev/null
206+
+++ b/www/manager6/qemu/ArchEdit.js
207+
@@ -0,0 +1,24 @@
208+
+Ext.define('PVE.qemu.ArchEdit', {
209+
+ extend: 'Proxmox.window.Edit',
210+
+ alias: 'widget.pveQemuArchEdit',
211+
+
212+
+ subject: 'ARCH',
213+
+ autoLoad: true,
214+
+
215+
+ items: {
216+
+ xtype: 'proxmoxKVComboBox',
217+
+ name: 'arch',
218+
+ fieldLabel: gettext('Arch'),
219+
+ defaultValue: '',
220+
+ comboItems: [
221+
+ ['__default__', Proxmox.Utils.defaultText],
222+
+ ['x86_64', 'x86_64'],
223+
+ ['riscv64', 'riscv64'],
224+
+ ['loongarch64', 'loongarch64'],
225+
+ ['aarch64', 'aarch64'],
226+
+ ],
227+
+ bind: {
228+
+ value: '{arch}',
229+
+ },
230+
+ },
231+
+});
232+
diff --git a/www/manager6/qemu/CreateWizard.js b/www/manager6/qemu/CreateWizard.js
233+
index 226209cb..6a61eacb 100644
234+
--- a/www/manager6/qemu/CreateWizard.js
235+
+++ b/www/manager6/qemu/CreateWizard.js
236+
@@ -97,6 +97,22 @@ Ext.define('PVE.qemu.CreateWizard', {
237+
fieldLabel: gettext('Name'),
238+
allowBlank: true,
239+
},
240+
+ {
241+
+ xtype: 'proxmoxKVComboBox',
242+
+ name: 'arch',
243+
+ fieldLabel: gettext('Arch'),
244+
+ comboItems: [
245+
+ ['__default__', PVE.Utils.render_get_arch()],
246+
+ ['x86_64', 'x86_64'],
247+
+ ['riscv64', 'riscv64'],
248+
+ ['loongarch64', 'loongarch64'],
249+
+ ['aarch64', 'aarch64'],
250+
+ ],
251+
+ bind: {
252+
+ arch: '{arch}',
253+
+ },
254+
+ insideWizard: true,
255+
+ },
256+
],
257+
column2: [
258+
{
259+
diff --git a/www/manager6/qemu/HDEfi.js b/www/manager6/qemu/HDEfi.js
260+
index a8ca8f56..fcee2e35 100644
261+
--- a/www/manager6/qemu/HDEfi.js
262+
+++ b/www/manager6/qemu/HDEfi.js
263+
@@ -67,7 +67,7 @@ Ext.define('PVE.qemu.EFIDiskInputPanel', {
264+
{
265+
xtype: 'proxmoxcheckbox',
266+
name: 'preEnrolledKeys',
267+
- checked: true,
268+
+ checked: false,
269+
fieldLabel: gettext("Pre-Enroll keys"),
270+
disabled: me.disabled,
271+
//boxLabel: '(e.g., Microsoft secure-boot keys')',
272+
diff --git a/www/manager6/qemu/MachineEdit.js b/www/manager6/qemu/MachineEdit.js
273+
index 3e5a5981..f8b3cb6a 100644
274+
--- a/www/manager6/qemu/MachineEdit.js
275+
+++ b/www/manager6/qemu/MachineEdit.js
276+
@@ -24,7 +24,7 @@ Ext.define('PVE.qemu.MachineInputPanel', {
277+
let version = me.lookup('version');
278+
let store = version.getStore();
279+
let oldRec = store.findRecord('id', version.getValue(), 0, false, false, true);
280+
- let type = value === 'q35' ? 'q35' : 'virt';
281+
+ let type = value === 'q35' ? 'q35' : 'default';
282+
store.clearFilter();
283+
store.addFilter(val => val.data.id === 'latest' || val.data.type === type);
284+
if (!me.getView().isWindows) {
285+
@@ -102,6 +102,8 @@ Ext.define('PVE.qemu.MachineInputPanel', {
286+
comboItems: [
287+
['__default__', PVE.Utils.render_qemu_machine('')],
288+
['q35', 'q35'],
289+
+ ['virt', 'virt'],
290+
+ ['pc', 'i440fx'],
291+
],
292+
bind: {
293+
value: '{type}',
294+
diff --git a/www/manager6/qemu/OSDefaults.js b/www/manager6/qemu/OSDefaults.js
295+
index d3ee4946..89e568c4 100644
296+
--- a/www/manager6/qemu/OSDefaults.js
297+
+++ b/www/manager6/qemu/OSDefaults.js
298+
@@ -34,16 +34,15 @@ Ext.define('PVE.qemu.OSDefaults', {
299+
300+
// default values
301+
me.generic = {
302+
- busType: 'ide',
303+
- networkCard: 'e1000',
304+
+ busType: 'scsi',
305+
+ networkCard: 'virtio',
306+
busPriority: {
307+
ide: 4,
308+
sata: 3,
309+
scsi: 2,
310+
virtio: 1,
311+
},
312+
- scsihw: 'virtio-scsi-single',
313+
- cputype: 'x86-64-v2-AES',
314+
+ scsihw: 'virtio-scsi-pci',
315+
};
316+
317+
// virtio-net is in kernel since 2.6.25
318+
diff --git a/www/manager6/qemu/Options.js b/www/manager6/qemu/Options.js
319+
index cbe9e52b..ea5d500d 100644
320+
--- a/www/manager6/qemu/Options.js
321+
+++ b/www/manager6/qemu/Options.js
322+
@@ -49,6 +49,12 @@ Ext.define('PVE.qemu.Options', {
323+
},
324+
} : undefined,
325+
},
326+
+ arch: {
327+
+ header: gettext('Arch'),
328+
+ editor: caps.vms['VM.Config.HWType'] ? 'PVE.qemu.ArchEdit' : undefined,
329+
+ defaultValue: '',
330+
+ renderer: PVE.Utils.render_get_arch,
331+
+ },
332+
onboot: {
333+
header: gettext('Start at boot'),
334+
defaultValue: '',
335+
@@ -272,7 +278,7 @@ Ext.define('PVE.qemu.Options', {
336+
},
337+
agent: {
338+
header: 'QEMU Guest Agent',
339+
- defaultValue: false,
340+
+ defaultValue: true,
341+
renderer: PVE.Utils.render_qga_features,
342+
editor: caps.vms['VM.Config.Options'] ? {
343+
xtype: 'proxmoxWindowEdit',
344+
diff --git a/www/manager6/qemu/SystemEdit.js b/www/manager6/qemu/SystemEdit.js
345+
index 592c88ee..9feefe09 100644
346+
--- a/www/manager6/qemu/SystemEdit.js
347+
+++ b/www/manager6/qemu/SystemEdit.js
348+
@@ -65,11 +65,15 @@ Ext.define('PVE.qemu.SystemInputPanel', {
349+
let me = this;
350+
let vm = this.getViewModel();
351+
let ostype = vm.get('current.ostype');
352+
+ me.lookup('bios').setValue('ovmf');
353+
if (ostype === 'win11') {
354+
me.lookup('machine').setValue('q35');
355+
- me.lookup('bios').setValue('ovmf');
356+
me.lookup('addtpmbox').setValue(true);
357+
}
358+
+ let arch = vm.get('current.arch');
359+
+ if (arch && arch !== 'x86_64') {
360+
+ me.lookup('machine').setValue('virt');
361+
+ }
362+
},
363+
},
364+
365+
@@ -91,6 +95,8 @@ Ext.define('PVE.qemu.SystemInputPanel', {
366+
comboItems: [
367+
['__default__', PVE.Utils.render_qemu_machine('')],
368+
['q35', 'q35'],
369+
+ ['virt', 'virt'],
370+
+ ['pc', 'i440fx'],
371+
],
372+
},
373+
{
374+
@@ -147,9 +153,9 @@ Ext.define('PVE.qemu.SystemInputPanel', {
375+
xtype: 'proxmoxcheckbox',
376+
name: 'agent',
377+
uncheckedValue: 0,
378+
- defaultValue: 0,
379+
- deleteDefaultValue: true,
380+
+ defaultValue: 1,
381+
fieldLabel: gettext('Qemu Agent'),
382+
+ checked: true,
383+
},
384+
{
385+
// fake for spacing

0 commit comments

Comments
 (0)