From: Marcin Haba Date: Thu, 9 Nov 2023 10:11:30 +0000 (+0100) Subject: baculum: Add type parameter to clients endpoint X-Git-Tag: Beta-15.0.1~98 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27173d2c1b95bfcf57dd17b440a3111b66324e1a;p=thirdparty%2Fbacula.git baculum: Add type parameter to clients endpoint --- diff --git a/gui/baculum/protected/API/Modules/ClientManager.php b/gui/baculum/protected/API/Modules/ClientManager.php index bd5554527..be5e2d7ea 100644 --- a/gui/baculum/protected/API/Modules/ClientManager.php +++ b/gui/baculum/protected/API/Modules/ClientManager.php @@ -33,6 +33,13 @@ use Prado\Data\ActiveRecord\TActiveRecordCriteria; */ class ClientManager extends APIModule { + + /** + * Client types + */ + const CLIENT_TYPE_REACHABLE = 'reachable'; + const CLIENT_TYPE_UNREACHABLE = 'unreachable'; + /** * Result modes. */ diff --git a/gui/baculum/protected/API/Pages/API/Clients.php b/gui/baculum/protected/API/Pages/API/Clients.php index eaffe5734..829ff0863 100644 --- a/gui/baculum/protected/API/Pages/API/Clients.php +++ b/gui/baculum/protected/API/Pages/API/Clients.php @@ -42,6 +42,7 @@ class Clients extends BaculumAPIServer { $plugin = $this->Request->contains('plugin') && $misc->isValidAlphaNumeric($this->Request['plugin']) ? $this->Request['plugin'] : ''; $os = $this->Request->contains('os') && $misc->isValidNameExt($this->Request['os']) ? $this->Request['os'] : ''; $version = $this->Request->contains('version') && $misc->isValidColumn($this->Request['version']) ? $this->Request['version'] : ''; + $type = $this->Request->contains('type') && $misc->isValidName($this->Request['type']) ? $this->Request['type'] : null; $mode = $this->Request->contains('overview') && $misc->isValidBooleanTrue($this->Request['overview']) ? ClientManager::CLIENT_RESULT_MODE_OVERVIEW : ClientManager::CLIENT_RESULT_MODE_NORMAL; $order_by = $this->Request->contains('order_by') && $misc->isValidColumn($this->Request['order_by']) ? $this->Request['order_by']: null; $order_direction = $this->Request->contains('order_direction') && $misc->isValidOrderDirection($this->Request['order_direction']) ? $this->Request['order_direction']: null; @@ -144,8 +145,8 @@ class Clients extends BaculumAPIServer { 'vals' => '' ]; $clients_reached = $this->getModule('client')->getClients( - $limit, - $offset, + (is_null($type) || $type === ClientManager::CLIENT_TYPE_REACHABLE ? $limit : 0), + (is_null($type) || $type === ClientManager::CLIENT_TYPE_REACHABLE ? $offset : 0), $sort, $params, $jobs, @@ -159,8 +160,8 @@ class Clients extends BaculumAPIServer { 'vals' => '' ]; $clients_unreached = $this->getModule('client')->getClients( - $limit, - $offset, + (is_null($type) || $type === ClientManager::CLIENT_TYPE_UNREACHABLE ? $limit : 0), + (is_null($type) || $type === ClientManager::CLIENT_TYPE_UNREACHABLE ? $offset : 0), $sort, $params, $jobs, diff --git a/gui/baculum/protected/API/openapi_baculum.json b/gui/baculum/protected/API/openapi_baculum.json index 9cf84a098..4a28b6c52 100644 --- a/gui/baculum/protected/API/openapi_baculum.json +++ b/gui/baculum/protected/API/openapi_baculum.json @@ -471,6 +471,16 @@ { "$ref": "#/components/parameters/Offset" }, + { + "name": "type", + "in": "query", + "required": false, + "description": "Client type (reachable/unreachable). It determines for wich type will be applied offset and limit. This option has meaning only for overview mode (overview=1). For other modes it is ignored. Please note, providing one type does not cause that other types will not be listed, but only offset and limit criteria will be applied for selected type.", + "schema": { + "type": "string", + "enum": ["reachable", "unreachable"] + } + }, { "name": "name", "in": "query",