Exemplo n.º 1
0
 public static ArrayList<storage_domains> FindAllStorageDomainsBySharedStatus(
     ArrayList<storage_domains> items, StorageDomainSharedStatus status) {
   ArrayList<storage_domains> ret = new ArrayList<storage_domains>();
   for (storage_domains i : items) {
     if (i.getstorage_domain_shared_status() == status) {
       ret.add(i);
     }
   }
   return ret;
 }
  @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;
  }