]> git.proxmox.com Git - pve-container.git/log
pve-container.git
18 months agoconfig: cpuunits: update default description
Fiona Ebner [Fri, 7 Oct 2022 12:41:43 +0000 (14:41 +0200)]
config: cpuunits: update default description

to reflect that it depends on the cgroup version.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
18 months agochange cpu shares: hard-code cgroupv1 default parameter
Fiona Ebner [Fri, 7 Oct 2022 12:41:42 +0000 (14:41 +0200)]
change cpu shares: hard-code cgroupv1 default parameter

so that the description of the default can be changed to reflect that
it depends on cgroup version.

Not strictly necessary, because the function currently will ignore the
value anyways. But certainly more future-proof then starting to pass
something invalid.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
18 months agoconfig: cpuunits: drop description for outdated special value
Fiona Ebner [Fri, 7 Oct 2022 12:41:41 +0000 (14:41 +0200)]
config: cpuunits: drop description for outdated special value

It won't work on hosts using cgroup v2. And there's one place where
$conf->{cpuunits} || 1024 is used, so zero would be overwritten there.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
19 months agobump version to 4.2-3
Thomas Lamprecht [Fri, 21 Oct 2022 13:25:04 +0000 (15:25 +0200)]
bump version to 4.2-3

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
19 months agolxc: fix perl-prototyep of mountpoint_hotplug
Thomas Lamprecht [Fri, 21 Oct 2022 13:20:34 +0000 (15:20 +0200)]
lxc: fix perl-prototyep of mountpoint_hotplug

The original commit b2de4c048ee50094593f4f8ffd18b6c346f7157a
copy-pasta'd the wrong prototype, missing two scalar $ arguments.

Until recently perl did not care as those things are only checked
_somewhat_ on "compile" (module load) times, and the one (single?)
call site in PVE::LXC::Config missed the `use PVE::LXC` statement,
and so the module-load did not see the wrong prototype and thus did
not cared, on runtime all is different anyway (what a mess).

The recent commit 11066f6bfdca5225a6f872d5664e6637ccb58dd6 added that
use statement and made package compilation implode, almost like
spooky actions in the time-space distance...

Fixes: b2de4c048ee50094593f4f8ffd18b6c346f7157a
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
19 months agotrack ubuntu 22.10 kinetic support
Thomas Lamprecht [Fri, 21 Oct 2022 12:58:13 +0000 (14:58 +0200)]
track ubuntu 22.10 kinetic support

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
19 months agoconfig: style fixup for long method call
Thomas Lamprecht [Fri, 21 Oct 2022 12:55:36 +0000 (14:55 +0200)]
config: style fixup for long method call

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
19 months agoconfig: small code/whitespace cleanups
Thomas Lamprecht [Wed, 19 Oct 2022 05:37:40 +0000 (07:37 +0200)]
config: small code/whitespace cleanups

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
19 months agoconfig: add missing use statement for PVE::LXC
Thomas Lamprecht [Wed, 19 Oct 2022 05:36:30 +0000 (07:36 +0200)]
config: add missing use statement for PVE::LXC

worked anyway as in most cases we have that module already loaded by
something else, but its cleaner to actually encode the module
dependencies..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
21 months agoapply pending mountpoint: also hotplug non-volume mount points
Fiona Ebner [Mon, 8 Aug 2022 12:36:42 +0000 (14:36 +0200)]
apply pending mountpoint: also hotplug non-volume mount points

Previously, bind and device mount points were applied to the
configuration, but not actually hot-plugged/mounted, causing a
mismatch for running containers.

Reported in the community forum:
https://forum.proxmox.com/threads/113364/

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
22 months agofix #4164: use DHCP=yes instead of DHCP=both in systemd-networkd config
Oguz Bektas [Tue, 19 Jul 2022 11:24:56 +0000 (13:24 +0200)]
fix #4164: use DHCP=yes instead of DHCP=both in systemd-networkd config

"both" option is deprecated, this gets rid of the warning in the journal

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
[Note: 'yes' was introduced with v219 in 2015, deprecated with v242]
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
22 months agobump version to 4.2-2
Wolfgang Bumiller [Tue, 5 Jul 2022 07:26:12 +0000 (09:26 +0200)]
bump version to 4.2-2

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
22 months agofix: cloning a locked container creates an empty config
Daniel Tschlatscher [Fri, 17 Jun 2022 10:40:01 +0000 (12:40 +0200)]
fix: cloning a locked container creates an empty config

When an attempt was made to clone a locked container the API would
correctly present the error 'CT is locked (disk)' but create the
config files for the new container anyway.

There was also a potential problem when the config of the new ct would
already be present and the creation of the container failed. In this
case the config of the new CT would be incorrectly removed.
The config locks for the new and the old configs should now be
correctly released depending on from which call a problem originates.

Futhermore, I moved some related function calls into the eval block to
avoid similar problems with leftover config files in the future.

Signed-off-by: Daniel Tschlatscher <d.tschlatscher@proxmox.com>
23 months agomove_volume: call deactivate volume for the old volid in any case
Dominik Csapak [Wed, 4 May 2022 08:15:02 +0000 (10:15 +0200)]
move_volume: call deactivate volume for the old volid in any case

not only when we want to remove it. Otherwise, if the old volume is
mapped (e.g. ceph krbd), we don't unmap it when we're finished.

We have to save if we deactivated successfully before attempting to
remove it. If it was not removed (either because we could not
deactivate, or the remove failed), we add it back as unused.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agofix #4088: ignore systemd minor version for detection
Fabian Grünbichler [Mon, 30 May 2022 09:10:13 +0000 (11:10 +0200)]
fix #4088: ignore systemd minor version for detection

else for containers with distros frequently updating to new upstream
versions the systemd version might be mis-detected.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Reviewed-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Tested-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2 years agobump version to 4.2-1
Thomas Lamprecht [Wed, 4 May 2022 06:36:43 +0000 (08:36 +0200)]
bump version to 4.2-1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoprestart & poststop hook: init REST environment, e.g. for storage activation
Dominik Csapak [Tue, 3 May 2022 09:42:26 +0000 (11:42 +0200)]
prestart & poststop hook: init REST environment, e.g. for storage activation

Initialize the basic CLI REST environment which is expected on some
PVE methods we may rely on.

This became a specific problem recently when adding better support
for external and/or multiple ceph RBD clusters on a PVE system in
commit cfe46e2d4a97a83f1bbe6ad656e6416399309ba2 from pve-storage,
which added a PVE::Rados call to get the underlying cluster FSID
required to build the /dev-mapped RBD path, and PVE::Rados
requires a initialized RPC/REST environment.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoRevert "lxc-pve-{prestart, poststop}-hook: initialize RESTEnvironment"
Thomas Lamprecht [Wed, 4 May 2022 06:27:21 +0000 (08:27 +0200)]
Revert "lxc-pve-{prestart, poststop}-hook: initialize RESTEnvironment"

bogus revert to add more meta info to the comment (sorry about that)

This reverts commit a75f83225dd6f4641451a24b18326069ef01f129.

2 years agolxc-pve-{prestart, poststop}-hook: initialize RESTEnvironment
Dominik Csapak [Tue, 3 May 2022 09:42:26 +0000 (11:42 +0200)]
lxc-pve-{prestart, poststop}-hook: initialize RESTEnvironment

else some operations will fail, e.g. using an guest disk on an
external ceph-cluster

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 years agobump version to 4.1-5
Thomas Lamprecht [Wed, 27 Apr 2022 17:01:37 +0000 (19:01 +0200)]
bump version to 4.1-5

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoSetup: Allow hostname configuration on NixOS
Harikrishnan R via pve-devel [Fri, 18 Mar 2022 10:21:13 +0000 (15:51 +0530)]
Setup: Allow hostname configuration on NixOS

While NixOS generally overrides any static contents in /etc/hostname
with the hostname defined in `networking.hostname`, it can use the
contents of `/etc/hostname` provided by PVE if this option is not
set.

Signed-off-by: Harikrishnan R <rharikrishnan95@gmail.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosupport Fedora 36
Thomas Lamprecht [Wed, 27 Apr 2022 12:22:46 +0000 (14:22 +0200)]
support Fedora 36

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoparse pct config: remove "\s*" from multi-line comment regex
Stefan Sterz [Thu, 24 Feb 2022 14:21:50 +0000 (15:21 +0100)]
parse pct config: remove "\s*" from multi-line comment regex

To be consistent with PBS's implementation of multi-line comments
remove "\s*" here too. Since the regex isn't lazy .* matches
everything \s* would anyway. (Note that new lines occurs after "$").

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
2 years agoapi: reassign volume: allow to reassign to self
Thomas Lamprecht [Fri, 15 Apr 2022 12:02:00 +0000 (14:02 +0200)]
api: reassign volume: allow to reassign to self

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoapi: vol rename: refactorings
Thomas Lamprecht [Thu, 7 Apr 2022 17:03:45 +0000 (19:03 +0200)]
api: vol rename: refactorings

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoapi: create/modify: add content type checks
Fabian Ebner [Wed, 30 Mar 2022 10:24:36 +0000 (12:24 +0200)]
api: create/modify: add content type checks

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agofix #3960: properly set owner in CT setup
Fabian Grünbichler [Mon, 28 Mar 2022 08:06:28 +0000 (10:06 +0200)]
fix #3960: properly set owner in CT setup

there were two helpers that were not handling this correctly:

ct_make_path

since this never gets called with $opts, and there also is no 'owner'
and 'group' in $self, the previous logic could never work, sometimes
leaving nobody:nogroup files around for unprivileged containers.

since only the centos and suse plugins use this helper, the issue was
fairly limited.

ct_symlink

could create symlinks owned by nobody:nogroup. since symlinks are
created 777 by default, this just meant they were not modifiable inside
the container, but reading/dereferencing was no problem so it went
unnoticed so far.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agofix #3917: Ignore fstrim failure in pct fstrim
Markus Frank [Fri, 11 Mar 2022 11:59:57 +0000 (12:59 +0100)]
fix #3917: Ignore fstrim failure in pct fstrim

With "noerr => 1" the function does not abort, when one of the
mountpoints is not fstrim compatible like zfs (has its own trim).
I do not think it is necessary to warn or error, because fstrim
tells when something is not trimmable and aborts.

Signed-off-by: Markus Frank <m.frank@proxmox.com>
2 years agoapi: snapshot delete: prefix lock-fail error
Fabian Grünbichler [Tue, 15 Mar 2022 12:29:24 +0000 (13:29 +0100)]
api: snapshot delete: prefix lock-fail error

otherwise users might get confused if they just get a message about a
migrate lock not being available..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agovzdump: failed snapshot removal is non-fatal
Fabian Grünbichler [Tue, 15 Mar 2022 12:10:13 +0000 (13:10 +0100)]
vzdump: failed snapshot removal is non-fatal

make it more explicit (the whole call to the plugin's cleanup sub is
wrapped in an eval + warn anyway), so that future extensions can be
added after this point if they don't rely on snapshot removal being
successful.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agofix #3424: api: snapshot delete: wait for active replication
Fabian Ebner [Wed, 23 Feb 2022 12:03:58 +0000 (13:03 +0100)]
fix #3424: api: snapshot delete: wait for active replication

A to-be-deleted snapshot might be actively used by replication,
resulting in a not (or only partially) removed snapshot and locked
(snapshot-delete) container. Simply wait a few seconds for any ongoing
replication.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agopartially fix #3424: vzdump: cleanup: wait for active replication
Fabian Ebner [Wed, 23 Feb 2022 12:03:57 +0000 (13:03 +0100)]
partially fix #3424: vzdump: cleanup: wait for active replication

As replication and backup can happen at the same time, the vzdump
snapshot might be actively used by replication when backup tries
to cleanup, resulting in a not (or only partially) removed snapshot
and locked (snapshot-delete) container.

Wait up to 10 minutes for any ongoing replication. If replication
doesn't finish in time, the fact that there is no attempt to remove
the snapshot means that there's no risk for the container to end up in
a locked state. And the beginning of the next backup will force remove
the left-over snapshot, which will very likely succeed even at the
storage layer, because the replication really should be done by then
(subsequent replications shouldn't matter as they don't need to
re-transfer the vzdump snapshot).

Suggested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Co-developed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agoconfig: print volume: support printing unused volume
Fabian Ebner [Thu, 3 Mar 2022 12:31:20 +0000 (13:31 +0100)]
config: print volume: support printing unused volume

In particular, fixes migration with an unused disk, where calling
update_volume_ids() failed previously.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agomigrate: also set targetsid for unreferenced disks
Fabian Ebner [Thu, 3 Mar 2022 12:31:19 +0000 (13:31 +0100)]
migrate: also set targetsid for unreferenced disks

It's expected to be set further below. Reported in the community
forum: https://forum.proxmox.com/threads/105685

Fixes: e90ddc4 ("fix #1532: add target-storage support to migration")
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoSetup: add NixOS support
Harikrishnan R via pve-devel [Tue, 15 Feb 2022 17:28:46 +0000 (22:58 +0530)]
Setup: add NixOS support

Distro detection is done heuristically through the presence of a
`/nix/store` folder.

NixOS typically uses a script-based network configuration system that
isn't easy to configure from the outside, while the configuration
snippets would be simple to generate, bringing them in effect isn't.

LXC templates generated for proxmox are instead expected to use
systemd-networkd.

Signed-off-by: Harikrishnan R <rharikrishnan95@gmail.com>
 [ Thomas: update/reword commit ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agobump version to 4.1-4
Thomas Lamprecht [Fri, 11 Feb 2022 15:19:00 +0000 (16:19 +0100)]
bump version to 4.1-4

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agomigrate: allow renaming of volumes
Fabian Grünbichler [Fri, 11 Feb 2022 10:29:45 +0000 (11:29 +0100)]
migrate: allow renaming of volumes

the config is now updated anyway because of target-storage support, so
volume renaming is both 'free' and improves the chances of migration
with and without changing storages actually works successfully.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agomigrate: improve target storage checks
Fabian Grünbichler [Fri, 11 Feb 2022 10:29:44 +0000 (11:29 +0100)]
migrate: improve target storage checks

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agod/changelog: fix typo
Fabian Grünbichler [Fri, 11 Feb 2022 09:02:38 +0000 (10:02 +0100)]
d/changelog: fix typo

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoapi: small code/style cleanup
Thomas Lamprecht [Fri, 11 Feb 2022 07:37:22 +0000 (08:37 +0100)]
api: small code/style cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agofix #3635: fix overly-strict pool permission check on create
Dominik Csapak [Fri, 22 Oct 2021 06:44:13 +0000 (08:44 +0200)]
fix #3635: fix overly-strict pool permission check on create

we do not need Permissions.Modify on the pool as the actual required
check for 'VM.Allocate' for that pool is already handled below, so
remove it like we did in qemu-server 4fc5242 ("fix pool permission
checks on create")

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Mira Limbeck <m.limbeck@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agod/control: bump versioned dependency of libpve-common-perl
Thomas Lamprecht [Wed, 9 Feb 2022 17:42:21 +0000 (18:42 +0100)]
d/control: bump versioned dependency of libpve-common-perl

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoconfig: add strict parser
Fabian Grünbichler [Wed, 9 Feb 2022 13:07:32 +0000 (14:07 +0100)]
config: add strict parser

as safeguard when migrating across clusters, which might have different
versions installed.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agofix #1532: add target-storage support to migration
Fabian Grünbichler [Wed, 9 Feb 2022 13:07:31 +0000 (14:07 +0100)]
fix #1532: add target-storage support to migration

re-using helpers that already exist for qemu-server. this is a
pre-requisite for extending remote migration support to containers.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agod/control: bump (build-)dependency of libpve-guest-common-perl
Thomas Lamprecht [Wed, 9 Feb 2022 17:37:26 +0000 (18:37 +0100)]
d/control: bump (build-)dependency of libpve-guest-common-perl

to get new helpers for snapshot and also migrate stuff (latter is
used in future patches).

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosnapshot: implement __snapshot_activate_storages
Fabian Ebner [Thu, 13 Jan 2022 11:04:05 +0000 (12:04 +0100)]
snapshot: implement __snapshot_activate_storages

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agoconfig: parse_volume: don't die when noerr is set
Fabian Ebner [Thu, 13 Jan 2022 11:04:04 +0000 (12:04 +0100)]
config: parse_volume: don't die when noerr is set

AFAICT, the only existing callers using noerr=1 are in
__snapshot_delete_remove_drive, and in AbstractConfig's
foreach_volume_full. The former should not be affected, as unknown
keys should never make their way in there. For the latter, it makes
iterating with
    $opts = { extra_keys => ['vmstate'] }
possible while being agnostic of guest type. Previously, it would die
for LXC configs, but now the unknown key is simply skipped there.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agoconfig: snapshot_delete_remove_drive: check for parsed value
Fabian Ebner [Thu, 13 Jan 2022 11:04:03 +0000 (12:04 +0100)]
config: snapshot_delete_remove_drive: check for parsed value

parse_volume is called with noerr=1, so this might be undef instead
of the hash we expect.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agobump version to 4.1-3
Thomas Lamprecht [Tue, 7 Dec 2021 18:11:03 +0000 (19:11 +0100)]
bump version to 4.1-3

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: support upcomming Ubuntu 22.04 Jammy Jellyfish
Thomas Lamprecht [Tue, 7 Dec 2021 18:10:39 +0000 (19:10 +0100)]
setup: support upcomming Ubuntu 22.04 Jammy Jellyfish

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoconfig: allow 'lazytime' mount option for containers
Oguz Bektas [Wed, 1 Dec 2021 15:17:56 +0000 (16:17 +0100)]
config: allow 'lazytime' mount option for containers

worked fine here in ubuntu container.

root@CT1022:/# mount | grep lazy
/var/lib/pve/local-btrfs/images/1022/vm-1022-disk-0/disk.raw on /     type ext4 (rw,relatime,lazytime)
/var/lib/pve/local-btrfs/images/1022/vm-1022-disk-0/disk.raw on /snap type ext4 (rw,relatime,lazytime)

requested in community forum [0]

[0]: https://forum.proxmox.com/threads/100454/

Tested-by: Dylan Whyte <d.whyte@proxmox.com>
Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2 years agobump version to 4.1-2
Thomas Lamprecht [Fri, 12 Nov 2021 18:21:25 +0000 (19:21 +0100)]
bump version to 4.1-2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: add alpine 3.13 test for network config
Thomas Lamprecht [Fri, 12 Nov 2021 18:16:53 +0000 (19:16 +0100)]
tests: add alpine 3.13 test for network config

just to be sure and to check both new and old..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: add alpine 3.8 test for network config
Thomas Lamprecht [Fri, 12 Nov 2021 18:13:25 +0000 (19:13 +0100)]
tests: add alpine 3.8 test for network config

this would fail without the previous patch..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agofix #3721: better version check to avoid false positive on can-CIDR check
Thomas Lamprecht [Fri, 12 Nov 2021 18:14:27 +0000 (19:14 +0100)]
fix #3721: better version check to avoid false positive on can-CIDR check

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotest: add debian 11 to test network/interfaces CIDR notation
Thomas Lamprecht [Fri, 12 Nov 2021 18:05:51 +0000 (19:05 +0100)]
test: add debian 11 to test network/interfaces CIDR notation

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoreassign mp: fix permission checks
Fabian Grünbichler [Wed, 10 Nov 2021 10:55:38 +0000 (11:55 +0100)]
reassign mp: fix permission checks

with `storage` being optional (and not allowed for reassign operations),
the ACL path in the schema can end up as `/storage/-`, which is wrong.
replace it with an explicit check:

- target `storage` for move mp
- storage from source disk for reassign mp (we only rename here, but
  it's still a new volume on that storage after all)

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoreassign mp: various improvements
Fabian Grünbichler [Wed, 10 Nov 2021 10:54:21 +0000 (11:54 +0100)]
reassign mp: various improvements

mainly style, some additional checks

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoapi: move-volume: cleanup very long lines
Aaron Lauterer [Tue, 9 Nov 2021 14:55:40 +0000 (15:55 +0100)]
api: move-volume: cleanup very long lines

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agoapi: move-volume: add move to another container
Aaron Lauterer [Tue, 9 Nov 2021 14:55:39 +0000 (15:55 +0100)]
api: move-volume: add move to another container

The goal of this is to expand the move-volume API endpoint to make it
possible to move a container volume / mountpoint to another container.

For unused volumes, the API parameters have been changed to allow them
as well. This means, additional checks had to be introduced to avoid
migration of an unusedX volume to another storage. Some follow up work
is needed for that to work properly.

Moving the rootfs from or to another container is prohibited.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agoConfig: add valid_volume_keys_with_unused
Aaron Lauterer [Tue, 9 Nov 2021 14:55:38 +0000 (15:55 +0100)]
Config: add valid_volume_keys_with_unused

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agocli: pct: change move_volume to move-volume
Aaron Lauterer [Tue, 9 Nov 2021 14:55:37 +0000 (15:55 +0100)]
cli: pct: change move_volume to move-volume

also add alias to keep move_volume working

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agoconfig: rollback is possible: add blockers parameter
Fabian Ebner [Thu, 12 Aug 2021 11:01:03 +0000 (13:01 +0200)]
config: rollback is possible: add blockers parameter

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agobump version to 4.1-1
Thomas Lamprecht [Thu, 14 Oct 2021 11:13:13 +0000 (13:13 +0200)]
bump version to 4.1-1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agod/control: bump versioned dependency on libpve-common-perl
Thomas Lamprecht [Thu, 14 Oct 2021 11:07:35 +0000 (13:07 +0200)]
d/control: bump versioned dependency on libpve-common-perl

to ensure we've the new RPCEnv warn helper available added in
pve-common's commit ff79ee6

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: support Fedora 35
Thomas Lamprecht [Thu, 14 Oct 2021 10:29:19 +0000 (12:29 +0200)]
setup: support Fedora 35

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agorestore: sanitize config: use new warn() function
Fabian Ebner [Thu, 8 Jul 2021 09:14:56 +0000 (11:14 +0200)]
restore: sanitize config: use new warn() function

to make it more visible that the task finished with warnings.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agoclone: code bloat reduction
Thomas Lamprecht [Thu, 14 Oct 2021 09:59:34 +0000 (11:59 +0200)]
clone: code bloat reduction

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoapi: clone_vm: don't include snapshot properties
Oguz Bektas [Wed, 13 Oct 2021 12:31:53 +0000 (14:31 +0200)]
api: clone_vm: don't include snapshot properties

apparently this caused a weird[0] bug... when a container with a snapshot was
cloned, it would take 'parent: foo' from the original container. if you
add a new snapshot 'bar', and then another one 'foo', this causes the
snapshots to become parents of each other (thus not parsed correctly in
the tree view of GUI nor with 'pct listsnapshot CTID')

we also drop these properties for VMs, so it makes sense to do the same
here as well.

[0]: https://forum.proxmox.com/threads/snapshots-of-one-lxc-disappeared.97711/

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2 years agofix #3673: setup: allow ubuntu impish (release 21.10) containers
Oguz Bektas [Tue, 12 Oct 2021 10:32:17 +0000 (12:32 +0200)]
fix #3673: setup: allow ubuntu impish (release 21.10) containers

didn't notice any issue with basic privileged/unprivileged
configurations, so we can just add it here.

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: also set contents of /etc/timezone
Fabian Ebner [Thu, 7 Oct 2021 10:48:03 +0000 (12:48 +0200)]
setup: also set contents of /etc/timezone

Some distributions like CentOS 8 and Gentoo don't have the file, so
only update if it already existed.

A slight change in behavior in set_timezone is that the warning will
now trigger if /etc/localtime is a link to $tz_path, but $tz_path does
not exist. Previously, it would return early if the link matched.

Programs that rely on /etc/timezone within the container will now see
the configured timezone too. While that is more correct, it's still a
change that might be unexpected.

Reported in the community forum:
https://forum.proxmox.com/threads/pct-create-command-with-timezone-host-option-fails-to-create-a-container.97538/

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agosetup: untaint path to host timezone
Fabian Ebner [Thu, 7 Oct 2021 10:48:02 +0000 (12:48 +0200)]
setup: untaint path to host timezone

To avoid an error with 'pct create ... --timezone host'.

Reported in the community forum:
https://forum.proxmox.com/threads/pct-create-command-with-timezone-host-option-fails-to-create-a-container.97538/

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agobump version to 4.0-11
Thomas Lamprecht [Thu, 7 Oct 2021 06:17:47 +0000 (08:17 +0200)]
bump version to 4.0-11

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: drop remaining unmanaged return
Oguz Bektas [Tue, 5 Oct 2021 08:09:52 +0000 (10:09 +0200)]
setup: drop remaining unmanaged return

not needed anymore since we have 'unmanaged' plugin, so $self->{plugin}
would be 'unmanaged' and get handled by that instead of an early return.

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2 years agosetup: fix creating unmanaged containers
Oguz Bektas [Tue, 5 Oct 2021 08:09:51 +0000 (10:09 +0200)]
setup: fix creating unmanaged containers

ssh_host_key_generate did not explicitly return in unmanaged plugin,
causing the post_create_hook to fail because of an invalid hash
reference (cannot use "1" as a HASH ref, "1" was likely being returned
implicitly as the scalar value of 'my ($self) = @_;')

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2 years agosetup: alpine: also use CIDR format for newer versions
Thomas Lamprecht [Mon, 4 Oct 2021 13:13:25 +0000 (15:13 +0200)]
setup: alpine: also use CIDR format for newer versions

original ifupdown supports this since years and ifupdown-ng, the
ifupdown replacement from the Alpine Linux corner, does too
https://github.com/ifupdown-ng/ifupdown-ng/blob/main/doc/ADMIN-GUIDE.md

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: alpine: code text-width/indendation cleanup
Thomas Lamprecht [Mon, 4 Oct 2021 12:27:42 +0000 (14:27 +0200)]
setup: alpine: code text-width/indendation cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: make some returns more explicit
Thomas Lamprecht [Mon, 4 Oct 2021 11:47:41 +0000 (13:47 +0200)]
setup: make some returns more explicit

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: add no-op plugin for unmanaged CTs
Thomas Lamprecht [Wed, 29 Sep 2021 19:05:43 +0000 (21:05 +0200)]
setup: add no-op plugin for unmanaged CTs

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: add abstract plugin module
Thomas Lamprecht [Wed, 29 Sep 2021 18:52:55 +0000 (20:52 +0200)]
setup: add abstract plugin module

to define the base API

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: drop copying binfmt qemu-static executable
Thomas Lamprecht [Wed, 29 Sep 2021 17:45:23 +0000 (19:45 +0200)]
setup: drop copying binfmt qemu-static executable

The binfmt-support and qemu-user-static package setup the
`/proc/sys/fs/binfmt_misc/' entry with the "fix binary" `F` flag:

> The usual behaviour of binfmt_misc is to spawn the binary lazily
> when the misc format file is invoked. However, this doesn't work
> very well in the face of mount namespaces and changeroots, so the F
> mode opens the binary as soon as the emulation is installed and
> uses the opened image to spawn the emulator, meaning it is always
> available once installed, regardless of how the environment
> changes.
--
https://www.kernel.org/doc/html/latest/admin-guide/binfmt-misc.html

which seems to be enough to make it work. binfmt-support's changelog
has some indication that it can use the `F` flag since the version
shipped in Debian Buster (PVE 6), and this support was added before
that, which would explain the earlier need for it..

Drop it now and slowly roll it out, if somebody really is using this
obscure PVE feature and yells we can always revert/workaround it.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: add new ssh_host_key_types_to_generate helper to plugin API
Thomas Lamprecht [Wed, 29 Sep 2021 16:17:10 +0000 (18:17 +0200)]
setup: add new ssh_host_key_types_to_generate helper to plugin API

To guard the ct_file_set_contents call so that it's really only done
if the plugin wants ssh keys.

we'll use that in a future patch to have a more abstract interface
for plugins.

Additional benefit, we can drop (or at least skip) old key types (DSA
anyone) per container os-release type/version with this.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodestroy: remove pending volumes as well
Fabian Grünbichler [Wed, 29 Sep 2021 09:45:06 +0000 (11:45 +0200)]
destroy: remove pending volumes as well

if a volume is only referenced in the pending section of a config it was
previously not removed when removing the CT, unless the non-default
'remove unreferenced disks' option was enabled.

keeping track of volume IDs which we attempt to remove gets rid of false
warnings in case a volume is referenced both in the config and the
pending section, or multiple times in the config for other reasons.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agopct status: mark suspend as experimental
Aaron Lauterer [Thu, 30 Sep 2021 09:49:11 +0000 (11:49 +0200)]
pct status: mark suspend as experimental

since container suspend is actually very experimental and only works in
very specific situations.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agobump version to 4.0-10
Thomas Lamprecht [Wed, 29 Sep 2021 20:14:27 +0000 (22:14 +0200)]
bump version to 4.0-10

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: centos: add non-fallback dns/searchdomain test
Thomas Lamprecht [Wed, 29 Sep 2021 20:07:10 +0000 (22:07 +0200)]
tests: centos: add non-fallback dns/searchdomain test

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: dns conf: avoid testmode fallback if config defines properties
Thomas Lamprecht [Wed, 29 Sep 2021 20:05:54 +0000 (22:05 +0200)]
setup: dns conf: avoid testmode fallback if config defines properties

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agopartially fix #3471: setup: centos: net: set DNS per iface config
Thomas Lamprecht [Wed, 29 Sep 2021 19:57:28 +0000 (21:57 +0200)]
partially fix #3471: setup: centos: net: set DNS per iface config

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: setup: also track locale.conf
Thomas Lamprecht [Wed, 29 Sep 2021 19:54:56 +0000 (21:54 +0200)]
tests: setup: also track locale.conf

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agopartially fix #3471: setup: centos: net: fix IPv6 if/else chain
Thomas Lamprecht [Wed, 29 Sep 2021 19:28:47 +0000 (21:28 +0200)]
partially fix #3471: setup: centos: net: fix IPv6 if/else chain

we must not write the non-IP auto/dhcp formats as IP address, that
trips up network manager

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: setup: add CentOS 8 test
Thomas Lamprecht [Wed, 29 Sep 2021 19:48:18 +0000 (21:48 +0200)]
tests: setup: add CentOS 8 test

produces a bad (but not test-fatal) config with IPV6Addr set to
"auto", the next commit will fix that.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agopartially fix #3471: setup: centos: net: add missing UUID to ifcfg
Thomas Lamprecht [Wed, 29 Sep 2021 19:28:13 +0000 (21:28 +0200)]
partially fix #3471: setup: centos: net: add missing UUID to ifcfg

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: centos: coding style
Thomas Lamprecht [Wed, 29 Sep 2021 19:25:09 +0000 (21:25 +0200)]
setup: centos: coding style

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agobuildsys: split and order sources definition
Thomas Lamprecht [Wed, 29 Sep 2021 17:53:00 +0000 (19:53 +0200)]
buildsys: split and order sources definition

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: move getting cross-emulator to separate method
Thomas Lamprecht [Wed, 29 Sep 2021 19:08:51 +0000 (21:08 +0200)]
setup: move getting cross-emulator to separate method

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: move setting fastboot flag to base plugin
Thomas Lamprecht [Wed, 29 Sep 2021 17:39:21 +0000 (19:39 +0200)]
setup: move setting fastboot flag to base plugin

better fit there as this may actually not always be wanted.
As no sub-plugin overrides pre_start_hook there should be no actual
semantic change yet.

This is a preperation for a clean abstract Plugin interface and
Unmanaged plugin.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: code reduction
Thomas Lamprecht [Wed, 29 Sep 2021 16:16:55 +0000 (18:16 +0200)]
setup: code reduction

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: factor out actual ssh key generation
Thomas Lamprecht [Wed, 29 Sep 2021 16:13:12 +0000 (18:13 +0200)]
setup: factor out actual ssh key generation

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosuse: pre-set locale/timezone to avoid systemd-firstboot hang on prompt
Thomas Lamprecht [Wed, 29 Sep 2021 15:30:50 +0000 (17:30 +0200)]
suse: pre-set locale/timezone to avoid systemd-firstboot hang on prompt

same as commit 1edabe807fe478e34548031c0b6e7e63dcc7f69e

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: group plugin related calls together
Thomas Lamprecht [Tue, 28 Sep 2021 13:43:40 +0000 (15:43 +0200)]
setup: group plugin related calls together

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>