# coding: utf-8

"""
    Cloudbreak API

    Cloudbreak is a powerful left surf that breaks over a coral reef, a mile off southwest the island of Tavarua, Fiji. Cloudbreak is a cloud agnostic Hadoop as a Service API. Abstracts the provisioning and ease management and monitoring of on-demand clusters. SequenceIQ's Cloudbreak is a RESTful application development platform with the goal of helping developers to build solutions for deploying Hadoop YARN clusters in different environments. Once it is deployed in your favourite servlet container it exposes a REST API allowing to span up Hadoop clusters of arbitary sizes and cloud providers. Provisioning Hadoop has never been easier. Cloudbreak is built on the foundation of cloud providers API (Amazon AWS, Microsoft Azure, Google Cloud Platform, Openstack), Apache Ambari, Docker lightweight containers, Swarm and Consul. For further product documentation follow the link: <a href=\"http://hortonworks.com/apache/cloudbreak/\">http://hortonworks.com/apache/cloudbreak/</a>

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


from pprint import pformat
from six import iteritems
import re


class BaseImageResponse(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 = {
        'hdp_stacks': 'list[StackDetailsJson]',
        'hdf_stacks': 'list[StackDetailsJson]',
        '_date': 'str',
        'description': 'str',
        'os': 'str',
        'os_type': 'str',
        'uuid': 'str',
        'version': 'str',
        'repo': 'dict(str, str)',
        'images': 'dict(str, dict(str, str))',
        'stack_details': 'StackDetailsJson',
        'default_image': 'bool',
        'package_versions': 'dict(str, str)'
    }

    attribute_map = {
        'hdp_stacks': 'hdpStacks',
        'hdf_stacks': 'hdfStacks',
        '_date': 'date',
        'description': 'description',
        'os': 'os',
        'os_type': 'osType',
        'uuid': 'uuid',
        'version': 'version',
        'repo': 'repo',
        'images': 'images',
        'stack_details': 'stackDetails',
        'default_image': 'defaultImage',
        'package_versions': 'packageVersions'
    }

    def __init__(self, hdp_stacks=None, hdf_stacks=None, _date=None, description=None, os=None, os_type=None, uuid=None, version=None, repo=None, images=None, stack_details=None, default_image=False, package_versions=None):
        """
        BaseImageResponse - a model defined in Swagger
        """

        self._hdp_stacks = None
        self._hdf_stacks = None
        self.__date = None
        self._description = None
        self._os = None
        self._os_type = None
        self._uuid = None
        self._version = None
        self._repo = None
        self._images = None
        self._stack_details = None
        self._default_image = None
        self._package_versions = None

        if hdp_stacks is not None:
          self.hdp_stacks = hdp_stacks
        if hdf_stacks is not None:
          self.hdf_stacks = hdf_stacks
        if _date is not None:
          self._date = _date
        if description is not None:
          self.description = description
        if os is not None:
          self.os = os
        if os_type is not None:
          self.os_type = os_type
        if uuid is not None:
          self.uuid = uuid
        if version is not None:
          self.version = version
        if repo is not None:
          self.repo = repo
        if images is not None:
          self.images = images
        if stack_details is not None:
          self.stack_details = stack_details
        if default_image is not None:
          self.default_image = default_image
        if package_versions is not None:
          self.package_versions = package_versions

    @property
    def hdp_stacks(self):
        """
        Gets the hdp_stacks of this BaseImageResponse.

        :return: The hdp_stacks of this BaseImageResponse.
        :rtype: list[StackDetailsJson]
        """
        return self._hdp_stacks

    @hdp_stacks.setter
    def hdp_stacks(self, hdp_stacks):
        """
        Sets the hdp_stacks of this BaseImageResponse.

        :param hdp_stacks: The hdp_stacks of this BaseImageResponse.
        :type: list[StackDetailsJson]
        """

        self._hdp_stacks = hdp_stacks

    @property
    def hdf_stacks(self):
        """
        Gets the hdf_stacks of this BaseImageResponse.

        :return: The hdf_stacks of this BaseImageResponse.
        :rtype: list[StackDetailsJson]
        """
        return self._hdf_stacks

    @hdf_stacks.setter
    def hdf_stacks(self, hdf_stacks):
        """
        Sets the hdf_stacks of this BaseImageResponse.

        :param hdf_stacks: The hdf_stacks of this BaseImageResponse.
        :type: list[StackDetailsJson]
        """

        self._hdf_stacks = hdf_stacks

    @property
    def _date(self):
        """
        Gets the _date of this BaseImageResponse.

        :return: The _date of this BaseImageResponse.
        :rtype: str
        """
        return self.__date

    @_date.setter
    def _date(self, _date):
        """
        Sets the _date of this BaseImageResponse.

        :param _date: The _date of this BaseImageResponse.
        :type: str
        """

        self.__date = _date

    @property
    def description(self):
        """
        Gets the description of this BaseImageResponse.

        :return: The description of this BaseImageResponse.
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """
        Sets the description of this BaseImageResponse.

        :param description: The description of this BaseImageResponse.
        :type: str
        """

        self._description = description

    @property
    def os(self):
        """
        Gets the os of this BaseImageResponse.

        :return: The os of this BaseImageResponse.
        :rtype: str
        """
        return self._os

    @os.setter
    def os(self, os):
        """
        Sets the os of this BaseImageResponse.

        :param os: The os of this BaseImageResponse.
        :type: str
        """

        self._os = os

    @property
    def os_type(self):
        """
        Gets the os_type of this BaseImageResponse.

        :return: The os_type of this BaseImageResponse.
        :rtype: str
        """
        return self._os_type

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

        :param os_type: The os_type of this BaseImageResponse.
        :type: str
        """

        self._os_type = os_type

    @property
    def uuid(self):
        """
        Gets the uuid of this BaseImageResponse.

        :return: The uuid of this BaseImageResponse.
        :rtype: str
        """
        return self._uuid

    @uuid.setter
    def uuid(self, uuid):
        """
        Sets the uuid of this BaseImageResponse.

        :param uuid: The uuid of this BaseImageResponse.
        :type: str
        """

        self._uuid = uuid

    @property
    def version(self):
        """
        Gets the version of this BaseImageResponse.

        :return: The version of this BaseImageResponse.
        :rtype: str
        """
        return self._version

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

        :param version: The version of this BaseImageResponse.
        :type: str
        """

        self._version = version

    @property
    def repo(self):
        """
        Gets the repo of this BaseImageResponse.

        :return: The repo of this BaseImageResponse.
        :rtype: dict(str, str)
        """
        return self._repo

    @repo.setter
    def repo(self, repo):
        """
        Sets the repo of this BaseImageResponse.

        :param repo: The repo of this BaseImageResponse.
        :type: dict(str, str)
        """

        self._repo = repo

    @property
    def images(self):
        """
        Gets the images of this BaseImageResponse.

        :return: The images of this BaseImageResponse.
        :rtype: dict(str, dict(str, str))
        """
        return self._images

    @images.setter
    def images(self, images):
        """
        Sets the images of this BaseImageResponse.

        :param images: The images of this BaseImageResponse.
        :type: dict(str, dict(str, str))
        """

        self._images = images

    @property
    def stack_details(self):
        """
        Gets the stack_details of this BaseImageResponse.

        :return: The stack_details of this BaseImageResponse.
        :rtype: StackDetailsJson
        """
        return self._stack_details

    @stack_details.setter
    def stack_details(self, stack_details):
        """
        Sets the stack_details of this BaseImageResponse.

        :param stack_details: The stack_details of this BaseImageResponse.
        :type: StackDetailsJson
        """

        self._stack_details = stack_details

    @property
    def default_image(self):
        """
        Gets the default_image of this BaseImageResponse.

        :return: The default_image of this BaseImageResponse.
        :rtype: bool
        """
        return self._default_image

    @default_image.setter
    def default_image(self, default_image):
        """
        Sets the default_image of this BaseImageResponse.

        :param default_image: The default_image of this BaseImageResponse.
        :type: bool
        """

        self._default_image = default_image

    @property
    def package_versions(self):
        """
        Gets the package_versions of this BaseImageResponse.

        :return: The package_versions of this BaseImageResponse.
        :rtype: dict(str, str)
        """
        return self._package_versions

    @package_versions.setter
    def package_versions(self, package_versions):
        """
        Sets the package_versions of this BaseImageResponse.

        :param package_versions: The package_versions of this BaseImageResponse.
        :type: dict(str, str)
        """

        self._package_versions = package_versions

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

        for attr, _ in 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 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, BaseImageResponse):
            return False

        return self.__dict__ == other.__dict__

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