mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
WebUI - Alert Rule Editor: new notes field (#15631)
* add a new notes field to the rule editor. use a bigger text field for sql queries to avoid mistakes... * add api doc * allow notes field from the collection * add a sample notes to the collection * lint and db schema * unmix some schema changes from a nother PR * unmix schema update No°2 * unmix schema update No°3 - silly me * add strip_tags, minor optimisation, db default value * apply linting * db_schema empty '' as default * update db_schema.yaml * default value changed as 'BLOB, TEXT, GEOMETRY or JSON column 'notes' can't have a default value' * better keep the migration in 2023... * Update 2023_12_12_171400_alert_rule_note.php * Update create-alert-item.inc.php --------- Co-authored-by: PipoCanaja <38363551+PipoCanaja@users.noreply.github.com>
This commit is contained in:
@@ -1318,6 +1318,7 @@ function add_edit_rule(Illuminate\Http\Request $request)
|
||||
$interval = $data['interval'];
|
||||
$override_query = $data['override_query'];
|
||||
$adv_query = $data['adv_query'];
|
||||
$notes = $data['notes'];
|
||||
$delay_sec = convert_delay($delay);
|
||||
$interval_sec = convert_delay($interval);
|
||||
if ($mute == 1) {
|
||||
@@ -1355,10 +1356,10 @@ function add_edit_rule(Illuminate\Http\Request $request)
|
||||
}
|
||||
|
||||
if (is_numeric($rule_id)) {
|
||||
if (! (dbUpdate(['name' => $name, 'builder' => $builder, 'query' => $query, 'severity' => $severity, 'disabled' => $disabled, 'extra' => $extra_json], 'alert_rules', 'id=?', [$rule_id]) >= 0)) {
|
||||
if (! (dbUpdate(['name' => $name, 'builder' => $builder, 'query' => $query, 'severity' => $severity, 'disabled' => $disabled, 'extra' => $extra_json, 'notes' => $notes], 'alert_rules', 'id=?', [$rule_id]) >= 0)) {
|
||||
return api_error(500, 'Failed to update existing alert rule');
|
||||
}
|
||||
} elseif (! $rule_id = dbInsert(['name' => $name, 'builder' => $builder, 'query' => $query, 'severity' => $severity, 'disabled' => $disabled, 'extra' => $extra_json], 'alert_rules')) {
|
||||
} elseif (! $rule_id = dbInsert(['name' => $name, 'builder' => $builder, 'query' => $query, 'severity' => $severity, 'disabled' => $disabled, 'extra' => $extra_json, 'notes' => $notes], 'alert_rules')) {
|
||||
return api_error(500, 'Failed to create new alert rule');
|
||||
}
|
||||
|
||||
|
@@ -58,6 +58,7 @@ $mute = isset($_POST['mute']) ? $_POST['mute'] : null;
|
||||
$invert = isset($_POST['invert']) ? $_POST['invert'] : null;
|
||||
$name = strip_tags($_POST['name']);
|
||||
$proc = $_POST['proc'];
|
||||
$notes = strip_tags($_POST['notes']);
|
||||
$recovery = $vars['recovery'];
|
||||
$acknowledgement = $vars['acknowledgement'];
|
||||
$invert_map = isset($_POST['invert_map']) ? $_POST['invert_map'] : null;
|
||||
@@ -70,26 +71,13 @@ if (! is_numeric($count)) {
|
||||
$delay_sec = convert_delay($delay);
|
||||
$interval_sec = convert_delay($interval);
|
||||
|
||||
if ($mute == 'on') {
|
||||
$mute = true;
|
||||
} else {
|
||||
$mute = false;
|
||||
}
|
||||
|
||||
if ($invert == 'on') {
|
||||
$invert = true;
|
||||
} else {
|
||||
$invert = false;
|
||||
}
|
||||
$mute = ($mute == 'on');
|
||||
$invert = ($invert == 'on');
|
||||
|
||||
$recovery = empty($recovery) ? $recovery = false : true;
|
||||
$acknowledgement = empty($acknowledgement) ? $acknowledgement = false : true;
|
||||
|
||||
if ($invert_map == 'on') {
|
||||
$invert_map = true;
|
||||
} else {
|
||||
$invert_map = false;
|
||||
}
|
||||
$invert_map = ($invert_map == 'on');
|
||||
|
||||
$extra = [
|
||||
'mute' => $mute,
|
||||
@@ -118,6 +106,7 @@ if (is_numeric($rule_id) && $rule_id > 0) {
|
||||
'extra' => $extra_json,
|
||||
'name' => $name,
|
||||
'proc' => $proc,
|
||||
'notes' => $notes,
|
||||
'query' => $query,
|
||||
'builder' => $builder_json,
|
||||
'invert_map' => $invert_map,
|
||||
@@ -146,6 +135,7 @@ if (is_numeric($rule_id) && $rule_id > 0) {
|
||||
'disabled' => 0,
|
||||
'name' => $name,
|
||||
'proc' => $proc,
|
||||
'notes' => $notes,
|
||||
'query' => $query,
|
||||
'builder' => $builder_json,
|
||||
'invert_map' => $invert_map,
|
||||
|
@@ -27,12 +27,9 @@ $delay = $_POST['delay'];
|
||||
$interval = $_POST['interval'];
|
||||
$mute = $_POST['mute'];
|
||||
$invert = $_POST['invert'];
|
||||
$name = strip_tages($_POST['name']);
|
||||
if ($_POST['proc'] != '') {
|
||||
$proc = $_POST['proc'];
|
||||
} else {
|
||||
$proc = '';
|
||||
}
|
||||
$name = strip_tags($_POST['name']);
|
||||
$notes = isset($_POST['$notes']) ? strip_tags($_POST['$notes']) : '';
|
||||
$proc = isset($_POST['proc']) ? strip_tags($_POST['proc']) : '';
|
||||
|
||||
if (empty($rule)) {
|
||||
$update_message = 'ERROR: No rule was generated - did you forget to click and / or?';
|
||||
@@ -65,7 +62,7 @@ if (empty($rule)) {
|
||||
];
|
||||
$extra_json = json_encode($extra);
|
||||
if (is_numeric($alert_id) && $alert_id > 0) {
|
||||
if (dbUpdate(['rule' => $rule, 'severity' => $_POST['severity'], 'extra' => $extra_json, 'name' => $name, 'proc' => $proc, 'query' => $query], 'alert_rules', 'id=?', [$alert_id]) >= 0) {
|
||||
if (dbUpdate(['rule' => $rule, 'severity' => $_POST['severity'], 'extra' => $extra_json, 'name' => $name, 'proc' => $proc, 'notes' => $notes, 'query' => $query], 'alert_rules', 'id=?', [$alert_id]) >= 0) {
|
||||
$update_message = "Edited Rule: <i>$name: $rule</i>";
|
||||
} else {
|
||||
$update_message = 'ERROR: Failed to edit Rule: <i>' . $rule . '</i>';
|
||||
@@ -74,7 +71,7 @@ if (empty($rule)) {
|
||||
if (is_array($_POST['maps'])) {
|
||||
$device_id = ':' . $device_id;
|
||||
}
|
||||
if (dbInsert(['device_id' => $device_id, 'rule' => $rule, 'severity' => $_POST['severity'], 'extra' => $extra_json, 'disabled' => 0, 'name' => $name, 'proc' => $proc, 'query' => $query], 'alert_rules')) {
|
||||
if (dbInsert(['device_id' => $device_id, 'rule' => $rule, 'severity' => $_POST['severity'], 'extra' => $extra_json, 'disabled' => 0, 'name' => $name, 'proc' => $proc, 'notes' => $notes, 'query' => $query], 'alert_rules')) {
|
||||
$update_message = "Added Rule: <i>$name: $rule</i>";
|
||||
if (is_array($_POST['maps'])) {
|
||||
foreach ($_POST['maps'] as $target) {
|
||||
|
@@ -78,6 +78,7 @@ if (is_array($rule)) {
|
||||
'transports' => $transports,
|
||||
'name' => $rule['name'],
|
||||
'proc' => $rule['proc'],
|
||||
'notes' => $rule['notes'],
|
||||
'builder' => $builder,
|
||||
'severity' => $rule['severity'],
|
||||
'adv_query' => $rule['query'],
|
||||
|
@@ -52,6 +52,7 @@ if (is_numeric($template_id)) {
|
||||
$output = [
|
||||
'status' => 'ok',
|
||||
'name' => $rule['name'],
|
||||
'notes' => $rule['notes'],
|
||||
'builder' => $rule['builder'] ?: QueryBuilderParser::fromOld($rule['rule'])->toArray(),
|
||||
'extra' => array_replace($default_extra, (array) $rule['extra']),
|
||||
'severity' => $rule['severity'] ?: Config::get('alert_rule.severity'),
|
||||
|
@@ -145,6 +145,12 @@ if (Auth::user()->hasGlobalAdmin()) {
|
||||
<input type='text' id='proc' name='proc' class='form-control validation' pattern='(http|https)://.*' maxlength='80'>
|
||||
</div>
|
||||
</div>
|
||||
<div class='form-group' title="A brief description for this alert rule">
|
||||
<label for='notes' class='col-sm-3 col-md-2 control-label'>Notes</label>
|
||||
<div class='col-sm-9 col-md-10'>
|
||||
<textarea class="form-control" rows="6" name="notes" id='notes'></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="advanced">
|
||||
<div class="form-group">
|
||||
@@ -156,7 +162,7 @@ if (Auth::user()->hasGlobalAdmin()) {
|
||||
<div class="form-group">
|
||||
<label for="adv_query" class="col-sm-3 col-md-2 control-label">Query</label>
|
||||
<div class="col-sm-9 col-md-10">
|
||||
<input type="text" id="adv_query" name="adv_query" class="form-control">
|
||||
<textarea class="form-control code" rows="6" name="adv_query" id='adv_query' style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;";></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -321,6 +327,7 @@ if (Auth::user()->hasGlobalAdmin()) {
|
||||
$('#delay').val('<?=$default_delay?>');
|
||||
$('#interval').val('<?=$default_interval?>');
|
||||
$('#adv_query').val('');
|
||||
$('#notes').val('');
|
||||
$('#severity').val('<?=$default_severity?>');
|
||||
|
||||
var $maps = $('#maps');
|
||||
@@ -341,6 +348,7 @@ if (Auth::user()->hasGlobalAdmin()) {
|
||||
$('#builder').queryBuilder("setRules", rule.builder);
|
||||
$('#severity').val(rule.severity).trigger('change');
|
||||
$('#adv_query').val(rule.adv_query);
|
||||
$('#notes').val(rule.notes);
|
||||
|
||||
var $maps = $('#maps');
|
||||
$maps.empty();
|
||||
|
Reference in New Issue
Block a user