]> git.proxmox.com Git - pve-storage.git/log
pve-storage.git
35 hours agobump version to 8.2.9 master
Thomas Lamprecht [Tue, 19 Nov 2024 20:05:48 +0000 (21:05 +0100)]
bump version to 8.2.9

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
35 hours agountrusted image checks: also handle multi-part vmdk files
Fabian Grünbichler [Tue, 19 Nov 2024 19:46:27 +0000 (20:46 +0100)]
untrusted image checks: also handle multi-part vmdk files

neither vmdk images with multiple children, nor ones with multiple extents
(that might in turn be backed by multiple files) are allowed when an image is
untrusted.

Reported-by: Friedrich Weber <f.weber@proxmox.com>
Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 days agobump version to 8.2.8
Thomas Lamprecht [Mon, 18 Nov 2024 20:11:46 +0000 (21:11 +0100)]
bump version to 8.2.8

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agoguest import: extract staging copy with same owner than running process
Thomas Lamprecht [Mon, 18 Nov 2024 19:50:24 +0000 (20:50 +0100)]
guest import: extract staging copy with same owner than running process

Some OVAs have a UID/GID set for their inner file, for example the one
from GNS3:

> tar tvf 'GNS3 VM.ova' --numeric-owner
> -rw-r----- 6/1            9047 2024-11-07 10:22 GNS3 VM.ovf
> -rw-rw---- 6/1       904088064 2024-11-07 10:22 GNS3 VM-disk001.vmdk
> -rw-rw---- 6/1         2879488 2024-11-07 10:22 GNS3 VM-disk002.vmdk

As we run as root, tar is defaulting to the `--same-owner` option,
where it tries extracting files with the same ownership as exists in
the archive.

This might not be ideal and results in an error for GNS3:

> tar: GNS3 VM-disk001.vmdk: Cannot change ownership to uid 6, gid 1: Operation not permitted

So, explicitly set the `--no-same-owner` option to make tar always use
the UID/GID of the running process, which is what we want here.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agoovf import: guest name: fallback to the id from the VirtualSystem node
Thomas Lamprecht [Mon, 18 Nov 2024 19:48:06 +0000 (20:48 +0100)]
ovf import: guest name: fallback to the id from the VirtualSystem node

Seems that some OVF do not have a ovf:Name element, but do have a
ovf:id attribute inside the ovf:VirtualSystem node that spells out
what the archive contains. So fallback to this attributes value if we
could not find any explicit name, can only win here, and the user
still can override this anyway.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agoovf import: guest name: normalize whitespace to minus
Thomas Lamprecht [Mon, 18 Nov 2024 19:46:34 +0000 (20:46 +0100)]
ovf import: guest name: normalize whitespace to minus

This is nicer from a readability POV, but replace a arbitrary amount
of whitespace by a single minus character to avoid making it look odd.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agoovf import: disks: allow whitespaces in file path
Thomas Lamprecht [Mon, 18 Nov 2024 19:01:25 +0000 (20:01 +0100)]
ovf import: disks: allow whitespaces in file path

Add a SAFE_CHAR_WITH_WHITESPACE_CLASS_RE sister variant of the shared
SAFE_CHAR_CLASS_RE shared regex to the base storage module, this use
case exist is a generic one after all, and use swap the untaint method
that parses the file a disk references to it.

Note that this is only the disk file name from inside the archive and
thus during the extraction to a staging/working directory, from there
it will be imported as volume allocated by the common storage system,
and thus follow our ordinary volume name scheme.

Improves disk detection when importing, e.g., the from upstream
provided GNS3 OVA.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agoovf import: disks: mave ovf namespace in resource path optional
Thomas Lamprecht [Mon, 18 Nov 2024 18:56:49 +0000 (19:56 +0100)]
ovf import: disks: mave ovf namespace in resource path optional

Some OVFs like for example the one from the GNS3 OVA doesn't has that
namespace/prefix, and does't really hurts us to make it optional as
long as the rest is correct.

Brings us nearer to have working disks with GNS3.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agoovf import: small code style cleanups
Thomas Lamprecht [Mon, 18 Nov 2024 18:56:24 +0000 (19:56 +0100)]
ovf import: small code style cleanups

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agoovf import: regisiter "vmw" namespace
Thomas Lamprecht [Mon, 18 Nov 2024 18:25:00 +0000 (19:25 +0100)]
ovf import: regisiter "vmw" namespace

This is used when finding the firmware type, so register it here or
libxml/xpath will complain about an "Undefined namespace prefix"

The schema URL was taken from some OVFs found in the wild.

Reported-by: Filip Schauer <f.schauer@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agoplugin: file_size_info: warn on parent images with unusual path
Dominik Csapak [Mon, 18 Nov 2024 15:29:14 +0000 (16:29 +0100)]
plugin: file_size_info: warn on parent images with unusual path

If the base image (parent) of an image contains e.g. whitespace in it's
path, the current untainting would not match and it would seem there was
no parent.

Since untrusted files are not allowed to have backing parts, just warn,
when encountering this case to keep backwards compatibility.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 days agoadd 'import' content type to 'check_volume_access'
Dominik Csapak [Mon, 18 Nov 2024 15:29:13 +0000 (16:29 +0100)]
add 'import' content type to 'check_volume_access'

in the same branch as 'vztmpl' and 'iso'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 days agoplugin: enable import for nfs/btrfs/cifs/cephfs/glusterfs
Dominik Csapak [Mon, 18 Nov 2024 15:29:12 +0000 (16:29 +0100)]
plugin: enable import for nfs/btrfs/cifs/cephfs/glusterfs

and reuse the DirPlugin implementation

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 days agoapi: allow ova upload/download
Dominik Csapak [Mon, 18 Nov 2024 15:29:11 +0000 (16:29 +0100)]
api: allow ova upload/download

introducing a separate regex that only contains ova, since
upload/downloading ovfs does not make sense (since the disks are then
missing).

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 days agoovf: implement parsing nics
Dominik Csapak [Mon, 18 Nov 2024 15:29:10 +0000 (16:29 +0100)]
ovf: implement parsing nics

by iterating over the relevant parts and trying to parse out the
'ResourceSubType'. The content of that is not standardized, but I only
ever found examples that are compatible with vmware, meaning it's
either 'e1000', 'e1000e' or 'vmxnet3' (in various capitalizations; thus
the `lc()`)

As a fallback i used e1000, since that is our default too, and should
work for most guest operating systems.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 days agoovf: implement rudimentary boot order
Dominik Csapak [Mon, 18 Nov 2024 15:29:09 +0000 (16:29 +0100)]
ovf: implement rudimentary boot order

simply add all parsed disks to the boot order in the order we encounter
them (similar to the esxi plugin).

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 days agoovf: implement parsing out firmware type
Dominik Csapak [Mon, 18 Nov 2024 15:29:08 +0000 (16:29 +0100)]
ovf: implement parsing out firmware type

it seems there is no part of the ovf standard that handles which type of
bios there is (at least i could not find it). Every ovf/ova i tested
either has no info about it, or has it in a vmware specific property
which we parse here.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 days agoovf: implement parsing the ostype
Dominik Csapak [Mon, 18 Nov 2024 15:29:07 +0000 (16:29 +0100)]
ovf: implement parsing the ostype

use the standards info about the ostypes to map to our own
(see comment for link to the relevant part of the dmtf schema)

every type that is not listed we map to 'other', so no need to have it
in a list.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 days agoovf: improve and simplify path checking code
Dominik Csapak [Mon, 18 Nov 2024 15:29:06 +0000 (16:29 +0100)]
ovf: improve and simplify path checking code

moves the filepath code a bit more closer to where it's actually used
checks the contained path before trying to find it's absolute path
properly add error handling to realpath

instead of checking the combined ovf_path + filepath, just make sure
filepath can't point to anythign besides a file in this directory
by checking for '.' and '..' (slashes are not allowed in SAFE_CHAR_CLASS_RE)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 days agoplugin: dir: handle ova files for import
Dominik Csapak [Mon, 18 Nov 2024 15:29:05 +0000 (16:29 +0100)]
plugin: dir: handle ova files for import

since we want to handle ova files (which are only ovf+images bundled in
a tar file) for import, add code that handles that.

we introduce a valid volname for files contained in ovas like this:

 storage:import/archive.ova/disk-1.vmdk

by basically treating the last part of the path as the name for the
contained disk we want.

in that case we return 'import' as type with 'vmdk/qcow2/raw' as format
(we cannot use something like 'ova+vmdk' without extending the 'format'
parsing to that for all storages/formats. This is because it runs
though a verify format check at least once)

we then provide a function to use for that:

* extract_disk_from_import_file: this actually extracts the file from
  the archive. Currently only ova is supported, so the extraction with
  'tar' is hardcoded, but again we can easily extend/modify that should
  we need to.

  we currently extract into the either the import storage or a given
  target storage in the images directory so if the cleanup does not
  happen, the user can still see and interact with the image via
  api/cli/gui

we have to modify the `parse_ovf` a bit to handle the missing disk
images, and we parse the size out of the ovf part (since this is
informal only, it should be no problem if we cannot parse it sometimes)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 days agoplugin: dir: implement import content type
Dominik Csapak [Mon, 18 Nov 2024 15:29:04 +0000 (16:29 +0100)]
plugin: dir: implement import content type

in DirPlugin and not Plugin (because of cyclic dependency of
Plugin -> OVF -> Storage -> Plugin otherwise)

only ovf is currently supported (though ova will be shown in import
listing), expects the files to not be in a subdir, and adjacent to the
ovf file.

listed will be all ovf/qcow2/raw/vmdk files.
ovf because it can be imported, and the rest because they can be used
in the 'import-from' part of qemu-server.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 days agod/control: bump versioned dependency for libpve-common-perl
Thomas Lamprecht [Mon, 18 Nov 2024 15:01:35 +0000 (16:01 +0100)]
d/control: bump versioned dependency for libpve-common-perl

to ensure the new verification callback for downloaded files is
available, while it's not a hard failure if it's missing it's good to
ensure that it's active and can work as intended.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agobump version to 8.2.7
Thomas Lamprecht [Mon, 18 Nov 2024 14:51:38 +0000 (15:51 +0100)]
bump version to 8.2.7

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 days agoapi: iso up/download: check file content
Dominik Csapak [Mon, 18 Nov 2024 14:31:12 +0000 (15:31 +0100)]
api: iso up/download: check file content

by letting it run through 'file_size_info' as 'untrusted', since that
does the necessary checks. We do this so we don't accidentally
up/download a file that is not a valid iso

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
Tested-by: Fiona Ebner <f.ebner@proxmox.com>
3 days agomove OVF module over from qemu-server
Dominik Csapak [Fri, 15 Nov 2024 15:17:23 +0000 (16:17 +0100)]
move OVF module over from qemu-server

Copy over the PVE::QemuServer::OVF module and relevant OVF tests from
the qemu-server package/repo.

We need it here for implementing the import content type support to
generic directory based plugins.
So it will also use PVE::Storage modules and thus anything higher, or
a different package, makes things only harder for now.

Put the OVF module under the new PVE::GuestImport module namespace.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
 [ TL: rework commit message to avoid file endings and clarify
   intentions ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 days agofile_size_info: implement untrusted mode
Fabian Grünbichler [Mon, 4 Nov 2024 10:42:20 +0000 (11:42 +0100)]
file_size_info: implement untrusted mode

this allows checking some extra attributes for images which come from
a potentially malicious source.

since file_size_info is not part of the plugin API, no API bump is
needed. if desired, a similar check could also be implemented in
volume_size_info, which would entail bumping both APIVER and APIAGE
(since the additional parameter would make checking untrusted volumes
opt-in for external plugins).

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
Tested-by: Fiona Ebner <f.ebner@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
7 days agobump version to 8.2.6
Thomas Lamprecht [Wed, 13 Nov 2024 15:19:48 +0000 (16:19 +0100)]
bump version to 8.2.6

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 days agoiscsi: verify volume disks are part of target
Mira Limbeck [Mon, 11 Nov 2024 15:01:03 +0000 (16:01 +0100)]
iscsi: verify volume disks are part of target

We build the disk path by appending the last part of the volname to
/dev/disk/by-id. These could in theory be any other disk found under
there instead of a LUN provided by the target configured.

This patch adds a way to verify the disk used is actually provided by
the target. To do so `udevadm` is used to get the devpath
(/devices/...). This can then be checked under `/sys` for a session.
With the session the targetname can be looked up under /sys/class and
compared with the configured target of the storage.
In case of multipath, all disks backing the multipath device are checked
recursively (in case of nested device mapper devices), and verification
succeeds if at least one backing disk is part of the iSCSI target.
Mixing disks from different iSCSI targets is allowed as long as one
corresponds to the right target.

udevadm input is limited to `/dev/` paths since we only pass those either
explicitly, or via Cwd::realpath on a /dev/disk/by-id path returned by
filesystem_path.

According to [0] /sys/subsystems should be preferred over /sys/class if
available, but neither kernel 6.8 nor kernel 6.11 provided it. It is
mentioned that in the future this will be moved to /sys/subsystems. So
this has to be kept in mind for future kernels.

[0] https://www.kernel.org/doc/html/v6.11/admin-guide/sysfs-rules.html

Reported-by: Friedrich Weber <f.weber@proxmox.com>
Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
7 days agoiscsi: disallow slashes in volname
Mira Limbeck [Mon, 11 Nov 2024 15:01:02 +0000 (16:01 +0100)]
iscsi: disallow slashes in volname

The last part of an iSCSI volname is assumed to be a stable name found
in /dev/disk/by-id. These are not allowed to have `/` in their names.

Reported-by: Friedrich Weber <f.weber@proxmox.com>
Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
9 days agoiscsi: fix activation of second iSCSI storage on other cluster nodes
Friedrich Weber [Tue, 5 Nov 2024 16:37:44 +0000 (17:37 +0100)]
iscsi: fix activation of second iSCSI storage on other cluster nodes

Assume a cluster that already has an iSCSI storage A configured. After
adding a new iSCSI storage B with a different target on node 1, B will
only become active on node 1, not on the other nodes. On other nodes,
pvestatd logs 'storage B is not online'. The storage does not become
available even after a reboot. A workaround is to manually perform
iSCSI discovery against B's targets on the other nodes once.

This happens because the connectivity check of the iSCSI plugin on
node B does not correctly handle the case that iscsiadm already knows
portals (i.e., A's portals) but not B's portals.

The connectivity check calls `iscsi_portals` to determine the portals
to ping, which calls `iscsiadm -m node` to query all known portals,
and extracts all portals to the storage's target. If the iscsiadm
command fails, `iscsi_portals` returns the portal given in the storage
config. This works as expected if the storage is the first iSCSI
storage, because then iscsiadm does not know any portals and thus
exits with code 21.

However, since there already is an iSCSI storage A, iscsiadm exits
cleanly but its output does not contain any portals for B's target.
Hence, `iscsi_portals` returns an empty array of portals, so the
connectivity check fails and node 2 never performs discovery for B.

To fix this, let `iscsi_portals` also return the portal from B's
storage config if iscsiadm exited cleanly but its output contained no
matching portal.

Signed-off-by: Friedrich Weber <f.weber@proxmox.com>
9 days agod/control: dependencies: add bzip2, gzip, lzop, zstd
Maximiliano Sandoval [Fri, 13 Sep 2024 08:13:52 +0000 (10:13 +0200)]
d/control: dependencies: add bzip2, gzip, lzop, zstd

The decompressor_info method calls binaries provided by these packages
so they are (alphabetically) added explicitly as dependencies.

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
FG: adapted commit message
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
9 days agofix #5267: storage: add bzip2 support
Maximiliano Sandoval [Fri, 13 Sep 2024 08:13:51 +0000 (10:13 +0200)]
fix #5267: storage: add bzip2 support

A popular ISO compressed exclusively with bz2 is OPNsense [2].

Since this requires adding `bz2` to the list of known compression
formats we add decompression methods for vmz and tar.

[2] https://opnsense.org/download/

Suggested-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
Tested-By: Aaron Lauterer <a.lauterer@proxmox.com>
4 weeks agolvmplugin: fix: activate|deactivate volume, add missing storeid param in path sub
Alexandre Derumier [Wed, 25 Sep 2024 09:00:45 +0000 (11:00 +0200)]
lvmplugin: fix: activate|deactivate volume, add missing storeid param in path sub

$storeid param is missing and $snapname is used as third param.

This seem to works actually because $snapname is always empty in lvm

Signed-off-by: Alexandre Derumier <alexandre.derumier@groupe-cyllene.com>
5 weeks agoiscsi: disable Open-iSCSI login retries
Friedrich Weber [Fri, 11 Oct 2024 12:58:21 +0000 (14:58 +0200)]
iscsi: disable Open-iSCSI login retries

Since 90c1b10 ("fix #254: iscsi: add support for multipath targets"),
iSCSI storage activation checks whether a session exists for each
discovered portal. If there is a discovered portal without a session,
it performs a discovery and login in the hope of establishing a
session to the portal. If the portal is unreachable when trying to log
in, Open-iSCSI's default behavior is to retry for up to 2 minutes, as
explained in /etc/iscsi/iscid.conf:

> # The default node.session.initial_login_retry_max is 8 and
> # node.conn[0].timeo.login_timeout is 15 so we have:
> #
> # node.conn[0].timeo.login_timeout * \
> node.session.initial_login_retry_max = 120s

If pvestatd is activating the storage, it will be blocked during that
time, which is undesirable. This is particularly unfortunate if the
target announces portals that the host permanently cannot reach. In
that case, every pvestatd iteration will take 2 minutes. While it can
be argued that such setups are misconfigured, it is still desirable to
keep the fallout of that misconfiguration as low as possible.

In order to reduce the time Open-iSCSI tries to log in, instruct
Open-ISCSI to not perform login retries for that target. For this, set
node.session.initial_login_retry_max for the target to 0. This setting
is stored in Open-iSCSI's records under /etc/iscsi/nodes. As these
records are overwritten with the defaults from /etc/iscsi/iscsid.conf
on discovery, the setting needs to be applied after discovery.

With this setting, one login attempt should take at most 15 seconds.
This is still higher than pvestatd's iteration time of 10 seconds, but
more tolerable. Logins will still be continuously retried by pvestatd
in every iteration until there is a session to each discovered portal.

Signed-off-by: Friedrich Weber <f.weber@proxmox.com>
Tested-by: Mira Limbeck <m.limbeck@proxmox.com>
Reviewed-by: Mira Limbeck <m.limbeck@proxmox.com>
8 weeks agobump version to 8.2.5
Thomas Lamprecht [Mon, 23 Sep 2024 09:23:21 +0000 (11:23 +0200)]
bump version to 8.2.5

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 weeks agod/control: bump versioned dependency of libpve-common-perl
Thomas Lamprecht [Mon, 23 Sep 2024 09:22:00 +0000 (11:22 +0200)]
d/control: bump versioned dependency of libpve-common-perl

to ensure the 'dowload_allowed' schema property is understood

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 weeks agodownload handling: adapt to method schema field rename
Fabian Grünbichler [Thu, 19 Sep 2024 13:19:51 +0000 (15:19 +0200)]
download handling: adapt to method schema field rename

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
8 weeks agoapi: annotate file-restore endpoint as download-enabled
Fabian Grünbichler [Thu, 19 Sep 2024 13:19:50 +0000 (15:19 +0200)]
api: annotate file-restore endpoint as download-enabled

to satisfy the new checks in the API handler that only allow downloading via
marked endpoints.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 months agobump version to 8.2.4
Thomas Lamprecht [Thu, 12 Sep 2024 10:26:30 +0000 (12:26 +0200)]
bump version to 8.2.4

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agoapi: upload: correctly test for result of unlink
Fiona Ebner [Mon, 29 Jul 2024 14:29:56 +0000 (16:29 +0200)]
api: upload: correctly test for result of unlink

It's not enough to check whether $! is set. From "perldoc perlvar":

> Many system or library calls set "errno" if they fail, to
> indicate the cause of failure. They usually do not set "errno"
> to zero if they succeed and may set "errno" to a non-zero value
> on success. This means "errno", hence $!, is meaningful only
> *immediately* after a failure:

To protect against potential issues, check the return value of unlink
and only check $! if it failed.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2 months agobase plugin: do not decode the empty string
Maximiliano Sandoval [Mon, 2 Sep 2024 12:47:45 +0000 (14:47 +0200)]
base plugin: do not decode the empty string

If the json was empty, for example if the qemu-img command times out, a
message

    warn "could not parse qemu-img info command output for '$filename' - $err\n";

would have been printed.

This message could lead one to think the issue lies in the contents of
the json, even if the previous warning said that there was a timeout.

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
2 months agofix #4272: btrfs: add rename feature
Maximiliano Sandoval [Fri, 5 Jul 2024 13:10:39 +0000 (15:10 +0200)]
fix #4272: btrfs: add rename feature

Adds the ability to change the owner of a guest image.

Btrfs does not need special commands to rename a subvolume and this can
be achieved the same as in Storage/plugin.pm's rename_volume taking
special care of how the directory structure used by Btrfs.

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
Tested-By: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-By: Aaron Lauterer <a.lauterer@proxmox.com>
2 months agoesxi: fix #5587: add support for older version of vmx storage filepaths
Daniel Kral [Wed, 21 Aug 2024 13:57:47 +0000 (15:57 +0200)]
esxi: fix #5587: add support for older version of vmx storage filepaths

Allow the ESXi storage disk entry property "fileName" to be flatcased
("filename") in addition to being camelcased ("fileName"). This adds
compatibility with older ESXi .vmx configuration files.

Signed-off-by: Daniel Kral <d.kral@proxmox.com>
3 months agobtrfs: log executed command on failures
Maximiliano Sandoval [Tue, 9 Jul 2024 11:49:18 +0000 (13:49 +0200)]
btrfs: log executed command on failures

Having the complete command printed out makes debuging easier.

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
4 months agovolume import: assume target API version is at least 9
Fiona Ebner [Mon, 10 Jun 2024 09:04:15 +0000 (11:04 +0200)]
volume import: assume target API version is at least 9

The storage API version has been bumped to at least 9 since
libpve-storage = 7.0-4. If the source node is on Proxmox VE 8, where
this change will come in, then the target node can be assumed to be
running either Proxmox VE 8 or, during upgrade, the latest version of
Proxmox VE 7.4, so it's safe to assume a storage API version of at
least 9 in all cases.

As reported by Maximiliano, the fact that the 'apiinfo' call was
guarded with a quiet eval could lead to strange errors for replication
on a customer system where an SSH connection could not always be
established, because the target's API version would fall back to 1.
Because of that, the '-base' argument would be missing for the import
call on the target which would in turn lead to an error about the
target ZFS volume already existing (rather than doing an incremental
sync).

Reported-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
Reviewed-by: Max Carrara <m.carrara@proxmox.com>
4 months agoplugin: move definition for 'port' option to base plugin
Fiona Ebner [Thu, 18 Apr 2024 08:33:17 +0000 (10:33 +0200)]
plugin: move definition for 'port' option to base plugin

Commit 7020491 ("esxi: add 'port' config parameter") started using
the 'port' option in a second plugin, but the definition stayed in the
PBS plugin. Avoid the hidden dependency and move the definition to the
base plugin instead.

It is necessary to mark it as optional or it would be required always.

Clarify that the option is not used by NFS and CIFS.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
4 months agostyle: remove goto statements
Fabian Grünbichler [Wed, 26 Jun 2024 08:56:17 +0000 (10:56 +0200)]
style: remove goto statements

these can just as well be `die` statements right there, there is no complicated
cleanup that would warrant a goto statement..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
4 months agofix reminder comment for template regex
Fiona Ebner [Thu, 27 Jun 2024 13:05:02 +0000 (15:05 +0200)]
fix reminder comment for template regex

The necessary change in pve-manager to remove this [0] only got
applied during PVE 8.2 [1], so removing this regex has to wait.

[0]: https://lists.proxmox.com/pipermail/pve-devel/2021-October/050514.html
[1]: https://git.proxmox.com/?p=pve-manager.git;a=commit;h=9c54c52d7996572956e65c4820459ff3a1cda778

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
5 months agobump version to 8.2.3
Wolfgang Bumiller [Fri, 21 Jun 2024 11:55:10 +0000 (13:55 +0200)]
bump version to 8.2.3

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
5 months agoesxi: remove already-dealt-with FIXME comment
Wolfgang Bumiller [Fri, 21 Jun 2024 11:56:25 +0000 (13:56 +0200)]
esxi: remove already-dealt-with FIXME comment

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
5 months agoRevert "esxi: improve error handling for fuse mount tool"
Wolfgang Bumiller [Fri, 21 Jun 2024 11:46:36 +0000 (13:46 +0200)]
Revert "esxi: improve error handling for fuse mount tool"

This reverts commit d80420bca8ef5c78bcb9bfabb2a3e6c74667ce49.

This diverts stderr of the fuse process to a pipe, which makes no
sense as it runs daemonized in a scope, also, the pipe fd was used as
a ready-signal, which now does not trigger anymore.

5 months agobump version to 8.2.2
Wolfgang Bumiller [Fri, 7 Jun 2024 11:23:35 +0000 (13:23 +0200)]
bump version to 8.2.2

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
5 months agoesxi: improve error handling for fuse mount tool
Dominik Csapak [Fri, 10 May 2024 13:56:58 +0000 (15:56 +0200)]
esxi: improve error handling for fuse mount tool

if the fuse tool encounters an error early, it prints it like:
   Error: some error message
on stderr.

Redirect STDERR of the child process (which mounts the ESXi instance) to
the pipe of the parent (API) process, so that it can pass a hopefully
more meaningful message to the user than just an erroneous return code.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
6 months agofixup error messages when getting file size info
Wolfgang Bumiller [Tue, 30 Apr 2024 07:53:43 +0000 (09:53 +0200)]
fixup error messages when getting file size info

The assignment happens before the 'die', so the error message would
always contain 'undef'.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
6 months agodon't bail on whitespaces in backing devices
Wolfgang Bumiller [Tue, 30 Apr 2024 07:53:42 +0000 (09:53 +0200)]
don't bail on whitespaces in backing devices

This prevents importing from vmdks with whitespaces in file names.
Further, some operations that include file sizes (like listing disks)
would potentially fail entirely if a custom disk with a badly name
backing device exists in a VM images directory since they don't expect
this. Specifically, since we don't necessarily know the actual naming
scheme of the current storage in the plain Plugin.pm version, we don't
check the full name anyway, so why bother with whitespaces...

See-also: https://forum.proxmox.com/threads/new-import-wizard-available-for-migrating-vmware-esxi-based-virtual-machines.144023/page-16#post-658697
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
6 months agobump version to 8.2.1
Thomas Lamprecht [Tue, 23 Apr 2024 15:20:47 +0000 (17:20 +0200)]
bump version to 8.2.1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agoesxi import: add "longhorn" to possible Windows Server 2008 OS types
Thomas Lamprecht [Tue, 23 Apr 2024 08:50:06 +0000 (10:50 +0200)]
esxi import: add "longhorn" to possible Windows Server 2008 OS types

While we detected "winLonghorn" already as w2k8, it seems that some
ESXi versions also use "longhorn" here.

Add that to our known Windows OS type mapping, so that it gets
correctly mapped to our w2k8 type, which affects the selected
hardware.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agobump version to 8.2.0
Thomas Lamprecht [Fri, 19 Apr 2024 07:07:15 +0000 (09:07 +0200)]
bump version to 8.2.0

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agod/control: bump versioned dependency for libpve-cluster-perl
Thomas Lamprecht [Fri, 19 Apr 2024 06:41:21 +0000 (08:41 +0200)]
d/control: bump versioned dependency for libpve-cluster-perl

to have the new ssh related helpers available

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agoupload: use SSH helper to get ssh/scp options
Fabian Grünbichler [Thu, 11 Jan 2024 10:51:23 +0000 (11:51 +0100)]
upload: use SSH helper to get ssh/scp options

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
7 months agolvmthin: import: improve readability
Fabian Grünbichler [Thu, 18 Apr 2024 13:10:46 +0000 (15:10 +0200)]
lvmthin: import: improve readability

the nested call combined with the long parameter list is not very nice to
format/read, let's split it..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
7 months agofix #1611: implement import of base-images for LVM-thin Storage
Hannes Duerr [Tue, 19 Dec 2023 14:03:06 +0000 (15:03 +0100)]
fix #1611: implement import of base-images for LVM-thin Storage

for base images we call the volume_import of the parent plugin and pass
it as vm-image instead of base-image, then convert it back as base-image

Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
7 months agostorage migrate: only output about cleaning-up snapshots if there are any
Thomas Lamprecht [Wed, 17 Apr 2024 10:21:08 +0000 (12:21 +0200)]
storage migrate: only output about cleaning-up snapshots if there are any

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agostorage migrate: tiny line reduction
Thomas Lamprecht [Wed, 17 Apr 2024 10:20:36 +0000 (12:20 +0200)]
storage migrate: tiny line reduction

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agofix insecure migration failing if waiting on lock
Mira Limbeck [Wed, 17 Apr 2024 09:48:57 +0000 (11:48 +0200)]
fix insecure migration failing if waiting on lock

both STDOUT and STDERR are written into `$info` which is then parsed for
IP and port of the target socket listening.
when the ports file can't be locked immediately `trying to acquire
lock...` is printed on STDERR and in turn written into `$info`.
trying to parse the IP then fails, resulting in a migration or
replication failing.

the bare open3 call is replaced by the run_command wrapper from
pve-common to use a safe wrapper around open3 with the same
functionality.
STDERR is read separatey from STDOUT and the last line of STDERR is
kept in case of errors.

Fixes: 57acd6a ("fix #1452: also log stderr of remote command with
insecure storage migration")

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
7 months agobump version to 8.1.5
Fabian Grünbichler [Thu, 11 Apr 2024 12:33:56 +0000 (14:33 +0200)]
bump version to 8.1.5

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
7 months agocephconfig: align our parser with Ceph's parser
Max Carrara [Tue, 2 Apr 2024 14:55:20 +0000 (16:55 +0200)]
cephconfig: align our parser with Ceph's parser

This commit rewrites the entire parser for ceph.conf, aligning its
behaviour as closely as possible with Ceph's parser grammar [0].

The most notable improvements are as follows:

  1. The characters '#' and ';' now both mark comments, instead of
     just the '#' character.

  2. Any character, including comment literals ('#' and ';'), may now
     be escaped.

  3. Quoted values (single and double) are now supported.

  4. Line continuations are now supported (lines ending with '\').

  5. Repeated whitespace characters in keys are now treated as a
     single space character.

  6. Dashes '-' are not treated the same as spaces and underscores
     anymore, as Ceph's grammar doesn't treat them that way.
     * Paired with 5., this means that repeated whitespace is now
       equivalent to a single underscore.

  7. Escaped comment literals are now un-escaped.

  8. Although not too crucial, the parser now also supports empty
     sections and will just initialize them with an empty hash.

Furthermore, the original grammar's more quirky behaviours are also
respected where sanely possible.

[0]: https://git.proxmox.com/?p=ceph.git;a=blob;f=ceph/src/common/ConfUtils.cc;h=2f78fd02bf9e27467275752e6f3bca0c5e3946ce;hb=e9fe820e7fffd1b7cde143a9f77653b73fcec748#l144

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
7 months agocephconfig: escape un-escaped comment literals on write
Max Carrara [Tue, 2 Apr 2024 14:55:19 +0000 (16:55 +0200)]
cephconfig: escape un-escaped comment literals on write

in order to prevent configuration errors or the configuration being
misinterpreted.

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
7 months agocephconfig: align written key-value pairs by tab
Max Carrara [Tue, 2 Apr 2024 14:55:18 +0000 (16:55 +0200)]
cephconfig: align written key-value pairs by tab

instead of tab + space.

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
7 months agocephconfig: change order of written sections
Max Carrara [Tue, 2 Apr 2024 14:55:17 +0000 (16:55 +0200)]
cephconfig: change order of written sections

in order to group related sections together.

Additionally, sections that are associated with the client, for
example '[client.foo]', are written directly after the '[client]'
section.

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
7 months agocephconfig: allow writing arbitrary sections
Max Carrara [Tue, 2 Apr 2024 14:55:16 +0000 (16:55 +0200)]
cephconfig: allow writing arbitrary sections

This adds support for writing arbitrary sections to 'ceph.conf' while
ensuring that already written sections are not duplicated.

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
7 months agotest: add tests for 'ceph.conf' parser and writer
Max Carrara [Tue, 2 Apr 2024 14:55:14 +0000 (16:55 +0200)]
test: add tests for 'ceph.conf' parser and writer

These tests attempt to cover most of Ceph's config parser's grammar,
including all of its syntax quirks [0].

Each case is tested against two testing subroutines:

  1. The parser's output is compared with the expected output.

  2. The writer's output is parsed again ant then compared with the
     expected output.

[0]: https://git.proxmox.com/?p=ceph.git;a=blob;f=ceph/src/common/ConfUtils.cc;h=2f78fd02bf9e27467275752e6f3bca0c5e3946ce;hb=e9fe820e7fffd1b7cde143a9f77653b73fcec748#l144

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
7 months agocephconfig: change code style inside config writer
Max Carrara [Tue, 2 Apr 2024 14:55:13 +0000 (16:55 +0200)]
cephconfig: change code style inside config writer

This commit changes the code style of subroutine `write_ceph_config`
to match our style guide [0] more.

Furthermore, the repeated calls to the inner subroutine are replaced
with a loop, while the regular expressions used by the inner `sub` are
now quoted with `qr` to prevent any accidental mis-quotings in the
future.

[0]: https://pve.proxmox.com/wiki/Perl_Style_Guide

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
7 months agoesxi: guest types: use quotes for all hash-map keys
Thomas Lamprecht [Tue, 9 Apr 2024 11:18:50 +0000 (13:18 +0200)]
esxi: guest types: use quotes for all hash-map keys

A small coding style patch to make the list of guest-types mapping to
Windows easier to read.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agoesxi: add mapping for windows server 2016/2019
Stefan Sterz [Tue, 9 Apr 2024 10:56:11 +0000 (12:56 +0200)]
esxi: add mapping for windows server 2016/2019

previously these were mapped to the linux 2.6 default

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
7 months agouse stderr from qemu-img invocation as error
Wolfgang Bumiller [Thu, 4 Apr 2024 10:55:40 +0000 (12:55 +0200)]
use stderr from qemu-img invocation as error

Instead of just using it as a warning and then trying to parse an
empty string as json.

For example, trying to parse unsupported vmdks, previously we'd see
something like this:

  qemu-img: Could not open
  '/run/pve/import/esxi/foo/mnt/ha-datacenter/vsanDatastore/asdf/asdf-000001.vmdk':
  Unsupported image type 'vsanSparse'
  could not parse qemu-img info command output for
  '/run/pve/import/esxi/foo/mnt/ha-datacenter/vsanDatastore/asdf/asdf-000001.vmdk'
  - malformed JSON string, neither tag, array, object, number, string
  or atom, at character offset 0 (before "(end of string)") at
  src/PVE/Storage/Plugin.pm line 962, <DATA> line 960.

Now it simply shows:

  qemu-img: Could not open
  '/run/pve/import/esxi/foo/mnt/ha-datacenter/vsanDatastore/asdf/asdf-000001.vmdk':
  Unsupported image type 'vsanSparse'

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
7 months agoesxi: status: mark as active if its mounted
Thomas Lamprecht [Thu, 28 Mar 2024 18:12:06 +0000 (19:12 +0100)]
esxi: status: mark as active if its mounted

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agoesxi: drop unused variable and commented out code
Thomas Lamprecht [Thu, 28 Mar 2024 18:11:33 +0000 (19:11 +0100)]
esxi: drop unused variable and commented out code

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agobump version to 8.1.4
Thomas Lamprecht [Thu, 28 Mar 2024 16:37:32 +0000 (17:37 +0100)]
bump version to 8.1.4

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agod/control: bump versioned dependency for esxi-import-tool
Thomas Lamprecht [Thu, 28 Mar 2024 16:37:26 +0000 (17:37 +0100)]
d/control: bump versioned dependency for esxi-import-tool

to ensure new port-related CLI options are available

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agoesxi: add 'port' config parameter
Wolfgang Bumiller [Thu, 28 Mar 2024 13:18:34 +0000 (14:18 +0100)]
esxi: add 'port' config parameter

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
7 months agobump version to 8.1.3
Thomas Lamprecht [Wed, 27 Mar 2024 11:38:59 +0000 (12:38 +0100)]
bump version to 8.1.3

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agoesxi: reduce cache invalidation time to 30s
Thomas Lamprecht [Wed, 27 Mar 2024 12:11:22 +0000 (13:11 +0100)]
esxi: reduce cache invalidation time to 30s

Reduce the time the cache stays valid from 60s to 30s, while this
could double the amount of requests in the worst case, it's still not
that frequent and also halves the maximal time a user has to wait to
see changes on the ESXi side to appear here.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agoesxi: use mac address when static, generated and vpx
Aaron Lauterer [Tue, 26 Mar 2024 12:04:38 +0000 (13:04 +0100)]
esxi: use mac address when static, generated and vpx

static -> defined manually
generated -> by ESXi
vpx -> generated by vCenter

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
8 months agobump version to 8.1.2
Thomas Lamprecht [Fri, 22 Mar 2024 15:39:30 +0000 (16:39 +0100)]
bump version to 8.1.2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 months agod/control: bump versioned dependency for esxi-import-tool
Thomas Lamprecht [Fri, 22 Mar 2024 15:39:10 +0000 (16:39 +0100)]
d/control: bump versioned dependency for esxi-import-tool

to ensure new CLI options for dropping privileges are available

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 months agoesxi: have the fuse process drop its privileges
Wolfgang Bumiller [Fri, 22 Mar 2024 12:24:13 +0000 (13:24 +0100)]
esxi: have the fuse process drop its privileges

once it's mounted it only needs to make http requests and talk to the
open fuse fd

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
8 months agoesxi: use listvms.py's stderr as error message
Wolfgang Bumiller [Fri, 22 Mar 2024 10:06:56 +0000 (11:06 +0100)]
esxi: use listvms.py's stderr as error message

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
8 months agoesxi: detect correct os type in 'other' family
Gabriel Goller [Thu, 21 Mar 2024 09:07:52 +0000 (10:07 +0100)]
esxi: detect correct os type in 'other' family

This patch introduces the conversion table for all possible OS Types
that are in the VMWare 'other' family and sets the pve counterpart.
Our default OS Type is 'linux', so including mappings to 'other' makes
sense.

Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
8 months agoesxi: only add scsihw if it's defined
Dominik Csapak [Tue, 19 Mar 2024 13:00:28 +0000 (14:00 +0100)]
esxi: only add scsihw if it's defined

otherwise we get `scsihw: null` from the api, which is not a valid
value, so just omit it.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 months agoesxi: add warning for losing efi state
Dominik Csapak [Tue, 19 Mar 2024 13:00:27 +0000 (14:00 +0100)]
esxi: add warning for losing efi state

we cannot import the state of the efivars (e.g. boot order)
so add a warning for that

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
 [ TL: add new warning to return schema ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 months agobump version to 8.1.1
Thomas Lamprecht [Wed, 13 Mar 2024 14:29:52 +0000 (15:29 +0100)]
bump version to 8.1.1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 months agoesxi: deactivate storage if config gets updated
Thomas Lamprecht [Tue, 12 Mar 2024 17:34:33 +0000 (18:34 +0100)]
esxi: deactivate storage if config gets updated

to ensure that the next access actually uses the updated config for
accessing the remote ESXi, for both manifest API and FUSE mount.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 months agoesxi: clean-up state-dir in deactivate storage
Thomas Lamprecht [Tue, 12 Mar 2024 17:33:15 +0000 (18:33 +0100)]
esxi: clean-up state-dir in deactivate storage

to ensure we always query a new one on quick add-delete-add cycles.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 months agoesxi: deactivate storage on deletion from config
Thomas Lamprecht [Tue, 12 Mar 2024 17:34:04 +0000 (18:34 +0100)]
esxi: deactivate storage on deletion from config

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 months agoesxi: add 'skip-cert-verification' option
Wolfgang Bumiller [Tue, 12 Mar 2024 12:54:49 +0000 (13:54 +0100)]
esxi: add 'skip-cert-verification' option

following pve-esxi-import-tools's commits:
3ee5c3b ("esxi-folder-fuse: add --insecure option")
c292c67 ("listvms.py: add --insecure parameter, verify cert by
          default")
34c87be ("rename --insecure option to --skip-cert-verification")

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
 [ TL: rename 'insecure' to 'skip-cert-verification' to better convey
   what it means ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 months agoimport: rework plugin api to not need a blessed object
Dominik Csapak [Tue, 12 Mar 2024 11:51:26 +0000 (12:51 +0100)]
import: rework plugin api to not need a blessed object

does not really make sense, and if the plugin wants that, it can still
be done, like we do here for the ESXiPlugin

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
8 months agoimport: drop target parameter
Wolfgang Bumiller [Tue, 12 Mar 2024 12:58:45 +0000 (13:58 +0100)]
import: drop target parameter

since disks are a separate hash now with no associated storage, we
don't need this anymore

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
8 months agoesxi: add disk capacity to import metadata
Wolfgang Bumiller [Mon, 11 Mar 2024 13:02:14 +0000 (14:02 +0100)]
esxi: add disk capacity to import metadata

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
8 months agoesxi: warn if the guest was running
Wolfgang Bumiller [Mon, 11 Mar 2024 12:50:16 +0000 (13:50 +0100)]
esxi: warn if the guest was running

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>