예제 #1
0
 public function filterInternalMonitors($api, $int, $server_id)
 {
     $adentId = $api['agentId'];
     $monitors = array();
     $drivers = null;
     $intMonitors = array('cpu' => null, 'memory' => null, 'drives' => null);
     if (isset($api['cpu']) && count($api['cpu']) > 0 && isset($api['cpu']['id'])) {
         $intMonitors['cpu'] = $api['cpu'];
         $monitorId = $api['cpu']['id'];
         $index = MonitisHelper::in_array_index($int, 'monitor_id', $monitorId);
         if ($index > -1) {
             $monitors[] = $int[$index];
             $int[$index]['api'] = 1;
         } else {
             $monitors[] = monitisSnapShots::linkInternalMonitor($monitorId, 'cpu', $adentId, $server_id);
         }
     }
     if (isset($api['memory']) && count($api['memory']) > 0 && isset($api['memory']['id'])) {
         $monitorId = $api['memory']['id'];
         $index = MonitisHelper::in_array_index($int, 'monitor_id', $monitorId);
         if ($index > -1) {
             $monitors[] = $int[$index];
             $int[$index]['api'] = 1;
         } else {
             $monitors[] = monitisSnapShots::linkInternalMonitor($monitorId, 'memory', $adentId, $server_id);
         }
     }
     $drvrs = array();
     if (isset($api['drives']) && count($api['drives']) > 0) {
         $drivers = $api['drives'];
         //$intMonitors['drives'] = array();
         for ($i = 0; $i < count($drivers); $i++) {
             // monitor exist
             if (isset($drivers[$i]['id'])) {
                 $monitorId = $drivers[$i]['id'];
                 // is linked
                 $index = MonitisHelper::in_array_index($int, 'monitor_id', $monitorId);
                 if ($index > -1) {
                     $monitors[] = $int[$index];
                     $int[$index]['api'] = 1;
                 } else {
                     $monitors[] = monitisSnapShots::linkInternalMonitor($monitorId, 'drive', $adentId, $server_id);
                 }
             } else {
                 $monitors[] = null;
             }
         }
     }
     // remove api deleted monitors
     for ($i = 0; $i < count($int); $i++) {
         if (!isset($int[$i]['api'])) {
             monitisSqlHelper::altQuery('DELETE FROM ' . MONITIS_INTERNAL_TABLE . ' WHERE monitor_id=' . $int[$i]['monitor_id']);
         }
     }
     return $monitors;
 }