Commit Graph

498 Commits

Author SHA1 Message Date
Thomas Lamprecht
a62d7bd966 api: cephfs: wait for MDS to become active
A MDS gets only active once a FS is there, and we need an MDS active
to be able to add a storage, as the CephFS plugin does an immediate
mount check. As an MDS needs some time to get active we had a
problematic time window where this mounting could fail.

Wait for a MDS to get in active state.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-23 18:49:48 +01:00
Thomas Lamprecht
34c1236c35 api: cephfs: check if SID is free when add_storage is set
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-23 18:35:16 +01:00
Thomas Lamprecht
97fe40b0be api/ceph: import file_set_contents
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-23 16:17:13 +01:00
Thomas Lamprecht
7e1a9d25b6 ceph: add CephFS create and list API
Allow to create a new CephFS instance and allow to list them.

As deletion requires coordination between the active MDS and all
standby MDS next in line this needs a bit more work. One could mark
the MDS cluster down and stop the active, that should work but as
destroying is quite a sensible operation, in production not often
needed I deemed it better to document this only, and leaving API
endpoints for this to the future.

For index/list I slightly transform the result of an RADOS `fs ls`
monitor command, this would allow relative easy display of a CephFS
and it's backing metadata and data pools in a GUI.

While for now it's not enabled by default and marked as experimental,
this API is designed to host multiple CephFS instances - we may not
need this at all, but I did not want to limit us early. And anybody
liking to experiment can use it after the respective ceph.conf
settings.

When encountering errors try to rollback. As we verified at the
beginning that we did not reused pools, destroy the ones which we
created.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Co-authored-by: Alwin Antreich <a.antreich@proxmox.com>
2018-11-23 13:33:12 +01:00
Thomas Lamprecht
b82649cc52 ceph: add MDS create/delete/list API
Allow to create, list and destroy and Ceph Metadata Server (MDS) over
the API and the CLI `pveceph` tool.

Besides setting up the local systemd service template and the MDS
data directory we also add a reference to the MDS in the ceph.conf
We note the backing host (node) from the respective MDS and set up a
'mds standby for name' = 'pve' so that the PVE created ones are a
single group. If we decide to add integration for rank/path specific
MDS (possible useful for CephFS with quite a bit of load) then this
may help as a starting point.

On create, check early if a reference already exists in ceph.conf and
abort in that case. If we only see existing data directories later
on we abort but do not remove them, they could well be from an older
manual create - where it's possible dangerous to just remove it. Let
the user handle it themself in that case.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Co-authored-by: Alwin Antreich <a.antreich@proxmox.com>
2018-11-23 13:33:12 +01:00
Thomas Lamprecht
f96d701292 ceph: move create/destroy pool to CephTools
We will reuse this in the future, e.g., when creating a data and
metadata pool for CephFS.

Allow to pass a $rados object (to reuse it, as initializing is not
that cheap) but also create it if it's undefined, fro convenience.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-23 13:33:12 +01:00
Thomas Lamprecht
33a9c70a45 api: document default for ceph service start/stop/restart
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-23 12:40:46 +01:00
Dominik Csapak
342c0830cf ceph: add service restart api call
like start/stop but for restart, this makes maintenance a bit easier

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-11-23 12:23:42 +01:00
Thomas Lamprecht
3f2300d8b4 api/hardware: fixup: add missing file
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-22 15:05:52 +01:00
Thomas Lamprecht
523d5f486b api: move PCI from Scan to Hardware path
as discussed[0] lets move this to /nodes/{node}/hardware/pci

Put this in its own subfolder and adapt module names and paths in UI.

[0]: https://pve.proxmox.com/pipermail/pve-devel/2018-November/034694.html
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-22 14:20:09 +01:00
Dominik Csapak
07d982de6c api/Scan: allow to get a PCI device's mediated devices
this is for the gui to be able to select mediated devices
path ist /node/NODE/scan/pci/PCIID/mdev

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-11-22 13:30:50 +01:00
Dominik Csapak
782be7dae2 api/Scan: allow to scan a nodes PCI devices
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-11-22 13:30:21 +01:00
Thomas Lamprecht
400742e432 api/Ceph: actually use imported file_{g,s}et_contents 2018-11-22 11:06:12 +01:00
Thomas Lamprecht
0cd34b008b api/Ceph: cleanup module usage
most of this was imported by just copying without verifying if all is
actually required. Some lost its purpose as we re-used more from our
existing module code base (e.g., pve-common) but wasn't actually
removed.

As this file includes two perl modules you need to take a bit caution
when looking at this, as some things are used in one module but not
the other - simple grep'ing at this may give false positives.

Also add PVE::API2::Storage use which was missing here.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-22 11:06:12 +01:00
Thomas Lamprecht
d4d2e789b8 api/CephOSD: cleanup and sort module usage
most of this was imported by just copying without verifying if all is
actually required. Some lost its purpose as we re-used more from our
existing module code base (e.g., pve-common) but wasn't actually
removed.

As this file includes two perl modules you need to take a bit caution
when looking at this, as some things are used in one module but not
the other - simple grep'ing at this may give false positives.

Also include the missing IO::File use.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-22 11:06:12 +01:00
Dominik Csapak
ab322f5f83 rename PVE::API2::Storage::Scan to PVE::API2::Scan
and use it in the API

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-11-19 15:04:31 +01:00
Dominik Csapak
805577a6f5 API/Scan: use scan_usb from PVE::SysFSTools
the code moved from PVE::Storage there

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-11-19 15:04:02 +01:00
Dominik Csapak
bed048ef70 API/Scan: remove unused HTTP::Status module
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-11-19 15:03:50 +01:00
Dominik Csapak
6b028c3c48 Scan: whitespace fixes
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-11-19 15:03:45 +01:00
Dominik Csapak
03b0c2f5dc copy storage scan API from pve-storage
this will be used for the api endpoints in the future as
PVE::API2::Scan instead of PVE::API2::Storage::Scan since it will
contain endpoints to other modules (like qemu-server for pci/usb
scanning)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-11-19 15:03:12 +01:00
Alwin Antreich
6281777bd9 add_storage creates only one ceph storage entry
This patch removes the separate storage entries for CT & VM to the same
ceph pool. Instead only one entry is made as we can now map/unmap
volumes actively in pve-container.

Signed-off-by: Alwin Antreich <a.antreich@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-11-12 13:22:55 +01:00
Dietmar Maurer
2d2ed7ab53 fix wrong permissions for subscription info
workaround to keep the subscription popup on login even without 'Sys.Audit'
permissions but remove the subscription details in the GUI for unauthorized
users.
2018-10-30 11:37:00 +01:00
Thomas Lamprecht
3e1d7320d0 follow up: cleanup long line
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-10-24 13:24:11 +02:00
David Limbeck
1b3caf4f21 add wipe_disk option when destroying ceph disk
this allows the disk to be reused as ceph disk by zeroing the first 200M
of the destroyed disk. disks are iterated separately from partitions to
prevent duplicate wipes.

Signed-off-by: David Limbeck <d.limbeck@proxmox.com>
2018-10-24 11:46:13 +02:00
Thomas Lamprecht
5d4bb1f732 add pve-edk2-firmware to pveversion package list
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-10-23 13:34:26 +02:00
Dietmar Maurer
930d267849 use 'die' instead of 'raise_param_exc'
Because there is not 'config' parameter.
2018-10-08 13:32:03 +02:00
Alexandre Derumier
cacd7547ad API2 : Network : add network config reload
This add a new api to online reload networking configuration
with ifupdown2.

This work with native ifupdown2 modules, as ifupdown2 have
interface dependency relationships.

Some specific interfaces options can't be reloaded online
(because kernel don't implement it), it this case, we ifdown/ifup
theses interfaces. (mainly vxlan interfaces options)
2018-10-08 13:32:03 +02:00
Dominik Csapak
820d0458e7 add /node/{NODE}/hosts API Call
to get and set the content of /etc/hosts

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-09-14 11:47:03 +02:00
Wolfgang Link
29f633a8b1 pveceph: remove 'btrfs' as fstype for new OSDs
btrfs is deprecated since Luminous and it will no more be tested.

If btrfs is used, you have to add an extra parameter to ceph.conf
to allow ceph-disk to activate btrfs OSD's.
In our default config this is not the case.

From Luminous release note [1]:

"We no longer test the FileStore ceph-osd backend in combination with
btrfs. We recommend against using btrfs. If you are using
btrfs-based OSDs and want to upgrade to luminous you will need to
add the follwing to your ceph.conf:

enable experimental unrecoverable data corrupting features = btrfs
The code is mature and unlikely to change, but we are only
continuing to test the Jewel stable branch against btrfs. We
recommend moving these OSDs to FileStore with XFS or BlueStore."

[1] https://ceph.com/releases/v12-2-0-luminous-released/
2018-08-31 08:15:43 +02:00
Dominik Csapak
47f8655333 fixe return values in /cluster/resources
openvz is deprecated but can still be a return value
maxcpu can be a real number (e.g., for CT if cpulimit is 1.5 and
cores is not set), and may not be an integer

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-08-20 11:31:53 +02:00
Dominik Csapak
73981e3937 fix #1828: check if targetnode exists before starting mass migration
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-08-13 09:00:54 +02:00
Dietmar Maurer
7fa666d299 pvenode: use print_api_result to print acme account information 2018-07-26 13:09:08 +02:00
Dietmar Maurer
bed5fdfcc9 use new timestamp renderer for /nodes/<nodename>/time
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2018-07-11 11:27:13 +02:00
Dietmar Maurer
f57cbe5d0b PVE/API2/Nodes.pm: document return properties for cluster node list.
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2018-07-10 14:16:23 +02:00
Thomas Lamprecht
b66c604ef2 fixup: s/destriction/description/
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-07-10 14:16:23 +02:00
Dietmar Maurer
fc6c0fddb2 PVE/API2/Cluster.pm - document return properties for cluster resource list.
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2018-07-10 13:23:28 +02:00
Dominik Csapak
20663182b4 whitespace fix
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-06-29 10:31:23 +02:00
Dominik Csapak
db354940fd task log: set default in the api call
we have the defaults documented here, so set them here too
otherwise if the default change in PVE::Tools, we probably forget to
update the api description

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-06-29 10:31:23 +02:00
Dominik Csapak
f0b87b4c28 node task list: set the defaults better
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-06-29 10:31:23 +02:00
Dominik Csapak
7419faa48c add more api schema information for node task list and log
this makes for a better documentation

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-06-29 10:31:23 +02:00
Dominik Csapak
c6bb589141 startall: refactor and fix error message
for vms, it showed:
Starting VM 100 failed: status

instead of showing the actual status

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-06-27 10:52:10 +02:00
Dominik Csapak
c93bc1a1de ACMEv2 order "ready" status update
since letsencrypt updates their implementation to the ACMEv2 spec [1],
we should correctly parse the order status

1: https://community.letsencrypt.org/t/acmev2-order-ready-status/62866

note that we (for now) try to be compatbile to both versions,
with and without ready state, this can be changed when all letsencrypt
apis have changed

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-06-25 10:42:17 +02:00
Thomas Lamprecht
5e44c7e114 api/tasks: explicit import raise_param_exc
we inherited the import from PVE::RESTHandler but may want to get rid
of it there. So explicitly import it here.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-06-18 11:07:46 +02:00
Dominik Csapak
16e393ab22 let all users retrieve the directories and tos for acme
else all non-root users get an empty dropdown box for the directories
and get no feedback why that is

with this, they can select it, but ultimately get an api error if the
permissions are not sufficient

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-06-04 17:34:53 +02:00
Dominik Csapak
bed7626a5f api/acme: fallback to default for account name parameter
We defined 'default' as fallback default value for the optional
pve-acme-account-name standard option but did not honored that.

Thus we got a perl error ($account_name not defined) if we did not
passed a name. Fix that by actually falling back to 'default' in this
case.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-06-04 17:33:51 +02:00
Dominik Csapak
3d0fcc467a correct node free calculation
avail - used is wrong
total - used = free

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-05-14 11:54:16 +02:00
Fabian Grünbichler
036475f89a add certificates API endpoints
to allow retrieval of certificate information, and uploading or removing
of custom certificate files.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2018-05-02 11:34:52 +02:00
Fabian Grünbichler
9945a5018e add ACME certificate API endpoints
for creating/ordering a new certificate and renewing respectively
revoking an existing one.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2018-05-02 11:34:52 +02:00
Fabian Grünbichler
5c3fd6ace6 add ACME account API endpoints
for registering, updating, refreshing and deactiving a PVE-managed ACME
account, as well as for retrieving the (optional, but required if
available) terms of service of the ACME API provider / CA.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2018-05-02 11:34:52 +02:00
Fabian Grünbichler
c4f78bb7c6 add node configuration file and API
this currently only contains a description and the node-specific ACME
configuration, but I am sure we can find other goodies to put there.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2018-05-02 11:34:52 +02:00