Пример #1
0
 public function check_disks_availability($etva_node, $disks, $method)
 {
     $etva_server = $this->etva_server;
     $collDisks = array();
     $i = 0;
     foreach ($disks as $disk) {
         if (!($etva_lv = EtvaLogicalvolumePeer::retrieveByPK($disk['id']))) {
             $msg = Etva::getLogMessage(array('id' => $disk['id']), EtvaLogicalvolumePeer::_ERR_NOTFOUND_ID_);
             $msg_i18n = sfContext::getInstance()->getI18N()->__(EtvaLogicalvolumePeer::_ERR_NOTFOUND_ID_, array('%id%' => $disk['id']));
             $error = array('success' => false, 'agent' => $etva_node->getName(), 'error' => $msg_i18n);
             //notify event log
             $message = Etva::getLogMessage(array('name' => $etva_server->getName(), 'info' => $msg), EtvaServerPeer::_ERR_CREATE_);
             sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent($error['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR)));
             return $error;
         }
         $lv = $etva_lv->getLv();
         /*
          * check if is not system lv
          */
         if ($etva_lv->getMounted()) {
             $msg = Etva::getLogMessage(array('name' => $lv), EtvaLogicalvolumePeer::_ERR_SYSTEM_LV_);
             $msg_i18n = sfContext::getInstance()->getI18N()->__(EtvaLogicalvolumePeer::_ERR_SYSTEM_LV_, array('%name%' => $lv));
             $error = array('success' => false, 'agent' => $etva_node->getName(), 'error' => $msg_i18n, 'info' => $msg_i18n);
             //notify system log
             $message = Etva::getLogMessage(array('name' => $etva_server->getName(), 'info' => $msg), EtvaServerPeer::_ERR_CREATE_);
             sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent($etva_node->getName(), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR)));
             return $error;
         }
         //check if lv already marked as 'in use'
         if ($method == self::SERVER_CREATE && $etva_lv->getInUse()) {
             $lv_server = $etva_lv->getEtvaServer();
             $msg = Etva::getLogMessage(array('name' => $lv, 'server' => $lv_server->getName()), EtvaLogicalvolumePeer::_ERR_INUSE_);
             $msg_i18n = sfContext::getInstance()->getI18N()->__(EtvaLogicalvolumePeer::_ERR_INUSE_, array('%name%' => $lv, '%server%' => $lv_server->getName()));
             $error = array('success' => false, 'agent' => $etva_node->getName(), 'error' => $msg_i18n, 'info' => $msg_i18n);
             //notify event log
             $message = Etva::getLogMessage(array('name' => $etva_server->getName(), 'info' => $msg), EtvaServerPeer::_ERR_CREATE_);
             sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent($error['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR)));
             return $error;
         }
         $etva_sl = new EtvaServerLogical();
         $etva_sl->setLogicalvolumeId($etva_lv->getId());
         $etva_sl->setDiskType($disk['disk_type']);
         $etva_sl->setBootDisk($i);
         $i++;
         $collDisks[] = $etva_sl;
     }
     // end each disk
     $this->collDisks = $collDisks;
     return array('success' => true);
 }