protected void updateReadOnlyChangeability() { DiskInterface diskInterface = getDiskInterface().getSelectedItem(); if (diskInterface == DiskInterface.IDE) { getIsReadOnly() .setChangeProhibitionReason(constants.cannotEnableIdeInterfaceForReadOnlyDisk()); getIsReadOnly().setIsChangeable(false); getIsReadOnly().setEntity(false); return; } boolean isDirectLUN = getDiskStorageType().getEntity() == DiskStorageType.LUN; boolean isScsiPassthrough = getIsScsiPassthrough().getEntity(); if (diskInterface == DiskInterface.VirtIO_SCSI && isDirectLUN && isScsiPassthrough) { getIsReadOnly() .setChangeProhibitionReason(constants.cannotEnableReadonlyWhenScsiPassthroughEnabled()); getIsReadOnly().setIsChangeable(false); getIsReadOnly().setEntity(false); return; } if (isVmAttachedToPool() && !getIsNew()) { getIsReadOnly().setIsChangeable(false); } else { getIsReadOnly().setIsChangeable(isEditEnabled()); } getIsReadOnly().setEntity(getIsNew() ? Boolean.FALSE : getDisk().getReadOnly()); }