Skip to content

Commit 14e5a5f

Browse files
committed
QA: Some fixes and enhancements
1 parent 55aed04 commit 14e5a5f

File tree

1 file changed

+52
-26
lines changed

1 file changed

+52
-26
lines changed

cacti/plugins/lsfenh/lib/analytics.php

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,7 @@ function create_required_tables() {
487487
`type` tinyint(3) unsigned NOT NULL DEFAULT 0,
488488
`reason` varchar(255) NOT NULL DEFAULT '',
489489
`jobs_occurrences` int(10) unsigned NOT NULL DEFAULT 0,
490+
`limit_value` varchar(10) NOT NULL DEFAULT '',
490491
`present` tinyint(3) unsigned NOT NULL DEFAULT 1,
491492
`last_updated` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
492493
PRIMARY KEY (`id`),
@@ -849,7 +850,7 @@ function grid_update_job_groups($clusterid) {
849850

850851
$parts = preg_split('/[\s]+/', $line);
851852

852-
if (cacti_sizeof($parts) > 10) {
853+
if (cacti_sizeof($parts) > 11) {
853854
$nparts = cacti_sizeof($parts);
854855

855856
if (!$logged) {
@@ -922,7 +923,7 @@ function grid_update_job_groups($clusterid) {
922923

923924
$parts = preg_split('/[\s]+/', $line);
924925

925-
if (cacti_sizeof($parts) > 10) {
926+
if (cacti_sizeof($parts) > 11) {
926927
$nparts = cacti_sizeof($parts);
927928

928929
if (!$logged) {
@@ -1423,33 +1424,34 @@ function grid_translate_reason($reason) {
14231424
$reason = str_replace("'", '', $reason);
14241425
$reason = str_replace('has been reached', 'Limit Reached', $reason);
14251426
$reason = str_replace('has reached', 'Reached', $reason);
1427+
$reason = str_replace('defined for the', 'for', $reason);
1428+
$reason = str_replace('The specified Job Group', 'Job Group', $reason);
14261429

1427-
// Host Reasons are fist
1428-
if (str_contains($reason, ' (Host:')) {
1429-
$reason = db_fetch_cell("SELECT TRIM(SUBSTRING_INDEX(reason,' (Host:',1)) AS reason
1430-
FROM (SELECT " . db_qstr($reason) . " AS reason HAVING reason LIKE '% (Host:%') AS rs");
1430+
if (str_contains($reason, 'Value:')) {
1431+
$value = trim(explode('Value:', $reason)[1], ' )');
1432+
$reason = trim(explode(', Value:', $reason)[0]) . ')';
1433+
} else {
1434+
$value = 'N/A';
14311435
}
14321436

1433-
// Job level Reasons
1434-
if (str_contains($reason, 'job <')) {
1435-
$reason = db_fetch_cell("SELECT TRIM(SUBSTRING_INDEX(reason,'<', 1)) AS reason,
1436-
FROM (SELECT " . db_qstr($reason) . " AS reason HAVING reason LIKE '%job <%') AS rs");
1437+
/* remove the ', Name:' as it's meaningless for analytics */
1438+
if (str_contains($reason, ', Name:')) {
1439+
$reason = trim(explode(', Name:', $reason)[0]) . ')';
14371440
}
14381441

1442+
// Host Reasons, peel off the host
1443+
if (str_contains($reason, ' (Host:')) {
1444+
$reason = trim(explode(' (Host:', $reason)[0]);
1445+
}
14391446

1440-
// Limit Value
1441-
if (str_contains($reason, ' (Limit Value:')) {
1442-
$reason = db_fetch_cell("SELECT TRIM(SUBSTRING_INDEX(reason,' (Limit Value:', 1)) AS reason,
1443-
FROM (SELECT " . db_qstr($reason) . " AS reason HAVING reason LIKE '% (Limit Value:%') AS rs");
1447+
// Job Group Reasons, peel off the host
1448+
if (str_contains($reason, ' (Job Group:')) {
1449+
$reason = trim(explode(' (Job Group:', $reason)[0]);
14441450
}
14451451

1446-
// Remaining pending reasons
1447-
if (str_contains($reason, ' (Limit Value:')) {
1448-
$reason = db_fetch_cell("SELECT TRIM(REPLACE(REPLACE(reason, \"'\", \"\"), 'Limit: ', '')) AS reason,
1449-
FROM (SELECT " . db_qstr($reason) . " AS reason
1450-
HAVING reason NOT LIKE '% (Limit Value:%'
1451-
AND reason NOT LIKE '% (Host:%'
1452-
AND reason NOT LIKE '%job <%') AS rs");
1452+
// Job level Reasons, peel off the jobid
1453+
if (str_contains($reason, 'job <')) {
1454+
$reason = trim(explode('job <', $reason)[0]);
14531455
}
14541456

14551457
$reason = str_replace(
@@ -1466,7 +1468,9 @@ function grid_translate_reason($reason) {
14661468
// Debugging
14671469
//cacti_log("O:'$oreason' T:'$reason'");
14681470

1469-
return trim($reason);
1471+
$reason = trim($reason);
1472+
1473+
return array('reason' => $reason, 'value' => $value);;
14701474
}
14711475

14721476

@@ -1573,22 +1577,44 @@ function grid_aggregate_reasons() {
15731577

15741578
$reasons = db_fetch_assoc("SELECT * FROM grid_jobs_reason_details $sql_where");
15751579

1576-
$num_reasons = cacti_sizeof($reasons);
1577-
15781580
/* translate the reasons into something readable */
1581+
$freasons = array();
1582+
15791583
if (cacti_sizeof($reasons)) {
15801584
foreach($reasons as $index => $r) {
1581-
$reasons[$index]['reason'] = grid_translate_reason($r['reason']);
1585+
$rdata = grid_translate_reason($r['reason']);
1586+
1587+
$new_reason = $rdata['reason'];
1588+
$value = $rdata['value'];
1589+
1590+
/* move the structure over, accumulate similar translated reasons */
1591+
if (isset($freasons[$new_reason])) {
1592+
$freasons[$new_reason]['jobs_occurrences'] += $r['jobs_occurrences'];
1593+
} else {
1594+
$freasons[$new_reason]['jobs_occurrences'] = $r['jobs_occurrences'];
1595+
}
1596+
1597+
$freasons[$new_reason]['reason'] = $new_reason;
1598+
$freasons[$new_reason]['clusterid'] = $r['clusterid'];
1599+
$freasons[$new_reason]['issusp'] = $r['issusp'];
1600+
$freasons[$new_reason]['level'] = $r['level'];
1601+
$freasons[$new_reason]['type'] = $r['type'];
1602+
$freasons[$new_reason]['limit_value'] = $value;
1603+
$freasons[$new_reason]['present'] = $r['present'];
1604+
$freasons[$new_reason]['last_updated'] = $r['last_updated'];
15821605
}
15831606
}
15841607

1608+
$num_reasons = cacti_sizeof($freasons);
1609+
15851610
$format = array(
15861611
'clusterid',
15871612
'issusp',
15881613
'level',
15891614
'type',
15901615
'reason',
15911616
'jobs_occurrences',
1617+
'limit_value',
15921618
'present',
15931619
'last_updated'
15941620
);
@@ -1598,7 +1624,7 @@ function grid_aggregate_reasons() {
15981624
last_updated = VALUES(last_updated),
15991625
present = 1";
16001626

1601-
grid_pump_records($reasons, 'grid_jobs_reason_summary', $format, false, $duplicate);
1627+
grid_pump_records($freasons, 'grid_jobs_reason_summary', $format, false, $duplicate);
16021628

16031629
db_execute('UPDATE grid_jobs_reason_summary SET jobs_occurrences = 0 WHERE present = 0');
16041630

0 commit comments

Comments
 (0)