# 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 V1SEVMeasurementInfo(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 = {
        'api_major': 'int',
        'api_minor': 'int',
        'api_version': 'str',
        'build_id': 'int',
        'kind': 'str',
        'loader_sha': 'str',
        'measurement': 'str',
        'policy': 'int'
    }

    attribute_map = {
        'api_major': 'apiMajor',
        'api_minor': 'apiMinor',
        'api_version': 'apiVersion',
        'build_id': 'buildID',
        'kind': 'kind',
        'loader_sha': 'loaderSHA',
        'measurement': 'measurement',
        'policy': 'policy'
    }

    def __init__(self, api_major=None, api_minor=None, api_version=None, build_id=None, kind=None, loader_sha=None, measurement=None, policy=None, _configuration=None):  # noqa: E501
        """V1SEVMeasurementInfo - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._api_major = None
        self._api_minor = None
        self._api_version = None
        self._build_id = None
        self._kind = None
        self._loader_sha = None
        self._measurement = None
        self._policy = None
        self.discriminator = None

        if api_major is not None:
            self.api_major = api_major
        if api_minor is not None:
            self.api_minor = api_minor
        if api_version is not None:
            self.api_version = api_version
        if build_id is not None:
            self.build_id = build_id
        if kind is not None:
            self.kind = kind
        if loader_sha is not None:
            self.loader_sha = loader_sha
        if measurement is not None:
            self.measurement = measurement
        if policy is not None:
            self.policy = policy

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

        API major version of the SEV host.  # noqa: E501

        :return: The api_major of this V1SEVMeasurementInfo.  # noqa: E501
        :rtype: int
        """
        return self._api_major

    @api_major.setter
    def api_major(self, api_major):
        """Sets the api_major of this V1SEVMeasurementInfo.

        API major version of the SEV host.  # noqa: E501

        :param api_major: The api_major of this V1SEVMeasurementInfo.  # noqa: E501
        :type: int
        """

        self._api_major = api_major

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

        API minor version of the SEV host.  # noqa: E501

        :return: The api_minor of this V1SEVMeasurementInfo.  # noqa: E501
        :rtype: int
        """
        return self._api_minor

    @api_minor.setter
    def api_minor(self, api_minor):
        """Sets the api_minor of this V1SEVMeasurementInfo.

        API minor version of the SEV host.  # noqa: E501

        :param api_minor: The api_minor of this V1SEVMeasurementInfo.  # noqa: E501
        :type: int
        """

        self._api_minor = api_minor

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

        APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources  # noqa: E501

        :return: The api_version of this V1SEVMeasurementInfo.  # noqa: E501
        :rtype: str
        """
        return self._api_version

    @api_version.setter
    def api_version(self, api_version):
        """Sets the api_version of this V1SEVMeasurementInfo.

        APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources  # noqa: E501

        :param api_version: The api_version of this V1SEVMeasurementInfo.  # noqa: E501
        :type: str
        """

        self._api_version = api_version

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

        Build ID of the SEV host.  # noqa: E501

        :return: The build_id of this V1SEVMeasurementInfo.  # noqa: E501
        :rtype: int
        """
        return self._build_id

    @build_id.setter
    def build_id(self, build_id):
        """Sets the build_id of this V1SEVMeasurementInfo.

        Build ID of the SEV host.  # noqa: E501

        :param build_id: The build_id of this V1SEVMeasurementInfo.  # noqa: E501
        :type: int
        """

        self._build_id = build_id

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

        Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds  # noqa: E501

        :return: The kind of this V1SEVMeasurementInfo.  # noqa: E501
        :rtype: str
        """
        return self._kind

    @kind.setter
    def kind(self, kind):
        """Sets the kind of this V1SEVMeasurementInfo.

        Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds  # noqa: E501

        :param kind: The kind of this V1SEVMeasurementInfo.  # noqa: E501
        :type: str
        """

        self._kind = kind

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

        SHA256 of the loader binary  # noqa: E501

        :return: The loader_sha of this V1SEVMeasurementInfo.  # noqa: E501
        :rtype: str
        """
        return self._loader_sha

    @loader_sha.setter
    def loader_sha(self, loader_sha):
        """Sets the loader_sha of this V1SEVMeasurementInfo.

        SHA256 of the loader binary  # noqa: E501

        :param loader_sha: The loader_sha of this V1SEVMeasurementInfo.  # noqa: E501
        :type: str
        """

        self._loader_sha = loader_sha

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

        Base64 encoded launch measurement of the SEV guest.  # noqa: E501

        :return: The measurement of this V1SEVMeasurementInfo.  # noqa: E501
        :rtype: str
        """
        return self._measurement

    @measurement.setter
    def measurement(self, measurement):
        """Sets the measurement of this V1SEVMeasurementInfo.

        Base64 encoded launch measurement of the SEV guest.  # noqa: E501

        :param measurement: The measurement of this V1SEVMeasurementInfo.  # noqa: E501
        :type: str
        """

        self._measurement = measurement

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

        Policy of the SEV guest.  # noqa: E501

        :return: The policy of this V1SEVMeasurementInfo.  # noqa: E501
        :rtype: int
        """
        return self._policy

    @policy.setter
    def policy(self, policy):
        """Sets the policy of this V1SEVMeasurementInfo.

        Policy of the SEV guest.  # noqa: E501

        :param policy: The policy of this V1SEVMeasurementInfo.  # noqa: E501
        :type: int
        """

        self._policy = policy

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

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