vogelor
2010-05-01 f62c63c8ffe7bc84947ec6bafaf61f1c487871a0
server/mods-available/monitor_core_module.inc.php
@@ -885,7 +885,15 @@
      /** The type of the data */
      $type = 'raid_state';
      /* This monitoring is only available if mdadm is installed */
      /*
       * We support some RAIDS. But if we can't find any of them, we have no data
      */
      $state = 'no_state';
      $data['output']= '';
      /*
       * Check, if we have mdadm installed (software-raid)
      */
      system('which mdadm', $retval);
      if($retval === 0) {
         /*
@@ -935,20 +943,56 @@
               }
            }
         }
      }
      /*
       * Check, if we have mpt-status installed (LSIsoftware-raid)
      */
      system('which mpt-status', $retval);
      if($retval === 0) {
         /*
             * Fetch the output
         */
         $data['output'] = shell_exec('mpt-status --autoload -n');
         /*
             * Then calc the state.
         */
         $state = 'ok';
         foreach ($data['output'] as $item) {
            /*
             * The output contains information for every RAID and every HDD.
             * We only need the state of the RAID
            */
            if (strpos($item, 'raidlevel:') !== false) {
               /*
                * We found a raid, process the state of it
               */
               if (strpos($item, ' ONLINE ') !== false) {
                  $this->_setState($state, 'ok');
               }
               else if (strpos($item, ' OPTIMAL ') !== false) {
                  $this->_setState($state, 'ok');
               }
               else if (strpos($item, ' INITIAL ') !== false) {
                  $this->_setState($state, 'info');
               }
               else if (strpos($item, ' INACTIVE ') !== false) {
                  $this->_setState($state, 'critical');
               }
               else if (strpos($item, ' RESYNC ') !== false) {
                  $this->_setState($state, 'info');
               }
               else if (strpos($item, ' DEGRADED ') !== false) {
                  $this->_setState($state, 'critical');
      }
      else {
         /*
             * mdadm is not installed, so there is no data and no state
             *
             * no_state, NOT unknown, because "unknown" is shown as state
             * inside the GUI. no_state is hidden.
             *
             * We have to write NO DATA inside the DB, because the GUI
             * could not know, if there is any dat, or not...
                  /* we don't know the state. so we set the state to critical, that the
                   * admin is warned, that something is wrong
         */
         $state = 'no_state';
         $data['output']= '';
                  $this->_setState($state, 'critical');
               }
            }
         }
      }
      /*