'Alert Association Rule Migration', 'padding' => TRUE, 'header-border' => TRUE]); $checkers = cache_alert_rules(); $assocs = cache_alert_assoc(); foreach ($assocs as $assoc) { $checkers[$assoc['alert_test_id']]['assocs'][] = $assoc; } //echo '

Alert Rules

'; echo 'This page will assist you to migrate from legacy association format to the new association format.'; //print_vars($checkers); echo generate_box_close(); foreach ($checkers as $alert) { if ($vars['migrate'] == $alert['alert_test_id'] || (!$alert['alert_assoc'] && $vars['migrate'] == 'all')) { print_message("Migrating " . $alert['alert_name']); $ruleset = migrate_assoc_rules($alert); dbUpdate(['alert_assoc' => json_encode($ruleset)], 'alert_tests', '`alert_test_id` = ?', [$alert['alert_test_id']]); dbDelete('alert_assoc', '`alert_test_id` = ?', [$alert['alert_test_id']]); $alert['alert_assoc'] = json_encode($ruleset); update_alert_table($alert, FALSE); } } $checkers = cache_alert_rules(); $assocs = cache_alert_assoc(); foreach ($assocs as $assoc) { $checkers[$assoc['alert_test_id']]['assocs'][] = $assoc; } foreach ($checkers as $alert) { //if($alert['alert_test_id'] != 11) { continue; } echo generate_box_open(['title' => $alert['alert_name'], 'padding' => TRUE, 'header-border' => TRUE]); if (!$alert['alert_assoc']) { $ruleset = migrate_assoc_rules($alert); $query = parse_qb_ruleset($alert['entity_type'], $ruleset, TRUE); $data = dbFetchRows($query); $error = dbError(); $field = $config['entities'][$alert['entity_type']]['table_fields']['id']; $existing_entities = get_alert_entities($alert['alert_test_id']); $entities = []; foreach ($data as $datum) { $entities[$datum[$field]] = ['entity_id' => $datum[$field], 'device_id' => $datum['device_id']]; } $legacy = get_alert_entities_from_assocs($alert); //r($legacy); //r($entities); //r($existing_entities); $add = array_diff_key($entities, $existing_entities); $remove = array_diff_key($existing_entities, $entities); //print_vars(array_diff_key($legacy, $entities)); //echo count($add) .' to add, '.count($remove).' to remove.
'; $changed = count($add) + count($remote); $result = count($data); $existing = count(get_alert_entities($alert['alert_test_id'])); echo '
'; echo '
'; echo '
'; if (is_array($alert['assocs'])) { echo '

Original Association Rules

'; echo(''); // Loop the associations which link this alert to this device foreach ($alert['assocs'] as $assoc_id => $assoc) { echo(''); echo(''); echo(''); echo(''); } // End loop of associations echo '
'); if (is_array($assoc['device_attribs'])) { $text_block = []; foreach ($assoc['device_attribs'] as $attribute) { $text_block[] = escape_html($attribute['attrib'] . ' ' . $attribute['condition'] . ' ' . $attribute['value']); } echo('' . implode('
', $text_block) . '
'); } else { echo '*'; } echo('
'); if (is_array($assoc['entity_attribs'])) { $text_block = []; foreach ($assoc['entity_attribs'] as $attribute) { $text_block[] = escape_html($attribute['attrib'] . ' ' . $attribute['condition'] . ' ' . $attribute['value']); } echo('' . implode('
', $text_block) . '
'); } else { echo '*'; } echo('
'; } else { print_message("No Legacy Associations!"); } echo '
'; echo '

New Association Ruleset

'; echo render_qb_rules($alert['entity_type'], $ruleset); echo '
'; echo '
'; $c_exist = count($existing_entities); $c_legacy = count($legacy); $c_new = count($entities); //echo '
Database'.count($existing_entities).'Legacy Rules'.count($legacy).'New Ruleset'.count($entities).'
'; if ($changed != 0) { print_error("Migration results don't match for group " . $alert['alert_name'] . ". Please report this to the Observium developers. (DB: " . $c_exist . " | Old: " . $c_legacy . " | New: " . $c_new . ")"); echo '
';
            //print_r($alert['assocs']);
            echo '
'; echo '
' . safe_json_encode($ruleset, JSON_PRETTY_PRINT) . '
'; r($query); //r($add); //r($remove); } else { print_message("Migration results match! (DB: " . $c_exist . " | Old: " . $c_legacy . " | New: " . $c_new . ")", 'success'); echo 'Migrate Alert'; } //echo "results: " . $result . "
"; //echo "existing:" . $existing . "
"; //echo "error:" . $error; //echo ""; } else { echo 'Alert ' . $alert['alert_name'] . ' already has new-style association rules
'; } echo generate_box_close(); } // EOF