# 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 V1VirtualMachineInstanceGuestOSUser(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 = {
        'domain': 'str',
        'login_time': 'float',
        'user_name': 'str'
    }

    attribute_map = {
        'domain': 'domain',
        'login_time': 'loginTime',
        'user_name': 'userName'
    }

    def __init__(self, domain=None, login_time=None, user_name='', _configuration=None):  # noqa: E501
        """V1VirtualMachineInstanceGuestOSUser - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._domain = None
        self._login_time = None
        self._user_name = None
        self.discriminator = None

        if domain is not None:
            self.domain = domain
        if login_time is not None:
            self.login_time = login_time
        self.user_name = user_name

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


        :return: The domain of this V1VirtualMachineInstanceGuestOSUser.  # noqa: E501
        :rtype: str
        """
        return self._domain

    @domain.setter
    def domain(self, domain):
        """Sets the domain of this V1VirtualMachineInstanceGuestOSUser.


        :param domain: The domain of this V1VirtualMachineInstanceGuestOSUser.  # noqa: E501
        :type: str
        """

        self._domain = domain

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

        Time of login of this user on the computer. If multiple instances of the user are logged in, the earliest login time is reported. The value is in fractional seconds since epoch time.  # noqa: E501

        :return: The login_time of this V1VirtualMachineInstanceGuestOSUser.  # noqa: E501
        :rtype: float
        """
        return self._login_time

    @login_time.setter
    def login_time(self, login_time):
        """Sets the login_time of this V1VirtualMachineInstanceGuestOSUser.

        Time of login of this user on the computer. If multiple instances of the user are logged in, the earliest login time is reported. The value is in fractional seconds since epoch time.  # noqa: E501

        :param login_time: The login_time of this V1VirtualMachineInstanceGuestOSUser.  # noqa: E501
        :type: float
        """

        self._login_time = login_time

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


        :return: The user_name of this V1VirtualMachineInstanceGuestOSUser.  # noqa: E501
        :rtype: str
        """
        return self._user_name

    @user_name.setter
    def user_name(self, user_name):
        """Sets the user_name of this V1VirtualMachineInstanceGuestOSUser.


        :param user_name: The user_name of this V1VirtualMachineInstanceGuestOSUser.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and user_name is None:
            raise ValueError("Invalid value for `user_name`, must not be `None`")  # noqa: E501

        self._user_name = user_name

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

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