Re: [pve-devel] Roadmap - improved SDN support

2019-07-11 Thread Naumann, Thomas
Hi,

thanks for sharing the links...
-- 
Thomas Naumann

Abteilung Netze und Kommunikation
Otto-von-Guericke Universität Magdeburg
Universitätsrechenzentrum
Universitätsplatz 2
39106 Magdeburg

fon: +49 391 67-58563
email: thomas.naum...@ovgu.de

On Thu, 2019-07-11 at 10:25 +0200, Thomas Lamprecht wrote:
> Hi,
> 
> On 7/11/19 6:11 AM, Naumann, Thomas wrote:
> > Hi,
> > 
> > at datacenter of university we are working on a saas-platform to
> > automaticly deploy VMs, container, networks, services via web-gui
> > for
> > students and employies. So, we are searching for a technicly basis
> > for
> > this project. 
> > Because "Proxmox" runs several Clusters in our datacenter and does
> > a
> > great jobs we wonder if it could be a basis for this project. We
> > known
> > there is also "Openstack" but I think it might be some kind of
> > overkill.
> > What do you think about that?
> > 
> 
> proxmox.com has some testimonials from universities using Proxmox VE
> in a lab course or similar, see (especially the first two, I'd
> guess):
> 
> https://www.proxmox.com/en/proxmox-ve/testimonials/category/edu-gov
> 
> Also, as Proxmox VE has a REST api which allows nowadays build a
> cluster,
> create & manage VMs and CTs, you should not have big problems in
> integrating
> and adapting it into your own  platform.
> 
> https://pve.proxmox.com/pve-docs/api-viewer/index.html
> 
> cheers,
> Thomas
> 
___
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] applied: [PATCH qemu-server] use new pcie port hardware

2019-07-11 Thread Thomas Lamprecht
On 7/8/19 11:25 AM, Dominik Csapak wrote:
> with qemu 4.0 we can make use of the new pcie-root-ports with settings
> for the width/speed which can resolve issues with some hardware combinations
> when negioating link speed
> 
> so we add a new q35 cfg that we include with machine types >= 4.0
> to preserve live migration of machines without passthrough but q35
> 
> for details about the link speeds see:
> 
> pcie: Enhanced link speed and width support
> https://lists.gnu.org/archive/html/qemu-devel/2018-12/msg02827.html
> 
> Signed-off-by: Dominik Csapak 
> ---
> i would like to get this into 6.0 before release, else we either cannot do 
> this
> until qemu 4.0.1/4.1 or have some situations where live migration is not 
> possible
> 
> an alternative would be to only do this change when we do pci(e) passthrough
> which would minimize the impact on live migration, but makes the code a bit
> more complicated
> 

applied, but I only skimmed the new config so I'd be great to get another
cross-check of it soon...

>  Makefile  |   1 +
>  PVE/QemuServer.pm |   9 +++
>  PVE/QemuServer/USB.pm |   6 +-
>  pve-q35-4.0.cfg   | 161 ++
>  4 files changed, 172 insertions(+), 5 deletions(-)
>  create mode 100644 pve-q35-4.0.cfg
> 
> diff --git a/Makefile b/Makefile
> index 8274060..6e8fc78 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -77,6 +77,7 @@ install: ${PKGSOURCES}
>   install -d ${DESTDIR}/usr/share/${PACKAGE}
>   install -m 0644 pve-usb.cfg ${DESTDIR}/usr/share/${PACKAGE}
>   install -m 0644 pve-q35.cfg ${DESTDIR}/usr/share/${PACKAGE}
> + install -m 0644 pve-q35-4.0.cfg ${DESTDIR}/usr/share/${PACKAGE}
>   install -m 0644 -D qm.bash-completion ${DESTDIR}/${BASHCOMPLDIR}/qm
>   install -m 0644 -D qmrestore.bash-completion 
> ${DESTDIR}/${BASHCOMPLDIR}/qmrestore
>   install -m 0644 -D qm.zsh-completion ${DESTDIR}/${ZSHCOMPLDIR}/_qm
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> index 5ef92a3..9f29927 100644
> --- a/PVE/QemuServer.pm
> +++ b/PVE/QemuServer.pm
> @@ -3628,6 +3628,15 @@ sub config_to_command {
>   push @$cmd, '-drive', 
> "if=pflash,unit=1,format=$format,id=drive-efidisk0,file=$path";
>  }
>  
> +# load q35 config
> +if ($q35) {
> + # we use different pcie-port hardware for qemu >= 4.0 for passthrough
> + if (qemu_machine_feature_enabled($machine_type, $kvmver, 4, 0)) {
> + push @$devices, '-readconfig', 
> '/usr/share/qemu-server/pve-q35-4.0.cfg';
> + } else {
> + push @$devices, '-readconfig', '/usr/share/qemu-server/pve-q35.cfg';
> + }
> +}
>  
>  # add usb controllers
>  my @usbcontrollers = PVE::QemuServer::USB::get_usb_controllers($conf, 
> $bridges, $arch, $machine_type, $usbdesc->{format}, $MAX_USB_DEVICES);
> diff --git a/PVE/QemuServer/USB.pm b/PVE/QemuServer/USB.pm
> index 9eaaccc..a2097b9 100644
> --- a/PVE/QemuServer/USB.pm
> +++ b/PVE/QemuServer/USB.pm
> @@ -42,11 +42,7 @@ sub get_usb_controllers {
>  if ($arch eq 'aarch64') {
>  $pciaddr = print_pci_addr('ehci', $bridges, $arch, $machine);
>  push @$devices, '-device', "usb-ehci,id=ehci$pciaddr";
> -} elsif ($machine =~ /q35/) { # FIXME: combine this and 
> machine_type_is_q35
> - # the q35 chipset support native usb2, so we enable usb controller
> - # by default for this machine type
> -push @$devices, '-readconfig', '/usr/share/qemu-server/pve-q35.cfg';
> -} else {
> +} elsif ($machine !~ /q35/) { # FIXME: combine this and 
> machine_type_is_q35
>  $pciaddr = print_pci_addr("piix3", $bridges, $arch, $machine);
>  push @$devices, '-device', "piix3-usb-uhci,id=uhci$pciaddr.0x2";
>  
> diff --git a/pve-q35-4.0.cfg b/pve-q35-4.0.cfg
> new file mode 100644
> index 000..9a294bd
> --- /dev/null
> +++ b/pve-q35-4.0.cfg
> @@ -0,0 +1,161 @@
> +[device "ehci"]
> +  driver = "ich9-usb-ehci1"
> +  multifunction = "on"
> +  bus = "pcie.0"
> +  addr = "1d.7"
> +
> +[device "uhci-1"]
> +  driver = "ich9-usb-uhci1"
> +  multifunction = "on"
> +  bus = "pcie.0"
> +  addr = "1d.0"
> +  masterbus = "ehci.0"
> +  firstport = "0"
> +
> +[device "uhci-2"]
> +  driver = "ich9-usb-uhci2"
> +  multifunction = "on"
> +  bus = "pcie.0"
> +  addr = "1d.1"
> +  masterbus = "ehci.0"
> +  firstport = "2"
> +
> +[device "uhci-3"]
> +  driver = "ich9-usb-uhci3"
> +  multifunction = "on"
> +  bus = "pcie.0"
> +  addr = "1d.2"
> +  masterbus = "ehci.0"
> +  firstport = "4"
> +
> +[device "ehci-2"]
> +  driver = "ich9-usb-ehci2"
> +  multifunction = "on"
> +  bus = "pcie.0"
> +  addr = "1a.7"
> +
> +[device "uhci-4"]
> +  driver = "ich9-usb-uhci4"
> +  multifunction = "on"
> +  bus = "pcie.0"
> +  addr = "1a.0"
> +  masterbus = "ehci-2.0"
> +  firstport = "0"
> +
> +[device "uhci-5"]
> +  driver = "ich9-usb-uhci5"
> +  multifunction = "on"
> +  bus = "pcie.0"
> +  addr = "1a.1"
> +  masterbus = "ehci-2.0"
> +  firstport = "2"
> +
> +[device "uhci-6"]
> 

[pve-devel] [PATCH v2 lvm] fix #2184: filter lvs from guests

2019-07-11 Thread Oguz Bektas
Signed-off-by: Oguz Bektas 
---
v1 -> v2:
* use format-patch flags --no-signature and --no-numbered


 ...01-filter-zvols-and-lvs-from-guests.patch} | 21 +--
 ...002-enable-issue_discards-by-default.patch | 11 --
 patch => 0003-disable-init-scripts.patch} | 14 ++---
 patchdir/series   |  5 +++--
 4 files changed, 23 insertions(+), 28 deletions(-)
 rename patchdir/{0001-filter-zvols-and-PVE-VG-by-default.patch => 
0001-filter-zvols-and-lvs-from-guests.patch} (53%)
 rename patchdir/{0006-disable-init-scripts.patch => 
0003-disable-init-scripts.patch} (74%)

diff --git a/patchdir/0001-filter-zvols-and-PVE-VG-by-default.patch 
b/patchdir/0001-filter-zvols-and-lvs-from-guests.patch
similarity index 53%
rename from patchdir/0001-filter-zvols-and-PVE-VG-by-default.patch
rename to patchdir/0001-filter-zvols-and-lvs-from-guests.patch
index 5ebe494..bab1f44 100644
--- a/patchdir/0001-filter-zvols-and-PVE-VG-by-default.patch
+++ b/patchdir/0001-filter-zvols-and-lvs-from-guests.patch
@@ -1,30 +1,29 @@
-From 65e9206964c546842ccd8cc8c7885b4feb66c429 Mon Sep 17 00:00:00 2001
+From 3d331953abde0c9d70b3741bbcc38d36cd0a55b4 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= 
 Date: Fri, 17 Mar 2017 11:59:25 +0100
-Subject: [PATCH 1/6] filter zvols and PVE VG by default
+Subject: [PATCH] filter zvols and lvs from guests
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
 Signed-off-by: Fabian Grünbichler 
+Signed-off-by: Oguz Bektas 
 ---
- conf/example.conf.in | 3 +++
- 1 file changed, 3 insertions(+)
+ conf/example.conf.in | 4 
+ 1 file changed, 4 insertions(+)
 
 diff --git a/conf/example.conf.in b/conf/example.conf.in
-index 736b4bd..1a8a67b 100644
+index 0204f4b5a..cd921e10e 100644
 --- a/conf/example.conf.in
 +++ b/conf/example.conf.in
-@@ -125,6 +125,9 @@ devices {
+@@ -124,6 +124,10 @@ devices {
+   # as the combination might produce unexpected results (test changes.)
# Run vgscan after changing the filter to regenerate the cache.
-   # See the use_lvmetad comment for a special case regarding filters.
# 
 +  # Do not scan ZFS zvols (to avoid problems on ZFS zvols snapshots)
-+  global_filter = [ "r|/dev/zd.*|", "r|/dev/mapper/pve-.*|" ]
++  # Also do not scan LVM disks created by guests
++  global_filter = [ "r|/dev/zd.*|", "r|/dev/mapper/pve-.*|" 
"r|/dev/mapper/.*-vm--[0-9]+--disk--[0-9]+|"]
 +
# Example
# Accept every block device:
# filter = [ "a|.*/|" ]
--- 
-2.14.1
-
diff --git a/patchdir/0002-enable-issue_discards-by-default.patch 
b/patchdir/0002-enable-issue_discards-by-default.patch
index ac66732..8f69989 100644
--- a/patchdir/0002-enable-issue_discards-by-default.patch
+++ b/patchdir/0002-enable-issue_discards-by-default.patch
@@ -1,7 +1,7 @@
-From 829981232ec0ec4e8b2cae15d3fb940907feb28f Mon Sep 17 00:00:00 2001
+From a49c621f30b9d72f0439e9cf8fe7a605af7f438e Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= 
 Date: Fri, 17 Mar 2017 11:59:54 +0100
-Subject: [PATCH 2/6] enable issue_discards by default
+Subject: [PATCH] enable issue_discards by default
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -12,10 +12,10 @@ Signed-off-by: Fabian Grünbichler 

  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/conf/example.conf.in b/conf/example.conf.in
-index 1a8a67b..56b0795 100644
+index cd921e10e..3ec9e4038 100644
 --- a/conf/example.conf.in
 +++ b/conf/example.conf.in
-@@ -301,7 +301,7 @@ devices {
+@@ -286,7 +286,7 @@ devices {
# benefit from discards, but SSDs and thinly provisioned LUNs
# generally do. If enabled, discards will only be issued if both the
# storage and kernel provide support.
@@ -24,6 +24,3 @@ index 1a8a67b..56b0795 100644
  
# Configuration option devices/allow_changes_with_duplicate_pvs.
# Allow VG modification while a PV appears on multiple devices.
--- 
-2.14.1
-
diff --git a/patchdir/0006-disable-init-scripts.patch 
b/patchdir/0003-disable-init-scripts.patch
similarity index 74%
rename from patchdir/0006-disable-init-scripts.patch
rename to patchdir/0003-disable-init-scripts.patch
index 2456578..0982680 100644
--- a/patchdir/0006-disable-init-scripts.patch
+++ b/patchdir/0003-disable-init-scripts.patch
@@ -1,21 +1,21 @@
-From 39b527272533a3138ffc7f4988235176eb889d03 Mon Sep 17 00:00:00 2001
+From 808b192f09f93acd32d91a7eec6185e38db176d6 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= 
 Date: Mon, 9 Oct 2017 13:05:31 +0200
-Subject: [PATCH 6/6] disable init scripts
+Subject: [PATCH] disable init scripts
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
 Signed-off-by: Fabian Grünbichler 
 ---
- debian/rules | 3 ---
- 1 file changed, 3 deletions(-)
+ debian/rules | 4 
+ 1 file changed, 4 deletions(-)
 
 diff 

[pve-devel] applied: [PATCH manager] gui: ceph configdb: fix store load

2019-07-11 Thread Thomas Lamprecht
On 7/11/19 2:52 PM, Dominik Csapak wrote:
> instead of using API2Request, use the proper grid store load
> 
> Signed-off-by: Dominik Csapak 
> ---
>  www/manager6/ceph/Config.js | 30 +++---
>  1 file changed, 7 insertions(+), 23 deletions(-)
> 

code looks much nicer now too, applied, thanks!

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


[pve-devel] applied: [PATCH docs] make changelog single source of version

2019-07-11 Thread Thomas Lamprecht
On 7/5/19 11:44 AM, Thomas Lamprecht wrote:
> Signed-off-by: Thomas Lamprecht 
> ---
>  Makefile| 12 ++--
>  pve-doc-generator.mk.in |  4 +---
>  2 files changed, 7 insertions(+), 9 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 4399d37..53cf77b 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1,3 +1,5 @@
> +include /usr/share/dpkg/pkg-info.mk
> +
>  # overwriting below ensures that we can build without full PVE installed
>  DGDIR=.
>  ASCIIDOC_PVE=./asciidoc-pve
> @@ -6,16 +8,13 @@ GEN_PACKAGE=pve-doc-generator
>  DOC_PACKAGE=pve-docs
>  MEDIAWIKI_PACKAGE=pve-docs-mediawiki
>  
> -# also update debian/changelog
> -PKGREL=2
> -
>  GITVERSION:=$(shell git rev-parse HEAD)
>  
>  ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
>  
> -GEN_DEB=${GEN_PACKAGE}_${DOCRELEASE}-${PKGREL}_${ARCH}.deb
> -DOC_DEB=${DOC_PACKAGE}_${DOCRELEASE}-${PKGREL}_all.deb
> -MEDIAWIKI_DEB=${MEDIAWIKI_PACKAGE}_${DOCRELEASE}-${PKGREL}_all.deb
> +GEN_DEB=${GEN_PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_${ARCH}.deb
> +DOC_DEB=${DOC_PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_all.deb
> +MEDIAWIKI_DEB=${MEDIAWIKI_PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_all.deb
>  
>  export SOURCE_DATE_EPOCH ?= $(shell dpkg-parsechangelog -STimestamp)
>  SOURCE_DATE_HUMAN := $(shell date -d "@${SOURCE_DATE_EPOCH}")
> @@ -34,6 +33,7 @@ ADOC_SOURCES_GUESS=$(filter-out %-synopsis.adoc %-opts.adoc 
> %-table.adoc, $(wild
>  
>  pve-doc-generator.mk: .pve-doc-depends pve-doc-generator.mk.in
>   cat pve-doc-generator.mk.in .pve-doc-depends > $@.tmp
> + sed -i "s/@RELEASE@$$/${DEB_VERSION_UPSTREAM}/" $@.tmp
>   mv $@.tmp $@
>  
>  -include ./pve-doc-generator.mk
> diff --git a/pve-doc-generator.mk.in b/pve-doc-generator.mk.in
> index e4678a7..d0be25a 100644
> --- a/pve-doc-generator.mk.in
> +++ b/pve-doc-generator.mk.in
> @@ -1,6 +1,4 @@
> -# also update debian/changelog
> -# FIXME: depend on dpkg-dev and use $(DEB_VERSION_UPSTREAM) here?
> -DOCRELEASE=6.0
> +DOCRELEASE=@RELEASE@
>  
>  DGDIR?=/usr/share/pve-doc-generator
>  
> 

due to lack of opposing review and frustration with changing the version
number in multiple places: applied

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


Re: [pve-devel] [PATCH lvm] fix #2184: filter lvs from guests

2019-07-11 Thread Thomas Lamprecht
On 7/11/19 3:34 PM, Oguz Bektas wrote:
> adds another pattern "r|/dev/mapper/.*-vm--[0-9]+--disk--[0-9]+|" to
> global_filter in the default configuration, in light of this issue[0]
> 
> [0]: https://forum.proxmox.com/threads/random-migration-errors.53454/
> 

Looks OK, but does not applies, i.e., the recent
"backport: udev: do not overwrite ID_MODEL in rules" commit's touching
patchdir/series conflicts with yours..

Can you rebase, and possibly try to use the "--no-signature" and
"--no-numbered" git format-patch option switches, which makes those
patches a bit more stable.

> Signed-off-by: Oguz Bektas 
> ---
>  ...01-filter-zvols-and-lvs-from-guests.patch} | 20 ++-
>  ...002-enable-issue_discards-by-default.patch | 10 +-
>  patch => 0003-disable-init-scripts.patch} | 15 +++---
>  patchdir/series   |  4 ++--
>  4 files changed, 26 insertions(+), 23 deletions(-)
>  rename patchdir/{0001-filter-zvols-and-PVE-VG-by-default.patch => 
> 0001-filter-zvols-and-lvs-from-guests.patch} (53%)
>  rename patchdir/{0006-disable-init-scripts.patch => 
> 0003-disable-init-scripts.patch} (73%)
> 
> diff --git a/patchdir/0001-filter-zvols-and-PVE-VG-by-default.patch 
> b/patchdir/0001-filter-zvols-and-lvs-from-guests.patch
> similarity index 53%
> rename from patchdir/0001-filter-zvols-and-PVE-VG-by-default.patch
> rename to patchdir/0001-filter-zvols-and-lvs-from-guests.patch
> index 5ebe494..17aeb04 100644
> --- a/patchdir/0001-filter-zvols-and-PVE-VG-by-default.patch
> +++ b/patchdir/0001-filter-zvols-and-lvs-from-guests.patch
> @@ -1,30 +1,32 @@
> -From 65e9206964c546842ccd8cc8c7885b4feb66c429 Mon Sep 17 00:00:00 2001
> +From 3d331953abde0c9d70b3741bbcc38d36cd0a55b4 Mon Sep 17 00:00:00 2001
>  From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= 
>  Date: Fri, 17 Mar 2017 11:59:25 +0100
> -Subject: [PATCH 1/6] filter zvols and PVE VG by default
> +Subject: [PATCH 1/3] filter zvols and lvs from guests
>  MIME-Version: 1.0
>  Content-Type: text/plain; charset=UTF-8
>  Content-Transfer-Encoding: 8bit
>  
>  Signed-off-by: Fabian Grünbichler 
> +Signed-off-by: Oguz Bektas 
>  ---
> - conf/example.conf.in | 3 +++
> - 1 file changed, 3 insertions(+)
> + conf/example.conf.in | 4 
> + 1 file changed, 4 insertions(+)
>  
>  diff --git a/conf/example.conf.in b/conf/example.conf.in
> -index 736b4bd..1a8a67b 100644
> +index 0204f4b5a..cd921e10e 100644
>  --- a/conf/example.conf.in
>  +++ b/conf/example.conf.in
> -@@ -125,6 +125,9 @@ devices {
> +@@ -124,6 +124,10 @@ devices {
> + # as the combination might produce unexpected results (test changes.)
>   # Run vgscan after changing the filter to regenerate the cache.
> - # See the use_lvmetad comment for a special case regarding filters.
>   # 
>  +# Do not scan ZFS zvols (to avoid problems on ZFS zvols snapshots)
> -+global_filter = [ "r|/dev/zd.*|", "r|/dev/mapper/pve-.*|" ]
> ++# Also do not scan LVM disks created by guests
> ++global_filter = [ "r|/dev/zd.*|", "r|/dev/mapper/pve-.*|" 
> "r|/dev/mapper/.*-vm--[0-9]+--disk--[0-9]+|"]
>  +
>   # Example
>   # Accept every block device:
>   # filter = [ "a|.*/|" ]
>  -- 
> -2.14.1
> +2.20.1
>  
> diff --git a/patchdir/0002-enable-issue_discards-by-default.patch 
> b/patchdir/0002-enable-issue_discards-by-default.patch
> index ac66732..a957589 100644
> --- a/patchdir/0002-enable-issue_discards-by-default.patch
> +++ b/patchdir/0002-enable-issue_discards-by-default.patch
> @@ -1,7 +1,7 @@
> -From 829981232ec0ec4e8b2cae15d3fb940907feb28f Mon Sep 17 00:00:00 2001
> +From a49c621f30b9d72f0439e9cf8fe7a605af7f438e Mon Sep 17 00:00:00 2001
>  From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= 
>  Date: Fri, 17 Mar 2017 11:59:54 +0100
> -Subject: [PATCH 2/6] enable issue_discards by default
> +Subject: [PATCH 2/3] enable issue_discards by default
>  MIME-Version: 1.0
>  Content-Type: text/plain; charset=UTF-8
>  Content-Transfer-Encoding: 8bit
> @@ -12,10 +12,10 @@ Signed-off-by: Fabian Grünbichler 
> 
>   1 file changed, 1 insertion(+), 1 deletion(-)
>  
>  diff --git a/conf/example.conf.in b/conf/example.conf.in
> -index 1a8a67b..56b0795 100644
> +index cd921e10e..3ec9e4038 100644
>  --- a/conf/example.conf.in
>  +++ b/conf/example.conf.in
> -@@ -301,7 +301,7 @@ devices {
> +@@ -286,7 +286,7 @@ devices {
>   # benefit from discards, but SSDs and thinly provisioned LUNs
>   # generally do. If enabled, discards will only be issued if both the
>   # storage and kernel provide support.
> @@ -25,5 +25,5 @@ index 1a8a67b..56b0795 100644
>   # Configuration option devices/allow_changes_with_duplicate_pvs.
>   # Allow VG modification while a PV appears on multiple devices.
>  -- 
> -2.14.1
> +2.20.1
>  
> diff --git a/patchdir/0006-disable-init-scripts.patch 
> b/patchdir/0003-disable-init-scripts.patch
> similarity index 73%
> rename from patchdir/0006-disable-init-scripts.patch
> rename to patchdir/0003-disable-init-scripts.patch

[pve-devel] applied: [PATCH i18n] update turkish translation

2019-07-11 Thread Thomas Lamprecht
On 7/11/19 4:18 PM, Oguz Bektas wrote:
> Signed-off-by: Oguz Bektas 
> ---
>  tr.po | 210 +-
>  1 file changed, 92 insertions(+), 118 deletions(-)
> 

applied, thanks!


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


[pve-devel] applied: [PATCH kernel-meta 0/3] efiboot helper mount namespace

2019-07-11 Thread Thomas Lamprecht
On 7/11/19 11:22 AM, Fabian Grünbichler wrote:
> based on Thomas idea, but simplified (e.g., no extra 'internal-only'
> command), and extended to the zz-pve-efiboot hook script as well.

I'd not call "re-execing all and then needing to look that no re-exec
loop develops in a slightly racy way" simpler ;-) but it all works and
makes sharing the concept with the kernel hook really easier than my
POC, so applied, thanks!

> 
> Fabian Grünbichler (3):
>   efiboot: add new mount namespace helper
>   zz-pve-efiboot: re-exec in mount namespace
>   pve-efiboot-tool: initialize in mount namespace
> 
>  bin/pve-efiboot-tool   | 1 +
>  efiboot/functions  | 9 +
>  efiboot/zz-pve-efiboot | 2 ++
>  3 files changed, 12 insertions(+)
> 



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


[pve-devel] applied: [PATCH docs] boot/zfs: add docs for pve-efiboot-tool

2019-07-11 Thread Thomas Lamprecht
On 7/11/19 1:32 PM, Fabian Grünbichler wrote:
> Signed-off-by: Fabian Grünbichler 
> ---
>  local-zfs.adoc  |  6 ++
>  system-booting.adoc | 36 +++-
>  2 files changed, 37 insertions(+), 5 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 storage 1/3] Diskmanage: change parttype uuid detection

2019-07-11 Thread Thomas Lamprecht
On 7/11/19 4:32 PM, Fabian Grünbichler wrote:
> s/for/foreach
> 
> here and more below..
> 
> (according to our style guide, although this file in particular already
> has lots of 'for's :-P)

the style guide should be massaged to allow both, as for and foreach
are both OK (and unofficially blessed by our head of style guide
Wolfgang a bit ago in a offline discussion ;)


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


Re: [pve-devel] [PATCH storage] Diskmanage: add flag for encrypted osds

2019-07-11 Thread Fabian Grünbichler
assuming the different approach compared to the bluestore variable is
to avoid false negatives for OSDs encrypted in some other way, this
looks good to me.

On Thu, Jul 11, 2019 at 12:52:44PM +0200, Dominik Csapak wrote:
> we can only do this here, since the ceph cluster is not aware of
> osd encryption, only the local node is (via ceph-volume and lv tags)
> 
> this way, we are able to show an 'encrypted' flag in the disk gui at least
> 
> Signed-off-by: Dominik Csapak 
> ---
> this patch is intended to be commited on top of my last series
> about the parttype uuid changes, if that is not commited
> i can rebase and send this patch again (if desired)
> 
>  PVE/Diskmanage.pm | 6 ++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
> index 8230aad..9b9d007 100644
> --- a/PVE/Diskmanage.pm
> +++ b/PVE/Diskmanage.pm
> @@ -295,6 +295,9 @@ sub get_ceph_volume_infos {
>   if (($type eq 'block' || $type eq 'data') && $fields->[2] =~ 
> m/ceph.osd_id=([^,]+)/) {
>   $result->{$dev}->{osdid} = $1;
>   $result->{$dev}->{bluestore} = ($type eq 'block');
> + if ($fields->[2] =~ m/ceph\.encrypted=1/) {
> + $result->{$dev}->{encrypted} = 1;
> + }
>   } else {
>   # undef++ becomes '1' (see `perldoc perlop`: Auto-increment)
>   $result->{$dev}->{$type}++;
> @@ -585,6 +588,7 @@ sub get_disks {
>  
>   my $osdid = -1;
>   my $bluestore = 0;
> + my $osdencrypted;
>  
>   my $journal_count = 0;
>   my $db_count = 0;
> @@ -641,6 +645,7 @@ sub get_disks {
>   if (defined($ceph_volume->{osdid})) {
>   $osdid = $ceph_volume->{osdid};
>   $bluestore = 1 if $ceph_volume->{bluestore};
> + $osdencrypted = $ceph_volume->{encrypted};
>   }
>   }
>  
> @@ -659,6 +664,7 @@ sub get_disks {
>   $disklist->{$dev}->{osdid} = $osdid;
>   $disklist->{$dev}->{journals} = $journal_count if $journal_count;
>   $disklist->{$dev}->{bluestore} = $bluestore if $osdid != -1;
> + $disklist->{$dev}->{osdencrypted} = $osdencrypted if 
> defined($osdencrypted);
>   $disklist->{$dev}->{db} = $db_count if $db_count;
>   $disklist->{$dev}->{wal} = $wal_count if $wal_count;
>  });
> -- 
> 2.20.1
> 
> 
> ___
> pve-devel mailing list
> pve-devel@pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

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


Re: [pve-devel] [PATCH storage 1/3] Diskmanage: change parttype uuid detection

2019-07-11 Thread Fabian Grünbichler
some style/naming stuff inline, with one exception. rest of the series
looks good.

On Thu, Jul 11, 2019 at 12:49:16PM +0200, Dominik Csapak wrote:
> previously ceph included a udev rule to populate
> /dev/disk/by-parttypeuuid/
> 
> but not anymore, so we now use 'lsblk --json -o path,parttype' to
> get a mapping between parttype uuid and partition
> 
> fix the test by simulating empty lsblk output
> 
> Signed-off-by: Dominik Csapak 
> ---
>  PVE/Diskmanage.pm | 108 --
>  test/disklist_test.pm |   9 +++-
>  2 files changed, 79 insertions(+), 38 deletions(-)
> 
> diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
> index 0deb1a6..8230aad 100644
> --- a/PVE/Diskmanage.pm
> +++ b/PVE/Diskmanage.pm
> @@ -6,6 +6,7 @@ use PVE::ProcFSTools;
>  use Data::Dumper;
>  use Cwd qw(abs_path);
>  use Fcntl ':mode';
> +use JSON;
>  
>  use PVE::Tools qw(extract_param run_command file_get_contents 
> file_read_firstline dir_glob_regex dir_glob_foreach trim);
>  
> @@ -15,6 +16,7 @@ my $SGDISK = "/sbin/sgdisk";
>  my $PVS = "/sbin/pvs";
>  my $LVS = "/sbin/lvs";
>  my $UDEVADM = "/bin/udevadm";
> +my $LSBLK = "/bin/lsblk";
>  
>  sub verify_blockdev_path {
>  my ($rel_path) = @_;
> @@ -154,7 +156,38 @@ sub get_smart_data {
>  return $smartdata;
>  }
>  
> +sub get_lsblk_info() {

I'd name this less general, unless you plan on including other
information as well?

> +my $cmd = [$LSBLK, '--json', '-o', 'path,parttype'];
> +my $output = "";
> +my $res = {};
> +eval {
> + run_command($cmd, outfunc => sub {
> + $output .= "$_\n";
> + });
> +};
> +warn "$@\n" if $@;

at this point $output might be an empty string, in which case we can
just return an empty list. not very likely to happen, but for certain
errors lsblk just prints an error message on stderr and nothing on stdout.

this is the only thing that IMHO must really be cleared up, as it can cause
unnecessary and confusing warnings from decode_json.

> +my $list = [];
> +eval {
> + $list = decode_json($output);
> + $list = $list->{blockdevices}; # pull out the device list
> +};
> +warn "$@\n" if $@;

now $list is either
[] (decode_json failed or no blockdevices found)
undef (json does not contain blockdevices key)
a list of blockdevices

since you don't use $list much, why not something like

my $parsed = eval { json_decode($output) };
warn "$@\n" if $@;
my $list = $parsed->{blockdevices} // [];

much more readable IMHO.

> +
> +for my $dev (@$list) {

s/for/foreach

here and more below..

(according to our style guide, although this file in particular already
has lots of 'for's :-P)

> + next if !($dev->{parttype});
> + my $type = $dev->{parttype};
> + my $path = $dev->{path};
> + if (!$res->{$type}) {
> + $res->{$type} = [];
> + }
> + push @{$res->{$type}}, $path;

this could also be shortened somewhat:

next if !($dev->{parttype});
my $type = $dev->{parttype};
$res->{$type} = [] if !defined($res->{type});
push @{$res->{$type}}, $dev->{path};

> +}
> +
> +return $res;
> +}
> +
>  sub get_zfs_devices {
> +my ($lsblk) = @_;

I'd rename this parameter - it's not important where this information
comes from, but what it is - a mapping from (part)uuids to device paths

>  my $list = {};
>  
>  return {} if ! -x $ZPOOL;
> @@ -176,19 +209,24 @@ sub get_zfs_devices {
>  # because maybe zfs tools are not installed
>  warn "$@\n" if $@;
>  
> -my $applezfsuuid = "6a898cc3-1dd2-11b2-99a6-080020736631";
> -my $bsdzfsuuid = "516e7cba-6ecf-11d6-8ff8-00022d09712b";
> +my $uuids = [
> + "6a898cc3-1dd2-11b2-99a6-080020736631", # apple
> + "516e7cba-6ecf-11d6-8ff8-00022d09712b", # bsd
> +];
>  
> -dir_glob_foreach('/dev/disk/by-parttypeuuid', 
> "($applezfsuuid|$bsdzfsuuid)\..+", sub {
> - my ($entry) = @_;
> - my $real_dev = abs_path("/dev/disk/by-parttypeuuid/$entry");
> - $list->{$real_dev} = 1;
> -});
> +for my $uuid (@$uuids) {
> + if ($lsblk->{$uuid}) {
> + for my $dev (@{$lsblk->{$uuid}}) {
> + $list->{$dev} = 1;
> + }
> + }
> +}

this code is a prime candidate for refactoring into its own sub, e.g.
(untested, and not very pretty variable names):

my $get_devices_by_partuuid = sub {
my ($uuid_device_map, $partuuids, $res) = @_;

my $res = {} if !defined($res);

foreach my $uuid (@$partuuids) {
   map { $res->{$_} = 1 } @{$uuid_device_map->{$uuid}};
}

return $res;
}

and now all the get_foo subs can just call this with their list of
target uuids (and partially filled $res).
>  
>  return $list;

also, the return variable is called $list here (while it
is a hash), but $___hash or $___list on the caller side depending on
storage..

>  }
>  
>  sub get_lvm_devices {
> +my ($lsblk) = @_;
>  my $list = {};
>  eval {
>   run_command([$PVS, 

[pve-devel] [PATCH i18n] update turkish translation

2019-07-11 Thread Oguz Bektas
Signed-off-by: Oguz Bektas 
---
 tr.po | 210 +-
 1 file changed, 92 insertions(+), 118 deletions(-)

diff --git a/tr.po b/tr.po
index 202535b..0d59b8a 100644
--- a/tr.po
+++ b/tr.po
@@ -8,7 +8,7 @@ msgstr ""
 "Project-Id-Version: proxmox translations\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: Thu Jul  4 16:18:05 2019\n"
-"PO-Revision-Date: 2019-04-10 14:09+0200\n"
+"PO-Revision-Date: 2019-07-11 16:18+0200\n"
 "Last-Translator: Oguz Bektas \n"
 "Language-Team: Turkish\n"
 "Language: tr\n"
@@ -16,7 +16,7 @@ msgstr ""
 "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"
+"X-Generator: Poedit 2.2.1\n"
 
 #: pve-manager/www/manager6/lxc/MPEdit.js:213
 msgid "/some/path"
@@ -81,7 +81,7 @@ msgstr "Aktif"
 #: pve-manager/www/manager6/dc/AuthEdit.js:36
 #: pve-manager/www/manager6/dc/AuthView.js:66
 msgid "Active Directory Server"
-msgstr ""
+msgstr "Active Directory Sunucusu"
 
 #: proxmox-widget-toolkit/Utils.js:410
 #: proxmox-widget-toolkit/window/Edit.js:253 pmg-gui/js/ActionList.js:102
@@ -127,6 +127,8 @@ msgid ""
 "Additional monitors are recommended. They can be created at any time in the "
 "Monitor tab."
 msgstr ""
+"İlave monitörler tavsiye edilir. İstenen bir zamanda Monitor sekmesinden "
+"yaratabilirsiniz."
 
 #: pmg-gui/js/UserBlackWhiteList.js:34 pmg-gui/js/UserBlackWhiteList.js:195
 #: pve-manager/www/manager6/ceph/ServiceList.js:287
@@ -161,7 +163,7 @@ msgstr "Gelişmiş"
 #: pve-manager/www/manager6/lxc/Config.js:290
 #: pve-manager/www/manager6/qemu/Config.js:320
 msgid "Alias"
-msgstr ""
+msgstr "Takma ad"
 
 #: pve-manager/www/manager6/dc/Backup.js:33
 #: pve-manager/www/manager6/dc/Backup.js:148
@@ -185,7 +187,7 @@ msgstr "Ayrılan"
 #: pmg-gui/js/SpamQuarantineOptions.js:66
 #: pmg-gui/js/VirusQuarantineOptions.js:17
 msgid "Allow HREFs"
-msgstr ""
+msgstr "HREF'lere izin ver"
 
 #: proxmox-widget-toolkit/Toolkit.js:91 proxmox-widget-toolkit/Toolkit.js:99
 #: proxmox-widget-toolkit/Toolkit.js:107
@@ -206,11 +208,11 @@ msgstr ""
 
 #: pmg-gui/js/Utils.js:431
 msgid "Archive Filter"
-msgstr ""
+msgstr "Arşiv filtresi"
 
 #: pve-manager/www/manager6/qemu/HardwareView.js:427
 msgid "Are you sure you want to detach entry {0}"
-msgstr "{0} kaydını kaldırmak istediğinizden emin misiniz"
+msgstr "{0} kaydını kaldırmak istediğinizden emin misiniz?"
 
 #: pve-manager/www/manager6/StateProvider.js:184
 msgid "Are you sure you want to navigate away from this page?"
@@ -227,11 +229,11 @@ msgstr "Bu sayfadan ayrılmak istediğinize emin misiniz?"
 #: pve-manager/www/manager6/qemu/HardwareView.js:425
 #: pve-manager/www/manager6/qemu/SnapshotTree.js:194
 msgid "Are you sure you want to remove entry {0}"
-msgstr "{0} kaydını kaldırmak istediğinizden emin misiniz"
+msgstr "{0} kaydını kaldırmak istediğinizden emin misiniz?"
 
 #: pve-manager/www/manager6/dc/ACLView.js:158
 msgid "Are you sure you want to remove this entry"
-msgstr "Bu kaydı kaldırmak istediğinize emin misiniz"
+msgstr "Bu kaydı kaldırmak istediğinize emin misiniz?"
 
 #: pmg-gui/js/UserBlackWhiteList.js:177
 msgid "Are you sure you want to remove {0} entries"
@@ -377,7 +379,7 @@ msgstr "Blok boyutu"
 
 #: pmg-gui/js/VirusDetectorOptions.js:11
 msgid "Block encrypted archives"
-msgstr ""
+msgstr "Blok şifrelenmiş arşivler"
 
 #: pmg-gui/js/Utils.js:515
 msgid "Body"
@@ -472,17 +474,17 @@ msgstr ""
 #: pve-manager/www/manager6/lxc/ResourceEdit.js:29
 #: pve-manager/www/manager6/qemu/CreateWizard.js:170
 msgid "CPU"
-msgstr ""
+msgstr "İşlemci"
 
 #: pve-manager/www/manager6/lxc/ResourceEdit.js:65
 #: pve-manager/www/manager6/qemu/ProcessorEdit.js:136
 msgid "CPU limit"
-msgstr "CPU limiti"
+msgstr "İşlemci limiti"
 
 #: pve-manager/www/manager6/lxc/ResourceEdit.js:75
 #: pve-manager/www/manager6/qemu/ProcessorEdit.js:146
 msgid "CPU units"
-msgstr "CPU üniteleri"
+msgstr "İşlemci üniteleri"
 
 #: pmg-gui/js/ServerStatus.js:116 pmg-gui/js/ServerStatus.js:119
 #: pve-manager/www/manager6/data/ResourceStore.js:167
@@ -498,12 +500,12 @@ msgstr "CPU üniteleri"
 #: pve-manager/www/manager6/qemu/Summary.js:75
 #: pve-manager/www/manager6/qemu/Summary.js:78
 msgid "CPU usage"
-msgstr "CPU kullanımı"
+msgstr "İşlemci kullanımı"
 
 #: pve-manager/www/manager6/Utils.js:826
 #: pve-manager/www/manager6/node/StatusView.js:95
 msgid "CPU(s)"
-msgstr "CPU(lar)"
+msgstr "İşlemci(ler)"
 
 #: pve-manager/www/manager6/ha/Resources.js:138
 msgid "CRM State"
@@ -565,7 +567,7 @@ msgstr "Değişiklik günlüğü"
 
 #: pmg-gui/js/SpamDetectorStatus.js:23
 msgid "Channel"
-msgstr ""
+msgstr "Kanal"
 
 #: pmg-gui/js/Subscription.js:163
 #: pve-manager/www/manager6/node/Subscription.js:167
@@ -598,19 +600,19 @@ msgstr "Kullanıcı adını sil"
 
 #: pmg-gui/js/MailTracker.js:378
 msgid "Client"
-msgstr ""
+msgstr "İstemci"
 
 #: pmg-gui/js/MailProxyOptions.js:57
 msgid "Client Connection Count Limit"
-msgstr ""

[pve-devel] [PATCH lvm] fix #2184: filter lvs from guests

2019-07-11 Thread Oguz Bektas
adds another pattern "r|/dev/mapper/.*-vm--[0-9]+--disk--[0-9]+|" to
global_filter in the default configuration, in light of this issue[0]

[0]: https://forum.proxmox.com/threads/random-migration-errors.53454/

Signed-off-by: Oguz Bektas 
---
 ...01-filter-zvols-and-lvs-from-guests.patch} | 20 ++-
 ...002-enable-issue_discards-by-default.patch | 10 +-
 patch => 0003-disable-init-scripts.patch} | 15 +++---
 patchdir/series   |  4 ++--
 4 files changed, 26 insertions(+), 23 deletions(-)
 rename patchdir/{0001-filter-zvols-and-PVE-VG-by-default.patch => 
0001-filter-zvols-and-lvs-from-guests.patch} (53%)
 rename patchdir/{0006-disable-init-scripts.patch => 
0003-disable-init-scripts.patch} (73%)

diff --git a/patchdir/0001-filter-zvols-and-PVE-VG-by-default.patch 
b/patchdir/0001-filter-zvols-and-lvs-from-guests.patch
similarity index 53%
rename from patchdir/0001-filter-zvols-and-PVE-VG-by-default.patch
rename to patchdir/0001-filter-zvols-and-lvs-from-guests.patch
index 5ebe494..17aeb04 100644
--- a/patchdir/0001-filter-zvols-and-PVE-VG-by-default.patch
+++ b/patchdir/0001-filter-zvols-and-lvs-from-guests.patch
@@ -1,30 +1,32 @@
-From 65e9206964c546842ccd8cc8c7885b4feb66c429 Mon Sep 17 00:00:00 2001
+From 3d331953abde0c9d70b3741bbcc38d36cd0a55b4 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= 
 Date: Fri, 17 Mar 2017 11:59:25 +0100
-Subject: [PATCH 1/6] filter zvols and PVE VG by default
+Subject: [PATCH 1/3] filter zvols and lvs from guests
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
 Signed-off-by: Fabian Grünbichler 
+Signed-off-by: Oguz Bektas 
 ---
- conf/example.conf.in | 3 +++
- 1 file changed, 3 insertions(+)
+ conf/example.conf.in | 4 
+ 1 file changed, 4 insertions(+)
 
 diff --git a/conf/example.conf.in b/conf/example.conf.in
-index 736b4bd..1a8a67b 100644
+index 0204f4b5a..cd921e10e 100644
 --- a/conf/example.conf.in
 +++ b/conf/example.conf.in
-@@ -125,6 +125,9 @@ devices {
+@@ -124,6 +124,10 @@ devices {
+   # as the combination might produce unexpected results (test changes.)
# Run vgscan after changing the filter to regenerate the cache.
-   # See the use_lvmetad comment for a special case regarding filters.
# 
 +  # Do not scan ZFS zvols (to avoid problems on ZFS zvols snapshots)
-+  global_filter = [ "r|/dev/zd.*|", "r|/dev/mapper/pve-.*|" ]
++  # Also do not scan LVM disks created by guests
++  global_filter = [ "r|/dev/zd.*|", "r|/dev/mapper/pve-.*|" 
"r|/dev/mapper/.*-vm--[0-9]+--disk--[0-9]+|"]
 +
# Example
# Accept every block device:
# filter = [ "a|.*/|" ]
 -- 
-2.14.1
+2.20.1
 
diff --git a/patchdir/0002-enable-issue_discards-by-default.patch 
b/patchdir/0002-enable-issue_discards-by-default.patch
index ac66732..a957589 100644
--- a/patchdir/0002-enable-issue_discards-by-default.patch
+++ b/patchdir/0002-enable-issue_discards-by-default.patch
@@ -1,7 +1,7 @@
-From 829981232ec0ec4e8b2cae15d3fb940907feb28f Mon Sep 17 00:00:00 2001
+From a49c621f30b9d72f0439e9cf8fe7a605af7f438e Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= 
 Date: Fri, 17 Mar 2017 11:59:54 +0100
-Subject: [PATCH 2/6] enable issue_discards by default
+Subject: [PATCH 2/3] enable issue_discards by default
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -12,10 +12,10 @@ Signed-off-by: Fabian Grünbichler 

  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/conf/example.conf.in b/conf/example.conf.in
-index 1a8a67b..56b0795 100644
+index cd921e10e..3ec9e4038 100644
 --- a/conf/example.conf.in
 +++ b/conf/example.conf.in
-@@ -301,7 +301,7 @@ devices {
+@@ -286,7 +286,7 @@ devices {
# benefit from discards, but SSDs and thinly provisioned LUNs
# generally do. If enabled, discards will only be issued if both the
# storage and kernel provide support.
@@ -25,5 +25,5 @@ index 1a8a67b..56b0795 100644
# Configuration option devices/allow_changes_with_duplicate_pvs.
# Allow VG modification while a PV appears on multiple devices.
 -- 
-2.14.1
+2.20.1
 
diff --git a/patchdir/0006-disable-init-scripts.patch 
b/patchdir/0003-disable-init-scripts.patch
similarity index 73%
rename from patchdir/0006-disable-init-scripts.patch
rename to patchdir/0003-disable-init-scripts.patch
index 2456578..98d587f 100644
--- a/patchdir/0006-disable-init-scripts.patch
+++ b/patchdir/0003-disable-init-scripts.patch
@@ -1,21 +1,21 @@
-From 39b527272533a3138ffc7f4988235176eb889d03 Mon Sep 17 00:00:00 2001
+From 808b192f09f93acd32d91a7eec6185e38db176d6 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= 
 Date: Mon, 9 Oct 2017 13:05:31 +0200
-Subject: [PATCH 6/6] disable init scripts
+Subject: [PATCH 3/3] disable init scripts
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 

Re: [pve-devel] [PATCH v2 widget-toolkit 1/2] KVComboBox: add setComboItems function

2019-07-11 Thread Oguz Bektas
On Thu, Jul 11, 2019 at 03:00:07PM +0200, Dominik Csapak wrote:
> is there a 2/2 also ?
2/2 was the manager patch, sorry for confusion
> 
> looks good except the one nit inline
> 
> On 7/11/19 2:54 PM, Oguz Bektas wrote:
> > this allows to change the comboItems of a KVComboBox on the run
> > 
> > Signed-off-by: Oguz Bektas 
> > ---
> > 
> > no changes, added for convenience
> > 
> >   form/KVComboBox.js | 7 +++
> >   1 file changed, 7 insertions(+)
> > 
> > diff --git a/form/KVComboBox.js b/form/KVComboBox.js
> > index 0970fcf..5e76f6f 100644
> > --- a/form/KVComboBox.js
> > +++ b/form/KVComboBox.js
> > @@ -71,5 +71,12 @@ Ext.define('Proxmox.form.KVComboBox', {
> > }
> > me.callParent();
> > +},
> > +
> > +setComboItems: function(items) {
> > +   var me = this;
> > +
> > +   me.getStore().setData(items);
> >   }
> > +
> 
> this empty line seems unnecessary
> 
> >   });
> > 
> 
> 

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


[pve-devel] [PATCH widget-toolkit] override Ext.Components 'validIdRe' to include '@'

2019-07-11 Thread Dominik Csapak
we use itemIds with '@' already in the ceph dashboard, and in
non-debug modeit works (as expected) but throws an error
while using ext-all-debug.js so override it to include the '@'

the regex was in place because in html4 the 'id' tag could only consist
letters ofthe mentioned regex, this was lifted in html5 though[0]

0: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id

Signed-off-by: Dominik Csapak 
---
 Toolkit.js | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/Toolkit.js b/Toolkit.js
index abdeb64..6956a8e 100644
--- a/Toolkit.js
+++ b/Toolkit.js
@@ -439,6 +439,12 @@ Ext.define(null, {
 
 });
 
+// add '@' to the valid id
+Ext.define('Proxmox.validIdReOverride', {
+override: 'Ext.Component',
+validIdRe: /^[a-z_][a-z0-9\-_\@]*$/i,
+});
+
 // force alert boxes to be rendered with an Error Icon
 // since Ext.Msg is an object and not a prototype, we need to override it
 // after the framework has been initiated
-- 
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] [PATCH v3 manager 2/2] filter unusable lxc mountoptions for rootfs

2019-07-11 Thread Oguz Bektas
On Thu, Jul 11, 2019 at 03:08:30PM +0200, Oguz Bektas wrote:
> disable nodev and noexec per thomas' suggestion[0].
> 
> [0]: https://pve.proxmox.com/pipermail/pve-devel/2019-July/037994.html
> 
> Signed-off-by: Oguz Bektas 
> ---
> v2 -> v3:
> * change from 'field' to 'var field' to avoid assigning 'window.field'
i mean 'filtered'
> 
>  www/manager6/lxc/MPEdit.js | 8 
>  1 file changed, 8 insertions(+)
> 
> diff --git a/www/manager6/lxc/MPEdit.js b/www/manager6/lxc/MPEdit.js
> index 7689340d..8851c5fc 100644
> --- a/www/manager6/lxc/MPEdit.js
> +++ b/www/manager6/lxc/MPEdit.js
> @@ -58,6 +58,14 @@ Ext.define('PVE.lxc.MountPointInputPanel', {
>   if (mp.mountoptions) {
>   mp.mountoptions = mp.mountoptions.split(';');
>   }
> +
> + if (this.confid === 'rootfs') {
> + var field = me.down('field[name=mountoptions]');
> + var forbidden = ['nodev', 'noexec'];
> + var filtered = field.comboItems.filter(e => 
> !forbidden.includes(e[0]));
> + field.setComboItems(filtered);
> + }
> +
>   me.setValues(mp);
>  },
>  
> -- 
> 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 widget-toolkit 1/2] KVComboBox: add setComboItems function

2019-07-11 Thread Oguz Bektas
this allows to change the comboItems of a KVComboBox on the run

Signed-off-by: Oguz Bektas 
---

no changes, added for convenience

 form/KVComboBox.js | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/form/KVComboBox.js b/form/KVComboBox.js
index 0970fcf..5e76f6f 100644
--- a/form/KVComboBox.js
+++ b/form/KVComboBox.js
@@ -71,5 +71,12 @@ Ext.define('Proxmox.form.KVComboBox', {
}
 
me.callParent();
+},
+
+setComboItems: function(items) {
+   var me = this;
+
+   me.getStore().setData(items);
 }
+
 });
-- 
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 manager 2/2] filter unusable lxc mountoptions for rootfs

2019-07-11 Thread Oguz Bektas
disable nodev and noexec per thomas' suggestion[0].

[0]: https://pve.proxmox.com/pipermail/pve-devel/2019-July/037994.html

Signed-off-by: Oguz Bektas 
---
v2 -> v3:
* change from 'field' to 'var field' to avoid assigning 'window.field'

 www/manager6/lxc/MPEdit.js | 8 
 1 file changed, 8 insertions(+)

diff --git a/www/manager6/lxc/MPEdit.js b/www/manager6/lxc/MPEdit.js
index 7689340d..8851c5fc 100644
--- a/www/manager6/lxc/MPEdit.js
+++ b/www/manager6/lxc/MPEdit.js
@@ -58,6 +58,14 @@ Ext.define('PVE.lxc.MountPointInputPanel', {
if (mp.mountoptions) {
mp.mountoptions = mp.mountoptions.split(';');
}
+
+   if (this.confid === 'rootfs') {
+   var field = me.down('field[name=mountoptions]');
+   var forbidden = ['nodev', 'noexec'];
+   var filtered = field.comboItems.filter(e => 
!forbidden.includes(e[0]));
+   field.setComboItems(filtered);
+   }
+
me.setValues(mp);
 },
 
-- 
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] [PATCH v2 manager] filter unusable lxc mountoptions for rootfs

2019-07-11 Thread Dominik Csapak

still ok but i now saw something i did not see before, comment inline

On 7/11/19 2:53 PM, Oguz Bektas wrote:

disable nodev and noexec per thomas' suggestion[0].

[0]: https://pve.proxmox.com/pipermail/pve-devel/2019-July/037994.html

Signed-off-by: Oguz Bektas 
---

v1 -> v2:
* define 'field' only in if branch to avoid unnecessary .down
* remove unintentional whitespace

  www/manager6/lxc/MPEdit.js | 8 
  1 file changed, 8 insertions(+)

diff --git a/www/manager6/lxc/MPEdit.js b/www/manager6/lxc/MPEdit.js
index 7689340d..59651712 100644
--- a/www/manager6/lxc/MPEdit.js
+++ b/www/manager6/lxc/MPEdit.js
@@ -58,6 +58,14 @@ Ext.define('PVE.lxc.MountPointInputPanel', {
if (mp.mountoptions) {
mp.mountoptions = mp.mountoptions.split(';');
}
+
+   if (this.confid === 'rootfs') {
+   var field = me.down('field[name=mountoptions]');
+   var forbidden = ['nodev', 'noexec'];
+   filtered = field.comboItems.filter(e => !forbidden.includes(e[0]));


it seems this should be 'var filtered' else this gets assigned
to 'window.filtered' (in a browser at least)


+   field.setComboItems(filtered);
+   }
+
me.setValues(mp);
  },
  




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


Re: [pve-devel] [PATCH v2 widget-toolkit 1/2] KVComboBox: add setComboItems function

2019-07-11 Thread Thomas Lamprecht
On 7/11/19 3:00 PM, Dominik Csapak wrote:
> is there a 2/2 also ?
> 
> looks good except the one nit inline
> 
> On 7/11/19 2:54 PM, Oguz Bektas wrote:
>> this allows to change the comboItems of a KVComboBox on the run
>>
>> Signed-off-by: Oguz Bektas 
>> ---
>>
>> no changes, added for convenience
>>
>>   form/KVComboBox.js | 7 +++
>>   1 file changed, 7 insertions(+)
>>
>> diff --git a/form/KVComboBox.js b/form/KVComboBox.js
>> index 0970fcf..5e76f6f 100644
>> --- a/form/KVComboBox.js
>> +++ b/form/KVComboBox.js
>> @@ -71,5 +71,12 @@ Ext.define('Proxmox.form.KVComboBox', {
>>   }
>>     me.callParent();
>> +    },
>> +
>> +    setComboItems: function(items) {
>> +    var me = this;
>> +
>> +    me.getStore().setData(items);
>>   }
>> +
> 
> this empty line seems unnecessary

saw your mail to late, sorry, got already applied..

> 
>>   });
>>
> 


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


Re: [pve-devel] [PATCH v2 widget-toolkit 1/2] KVComboBox: add setComboItems function

2019-07-11 Thread Dominik Csapak

is there a 2/2 also ?

looks good except the one nit inline

On 7/11/19 2:54 PM, Oguz Bektas wrote:

this allows to change the comboItems of a KVComboBox on the run

Signed-off-by: Oguz Bektas 
---

no changes, added for convenience

  form/KVComboBox.js | 7 +++
  1 file changed, 7 insertions(+)

diff --git a/form/KVComboBox.js b/form/KVComboBox.js
index 0970fcf..5e76f6f 100644
--- a/form/KVComboBox.js
+++ b/form/KVComboBox.js
@@ -71,5 +71,12 @@ Ext.define('Proxmox.form.KVComboBox', {
}
  
  	me.callParent();

+},
+
+setComboItems: function(items) {
+   var me = this;
+
+   me.getStore().setData(items);
  }
+


this empty line seems unnecessary


  });




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


[pve-devel] applied: [PATCH kernel] fix #327: downgrade dependency on grub-*

2019-07-11 Thread Thomas Lamprecht
On 7/11/19 2:25 PM, Fabian Grünbichler wrote:
> from Depends to Recommends, since we now have an alternate bootloader
> setup for some scenarios. both our installer and Debian's default setup
> still install Grub by default anyway, but this allows removal without
> hacks in case such an alternate bootloader is used on the system.
> 
> Signed-off-by: Fabian Grünbichler 
> ---
>  debian/control.in | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/debian/control.in b/debian/control.in
> index ed01c62..bb7867e 100644
> --- a/debian/control.in
> +++ b/debian/control.in
> @@ -62,7 +62,7 @@ Provides: linux-image,
>linux-image-2.6,
>  Suggests: pve-firmware,
>  Depends: busybox,
> - grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub-efi-arm64,
>   initramfs-tools,
> +Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub-efi-arm64,
>  Description: The Proxmox PVE Kernel Image
>   This package contains the linux kernel and initial ramdisk used for booting
> 

applied, thanks!


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


[pve-devel] applied: [PATCH widget-toolkit] override Ext.Components 'validIdRe' to include '@'

2019-07-11 Thread Thomas Lamprecht
On 7/11/19 2:10 PM, Dominik Csapak wrote:
> we use itemIds with '@' already in the ceph dashboard, and in
> non-debug modeit works (as expected) but throws an error
> while using ext-all-debug.js so override it to include the '@'
> 
> the regex was in place because in html4 the 'id' tag could only consist
> letters ofthe mentioned regex, this was lifted in html5 though[0]
> 
> 0: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
> 
> Signed-off-by: Dominik Csapak 
> ---
>  Toolkit.js | 6 ++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/Toolkit.js b/Toolkit.js
> index abdeb64..6956a8e 100644
> --- a/Toolkit.js
> +++ b/Toolkit.js
> @@ -439,6 +439,12 @@ Ext.define(null, {
>  
>  });
>  
> +// add '@' to the valid id
> +Ext.define('Proxmox.validIdReOverride', {
> +override: 'Ext.Component',
> +validIdRe: /^[a-z_][a-z0-9\-_\@]*$/i,
> +});
> +
>  // force alert boxes to be rendered with an Error Icon
>  // since Ext.Msg is an object and not a prototype, we need to override it
>  // after the framework has been initiated
> 

applied, thanks!

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


[pve-devel] [PATCH v2 manager] filter unusable lxc mountoptions for rootfs

2019-07-11 Thread Oguz Bektas
disable nodev and noexec per thomas' suggestion[0].

[0]: https://pve.proxmox.com/pipermail/pve-devel/2019-July/037994.html

Signed-off-by: Oguz Bektas 
---

v1 -> v2:
* define 'field' only in if branch to avoid unnecessary .down
* remove unintentional whitespace

 www/manager6/lxc/MPEdit.js | 8 
 1 file changed, 8 insertions(+)

diff --git a/www/manager6/lxc/MPEdit.js b/www/manager6/lxc/MPEdit.js
index 7689340d..59651712 100644
--- a/www/manager6/lxc/MPEdit.js
+++ b/www/manager6/lxc/MPEdit.js
@@ -58,6 +58,14 @@ Ext.define('PVE.lxc.MountPointInputPanel', {
if (mp.mountoptions) {
mp.mountoptions = mp.mountoptions.split(';');
}
+
+   if (this.confid === 'rootfs') {
+   var field = me.down('field[name=mountoptions]');
+   var forbidden = ['nodev', 'noexec'];
+   filtered = field.comboItems.filter(e => !forbidden.includes(e[0]));
+   field.setComboItems(filtered);
+   }
+
me.setValues(mp);
 },
 
-- 
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 v2 widget-toolkit 1/2] KVComboBox: add setComboItems function

2019-07-11 Thread Oguz Bektas
this allows to change the comboItems of a KVComboBox on the run

Signed-off-by: Oguz Bektas 
---

no changes, added for convenience

 form/KVComboBox.js | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/form/KVComboBox.js b/form/KVComboBox.js
index 0970fcf..5e76f6f 100644
--- a/form/KVComboBox.js
+++ b/form/KVComboBox.js
@@ -71,5 +71,12 @@ Ext.define('Proxmox.form.KVComboBox', {
}
 
me.callParent();
+},
+
+setComboItems: function(items) {
+   var me = this;
+
+   me.getStore().setData(items);
 }
+
 });
-- 
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 manager] gui: ceph configdb: fix store load

2019-07-11 Thread Dominik Csapak
instead of using API2Request, use the proper grid store load

Signed-off-by: Dominik Csapak 
---
 www/manager6/ceph/Config.js | 30 +++---
 1 file changed, 7 insertions(+), 23 deletions(-)

diff --git a/www/manager6/ceph/Config.js b/www/manager6/ceph/Config.js
index 21b3c776..790f04c2 100644
--- a/www/manager6/ceph/Config.js
+++ b/www/manager6/ceph/Config.js
@@ -3,20 +3,10 @@ Ext.define('PVE.node.CephConfigDb', {
 alias: 'widget.pveNodeCephConfigDb',
 
 border: false,
-load: function() {
-   var me = this;
-
-   Proxmox.Utils.API2Request({
-   url: me.url,
-   waitMsgTarget: me,
-   failure: function(response, opts) {
-   console.log(response);
-   },
-   success: function(response, opts) {
-   var data = response.result.data;
-   me.getStore().setData(data);
-   }
-   });
+store: {
+   proxy: {
+   type: 'proxmox'
+   }
 },
 
 columns: [
@@ -63,18 +53,12 @@ Ext.define('PVE.node.CephConfigDb', {
throw "no node name specified";
}
 
-   Ext.apply(me, {
-   url: '/nodes/' + nodename + '/ceph/configdb',
-   listeners: {
-   activate: function() {
-   me.load();
-   }
-   }
-   });
+   me.store.proxy.url = '/api2/json/nodes/' + nodename + '/ceph/configdb';
 
me.callParent();
 
-   me.load();
+   Proxmox.Utils.monStoreErrors(me, me.getStore());
+   me.getStore().load();
 }
 });
 Ext.define('PVE.node.CephConfig', {
-- 
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 manager 1/2] ceph: add osd scrub api call

2019-07-11 Thread Thomas Lamprecht
On 7/10/19 3:13 PM, Dominik Csapak wrote:
> can be called to (deep) scrub a specific osd
> 
> Signed-off-by: Dominik Csapak 
> ---
> is there a better permission we could use? (since we do not know the
> storage name?)
>  PVE/API2/Ceph/OSD.pm | 45 
>  1 file changed, 45 insertions(+)
> 
> diff --git a/PVE/API2/Ceph/OSD.pm b/PVE/API2/Ceph/OSD.pm
> index 85197107..0582d538 100644
> --- a/PVE/API2/Ceph/OSD.pm
> +++ b/PVE/API2/Ceph/OSD.pm
> @@ -650,4 +650,49 @@ __PACKAGE__->register_method ({
>   return undef;
>  }});
>  
> +__PACKAGE__->register_method ({
> +name => 'scrub',
> +path => '{osdid}/scrub',
> +method => 'POST',
> +description => "Instruct the OSD to scrub.",
> +proxyto => 'node',
> +protected => 1,
> +permissions => {
> + check => ['perm', '/', [ 'Sys.Modify' ]],
> +},
> +parameters => {
> + additionalProperties => 0,
> + properties => {
> + node => get_standard_option('pve-node'),
> + osdid => {
> + description => 'OSD ID',
> + type => 'integer',
> + },
> + deep => {
> + description => 'If set, instructs a deep scrub instead of a 
> normal one.',
> + type => 'boolean',
> + optional => 1,
> + default => 0,
> + },
> + },
> +},
> +returns => { type => "null" },
> +code => sub {
> + my ($param) = @_;
> +
> + PVE::Ceph::Tools::check_ceph_inited();
> +
> + my $osdid = $param->{osdid};
> + my $deep = $param->{deep} // 0;
> +
> + my $rados = PVE::RADOS->new();
> +
> + my $osdstat = &$get_osd_status($rados, $osdid); # osd exists?
> + my $prefix = $deep ? 'osd deep-scrub' : 'osd scrub';
> +
> + $rados->mon_command({ prefix => $prefix, who => $osdid });
> +
> + return undef;
> +}});
> +
>  1;
> 

applied, thanks!

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


[pve-devel] applied: [PATCH manager 2/2] gui: ceph osd: rewrite osd panel and add scrub button

2019-07-11 Thread Thomas Lamprecht
On 7/10/19 3:13 PM, Dominik Csapak wrote:
> this rewrite of the osd panel converts it to a static declaration of
> the layout with a controller/viewmodel logic
> 
> while doing this, add icons to buttons, and add a scrub/deep scrub entry
> 
> Signed-off-by: Dominik Csapak 
> ---
> i guess it would be easiest to review the result and not the diff,
> since it is simply a big rewrite of the whole component..
> 

applied, thanks! Followed up with re-adding the "Used %" column,
removing  the viewmodel notify call (not necessary, and in debug
mode this can result into uncaught exceptions due to nested calls
to it by the scheduler).

Also reworked the columns of the OSD and Pool panel in general, but
that work was not really connected to your refactoring (it was already
ugly before ;)


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


[pve-devel] [PATCH kernel] fix #327: downgrade dependency on grub-*

2019-07-11 Thread Fabian Grünbichler
from Depends to Recommends, since we now have an alternate bootloader
setup for some scenarios. both our installer and Debian's default setup
still install Grub by default anyway, but this allows removal without
hacks in case such an alternate bootloader is used on the system.

Signed-off-by: Fabian Grünbichler 
---
 debian/control.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/debian/control.in b/debian/control.in
index ed01c62..bb7867e 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -62,7 +62,7 @@ Provides: linux-image,
   linux-image-2.6,
 Suggests: pve-firmware,
 Depends: busybox,
- grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub-efi-arm64,
  initramfs-tools,
+Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub-efi-arm64,
 Description: The Proxmox PVE Kernel Image
  This package contains the linux kernel and initial ramdisk used for booting
-- 
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 widget-toolkit] override Ext.Components 'validIdRe' to include '@'

2019-07-11 Thread Dominik Csapak
we use itemIds with '@' already in the ceph dashboard, and in
non-debug modeit works (as expected) but throws an error
while using ext-all-debug.js so override it to include the '@'

the regex was in place because in html4 the 'id' tag could only consist
letters ofthe mentioned regex, this was lifted in html5 though[0]

0: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id

Signed-off-by: Dominik Csapak 
---
 Toolkit.js | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/Toolkit.js b/Toolkit.js
index abdeb64..6956a8e 100644
--- a/Toolkit.js
+++ b/Toolkit.js
@@ -439,6 +439,12 @@ Ext.define(null, {
 
 });
 
+// add '@' to the valid id
+Ext.define('Proxmox.validIdReOverride', {
+override: 'Ext.Component',
+validIdRe: /^[a-z_][a-z0-9\-_\@]*$/i,
+});
+
 // force alert boxes to be rendered with an Error Icon
 // since Ext.Msg is an object and not a prototype, we need to override it
 // after the framework has been initiated
-- 
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 docs] boot/zfs: add docs for pve-efiboot-tool

2019-07-11 Thread Fabian Grünbichler
Signed-off-by: Fabian Grünbichler 
---
 local-zfs.adoc  |  6 ++
 system-booting.adoc | 36 +++-
 2 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/local-zfs.adoc b/local-zfs.adoc
index d4500da..2a5086e 100644
--- a/local-zfs.adoc
+++ b/local-zfs.adoc
@@ -256,6 +256,12 @@ can be used as cache.
  sgdisk  -R 
  sgdisk -G 
  zpool replace -f   
+ pve-efiboot-tool format 
+ pve-efiboot-tool init 
+
+NOTE: `ESP` stands for EFI System Partition, which is setup as partition #2 on
+bootable disks setup by the {pve} installer since version 5.4. For details, see
+xref:sysboot_systemd_boot_setup[Setting up a new partition for use as synced 
ESP].
 
 
 Activate E-Mail Notification
diff --git a/system-booting.adoc b/system-booting.adoc
index 4fad044..28507a2 100644
--- a/system-booting.adoc
+++ b/system-booting.adoc
@@ -141,17 +141,43 @@ options " > /mnt/esp/loader/entries/preferred.conf
 cat /etc/kernel/cmdline >> /mnt/esp/loader/entries/preferred.conf
 
 
+[[sysboot_systemd_boot_setup]]
+.Setting up a new partition for use as synced ESP
+
+To format and initialize a partition as synced ESP, e.g., after replacing a
+failed vdev in an rpool, or when converting an existing system that pre-dates
+the sync mechanism, `pve-efiboot-tool` from `pve-kernel-helpers` can be used.
+
+WARNING: the `format` command will format the ``, make sure to pass
+in the right device/partition!
+
+For example, to format an empty partition `/dev/sda2` as ESP, run the 
following:
+
+
+pve-efiboot-tool format /dev/sda2
+
+
+To setup an existing, unmounted ESP located on `/dev/sda2` for inclusion in
+{pve}'s synchronization mechanism, use the following:
+
+
+pve-efiboot-tool init /dev/sda2
+
+
+Afterwards `/etc/kernel/pve-efiboot-uuids` should contain a new line with the
+UUID of the newly added partition. The `init` command will also automatically
+trigger a refresh of all configured ESPs.
 
 [[sysboot_systemd_boot_refresh]]
 .Updating the configuration on all ESPs
 
-To copy and configure all bootable kernels and keep all ESPs in sync you just
-need to run the kernel hook script `/etc/kernel/postinst.d/zz-pve-efiboot`.
+To copy and configure all bootable kernels and keep all ESPs listed in
+`/etc/kernel/pve-efiboot-uuids` in sync you just need to run `pve-efiboot-tool
+refresh`.
 (The equivalent to running `update-grub` on Systems being booted with `grub`).
 
-This is necessary should you make changes to the kernel commandline, or if you
-want to add another ESP (e.g. when replacing a failed disk in a redundant ZFS
-pool).
+This is necessary should you make changes to the kernel commandline, or want to
+sync all kernels and initrds after regenerating the latter.
 
 [[sysboot_edit_kernel_cmdline]]
 Editing the kernel commandline
-- 
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 storage] Diskmanage: add flag for encrypted osds

2019-07-11 Thread Dominik Csapak
we can only do this here, since the ceph cluster is not aware of
osd encryption, only the local node is (via ceph-volume and lv tags)

this way, we are able to show an 'encrypted' flag in the disk gui at least

Signed-off-by: Dominik Csapak 
---
this patch is intended to be commited on top of my last series
about the parttype uuid changes, if that is not commited
i can rebase and send this patch again (if desired)

 PVE/Diskmanage.pm | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
index 8230aad..9b9d007 100644
--- a/PVE/Diskmanage.pm
+++ b/PVE/Diskmanage.pm
@@ -295,6 +295,9 @@ sub get_ceph_volume_infos {
if (($type eq 'block' || $type eq 'data') && $fields->[2] =~ 
m/ceph.osd_id=([^,]+)/) {
$result->{$dev}->{osdid} = $1;
$result->{$dev}->{bluestore} = ($type eq 'block');
+   if ($fields->[2] =~ m/ceph\.encrypted=1/) {
+   $result->{$dev}->{encrypted} = 1;
+   }
} else {
# undef++ becomes '1' (see `perldoc perlop`: Auto-increment)
$result->{$dev}->{$type}++;
@@ -585,6 +588,7 @@ sub get_disks {
 
my $osdid = -1;
my $bluestore = 0;
+   my $osdencrypted;
 
my $journal_count = 0;
my $db_count = 0;
@@ -641,6 +645,7 @@ sub get_disks {
if (defined($ceph_volume->{osdid})) {
$osdid = $ceph_volume->{osdid};
$bluestore = 1 if $ceph_volume->{bluestore};
+   $osdencrypted = $ceph_volume->{encrypted};
}
}
 
@@ -659,6 +664,7 @@ sub get_disks {
$disklist->{$dev}->{osdid} = $osdid;
$disklist->{$dev}->{journals} = $journal_count if $journal_count;
$disklist->{$dev}->{bluestore} = $bluestore if $osdid != -1;
+   $disklist->{$dev}->{osdencrypted} = $osdencrypted if 
defined($osdencrypted);
$disklist->{$dev}->{db} = $db_count if $db_count;
$disklist->{$dev}->{wal} = $wal_count if $wal_count;
 });
-- 
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 storage 2/3] Diskmanage: add test for lsblk by simulating zfs disk

2019-07-11 Thread Dominik Csapak
Signed-off-by: Dominik Csapak 
---
 test/disk_tests/usages/disklist   |  1 +
 test/disk_tests/usages/disklist_expected.json | 15 +++
 test/disk_tests/usages/lsblk  |  7 +++
 test/disk_tests/usages/partlist   |  2 ++
 test/disk_tests/usages/sdm/device/vendor  |  1 +
 test/disk_tests/usages/sdm/queue/rotational   |  1 +
 test/disk_tests/usages/sdm/size   |  1 +
 test/disk_tests/usages/sdm_udevadm| 12 
 8 files changed, 40 insertions(+)
 create mode 100644 test/disk_tests/usages/lsblk
 create mode 100644 test/disk_tests/usages/sdm/device/vendor
 create mode 100644 test/disk_tests/usages/sdm/queue/rotational
 create mode 100644 test/disk_tests/usages/sdm/size
 create mode 100644 test/disk_tests/usages/sdm_udevadm

diff --git a/test/disk_tests/usages/disklist b/test/disk_tests/usages/disklist
index ef443ed..92c3622 100644
--- a/test/disk_tests/usages/disklist
+++ b/test/disk_tests/usages/disklist
@@ -10,3 +10,4 @@ sdi
 sdj
 sdk
 sdl
+sdm
diff --git a/test/disk_tests/usages/disklist_expected.json 
b/test/disk_tests/usages/disklist_expected.json
index 610e80f..137385d 100644
--- a/test/disk_tests/usages/disklist_expected.json
+++ b/test/disk_tests/usages/disklist_expected.json
@@ -183,5 +183,20 @@
"rpm" : 0,
"type" : "hdd",
"osdid" : -1
+},
+"sdm" : {
+   "serial" : "SERIAL1",
+   "vendor" : "ATA",
+   "wwn" : "0x",
+   "devpath" : "/dev/sdm",
+   "model" : "MODEL1",
+   "used" : "ZFS",
+   "wearout" : "N/A",
+   "health" : "UNKNOWN",
+   "gpt" : 1,
+   "size" : 1536000,
+   "rpm" : 0,
+   "type" : "hdd",
+   "osdid" : -1
 }
 }
diff --git a/test/disk_tests/usages/lsblk b/test/disk_tests/usages/lsblk
new file mode 100644
index 000..cbb18b9
--- /dev/null
+++ b/test/disk_tests/usages/lsblk
@@ -0,0 +1,7 @@
+{
+   "blockdevices": [
+  {"path":"/dev/sdm", "parttype":null},
+  {"path":"/dev/sdm1", "parttype":"6a898cc3-1dd2-11b2-99a6-080020736631"},
+  {"path":"/dev/sdm9", "parttype":"6a945a3b-1dd2-11b2-99a6-080020736631"}
+   ]
+}
diff --git a/test/disk_tests/usages/partlist b/test/disk_tests/usages/partlist
index 8dcdefc..9fd750f 100644
--- a/test/disk_tests/usages/partlist
+++ b/test/disk_tests/usages/partlist
@@ -1,2 +1,4 @@
 sde1
 sdf1
+sdm1
+sdm9
diff --git a/test/disk_tests/usages/sdm/device/vendor 
b/test/disk_tests/usages/sdm/device/vendor
new file mode 100644
index 000..531030d
--- /dev/null
+++ b/test/disk_tests/usages/sdm/device/vendor
@@ -0,0 +1 @@
+ATA
diff --git a/test/disk_tests/usages/sdm/queue/rotational 
b/test/disk_tests/usages/sdm/queue/rotational
new file mode 100644
index 000..d00491f
--- /dev/null
+++ b/test/disk_tests/usages/sdm/queue/rotational
@@ -0,0 +1 @@
+1
diff --git a/test/disk_tests/usages/sdm/size b/test/disk_tests/usages/sdm/size
new file mode 100644
index 000..13de30f
--- /dev/null
+++ b/test/disk_tests/usages/sdm/size
@@ -0,0 +1 @@
+3000
diff --git a/test/disk_tests/usages/sdm_udevadm 
b/test/disk_tests/usages/sdm_udevadm
new file mode 100644
index 000..9317b9f
--- /dev/null
+++ b/test/disk_tests/usages/sdm_udevadm
@@ -0,0 +1,12 @@
+E: DEVNAME=/dev/sdm
+E: DEVTYPE=disk
+E: ID_ATA_ROTATION_RATE_RPM=0
+E: ID_BUS=ata
+E: ID_MODEL=MODEL1
+E: ID_PART_TABLE_TYPE=gpt
+E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
+E: ID_SERIAL=SERIAL1
+E: ID_SERIAL_SHORT=SERIAL1
+E: ID_TYPE=disk
+E: ID_WWN=0x
+E: ID_WWN_WITH_EXTENSION=0x
-- 
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 storage 3/3] Diskmanage: fix usage test for sdd

2019-07-11 Thread Dominik Csapak
sdd1 and sdd2 were listed in the zfs output but were not included
in the partlist, so the zfs detection test was wrong

now it is correct and more in line with the real world

Signed-off-by: Dominik Csapak 
---
 test/disk_tests/usages/disklist_expected.json | 1 +
 test/disk_tests/usages/partlist   | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/test/disk_tests/usages/disklist_expected.json 
b/test/disk_tests/usages/disklist_expected.json
index 137385d..b179cd6 100644
--- a/test/disk_tests/usages/disklist_expected.json
+++ b/test/disk_tests/usages/disklist_expected.json
@@ -85,6 +85,7 @@
"type" : "hdd",
"osdid" : -1,
"serial" : "SERIAL1",
+   "used": "ZFS",
"vendor" : "ATA",
"wwn" : "0x",
"devpath" : "/dev/sdd"
diff --git a/test/disk_tests/usages/partlist b/test/disk_tests/usages/partlist
index 9fd750f..43c1f68 100644
--- a/test/disk_tests/usages/partlist
+++ b/test/disk_tests/usages/partlist
@@ -1,3 +1,5 @@
+sdd1
+sdd2
 sde1
 sdf1
 sdm1
-- 
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 storage 1/3] Diskmanage: change parttype uuid detection

2019-07-11 Thread Dominik Csapak
previously ceph included a udev rule to populate
/dev/disk/by-parttypeuuid/

but not anymore, so we now use 'lsblk --json -o path,parttype' to
get a mapping between parttype uuid and partition

fix the test by simulating empty lsblk output

Signed-off-by: Dominik Csapak 
---
 PVE/Diskmanage.pm | 108 --
 test/disklist_test.pm |   9 +++-
 2 files changed, 79 insertions(+), 38 deletions(-)

diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
index 0deb1a6..8230aad 100644
--- a/PVE/Diskmanage.pm
+++ b/PVE/Diskmanage.pm
@@ -6,6 +6,7 @@ use PVE::ProcFSTools;
 use Data::Dumper;
 use Cwd qw(abs_path);
 use Fcntl ':mode';
+use JSON;
 
 use PVE::Tools qw(extract_param run_command file_get_contents 
file_read_firstline dir_glob_regex dir_glob_foreach trim);
 
@@ -15,6 +16,7 @@ my $SGDISK = "/sbin/sgdisk";
 my $PVS = "/sbin/pvs";
 my $LVS = "/sbin/lvs";
 my $UDEVADM = "/bin/udevadm";
+my $LSBLK = "/bin/lsblk";
 
 sub verify_blockdev_path {
 my ($rel_path) = @_;
@@ -154,7 +156,38 @@ sub get_smart_data {
 return $smartdata;
 }
 
+sub get_lsblk_info() {
+my $cmd = [$LSBLK, '--json', '-o', 'path,parttype'];
+my $output = "";
+my $res = {};
+eval {
+   run_command($cmd, outfunc => sub {
+   $output .= "$_\n";
+   });
+};
+warn "$@\n" if $@;
+my $list = [];
+eval {
+   $list = decode_json($output);
+   $list = $list->{blockdevices}; # pull out the device list
+};
+warn "$@\n" if $@;
+
+for my $dev (@$list) {
+   next if !($dev->{parttype});
+   my $type = $dev->{parttype};
+   my $path = $dev->{path};
+   if (!$res->{$type}) {
+   $res->{$type} = [];
+   }
+   push @{$res->{$type}}, $path;
+}
+
+return $res;
+}
+
 sub get_zfs_devices {
+my ($lsblk) = @_;
 my $list = {};
 
 return {} if ! -x $ZPOOL;
@@ -176,19 +209,24 @@ sub get_zfs_devices {
 # because maybe zfs tools are not installed
 warn "$@\n" if $@;
 
-my $applezfsuuid = "6a898cc3-1dd2-11b2-99a6-080020736631";
-my $bsdzfsuuid = "516e7cba-6ecf-11d6-8ff8-00022d09712b";
+my $uuids = [
+   "6a898cc3-1dd2-11b2-99a6-080020736631", # apple
+   "516e7cba-6ecf-11d6-8ff8-00022d09712b", # bsd
+];
 
-dir_glob_foreach('/dev/disk/by-parttypeuuid', 
"($applezfsuuid|$bsdzfsuuid)\..+", sub {
-   my ($entry) = @_;
-   my $real_dev = abs_path("/dev/disk/by-parttypeuuid/$entry");
-   $list->{$real_dev} = 1;
-});
+for my $uuid (@$uuids) {
+   if ($lsblk->{$uuid}) {
+   for my $dev (@{$lsblk->{$uuid}}) {
+   $list->{$dev} = 1;
+   }
+   }
+}
 
 return $list;
 }
 
 sub get_lvm_devices {
+my ($lsblk) = @_;
 my $list = {};
 eval {
run_command([$PVS, '--noheadings', '--readonly', '-o', 'pv_name'], 
outfunc => sub{
@@ -205,39 +243,35 @@ sub get_lvm_devices {
 warn "$@\n" if $@;
 
 my $lvmuuid = "e6d6d379-f507-44c2-a23c-238f2a3df928";
-
-dir_glob_foreach('/dev/disk/by-parttypeuuid', "$lvmuuid\..+", sub {
-   my ($entry) = @_;
-   my $real_dev = abs_path("/dev/disk/by-parttypeuuid/$entry");
-   $list->{$real_dev} = 1;
-});
+if ($lsblk->{$lvmuuid}) {
+   for my $dev (@{$lsblk->{$lvmuuid}}) {
+   $list->{$dev} = 1;
+   }
+}
 
 return $list;
 }
 
 sub get_ceph_journals {
-my $journalhash = {};
-
-my $journal_uuid = '45b0969e-9b03-4f30-b4c6-b4b80ceff106';
-my $db_uuid = '30cd0809-c2b2-499c-8879-2d6b78529876';
-my $wal_uuid = '5ce17fce-4087-4169-b7ff-056cc58473f9';
-my $block_uuid = 'cafecafe-9b03-4f30-b4c6-b4b80ceff106';
-
-dir_glob_foreach('/dev/disk/by-parttypeuuid', 
"($journal_uuid|$db_uuid|$wal_uuid|$block_uuid)\..+", sub {
-   my ($entry, $type) = @_;
-   my $real_dev = abs_path("/dev/disk/by-parttypeuuid/$entry");
-   if ($type eq $journal_uuid) {
-   $journalhash->{$real_dev} = 1;
-   } elsif ($type eq $db_uuid) {
-   $journalhash->{$real_dev} = 2;
-   } elsif ($type eq $wal_uuid) {
-   $journalhash->{$real_dev} = 3;
-   } elsif ($type eq $block_uuid) {
-   $journalhash->{$real_dev} = 4;
+my ($lsblk) = @_;
+my $list = {};
+
+my $uuids = [
+   '45b0969e-9b03-4f30-b4c6-b4b80ceff106', # journal
+   '30cd0809-c2b2-499c-8879-2d6b78529876', # db
+   '5ce17fce-4087-4169-b7ff-056cc58473f9', # wal
+   'cafecafe-9b03-4f30-b4c6-b4b80ceff106', # block
+];
+
+for my $uuid (@$uuids) {
+   if ($lsblk->{$uuid}) {
+   for my $dev (@{$lsblk->{$uuid}}) {
+   $list->{$dev} = 1;
+   }
}
-});
+}
 
-return $journalhash;
+return $list;
 }
 
 # reads the lv_tags and matches them with the devices
@@ -442,12 +476,14 @@ sub get_disks {
return $mounted->{$dev};
 };
 
-my $journalhash = get_ceph_journals();
+my $lsblkinfo = get_lsblk_info();
+
+my $journalhash = 

[pve-devel] [PATCH kernel-meta 3/3] pve-efiboot-tool: initialize in mount namespace

2019-07-11 Thread Fabian Grünbichler
by re-executing the whole 'pve-efiboot-tool init' command inside a new mount 
namespace

Co-Developed-By: Thomas Lamprecht 
Signed-off-by: Fabian Grünbichler 
---
 bin/pve-efiboot-tool | 1 +
 1 file changed, 1 insertion(+)

diff --git a/bin/pve-efiboot-tool b/bin/pve-efiboot-tool
index 6bbf679..abaaf00 100755
--- a/bin/pve-efiboot-tool
+++ b/bin/pve-efiboot-tool
@@ -189,6 +189,7 @@ case "$1" in
exit 0
;;
'init')
+   reexec_in_mountns "$@"
shift
if [ -z "$1"  ]; then
warn "E:  is mandatory."
-- 
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 kernel-meta 2/3] zz-pve-efiboot: re-exec in mount namespace

2019-07-11 Thread Fabian Grünbichler
to avoid affecting the running system negatively, e.g. because the
target paths for mounting the ESPs have been modified via symlinks or
similar attacks.

Signed-off-by: Fabian Grünbichler 
---
 efiboot/zz-pve-efiboot | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/efiboot/zz-pve-efiboot b/efiboot/zz-pve-efiboot
index 954dbec..32dfe99 100755
--- a/efiboot/zz-pve-efiboot
+++ b/efiboot/zz-pve-efiboot
@@ -151,10 +151,12 @@ case $0:$mode in
# Also run if we have no DEB_MAINT_PARAMS, in order to work with old
# kernel packages.
*/postinst.d/*:|*/postinst.d/*:configure)
+   reexec_in_mountns "$@"
BOOT_KVERS="$(boot_kernel_list "$@")"
update_esps
;;
 */postrm.d/*:|*/postrm.d/*:remove)
+   reexec_in_mountns "$@"
# no newly installed kernel
BOOT_KVERS="$(boot_kernel_list)"
update_esps
-- 
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 kernel-meta 0/3] efiboot helper mount namespace

2019-07-11 Thread Fabian Grünbichler
based on Thomas idea, but simplified (e.g., no extra 'internal-only'
command), and extended to the zz-pve-efiboot hook script as well.

Fabian Grünbichler (3):
  efiboot: add new mount namespace helper
  zz-pve-efiboot: re-exec in mount namespace
  pve-efiboot-tool: initialize in mount namespace

 bin/pve-efiboot-tool   | 1 +
 efiboot/functions  | 9 +
 efiboot/zz-pve-efiboot | 2 ++
 3 files changed, 12 insertions(+)

-- 
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 kernel-meta 1/3] efiboot: add new mount namespace helper

2019-07-11 Thread Fabian Grünbichler
to re-execute the currently running script in an unshared mount name
space.

Co-Developed-By: Thomas Lamprecht 
Signed-off-by: Fabian Grünbichler 
---
Not sure whether we want to keep the echo here, or just in
pve-efiboot-tool?

 efiboot/functions | 9 +
 1 file changed, 9 insertions(+)

diff --git a/efiboot/functions b/efiboot/functions
index cb6cd62..79062d8 100755
--- a/efiboot/functions
+++ b/efiboot/functions
@@ -63,3 +63,12 @@ boot_kernel_list() {
 warn() {
echo "$@" 1>&2
 }
+
+reexec_in_mountns() {
+   if [ -z "$PVE_EFIBOOT_UNSHARED" ]; then
+   export PVE_EFIBOOT_UNSHARED=1
+   echo "Re-executing '$0' in new private mount namespace.."
+   unshare --mount --propagation private "$0" "$@"
+   exit 0
+   fi
+}
-- 
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] [RFC proxmox-ve/kernel-meta 00/15] ESP sync improvements

2019-07-11 Thread Fabian Grünbichler
On Wed, Jul 10, 2019 at 09:04:39PM +0200, Thomas Lamprecht wrote:
> On 7/10/19 6:12 PM, Thomas Lamprecht wrote:
> > On 7/10/19 5:04 PM, Fabian Grünbichler wrote:
> >> - mktemp or something fancier for mountpoint directory creation, instead
> >>   of easy-to-guess hardcoded ones
> > 
> > We could just use a mount namespace, e.g., with
> > # unshare --mount
> > 
> > Then the outside would not see our mounts, at least unpriv. users..
> 
> E.g., something like the following:

yes, that looks like it should work and DTRT ;)

I'll send a patch based on it that also integrates it into
zz-pve-efiboot.

> 
> 8<
> diff --git a/bin/pveesptool b/bin/pveesptool
> index 6bbf679..e4b3928 100755
> --- a/bin/pveesptool
> +++ b/bin/pveesptool
> @@ -92,6 +92,28 @@ format() {
> exit 0
>  }
>  
> +do_esp_install() {
> +   part="$1"
> +   UUID="$2"
> +
> +   esp_mp="/var/tmp/espmounts/$UUID"
> +
> +   mkdir -p "$esp_mp"
> +   echo "Mounting '$part' on '$esp_mp'."
> +   mount -t vfat "$part" "$esp_mp"
> +
> +   echo "Installing systemd-boot.."
> +   mkdir -p "$esp_mp/$PMX_ESP_DIR"
> +   bootctl --path "$esp_mp" install
> +
> +   echo "Configuring systemd-boot.."
> +   echo "timeout 3" > "$esp_mp/$PMX_LOADER_CONF.tmp"
> +   echo "default proxmox-*" >> "$esp_mp/$PMX_LOADER_CONF.tmp"
> +   mv "$esp_mp/$PMX_LOADER_CONF.tmp" "$esp_mp/$PMX_LOADER_CONF"
> +   echo "Unmounting '$part'."
> +   umount "$part"
> +}
> +
>  init() {
> part="$1"
>  
> @@ -112,22 +134,8 @@ init() {
> exit 1
> fi
>  
> -   esp_mp="/var/tmp/espmounts/$UUID"
> -
> -   mkdir -p "$esp_mp"
> -   echo "Mounting '$part' on '$esp_mp'."
> -   mount -t vfat "$part" "$esp_mp"
> -
> -   echo "Installing systemd-boot.."
> -   mkdir -p "$esp_mp/$PMX_ESP_DIR"
> -   bootctl --path "$esp_mp" install
> -
> -   echo "Configuring systemd-boot.."
> -   echo "timeout 3" > "$esp_mp/$PMX_LOADER_CONF.tmp"
> -   echo "default proxmox-*" >> "$esp_mp/$PMX_LOADER_CONF.tmp"
> -   mv "$esp_mp/$PMX_LOADER_CONF.tmp" "$esp_mp/$PMX_LOADER_CONF"
> -   echo "Unmounting '$part'."
> -   umount "$part"
> +   echo "Do real ESP initialization in mount namespace.."
> +   unshare --mount --propagation private "$0" "do-esp-install" "$part" 
> "$UUID"
>  
> echo "Adding '$part' to list of synced ESPs.."
> if [ -e "$ESP_LIST" ]; then
> @@ -199,6 +207,16 @@ case "$1" in
> init "$@"
> exit 0
> ;;
> +   'do-esp-install')
> +   shift
> +   if [ -z "$1" ] || [ -z "$2" ]; then
> +   warn "E:  and  are mandatory."
> +   warn ""
> +   exit 1
> +   fi
> +   do_esp_install "$@"
> +   exit 0
> +   ;;
> 'refresh')
> shift
> refresh
> --
> 

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


Re: [pve-devel] Roadmap - improved SDN support

2019-07-11 Thread Thomas Lamprecht
Hi,

On 7/11/19 6:11 AM, Naumann, Thomas wrote:
> Hi,
> 
> at datacenter of university we are working on a saas-platform to
> automaticly deploy VMs, container, networks, services via web-gui for
> students and employies. So, we are searching for a technicly basis for
> this project. 
> Because "Proxmox" runs several Clusters in our datacenter and does a
> great jobs we wonder if it could be a basis for this project. We known
> there is also "Openstack" but I think it might be some kind of
> overkill.
> What do you think about that?
> 

proxmox.com has some testimonials from universities using Proxmox VE
in a lab course or similar, see (especially the first two, I'd guess):

https://www.proxmox.com/en/proxmox-ve/testimonials/category/edu-gov

Also, as Proxmox VE has a REST api which allows nowadays build a cluster,
create & manage VMs and CTs, you should not have big problems in integrating
and adapting it into your own  platform.

https://pve.proxmox.com/pve-docs/api-viewer/index.html

cheers,
Thomas

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


[pve-devel] applied: [RFC storage] pvesm import: allow to pass a tcp:// as file

2019-07-11 Thread Wolfgang Bumiller
applied with minor fixup

On Thu, Jun 27, 2019 at 04:16:09PM +0200, Thomas Lamprecht wrote:
> To allow getting closer to finally drop "pvecm mtunnel".
> Code parts taken from pipe_socket_to_command
> 
> Signed-off-by: Thomas Lamprecht 
> ---
>  PVE/CLI/pvesm.pm | 34 +-
>  PVE/Storage.pm   | 10 --
>  2 files changed, 37 insertions(+), 7 deletions(-)
> 
> diff --git a/PVE/CLI/pvesm.pm b/PVE/CLI/pvesm.pm
> index 0432450..330d748 100755
> --- a/PVE/CLI/pvesm.pm
> +++ b/PVE/CLI/pvesm.pm
> @@ -269,7 +269,9 @@ __PACKAGE__->register_method ({
>   enum => $KNOWN_EXPORT_FORMATS,
>   },
>   filename => {
> - description => "Source file name",
> + description => "Source file name. For '-' stdin is used, the " .
> +   "tcp:// format allows to use a TCP connection as 
> input. " .
> +   "Else, the file is treated as common file.",
>   type => 'string',
>   },
>   base => {
> @@ -304,6 +306,36 @@ __PACKAGE__->register_method ({
>   my $infh;
>   if ($filename eq '-') {
>   $infh = \*STDIN;
> + } elsif ($filename =~ m!^tcp://((.+)(/\d+)?)$!) {

Used ([^/]+) as (.+) always ate up the (/\d+) part breaking it when
there was actually a CIDR in there.

> + my ($cidr, $ip, $subnet) = ($1, $2, $3);
> + if ($subnet) { # got real CIDR notation, not just IP
> + $ip = PVE::Cluster::get_local_migration_ip($cidr);
> + }
> + my $family = PVE::Tools::get_host_address_family($ip);
> + my $port = PVE::Tools::next_migrate_port($family, $ip);
> +
> + my $sock_params = {
> + Listen => 1,
> + ReuseAddr => 1,
> + Proto => ::IPPROTO_TCP,
> + GetAddrInfoFlags => 0,
> + LocalAddr => $ip,
> + LocalPort => $port,
> + };
> + my $socket = IO::Socket::IP->new(%$sock_params)
> + or die "failed to open socket: $!\n";
> +
> + print "$ip\n$port\n"; # tell remote where to connect
> + *STDOUT->flush();
> +
> + my $prev_alarm = alarm 0;
> + local $SIG{ALRM} = sub { die "timed out waiting for client\n" };
> + alarm 30;
> + my $client = $socket->accept; # Wait for a client
> + alarm $prev_alarm;
> + close($socket);
> +
> + $infh = \*$client;
>   } else {
>   sysopen($infh, $filename, O_RDONLY)
>   or die "open($filename): $!\n";
> diff --git a/PVE/Storage.pm b/PVE/Storage.pm
> index 0ce942a..5925c69 100755
> --- a/PVE/Storage.pm
> +++ b/PVE/Storage.pm
> @@ -590,17 +590,15 @@ sub storage_migrate {
>  die "cannot migrate from storage type '$scfg->{type}' to 
> '$tcfg->{type}'\n" if !@formats;
>  my $format = $formats[0];
>  
> -my @insecurecmd;
> +my $import_fn = '-'; # let pvesm import read from stdin per default
>  if ($insecure) {
> - @insecurecmd = ('pvecm', 'mtunnel', '-run-command', 1);
> - if (my $network = $target_sshinfo->{network}) {
> - push @insecurecmd, '-migration_network', $network;
> - }
> + my $net = $target_sshinfo->{network} // $target_sshinfo->{ip};
> + $import_fn = "tcp://$net";
>  }
>  
>  $with_snapshots = $with_snapshots ? 1 : 0; # sanitize for passing as cli 
> parameter
>  my $send = ['pvesm', 'export', $volid, $format, '-', '-with-snapshots', 
> $with_snapshots];
> -my $recv = [@$ssh, @insecurecmd, '--', 'pvesm', 'import', $volid, 
> $format, '-', '-with-snapshots', $with_snapshots];
> +my $recv = [@$ssh, '--', 'pvesm', 'import', $volid, $format, $import_fn, 
> '-with-snapshots', $with_snapshots];
>  if (defined($snapshot)) {
>   push @$send, '-snapshot', $snapshot
>  }
> -- 
> 2.20.1

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