Пример #1
0
  @Override
  public void store(IFrontendActionAsyncCallback callback) {
    if (getProgress() != null || !validate()) {
      return;
    }

    ArrayList<VdcActionType> actionTypes = new ArrayList<>();
    ArrayList<VdcActionParametersBase> paramerterList = new ArrayList<>();
    ArrayList<IFrontendActionAsyncCallback> callbacks = new ArrayList<>();

    IFrontendActionAsyncCallback onFinishCallback =
        callback != null
            ? callback
            : new IFrontendActionAsyncCallback() {
              @Override
              public void executed(FrontendActionAsyncResult result) {
                NewDiskModel diskModel = (NewDiskModel) result.getState();
                diskModel.stopProgress();
                diskModel.cancel();
              }
            };

    List<EntityModel<DiskModel>> disksToAttach = getSelectedDisks();
    for (int i = 0; i < disksToAttach.size(); i++) {
      DiskModel disk = disksToAttach.get(i).getEntity();

      /*
      IDE disks can be activated only when the VM is down.
      Other disks can be hot plugged.
       */
      boolean activate = false;
      if (getIsPlugged().getEntity()) {
        activate =
            disk.getDisk().getDiskInterface() == DiskInterface.IDE
                ? getVm().getStatus() == VMStatus.Down
                : true;
      }

      // Disk is attached to VM as read only or not, null is applicable only for floating disks
      // but this is not a case here.
      AttachDetachVmDiskParameters parameters =
          new AttachDetachVmDiskParameters(
              getVm().getId(),
              disk.getDisk().getId(),
              activate,
              Boolean.TRUE.equals(disk.getDisk().getReadOnly()));

      actionTypes.add(VdcActionType.AttachDiskToVm);
      paramerterList.add(parameters);
      callbacks.add(i == disksToAttach.size() - 1 ? onFinishCallback : null);
    }

    startProgress();

    Frontend.getInstance().runMultipleActions(actionTypes, paramerterList, callbacks, null, this);
  }
  @Override
  public void eventRaised(Event<? extends EventArgs> ev, Object sender, EventArgs args) {
    super.eventRaised(ev, sender, args);

    if (ev.matchesDefinition(HasEntity.entityChangedEventDefinition)) {
      if (sender == getIsReadOnly()) {
        updateScsiPassthroguhChangeability();
      } else if (sender == getIsScsiPassthrough()) {
        updateScsiPassthroguhChangeability();
        updateSgIoUnfilteredChangeability();
        updateReadOnlyChangeability();
        updateScsiReservationChangeability();
      } else if (sender == getIsSgIoUnfiltered()) {
        updateScsiReservationChangeability();
      } else if (sender == getDiskStorageType()) {
        diskStorageType_EntityChanged();
      }
    } else if (ev.matchesDefinition(ListModel.selectedItemChangedEventDefinition)) {
      if (sender == getVolumeType()) {
        volumeType_SelectedItemChanged();
      } else if (sender == getDiskInterface()) {
        DiskInterface_SelectedItemChanged();
      } else if (sender == getDataCenter()) {
        datacenter_SelectedItemChanged();
      } else if (sender == getStorageDomain()) {
        storageDomain_SelectedItemChanged();
      }
    }
  }
  @Override
  public void executeCommand(UICommand command) {
    super.executeCommand(command);

    if ("OnSave".equals(command.getName())) { // $NON-NLS-1$
      onSave();
    }
    if ("OnForceSave".equals(command.getName())) { // $NON-NLS-1$
      onForceSave();
    } else if ("CancelConfirm".equals(command.getName())) { // $NON-NLS-1$
      cancelConfirm();
    }
  }
  private void commonInitialize() {
    super.initialize();

    // Create and set commands
    UICommand onSaveCommand = new UICommand("OnSave", this); // $NON-NLS-1$
    onSaveCommand.setTitle(constants.ok());
    onSaveCommand.setIsDefault(true);
    getCommands().add(onSaveCommand);
    getCommands().add(getCancelCommand());

    // Update data
    if (getVm() != null) {
      updateBootableDiskAvailable();
      getIsUsingScsiReservation().setIsAvailable(true);
    }
    updateDatacenters();
  }