Marius Cramer
2015-08-06 37b29231e47a0c4458dc1c15d98588f16f07e1e2
server/lib/classes/cron.d/100-monitor_raid.inc.php
@@ -29,39 +29,41 @@
*/
class cronjob_monitor_raid extends cronjob {
    // job schedule
    protected $_schedule = '*/5 * * * *';
    protected $_run_at_new = true;
    private $_tools = null;
    /* this function is optional if it contains no custom code */
    public function onPrepare() {
        global $app;
        parent::onPrepare();
    }
    /* this function is optional if it contains no custom code */
    public function onBeforeRun() {
        global $app;
        return parent::onBeforeRun();
    }
    public function onRunJob() {
        global $app, $conf;
        /* used for all monitor cronjobs */
        $app->load('monitor_tools');
        $this->_tools = new monitor_tools();
        /* end global section for monitor cronjobs */
   // job schedule
   protected $_schedule = '*/5 * * * *';
   protected $_run_at_new = true;
   private $_tools = null;
   /* this function is optional if it contains no custom code */
   public function onPrepare() {
      global $app;
      parent::onPrepare();
   }
   /* this function is optional if it contains no custom code */
   public function onBeforeRun() {
      global $app;
      return parent::onBeforeRun();
   }
   public function onRunJob() {
      global $app, $conf;
      /* used for all monitor cronjobs */
      $app->load('monitor_tools');
      $this->_tools = new monitor_tools();
      /* end global section for monitor cronjobs */
      /* the id of the server as int */
      $server_id = intval($conf['server_id']);
      /** The type of the data */
      $type = 'raid_state';
      /*
@@ -175,53 +177,55 @@
      system('which tw_cli', $retval);
      if($retval === 0) {
         $data['output'] = shell_exec('tw_cli info c0');
         // TYPOWORX FIX | Determine Controler-ID
         $availableControlers = shell_exec('tw_cli info | grep -Eo "c[0-9]+');
         $data['output'] = shell_exec('tw_cli info ' . $availableControlers);
         $state = 'ok';
         if(is_array($data['output'])) {
         foreach ($data['output'] as $item) {
            if (strpos($item, 'RAID') !== false) {
               if (strpos($item, ' VERIFYING ') !== false) {
                  $this->_tools->_setState($state, 'info');
               }
               else if (strpos($item, ' MIGRATE-PAUSED ') !== false) {
                  $this->_tools->_setState($state, 'info');
               }
               else if (strpos($item, ' MIGRATING ') !== false) {
                  $this->_tools->_setState($state, 'ok');
               }
               else if (strpos($item, ' INITIALIZING ') !== false) {
                  $this->_tools->_setState($state, 'info');
               }
               else if (strpos($item, ' INIT-PAUSED ') !== false) {
                  $this->_tools->_setState($state, 'info');
               }
               else if (strpos($item, ' REBUILDING ') !== false) {
                  $this->_tools->_setState($state, 'info');
               }
               else if (strpos($item, ' REBUILD-PAUSED ') !== false) {
                  $this->_tools->_setState($state, 'warning');
               }
               else if (strpos($item, ' RECOVERY ') !== false) {
                  $this->_tools->_setState($state, 'warning');
               }
               else if (strpos($item, ' DEGRADED ') !== false) {
                  $this->_tools->_setState($state, 'critical');
               }
               else if (strpos($item, ' UNKNOWN ') !== false) {
                  $this->_tools->_setState($state, 'critical');
               }
               else if (strpos($item, ' OK ') !== false) {
                  $this->_tools->_setState($state, 'ok');
               }
               else if (strpos($item, ' OPTIMAL ') !== false) {
                  $this->_tools->_setState($state, 'ok');
               }
               else {
                  $this->_tools->_setState($state, 'critical');
            foreach ($data['output'] as $item) {
               if (strpos($item, 'RAID') !== false) {
                  if (strpos($item, ' VERIFYING ') !== false) {
                     $this->_tools->_setState($state, 'info');
                  }
                  else if (strpos($item, ' MIGRATE-PAUSED ') !== false) {
                        $this->_tools->_setState($state, 'info');
                     }
                  else if (strpos($item, ' MIGRATING ') !== false) {
                        $this->_tools->_setState($state, 'ok');
                     }
                  else if (strpos($item, ' INITIALIZING ') !== false) {
                        $this->_tools->_setState($state, 'info');
                     }
                  else if (strpos($item, ' INIT-PAUSED ') !== false) {
                        $this->_tools->_setState($state, 'info');
                     }
                  else if (strpos($item, ' REBUILDING ') !== false) {
                        $this->_tools->_setState($state, 'info');
                     }
                  else if (strpos($item, ' REBUILD-PAUSED ') !== false) {
                        $this->_tools->_setState($state, 'warning');
                     }
                  else if (strpos($item, ' RECOVERY ') !== false) {
                        $this->_tools->_setState($state, 'warning');
                     }
                  else if (strpos($item, ' DEGRADED ') !== false) {
                        $this->_tools->_setState($state, 'critical');
                     }
                  else if (strpos($item, ' UNKNOWN ') !== false) {
                        $this->_tools->_setState($state, 'critical');
                     }
                  else if (strpos($item, ' OK ') !== false) {
                        $this->_tools->_setState($state, 'ok');
                     }
                  else if (strpos($item, ' OPTIMAL ') !== false) {
                        $this->_tools->_setState($state, 'ok');
                     }
                  else {
                     $this->_tools->_setState($state, 'critical');
                  }
               }
            }
         }
         }
      }
@@ -236,27 +240,21 @@
       * Insert the data into the database
       */
      $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' .
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            'UNIX_TIMESTAMP(), ' .
            "'" . $app->dbmaster->quote(serialize($res['data'])) . "', " .
            "'" . $res['state'] . "'" .
            ')';
      $app->dbmaster->query($sql);
         'VALUES (?, ?, UNIX_TIMESTAMP(), ?, ?)';
      $app->dbmaster->query($sql, $res['server_id'], $res['type'], serialize($res['data']), $res['state']);
      /* The new data is written, now we can delete the old one */
      $this->_tools->delOldRecords($res['type'], $res['server_id']);
        parent::onRunJob();
    }
    /* this function is optional if it contains no custom code */
    public function onAfterRun() {
        global $app;
        parent::onAfterRun();
    }
      parent::onRunJob();
   }
   /* this function is optional if it contains no custom code */
   public function onAfterRun() {
      global $app;
      parent::onAfterRun();
   }
}