You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
6.1 KiB
156 lines
6.1 KiB
<?php declare(strict_types = 0);
|
|
/*
|
|
** Zabbix
|
|
** Copyright (C) 2001-2023 Zabbix SIA
|
|
**
|
|
** This program is free software; you can redistribute it and/or modify
|
|
** it under the terms of the GNU General Public License as published by
|
|
** the Free Software Foundation; either version 2 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program; if not, write to the Free Software
|
|
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
**/
|
|
|
|
|
|
class CServiceHelper {
|
|
|
|
public static function getAlgorithmNames(): array {
|
|
return [
|
|
ZBX_SERVICE_STATUS_CALC_MOST_CRITICAL_ONE => _('Most critical of child services'),
|
|
ZBX_SERVICE_STATUS_CALC_MOST_CRITICAL_ALL => _('Most critical if all children have problems'),
|
|
ZBX_SERVICE_STATUS_CALC_SET_OK => _('Set status to OK')
|
|
];
|
|
}
|
|
|
|
public static function getStatusRuleTypeOptions(): array {
|
|
return [
|
|
ZBX_SERVICE_STATUS_RULE_TYPE_N_GE => _s(
|
|
'If at least %2$s child services have %1$s status or above',
|
|
(new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER),
|
|
(new CSpan(_('N')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER)
|
|
),
|
|
ZBX_SERVICE_STATUS_RULE_TYPE_NP_GE => _s(
|
|
'If at least %2$s of child services have %1$s status or above',
|
|
(new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER),
|
|
(new CSpan(_('N%')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER)
|
|
),
|
|
ZBX_SERVICE_STATUS_RULE_TYPE_N_L => _s(
|
|
'If less than %2$s child services have %1$s status or below',
|
|
(new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER),
|
|
(new CSpan(_('N')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER)
|
|
),
|
|
ZBX_SERVICE_STATUS_RULE_TYPE_NP_L => _s(
|
|
'If less than %2$s of child services have %1$s status or below',
|
|
(new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER),
|
|
(new CSpan(_('N%')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER)
|
|
),
|
|
ZBX_SERVICE_STATUS_RULE_TYPE_W_GE => _s(
|
|
'If weight of child services with %1$s status or above is at least %2$s',
|
|
(new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER),
|
|
(new CSpan(_('W')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER)
|
|
),
|
|
ZBX_SERVICE_STATUS_RULE_TYPE_WP_GE => _s(
|
|
'If weight of child services with %1$s status or above is at least %2$s',
|
|
(new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER),
|
|
(new CSpan(_('N%')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER)
|
|
),
|
|
ZBX_SERVICE_STATUS_RULE_TYPE_W_L => _s(
|
|
'If weight of child services with %1$s status or below is less than %2$s',
|
|
(new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER),
|
|
(new CSpan(_('W')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER)
|
|
),
|
|
ZBX_SERVICE_STATUS_RULE_TYPE_WP_L => _s(
|
|
'If weight of child services with %1$s status or below is less than %2$s',
|
|
(new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER),
|
|
(new CSpan(_('N%')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER)
|
|
)
|
|
];
|
|
}
|
|
|
|
public static function formatStatusRuleType(int $type, int $new_status, int $number, int $status): string {
|
|
$status = self::getStatusNames()[$status];
|
|
|
|
switch ($type) {
|
|
case ZBX_SERVICE_STATUS_RULE_TYPE_N_GE:
|
|
$rule = _n(
|
|
'If at least %2$s child service has %1$s status or above',
|
|
'If at least %2$s child services have %1$s status or above',
|
|
new CTag('em', true, $status), new CTag('em', true, $number), $number
|
|
);
|
|
break;
|
|
case ZBX_SERVICE_STATUS_RULE_TYPE_NP_GE:
|
|
$rule = _s('If at least %2$s of child services have %1$s status or above',
|
|
new CTag('em', true, $status), new CTag('em', true, [$number, '%']), $number
|
|
);
|
|
break;
|
|
case ZBX_SERVICE_STATUS_RULE_TYPE_N_L:
|
|
$rule = _n(
|
|
'If less than %2$s child service has %1$s status or below',
|
|
'If less than %2$s child services have %1$s status or below',
|
|
new CTag('em', true, $status), new CTag('em', true, $number), $number
|
|
);
|
|
break;
|
|
case ZBX_SERVICE_STATUS_RULE_TYPE_NP_L:
|
|
$rule = _s('If less than %2$s of child services have %1$s status or below',
|
|
new CTag('em', true, $status), new CTag('em', true, [$number, '%']), $number
|
|
);
|
|
break;
|
|
case ZBX_SERVICE_STATUS_RULE_TYPE_W_GE:
|
|
$rule = _s('If weight of child services with %1$s status or above is at least %2$s',
|
|
new CTag('em', true, $status), new CTag('em', true, $number));
|
|
break;
|
|
case ZBX_SERVICE_STATUS_RULE_TYPE_WP_GE:
|
|
$rule = _s('If weight of child services with %1$s status or above is at least %2$s',
|
|
new CTag('em', true, $status), new CTag('em', true, $number).'%');
|
|
break;
|
|
case ZBX_SERVICE_STATUS_RULE_TYPE_W_L:
|
|
$rule = _s('If weight of child services with %1$s status or below is less than %2$s',
|
|
new CTag('em', true, $status), new CTag('em', true, $number));
|
|
break;
|
|
case ZBX_SERVICE_STATUS_RULE_TYPE_WP_L:
|
|
$rule = _s('If weight of child services with %1$s status or below is less than %2$s',
|
|
new CTag('em', true, $status), new CTag('em', true, $number).'%');
|
|
break;
|
|
default:
|
|
$rule = null;
|
|
}
|
|
|
|
return $rule !== null
|
|
? (new CObject(
|
|
[new CTag('em', true, self::getProblemStatusNames()[$new_status]), ' - ', $rule]
|
|
))->toString()
|
|
: '';
|
|
}
|
|
|
|
public static function getStatusNames(): array {
|
|
return [ZBX_SEVERITY_OK => _('OK')] + self::getProblemStatusNames();
|
|
}
|
|
|
|
public static function getProblemStatusNames(): array {
|
|
$status_names = [];
|
|
|
|
foreach (CSeverityHelper::getSeverities() as $severity) {
|
|
$status_names[$severity['value']] = $severity['label'];
|
|
}
|
|
|
|
return $status_names;
|
|
}
|
|
|
|
public static function getStatusPropagationNames(): array {
|
|
return [
|
|
ZBX_SERVICE_STATUS_PROPAGATION_AS_IS => _('As is'),
|
|
ZBX_SERVICE_STATUS_PROPAGATION_INCREASE => _('Increase by'),
|
|
ZBX_SERVICE_STATUS_PROPAGATION_DECREASE => _('Decrease by'),
|
|
ZBX_SERVICE_STATUS_PROPAGATION_IGNORE => _('Ignore this service'),
|
|
ZBX_SERVICE_STATUS_PROPAGATION_FIXED => _('Fixed status')
|
|
];
|
|
}
|
|
}
|