# 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
from cm_client.models.api_schedule import ApiSchedule  # noqa: F401,E501

class ApiReplicationSchedule(ApiSchedule):
    """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 = {
        'hdfs_arguments': 'ApiHdfsReplicationArguments',
        'hive_arguments': 'ApiHiveReplicationArguments',
        'hdfs_cloud_arguments': 'ApiHdfsCloudReplicationArguments',
        'ozone_replication_arguments': 'ApiOzoneReplicationArguments',
        'history': 'list[ApiReplicationCommand]',
        'active': 'bool',
        'hive_cloud_arguments': 'ApiHiveCloudReplicationArguments',
        'hbase_arguments': 'ApiHBaseReplicationArguments',
        'hive3_arguments': 'ApiHive3ReplicationArguments',
        'ranger_arguments': 'ApiRangerReplicationArgs',
        'iceberg_arguments': 'ApiIcebergReplicationArguments',
        'atlas_replication_arguments': 'ApiAtlasReplicationArguments'
    }
    if hasattr(ApiSchedule, "swagger_types"):
        swagger_types.update(ApiSchedule.swagger_types)

    attribute_map = {
        'hdfs_arguments': 'hdfsArguments',
        'hive_arguments': 'hiveArguments',
        'hdfs_cloud_arguments': 'hdfsCloudArguments',
        'ozone_replication_arguments': 'ozoneReplicationArguments',
        'history': 'history',
        'active': 'active',
        'hive_cloud_arguments': 'hiveCloudArguments',
        'hbase_arguments': 'hbaseArguments',
        'hive3_arguments': 'hive3Arguments',
        'ranger_arguments': 'rangerArguments',
        'iceberg_arguments': 'icebergArguments',
        'atlas_replication_arguments': 'atlasReplicationArguments'
    }
    if hasattr(ApiSchedule, "attribute_map"):
        attribute_map.update(ApiSchedule.attribute_map)

    def __init__(self, hdfs_arguments=None, hive_arguments=None, hdfs_cloud_arguments=None, ozone_replication_arguments=None, history=None, active=None, hive_cloud_arguments=None, hbase_arguments=None, hive3_arguments=None, ranger_arguments=None, iceberg_arguments=None, atlas_replication_arguments=None, *args, **kwargs):  # noqa: E501
        """ApiReplicationSchedule - a model defined in Swagger"""  # noqa: E501
        self._hdfs_arguments = None
        self._hive_arguments = None
        self._hdfs_cloud_arguments = None
        self._ozone_replication_arguments = None
        self._history = None
        self._active = None
        self._hive_cloud_arguments = None
        self._hbase_arguments = None
        self._hive3_arguments = None
        self._ranger_arguments = None
        self._iceberg_arguments = None
        self._atlas_replication_arguments = None
        self.discriminator = None
        if hdfs_arguments is not None:
            self.hdfs_arguments = hdfs_arguments
        if hive_arguments is not None:
            self.hive_arguments = hive_arguments
        if hdfs_cloud_arguments is not None:
            self.hdfs_cloud_arguments = hdfs_cloud_arguments
        if ozone_replication_arguments is not None:
            self.ozone_replication_arguments = ozone_replication_arguments
        if history is not None:
            self.history = history
        if active is not None:
            self.active = active
        if hive_cloud_arguments is not None:
            self.hive_cloud_arguments = hive_cloud_arguments
        if hbase_arguments is not None:
            self.hbase_arguments = hbase_arguments
        if hive3_arguments is not None:
            self.hive3_arguments = hive3_arguments
        if ranger_arguments is not None:
            self.ranger_arguments = ranger_arguments
        if iceberg_arguments is not None:
            self.iceberg_arguments = iceberg_arguments
        if atlas_replication_arguments is not None:
            self.atlas_replication_arguments = atlas_replication_arguments
        ApiSchedule.__init__(self, *args, **kwargs)

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


        :return: The hdfs_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiHdfsReplicationArguments
        """
        return self._hdfs_arguments

    @hdfs_arguments.setter
    def hdfs_arguments(self, hdfs_arguments):
        """Sets the hdfs_arguments of this ApiReplicationSchedule.


        :param hdfs_arguments: The hdfs_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiHdfsReplicationArguments
        """

        self._hdfs_arguments = hdfs_arguments

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


        :return: The hive_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiHiveReplicationArguments
        """
        return self._hive_arguments

    @hive_arguments.setter
    def hive_arguments(self, hive_arguments):
        """Sets the hive_arguments of this ApiReplicationSchedule.


        :param hive_arguments: The hive_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiHiveReplicationArguments
        """

        self._hive_arguments = hive_arguments

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


        :return: The hdfs_cloud_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiHdfsCloudReplicationArguments
        """
        return self._hdfs_cloud_arguments

    @hdfs_cloud_arguments.setter
    def hdfs_cloud_arguments(self, hdfs_cloud_arguments):
        """Sets the hdfs_cloud_arguments of this ApiReplicationSchedule.


        :param hdfs_cloud_arguments: The hdfs_cloud_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiHdfsCloudReplicationArguments
        """

        self._hdfs_cloud_arguments = hdfs_cloud_arguments

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


        :return: The ozone_replication_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiOzoneReplicationArguments
        """
        return self._ozone_replication_arguments

    @ozone_replication_arguments.setter
    def ozone_replication_arguments(self, ozone_replication_arguments):
        """Sets the ozone_replication_arguments of this ApiReplicationSchedule.


        :param ozone_replication_arguments: The ozone_replication_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiOzoneReplicationArguments
        """

        self._ozone_replication_arguments = ozone_replication_arguments

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

        List of active and/or finished commands for this schedule.  # noqa: E501

        :return: The history of this ApiReplicationSchedule.  # noqa: E501
        :rtype: list[ApiReplicationCommand]
        """
        return self._history

    @history.setter
    def history(self, history):
        """Sets the history of this ApiReplicationSchedule.

        List of active and/or finished commands for this schedule.  # noqa: E501

        :param history: The history of this ApiReplicationSchedule.  # noqa: E501
        :type: list[ApiReplicationCommand]
        """

        self._history = history

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

        Read-only field that is true if this schedule is currently active, false if not. Available since API v11.  # noqa: E501

        :return: The active of this ApiReplicationSchedule.  # noqa: E501
        :rtype: bool
        """
        return self._active

    @active.setter
    def active(self, active):
        """Sets the active of this ApiReplicationSchedule.

        Read-only field that is true if this schedule is currently active, false if not. Available since API v11.  # noqa: E501

        :param active: The active of this ApiReplicationSchedule.  # noqa: E501
        :type: bool
        """

        self._active = active

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


        :return: The hive_cloud_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiHiveCloudReplicationArguments
        """
        return self._hive_cloud_arguments

    @hive_cloud_arguments.setter
    def hive_cloud_arguments(self, hive_cloud_arguments):
        """Sets the hive_cloud_arguments of this ApiReplicationSchedule.


        :param hive_cloud_arguments: The hive_cloud_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiHiveCloudReplicationArguments
        """

        self._hive_cloud_arguments = hive_cloud_arguments

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


        :return: The hbase_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiHBaseReplicationArguments
        """
        return self._hbase_arguments

    @hbase_arguments.setter
    def hbase_arguments(self, hbase_arguments):
        """Sets the hbase_arguments of this ApiReplicationSchedule.


        :param hbase_arguments: The hbase_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiHBaseReplicationArguments
        """

        self._hbase_arguments = hbase_arguments

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


        :return: The hive3_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiHive3ReplicationArguments
        """
        return self._hive3_arguments

    @hive3_arguments.setter
    def hive3_arguments(self, hive3_arguments):
        """Sets the hive3_arguments of this ApiReplicationSchedule.


        :param hive3_arguments: The hive3_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiHive3ReplicationArguments
        """

        self._hive3_arguments = hive3_arguments

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


        :return: The ranger_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiRangerReplicationArgs
        """
        return self._ranger_arguments

    @ranger_arguments.setter
    def ranger_arguments(self, ranger_arguments):
        """Sets the ranger_arguments of this ApiReplicationSchedule.


        :param ranger_arguments: The ranger_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiRangerReplicationArgs
        """

        self._ranger_arguments = ranger_arguments

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


        :return: The iceberg_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiIcebergReplicationArguments
        """
        return self._iceberg_arguments

    @iceberg_arguments.setter
    def iceberg_arguments(self, iceberg_arguments):
        """Sets the iceberg_arguments of this ApiReplicationSchedule.


        :param iceberg_arguments: The iceberg_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiIcebergReplicationArguments
        """

        self._iceberg_arguments = iceberg_arguments

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


        :return: The atlas_replication_arguments of this ApiReplicationSchedule.  # noqa: E501
        :rtype: ApiAtlasReplicationArguments
        """
        return self._atlas_replication_arguments

    @atlas_replication_arguments.setter
    def atlas_replication_arguments(self, atlas_replication_arguments):
        """Sets the atlas_replication_arguments of this ApiReplicationSchedule.


        :param atlas_replication_arguments: The atlas_replication_arguments of this ApiReplicationSchedule.  # noqa: E501
        :type: ApiAtlasReplicationArguments
        """

        self._atlas_replication_arguments = atlas_replication_arguments

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

        return self.__dict__ == other.__dict__

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