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; }
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; }