Skip to content

Commit 8351543

Browse files
committed
#ITC-3482 Dashboards: Filter Host and Service status overview by container
1 parent 5f55ac0 commit 8351543

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed

src/Model/Table/HostsTable.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
use Cake\Utility\Hash;
4444
use Cake\Validation\Validator;
4545
use itnovum\openITCOCKPIT\Cache\ObjectsCache;
46+
use itnovum\openITCOCKPIT\Core\FileDebugger;
4647
use itnovum\openITCOCKPIT\Core\HostConditions;
4748
use itnovum\openITCOCKPIT\Core\ValueObjects\User;
4849
use itnovum\openITCOCKPIT\Database\PaginateOMat;
@@ -3241,7 +3242,21 @@ public function getHostIdsBySelectedStatusExtendedStatusengine3($MY_RIGHTS, $con
32413242
$query->where([
32423243
'HostsToContainersSharing.container_id IN' => $MY_RIGHTS
32433244
]);
3245+
if (!empty($conditions['Container']['_ids'])) {
3246+
$query->where([
3247+
'HostsToContainersSharing.container_id IN' => $conditions['Container']['_ids']
3248+
]);
3249+
}
3250+
} else if (!empty($conditions['Container']['_ids'])) {
3251+
$query->innerJoin(['HostsToContainersSharing' => 'hosts_to_containers'], [
3252+
'HostsToContainersSharing.host_id = Hosts.id'
3253+
]);
3254+
$containerIds = explode(',', $conditions['Container']['_ids']);
3255+
$query->where([
3256+
'HostsToContainersSharing.container_id IN' => $containerIds
3257+
]);
32443258
}
3259+
32453260
$where = [];
32463261

32473262
$where['Hoststatus.current_state'] = $conditions['Hoststatus']['current_state'];

src/Model/Table/ServicesTable.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3547,6 +3547,19 @@ public function getServiceIdsBySelectedStatusExtendedStatusengine3($MY_RIGHTS, $
35473547
$query->where([
35483548
'HostsToContainersSharing.container_id IN' => $MY_RIGHTS
35493549
]);
3550+
if (!empty($conditions['Container']['_ids'])) {
3551+
$query->where([
3552+
'HostsToContainersSharing.container_id IN' => $conditions['Container']['_ids']
3553+
]);
3554+
}
3555+
} else if (!empty($conditions['Container']['_ids'])) {
3556+
$query->innerJoin(['HostsToContainersSharing' => 'hosts_to_containers'], [
3557+
'HostsToContainersSharing.host_id = Hosts.id'
3558+
]);
3559+
$containerIds = explode(',', $conditions['Container']['_ids']);
3560+
$query->where([
3561+
'HostsToContainersSharing.container_id IN' => $containerIds
3562+
]);
35503563
}
35513564
$where = [];
35523565

src/itnovum/openITCOCKPIT/Core/Dashboards/HostStatusOverviewExtendedJson.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ class HostStatusOverviewExtendedJson extends DashboardJsonStandardizer {
5252
'state_older_than' => null,
5353
'state_older_than_unit' => 'MINUTE'
5454
],
55+
'Container' => [
56+
'_ids' => ''
57+
],
5558
'Hostgroup' => [
5659
'_ids' => ''
5760
]
@@ -62,6 +65,14 @@ class HostStatusOverviewExtendedJson extends DashboardJsonStandardizer {
6265
* @return array
6366
*/
6467
public function standardizedData($request = []) {
68+
if (isset($request['Container']['_ids']) && is_array($request['Container']['_ids'])) {
69+
$request['Container']['_ids'] = array_filter(
70+
$request['Container']['_ids'], function ($value) {
71+
return $value > 0;
72+
});
73+
// POST request to save to database
74+
$request['Container']['_ids'] = implode(',', $request['Container']['_ids']);
75+
}
6576
if (isset($request['Hostgroup']['_ids']) && is_array($request['Hostgroup']['_ids'])) {
6677
$request['Hostgroup']['_ids'] = array_filter(
6778
$request['Hostgroup']['_ids'], function ($value) {

src/itnovum/openITCOCKPIT/Core/Dashboards/ServiceStatusOverviewExtendedJson.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ class ServiceStatusOverviewExtendedJson extends DashboardJsonStandardizer {
5656
'keywords' => '',
5757
'not_keywords' => ''
5858
],
59+
'Container' => [
60+
'_ids' => ''
61+
],
5962
'Servicegroup' => [
6063
'_ids' => ''
6164
]
@@ -66,6 +69,14 @@ class ServiceStatusOverviewExtendedJson extends DashboardJsonStandardizer {
6669
* @return array
6770
*/
6871
public function standardizedData($request = []) {
72+
if (isset($request['Container']['_ids']) && is_array($request['Container']['_ids'])) {
73+
$request['Container']['_ids'] = array_filter(
74+
$request['Container']['_ids'], function ($value) {
75+
return $value > 0;
76+
});
77+
// POST request to save to database
78+
$request['Container']['_ids'] = implode(',', $request['Container']['_ids']);
79+
}
6980
if (isset($request['Servicegroup']['_ids']) && is_array($request['Servicegroup']['_ids'])) {
7081
$request['Servicegroup']['_ids'] = array_filter(
7182
$request['Servicegroup']['_ids'], function ($value) {

0 commit comments

Comments
 (0)