# coding: utf-8
try:
    from inspect import getfullargspec
except ImportError:
    from inspect import getargspec as getfullargspec
import pprint
import re  # noqa: F401
import six

from aoc.configuration import Configuration


class AddLabelsToResourcesParamsData(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'gpu_devices': 'GpuDeviceWhereInput',
        'content_library_vm_templates': 'ContentLibraryVmTemplateWhereInput',
        'content_library_images': 'ContentLibraryImageWhereInput',
        'isolation_policies': 'IsolationPolicyWhereInput',
        'security_policies': 'SecurityPolicyWhereInput',
        'vms': 'VmWhereInput',
        'vm_volume_snapshots': 'VmVolumeSnapshotWhereInput',
        'vm_volumes': 'VmVolumeWhereInput',
        'vm_templates': 'VmTemplateWhereInput',
        'vm_snapshots': 'VmSnapshotWhereInput',
        'vlans': 'VlanWhereInput',
        'vdses': 'VdsWhereInput',
        'nics': 'NicWhereInput',
        'iscsi_targets': 'IscsiTargetWhereInput',
        'iscsi_luns': 'IscsiLunWhereInput',
        'hosts': 'HostWhereInput',
        'elf_images': 'ElfImageWhereInput',
        'datacenters': 'DatacenterWhereInput',
        'clusters': 'ClusterWhereInput'
    }

    attribute_map = {
        'gpu_devices': 'gpu_devices',
        'content_library_vm_templates': 'content_library_vm_templates',
        'content_library_images': 'content_library_images',
        'isolation_policies': 'isolation_policies',
        'security_policies': 'security_policies',
        'vms': 'vms',
        'vm_volume_snapshots': 'vm_volume_snapshots',
        'vm_volumes': 'vm_volumes',
        'vm_templates': 'vm_templates',
        'vm_snapshots': 'vm_snapshots',
        'vlans': 'vlans',
        'vdses': 'vdses',
        'nics': 'nics',
        'iscsi_targets': 'iscsi_targets',
        'iscsi_luns': 'iscsi_luns',
        'hosts': 'hosts',
        'elf_images': 'elf_images',
        'datacenters': 'datacenters',
        'clusters': 'clusters'
    }

    def __init__(self, **kwargs):  # noqa: E501
        """AddLabelsToResourcesParamsData - a model defined in OpenAPI"""  # noqa: E501
        self.local_vars_configuration = kwargs.get("local_vars_configuration", Configuration.get_default_copy())

        self._gpu_devices = None
        self._content_library_vm_templates = None
        self._content_library_images = None
        self._isolation_policies = None
        self._security_policies = None
        self._vms = None
        self._vm_volume_snapshots = None
        self._vm_volumes = None
        self._vm_templates = None
        self._vm_snapshots = None
        self._vlans = None
        self._vdses = None
        self._nics = None
        self._iscsi_targets = None
        self._iscsi_luns = None
        self._hosts = None
        self._elf_images = None
        self._datacenters = None
        self._clusters = None
        self.discriminator = None

        if "gpu_devices" in kwargs:
            self.gpu_devices = kwargs["gpu_devices"]
        if "content_library_vm_templates" in kwargs:
            self.content_library_vm_templates = kwargs["content_library_vm_templates"]
        if "content_library_images" in kwargs:
            self.content_library_images = kwargs["content_library_images"]
        if "isolation_policies" in kwargs:
            self.isolation_policies = kwargs["isolation_policies"]
        if "security_policies" in kwargs:
            self.security_policies = kwargs["security_policies"]
        if "vms" in kwargs:
            self.vms = kwargs["vms"]
        if "vm_volume_snapshots" in kwargs:
            self.vm_volume_snapshots = kwargs["vm_volume_snapshots"]
        if "vm_volumes" in kwargs:
            self.vm_volumes = kwargs["vm_volumes"]
        if "vm_templates" in kwargs:
            self.vm_templates = kwargs["vm_templates"]
        if "vm_snapshots" in kwargs:
            self.vm_snapshots = kwargs["vm_snapshots"]
        if "vlans" in kwargs:
            self.vlans = kwargs["vlans"]
        if "vdses" in kwargs:
            self.vdses = kwargs["vdses"]
        if "nics" in kwargs:
            self.nics = kwargs["nics"]
        if "iscsi_targets" in kwargs:
            self.iscsi_targets = kwargs["iscsi_targets"]
        if "iscsi_luns" in kwargs:
            self.iscsi_luns = kwargs["iscsi_luns"]
        if "hosts" in kwargs:
            self.hosts = kwargs["hosts"]
        if "elf_images" in kwargs:
            self.elf_images = kwargs["elf_images"]
        if "datacenters" in kwargs:
            self.datacenters = kwargs["datacenters"]
        if "clusters" in kwargs:
            self.clusters = kwargs["clusters"]

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


        :return: The gpu_devices of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: GpuDeviceWhereInput
        """
        return self._gpu_devices

    @gpu_devices.setter
    def gpu_devices(self, gpu_devices):
        """Sets the gpu_devices of this AddLabelsToResourcesParamsData.


        :param gpu_devices: The gpu_devices of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type gpu_devices: GpuDeviceWhereInput
        """

        self._gpu_devices = gpu_devices

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


        :return: The content_library_vm_templates of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: ContentLibraryVmTemplateWhereInput
        """
        return self._content_library_vm_templates

    @content_library_vm_templates.setter
    def content_library_vm_templates(self, content_library_vm_templates):
        """Sets the content_library_vm_templates of this AddLabelsToResourcesParamsData.


        :param content_library_vm_templates: The content_library_vm_templates of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type content_library_vm_templates: ContentLibraryVmTemplateWhereInput
        """

        self._content_library_vm_templates = content_library_vm_templates

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


        :return: The content_library_images of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: ContentLibraryImageWhereInput
        """
        return self._content_library_images

    @content_library_images.setter
    def content_library_images(self, content_library_images):
        """Sets the content_library_images of this AddLabelsToResourcesParamsData.


        :param content_library_images: The content_library_images of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type content_library_images: ContentLibraryImageWhereInput
        """

        self._content_library_images = content_library_images

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


        :return: The isolation_policies of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: IsolationPolicyWhereInput
        """
        return self._isolation_policies

    @isolation_policies.setter
    def isolation_policies(self, isolation_policies):
        """Sets the isolation_policies of this AddLabelsToResourcesParamsData.


        :param isolation_policies: The isolation_policies of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type isolation_policies: IsolationPolicyWhereInput
        """

        self._isolation_policies = isolation_policies

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


        :return: The security_policies of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: SecurityPolicyWhereInput
        """
        return self._security_policies

    @security_policies.setter
    def security_policies(self, security_policies):
        """Sets the security_policies of this AddLabelsToResourcesParamsData.


        :param security_policies: The security_policies of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type security_policies: SecurityPolicyWhereInput
        """

        self._security_policies = security_policies

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


        :return: The vms of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: VmWhereInput
        """
        return self._vms

    @vms.setter
    def vms(self, vms):
        """Sets the vms of this AddLabelsToResourcesParamsData.


        :param vms: The vms of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type vms: VmWhereInput
        """

        self._vms = vms

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


        :return: The vm_volume_snapshots of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: VmVolumeSnapshotWhereInput
        """
        return self._vm_volume_snapshots

    @vm_volume_snapshots.setter
    def vm_volume_snapshots(self, vm_volume_snapshots):
        """Sets the vm_volume_snapshots of this AddLabelsToResourcesParamsData.


        :param vm_volume_snapshots: The vm_volume_snapshots of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type vm_volume_snapshots: VmVolumeSnapshotWhereInput
        """

        self._vm_volume_snapshots = vm_volume_snapshots

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


        :return: The vm_volumes of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: VmVolumeWhereInput
        """
        return self._vm_volumes

    @vm_volumes.setter
    def vm_volumes(self, vm_volumes):
        """Sets the vm_volumes of this AddLabelsToResourcesParamsData.


        :param vm_volumes: The vm_volumes of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type vm_volumes: VmVolumeWhereInput
        """

        self._vm_volumes = vm_volumes

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


        :return: The vm_templates of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: VmTemplateWhereInput
        """
        return self._vm_templates

    @vm_templates.setter
    def vm_templates(self, vm_templates):
        """Sets the vm_templates of this AddLabelsToResourcesParamsData.


        :param vm_templates: The vm_templates of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type vm_templates: VmTemplateWhereInput
        """

        self._vm_templates = vm_templates

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


        :return: The vm_snapshots of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: VmSnapshotWhereInput
        """
        return self._vm_snapshots

    @vm_snapshots.setter
    def vm_snapshots(self, vm_snapshots):
        """Sets the vm_snapshots of this AddLabelsToResourcesParamsData.


        :param vm_snapshots: The vm_snapshots of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type vm_snapshots: VmSnapshotWhereInput
        """

        self._vm_snapshots = vm_snapshots

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


        :return: The vlans of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: VlanWhereInput
        """
        return self._vlans

    @vlans.setter
    def vlans(self, vlans):
        """Sets the vlans of this AddLabelsToResourcesParamsData.


        :param vlans: The vlans of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type vlans: VlanWhereInput
        """

        self._vlans = vlans

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


        :return: The vdses of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: VdsWhereInput
        """
        return self._vdses

    @vdses.setter
    def vdses(self, vdses):
        """Sets the vdses of this AddLabelsToResourcesParamsData.


        :param vdses: The vdses of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type vdses: VdsWhereInput
        """

        self._vdses = vdses

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


        :return: The nics of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: NicWhereInput
        """
        return self._nics

    @nics.setter
    def nics(self, nics):
        """Sets the nics of this AddLabelsToResourcesParamsData.


        :param nics: The nics of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type nics: NicWhereInput
        """

        self._nics = nics

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


        :return: The iscsi_targets of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: IscsiTargetWhereInput
        """
        return self._iscsi_targets

    @iscsi_targets.setter
    def iscsi_targets(self, iscsi_targets):
        """Sets the iscsi_targets of this AddLabelsToResourcesParamsData.


        :param iscsi_targets: The iscsi_targets of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type iscsi_targets: IscsiTargetWhereInput
        """

        self._iscsi_targets = iscsi_targets

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


        :return: The iscsi_luns of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: IscsiLunWhereInput
        """
        return self._iscsi_luns

    @iscsi_luns.setter
    def iscsi_luns(self, iscsi_luns):
        """Sets the iscsi_luns of this AddLabelsToResourcesParamsData.


        :param iscsi_luns: The iscsi_luns of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type iscsi_luns: IscsiLunWhereInput
        """

        self._iscsi_luns = iscsi_luns

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


        :return: The hosts of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: HostWhereInput
        """
        return self._hosts

    @hosts.setter
    def hosts(self, hosts):
        """Sets the hosts of this AddLabelsToResourcesParamsData.


        :param hosts: The hosts of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type hosts: HostWhereInput
        """

        self._hosts = hosts

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


        :return: The elf_images of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: ElfImageWhereInput
        """
        return self._elf_images

    @elf_images.setter
    def elf_images(self, elf_images):
        """Sets the elf_images of this AddLabelsToResourcesParamsData.


        :param elf_images: The elf_images of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type elf_images: ElfImageWhereInput
        """

        self._elf_images = elf_images

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


        :return: The datacenters of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: DatacenterWhereInput
        """
        return self._datacenters

    @datacenters.setter
    def datacenters(self, datacenters):
        """Sets the datacenters of this AddLabelsToResourcesParamsData.


        :param datacenters: The datacenters of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type datacenters: DatacenterWhereInput
        """

        self._datacenters = datacenters

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


        :return: The clusters of this AddLabelsToResourcesParamsData.  # noqa: E501
        :rtype: ClusterWhereInput
        """
        return self._clusters

    @clusters.setter
    def clusters(self, clusters):
        """Sets the clusters of this AddLabelsToResourcesParamsData.


        :param clusters: The clusters of this AddLabelsToResourcesParamsData.  # noqa: E501
        :type clusters: ClusterWhereInput
        """

        self._clusters = clusters

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

        def convert(x):
            if hasattr(x, "to_dict"):
                args = getfullargspec(x.to_dict).args
                if len(args) == 1:
                    return x.to_dict()
                else:
                    return x.to_dict(serialize)
            else:
                return x

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            attr = self.attribute_map.get(attr, attr) if serialize else attr
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: convert(x),
                    value
                ))
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], convert(item[1])),
                    value.items()
                ))
            else:
                result[attr] = convert(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, AddLabelsToResourcesParamsData):
            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, AddLabelsToResourcesParamsData):
            return True

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