Skip to content

Commit

Permalink
fix: resolve review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
raviks789 committed Oct 23, 2024
1 parent e366e1d commit 500d8f5
Showing 1 changed file with 9 additions and 63 deletions.
72 changes: 9 additions & 63 deletions library/Icingadb/Widget/Detail/ObjectDetail.php
Original file line number Diff line number Diff line change
Expand Up @@ -658,6 +658,7 @@ protected function createAffectedObjects()
}

$affectedObjects = DependencyNode::on($this->getDb())
->limit(5)
->with([
'redundancy_group',
'redundancy_group.state',
Expand All @@ -671,69 +672,14 @@ protected function createAffectedObjects()
'service.state.last_comment',
'service.host',
'service.host.state'
])->orderBy([
'host.state.severity' => SORT_DESC,
'host.state.last_state_change' => SORT_DESC,
'service.state.severity' => SORT_DESC,
'service.state.last_state_change' => SORT_DESC,
'service.host.state.severity' => SORT_DESC,
'service.host.state.last_state_change' => SORT_DESC,
'redundancy_group.state.last_state_change' => SORT_DESC
]);

if ($this->object instanceof Host) {
$affectedObjects
->filter(Filter::equal('parent.host.id', $this->object->id))
//TODO: only workaround, remove once https://github.com/Icinga/ipl-orm/issues/76#issuecomment-2370629031
// is fixed
->on($affectedObjects::ON_SELECT_ASSEMBLED, function (Select $select) {
$subQuery = $select->getWhere()[1][0][1][0][1]['dependency_node.id IN (?)'];
$select->resetWhere();

$joins = $subQuery->getJoin();
$subQuery->resetJoin();

foreach ($joins as $join) {
$condition = $join[2];
if ($condition[1][0] === 'sub_host_dependency_node.host_id = sub_host.id') {
$condition[1][0] = sprintf(
'%s AND sub_host_dependency_node.service_id IS NULL',
$condition[1][0]
);
}

$subQuery->join($join[1], $condition);
}

$select->where(['dependency_node.id IN (?)' => $subQuery]);
});
} else {
$affectedObjects
->filter(Filter::equal('parent.service.id', $this->object->id))
//TODO: only workaround, remove once https://github.com/Icinga/ipl-orm/issues/76#issuecomment-2370629031
// is fixed
->on($affectedObjects::ON_SELECT_ASSEMBLED, function (Select $select) {
$subQuery = $select->getWhere()[1][0][1][0][1]['dependency_node.id IN (?)'];
$select->resetWhere();

$joins = $subQuery->getJoin();
$subQuery->resetJoin();

foreach ($joins as $join) {
$condition = $join[2];
if ($condition[1][0] === 'sub_service_dependency_node.service_id = sub_service.id') {
$condition[1][0] = sprintf(
'%s AND sub_service_dependency_node.host_id = sub_service.host_id',
$condition[1][0]
);
}

$subQuery->join($join[1], $condition);
}

$select->where(['dependency_node.id IN (?)' => $subQuery]);
});
}
])->filter(Filter::equal("parent.{$this->objectType}.id", $this->object->id))
->orderBy([
'host.state.severity',
'host.state.last_state_change',
'service.state.severity',
'service.state.last_state_change',
'redundancy_group.state.last_state_change'
], SORT_DESC);

$this->applyRestrictions($affectedObjects);

Expand Down

0 comments on commit 500d8f5

Please sign in to comment.