Ejemplo n.º 1
0
 /**
  * Used to process soap requests => updateVirtAgentVgs
  *
  * Updates volume group info sent by virt Agent
  * The request should be made throught soapapi
  *
  * Replies with succcess
  *
  * $request may contain the following keys:
  * - uid: uid (virtAgent sending request uid)
  * - vgs (object containing volumes info)
  * @return array array(success=>true)
  */
 public function executeSoapUpdate(sfWebRequest $request)
 {
     if (sfConfig::get('sf_environment') == 'soap') {
         $vgs = $request->getParameter('vgs');
         // check node ID correspondig to the uid given
         $c = new Criteria();
         $c->add(EtvaNodePeer::UUID, $request->getParameter('uuid'));
         if (!($etva_node = EtvaNodePeer::doSelectOne($c))) {
             $error_msg = sprintf('Object etva_node does not exist (%s).', $request->getParameter('uuid'));
             $error = array('success' => false, 'error' => $error_msg);
             //notify event log
             $node_message = Etva::getLogMessage(array('name' => $request->getParameter('uuid')), EtvaNodePeer::_ERR_NOTFOUND_UUID_);
             $message = Etva::getLogMessage(array('info' => $node_message), EtvaVolumegroupPeer::_ERR_SOAPUPDATE_);
             $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR)));
             return $error;
         }
         $node_initialize = $etva_node->getInitialize();
         if ($node_initialize != EtvaNode_VA::INITIALIZE_OK) {
             $error_msg = sprintf('Etva node initialize status: %s', $node_initialize);
             $error = array('success' => false, 'error' => $error_msg);
             return $error;
         }
         /*
          * check node cluster ID
          */
         if (!($etva_cluster = $etva_node->getEtvaCluster())) {
             $error_msg = sprintf('Object etva_cluster does not exist for node %s', $etva_node->getName());
             $error = array('success' => false, 'error' => $error_msg);
             //notify event log
             $cluster_message = Etva::getLogMessage(array('info' => $error_msg), EtvaClusterPeer::_ERR_CLUSTER_);
             $message = Etva::getLogMessage(array('info' => $cluster_message), EtvaVolumegroupPeer::_ERR_SOAPUPDATE_);
             $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR)));
             return $error;
         }
         $etva_data = Etva::getEtvaModelFile();
         $etvamodel = $etva_data['model'];
         $force_regist = false;
         // for model standard, if vgs initialize then force registration
         if ($etvamodel == 'standard' && !$etva_node->hasVgs()) {
             $force_regist = true;
         }
         error_log("EtvaVolumegroup soapUpdate force_regist=" . $force_regist . " etvamodel=" . $etvamodel . " hasVgs=" . $etva_node->hasVgs());
         //error_log(print_r($vgs,true));
         /*
          * send volume group to VA
          */
         $vg_va = new EtvaVolumegroup_VA();
         $response = $vg_va->initialize($etva_node, $vgs, $force_regist);
         return $response;
     }
 }