[pve-devel] [PATCH v3 docs 2/5] Add cluster create screenshot

2019-08-28 Thread Stefan Reiter
Signed-off-by: Stefan Reiter 
---
 images/screenshot/gui-cluster-create.png | Bin 0 -> 18124 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 images/screenshot/gui-cluster-create.png

diff --git a/images/screenshot/gui-cluster-create.png 
b/images/screenshot/gui-cluster-create.png
new file mode 100644
index 
..9015a51662f9ae99197676feebd46fc83c43ad20
GIT binary patch
literal 18124
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

Re: [pve-devel] [PATCH i18n] Add hebrew translation

2019-08-28 Thread Thomas Lamprecht
On 23.08.19 11:27, Dominic Jäger wrote:
> Contributed-by: Condless 
> Signed-off-by: Dominic Jäger 
> ---
> Looks good according to Google Translate.

I got a issue when trying to update the po files with this applied:

# make update
... snip ...
he: he.po:523:14: invalid control sequence
he.po:1405:12: invalid control sequence
he.po:2535:19: invalid control sequence
he.po:2664: end-of-line within string
he.po:2932:13: invalid control sequence
he.po:3017:20: invalid control sequence
he.po:3667:39: invalid control sequence
he.po:3668: end-of-line within string
he.po:4176:14: invalid control sequence
he.po:4270: end-of-line within string
he.po:4435:19: invalid control sequence
he.po:4534:19: invalid control sequence
he.po:5300:26: invalid control sequence
he.po:5822:20: invalid control sequence

The underlying issue of this seems to come from the fact that Hebrew is read
from right to left, and thus a backslash is used instead of a slash (make 
sense).
So far so good, the backslashes just need to be escaped else "msgmerge" thinks
"\א" is a escape code. Can you do this, check that make update works and
re-check if the \ gets still displayed correctly in the Webinterface? Thanks!

>
>  Makefile |2 +-
>  he.po| 6156 ++
>  2 files changed, 6157 insertions(+), 1 deletion(-)
>  create mode 100644 he.po
>
> diff --git a/Makefile b/Makefile
> index 0e47f00..442081f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1,6 +1,6 @@
>  include /usr/share/dpkg/pkg-info.mk
>  
> -LINGUAS=de it fr ja es sv ru tr zh_CN zh_TW da ca pl sl nb nn pt_BR eu fa gl 
> hu
> +LINGUAS=de it fr ja es sv ru tr zh_CN zh_TW da ca pl sl nb nn pt_BR eu fa gl 
> hu he
>  
>  PVE_I18N_DEB=pve-i18n_${DEB_VERSION_UPSTREAM_REVISION}_all.deb
>  PMG_I18N_DEB=pmg-i18n_${DEB_VERSION_UPSTREAM_REVISION}_all.deb
> diff --git a/he.po b/he.po
> new file mode 100644
> index 000..80f2a66
> --- /dev/null
> +++ b/he.po
> @@ -0,0 +1,6156 @@
> +# Copyright (C) 2013-2016 Proxmox Server Solutions GmbH
> +# This file is distributed under the same license as the pve-manager package.
> +# Proxmox Support Team , 2013-2016.
> +#
> +msgid ""
> +msgstr ""
> +"Project-Id-Version: proxmox translations\n"
> +"Report-Msgid-Bugs-To: \n"
> +"POT-Creation-Date: Mon Jul 15 21:48:07 2019\n"
> +"PO-Revision-Date: 2019-06-13 11:09+0200\n"
> +"Last-Translator: Condless Team \n"
> +"Language-Team: Hebrew\n"
> +"Language: he\n"
> +"MIME-Version: 1.0\n"
> +"Content-Type: text/plain; charset=UTF-8\n"
> +"Content-Transfer-Encoding: 8bit\n"
> +"Plural-Forms: nplurals=2; plural=(n != 1);\n"
> +"X-Generator: Poedit 1.8.11\n"
> +
> snip


___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] [PATCH common 2/2] Cleanup to make style consistent

2019-08-28 Thread Fabian Ebner
Signed-off-by: Fabian Ebner 
---
 src/PVE/SectionConfig.pm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/PVE/SectionConfig.pm b/src/PVE/SectionConfig.pm
index a760459..394aae6 100644
--- a/src/PVE/SectionConfig.pm
+++ b/src/PVE/SectionConfig.pm
@@ -334,7 +334,7 @@ sub parse_config {
}
}
 
-   while ($line = &$nextline()) {
+   while ($line = $nextline->()) {
next if $ignore; # skip
 
$errprefix = "file $filename line $lineno";
-- 
2.20.1


___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] [PATCH common 1/2] Fix 2339: Handle multiple blank lines correctly

2019-08-28 Thread Fabian Ebner
It turns out that the line number counting was also broken (even on files 
without multiple blanks), since the body of the while inside the nextline 
subroutine would not be executed for a blank.
I guess the subroutine was intended to skip comments and blanks, but since we 
use blanks to recognize the end of a section, I changed it to only skip 
comments.

Signed-off-by: Fabian Ebner 
---
Changes from v1:
* fix line number counting
* style

 src/PVE/SectionConfig.pm | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/PVE/SectionConfig.pm b/src/PVE/SectionConfig.pm
index dcecce6..a760459 100644
--- a/src/PVE/SectionConfig.pm
+++ b/src/PVE/SectionConfig.pm
@@ -302,13 +302,16 @@ sub parse_config {
 my $lineno = 0;
 my @lines = split(/\n/, $raw);
 my $nextline = sub {
-   while (my $line = shift @lines) {
+   while (defined(my $line = shift @lines)) {
$lineno++;
-   return $line if $line !~ /^\s*(?:#|$)/;
+   return $line if ($line !~ /^\s*#/);
}
 };
 
-while (my $line = &$nextline()) {
+while (@lines) {
+   my $line = $nextline->();
+   next if !$line;
+
my $errprefix = "file $filename line $lineno";
 
my ($type, $sectionId, $errmsg, $config) = 
$class->parse_section_header($line);
-- 
2.20.1


___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


Re: [pve-devel] ifupdown2 pve package missing in buster/proxmox6 repo

2019-08-28 Thread Thomas Lamprecht
On 28.08.19 08:58, Thomas Lamprecht wrote:
> Hi,
> 
> On 27.08.19 16:28, Alexandre DERUMIER wrote:
>> Hi,
>>
>> the ifupdown2 pve package is missing from buster/proxmox6 repo.
>>
>> Could you add it ?
> 
> yes, as we had the same version as Debian Buster it seemed I missed to 
> re-upload it..
> 
> I'd then already update to 1.2.8 or?
> 
> Currently in the process of rebasing the extra/pve patches on top of it.
> 
> It seems that the 
> "pve/0002-don-t-remove-tap-veth-fwpr-interfaces-from-bridge-on.patch"
> can be replaced by setting a default "bridge-ports-condone-regex" in
> ifupdown2/addon/bridge.py , the rest applied just fine.
> 
> I'll do some quick test and then upload it if all seems to work.
> 
> Or did you already took a look at the 1.2.8-1 release? :)

1.2.8 seemed OK, but did only basic checks, it's now available on pvetest
if you want to take a look at it.


___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


Re: [pve-devel] [PATCH manager] pve5to6: Add warning for some Gluster versions

2019-08-28 Thread Dominic Jäger
After Fabian had sent his patch [0] we actually thought that this patch 
for pve5to6 would be obsolete. Upgrades as well as fresh installs worked 
flawlessly in my tests. Consequently, I removed the hint from the 
upgrade documentation [1] and marked the bug [2] as fixed. Before 
writing you this, I tested everything again and, unfortunately, 
something (or maybe multiple things) seems to be broken now.



1) On a fully updated PVE 6 with glusterfs-server 5.5-3 from Debian.
Adding the upstream Gluster repos and then apt install glusterfs-server 
(no full-upgrade yet) makes problems. systemctl start glusterd does not

work anymore. Some gluser related packages remain upgradeable

libgfapi0/unknown 6.5-1 amd64 [upgradable from: 5.5-3]
libgfchangelog0/unknown 6.5-1 amd64 [upgradable from: 5.5-3]
libgfrpc0/unknown 6.5-1 amd64 [upgradable from: 5.5-3]
libgfxdr0/unknown 6.5-1 amd64 [upgradable from: 5.5-3]
libglusterfs-dev/unknown 6.5-1 amd64 [upgradable from: 5.5-3]
libglusterfs0/unknown 6.5-1 amd64 [upgradable from: 5.5-3]

After apt full-upgrade systemctl start glusterd works perfect. I assume 
some dependency should be for a newer version?



2) On a fully updated (no-subscription) PVE 5 with only glusterfs-common 
& client (no glusterfs-server) 6.5-1 from upstream Gluster the upgrade 
to PVE 6 works with only a warning


Preparing to unpack .../00-glusterfs-common_6.5-1_amd64.deb ...
Unpacking glusterfs-common (6.5-1) over (6.5-1) ...
dpkg: warning: unable to delete old directory '/etc/glusterfs': 
Directory not empty



3) On a fully updated (no-subscription) PVE 5 with glusterfs-common, 
client _and_ glusterfs-server 6.5-1 from upstream Gluster the upgrade to 
PVE 6 aborts because dpkg throws multiple errors


Preparing to unpack .../00-glusterfs-common_6.5-1_amd64.deb ...
Unpacking glusterfs-common (6.5-1) over (6.5-1) ...
dpkg: error processing archive 
/tmp/apt-dpkg-install-dr5AeK/00-glusterfs-common_6.5-1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/glusterfs/scripts/eventsdash.py', 
which is also in package glusterfs-server 6.5-1

Selecting previously unselected package libglusterfs0:amd64.
dpkg: regarding .../01-libglusterfs0_6.5-1_amd64.deb containing 
libglusterfs0:amd64:

 glusterfs-common conflicts with libglusterfs0
  libglusterfs0:amd64 (version 6.5-1) is to be installed.

dpkg: error processing archive 
/tmp/apt-dpkg-install-dr5AeK/01-libglusterfs0_6.5-1_amd64.deb (--unpack):

 conflicting packages - not installing libglusterfs0:amd64
Selecting previously unselected package libgfxdr0:amd64.
Preparing to unpack .../02-libgfxdr0_6.5-1_amd64.deb ...
Unpacking libgfxdr0:amd64 (6.5-1) ...
dpkg: error processing archive 
/tmp/apt-dpkg-install-dr5AeK/02-libgfxdr0_6.5-1_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/libgfxdr.so.0.0.1', 
which is also in package glusterfs-common 6.5-1

dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Selecting previously unselected package libgfrpc0:amd64.
Preparing to unpack .../03-libgfrpc0_6.5-1_amd64.deb ...
Unpacking libgfrpc0:amd64 (6.5-1) ...
dpkg: error processing archive 
/tmp/apt-dpkg-install-dr5AeK/03-libgfrpc0_6.5-1_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/libgfrpc.so.0.0.1', 
which is also in package glusterfs-common 6.5-1

dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Selecting previously unselected package libgfapi0:amd64.
Preparing to unpack .../04-libgfapi0_6.5-1_amd64.deb ...
Unpacking libgfapi0:amd64 (6.5-1) ...
dpkg: error processing archive 
/tmp/apt-dpkg-install-dr5AeK/04-libgfapi0_6.5-1_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/libgfapi.so.0.0.0', 
which is also in package glusterfs-common 6.5-1

dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Selecting previously unselected package libgfchangelog0:amd64.
Preparing to unpack .../05-libgfchangelog0_6.5-1_amd64.deb ...
Unpacking libgfchangelog0:amd64 (6.5-1) ...
dpkg: error processing archive 
/tmp/apt-dpkg-install-dr5AeK/05-libgfchangelog0_6.5-1_amd64.deb (--unpack):
 trying to overwrite 
'/usr/lib/x86_64-linux-gnu/libgfchangelog.so.0.0.1', which is also in 
package glusterfs-common 6.5-1

dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Selecting previously unselected package libncurses6:amd64.
Preparing to unpack .../06-libncurses6_6.1+20181013-2_amd64.deb ...
Unpacking libncurses6:amd64 (6.1+20181013-2) ...
Selecting previously unselected package liburcu6:amd64.
Preparing to unpack .../07-liburcu6_0.10.2-1_amd64.deb ...
Unpacking liburcu6:amd64 (0.10.2-1) ...
Selecting previously unselected package python3-jwt.
Preparing to unpack .../08-python3-jwt_1.7.0-2_all.deb ...
Unpacking python3-jwt (1.7.0-2) ...
Preparing to unpack .../09-libaio1_0.3.112-3_amd64.deb ...
Unpacking libaio1:amd64 (0.3.112-3) over (0.3.110-3) ...
Preparing to unpack .../10-libnl-route-3-200_3.4.0-1_amd64.deb ...
Unpacking libnl-route-3-200:amd64 (3.4.

[pve-devel] applied: [PATCH i18n] Add hebrew translation

2019-08-28 Thread Thomas Lamprecht
On 23.08.19 11:27, Dominic Jäger wrote:
> Contributed-by: Condless 
> Signed-off-by: Dominic Jäger 
> ---
> Looks good according to Google Translate.
> 
>  Makefile |2 +-
>  he.po| 6156 ++
>  2 files changed, 6157 insertions(+), 1 deletion(-)
>  create mode 100644 he.po
> 
> diff --git a/Makefile b/Makefile
> index 0e47f00..442081f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1,6 +1,6 @@
>  include /usr/share/dpkg/pkg-info.mk
>  
> -LINGUAS=de it fr ja es sv ru tr zh_CN zh_TW da ca pl sl nb nn pt_BR eu fa gl 
> hu
> +LINGUAS=de it fr ja es sv ru tr zh_CN zh_TW da ca pl sl nb nn pt_BR eu fa gl 
> hu he
>  
>  PVE_I18N_DEB=pve-i18n_${DEB_VERSION_UPSTREAM_REVISION}_all.deb
>  PMG_I18N_DEB=pmg-i18n_${DEB_VERSION_UPSTREAM_REVISION}_all.deb

applied this with the new he.po Eitan from Condless sent me directly.
Thanks to both of you!


___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


Re: [pve-devel] ifupdown2 pve package missing in buster/proxmox6 repo

2019-08-28 Thread Alexandre DERUMIER
>>1.2.8 seemed OK, but did only basic checks, it's now available on pvetest 
>>if you want to take a look at it. 

Yes sure. I was planning to update to 1.2.8, but you have been faster than me ;)



- Mail original -
De: "Thomas Lamprecht" 
À: "pve-devel" , "aderumier" 
Envoyé: Mercredi 28 Août 2019 12:05:05
Objet: Re: [pve-devel] ifupdown2 pve package missing in buster/proxmox6 repo

On 28.08.19 08:58, Thomas Lamprecht wrote: 
> Hi, 
> 
> On 27.08.19 16:28, Alexandre DERUMIER wrote: 
>> Hi, 
>> 
>> the ifupdown2 pve package is missing from buster/proxmox6 repo. 
>> 
>> Could you add it ? 
> 
> yes, as we had the same version as Debian Buster it seemed I missed to 
> re-upload it.. 
> 
> I'd then already update to 1.2.8 or? 
> 
> Currently in the process of rebasing the extra/pve patches on top of it. 
> 
> It seems that the 
> "pve/0002-don-t-remove-tap-veth-fwpr-interfaces-from-bridge-on.patch" 
> can be replaced by setting a default "bridge-ports-condone-regex" in 
> ifupdown2/addon/bridge.py , the rest applied just fine. 
> 
> I'll do some quick test and then upload it if all seems to work. 
> 
> Or did you already took a look at the 1.2.8-1 release? :) 

1.2.8 seemed OK, but did only basic checks, it's now available on pvetest 
if you want to take a look at it. 

___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] [PATCH ifupdown2] fix bridge_port_condone_regex default value

2019-08-28 Thread Alexandre Derumier
---
 ...-veth-fwpr-interfaces-from-bridge-on.patch | 22 +++
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git 
a/debian/patches/pve/0001-don-t-remove-tap-veth-fwpr-interfaces-from-bridge-on.patch
 
b/debian/patches/pve/0001-don-t-remove-tap-veth-fwpr-interfaces-from-bridge-on.patch
index 5ac9fbc..01a0a90 100644
--- 
a/debian/patches/pve/0001-don-t-remove-tap-veth-fwpr-interfaces-from-bridge-on.patch
+++ 
b/debian/patches/pve/0001-don-t-remove-tap-veth-fwpr-interfaces-from-bridge-on.patch
@@ -1,4 +1,4 @@
-From  Mon Sep 17 00:00:00 2001
+From f01a763647fa21b6192a94f184dd7d9d772b4e9e Mon Sep 17 00:00:00 2001
 From: Alexandre Derumier 
 Date: Wed, 16 May 2018 02:11:45 +0200
 Subject: [PATCH] don't remove (tap|veth|fwpr) interfaces from bridge on ifup
@@ -7,12 +7,13 @@ Subject: [PATCH] don't remove (tap|veth|fwpr) interfaces from 
bridge on ifup
 as proxmox don't defined them in /etc/network/interfaces
 
 Signed-off-by: Thomas Lamprecht 
+Signed-off-by: Alexandre Derumier 
 ---
- ifupdown2/addons/bridge.py | 1 +
- 1 file changed, 1 insertion(+)
+ ifupdown2/addons/bridge.py | 4 
+ 1 file changed, 4 insertions(+)
 
 diff --git a/ifupdown2/addons/bridge.py b/ifupdown2/addons/bridge.py
-index 3e5fd78..f40e2e7 100644
+index 3e5fd78..bd597d7 100644
 --- a/ifupdown2/addons/bridge.py
 +++ b/ifupdown2/addons/bridge.py
 @@ -79,6 +79,7 @@ class bridge(moduleBase):
@@ -23,3 +24,16 @@ index 3e5fd78..f40e2e7 100644
   'example' : [ 'bridge-ports-condone-regex 
^[a-zA-Z0-9]+_v[0-9]{1,4}$']},
 'bridge-stp' :
  {'help': 'bridge-stp yes/no',
+@@ -912,6 +913,9 @@ class bridge(moduleBase):
+ # up a compiled regex to be used in a match later. This way we try to 
avoid
+ # a race condition where an (possibly VM) interface is created after 
this
+ # function has been called but before the bridgeports are validated.
++if not bridge_port_condone_regex:
++bridge_port_condone_regex = 
self.get_attr_default_value('bridge-ports-condone-regex')
++
+ if bridge_port_condone_regex:
+ if get_string:
+ return bridge_port_condone_regex
+-- 
+2.20.1
+
-- 
2.20.1

___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


Re: [pve-devel] ifupdown2 pve package missing in buster/proxmox6 repo

2019-08-28 Thread Alexandre DERUMIER

>>It seems that the 
>>"pve/0002-don-t-remove-tap-veth-fwpr-interfaces-from-bridge-on.patch" 
>>can be replaced by setting a default "bridge-ports-condone-regex" in 
>>ifupdown2/addon/bridge.py , the rest applied just fine.

I just sent a small fix because the default value was not used.


Others patches are working fine

- Mail original -
De: "Thomas Lamprecht" 
À: "pve-devel" , "aderumier" 
Envoyé: Mercredi 28 Août 2019 08:58:57
Objet: Re: [pve-devel] ifupdown2 pve package missing in buster/proxmox6 repo

Hi, 

On 27.08.19 16:28, Alexandre DERUMIER wrote: 
> Hi, 
> 
> the ifupdown2 pve package is missing from buster/proxmox6 repo. 
> 
> Could you add it ? 

yes, as we had the same version as Debian Buster it seemed I missed to 
re-upload it.. 

I'd then already update to 1.2.8 or? 

Currently in the process of rebasing the extra/pve patches on top of it. 

It seems that the 
"pve/0002-don-t-remove-tap-veth-fwpr-interfaces-from-bridge-on.patch" 
can be replaced by setting a default "bridge-ports-condone-regex" in 
ifupdown2/addon/bridge.py , the rest applied just fine. 

I'll do some quick test and then upload it if all seems to work. 

Or did you already took a look at the 1.2.8-1 release? :) 

___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] [PATCH qemu-server] Fix #2343 Add USB3 support for Spice USB redirection

2019-08-28 Thread Aaron Lauterer
If USB3 is enabled for a USB port of host type spice add a USB3
controller and use it.

To not break live migration this is only enabled for qemu 4.1 and
higher.

Signed-off-by: Aaron Lauterer 
---
 PVE/QemuServer.pm |  4 ++--
 PVE/QemuServer/USB.pm | 22 --
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 6e3b19e..375a34b 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -3701,7 +3701,7 @@ sub config_to_command {
 }
 
 # add usb controllers
-my @usbcontrollers = PVE::QemuServer::USB::get_usb_controllers($conf, 
$bridges, $arch, $machine_type, $usbdesc->{format}, $MAX_USB_DEVICES);
+my @usbcontrollers = PVE::QemuServer::USB::get_usb_controllers($conf, 
$bridges, $arch, $machine_type, $kvmver, $usbdesc->{format}, $MAX_USB_DEVICES);
 push @$devices, @usbcontrollers if @usbcontrollers;
 my $vga = parse_vga($conf->{vga});
 
@@ -3808,7 +3808,7 @@ sub config_to_command {
 }
 
 # usb devices
-my @usbdevices = PVE::QemuServer::USB::get_usb_devices($conf, 
$usbdesc->{format}, $MAX_USB_DEVICES);
+my @usbdevices = PVE::QemuServer::USB::get_usb_devices($conf, 
$usbdesc->{format}, $MAX_USB_DEVICES, $machine_type, $kvmver);
 push @$devices, @usbdevices if @usbdevices;
 # serial devices
 for (my $i = 0; $i < $MAX_SERIAL_PORTS; $i++)  {
diff --git a/PVE/QemuServer/USB.pm b/PVE/QemuServer/USB.pm
index a2097b9..316eb09 100644
--- a/PVE/QemuServer/USB.pm
+++ b/PVE/QemuServer/USB.pm
@@ -3,6 +3,7 @@ package PVE::QemuServer::USB;
 use strict;
 use warnings;
 use PVE::QemuServer::PCI qw(print_pci_addr);
+use PVE::QemuServer;
 use PVE::JSONSchema;
 use base 'Exporter';
 
@@ -34,7 +35,7 @@ sub parse_usb_device {
 }
 
 sub get_usb_controllers {
-my ($conf, $bridges, $arch, $machine, $format, $max_usb_devices) = @_;
+my ($conf, $bridges, $arch, $machine, $kvmver, $format, $max_usb_devices) 
= @_;
 
 my $devices = [];
 my $pciaddr = "";
@@ -50,7 +51,10 @@ sub get_usb_controllers {
for (my $i = 0; $i < $max_usb_devices; $i++)  {
next if !$conf->{"usb$i"};
my $d = eval { 
PVE::JSONSchema::parse_property_string($format,$conf->{"usb$i"}) };
-   next if !$d || $d->{usb3}; # do not add usb2 controller if we have 
only usb3 devices
+
+   # don't add usb2 controller if usb3 device unless it's for spice and
+   # qemu version < 4.1 - for live migration
+   next if !$d || ($d->{usb3} && ($d->{host} ne "spice" || 
PVE::QemuServer::qemu_machine_feature_enabled($machine, $kvmver, 4, 1)));
$use_usb2 = 1;
}
# include usb device config
@@ -63,7 +67,10 @@ sub get_usb_controllers {
 for (my $i = 0; $i < $max_usb_devices; $i++)  {
next if !$conf->{"usb$i"};
my $d = eval { 
PVE::JSONSchema::parse_property_string($format,$conf->{"usb$i"}) };
-   next if !$d || !$d->{usb3};
+
+   # don't add usb3 controller if usb3 device is for spice and qemu version
+   # < 4.1 - for live migrations
+   next if !$d || !$d->{usb3} || ($d->{host} eq 'spice' && 
!PVE::QemuServer::qemu_machine_feature_enabled($machine, $kvmver, 4, 1));
$use_usb3 = 1;
 }
 
@@ -74,7 +81,7 @@ sub get_usb_controllers {
 }
 
 sub get_usb_devices {
-my ($conf, $format, $max_usb_devices) = @_;
+my ($conf, $format, $max_usb_devices, $machine, $kvmver) = @_;
 
 my $devices = [];
 
@@ -87,9 +94,12 @@ sub get_usb_devices {
my $hostdevice = parse_usb_device($d->{host});
$hostdevice->{usb3} = $d->{usb3};
if (defined($hostdevice->{spice}) && $hostdevice->{spice}) {
-   # usb redir support for spice, currently no usb3
+   # usb redir support for spice, usb3 available with qemu 4.1
+   my $bus = 'ehci';
+   $bus = 'xhci' if 
PVE::QemuServer::qemu_machine_feature_enabled($machine, $kvmver, 4, 1) && 
$hostdevice->{usb3};
+
push @$devices, '-chardev', 
"spicevmc,id=usbredirchardev$i,name=usbredir";
-   push @$devices, '-device', 
"usb-redir,chardev=usbredirchardev$i,id=usbredirdev$i,bus=ehci.0";
+   push @$devices, '-device', 
"usb-redir,chardev=usbredirchardev$i,id=usbredirdev$i,bus=$bus.0";
} else {
push @$devices, '-device', print_usbdevice_full($conf, "usb$i", 
$hostdevice);
}
-- 
2.20.1


___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] applied: [PATCH ifupdown2] fix bridge_port_condone_regex default value

2019-08-28 Thread Thomas Lamprecht
On 28.08.19 16:05, Alexandre Derumier wrote:
> ---
>  ...-veth-fwpr-interfaces-from-bridge-on.patch | 22 +++
>  1 file changed, 18 insertions(+), 4 deletions(-)
> 

applied, thanks!

___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


Re: [pve-devel] [PATCH qemu-server] Fix #2343 Add USB3 support for Spice USB redirection

2019-08-28 Thread Aaron Lauterer
In a discussion with Stefan we came to the conclusion / realization that 
all the checks for $kvmver and $machine may not be necessary.


This patch is most likely not correct the way it is now. More feedback 
is welcome :)



On 8/28/19 4:26 PM, Aaron Lauterer wrote:

If USB3 is enabled for a USB port of host type spice add a USB3
controller and use it.

To not break live migration this is only enabled for qemu 4.1 and
higher.

Signed-off-by: Aaron Lauterer 
---
  PVE/QemuServer.pm |  4 ++--
  PVE/QemuServer/USB.pm | 22 --
  2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 6e3b19e..375a34b 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -3701,7 +3701,7 @@ sub config_to_command {
  }
  
  # add usb controllers

-my @usbcontrollers = PVE::QemuServer::USB::get_usb_controllers($conf, 
$bridges, $arch, $machine_type, $usbdesc->{format}, $MAX_USB_DEVICES);
+my @usbcontrollers = PVE::QemuServer::USB::get_usb_controllers($conf, 
$bridges, $arch, $machine_type, $kvmver, $usbdesc->{format}, $MAX_USB_DEVICES);
  push @$devices, @usbcontrollers if @usbcontrollers;
  my $vga = parse_vga($conf->{vga});
  
@@ -3808,7 +3808,7 @@ sub config_to_command {

  }
  
  # usb devices

-my @usbdevices = PVE::QemuServer::USB::get_usb_devices($conf, 
$usbdesc->{format}, $MAX_USB_DEVICES);
+my @usbdevices = PVE::QemuServer::USB::get_usb_devices($conf, 
$usbdesc->{format}, $MAX_USB_DEVICES, $machine_type, $kvmver);
  push @$devices, @usbdevices if @usbdevices;
  # serial devices
  for (my $i = 0; $i < $MAX_SERIAL_PORTS; $i++)  {
diff --git a/PVE/QemuServer/USB.pm b/PVE/QemuServer/USB.pm
index a2097b9..316eb09 100644
--- a/PVE/QemuServer/USB.pm
+++ b/PVE/QemuServer/USB.pm
@@ -3,6 +3,7 @@ package PVE::QemuServer::USB;
  use strict;
  use warnings;
  use PVE::QemuServer::PCI qw(print_pci_addr);
+use PVE::QemuServer;
  use PVE::JSONSchema;
  use base 'Exporter';
  
@@ -34,7 +35,7 @@ sub parse_usb_device {

  }
  
  sub get_usb_controllers {

-my ($conf, $bridges, $arch, $machine, $format, $max_usb_devices) = @_;
+my ($conf, $bridges, $arch, $machine, $kvmver, $format, $max_usb_devices) 
= @_;
  
  my $devices = [];

  my $pciaddr = "";
@@ -50,7 +51,10 @@ sub get_usb_controllers {
for (my $i = 0; $i < $max_usb_devices; $i++)  {
next if !$conf->{"usb$i"};
my $d = eval { 
PVE::JSONSchema::parse_property_string($format,$conf->{"usb$i"}) };
-   next if !$d || $d->{usb3}; # do not add usb2 controller if we have 
only usb3 devices
+
+   # don't add usb2 controller if usb3 device unless it's for spice and
+   # qemu version < 4.1 - for live migration
+   next if !$d || ($d->{usb3} && ($d->{host} ne "spice" || 
PVE::QemuServer::qemu_machine_feature_enabled($machine, $kvmver, 4, 1)));
$use_usb2 = 1;
}
# include usb device config
@@ -63,7 +67,10 @@ sub get_usb_controllers {
  for (my $i = 0; $i < $max_usb_devices; $i++)  {
next if !$conf->{"usb$i"};
my $d = eval { 
PVE::JSONSchema::parse_property_string($format,$conf->{"usb$i"}) };
-   next if !$d || !$d->{usb3};
+
+   # don't add usb3 controller if usb3 device is for spice and qemu version
+   # < 4.1 - for live migrations
+   next if !$d || !$d->{usb3} || ($d->{host} eq 'spice' && 
!PVE::QemuServer::qemu_machine_feature_enabled($machine, $kvmver, 4, 1));
$use_usb3 = 1;
  }
  
@@ -74,7 +81,7 @@ sub get_usb_controllers {

  }
  
  sub get_usb_devices {

-my ($conf, $format, $max_usb_devices) = @_;
+my ($conf, $format, $max_usb_devices, $machine, $kvmver) = @_;
  
  my $devices = [];
  
@@ -87,9 +94,12 @@ sub get_usb_devices {

my $hostdevice = parse_usb_device($d->{host});
$hostdevice->{usb3} = $d->{usb3};
if (defined($hostdevice->{spice}) && $hostdevice->{spice}) {
-   # usb redir support for spice, currently no usb3
+   # usb redir support for spice, usb3 available with qemu 4.1
+   my $bus = 'ehci';
+   $bus = 'xhci' if PVE::QemuServer::qemu_machine_feature_enabled($machine, 
$kvmver, 4, 1) && $hostdevice->{usb3};
+
push @$devices, '-chardev', 
"spicevmc,id=usbredirchardev$i,name=usbredir";
-   push @$devices, '-device', 
"usb-redir,chardev=usbredirchardev$i,id=usbredirdev$i,bus=ehci.0";
+   push @$devices, '-device', 
"usb-redir,chardev=usbredirchardev$i,id=usbredirdev$i,bus=$bus.0";
} else {
push @$devices, '-device', print_usbdevice_full($conf, "usb$i", 
$hostdevice);
}



___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


Re: [pve-devel] [PATCH docs] pve-network: add short section explaining Open vSwitch

2019-08-28 Thread Thomas Lamprecht
On 27.08.19 16:31, Aaron Lauterer wrote:
> On 8/27/19 12:27 PM, Christian Ebner wrote:
>> Signed-off-by: Christian Ebner 

>> +see the https://pve.proxmox.com/wiki/Open_vSwitch[Open vSwitch wiki page] 
>> for
>> +further details.
>> +
>> +OVS Bridge
>> +^^
>> +
>> +Just like a Linux virtual bridge, this will create a new OVS virtual bridge,
>> +allowing to attach raw ethernet devices and virtual interfaces such as OVS 
>> bonds
>> +or OVS IntPorts.
> 
> # remove the whole sentence? or phrase it differently? something like the 
> following?
> 
> The OVS virtual bridge is the base to which raw ethernet devices and virtual 
> interfaces such as ... can be attached to.
> 
> # should we call it "is the switch to"? sounds weird though.

I'd use "is the network device" instead

> 
>> +On creation, you can directly assing raw ethernet devices to attatch to the
>> +bridge ports and assing an IP address to the bridge.

even if this would be change completely, FYI: s/assing/assign/ s/attatch/attach/

> 
> On creation you can define the raw ethernet devices attached to the OVS 
> bridge in the 'bridge_ports' field. You can configure IP addresses and 
> gateways on the bridge if needed.

I'd change the second sentence to:

"You can configure IP addresses and gateways also on the bridge directly if 
needed."

(minus potential grammar erros, but I'd like to underline that those IPs are
then directly on the bridge and that it can be done independently of the other
stuff)


> 
> # no comma? phrase it a bit differently for better understanding. though I am 
> not really happy about my suggestion either.

It something, and I'd rather have something not 100% matching to a writing
guide than no content at all. We got some great feedback over the current stat
of pve-docs, and that while it's grammar/style can surely be improved, so I'd
like to try to not bike-shed this to much...

> 
>> +In contrast to Linux virtual bridges, OVS bridges can carry multiple VLANs 
>> over
>> +a sinlge bridge.
> 
> # this is not true. by now Linux bridges can be set to VLAN aware and thus 
> reduce the use cases for the OVS quite a bit.

With vlan-aware on you cannot do any VXLANs anymore, AFAIK, which OVS still can.
But yes, in general that comment is not the full truth so maybe just omit it
for now..

___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


Re: [pve-devel] [PATCH docs] pve-network: add short section explaining Open vSwitch

2019-08-28 Thread Aaron Lauterer




On 8/28/19 9:42 AM, Thomas Lamprecht wrote:

On 27.08.19 16:31, Aaron Lauterer wrote:

On 8/27/19 12:27 PM, Christian Ebner wrote:

Signed-off-by: Christian Ebner 



+In contrast to Linux virtual bridges, OVS bridges can carry multiple VLANs over
+a sinlge bridge.


# this is not true. by now Linux bridges can be set to VLAN aware and thus 
reduce the use cases for the OVS quite a bit.


With vlan-aware on you cannot do any VXLANs anymore, AFAIK, which OVS still can.
But yes, in general that comment is not the full truth so maybe just omit it
for now..



What if we put a subsection "Open vSwitch vs. Linux bridges" / 
"Comparison to Linux bridges" at the beginning of the OVS section?


I think one or two paragraphs there could help people a lot to decide if 
they even need OVS. Talking about the features and use cases. In which 
situations the Linux Bridge is not enough anymore and OVS is needed.


___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


Re: [pve-devel] [PATCH docs] pve-network: add short section explaining Open vSwitch

2019-08-28 Thread Thomas Lamprecht
On 28.08.19 10:10, Aaron Lauterer wrote:
> 
> 
> On 8/28/19 9:42 AM, Thomas Lamprecht wrote:
>> On 27.08.19 16:31, Aaron Lauterer wrote:
>>> On 8/27/19 12:27 PM, Christian Ebner wrote:
 Signed-off-by: Christian Ebner 
>>>
 +In contrast to Linux virtual bridges, OVS bridges can carry multiple 
 VLANs over
 +a sinlge bridge.
>>>
>>> # this is not true. by now Linux bridges can be set to VLAN aware and thus 
>>> reduce the use cases for the OVS quite a bit.
>>
>> With vlan-aware on you cannot do any VXLANs anymore, AFAIK, which OVS still 
>> can.
>> But yes, in general that comment is not the full truth so maybe just omit it
>> for now..
>>
> 
> What if we put a subsection "Open vSwitch vs. Linux bridges" / "Comparison to 
> Linux bridges" at the beginning of the OVS section?
> 
> I think one or two paragraphs there could help people a lot to decide if they 
> even need OVS. Talking about the features and use cases. In which situations 
> the Linux Bridge is not enough anymore and OVS is needed.

Sounds good to me. Would then need to be updated from time to time, though, as
Linux Bridges have seen quite some improvements over time I'd guess there's more
to come in future kernel releases.

___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] applied: [PATCH container] don't leave fstrim lock if mount_all fails

2019-08-28 Thread Thomas Lamprecht
On 26.08.19 16:06, Oguz Bektas wrote:
> when a container has a mountpoint which can't be mounted for some reason,
> mount_all dies and the fstrim lock stays. prevent this by moving the call into
> eval, warn if any error occurs.

applied, but added a little bit information here about the unmount_all case:

Still try to unmount all already mounted MPs so that nothing blocking
remains left

> 
> Signed-off-by: Oguz Bektas 
> ---
>  src/PVE/CLI/pct.pm | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/PVE/CLI/pct.pm b/src/PVE/CLI/pct.pm
> index 8807633..35ad72f 100755
> --- a/src/PVE/CLI/pct.pm
> +++ b/src/PVE/CLI/pct.pm
> @@ -774,9 +774,9 @@ __PACKAGE__->register_method ({
>  
>   my $storecfg = PVE::Storage::config();
>   my $conf = PVE::LXC::Config->set_lock($vmid, 'fstrim');
> - PVE::LXC::mount_all($vmid, $storecfg, $conf);
>   eval {
>   my $path = "";
> + PVE::LXC::mount_all($vmid, $storecfg, $conf);
>   PVE::LXC::Config->foreach_mountpoint($conf, sub {
>   my ($name, $mp) = @_;
>   $path = $mp->{mp};
> @@ -784,6 +784,7 @@ __PACKAGE__->register_method ({
>   PVE::Tools::run_command($cmd);
>   });
>   };
> + warn $@ if $@;
>  
>   PVE::LXC::umount_all($vmid, $storecfg, $conf, 0);
>   PVE::LXC::Config->remove_lock($vmid, 'fstrim');
> 


___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] [PATCH v3 docs 1/5] Mention GUI for creating a cluster and adding nodes

2019-08-28 Thread Stefan Reiter
Signed-off-by: Stefan Reiter 
---

Sorry for missing 2/2 on previous patch series, had some trouble with the
mailing list not accepting my mails.

v3:
* Changed "Add Node" section to allow better image placement

v2:
* Changed some wording to remove "you"s and made sections clearer.
  Big thanks to Aaron for the helpful review.
* Do not remove [[pvecm_create_cluster]] tag

 pvecm.adoc | 78 +-
 1 file changed, 59 insertions(+), 19 deletions(-)

diff --git a/pvecm.adoc b/pvecm.adoc
index e986a75..c41e691 100644
--- a/pvecm.adoc
+++ b/pvecm.adoc
@@ -108,20 +108,31 @@ recommend to reference nodes by their IP addresses in the 
cluster configuration.
 Create the Cluster
 --
 
-Login via `ssh` to the first {pve} node. Use a unique name for your cluster.
-This name cannot be changed later. The cluster name follows the same rules as
-node names.
+Use a unique name for your cluster. This name cannot be changed later. The
+cluster name follows the same rules as node names.
+
+Create via Web GUI
+~~
+
+Under __Datacenter -> Cluster__, click on *Create Cluster*. Enter the cluster
+name and select a network connection from the dropdown to serve as the main
+cluster network (Link 0). It defaults to the IP resolved via the node's
+hostname.
+
+To add a second link as fallback, you can select the 'Advanced' checkbox and
+choose an additional network interface (Link 1, see also
+xref:pvecm_redundancy[Corosync Redundancy]).
+
+Create via Command Line
+~~~
+
+Login via `ssh` to the first {pve} node and run the following command:
 
 
  hp1# pvecm create CLUSTERNAME
 
 
-NOTE: It is possible to create multiple clusters in the same physical or 
logical
-network. Use unique cluster names if you do so. To avoid human confusion, it is
-also recommended to choose different names even if clusters do not share the
-cluster network.
-
-To check the state of your cluster use:
+To check the state of the new cluster use:
 
 
  hp1# pvecm status
@@ -131,9 +142,9 @@ Multiple Clusters In Same Network
 ~
 
 It is possible to create multiple clusters in the same physical or logical
-network. Each such cluster must have a unique name, this does not only helps
-admins to distinguish on which cluster they currently operate, it is also
-required to avoid possible clashes in the cluster communication stack.
+network. Each such cluster must have a unique name to avoid possible clashes in
+the cluster communication stack. This also helps avoid human confusion by 
making
+clusters clearly distinguishable.
 
 While the bandwidth requirement of a corosync cluster is relatively low, the
 latency of packages and the package per second (PPS) rate is the limiting
@@ -145,6 +156,37 @@ infrastructure for bigger clusters.
 Adding Nodes to the Cluster
 ---
 
+CAUTION: A node that is about to be added to the cluster cannot hold any 
guests.
+All existing configuration in `/etc/pve` is overwritten when joining a cluster,
+since guest IDs could be conflicting. As a workaround create a backup of the
+guest (`vzdump`) and restore it as a different ID after the node has been added
+to the cluster.
+
+Add Node via GUI
+
+
+Login to the web interface on an existing cluster node. Under __Datacenter ->
+Cluster__, click the button *Join Information* at the top. Then, click on the
+button *Copy Information*. Alternatively, copy the string from the 
'Information'
+field manually.
+
+Next, login to the web interface on the node you want to add.
+Under __Datacenter -> Cluster__, click on *Join Cluster*. Fill in the
+'Information' field with the text you copied earlier.
+
+For security reasons, the cluster password has to be entered manually.
+
+NOTE: To enter all required data manually, you can disable the 'Assisted Join'
+checkbox.
+
+After clicking on *Join* the node will immediately be added to the cluster. You
+might need to reload the web page and re-login with the cluster credentials.
+
+Confirm that your node is visible under __Datacenter -> Cluster__.
+
+Add Node via Command Line
+~
+
 Login via `ssh` to the node you want to add.
 
 
@@ -154,11 +196,6 @@ Login via `ssh` to the node you want to add.
 For `IP-ADDRESS-CLUSTER` use the IP or hostname of an existing cluster node.
 An IP address is recommended (see xref:pvecm_corosync_addresses[Link Address 
Types]).
 
-CAUTION: A new node cannot hold any VMs, because you would get
-conflicts about identical VM IDs. Also, all existing configuration in
-`/etc/pve` is overwritten when you join a new node to the cluster. To
-workaround, use `vzdump` to backup and restore to a different VMID after
-adding the node to the cluster.
 
 To check the state of the cluster use:
 
@@ -229,6 +266,8 @@ pvecm add IP-ADDRESS-CLUSTER -link0 LOCAL-IP-ADDRESS-LINK0
 If you want to use the built-in xref:pvecm_redundancy[redundancy

[pve-devel] [PATCH v3 docs 5/5] Add screenshot references to cluster GUI section

2019-08-28 Thread Stefan Reiter
Signed-off-by: Stefan Reiter 
---
 pvecm.adoc | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/pvecm.adoc b/pvecm.adoc
index c41e691..7bccaa7 100644
--- a/pvecm.adoc
+++ b/pvecm.adoc
@@ -114,6 +114,8 @@ cluster name follows the same rules as node names.
 Create via Web GUI
 ~~
 
+[thumbnail="screenshot/gui-cluster-create.png"]
+
 Under __Datacenter -> Cluster__, click on *Create Cluster*. Enter the cluster
 name and select a network connection from the dropdown to serve as the main
 cluster network (Link 0). It defaults to the IP resolved via the node's
@@ -165,11 +167,15 @@ to the cluster.
 Add Node via GUI
 
 
+[thumbnail="screenshot/gui-cluster-join-information.png"]
+
 Login to the web interface on an existing cluster node. Under __Datacenter ->
 Cluster__, click the button *Join Information* at the top. Then, click on the
 button *Copy Information*. Alternatively, copy the string from the 
'Information'
 field manually.
 
+[thumbnail="screenshot/gui-cluster-join.png"]
+
 Next, login to the web interface on the node you want to add.
 Under __Datacenter -> Cluster__, click on *Join Cluster*. Fill in the
 'Information' field with the text you copied earlier.
-- 
2.20.1


___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] [PATCH v3 docs 4/5] Add cluster join screenshot

2019-08-28 Thread Stefan Reiter
Signed-off-by: Stefan Reiter 
---
 images/screenshot/gui-cluster-join.png | Bin 0 -> 61710 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 images/screenshot/gui-cluster-join.png

diff --git a/images/screenshot/gui-cluster-join.png 
b/images/screenshot/gui-cluster-join.png
new file mode 100644
index 
..71bea4a9068efd53d307b786989cad667cf9aeff
GIT binary patch
literal 61710
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

[pve-devel] [PATCH v3 docs 3/5] Add cluster join information screenshot

2019-08-28 Thread Stefan Reiter
Signed-off-by: Stefan Reiter 
---
 .../screenshot/gui-cluster-join-information.png | Bin 0 -> 53366 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 images/screenshot/gui-cluster-join-information.png

diff --git a/images/screenshot/gui-cluster-join-information.png 
b/images/screenshot/gui-cluster-join-information.png
new file mode 100644
index 
..7ecb9030eb6607b85d37756af000bb899b8acef2
GIT binary patch
literal 53366
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