# 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 V1Devices(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 = {
        'autoattach_graphics_device': 'bool',
        'autoattach_input_device': 'bool',
        'autoattach_mem_balloon': 'bool',
        'autoattach_pod_interface': 'bool',
        'autoattach_serial_console': 'bool',
        'autoattach_vsock': 'bool',
        'block_multi_queue': 'bool',
        'client_passthrough': 'V1ClientPassthroughDevices',
        'disable_hotplug': 'bool',
        'disks': 'list[V1Disk]',
        'downward_metrics': 'V1DownwardMetrics',
        'filesystems': 'list[V1Filesystem]',
        'gpus': 'list[V1GPU]',
        'host_devices': 'list[V1HostDevice]',
        'inputs': 'list[V1Input]',
        'interfaces': 'list[V1Interface]',
        'log_serial_console': 'bool',
        'network_interface_multiqueue': 'bool',
        'panic_devices': 'list[V1PanicDevice]',
        'rng': 'V1Rng',
        'sound': 'V1SoundDevice',
        'tpm': 'V1TPMDevice',
        'use_virtio_transitional': 'bool',
        'video': 'V1VideoDevice',
        'watchdog': 'V1Watchdog'
    }

    attribute_map = {
        'autoattach_graphics_device': 'autoattachGraphicsDevice',
        'autoattach_input_device': 'autoattachInputDevice',
        'autoattach_mem_balloon': 'autoattachMemBalloon',
        'autoattach_pod_interface': 'autoattachPodInterface',
        'autoattach_serial_console': 'autoattachSerialConsole',
        'autoattach_vsock': 'autoattachVSOCK',
        'block_multi_queue': 'blockMultiQueue',
        'client_passthrough': 'clientPassthrough',
        'disable_hotplug': 'disableHotplug',
        'disks': 'disks',
        'downward_metrics': 'downwardMetrics',
        'filesystems': 'filesystems',
        'gpus': 'gpus',
        'host_devices': 'hostDevices',
        'inputs': 'inputs',
        'interfaces': 'interfaces',
        'log_serial_console': 'logSerialConsole',
        'network_interface_multiqueue': 'networkInterfaceMultiqueue',
        'panic_devices': 'panicDevices',
        'rng': 'rng',
        'sound': 'sound',
        'tpm': 'tpm',
        'use_virtio_transitional': 'useVirtioTransitional',
        'video': 'video',
        'watchdog': 'watchdog'
    }

    def __init__(self, autoattach_graphics_device=None, autoattach_input_device=None, autoattach_mem_balloon=None, autoattach_pod_interface=None, autoattach_serial_console=None, autoattach_vsock=None, block_multi_queue=None, client_passthrough=None, disable_hotplug=None, disks=None, downward_metrics=None, filesystems=None, gpus=None, host_devices=None, inputs=None, interfaces=None, log_serial_console=None, network_interface_multiqueue=None, panic_devices=None, rng=None, sound=None, tpm=None, use_virtio_transitional=None, video=None, watchdog=None, _configuration=None):  # noqa: E501
        """V1Devices - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._autoattach_graphics_device = None
        self._autoattach_input_device = None
        self._autoattach_mem_balloon = None
        self._autoattach_pod_interface = None
        self._autoattach_serial_console = None
        self._autoattach_vsock = None
        self._block_multi_queue = None
        self._client_passthrough = None
        self._disable_hotplug = None
        self._disks = None
        self._downward_metrics = None
        self._filesystems = None
        self._gpus = None
        self._host_devices = None
        self._inputs = None
        self._interfaces = None
        self._log_serial_console = None
        self._network_interface_multiqueue = None
        self._panic_devices = None
        self._rng = None
        self._sound = None
        self._tpm = None
        self._use_virtio_transitional = None
        self._video = None
        self._watchdog = None
        self.discriminator = None

        if autoattach_graphics_device is not None:
            self.autoattach_graphics_device = autoattach_graphics_device
        if autoattach_input_device is not None:
            self.autoattach_input_device = autoattach_input_device
        if autoattach_mem_balloon is not None:
            self.autoattach_mem_balloon = autoattach_mem_balloon
        if autoattach_pod_interface is not None:
            self.autoattach_pod_interface = autoattach_pod_interface
        if autoattach_serial_console is not None:
            self.autoattach_serial_console = autoattach_serial_console
        if autoattach_vsock is not None:
            self.autoattach_vsock = autoattach_vsock
        if block_multi_queue is not None:
            self.block_multi_queue = block_multi_queue
        if client_passthrough is not None:
            self.client_passthrough = client_passthrough
        if disable_hotplug is not None:
            self.disable_hotplug = disable_hotplug
        if disks is not None:
            self.disks = disks
        if downward_metrics is not None:
            self.downward_metrics = downward_metrics
        if filesystems is not None:
            self.filesystems = filesystems
        if gpus is not None:
            self.gpus = gpus
        if host_devices is not None:
            self.host_devices = host_devices
        if inputs is not None:
            self.inputs = inputs
        if interfaces is not None:
            self.interfaces = interfaces
        if log_serial_console is not None:
            self.log_serial_console = log_serial_console
        if network_interface_multiqueue is not None:
            self.network_interface_multiqueue = network_interface_multiqueue
        if panic_devices is not None:
            self.panic_devices = panic_devices
        if rng is not None:
            self.rng = rng
        if sound is not None:
            self.sound = sound
        if tpm is not None:
            self.tpm = tpm
        if use_virtio_transitional is not None:
            self.use_virtio_transitional = use_virtio_transitional
        if video is not None:
            self.video = video
        if watchdog is not None:
            self.watchdog = watchdog

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

        Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.  # noqa: E501

        :return: The autoattach_graphics_device of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._autoattach_graphics_device

    @autoattach_graphics_device.setter
    def autoattach_graphics_device(self, autoattach_graphics_device):
        """Sets the autoattach_graphics_device of this V1Devices.

        Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.  # noqa: E501

        :param autoattach_graphics_device: The autoattach_graphics_device of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._autoattach_graphics_device = autoattach_graphics_device

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

        Whether to attach an Input Device. Defaults to false.  # noqa: E501

        :return: The autoattach_input_device of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._autoattach_input_device

    @autoattach_input_device.setter
    def autoattach_input_device(self, autoattach_input_device):
        """Sets the autoattach_input_device of this V1Devices.

        Whether to attach an Input Device. Defaults to false.  # noqa: E501

        :param autoattach_input_device: The autoattach_input_device of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._autoattach_input_device = autoattach_input_device

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

        Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.  # noqa: E501

        :return: The autoattach_mem_balloon of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._autoattach_mem_balloon

    @autoattach_mem_balloon.setter
    def autoattach_mem_balloon(self, autoattach_mem_balloon):
        """Sets the autoattach_mem_balloon of this V1Devices.

        Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.  # noqa: E501

        :param autoattach_mem_balloon: The autoattach_mem_balloon of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._autoattach_mem_balloon = autoattach_mem_balloon

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

        Whether to attach a pod network interface. Defaults to true.  # noqa: E501

        :return: The autoattach_pod_interface of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._autoattach_pod_interface

    @autoattach_pod_interface.setter
    def autoattach_pod_interface(self, autoattach_pod_interface):
        """Sets the autoattach_pod_interface of this V1Devices.

        Whether to attach a pod network interface. Defaults to true.  # noqa: E501

        :param autoattach_pod_interface: The autoattach_pod_interface of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._autoattach_pod_interface = autoattach_pod_interface

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

        Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.  # noqa: E501

        :return: The autoattach_serial_console of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._autoattach_serial_console

    @autoattach_serial_console.setter
    def autoattach_serial_console(self, autoattach_serial_console):
        """Sets the autoattach_serial_console of this V1Devices.

        Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.  # noqa: E501

        :param autoattach_serial_console: The autoattach_serial_console of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._autoattach_serial_console = autoattach_serial_console

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

        Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.  # noqa: E501

        :return: The autoattach_vsock of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._autoattach_vsock

    @autoattach_vsock.setter
    def autoattach_vsock(self, autoattach_vsock):
        """Sets the autoattach_vsock of this V1Devices.

        Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.  # noqa: E501

        :param autoattach_vsock: The autoattach_vsock of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._autoattach_vsock = autoattach_vsock

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

        Whether or not to enable virtio multi-queue for block devices. Defaults to false.  # noqa: E501

        :return: The block_multi_queue of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._block_multi_queue

    @block_multi_queue.setter
    def block_multi_queue(self, block_multi_queue):
        """Sets the block_multi_queue of this V1Devices.

        Whether or not to enable virtio multi-queue for block devices. Defaults to false.  # noqa: E501

        :param block_multi_queue: The block_multi_queue of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._block_multi_queue = block_multi_queue

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

        To configure and access client devices such as redirecting USB  # noqa: E501

        :return: The client_passthrough of this V1Devices.  # noqa: E501
        :rtype: V1ClientPassthroughDevices
        """
        return self._client_passthrough

    @client_passthrough.setter
    def client_passthrough(self, client_passthrough):
        """Sets the client_passthrough of this V1Devices.

        To configure and access client devices such as redirecting USB  # noqa: E501

        :param client_passthrough: The client_passthrough of this V1Devices.  # noqa: E501
        :type: V1ClientPassthroughDevices
        """

        self._client_passthrough = client_passthrough

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

        DisableHotplug disabled the ability to hotplug disks.  # noqa: E501

        :return: The disable_hotplug of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._disable_hotplug

    @disable_hotplug.setter
    def disable_hotplug(self, disable_hotplug):
        """Sets the disable_hotplug of this V1Devices.

        DisableHotplug disabled the ability to hotplug disks.  # noqa: E501

        :param disable_hotplug: The disable_hotplug of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._disable_hotplug = disable_hotplug

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

        Disks describes disks, cdroms and luns which are connected to the vmi.  # noqa: E501

        :return: The disks of this V1Devices.  # noqa: E501
        :rtype: list[V1Disk]
        """
        return self._disks

    @disks.setter
    def disks(self, disks):
        """Sets the disks of this V1Devices.

        Disks describes disks, cdroms and luns which are connected to the vmi.  # noqa: E501

        :param disks: The disks of this V1Devices.  # noqa: E501
        :type: list[V1Disk]
        """

        self._disks = disks

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

        DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.  # noqa: E501

        :return: The downward_metrics of this V1Devices.  # noqa: E501
        :rtype: V1DownwardMetrics
        """
        return self._downward_metrics

    @downward_metrics.setter
    def downward_metrics(self, downward_metrics):
        """Sets the downward_metrics of this V1Devices.

        DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.  # noqa: E501

        :param downward_metrics: The downward_metrics of this V1Devices.  # noqa: E501
        :type: V1DownwardMetrics
        """

        self._downward_metrics = downward_metrics

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

        Filesystems describes filesystem which is connected to the vmi.  # noqa: E501

        :return: The filesystems of this V1Devices.  # noqa: E501
        :rtype: list[V1Filesystem]
        """
        return self._filesystems

    @filesystems.setter
    def filesystems(self, filesystems):
        """Sets the filesystems of this V1Devices.

        Filesystems describes filesystem which is connected to the vmi.  # noqa: E501

        :param filesystems: The filesystems of this V1Devices.  # noqa: E501
        :type: list[V1Filesystem]
        """

        self._filesystems = filesystems

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

        Whether to attach a GPU device to the vmi.  # noqa: E501

        :return: The gpus of this V1Devices.  # noqa: E501
        :rtype: list[V1GPU]
        """
        return self._gpus

    @gpus.setter
    def gpus(self, gpus):
        """Sets the gpus of this V1Devices.

        Whether to attach a GPU device to the vmi.  # noqa: E501

        :param gpus: The gpus of this V1Devices.  # noqa: E501
        :type: list[V1GPU]
        """

        self._gpus = gpus

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

        Whether to attach a host device to the vmi.  # noqa: E501

        :return: The host_devices of this V1Devices.  # noqa: E501
        :rtype: list[V1HostDevice]
        """
        return self._host_devices

    @host_devices.setter
    def host_devices(self, host_devices):
        """Sets the host_devices of this V1Devices.

        Whether to attach a host device to the vmi.  # noqa: E501

        :param host_devices: The host_devices of this V1Devices.  # noqa: E501
        :type: list[V1HostDevice]
        """

        self._host_devices = host_devices

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

        Inputs describe input devices  # noqa: E501

        :return: The inputs of this V1Devices.  # noqa: E501
        :rtype: list[V1Input]
        """
        return self._inputs

    @inputs.setter
    def inputs(self, inputs):
        """Sets the inputs of this V1Devices.

        Inputs describe input devices  # noqa: E501

        :param inputs: The inputs of this V1Devices.  # noqa: E501
        :type: list[V1Input]
        """

        self._inputs = inputs

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

        Interfaces describe network interfaces which are added to the vmi.  # noqa: E501

        :return: The interfaces of this V1Devices.  # noqa: E501
        :rtype: list[V1Interface]
        """
        return self._interfaces

    @interfaces.setter
    def interfaces(self, interfaces):
        """Sets the interfaces of this V1Devices.

        Interfaces describe network interfaces which are added to the vmi.  # noqa: E501

        :param interfaces: The interfaces of this V1Devices.  # noqa: E501
        :type: list[V1Interface]
        """

        self._interfaces = interfaces

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

        Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named `guest-console-log`. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.  # noqa: E501

        :return: The log_serial_console of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._log_serial_console

    @log_serial_console.setter
    def log_serial_console(self, log_serial_console):
        """Sets the log_serial_console of this V1Devices.

        Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named `guest-console-log`. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.  # noqa: E501

        :param log_serial_console: The log_serial_console of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._log_serial_console = log_serial_console

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

        If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.  # noqa: E501

        :return: The network_interface_multiqueue of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._network_interface_multiqueue

    @network_interface_multiqueue.setter
    def network_interface_multiqueue(self, network_interface_multiqueue):
        """Sets the network_interface_multiqueue of this V1Devices.

        If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.  # noqa: E501

        :param network_interface_multiqueue: The network_interface_multiqueue of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._network_interface_multiqueue = network_interface_multiqueue

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

        PanicDevices provides additional crash information when a guest crashes.  # noqa: E501

        :return: The panic_devices of this V1Devices.  # noqa: E501
        :rtype: list[V1PanicDevice]
        """
        return self._panic_devices

    @panic_devices.setter
    def panic_devices(self, panic_devices):
        """Sets the panic_devices of this V1Devices.

        PanicDevices provides additional crash information when a guest crashes.  # noqa: E501

        :param panic_devices: The panic_devices of this V1Devices.  # noqa: E501
        :type: list[V1PanicDevice]
        """

        self._panic_devices = panic_devices

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

        Whether to have random number generator from host  # noqa: E501

        :return: The rng of this V1Devices.  # noqa: E501
        :rtype: V1Rng
        """
        return self._rng

    @rng.setter
    def rng(self, rng):
        """Sets the rng of this V1Devices.

        Whether to have random number generator from host  # noqa: E501

        :param rng: The rng of this V1Devices.  # noqa: E501
        :type: V1Rng
        """

        self._rng = rng

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

        Whether to emulate a sound device.  # noqa: E501

        :return: The sound of this V1Devices.  # noqa: E501
        :rtype: V1SoundDevice
        """
        return self._sound

    @sound.setter
    def sound(self, sound):
        """Sets the sound of this V1Devices.

        Whether to emulate a sound device.  # noqa: E501

        :param sound: The sound of this V1Devices.  # noqa: E501
        :type: V1SoundDevice
        """

        self._sound = sound

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

        Whether to emulate a TPM device.  # noqa: E501

        :return: The tpm of this V1Devices.  # noqa: E501
        :rtype: V1TPMDevice
        """
        return self._tpm

    @tpm.setter
    def tpm(self, tpm):
        """Sets the tpm of this V1Devices.

        Whether to emulate a TPM device.  # noqa: E501

        :param tpm: The tpm of this V1Devices.  # noqa: E501
        :type: V1TPMDevice
        """

        self._tpm = tpm

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

        Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).  # noqa: E501

        :return: The use_virtio_transitional of this V1Devices.  # noqa: E501
        :rtype: bool
        """
        return self._use_virtio_transitional

    @use_virtio_transitional.setter
    def use_virtio_transitional(self, use_virtio_transitional):
        """Sets the use_virtio_transitional of this V1Devices.

        Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).  # noqa: E501

        :param use_virtio_transitional: The use_virtio_transitional of this V1Devices.  # noqa: E501
        :type: bool
        """

        self._use_virtio_transitional = use_virtio_transitional

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

        Video describes the video device configuration for the vmi.  # noqa: E501

        :return: The video of this V1Devices.  # noqa: E501
        :rtype: V1VideoDevice
        """
        return self._video

    @video.setter
    def video(self, video):
        """Sets the video of this V1Devices.

        Video describes the video device configuration for the vmi.  # noqa: E501

        :param video: The video of this V1Devices.  # noqa: E501
        :type: V1VideoDevice
        """

        self._video = video

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

        Watchdog describes a watchdog device which can be added to the vmi.  # noqa: E501

        :return: The watchdog of this V1Devices.  # noqa: E501
        :rtype: V1Watchdog
        """
        return self._watchdog

    @watchdog.setter
    def watchdog(self, watchdog):
        """Sets the watchdog of this V1Devices.

        Watchdog describes a watchdog device which can be added to the vmi.  # noqa: E501

        :param watchdog: The watchdog of this V1Devices.  # noqa: E501
        :type: V1Watchdog
        """

        self._watchdog = watchdog

    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(V1Devices, 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, V1Devices):
            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, V1Devices):
            return True

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