# coding: utf-8

"""
    Cloudera Manager API

    <h1>Cloudera Manager API v57</h1>       <p>Introduced in Cloudera Manager 7.13.1</p>       <p><a href=\"http://www.cloudera.com/documentation.html\">Cloudera Product Documentation</a></p>  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class ApiGenerateCleanupDockerArgs(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 = {
        'remote_repo_url': 'str',
        'docker_registry': 'str',
        'control_plane_uuid': 'str',
        'old_manifest_content': 'str',
        'new_manifest_content': 'str',
        'selected_features': 'str',
        'selected_features_only': 'bool'
    }

    attribute_map = {
        'remote_repo_url': 'remoteRepoUrl',
        'docker_registry': 'dockerRegistry',
        'control_plane_uuid': 'controlPlaneUuid',
        'old_manifest_content': 'oldManifestContent',
        'new_manifest_content': 'newManifestContent',
        'selected_features': 'selectedFeatures',
        'selected_features_only': 'selectedFeaturesOnly'
    }

    def __init__(self, remote_repo_url=None, docker_registry=None, control_plane_uuid=None, old_manifest_content=None, new_manifest_content=None, selected_features=None, selected_features_only=None):  # noqa: E501
        """ApiGenerateCleanupDockerArgs - a model defined in Swagger"""  # noqa: E501
        self._remote_repo_url = None
        self._docker_registry = None
        self._control_plane_uuid = None
        self._old_manifest_content = None
        self._new_manifest_content = None
        self._selected_features = None
        self._selected_features_only = None
        self.discriminator = None
        if remote_repo_url is not None:
            self.remote_repo_url = remote_repo_url
        if docker_registry is not None:
            self.docker_registry = docker_registry
        if control_plane_uuid is not None:
            self.control_plane_uuid = control_plane_uuid
        if old_manifest_content is not None:
            self.old_manifest_content = old_manifest_content
        if new_manifest_content is not None:
            self.new_manifest_content = new_manifest_content
        if selected_features is not None:
            self.selected_features = selected_features
        self.selected_features_only = selected_features_only

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

        The url of the remote repository where the private cloud artifacts manifest is hosted  # noqa: E501

        :return: The remote_repo_url of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :rtype: str
        """
        return self._remote_repo_url

    @remote_repo_url.setter
    def remote_repo_url(self, remote_repo_url):
        """Sets the remote_repo_url of this ApiGenerateCleanupDockerArgs.

        The url of the remote repository where the private cloud artifacts manifest is hosted  # noqa: E501

        :param remote_repo_url: The remote_repo_url of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :type: str
        """

        self._remote_repo_url = remote_repo_url

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

        Optional. The url of the Docker Registry from which images will be cleaned up  # noqa: E501

        :return: The docker_registry of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :rtype: str
        """
        return self._docker_registry

    @docker_registry.setter
    def docker_registry(self, docker_registry):
        """Sets the docker_registry of this ApiGenerateCleanupDockerArgs.

        Optional. The url of the Docker Registry from which images will be cleaned up  # noqa: E501

        :param docker_registry: The docker_registry of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :type: str
        """

        self._docker_registry = docker_registry

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

        Optional. The uuid of the control plane, if cleaning up docker images for an upgrade  # noqa: E501

        :return: The control_plane_uuid of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :rtype: str
        """
        return self._control_plane_uuid

    @control_plane_uuid.setter
    def control_plane_uuid(self, control_plane_uuid):
        """Sets the control_plane_uuid of this ApiGenerateCleanupDockerArgs.

        Optional. The uuid of the control plane, if cleaning up docker images for an upgrade  # noqa: E501

        :param control_plane_uuid: The control_plane_uuid of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :type: str
        """

        self._control_plane_uuid = control_plane_uuid

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

        Optional. The old manifest.json content from the currently installed version. If controlPlaneUuid is provided, this will be automatically fetched from the database.  # noqa: E501

        :return: The old_manifest_content of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :rtype: str
        """
        return self._old_manifest_content

    @old_manifest_content.setter
    def old_manifest_content(self, old_manifest_content):
        """Sets the old_manifest_content of this ApiGenerateCleanupDockerArgs.

        Optional. The old manifest.json content from the currently installed version. If controlPlaneUuid is provided, this will be automatically fetched from the database.  # noqa: E501

        :param old_manifest_content: The old_manifest_content of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :type: str
        """

        self._old_manifest_content = old_manifest_content

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

        The new manifest.json content from the version being upgraded to. Required for delta-based cleanup to determine which images are no longer needed.  # noqa: E501

        :return: The new_manifest_content of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :rtype: str
        """
        return self._new_manifest_content

    @new_manifest_content.setter
    def new_manifest_content(self, new_manifest_content):
        """Sets the new_manifest_content of this ApiGenerateCleanupDockerArgs.

        The new manifest.json content from the version being upgraded to. Required for delta-based cleanup to determine which images are no longer needed.  # noqa: E501

        :param new_manifest_content: The new_manifest_content of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :type: str
        """

        self._new_manifest_content = new_manifest_content

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

        Optional. The name of the feature(s) in a comma separated list that container images are associated with. When it is null, cleanup all the images from manifest.  # noqa: E501

        :return: The selected_features of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :rtype: str
        """
        return self._selected_features

    @selected_features.setter
    def selected_features(self, selected_features):
        """Sets the selected_features of this ApiGenerateCleanupDockerArgs.

        Optional. The name of the feature(s) in a comma separated list that container images are associated with. When it is null, cleanup all the images from manifest.  # noqa: E501

        :param selected_features: The selected_features of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :type: str
        """

        self._selected_features = selected_features

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

        Optional. If true, then only images that belong to the selected features will be processed. If false, then images that don't belong to any features will also be processed in addition to the ones that belong to the selected features.  # noqa: E501

        :return: The selected_features_only of this ApiGenerateCleanupDockerArgs.  # noqa: E501
        :rtype: bool
        """
        return self._selected_features_only

    @selected_features_only.setter
    def selected_features_only(self, selected_features_only):
        """Sets the selected_features_only of this ApiGenerateCleanupDockerArgs.

        Optional. If true, then only images that belong to the selected features will be processed. If false, then images that don't belong to any features will also be processed in addition to the ones that belong to the selected features.  # noqa: E501

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

        self._selected_features_only = selected_features_only

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

        return self.__dict__ == other.__dict__

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