# coding: utf-8

"""
    HPC Web API

    Preview  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class NodeMetadataCompute(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 = {
        'location': 'str',
        'name': 'str',
        'offer': 'str',
        'os_type': 'str',
        'platform_fault_domain': 'str',
        'platform_update_domain': 'str',
        'publisher': 'str',
        'sku': 'str',
        'version': 'str',
        'vm_id': 'str',
        'vm_size': 'str',
        'subscription_id': 'str',
        'tags': 'str',
        'resource_group_name': 'str',
        'placement_group_id': 'str'
    }

    attribute_map = {
        'location': 'location',
        'name': 'name',
        'offer': 'offer',
        'os_type': 'osType',
        'platform_fault_domain': 'platformFaultDomain',
        'platform_update_domain': 'platformUpdateDomain',
        'publisher': 'publisher',
        'sku': 'sku',
        'version': 'version',
        'vm_id': 'vmId',
        'vm_size': 'vmSize',
        'subscription_id': 'subscriptionId',
        'tags': 'tags',
        'resource_group_name': 'resourceGroupName',
        'placement_group_id': 'placementGroupId'
    }

    def __init__(self, location=None, name=None, offer=None, os_type=None, platform_fault_domain=None, platform_update_domain=None, publisher=None, sku=None, version=None, vm_id=None, vm_size=None, subscription_id=None, tags=None, resource_group_name=None, placement_group_id=None):  # noqa: E501
        """NodeMetadataCompute - a model defined in Swagger"""  # noqa: E501

        self._location = None
        self._name = None
        self._offer = None
        self._os_type = None
        self._platform_fault_domain = None
        self._platform_update_domain = None
        self._publisher = None
        self._sku = None
        self._version = None
        self._vm_id = None
        self._vm_size = None
        self._subscription_id = None
        self._tags = None
        self._resource_group_name = None
        self._placement_group_id = None
        self.discriminator = None

        if location is not None:
            self.location = location
        if name is not None:
            self.name = name
        if offer is not None:
            self.offer = offer
        if os_type is not None:
            self.os_type = os_type
        if platform_fault_domain is not None:
            self.platform_fault_domain = platform_fault_domain
        if platform_update_domain is not None:
            self.platform_update_domain = platform_update_domain
        if publisher is not None:
            self.publisher = publisher
        if sku is not None:
            self.sku = sku
        if version is not None:
            self.version = version
        if vm_id is not None:
            self.vm_id = vm_id
        if vm_size is not None:
            self.vm_size = vm_size
        if subscription_id is not None:
            self.subscription_id = subscription_id
        if tags is not None:
            self.tags = tags
        if resource_group_name is not None:
            self.resource_group_name = resource_group_name
        if placement_group_id is not None:
            self.placement_group_id = placement_group_id

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

        Azure Region the VM is running in  # noqa: E501

        :return: The location of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._location

    @location.setter
    def location(self, location):
        """Sets the location of this NodeMetadataCompute.

        Azure Region the VM is running in  # noqa: E501

        :param location: The location of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._location = location

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

        Name of the VM  # noqa: E501

        :return: The name of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this NodeMetadataCompute.

        Name of the VM  # noqa: E501

        :param name: The name of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._name = name

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

        Offer information for the VM image. This value is only present for images deployed from Azure image gallery.  # noqa: E501

        :return: The offer of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._offer

    @offer.setter
    def offer(self, offer):
        """Sets the offer of this NodeMetadataCompute.

        Offer information for the VM image. This value is only present for images deployed from Azure image gallery.  # noqa: E501

        :param offer: The offer of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._offer = offer

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

        Linux or Windows  # noqa: E501

        :return: The os_type of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._os_type

    @os_type.setter
    def os_type(self, os_type):
        """Sets the os_type of this NodeMetadataCompute.

        Linux or Windows  # noqa: E501

        :param os_type: The os_type of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._os_type = os_type

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

        Fault domain the VM is running in  # noqa: E501

        :return: The platform_fault_domain of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._platform_fault_domain

    @platform_fault_domain.setter
    def platform_fault_domain(self, platform_fault_domain):
        """Sets the platform_fault_domain of this NodeMetadataCompute.

        Fault domain the VM is running in  # noqa: E501

        :param platform_fault_domain: The platform_fault_domain of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._platform_fault_domain = platform_fault_domain

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

        Update domain the VM is running in  # noqa: E501

        :return: The platform_update_domain of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._platform_update_domain

    @platform_update_domain.setter
    def platform_update_domain(self, platform_update_domain):
        """Sets the platform_update_domain of this NodeMetadataCompute.

        Update domain the VM is running in  # noqa: E501

        :param platform_update_domain: The platform_update_domain of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._platform_update_domain = platform_update_domain

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

        Publisher of the VM image  # noqa: E501

        :return: The publisher of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._publisher

    @publisher.setter
    def publisher(self, publisher):
        """Sets the publisher of this NodeMetadataCompute.

        Publisher of the VM image  # noqa: E501

        :param publisher: The publisher of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._publisher = publisher

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

        Specific SKU for the VM image  # noqa: E501

        :return: The sku of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._sku

    @sku.setter
    def sku(self, sku):
        """Sets the sku of this NodeMetadataCompute.

        Specific SKU for the VM image  # noqa: E501

        :param sku: The sku of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._sku = sku

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

        Version of the VM image  # noqa: E501

        :return: The version of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._version

    @version.setter
    def version(self, version):
        """Sets the version of this NodeMetadataCompute.

        Version of the VM image  # noqa: E501

        :param version: The version of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._version = version

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

        Unique identifier for the VM  # noqa: E501

        :return: The vm_id of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._vm_id

    @vm_id.setter
    def vm_id(self, vm_id):
        """Sets the vm_id of this NodeMetadataCompute.

        Unique identifier for the VM  # noqa: E501

        :param vm_id: The vm_id of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._vm_id = vm_id

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

        VM size  # noqa: E501

        :return: The vm_size of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._vm_size

    @vm_size.setter
    def vm_size(self, vm_size):
        """Sets the vm_size of this NodeMetadataCompute.

        VM size  # noqa: E501

        :param vm_size: The vm_size of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._vm_size = vm_size

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

        Azure subscription for the Virtual Machine  # noqa: E501

        :return: The subscription_id of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._subscription_id

    @subscription_id.setter
    def subscription_id(self, subscription_id):
        """Sets the subscription_id of this NodeMetadataCompute.

        Azure subscription for the Virtual Machine  # noqa: E501

        :param subscription_id: The subscription_id of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._subscription_id = subscription_id

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

        Tags for your Virtual Machine  # noqa: E501

        :return: The tags of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._tags

    @tags.setter
    def tags(self, tags):
        """Sets the tags of this NodeMetadataCompute.

        Tags for your Virtual Machine  # noqa: E501

        :param tags: The tags of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._tags = tags

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

        Resource group for your Virtual Machine  # noqa: E501

        :return: The resource_group_name of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._resource_group_name

    @resource_group_name.setter
    def resource_group_name(self, resource_group_name):
        """Sets the resource_group_name of this NodeMetadataCompute.

        Resource group for your Virtual Machine  # noqa: E501

        :param resource_group_name: The resource_group_name of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._resource_group_name = resource_group_name

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

        Placement Group of your virtual machine scale set  # noqa: E501

        :return: The placement_group_id of this NodeMetadataCompute.  # noqa: E501
        :rtype: str
        """
        return self._placement_group_id

    @placement_group_id.setter
    def placement_group_id(self, placement_group_id):
        """Sets the placement_group_id of this NodeMetadataCompute.

        Placement Group of your virtual machine scale set  # noqa: E501

        :param placement_group_id: The placement_group_id of this NodeMetadataCompute.  # noqa: E501
        :type: str
        """

        self._placement_group_id = placement_group_id

    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

        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, NodeMetadataCompute):
            return False

        return self.__dict__ == other.__dict__

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