@@ -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