[pbs-devel] [PATCH proxmox-backup] api2/node/services: Handle optional services and expose unit-state

Christoph Heiss c.heiss at proxmox.com
Thu Dec 15 11:30:11 CET 2022


On 12/15/22 10:29, Wolfgang Bumiller wrote:
> On Wed, Dec 14, 2022 at 10:42:59AM +0100, Christoph Heiss wrote:
>> .. in the same way the PVE api does, esp. regarding the logic to handle
>> oneshot and missing services.
>>
>> This then allows re-using the GUI parts from there as well, so that the
>> services page in PVE and PBS looks the same.
>>
>> Signed-off-by: Christoph Heiss <c.heiss at proxmox.com>
>> ---
>>   src/api2/node/services.rs | 21 ++++++++++++++++++++-
>>   1 file changed, 20 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/api2/node/services.rs b/src/api2/node/services.rs
>> index 0cc1857e..534c41e8 100644
>> --- a/src/api2/node/services.rs
>> +++ b/src/api2/node/services.rs
>> @@ -76,12 +76,27 @@ fn get_full_service_state(service: &str) -> Result<Value, Error> {
>>   fn json_service_state(service: &str, status: Value) -> Value {
>>       if let Some(desc) = status["Description"].as_str() {
>>           let name = status["Name"].as_str().unwrap_or(service);
>> -         let state = status["SubState"].as_str().unwrap_or("unknown");
>> +
>> +         let state = if status["Type"] == "oneshot" && status["SubState"] == "dead" {
>> +             &status["Result"]
> 
> Reading the perl equivalent, if we end up here but `Result` does not
> exist we'd see 'dead' in perl as it falls back to SubState (which at
> this point is known to be 'dead'), while we'd show 'unknown' in this
> case from the 'unwrap_or' below.
> Not sure if this can happen though?

Not sure either, but if it is a finished one-shot service, systemd
*should* always provide a result. That's IMHO a very reasonable
assumption and was my thought while working on it too.

Playing a bit with `systemctl show` and looking at some services, it
really seems that the Result property is always present, even for e.g.
non-existing services.

But if you want, I can send a v2 and add the fallback to SubState here
as well, to align it with the Perl equivalent.

>> [..]
>> -- 
>> 2.30.2





More information about the pbs-devel mailing list