public function fix_consistency(EtvaNode $etva_node) { $ok = 1; $etva_lv = $this->etva_lv; $lv = $etva_lv->getLv(); $etva_vg = $etva_lv->getEtvaVolumegroup(); /* $vgInfo = $returned_object[EtvaLogicalvolume::VOLUMEGROUP_MAP]; $vg_info = (array) $vgInfo;*/ // removes logical volume $insert_id = $etva_lv->getId(); $uuid = $etva_lv->getUuid(); $lv_type = $etva_lv->getStorageType(); $etva_lv->delete(); // remove snapshots $snapshotsObject = $returned_object['SNAPSHOTS']; $snapshotsArray = (array) $snapshotsObject; foreach ($snapshotsArray as $slv_obj) { $slv = (array) $slv_obj; if ($etva_slv = $etva_node->retrieveLogicalvolumeByLv($slv[EtvaLogicalvolume::LV_MAP])) { $etva_slv->delete(); } } /*$etva_vg->initData($vg_info); $etva_vg->save();*/ if ($lv_type != EtvaLogicalvolume::STORAGE_TYPE_LOCAL_MAP) { /* * need syncronize device table */ $this->sync_device_table_afterremove($etva_node); /* * if storage type not local send update to nodes... */ $bulk_update = $this->send_update($etva_node); if (!empty($bulk_update)) { $errors = $this->get_missing_lv_devices(); $msg_i18n = $errors ? $errors['message'] : sfContext::getInstance()->getI18N()->__(EtvaLogicalvolumePeer::_ERR_SHARED_INCONSISTENT_, array('%info%' => ' processResponse')); $response = array('success' => false, 'agent' => $etva_node->getName(), 'info' => $msg_i18n, 'msg_i18n' => $msg_i18n); $ok = 0; } } // Update volume groups $vg_va = new EtvaVolumegroup_VA($etva_vg); $bulk_update = $vg_va->send_update($etva_node); // TODO call fix consistency volume group if ($ok == 0) { $result = $response; $errors = $this->get_missing_lv_devices(); if ($errors) { $message = $errors['message']; sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent($etva_node->getName(), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); return array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $message, 'action' => 'reload', 'info' => $message); } else { $message = Etva::getLogMessage(array('name' => $lv, 'info' => $response['info']), $msg_err_type); $msg_i18n = sfContext::getInstance()->getI18N()->__($msg_err_type, array('%name%' => $lv, '%info%' => $response['info'])); $result['error'] = $msg_i18n; sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent($response['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); return $result; } } else { //notify system log $message = Etva::getLogMessage(array('name' => $lv), $msg_ok_type); $msg_i18n = sfContext::getInstance()->getI18N()->__($msg_ok_type, array('%name%' => $lv)); sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent($etva_node->getName(), 'event.log', array('message' => $message))); $result = array('success' => true, 'agent' => $response['agent'], 'response' => $msg_i18n, 'insert_id' => $insert_id, 'uuid' => $uuid); return $result; } }