Пример #1
0
 private static function ElectNode(EtvaNode $etva_node)
 {
     $cluster_id = $etva_node->getClusterId();
     $etva_cluster = EtvaClusterPeer::retrieveByPK($cluster_id);
     return EtvaNode::getFirstActiveNode($etva_cluster);
 }
Пример #2
0
 public function executeJsonUpdate(sfWebRequest $request)
 {
     // create cluster entry
     $id = $request->getParameter('id');
     $cluster = EtvaClusterPeer::retrieveByPK($id);
     if (!$cluster) {
         $error_msg = sprintf('Object etva_cluster does not exist (%s).', $request->getParameter('id'));
         $info = array('success' => false, 'error' => $error_msg);
         $error = $this->setJsonError($info);
         return $this->renderText($error);
     }
     /*if(!$cluster) $form = new EtvaClusterForm();
             else $form = new EtvaClusterForm($cluster);
     
             $result = $this->processJsonForm($request, $form);
     
             if(!$result['success']){
                 $error = $this->setJsonError($result);
                 return $this->renderText($error);
             }
     
             //get cluster object
             $etva_cluster =  $result['object'];*/
     $form_data = (array) json_decode($request->getParameter('etva_cluster'));
     $clustername = $form_data['name'];
     if (!preg_match('/^[a-zA-Z][a-zA-Z0-9\\-\\_]+$/', $clustername)) {
         $msg = "Invalid name format";
         error_log("CLUSTER[ERROR]" . $msg);
         $msg_i18n = $this->getContext()->getI18N()->__($msg);
         $error_msg = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n);
         //notify system log
         $this->dispatcher->notify(new sfEvent($error['agent'], 'event.log', array('message' => Etva::getLogMessage(array('name' => $clustername, 'info' => $msg), EtvaClusterPeer::_ERR_CREATE_), 'priority' => EtvaEventLogger::ERR)));
         $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'info' => $msg_i18n, 'error' => array($error_msg));
         // if is a CLI soap request return json encoded data
         if (sfConfig::get('sf_environment') == 'soap') {
             return json_encode($error);
         }
         // if is browser request return text renderer
         $error = $this->setJsonError($error);
         return $this->renderText($error);
     }
     $cluster->setName($clustername);
     $cluster->setIsDefaultCluster(0);
     if ($form_data['isDefaultCluster']) {
         $updatecluster = array('Isdefaultcluster' => 0);
         EtvaClusterQuery::create()->update($updatecluster);
         $cluster->setIsDefaultCluster(1);
     }
     $cluster->setHasNodeHA($form_data['hasNodeHA'] ? 1 : 0);
     $cluster->setAdmissionGateType($form_data['admissionGate_type']);
     $cluster->setAdmissionGateValue($form_data['admissionGate_value']);
     $cluster->save();
     $etva_cluster = $cluster;
     $updateNodes = array('Issparenode' => 0);
     if ($request->getParameter('fencingconf')) {
         $fencingconf = $request->getParameter('fencingconf');
         $updateNodes['Fencingconf'] = $fencingconf;
     }
     //clear spare node
     EtvaNodeQuery::create()->filterByClusterId($etva_cluster->getId())->update($updateNodes);
     if ($sparenode_id = $request->getParameter('sparenode')) {
         if ($etva_sparenode = EtvaNodePeer::retrieveByPK($sparenode_id)) {
             // and mark the spare node
             $etva_sparenode->setIsSpareNode(1);
             $etva_sparenode->save();
         }
     }
     $name = $etva_cluster->getName();
     $i18n_msg = $msg_i18n = $this->getContext()->getI18N()->__(EtvaClusterPeer::_OK_UPDATE_, array('%name%' => $name));
     //notify system log
     $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $name), EtvaClusterPeer::_OK_UPDATE_))));
     $return = array('success' => true, 'agent' => sfConfig::get('config_acronym'), 'response' => $i18n_msg, 'cluster_id' => $etva_cluster->getId());
     $return = json_encode($return);
     $this->getResponse()->setHttpHeader('Content-type', 'application/json');
     return $this->renderText($return);
 }
Пример #3
0
 public function executeJsonListCluster(sfWebRequest $request)
 {
     $filterBy = '';
     if ($request->hasParameter('sid')) {
         $filterBy = 'sid';
     }
     if ($request->hasParameter('cid')) {
         $filterBy = 'cid';
     }
     $cluster_nodes = array();
     $criteria = new Criteria();
     if ($request->hasParameter('initialize')) {
         // filter by initialized nodes only
         $criteria->add(EtvaNodePeer::INITIALIZE, 'ok', Criteria::EQUAL);
     }
     switch ($filterBy) {
         case 'sid':
             $value = $request->getParameter($filterBy);
             $server = EtvaServerPeer::retrieveByPK($value);
             $node = $server->getEtvaNode();
             $criteria->add(EtvaNodePeer::ID, $node->getId(), Criteria::NOT_EQUAL);
             $cluster_nodes = $node->getNodesCluster($criteria);
             break;
         case 'cid':
             $value = $request->getParameter($filterBy);
             if ($cluster = EtvaClusterPeer::retrieveByPK($value)) {
                 $criteria->add(EtvaNodePeer::CLUSTER_ID, $cluster->getId());
                 $cluster_nodes = EtvaNodePeer::doSelect($criteria);
             }
             break;
         default:
             $cluster_nodes = EtvaNodePeer::doSelect($criteria);
             break;
     }
     $elements = array();
     foreach ($cluster_nodes as $node) {
         $node_array = $node->toArray();
         // get max allocatable memory
         $node_array['maxmem'] = $node->getMaxmem();
         $elements[] = $node_array;
     }
     $result = array('success' => true, 'total' => count($elements), 'data' => $elements);
     $return = json_encode($result);
     if (sfConfig::get('sf_environment') == 'soap') {
         return $return;
     }
     $this->getResponse()->setHttpHeader('Content-type', 'application/json');
     return $this->renderText($return);
 }
Пример #4
0
 public function executeJsonListAllocatable(sfWebRequest $request)
 {
     $elements = array();
     //adding cluster id filter
     $cid = $request->getParameter('cid');
     $nid = $request->getParameter('nid');
     $level = $request->getParameter('level');
     if (!$level) {
         $level = 'node';
     }
     //get the
     $filter = json_decode($request->getParameter('filter'), true);
     $criteria = new Criteria();
     $criteria->add(EtvaPhysicalvolumePeer::ALLOCATABLE, 1);
     $criteria->add(EtvaPhysicalvolumePeer::PVINIT, 1);
     foreach ($filter as $field => $value) {
         $column = EtvaPhysicalvolumePeer::translateFieldName(sfInflector::camelize($field), BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME);
         $criteria->add($column, $value);
     }
     if ($level == 'cluster') {
         $etva_cluster = EtvaClusterPeer::retrieveByPK($cid);
         $etva_pvs = $etva_cluster->getEtvaPhysicalvolumes($criteria);
     } elseif ($level == 'node') {
         $etva_node = EtvaNodePeer::retrieveByPK($nid);
         $etva_pvs = $etva_node->getEtvaNodePhysicalVolumesJoinEtvaPhysicalvolume($criteria);
     } else {
         return;
     }
     if (!$etva_pvs) {
         $msg_i18n = $this->getContext()->getI18N()->__(EtvaPhysicalvolumePeer::_NONE_AVAILABLE_);
         $info = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'info' => $msg_i18n, 'error' => $msg_i18n);
         if (sfConfig::get('sf_environment') == 'soap') {
             return json_encode($info);
         }
         $error = $this->setJsonError($info);
         return $this->renderText($error);
     }
     if (sfConfig::get('sf_environment') == 'soap') {
         foreach ($etva_pvs as $elem) {
             $etva_pv = $elem->getEtvaPhysicalVolume();
             $uuid = $etva_pv->getUuid();
             $id = $etva_pv->getId();
             $name = $etva_pv->getName();
             $pv = $etva_pv->getPv();
             $elements[$id] = array('id' => $id, 'pv' => $pv, 'name' => $name, 'uuid' => $uuid);
         }
     } else {
         foreach ($etva_pvs as $elem) {
             if ($level == 'node') {
                 $etva_pv = $elem->getEtvaPhysicalVolume();
             } elseif ($level == 'cluster') {
                 $etva_pv = $elem;
             }
             $uuid = $etva_pv->getUuid();
             $id = $etva_pv->getId();
             $name = $etva_pv->getName();
             $pv = $etva_pv->getPv();
             $elements[] = array('id' => $id, 'pv' => $pv, 'name' => $name, 'uuid' => $uuid);
         }
     }
     $result = array('success' => true, 'total' => count($elements), 'response' => $elements);
     $return = json_encode($result);
     if (sfConfig::get('sf_environment') == 'soap') {
         return $return;
     }
     $this->getResponse()->setHttpHeader('Content-type', 'application/json');
     return $this->renderText($return);
 }