# coding: utf-8

"""
    Karbon Platform Services API reference.

    OpenAPI documentation for public facing Karbon Platform Services API  This API documentation is generated from source code using go-swagger. Do not edit the generated kps_api.json directly!  # noqa: E501

    OpenAPI spec version: 1.0
    Contact: karbon-platform-services-api@nutanix.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six


class EdgeUsageInfo(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 = {
        'cpu_usage': 'str',
        'edge_build_num': 'str',
        'edge_version': 'str',
        'gpu_info': 'str',
        'gpu_usage': 'str',
        'kube_version': 'str',
        'memory_free_kb': 'str',
        'num_cpu': 'str',
        'os_version': 'str',
        'storage_free_kb': 'str',
        'total_memory_kb': 'str',
        'total_storage_kb': 'str',
        'edge_artifacts': 'dict(str, object)',
        'edge_id': 'str',
        'id': 'str'
    }

    attribute_map = {
        'cpu_usage': 'CPUUsage',
        'edge_build_num': 'EdgeBuildNum',
        'edge_version': 'EdgeVersion',
        'gpu_info': 'GPUInfo',
        'gpu_usage': 'GPUUsage',
        'kube_version': 'KubeVersion',
        'memory_free_kb': 'MemoryFreeKB',
        'num_cpu': 'NumCPU',
        'os_version': 'OSVersion',
        'storage_free_kb': 'StorageFreeKB',
        'total_memory_kb': 'TotalMemoryKB',
        'total_storage_kb': 'TotalStorageKB',
        'edge_artifacts': 'edgeArtifacts',
        'edge_id': 'edgeId',
        'id': 'id'
    }

    def __init__(self, cpu_usage=None, edge_build_num=None, edge_version=None, gpu_info=None, gpu_usage=None, kube_version=None, memory_free_kb=None, num_cpu=None, os_version=None, storage_free_kb=None, total_memory_kb=None, total_storage_kb=None, edge_artifacts=None, edge_id=None, id=None):  # noqa: E501
        """EdgeUsageInfo - a model defined in Swagger"""  # noqa: E501
        self._cpu_usage = None
        self._edge_build_num = None
        self._edge_version = None
        self._gpu_info = None
        self._gpu_usage = None
        self._kube_version = None
        self._memory_free_kb = None
        self._num_cpu = None
        self._os_version = None
        self._storage_free_kb = None
        self._total_memory_kb = None
        self._total_storage_kb = None
        self._edge_artifacts = None
        self._edge_id = None
        self._id = None
        self.discriminator = None
        if cpu_usage is not None:
            self.cpu_usage = cpu_usage
        if edge_build_num is not None:
            self.edge_build_num = edge_build_num
        if edge_version is not None:
            self.edge_version = edge_version
        if gpu_info is not None:
            self.gpu_info = gpu_info
        if gpu_usage is not None:
            self.gpu_usage = gpu_usage
        if kube_version is not None:
            self.kube_version = kube_version
        if memory_free_kb is not None:
            self.memory_free_kb = memory_free_kb
        if num_cpu is not None:
            self.num_cpu = num_cpu
        if os_version is not None:
            self.os_version = os_version
        if storage_free_kb is not None:
            self.storage_free_kb = storage_free_kb
        if total_memory_kb is not None:
            self.total_memory_kb = total_memory_kb
        if total_storage_kb is not None:
            self.total_storage_kb = total_storage_kb
        if edge_artifacts is not None:
            self.edge_artifacts = edge_artifacts
        self.edge_id = edge_id
        if id is not None:
            self.id = id

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

        Edge CPU usage.  # noqa: E501

        :return: The cpu_usage of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._cpu_usage

    @cpu_usage.setter
    def cpu_usage(self, cpu_usage):
        """Sets the cpu_usage of this EdgeUsageInfo.

        Edge CPU usage.  # noqa: E501

        :param cpu_usage: The cpu_usage of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._cpu_usage = cpu_usage

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

        Edge build number.  # noqa: E501

        :return: The edge_build_num of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._edge_build_num

    @edge_build_num.setter
    def edge_build_num(self, edge_build_num):
        """Sets the edge_build_num of this EdgeUsageInfo.

        Edge build number.  # noqa: E501

        :param edge_build_num: The edge_build_num of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._edge_build_num = edge_build_num

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

        Edge version.  # noqa: E501

        :return: The edge_version of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._edge_version

    @edge_version.setter
    def edge_version(self, edge_version):
        """Sets the edge_version of this EdgeUsageInfo.

        Edge version.  # noqa: E501

        :param edge_version: The edge_version of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._edge_version = edge_version

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

        Information about GPUs associated with the edge.  # noqa: E501

        :return: The gpu_info of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._gpu_info

    @gpu_info.setter
    def gpu_info(self, gpu_info):
        """Sets the gpu_info of this EdgeUsageInfo.

        Information about GPUs associated with the edge.  # noqa: E501

        :param gpu_info: The gpu_info of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._gpu_info = gpu_info

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

        Edge GPU Usage.  # noqa: E501

        :return: The gpu_usage of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._gpu_usage

    @gpu_usage.setter
    def gpu_usage(self, gpu_usage):
        """Sets the gpu_usage of this EdgeUsageInfo.

        Edge GPU Usage.  # noqa: E501

        :param gpu_usage: The gpu_usage of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._gpu_usage = gpu_usage

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

        Edge Kubernetes version.  # noqa: E501

        :return: The kube_version of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._kube_version

    @kube_version.setter
    def kube_version(self, kube_version):
        """Sets the kube_version of this EdgeUsageInfo.

        Edge Kubernetes version.  # noqa: E501

        :param kube_version: The kube_version of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._kube_version = kube_version

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

        Free (available) edge memory in KB.  # noqa: E501

        :return: The memory_free_kb of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._memory_free_kb

    @memory_free_kb.setter
    def memory_free_kb(self, memory_free_kb):
        """Sets the memory_free_kb of this EdgeUsageInfo.

        Free (available) edge memory in KB.  # noqa: E501

        :param memory_free_kb: The memory_free_kb of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._memory_free_kb = memory_free_kb

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

        Number of CPUs assigned to the edge.  # noqa: E501

        :return: The num_cpu of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._num_cpu

    @num_cpu.setter
    def num_cpu(self, num_cpu):
        """Sets the num_cpu of this EdgeUsageInfo.

        Number of CPUs assigned to the edge.  # noqa: E501

        :param num_cpu: The num_cpu of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._num_cpu = num_cpu

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

        Edge OS version  # noqa: E501

        :return: The os_version of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._os_version

    @os_version.setter
    def os_version(self, os_version):
        """Sets the os_version of this EdgeUsageInfo.

        Edge OS version  # noqa: E501

        :param os_version: The os_version of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._os_version = os_version

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

        Free (available) edge storage in KB.  # noqa: E501

        :return: The storage_free_kb of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._storage_free_kb

    @storage_free_kb.setter
    def storage_free_kb(self, storage_free_kb):
        """Sets the storage_free_kb of this EdgeUsageInfo.

        Free (available) edge storage in KB.  # noqa: E501

        :param storage_free_kb: The storage_free_kb of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._storage_free_kb = storage_free_kb

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

        Total edge memory in KB.  # noqa: E501

        :return: The total_memory_kb of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._total_memory_kb

    @total_memory_kb.setter
    def total_memory_kb(self, total_memory_kb):
        """Sets the total_memory_kb of this EdgeUsageInfo.

        Total edge memory in KB.  # noqa: E501

        :param total_memory_kb: The total_memory_kb of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._total_memory_kb = total_memory_kb

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

        Total edge storage capacity in KB.  # noqa: E501

        :return: The total_storage_kb of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._total_storage_kb

    @total_storage_kb.setter
    def total_storage_kb(self, total_storage_kb):
        """Sets the total_storage_kb of this EdgeUsageInfo.

        Total edge storage capacity in KB.  # noqa: E501

        :param total_storage_kb: The total_storage_kb of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._total_storage_kb = total_storage_kb

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

        Edge artifacts is a json object for passing edge ip and service ports  # noqa: E501

        :return: The edge_artifacts of this EdgeUsageInfo.  # noqa: E501
        :rtype: dict(str, object)
        """
        return self._edge_artifacts

    @edge_artifacts.setter
    def edge_artifacts(self, edge_artifacts):
        """Sets the edge_artifacts of this EdgeUsageInfo.

        Edge artifacts is a json object for passing edge ip and service ports  # noqa: E501

        :param edge_artifacts: The edge_artifacts of this EdgeUsageInfo.  # noqa: E501
        :type: dict(str, object)
        """

        self._edge_artifacts = edge_artifacts

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

        ID of the edge this entity belongs to  # noqa: E501

        :return: The edge_id of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._edge_id

    @edge_id.setter
    def edge_id(self, edge_id):
        """Sets the edge_id of this EdgeUsageInfo.

        ID of the edge this entity belongs to  # noqa: E501

        :param edge_id: The edge_id of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """
        if edge_id is None:
            raise ValueError("Invalid value for `edge_id`, must not be `None`")  # noqa: E501

        self._edge_id = edge_id

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

        ID of the entity Maximum character length is 64 for project, category, and runtime environment, 36 for other entity types.  # noqa: E501

        :return: The id of this EdgeUsageInfo.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this EdgeUsageInfo.

        ID of the entity Maximum character length is 64 for project, category, and runtime environment, 36 for other entity types.  # noqa: E501

        :param id: The id of this EdgeUsageInfo.  # noqa: E501
        :type: str
        """

        self._id = 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
        if issubclass(EdgeUsageInfo, 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, EdgeUsageInfo):
            return False

        return self.__dict__ == other.__dict__

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