private void DiskInterface_SelectedItemChanged() {
    boolean isLunDisk = getDiskStorageType().getEntity() == DiskStorageType.LUN;
    DiskInterface diskInterface = getDiskInterface().getSelectedItem();
    getIsSgIoUnfiltered()
        .setIsAvailable(isLunDisk && DiskInterface.VirtIO_SCSI.equals(diskInterface));
    getIsScsiPassthrough()
        .setIsAvailable(isLunDisk && DiskInterface.VirtIO_SCSI.equals(diskInterface));
    getIsUsingScsiReservation()
        .setIsAvailable(isLunDisk && DiskInterface.VirtIO_SCSI.equals(diskInterface));

    updateScsiPassthroguhChangeability();
    updateScsiReservationChangeability();
    updateReadOnlyChangeability();
    updatePlugChangeability();
  }
  public void flush() {
    switch (getDiskStorageType().getEntity()) {
      case LUN:
        LunDisk lunDisk = getLunDisk();
        DiskInterface diskInterface = getDiskInterface().getSelectedItem();
        if (DiskInterface.VirtIO_SCSI.equals(diskInterface)) {
          lunDisk.setSgio(
              !getIsScsiPassthrough().getEntity()
                  ? null
                  : getIsSgIoUnfiltered().getEntity()
                      ? ScsiGenericIO.UNFILTERED
                      : ScsiGenericIO.FILTERED);
          lunDisk.setUsingScsiReservation(getIsUsingScsiReservation().getEntity());
        } else {
          getIsScsiPassthrough().setEntity(false);
          lunDisk.setSgio(null);
          lunDisk.setUsingScsiReservation(false);
        }
        setDisk(lunDisk);
        break;
      case CINDER:
        CinderDisk cinderDisk = getCinderDisk();
        updateQuota(cinderDisk);
        updateDiskSize(cinderDisk);
        setDisk(cinderDisk);
        break;
      case IMAGE:
        DiskImage diskImage = getDiskImage();
        updateQuota(diskImage);
        updateDiskSize(diskImage);
        setDisk(diskImage);
        break;
    }

    getDisk().setDiskAlias(getAlias().getEntity());
    getDisk().setDiskDescription(getDescription().getEntity());
    getDisk().setDiskInterface(getDiskInterface().getSelectedItem());
    getDisk().setWipeAfterDelete(getIsWipeAfterDelete().getEntity());
    getDisk().setBoot(getIsBootable().getEntity());
    getDisk().setShareable(getIsShareable().getEntity());
    getDisk().setPlugged(getIsPlugged().getEntity());
    getDisk().setPropagateErrors(PropagateErrors.Off);
    getDisk().setReadOnly(getIsReadOnly().getIsAvailable() ? getIsReadOnly().getEntity() : null);
  }