示例#1
0
 public function preDelete(PropelPDO $con = null)
 {
     /*
      * delete lvs that are not shared....numVgs=1 only
      *
      */
     $criteria = new Criteria();
     $criteria->add(EtvaLogicalvolumePeer::CLUSTER_ID, $this->getClusterId());
     $criteria->addGroupByColumn(EtvaNodeLogicalvolumePeer::LOGICALVOLUME_ID);
     $criteria->addAsColumn('numLvs', 'COUNT(' . EtvaNodeLogicalvolumePeer::LOGICALVOLUME_ID . ')');
     $criteria->addHaving($criteria->getNewCriterion(EtvaNodeLogicalvolumePeer::LOGICALVOLUME_ID, 'numLvs=1', Criteria::CUSTOM));
     $records = EtvaNodeLogicalvolumePeer::doSelectJoinEtvaLogicalvolume($criteria);
     foreach ($records as $record) {
         $etva_lv = $record->getEtvaLogicalvolume();
         if ($record->getNodeId() == $this->getId()) {
             $etva_lv->delete();
         }
     }
     /*
      * delete vgs that are not shared....numVgs=1 only
      *
      */
     $criteria = new Criteria();
     $criteria->add(EtvaVolumegroupPeer::CLUSTER_ID, $this->getClusterId());
     $criteria->addGroupByColumn(EtvaNodeVolumegroupPeer::VOLUMEGROUP_ID);
     $criteria->addAsColumn('numVgs', 'COUNT(' . EtvaNodeVolumegroupPeer::VOLUMEGROUP_ID . ')');
     $criteria->addHaving($criteria->getNewCriterion(EtvaNodeVolumegroupPeer::VOLUMEGROUP_ID, 'numVgs=1', Criteria::CUSTOM));
     $records = EtvaNodeVolumegroupPeer::doSelectJoinEtvaVolumegroup($criteria);
     foreach ($records as $record) {
         $etva_vg = $record->getEtvaVolumegroup();
         if ($record->getNodeId() == $this->getId()) {
             $etva_vg->delete();
         }
     }
     /*
      * delete pvs that are not shared....numVgs=1 only
      *
      */
     $criteria = new Criteria();
     $criteria->add(EtvaPhysicalvolumePeer::CLUSTER_ID, $this->getClusterId());
     $criteria->addGroupByColumn(EtvaNodePhysicalvolumePeer::PHYSICALVOLUME_ID);
     $criteria->addAsColumn('numPvs', 'COUNT(' . EtvaNodePhysicalvolumePeer::PHYSICALVOLUME_ID . ')');
     $criteria->addHaving($criteria->getNewCriterion(EtvaNodePhysicalvolumePeer::PHYSICALVOLUME_ID, 'numPvs=1', Criteria::CUSTOM));
     $records = EtvaNodePhysicalvolumePeer::doSelectJoinEtvaPhysicalvolume($criteria);
     foreach ($records as $record) {
         $etva_pv = $record->getEtvaPhysicalvolume();
         if ($record->getNodeId() == $this->getId()) {
             $etva_pv->delete();
         }
     }
     // delete rra node dir and cpu load rrd
     $this->deleteRRAFiles();
     return true;
 }
示例#2
0
 public function get_sync_volumegroups($force_sync = false, $sharedonly = false)
 {
     $elements = array();
     $criteria = new Criteria();
     $criteria->add(EtvaNodeVolumegroupPeer::NODE_ID, $this->etva_node->getId());
     $db_node_vgs = EtvaNodeVolumegroupPeer::doSelectJoinEtvaVolumegroup($criteria);
     $force_flag = $force_sync ? 1 : 0;
     $response_vgpvs = $this->etva_node->soapSend(EtvaVolumegroup_VA::GET_SYNC_VOLUMEGROUPS, array('force' => $force_flag));
     if ($response_vgpvs['success']) {
         $vgpvs = $response_vgpvs['response'];
         foreach ($vgpvs as $k => $e) {
             $vgpv = (array) $e;
             if (!$sharedonly || $vgpv[EtvaVolumegroup::STORAGE_TYPE_MAP] != EtvaVolumegroup::STORAGE_TYPE_LOCAL_MAP) {
                 $found = false;
                 foreach ($db_node_vgs as $data) {
                     $vg = $data->getEtvaVolumegroup();
                     if ($vgpv[EtvaVolumegroup::STORAGE_TYPE_MAP] == $vg->getStorageType()) {
                         if ($vg->getUuid() && $vgpv[EtvaVolumegroup::UUID_MAP]) {
                             if ($vg->getUuid() == $vgpv[EtvaVolumegroup::UUID_MAP]) {
                                 $found = true;
                             }
                         } else {
                             if ($vg->getVg() == $vgpv[EtvaVolumegroup::VG_MAP]) {
                                 $found = true;
                             }
                         }
                     }
                 }
                 $etva_vg = new EtvaVolumegroup();
                 $etva_vg->initData($vgpv);
                 $arr_e = $etva_vg->_VA();
                 $arr_e['registered'] = $found;
                 $elements[] = $arr_e;
             }
         }
     }
     foreach ($db_node_vgpvs as $data) {
         $vg = $data->getEtvaVolumegroup();
         if (!$sharedonly || $vg->getStorageType() != EtvaVolumegroup::STORAGE_TYPE_LOCAL_MAP) {
             $found = false;
             foreach ($vgpvs as $k => $e) {
                 $vgpv = (array) $e;
                 if ($vgpv[EtvaVolumegroup::STORAGE_TYPE_MAP] == $vg->getStorageType()) {
                     if ($vg->getUuid() && $vgpv[EtvaVolumegroup::UUID_MAP]) {
                         if ($vg->getUuid() == $vgpv[EtvaVolumegroup::UUID_MAP]) {
                             $found = true;
                         }
                     } else {
                         if ($vg->getVg() == $vgpv[EtvaVolumegroup::VG_MAP]) {
                             $found = true;
                         }
                     }
                 }
             }
             if (!$found) {
                 $arr_e = $vg->_VA();
                 $arr_e['inconsistent'] = true;
                 $arr_e['registered'] = true;
                 $elements[] = $arr_e;
             }
         }
     }
     return $elements;
 }