# coding: utf-8

"""
    KubeVirt API

    This is KubeVirt API an add-on for Kubernetes.  # noqa: E501

    OpenAPI spec version: 1.0.0
    Contact: kubevirt-dev@googlegroups.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from kubevirt.configuration import Configuration


class V1beta1DevicePreferences(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'preferred_autoattach_graphics_device': 'bool',
        'preferred_autoattach_input_device': 'bool',
        'preferred_autoattach_mem_balloon': 'bool',
        'preferred_autoattach_pod_interface': 'bool',
        'preferred_autoattach_serial_console': 'bool',
        'preferred_block_multi_queue': 'bool',
        'preferred_cdrom_bus': 'str',
        'preferred_disable_hotplug': 'bool',
        'preferred_disk_block_size': 'V1BlockSize',
        'preferred_disk_bus': 'str',
        'preferred_disk_cache': 'str',
        'preferred_disk_dedicated_io_thread': 'bool',
        'preferred_disk_io': 'str',
        'preferred_input_bus': 'str',
        'preferred_input_type': 'str',
        'preferred_interface_masquerade': 'V1InterfaceMasquerade',
        'preferred_interface_model': 'str',
        'preferred_lun_bus': 'str',
        'preferred_network_interface_multi_queue': 'bool',
        'preferred_panic_device_model': 'str',
        'preferred_rng': 'V1Rng',
        'preferred_sound_model': 'str',
        'preferred_tpm': 'V1TPMDevice',
        'preferred_use_virtio_transitional': 'bool',
        'preferred_virtual_gpu_options': 'V1VGPUOptions'
    }

    attribute_map = {
        'preferred_autoattach_graphics_device': 'preferredAutoattachGraphicsDevice',
        'preferred_autoattach_input_device': 'preferredAutoattachInputDevice',
        'preferred_autoattach_mem_balloon': 'preferredAutoattachMemBalloon',
        'preferred_autoattach_pod_interface': 'preferredAutoattachPodInterface',
        'preferred_autoattach_serial_console': 'preferredAutoattachSerialConsole',
        'preferred_block_multi_queue': 'preferredBlockMultiQueue',
        'preferred_cdrom_bus': 'preferredCdromBus',
        'preferred_disable_hotplug': 'preferredDisableHotplug',
        'preferred_disk_block_size': 'preferredDiskBlockSize',
        'preferred_disk_bus': 'preferredDiskBus',
        'preferred_disk_cache': 'preferredDiskCache',
        'preferred_disk_dedicated_io_thread': 'preferredDiskDedicatedIoThread',
        'preferred_disk_io': 'preferredDiskIO',
        'preferred_input_bus': 'preferredInputBus',
        'preferred_input_type': 'preferredInputType',
        'preferred_interface_masquerade': 'preferredInterfaceMasquerade',
        'preferred_interface_model': 'preferredInterfaceModel',
        'preferred_lun_bus': 'preferredLunBus',
        'preferred_network_interface_multi_queue': 'preferredNetworkInterfaceMultiQueue',
        'preferred_panic_device_model': 'preferredPanicDeviceModel',
        'preferred_rng': 'preferredRng',
        'preferred_sound_model': 'preferredSoundModel',
        'preferred_tpm': 'preferredTPM',
        'preferred_use_virtio_transitional': 'preferredUseVirtioTransitional',
        'preferred_virtual_gpu_options': 'preferredVirtualGPUOptions'
    }

    def __init__(self, preferred_autoattach_graphics_device=None, preferred_autoattach_input_device=None, preferred_autoattach_mem_balloon=None, preferred_autoattach_pod_interface=None, preferred_autoattach_serial_console=None, preferred_block_multi_queue=None, preferred_cdrom_bus=None, preferred_disable_hotplug=None, preferred_disk_block_size=None, preferred_disk_bus=None, preferred_disk_cache=None, preferred_disk_dedicated_io_thread=None, preferred_disk_io=None, preferred_input_bus=None, preferred_input_type=None, preferred_interface_masquerade=None, preferred_interface_model=None, preferred_lun_bus=None, preferred_network_interface_multi_queue=None, preferred_panic_device_model=None, preferred_rng=None, preferred_sound_model=None, preferred_tpm=None, preferred_use_virtio_transitional=None, preferred_virtual_gpu_options=None, _configuration=None):  # noqa: E501
        """V1beta1DevicePreferences - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._preferred_autoattach_graphics_device = None
        self._preferred_autoattach_input_device = None
        self._preferred_autoattach_mem_balloon = None
        self._preferred_autoattach_pod_interface = None
        self._preferred_autoattach_serial_console = None
        self._preferred_block_multi_queue = None
        self._preferred_cdrom_bus = None
        self._preferred_disable_hotplug = None
        self._preferred_disk_block_size = None
        self._preferred_disk_bus = None
        self._preferred_disk_cache = None
        self._preferred_disk_dedicated_io_thread = None
        self._preferred_disk_io = None
        self._preferred_input_bus = None
        self._preferred_input_type = None
        self._preferred_interface_masquerade = None
        self._preferred_interface_model = None
        self._preferred_lun_bus = None
        self._preferred_network_interface_multi_queue = None
        self._preferred_panic_device_model = None
        self._preferred_rng = None
        self._preferred_sound_model = None
        self._preferred_tpm = None
        self._preferred_use_virtio_transitional = None
        self._preferred_virtual_gpu_options = None
        self.discriminator = None

        if preferred_autoattach_graphics_device is not None:
            self.preferred_autoattach_graphics_device = preferred_autoattach_graphics_device
        if preferred_autoattach_input_device is not None:
            self.preferred_autoattach_input_device = preferred_autoattach_input_device
        if preferred_autoattach_mem_balloon is not None:
            self.preferred_autoattach_mem_balloon = preferred_autoattach_mem_balloon
        if preferred_autoattach_pod_interface is not None:
            self.preferred_autoattach_pod_interface = preferred_autoattach_pod_interface
        if preferred_autoattach_serial_console is not None:
            self.preferred_autoattach_serial_console = preferred_autoattach_serial_console
        if preferred_block_multi_queue is not None:
            self.preferred_block_multi_queue = preferred_block_multi_queue
        if preferred_cdrom_bus is not None:
            self.preferred_cdrom_bus = preferred_cdrom_bus
        if preferred_disable_hotplug is not None:
            self.preferred_disable_hotplug = preferred_disable_hotplug
        if preferred_disk_block_size is not None:
            self.preferred_disk_block_size = preferred_disk_block_size
        if preferred_disk_bus is not None:
            self.preferred_disk_bus = preferred_disk_bus
        if preferred_disk_cache is not None:
            self.preferred_disk_cache = preferred_disk_cache
        if preferred_disk_dedicated_io_thread is not None:
            self.preferred_disk_dedicated_io_thread = preferred_disk_dedicated_io_thread
        if preferred_disk_io is not None:
            self.preferred_disk_io = preferred_disk_io
        if preferred_input_bus is not None:
            self.preferred_input_bus = preferred_input_bus
        if preferred_input_type is not None:
            self.preferred_input_type = preferred_input_type
        if preferred_interface_masquerade is not None:
            self.preferred_interface_masquerade = preferred_interface_masquerade
        if preferred_interface_model is not None:
            self.preferred_interface_model = preferred_interface_model
        if preferred_lun_bus is not None:
            self.preferred_lun_bus = preferred_lun_bus
        if preferred_network_interface_multi_queue is not None:
            self.preferred_network_interface_multi_queue = preferred_network_interface_multi_queue
        if preferred_panic_device_model is not None:
            self.preferred_panic_device_model = preferred_panic_device_model
        if preferred_rng is not None:
            self.preferred_rng = preferred_rng
        if preferred_sound_model is not None:
            self.preferred_sound_model = preferred_sound_model
        if preferred_tpm is not None:
            self.preferred_tpm = preferred_tpm
        if preferred_use_virtio_transitional is not None:
            self.preferred_use_virtio_transitional = preferred_use_virtio_transitional
        if preferred_virtual_gpu_options is not None:
            self.preferred_virtual_gpu_options = preferred_virtual_gpu_options

    @property
    def preferred_autoattach_graphics_device(self):
        """Gets the preferred_autoattach_graphics_device of this V1beta1DevicePreferences.  # noqa: E501

        PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice  # noqa: E501

        :return: The preferred_autoattach_graphics_device of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_autoattach_graphics_device

    @preferred_autoattach_graphics_device.setter
    def preferred_autoattach_graphics_device(self, preferred_autoattach_graphics_device):
        """Sets the preferred_autoattach_graphics_device of this V1beta1DevicePreferences.

        PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice  # noqa: E501

        :param preferred_autoattach_graphics_device: The preferred_autoattach_graphics_device of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_autoattach_graphics_device = preferred_autoattach_graphics_device

    @property
    def preferred_autoattach_input_device(self):
        """Gets the preferred_autoattach_input_device of this V1beta1DevicePreferences.  # noqa: E501

        PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice  # noqa: E501

        :return: The preferred_autoattach_input_device of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_autoattach_input_device

    @preferred_autoattach_input_device.setter
    def preferred_autoattach_input_device(self, preferred_autoattach_input_device):
        """Sets the preferred_autoattach_input_device of this V1beta1DevicePreferences.

        PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice  # noqa: E501

        :param preferred_autoattach_input_device: The preferred_autoattach_input_device of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_autoattach_input_device = preferred_autoattach_input_device

    @property
    def preferred_autoattach_mem_balloon(self):
        """Gets the preferred_autoattach_mem_balloon of this V1beta1DevicePreferences.  # noqa: E501

        PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon  # noqa: E501

        :return: The preferred_autoattach_mem_balloon of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_autoattach_mem_balloon

    @preferred_autoattach_mem_balloon.setter
    def preferred_autoattach_mem_balloon(self, preferred_autoattach_mem_balloon):
        """Sets the preferred_autoattach_mem_balloon of this V1beta1DevicePreferences.

        PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon  # noqa: E501

        :param preferred_autoattach_mem_balloon: The preferred_autoattach_mem_balloon of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_autoattach_mem_balloon = preferred_autoattach_mem_balloon

    @property
    def preferred_autoattach_pod_interface(self):
        """Gets the preferred_autoattach_pod_interface of this V1beta1DevicePreferences.  # noqa: E501

        PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface  # noqa: E501

        :return: The preferred_autoattach_pod_interface of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_autoattach_pod_interface

    @preferred_autoattach_pod_interface.setter
    def preferred_autoattach_pod_interface(self, preferred_autoattach_pod_interface):
        """Sets the preferred_autoattach_pod_interface of this V1beta1DevicePreferences.

        PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface  # noqa: E501

        :param preferred_autoattach_pod_interface: The preferred_autoattach_pod_interface of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_autoattach_pod_interface = preferred_autoattach_pod_interface

    @property
    def preferred_autoattach_serial_console(self):
        """Gets the preferred_autoattach_serial_console of this V1beta1DevicePreferences.  # noqa: E501

        PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole  # noqa: E501

        :return: The preferred_autoattach_serial_console of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_autoattach_serial_console

    @preferred_autoattach_serial_console.setter
    def preferred_autoattach_serial_console(self, preferred_autoattach_serial_console):
        """Sets the preferred_autoattach_serial_console of this V1beta1DevicePreferences.

        PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole  # noqa: E501

        :param preferred_autoattach_serial_console: The preferred_autoattach_serial_console of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_autoattach_serial_console = preferred_autoattach_serial_console

    @property
    def preferred_block_multi_queue(self):
        """Gets the preferred_block_multi_queue of this V1beta1DevicePreferences.  # noqa: E501

        PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.  # noqa: E501

        :return: The preferred_block_multi_queue of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_block_multi_queue

    @preferred_block_multi_queue.setter
    def preferred_block_multi_queue(self, preferred_block_multi_queue):
        """Sets the preferred_block_multi_queue of this V1beta1DevicePreferences.

        PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.  # noqa: E501

        :param preferred_block_multi_queue: The preferred_block_multi_queue of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_block_multi_queue = preferred_block_multi_queue

    @property
    def preferred_cdrom_bus(self):
        """Gets the preferred_cdrom_bus of this V1beta1DevicePreferences.  # noqa: E501

        PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.  # noqa: E501

        :return: The preferred_cdrom_bus of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_cdrom_bus

    @preferred_cdrom_bus.setter
    def preferred_cdrom_bus(self, preferred_cdrom_bus):
        """Sets the preferred_cdrom_bus of this V1beta1DevicePreferences.

        PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.  # noqa: E501

        :param preferred_cdrom_bus: The preferred_cdrom_bus of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_cdrom_bus = preferred_cdrom_bus

    @property
    def preferred_disable_hotplug(self):
        """Gets the preferred_disable_hotplug of this V1beta1DevicePreferences.  # noqa: E501

        PreferredDisableHotplug optionally defines the preferred value of DisableHotplug  # noqa: E501

        :return: The preferred_disable_hotplug of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_disable_hotplug

    @preferred_disable_hotplug.setter
    def preferred_disable_hotplug(self, preferred_disable_hotplug):
        """Sets the preferred_disable_hotplug of this V1beta1DevicePreferences.

        PreferredDisableHotplug optionally defines the preferred value of DisableHotplug  # noqa: E501

        :param preferred_disable_hotplug: The preferred_disable_hotplug of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_disable_hotplug = preferred_disable_hotplug

    @property
    def preferred_disk_block_size(self):
        """Gets the preferred_disk_block_size of this V1beta1DevicePreferences.  # noqa: E501

        PreferredBlockSize optionally defines the block size of Disk devices.  # noqa: E501

        :return: The preferred_disk_block_size of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: V1BlockSize
        """
        return self._preferred_disk_block_size

    @preferred_disk_block_size.setter
    def preferred_disk_block_size(self, preferred_disk_block_size):
        """Sets the preferred_disk_block_size of this V1beta1DevicePreferences.

        PreferredBlockSize optionally defines the block size of Disk devices.  # noqa: E501

        :param preferred_disk_block_size: The preferred_disk_block_size of this V1beta1DevicePreferences.  # noqa: E501
        :type: V1BlockSize
        """

        self._preferred_disk_block_size = preferred_disk_block_size

    @property
    def preferred_disk_bus(self):
        """Gets the preferred_disk_bus of this V1beta1DevicePreferences.  # noqa: E501

        PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.  # noqa: E501

        :return: The preferred_disk_bus of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_disk_bus

    @preferred_disk_bus.setter
    def preferred_disk_bus(self, preferred_disk_bus):
        """Sets the preferred_disk_bus of this V1beta1DevicePreferences.

        PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.  # noqa: E501

        :param preferred_disk_bus: The preferred_disk_bus of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_disk_bus = preferred_disk_bus

    @property
    def preferred_disk_cache(self):
        """Gets the preferred_disk_cache of this V1beta1DevicePreferences.  # noqa: E501

        PreferredCache optionally defines the DriverCache to be used by Disk devices.  # noqa: E501

        :return: The preferred_disk_cache of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_disk_cache

    @preferred_disk_cache.setter
    def preferred_disk_cache(self, preferred_disk_cache):
        """Sets the preferred_disk_cache of this V1beta1DevicePreferences.

        PreferredCache optionally defines the DriverCache to be used by Disk devices.  # noqa: E501

        :param preferred_disk_cache: The preferred_disk_cache of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_disk_cache = preferred_disk_cache

    @property
    def preferred_disk_dedicated_io_thread(self):
        """Gets the preferred_disk_dedicated_io_thread of this V1beta1DevicePreferences.  # noqa: E501

        PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices using the virtio bus.  # noqa: E501

        :return: The preferred_disk_dedicated_io_thread of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_disk_dedicated_io_thread

    @preferred_disk_dedicated_io_thread.setter
    def preferred_disk_dedicated_io_thread(self, preferred_disk_dedicated_io_thread):
        """Sets the preferred_disk_dedicated_io_thread of this V1beta1DevicePreferences.

        PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices using the virtio bus.  # noqa: E501

        :param preferred_disk_dedicated_io_thread: The preferred_disk_dedicated_io_thread of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_disk_dedicated_io_thread = preferred_disk_dedicated_io_thread

    @property
    def preferred_disk_io(self):
        """Gets the preferred_disk_io of this V1beta1DevicePreferences.  # noqa: E501

        PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.  # noqa: E501

        :return: The preferred_disk_io of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_disk_io

    @preferred_disk_io.setter
    def preferred_disk_io(self, preferred_disk_io):
        """Sets the preferred_disk_io of this V1beta1DevicePreferences.

        PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.  # noqa: E501

        :param preferred_disk_io: The preferred_disk_io of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_disk_io = preferred_disk_io

    @property
    def preferred_input_bus(self):
        """Gets the preferred_input_bus of this V1beta1DevicePreferences.  # noqa: E501

        PreferredInputBus optionally defines the preferred bus for Input devices.  # noqa: E501

        :return: The preferred_input_bus of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_input_bus

    @preferred_input_bus.setter
    def preferred_input_bus(self, preferred_input_bus):
        """Sets the preferred_input_bus of this V1beta1DevicePreferences.

        PreferredInputBus optionally defines the preferred bus for Input devices.  # noqa: E501

        :param preferred_input_bus: The preferred_input_bus of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_input_bus = preferred_input_bus

    @property
    def preferred_input_type(self):
        """Gets the preferred_input_type of this V1beta1DevicePreferences.  # noqa: E501

        PreferredInputType optionally defines the preferred type for Input devices.  # noqa: E501

        :return: The preferred_input_type of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_input_type

    @preferred_input_type.setter
    def preferred_input_type(self, preferred_input_type):
        """Sets the preferred_input_type of this V1beta1DevicePreferences.

        PreferredInputType optionally defines the preferred type for Input devices.  # noqa: E501

        :param preferred_input_type: The preferred_input_type of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_input_type = preferred_input_type

    @property
    def preferred_interface_masquerade(self):
        """Gets the preferred_interface_masquerade of this V1beta1DevicePreferences.  # noqa: E501

        PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.  # noqa: E501

        :return: The preferred_interface_masquerade of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: V1InterfaceMasquerade
        """
        return self._preferred_interface_masquerade

    @preferred_interface_masquerade.setter
    def preferred_interface_masquerade(self, preferred_interface_masquerade):
        """Sets the preferred_interface_masquerade of this V1beta1DevicePreferences.

        PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.  # noqa: E501

        :param preferred_interface_masquerade: The preferred_interface_masquerade of this V1beta1DevicePreferences.  # noqa: E501
        :type: V1InterfaceMasquerade
        """

        self._preferred_interface_masquerade = preferred_interface_masquerade

    @property
    def preferred_interface_model(self):
        """Gets the preferred_interface_model of this V1beta1DevicePreferences.  # noqa: E501

        PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.  # noqa: E501

        :return: The preferred_interface_model of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_interface_model

    @preferred_interface_model.setter
    def preferred_interface_model(self, preferred_interface_model):
        """Sets the preferred_interface_model of this V1beta1DevicePreferences.

        PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.  # noqa: E501

        :param preferred_interface_model: The preferred_interface_model of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_interface_model = preferred_interface_model

    @property
    def preferred_lun_bus(self):
        """Gets the preferred_lun_bus of this V1beta1DevicePreferences.  # noqa: E501

        PreferredLunBus optionally defines the preferred bus for Lun Disk devices.  # noqa: E501

        :return: The preferred_lun_bus of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_lun_bus

    @preferred_lun_bus.setter
    def preferred_lun_bus(self, preferred_lun_bus):
        """Sets the preferred_lun_bus of this V1beta1DevicePreferences.

        PreferredLunBus optionally defines the preferred bus for Lun Disk devices.  # noqa: E501

        :param preferred_lun_bus: The preferred_lun_bus of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_lun_bus = preferred_lun_bus

    @property
    def preferred_network_interface_multi_queue(self):
        """Gets the preferred_network_interface_multi_queue of this V1beta1DevicePreferences.  # noqa: E501

        PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.  # noqa: E501

        :return: The preferred_network_interface_multi_queue of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_network_interface_multi_queue

    @preferred_network_interface_multi_queue.setter
    def preferred_network_interface_multi_queue(self, preferred_network_interface_multi_queue):
        """Sets the preferred_network_interface_multi_queue of this V1beta1DevicePreferences.

        PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.  # noqa: E501

        :param preferred_network_interface_multi_queue: The preferred_network_interface_multi_queue of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_network_interface_multi_queue = preferred_network_interface_multi_queue

    @property
    def preferred_panic_device_model(self):
        """Gets the preferred_panic_device_model of this V1beta1DevicePreferences.  # noqa: E501

        PreferredPanicDeviceModel optionally defines the preferred panic device model to use with panic devices.  # noqa: E501

        :return: The preferred_panic_device_model of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_panic_device_model

    @preferred_panic_device_model.setter
    def preferred_panic_device_model(self, preferred_panic_device_model):
        """Sets the preferred_panic_device_model of this V1beta1DevicePreferences.

        PreferredPanicDeviceModel optionally defines the preferred panic device model to use with panic devices.  # noqa: E501

        :param preferred_panic_device_model: The preferred_panic_device_model of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_panic_device_model = preferred_panic_device_model

    @property
    def preferred_rng(self):
        """Gets the preferred_rng of this V1beta1DevicePreferences.  # noqa: E501

        PreferredRng optionally defines the preferred rng device to be used.  # noqa: E501

        :return: The preferred_rng of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: V1Rng
        """
        return self._preferred_rng

    @preferred_rng.setter
    def preferred_rng(self, preferred_rng):
        """Sets the preferred_rng of this V1beta1DevicePreferences.

        PreferredRng optionally defines the preferred rng device to be used.  # noqa: E501

        :param preferred_rng: The preferred_rng of this V1beta1DevicePreferences.  # noqa: E501
        :type: V1Rng
        """

        self._preferred_rng = preferred_rng

    @property
    def preferred_sound_model(self):
        """Gets the preferred_sound_model of this V1beta1DevicePreferences.  # noqa: E501

        PreferredSoundModel optionally defines the preferred model for Sound devices.  # noqa: E501

        :return: The preferred_sound_model of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: str
        """
        return self._preferred_sound_model

    @preferred_sound_model.setter
    def preferred_sound_model(self, preferred_sound_model):
        """Sets the preferred_sound_model of this V1beta1DevicePreferences.

        PreferredSoundModel optionally defines the preferred model for Sound devices.  # noqa: E501

        :param preferred_sound_model: The preferred_sound_model of this V1beta1DevicePreferences.  # noqa: E501
        :type: str
        """

        self._preferred_sound_model = preferred_sound_model

    @property
    def preferred_tpm(self):
        """Gets the preferred_tpm of this V1beta1DevicePreferences.  # noqa: E501

        PreferredTPM optionally defines the preferred TPM device to be used.  # noqa: E501

        :return: The preferred_tpm of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: V1TPMDevice
        """
        return self._preferred_tpm

    @preferred_tpm.setter
    def preferred_tpm(self, preferred_tpm):
        """Sets the preferred_tpm of this V1beta1DevicePreferences.

        PreferredTPM optionally defines the preferred TPM device to be used.  # noqa: E501

        :param preferred_tpm: The preferred_tpm of this V1beta1DevicePreferences.  # noqa: E501
        :type: V1TPMDevice
        """

        self._preferred_tpm = preferred_tpm

    @property
    def preferred_use_virtio_transitional(self):
        """Gets the preferred_use_virtio_transitional of this V1beta1DevicePreferences.  # noqa: E501

        PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional  # noqa: E501

        :return: The preferred_use_virtio_transitional of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: bool
        """
        return self._preferred_use_virtio_transitional

    @preferred_use_virtio_transitional.setter
    def preferred_use_virtio_transitional(self, preferred_use_virtio_transitional):
        """Sets the preferred_use_virtio_transitional of this V1beta1DevicePreferences.

        PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional  # noqa: E501

        :param preferred_use_virtio_transitional: The preferred_use_virtio_transitional of this V1beta1DevicePreferences.  # noqa: E501
        :type: bool
        """

        self._preferred_use_virtio_transitional = preferred_use_virtio_transitional

    @property
    def preferred_virtual_gpu_options(self):
        """Gets the preferred_virtual_gpu_options of this V1beta1DevicePreferences.  # noqa: E501

        PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions  # noqa: E501

        :return: The preferred_virtual_gpu_options of this V1beta1DevicePreferences.  # noqa: E501
        :rtype: V1VGPUOptions
        """
        return self._preferred_virtual_gpu_options

    @preferred_virtual_gpu_options.setter
    def preferred_virtual_gpu_options(self, preferred_virtual_gpu_options):
        """Sets the preferred_virtual_gpu_options of this V1beta1DevicePreferences.

        PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions  # noqa: E501

        :param preferred_virtual_gpu_options: The preferred_virtual_gpu_options of this V1beta1DevicePreferences.  # noqa: E501
        :type: V1VGPUOptions
        """

        self._preferred_virtual_gpu_options = preferred_virtual_gpu_options

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(V1beta1DevicePreferences, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, V1beta1DevicePreferences):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, V1beta1DevicePreferences):
            return True

        return self.to_dict() != other.to_dict()
