示例#1
0
 public function getSharedVgs()
 {
     /*
      *
      * get shared vgs of defined cluster.         
      */
     $criteria = new Criteria();
     $criteria->add(EtvaClusterPeer::ID, $this->getId());
     $criteria->addJoin(EtvaVolumegroupPeer::CLUSTER_ID, EtvaClusterPeer::ID);
     $criteria->add(EtvaVolumegroupPeer::STORAGE_TYPE, EtvaVolumegroup::STORAGE_TYPE_LOCAL_MAP, Criteria::ALT_NOT_EQUAL);
     $etva_shared_vgs = EtvaVolumegroupPeer::doSelect($criteria);
     return $etva_shared_vgs;
 }
示例#2
0
 public function executeJsonListFree(sfWebRequest $request)
 {
     $cid = $request->getParameter('cid');
     $level = $request->getParameter('level');
     $nid = $request->getParameter('nid');
     $gtMB = $request->getParameter('gtMB');
     if (!$level) {
         //back compatibility
         $level = 'node';
     }
     $elements = array();
     $criteria = new Criteria();
     if ($level == 'node') {
         $criteria->add(EtvaNodeVolumegroupPeer::NODE_ID, $nid);
         $criteria->addJoin(EtvaNodeVolumegroupPeer::VOLUMEGROUP_ID, EtvaVolumegroupPeer::ID);
     } elseif ($level == 'cluster') {
         $criteria->add(EtvaVolumegroupPeer::CLUSTER_ID, $cid);
         $criteria->addAnd(EtvaVolumeGroupPeer::STORAGE_TYPE, EtvaVolumeGroup::STORAGE_TYPE_LOCAL_MAP, Criteria::ALT_NOT_EQUAL);
     } else {
         return;
     }
     $criteria->add(EtvaVolumegroupPeer::FREESIZE, 0, Criteria::NOT_EQUAL);
     if ($gtMB) {
         $criteria->addAnd(EtvaVolumegroupPeer::FREESIZE, intval($gtMB) * 1024 * 1024, Criteria::GREATER_THAN);
     }
     $nodisk = $request->getParameter('nodisk');
     if ($nodisk) {
         $criteria->add(EtvaVolumegroupPeer::VG, sfConfig::get('app_volgroup_disk_flag'), Criteria::NOT_EQUAL);
     }
     $etva_vgs = EtvaVolumegroupPeer::doSelect($criteria);
     if (!$etva_vgs && !$gtMB) {
         $msg_i18n = $this->getContext()->getI18N()->__(EtvaVolumegroupPeer::_NOTAVAILABLE_);
         $info = array('success' => false, 'error' => $msg_i18n);
         $error = $this->setJsonError($info);
         //,204); // 204 => no content
         return $this->renderText($error);
     }
     foreach ($etva_vgs as $elem) {
         $id = $elem->getId();
         $size = $elem->getFreesize();
         $txt = $elem->getVg();
         $elements[] = array('id' => $id, 'name' => $txt, 'value' => $size);
     }
     $result = array('total' => count($elements), 'data' => $elements);
     $return = json_encode($result);
     $this->getResponse()->setHttpHeader('Content-type', 'application/json');
     return $this->renderText($return);
 }