From: Marcin Haba Date: Mon, 29 Jan 2024 14:42:52 +0000 (+0100) Subject: baculum: Add jobstatus filter to objects overview endpoint X-Git-Tag: Beta-15.0.1~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=914e72ceb2fdb7bc9e193354ef5c706f56ff5eaf;p=thirdparty%2Fbacula.git baculum: Add jobstatus filter to objects overview endpoint --- diff --git a/gui/baculum/protected/API/Pages/API/ObjectsOverview.php b/gui/baculum/protected/API/Pages/API/ObjectsOverview.php index c1759b096..202efe105 100644 --- a/gui/baculum/protected/API/Pages/API/ObjectsOverview.php +++ b/gui/baculum/protected/API/Pages/API/ObjectsOverview.php @@ -46,7 +46,7 @@ class ObjectsOverview extends BaculumAPIServer { $objectstatus = $this->Request->contains('objectstatus') && $misc->isValidState($this->Request['objectstatus']) ? $this->Request['objectstatus'] : null; $jobname = $this->Request->contains('jobname') && $misc->isValidName($this->Request['jobname']) ? $this->Request['jobname'] : null; $jobids = $this->Request->contains('jobids') && $misc->isValidIdsList($this->Request['jobids']) ? explode(',', $this->Request['jobids']) : []; - $jobstatus = $this->Request->contains('jobstatus') && $misc->isValidState($this->Request['jobstatus']) ? $this->Request['jobstatus'] : null; + $jobstatus = $this->Request->contains('jobstatus') && $this->Request['jobstatus'] ? $this->Request['jobstatus'] : null; $client = $this->Request->contains('client') && $misc->isValidName($this->Request['client']) ? $this->Request['client'] : ''; $fileset = $this->Request->contains('fileset') && $misc->isValidName($this->Request['fileset']) ? $this->Request['fileset'] : ''; $joberrors = null; @@ -175,11 +175,22 @@ class ObjectsOverview extends BaculumAPIServer { ]; } } + if (!empty($jobstatus)) { - $general_params['Job.JobStatus'] = []; - $general_params['Job.JobStatus'][] = [ - 'vals' => $jobstatus - ]; + $jobstatuses = array_keys($misc->getJobState()); + $sts = str_split($jobstatus); + $js_counter = 0; + for ($i = 0; $i < count($sts); $i++) { + if (in_array($sts[$i], $jobstatuses)) { + if (!key_exists('Job.JobStatus', $general_params)) { + $general_params['Job.JobStatus'] = []; + $general_params['Job.JobStatus'][$js_counter] = [ + 'operator' => 'IN' + ]; + } + $general_params['Job.JobStatus'][$js_counter]['vals'][] = $sts[$i]; + } + } } // Scheduled time range diff --git a/gui/baculum/protected/API/openapi_baculum.json b/gui/baculum/protected/API/openapi_baculum.json index 3b58d33f5..65b3bebab 100644 --- a/gui/baculum/protected/API/openapi_baculum.json +++ b/gui/baculum/protected/API/openapi_baculum.json @@ -9324,6 +9324,15 @@ "type": "string" } }, + { + "name": "jobstatus", + "in": "query", + "required": false, + "description": "Job status ex: 'T', 'e'. Possible providing multiple values like 'Te' or 'Efe'. Non-existing job status letters are ignored.", + "schema": { + "type": "string" + } + }, { "name": "fileset", "in": "query",