Commit Graph

1968 Commits

Author SHA1 Message Date
Thomas Lamprecht
80cb7dda78 drop local hosted sencha-touch source, depend on libjs-sencha-touch
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-05-28 18:37:59 +02:00
Thomas Lamprecht
8829bad31f pveproxy: sort base dir mappings
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-05-28 18:25:34 +02:00
Thomas Lamprecht
6219f6c898 pveproxy: fix detecting mobile if enforced
Fixes: f16342f37 ("proxy: cleanup getting index method")
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-05-28 18:25:24 +02:00
Thomas Lamprecht
f16342f37e proxy: cleanup getting index method
- improve variable definition/use locality
- avoid some if's for some (mostly boolean) assignments, just use an
  expression

As long as we don't go overboard with code golfing it to extremely
terse, shorter code is always more readable, especially if
definition/use happens not dozens of lines apart.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-04-22 09:47:30 +02:00
Thomas Lamprecht
919cfa29e1 proxy: sort directory registration calls
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-04-18 08:21:28 +02:00
Thomas Lamprecht
bc9172758c proxy: group and sort use statements
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-04-18 08:20:51 +02:00
Fiona Ebner
16f3482b34 api: ceph: mon create: remove superfluous verification call
The pve_verify_cidr{,v4,v6} functions were originally intended for
the /etc/network/interfaces API endpoints and thus are a bit
restrictive. For example, as reported in the community forum[0],
pve_verify_cidr() does not consider '0::/0' and '0::/1' to be valid.

The error message in this scenario being
> value does not look like a valid CIDR network
is also confusing, as the first thought of users will be that it comes
from the passed-in monitor address.

The public networks are not written here and read from the Ceph config
and via a RADOS mon command, so no need to try and verify them. If
something really would go wrong during parsing, the
get_local_ip_from_cidr() call would complain afterwards.

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

Suggested-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-04-12 13:26:49 +02:00
Wolfgang Bumiller
3bd90e5223 api: description for 'id' property in /cluster/resources
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-03-29 11:01:54 +02:00
Lukas Wagner
3e441c505f pvereport: add date -R to general system info section
Sometimes it can be quite useful to know when exactly a system report
was generated. Adds the following output quite prominently in the
general system info section:

 # date -R
 Thu, 23 Feb 2023 16:21:12 +0100

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-03-27 15:30:12 +02:00
Fiona Ebner
ea659be66d api: apt: versions: also list Proxmox libraries for interfacing with Rust
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-03-21 14:49:42 +01:00
Fabian Grünbichler
178fb4fe2d replication: fix uninitalized warning
if a job has no schedule and is executed via "Schedule now" but fails, the
following will be printed to journal/syslog:

Mar 21 13:05:01 host02 pvescheduler[203343]: send/receive failed, cleaning up snapshot(s)..
Mar 21 13:05:01 host02 pvescheduler[203343]: 100-0: got unexpected replication job error - command 'set -o pipefail && pvesm export local-zfs:vm-100-disk-0 zfs - -with-snapshots 1 -snapshot __replicate_100-0_1679400300__ | /usr/bin/ssh -e none -o 'BatchMode=yes' -o 'HostKeyAlias=host03' root@10.0.74.3 -- pvesm import local-zfs:vm-100-disk-0 zfs - -with-snapshots 1 -snapshot __replicate_100-0_1679400300__ -allow-rename 0' failed: exit code 255
Mar 21 13:05:01 host02 pvescheduler[203343]: Use of uninitialized value in concatenation (.) or string at /usr/share/perl5/PVE/API2/Replication.pm line 107.

defaulting to the fallback schedule '*/15' makes the spurious warning go away.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2023-03-21 14:49:12 +01:00
Thomas Lamprecht
4987947510 api: apt versions: report the version of the proxmox-kernel-helper too
as optional package for now

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-21 13:45:34 +01:00
Thomas Lamprecht
ff472daefb api: apt versions: sort package list in code too
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-21 13:44:59 +01:00
Thomas Lamprecht
9c7c61d06c api: ceph cfg: drop double definition of permission property for index
Reported-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-20 15:34:46 +01:00
Aaron Lauterer
26cf20bc0f api: ceph: add ceph/cfg path, deprecate ceph/config and ceph/configdb
Consolidating the different config paths lets us add more as needed
without polluting our API with too many 'configxxx' endpoints.

The config and configdb paths are renamed under the ceph/cfg path:
* config -> raw (returns the ceph.conf file as is)
* configdb -> db (returns the ceph config db contents)

The old paths are still available and need to be dropped at some point.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by:  Dominik Csapak <d.csapak@proxmox.com>
2023-03-20 15:31:04 +01:00
Aaron Lauterer
a066500123 pveceph: adapt to new Pool module
The API::Ceph::Pools module is deprecated. Use the new API::Ceph::Pool
(singular) module.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by:  Dominik Csapak <d.csapak@proxmox.com>
2023-03-20 15:31:04 +01:00
Aaron Lauterer
b2e005d76a api: ceph: deprecate pools in favor of pool
/nodes/{node}/ceph/pools/{pool} returns the pool details right away on a
GET.  This makes it bad practice to add additional sub API endpoints.

By deprecating it and replacing it with /nodes/{node}/ceph/pool/{pool}
(singular instead of plural) we can turn that into an index GET
response, making it possible to expand it more in the future.

The GET call returning the pool details is moved into
/nodes/{node}/ceph/pool/{pool}/status

The code in the new Pool.pm is basically a copy of Pools.pm to avoid
a close coupling with the old code as it is possible that it will divert
until we can entirely remove the old code.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by:  Dominik Csapak <d.csapak@proxmox.com>
2023-03-20 15:31:04 +01:00
Aaron Lauterer
e907f822d7 api ceph osd: add OSD index, metadata and lv-info
To get more details for a single OSD, we add two new endpoints:
* nodes/{node}/ceph/osd/{osdid}/metadata
* nodes/{node}/ceph/osd/{osdid}/lv-info

The {osdid} endpoint itself gets a new GET handler to return the index.

The metadata one provides various metadata regarding the OSD.

Such as
* process id
* memory usage
* info about devices used (bdev/block, db, wal)
    * size
    * disks used (sdX)
    ...
* network addresses and ports used
...

Memory usage and PID are retrieved from systemd while the rest can be
retrieved from the metadata provided by Ceph.

The second one (lv-info) returns the following infos for a logical
volume:
* creation time
* lv name
* lv path
* lv size
* lv uuid
* vg name

Possible volumes are:
* block (default value if not provided)
* db
* wal

'ceph-volume' is used to gather the infos, except for the creation time
of the LV which is retrieved via 'lvs'.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by:  Dominik Csapak <d.csapak@proxmox.com>
2023-03-15 18:24:27 +01:00
Fiona Ebner
6aec456504 api: node: bulk actions: allow when user has permission for each guest
Users with permissions for some guests can already start a task for
each sequentially.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-03-15 18:21:56 +01:00
Stefan Sterz
28a93d3ed1 pveproxy/template: switch to using the "auto" theme per default
the auto theme uses media queries to detect a users preferred theme,
switch to using it per default instead of the light theme.

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
2023-03-14 15:11:42 +01:00
Thomas Lamprecht
e07c055df4 revert "fix #4333: redirect API handler output to STDERR"
Redirecting stdout is not a feasible approach, as that also affects
all run_commands and other command executions/forks done by the API
handler, and thus breaks parsing outputs of such command executions
in the API handlers.

We plan to add a `--result-fd` option instead, allowing users to pass
their own file, open FD or named pipe to the pvesh, so that they can
process the output in streaming or in full afterward afterwards.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-14 11:21:29 +01:00
Thomas Lamprecht
5ea98762aa pvesh: don't bloat the code on comments
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-11 18:10:09 +01:00
Fabian Grünbichler
89fba14715 fix #4333: redirect API handler output to STDERR
otherwise, print/warn statements by the API endpoint are included in the
output, which breaks JSON parsing in case of output-format == json*.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2023-03-11 18:08:00 +01:00
Dominik Csapak
2f4105013b api: return missing 'hardware' entry in node endpoint index
The 'hardware' entry was missing there. While interfacing with it
works, it will not show up during CLI auto completion and in the HTML
debug view (/api2/html/) if not listed here in the API directory
index.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-03-11 17:57:02 +01:00
Stefan Sterz
5137b16fd2 pveproxy/template: add support for switching themes
load the dark theme only if requested through a cookie, also adds
support for the "auto" theme that uses the dark theme based on a
media query.

this requires a bump of the widget toolkit so the dark-theme css file
is available.

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
2023-03-08 17:55:41 +01:00
Aaron Lauterer
c1eef1f4f7 report: add ceph health detail
This gives us more detailed infos about the problems Ceph currently has.
It is the last command because if PGs have issues, the list can be quite
long. Therefore, we want it at the end of the report.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2023-02-21 17:25:38 +01:00
Aaron Lauterer
c4368cf6d6 ceph osd: return PGs per OSD and show in UI
By switching from 'ceph osd tree' to the 'ceph osd df tree' mon API
equivalent , we get the same data structure with more information per
OSD. One of them is the number of PGs stored on that OSD.

The number of PGs per OSD is an important number, for example when
trying to figure out why the performance is not as good as expected.
Therefore, adding it to the OSD overview visible by default should
reduce the number of times, one needs to access the CLI.

Comparing runtime cost on a 3 node ceph cluster with 4 OSDs each doing 50k
iterations gives:

               Rate osd-df-tree    osd-tree
osd-df-tree  9141/s          --        -25%
osd-tree    12136/s         33%          --

So, while definitively a bit slower, but it's still in the µs range,
and as such below HTTP in TLS in TCP connection setup for most users,
so worth the extra useful information.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
 [ TL: slight rewording of subject and add benchmark data ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-15 10:16:50 +01:00
Max Carrara
0fb89b4a6e fix #4335: report: add datacenter.cfg to output
Includes the contents of /etc/pve/datacenter.cfg
in the cluster section.

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
2023-02-14 10:27:02 +01:00
Stefan Sterz
31746f261a fix #4521: api/tasks: replace upid as filename for task log downloads
previously the upid would just be used without a file extension when
downloading a task log. this lead to rather strange filenames that
appeared unfamiliar to users as the upid is not very prevalent in the
gui. set a proper file name based on the node name, worker type and a
time stamp instead. also add the ".log" file extension to indicate
that these files contain logs.

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
2023-02-09 17:18:52 +01:00
Thomas Lamprecht
a689d3c04c api apt: fix spelling in hash to avoid undef access warnings
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-02 08:42:12 +01:00
Thomas Lamprecht
592635817e api apt: support getting changelog of backports packages
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-01 12:27:29 +01:00
Thomas Lamprecht
ef2c6453ac api apt: code/style cleanup in changelog endpoint
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-01 12:25:42 +01:00
Thomas Lamprecht
913d893364 api apt: recduce indentation in package status update sub
best viewed with `-w` flag

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-01 12:21:54 +01:00
Thomas Lamprecht
a8cac426df api apt: code/style cleanup getting changelog URL
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-02-01 12:20:28 +01:00
Leo Nunner
2bbfac1f45 fix #4481: fetch changelogs for any Proxmox repository
This patch fixes the issue that when the user supplied any non-standard
repositories, the changelogs often wouldn't load. For example, providing
both pve-no-subscription and pbs-no-subscription broke the changelog
API, since the URL built for pbs-no-subscription was invalid.

Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
2023-01-31 18:03:26 +01:00
Moayad Almalat
7d8a9a99fc fix #3037: include the split_list to shell_qoute
Based to the suggestion of Wolfgang, in regard to `split_list()`,
 I converted the `split_list()` to `split(/\0/, $param->{$key});`
 this will split the `$param->{$key}` null characters and push each
 element to the `$args` array along with the key value.

 changes since v1:
 * get rid of the `use PVE::Tools qw(split_list);` since not need it anymore.
 * replace the split_list to split(/\0/).

Signed-off-by: Moayad Almalat <m.almalat@proxmox.com>
2023-01-25 09:30:13 +01:00
Fiona Ebner
118f9076cf api: apt: versions: add proxmox-mail-forward to package list
Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-01-18 11:06:43 +01:00
Thomas Lamprecht
08d251ef2b api: ceph metadata: rename instance placeholder to id in return schema
It's a bit more commonly used for such identifier

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-16 16:32:16 +01:00
Aaron Lauterer
ee6ec73ba9 api: ceph: metadata: update return schema
This API endpoint returns a big nested schema. This patch adds a mostly
complete description.

For the actual service instance return schema, we include commonly used
and important properties. It will usually return more. What exactly
depends on the Ceph service type.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2023-01-16 14:32:00 +01:00
Aaron Lauterer
b62ba85ad7 api: ceph: update return schemas
to include a more complete description of the returned data.
Sort properties in alphabetical order if the list is longer.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2023-01-16 14:32:00 +01:00
Thomas Lamprecht
853ce1ea65 fixup! api: node stopall: expose setting the task timeout as endpoint parameter 2023-01-14 17:41:04 +01:00
Thomas Lamprecht
1154329312 api: node stopall: expose setting force-stop behavior
So that one can really decide if this is a shutdown or an actual
stop.

partially related to #4194

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-14 17:41:04 +01:00
Thomas Lamprecht
8f063fbc7f api: node stopall: expose setting the task timeout as endpoint parameter
Note that this changes the lower timeout of 60s for CTs also to 180s
like VM always used; besides that there's not much gained making that
distinction there was never a really good argument for this.

partially related to #4194

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-14 17:41:04 +01:00
Thomas Lamprecht
b27ebcadb8 api: nodes: move variable definition closer to use site
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-14 17:41:04 +01:00
Thomas Lamprecht
f77faab20a api: nodes: code style/indentation fixes
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-14 17:41:04 +01:00
Matthias Heiserer
136f5724be API: ceph: fix typo in permissions
With Sys.Audit being spelled wrong, this call always failed

Signed-off-by: Matthias Heiserer <m.heiserer@proxmox.com>
2023-01-13 12:39:40 +01:00
Thomas Lamprecht
709065a63f api: task download: improve code/comment locallity slightly
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-04 14:38:19 +01:00
Thomas Lamprecht
2ebba46720 api: task download: name clashing params explicit
we might add other ones that might be used together with the
`download` one, so rather be explicit on communicating what we check.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-04 14:37:08 +01:00
Thomas Lamprecht
627903257b api: task download: avoid useless intermediate variable
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-01-04 14:36:47 +01:00
Daniel Tschlatscher
aa73246bd4 make task log downloadable in the PVE manager backend
The read_tasklog API call now stream the whole log file if the query
parameter 'download' is set to true.
This is done in preparation for the task log download button to be
added in the TaskViewer.

Signed-off-by: Daniel Tschlatscher <d.tschlatscher@proxmox.com>
Tested-by: Stefan Sterz <s.sterz@proxmox.com>
Reviewed-by: Stefan Sterz <s.sterz@proxmox.com>
2023-01-04 14:32:11 +01:00