package org.ovirt.engine.core.common.businessentities; import org.ovirt.engine.core.common.utils.VmDeviceType; /** * General types of devices recognized by VDSM */ public enum VmDeviceGeneralType { /** * A hard disk, floppy or cdrom device */ DISK, /** * A network interface */ INTERFACE, /** * A video card */ VIDEO, /** * A graphics framebuffer type */ GRAPHICS, /** * A sound card or PC speaker */ SOUND, /** * An internal controller that usually provides a bus */ CONTROLLER, /** * A memory balloon device */ BALLOON, /** * A host-guest communication channel */ CHANNEL, /** * USB device redirection */ REDIR, /** * USB device redirection channel */ REDIRDEV, /** * A console device */ CONSOLE, /** * A random number generator device */ RNG, /** * A smartcard device */ SMARTCARD, /** * A watchdog device */ WATCHDOG, /** * A pass-through host device */ HOSTDEV, /** * A memory device */ MEMORY, /** * Unknown device */ UNKNOWN; /** * Database value */ private String value; /** * Creates an instance and assigns database value */ private VmDeviceGeneralType() { value = name().toLowerCase(); } /** * Converts enum type to string value to save in database */ public String getValue() { return value; } /** * Sets database value. Should be used only for UNKNOWN type!!! */ private void setValue(String value) { this.value = value; } /** * Converts string representation to enum value */ public static VmDeviceGeneralType forValue(String value) { VmDeviceGeneralType type; try { type = VmDeviceGeneralType.valueOf(value.toUpperCase()); } catch (IllegalArgumentException ex) { type = UNKNOWN; type.setValue(value); } return type; } /** * Converts {@code VmDeviceType} representation to enum value */ public static VmDeviceGeneralType forValue(VmDeviceType value) { VmDeviceGeneralType type; switch (value) { case DISK: case CDROM: case FLOPPY: type = DISK; break; case INTERFACE: case BRIDGE: type = INTERFACE; break; case VIDEO: case CIRRUS: case QXL: type = VIDEO; break; case SOUND: case AC97: case ICH6: type = SOUND; break; case CONTROLLER: case USB: case VIRTIOSCSI: case VIRTIOSERIAL: type = CONTROLLER; break; case BALLOON: case MEMBALLOON: type = BALLOON; break; case REDIR: case SPICEVMC: type = REDIR; break; case CHANNEL: type = CHANNEL; break; case SMARTCARD: type = SMARTCARD; break; case WATCHDOG: type = WATCHDOG; break; case HOST_DEVICE: type = HOSTDEV; break; default: // try to guess from String value type = forValue(value.getName()); break; } return type; } }