@Override protected boolean canDoAction() { boolean returnValue = super.canDoAction() && CheckStoragePool(); getReturnValue() .getCanDoActionMessages() .remove(VdcBllMessages.VAR__ACTION__RECONSTRUCT_MASTER.toString()); addCanDoActionMessage(VdcBllMessages.VAR__ACTION__RECOVER_POOL); addCanDoActionMessage(VdcBllMessages.VAR__TYPE__STORAGE__DOMAIN); if (returnValue) { if (getStoragePool().getstatus() == StoragePoolStatus.Uninitialized) { addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_STATUS_ILLEGAL); return false; } else if (getStorageDomain() != null && getStorageDomain().getstatus() != null && getStorageDomain().getstatus() == StorageDomainStatus.Active) { getReturnValue() .getCanDoActionMessages() .add(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_STATUS_ILLEGAL2.toString()); returnValue = false; } else if (electNewMaster() != null) { getReturnValue() .getCanDoActionMessages() .add( VdcBllMessages.STORAGE_POOL_REINITIALIZE_WITH_MORE_THAN_ONE_DATA_DOMAIN.toString()); returnValue = false; } else { storage_domains domain = DbFacade.getInstance().getStorageDomainDAO().get(_newMasterStorageDomainId); if (domain.getstorage_domain_shared_status() != StorageDomainSharedStatus.Unattached) { addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_STATUS_ILLEGAL); returnValue = false; } else if (domain.getstorage_type() != getStoragePool().getstorage_pool_type()) { addCanDoActionMessage( VdcBllMessages.ERROR_CANNOT_RECOVERY_STORAGE_POOL_STORAGE_TYPE_MISSMATCH); returnValue = false; } } } return returnValue; }
protected IStorageHelper getStorageHelper(storage_domains storageDomain) { return StorageHelperDirector.getInstance().getItem(storageDomain.getstorage_type()); }