Commit Graph

2871 Commits

Author SHA1 Message Date
Wolfgang Bumiller
93686a9ad7 tools::daemon: fetch exe name in the beginning
We get the path to our executable via a readlink() on
"/proc/self/exe", which appends a " (deleted)" during
package reloads.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-06-22 10:31:54 +02:00
Wolfgang Bumiller
53e7e76b5f bump proxmox to 0.1.40-1
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-06-12 13:56:00 +02:00
Wolfgang Bumiller
2eaea4b9ea tools: add mmap helper
Mmap<T> acts like a slice of `T`s, inhereting its `Send` and
`Sync` traits

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-06-12 13:54:12 +02:00
Wolfgang Bumiller
3516c9e2ec AsHex Display helper
This way we can use
    println!("something: {}", AsHex(bytes));

without having to turn them into an allocated string first.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-06-12 11:18:41 +02:00
Dominik Csapak
50fa6045b3 api2/status: use new rrd::extract_cached_data
and drop the now unused extract_lists function

this also fixes a bug, where we did not add the datastore to the list at
all when there was no rrd data

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-06-10 13:31:16 +02:00
Dominik Csapak
11cb8cd008 rrd: move creation of serde value into api
there is now a 'extract_cached_data' which just returns
the data of the specified field, and an api function that converts
a list of fields to the correct serde value

this way we do not have to create a serde value in rrd/cache.rs
(makes for a better interface)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-06-10 13:31:14 +02:00
Dominik Csapak
9a860821e4 refactor time functions to tools
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-06-10 13:31:10 +02:00
Dominik Csapak
20ada7a08c rrd: add 'extract_lists'
this is an interface to simply get the Vec<Option<f64>> out of rrd
without going through serde values

we return a list of timestamps and a HashMap with the lists we could find
(otherwise it is not in the map)

if no lists could be extracted, the time list is also empty

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-06-09 12:19:06 +02:00
Wolfgang Bumiller
c927b5ebba add TtyOutpu helper and use it for read_password
This way read_password() will not write the prompt into
stdout if stdout was redirected into a file, but instead
opens `/dev/tty`.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-06-09 11:16:41 +02:00
Dietmar Maurer
620775d267 bump version to 0.1.39-1 2020-06-05 07:27:10 +02:00
Dominik Csapak
72974335a4 fix Permission::Privilege path check
when checking a path, we only pushed the components to the checked value
that would contain a parameter and not fixed ones

e.g. from the path components (with params datastore="foo")
["datastore", "{datastore}"]

only ["foo"] was given to the lookup_privs function
instead of ["datastore", "foo"]

this fixes an issue where e.g. a prune on /datastore/foo would fail
for a user that has the role DatastorePowerUser on /datastore (with
propagate) or /datastore/foo

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-06-05 07:24:15 +02:00
Dominik Csapak
2ca2559c94 add tests for check_api_permission
add tests for check_api_permission and many Permission combinations
this test fails for now and will be fixed with the next commit

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-06-05 07:14:50 +02:00
Thomas Lamprecht
4e33373ca1 typo fixes all over the place
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-30 16:39:08 +02:00
Dietmar Maurer
1fa3341d68 rrd: reduce io by saving data only once a minute 2020-05-29 09:16:13 +02:00
Dietmar Maurer
de2354bc3c bump version to 0.1.38-1 2020-05-28 09:51:42 +02:00
Dietmar Maurer
7b24c384b1 proxmox/src/tools/fs.rs: add additional helpers to get file contents 2020-05-28 09:49:45 +02:00
Dietmar Maurer
f42c189ee7 bump version toö 0.1.37-1 2020-05-26 12:55:04 +02:00
Dominik Csapak
60335cded0 proxmox: add string_as_base64 serde (de)serializer
this can be used to automatically convert string fields to base64

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-05-26 12:53:52 +02:00
Wolfgang Bumiller
c66fa6d8e1 bump proxmox to 0.1.36-1
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-05-25 12:12:07 +02:00
Wolfgang Bumiller
411e63ce29 procfs: iowait_percent fixup
Fix time delta calculation, and use old percentage when
querying more often than once a second.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-05-25 12:11:08 +02:00
Wolfgang Bumiller
438262b503 formatting fixup
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-05-25 11:12:08 +02:00
Wolfgang Bumiller
e412ffdd37 bump proxmox to 0.1.35-1
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-05-25 11:11:21 +02:00
Wolfgang Bumiller
293293aa9b procfs: add loadavg reader
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-05-25 11:08:07 +02:00
Wolfgang Bumiller
e2da4921f6 make CLOCK_TICKS public
The ProcFsStat type uses values which need to be scaled by
it, so it makes sense to have this be public.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-05-25 11:08:07 +02:00
Wolfgang Bumiller
e5953f683c procfs: add iowait_percent
The calculation for this is based on the pve code.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-05-25 11:08:07 +02:00
Wolfgang Bumiller
ce84d19f63 procfs: don't count guest and guest_nice times twice
See the following kernel code snippet from
kernel/sched/cputime.c's account_guest_time():

    /* Add guest time to cpustat. */
    if (task_nice(p) > 0) {
        cpustat[CPUTIME_NICE] += cputime;
        cpustat[CPUTIME_GUEST_NICE] += cputime;
    } else {
        cpustat[CPUTIME_USER] += cputime;
        cpustat[CPUTIME_GUEST] += cputime;
    }

So the old sum was wrong as some time frames were counted
double in the `total` value.

The data will likely still deviate from PVE, but we should
check by how much, as this version does seem more accurate.
We can still fix it to just use the same math as pve if it
seems off.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-05-25 11:07:39 +02:00
Dietmar Maurer
a76b0e3c09 src/rrd/rrd.rs: do not wrap error and return ErrorKind::NotFound 2020-05-25 10:30:04 +02:00
Dietmar Maurer
9ce21e005d src/rrd/cache.rs: display/log error when RRD load fails 2020-05-25 10:18:53 +02:00
Dietmar Maurer
207d0c7714 src/rrd/rrd.rs: store/verify magic number 2020-05-25 09:21:54 +02:00
Dietmar Maurer
bfc2f8b7a2 src/rrd/rrd.rs: implement DST_COUNTER 2020-05-25 08:14:30 +02:00
Dietmar Maurer
d261516f2d src/rrd/rrd.rs: correctly compute derived values
use f64 for time.
2020-05-25 07:02:04 +02:00
Dietmar Maurer
f4561029ba src/rrd/rrd.rs: implement DST_DERIVE 2020-05-24 19:02:35 +02:00
Dietmar Maurer
7acdec12e8 src/rrd/rrd.rs: restructure whole code 2020-05-24 16:51:28 +02:00
Dietmar Maurer
777f527603 src/rrd/rrd.rs: reduce size by using f64:NAN as UNKNOWN 2020-05-24 09:09:09 +02:00
Dietmar Maurer
fd2c16f704 src/rrd/rrd.rs: simplify an fix old value deletion 2020-05-24 06:44:06 +02:00
Dietmar Maurer
6357746f2e rrd: fix display interval, try to avoid numeric errors 2020-05-23 16:03:43 +02:00
Dietmar Maurer
69da9baf59 rrd: simplify code 2020-05-23 15:37:17 +02:00
Dietmar Maurer
e073e5c107 rrd: pack multiple rrd values into th estat list 2020-05-23 14:03:44 +02:00
Dietmar Maurer
1c0117790f add experimental rrd api to get cpu stats 2020-05-23 11:50:53 +02:00
Dietmar Maurer
5bc85d2d04 add simple rrd implementation 2020-05-23 10:42:48 +02:00
Dietmar Maurer
c5b2694a44 bump version to 0.1.34-1 2020-05-20 13:17:55 +02:00
Dominik Csapak
10012dcb17 add 'constnamemap' macro
to be able to define constant values but still have some mapping to
the name of it

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-05-20 13:16:17 +02:00
Dietmar Maurer
34d09a5d07 pumb version to 0.1.33-1 2020-05-20 06:26:35 +02:00
Dietmar Maurer
2f8a28f34c proxmox/src/api/section_config.rs: simplify code 2020-05-20 06:25:07 +02:00
Dominik Csapak
b1fd556f3b section_config: fixup fallback schema in parse
we also have to fallback to the id_schema of the section_config when
we parse it, not only on write

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-05-20 06:16:34 +02:00
Dietmar Maurer
456e6eaa0b bump version to 0.1.32 2020-05-19 09:51:38 +02:00
Dominik Csapak
2f039380d2 proxmox: section_config: add convert_to_typed_array
converts a parsed section config to an Vector of typed items

this way we can simply get a list of users from the user config

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-05-19 09:09:47 +02:00
Dominik Csapak
e7a5768e04 proxmox: section_config: add id_property to SectionConfigPlugin
if set in the SectionConfigPlugin, we set the given
field to the section_id for each entry

this way we can have e.g. the userid in the Struct and ObjectSchema,
without having to write it twice to the config but we are still getting
it when parsing the config

when a plugin does not specify an id_property, then the id_schema of
the SectionConfig will be used as fallback

also adds a test for this with multiple plugins

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-05-19 09:08:49 +02:00
Dietmar Maurer
3f633844fa depend on proxmox 0.1.31 - use Value to store result metadata 2020-05-18 09:57:35 +02:00
Dietmar Maurer
3283b4f25e bump version to 0.1.31-1 2020-05-18 09:50:37 +02:00