[pbs-devel] [PATCH proxmox-backup] api2/node/services: Handle optional services and expose unit-state
Wolfgang Bumiller
w.bumiller at proxmox.com
Thu Dec 15 10:29:27 CET 2022
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?
> + } else {
> + &status["SubState"]
> + }
> + .as_str()
> + .unwrap_or("unknown");
> +
> + let unit_state = if status["LoadState"] == "not-found" {
> + "not-found"
> + } else {
> + status["UnitFileState"].as_str().unwrap_or("unknown")
> + };
> +
> return json!({
> "service": service,
> "name": name,
> "desc": desc,
> "state": state,
> + "unit-state": unit_state,
> });
> }
>
> @@ -117,6 +132,10 @@ fn json_service_state(service: &str, status: Value) -> Value {
> type: String,
> description: "systemd service 'SubState'.",
> },
> + "unit-state": {
> + type: String,
> + description: "systemd service unit state.",
> + },
> },
> },
> },
> --
> 2.30.2
More information about the pbs-devel
mailing list