tbrehm
2010-10-18 bc963bc1f5611c78a319ddb77efb0037cc63768c
Fixed problem in LSI raid controller detection code.
1 files modified
78 ■■■■ changed files
server/mods-available/monitor_core_module.inc.php 78 ●●●● patch | view | raw | blame | history
server/mods-available/monitor_core_module.inc.php
@@ -1085,49 +1085,51 @@
        /*
         * 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) {
        if(is_file('/proc/mpt/summary')) {
            system('which mpt-status', $retval);
            if($retval === 0) {
                /*
                 * The output contains information for every RAID and every HDD.
                 * We only need the state of the RAID
                * Fetch the output
                */
                if (strpos($item, 'raidlevel:') !== false) {
                $data['output'] = shell_exec('mpt-status --autoload -n');
                /*
                * Then calc the state.
                */
                $state = 'ok';
                foreach ($data['output'] as $item) {
                    /*
                     * We found a raid, process the state of it
                    * The output contains information for every RAID and every HDD.
                    * We only need the state of the RAID
                    */
                    if (strpos($item, ' ONLINE ') !== false) {
                        $this->_setState($state, 'ok');
                    }
                    elseif (strpos($item, ' OPTIMAL ') !== false) {
                        $this->_setState($state, 'ok');
                    }
                    elseif (strpos($item, ' INITIAL ') !== false) {
                        $this->_setState($state, 'info');
                    }
                    elseif (strpos($item, ' INACTIVE ') !== false) {
                        $this->_setState($state, 'critical');
                    }
                    elseif (strpos($item, ' RESYNC ') !== false) {
                        $this->_setState($state, 'info');
                    }
                    elseif (strpos($item, ' DEGRADED ') !== false) {
                        $this->_setState($state, 'critical');
                    }
                    else {
                        /* we don't know the state. so we set the state to critical, that the
                         * admin is warned, that something is wrong
                    if (strpos($item, 'raidlevel:') !== false) {
                        /*
                        * We found a raid, process the state of it
                        */
                        $this->_setState($state, 'critical');
                        if (strpos($item, ' ONLINE ') !== false) {
                            $this->_setState($state, 'ok');
                        }
                        elseif (strpos($item, ' OPTIMAL ') !== false) {
                            $this->_setState($state, 'ok');
                        }
                        elseif (strpos($item, ' INITIAL ') !== false) {
                            $this->_setState($state, 'info');
                        }
                        elseif (strpos($item, ' INACTIVE ') !== false) {
                            $this->_setState($state, 'critical');
                        }
                        elseif (strpos($item, ' RESYNC ') !== false) {
                            $this->_setState($state, 'info');
                        }
                        elseif (strpos($item, ' DEGRADED ') !== false) {
                            $this->_setState($state, 'critical');
                        }
                        else {
                            /* we don't know the state. so we set the state to critical, that the
                            * admin is warned, that something is wrong
                            */
                            $this->_setState($state, 'critical');
                        }
                    }
                }
            }