# 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 ApiHive3ReplicationArguments(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 = {
        'source_hive_service': 'ApiServiceRef',
        'status': 'PolicyStatus',
        'ranger_replication': 'bool',
        'atlas_replication': 'bool',
        'external_table_replication': 'bool',
        'external_table_base_dir': 'str',
        'distcp_on_target': 'bool',
        'num_maps': 'int',
        'bandwidth_per_map': 'int',
        'policy_options': 'dict(str, str)',
        'source_db_name': 'str',
        'target_db_name': 'str',
        'policy_name': 'str',
        'schedule_clause': 'str',
        'run_as': 'str',
        'hive_op': 'str',
        'hive_update_op': 'str',
        'exclude_source': 'bool',
        'exclude_target': 'bool',
        'failover_status': 'str',
        'cloud_args': 'ApiHive3CloudArguments',
        'remote_db_params': 'str'
    }

    attribute_map = {
        'source_hive_service': 'sourceHiveService',
        'status': 'status',
        'ranger_replication': 'rangerReplication',
        'atlas_replication': 'atlasReplication',
        'external_table_replication': 'externalTableReplication',
        'external_table_base_dir': 'externalTableBaseDir',
        'distcp_on_target': 'distcpOnTarget',
        'num_maps': 'numMaps',
        'bandwidth_per_map': 'bandwidthPerMap',
        'policy_options': 'policyOptions',
        'source_db_name': 'sourceDbName',
        'target_db_name': 'targetDbName',
        'policy_name': 'policyName',
        'schedule_clause': 'scheduleClause',
        'run_as': 'runAs',
        'hive_op': 'hiveOp',
        'hive_update_op': 'hiveUpdateOp',
        'exclude_source': 'excludeSource',
        'exclude_target': 'excludeTarget',
        'failover_status': 'failoverStatus',
        'cloud_args': 'cloudArgs',
        'remote_db_params': 'remoteDbParams'
    }

    def __init__(self, source_hive_service=None, status=None, ranger_replication=None, atlas_replication=None, external_table_replication=None, external_table_base_dir=None, distcp_on_target=None, num_maps=None, bandwidth_per_map=None, policy_options=None, source_db_name=None, target_db_name=None, policy_name=None, schedule_clause=None, run_as=None, hive_op=None, hive_update_op=None, exclude_source=None, exclude_target=None, failover_status=None, cloud_args=None, remote_db_params=None):  # noqa: E501
        """ApiHive3ReplicationArguments - a model defined in Swagger"""  # noqa: E501
        self._source_hive_service = None
        self._status = None
        self._ranger_replication = None
        self._atlas_replication = None
        self._external_table_replication = None
        self._external_table_base_dir = None
        self._distcp_on_target = None
        self._num_maps = None
        self._bandwidth_per_map = None
        self._policy_options = None
        self._source_db_name = None
        self._target_db_name = None
        self._policy_name = None
        self._schedule_clause = None
        self._run_as = None
        self._hive_op = None
        self._hive_update_op = None
        self._exclude_source = None
        self._exclude_target = None
        self._failover_status = None
        self._cloud_args = None
        self._remote_db_params = None
        self.discriminator = None
        if source_hive_service is not None:
            self.source_hive_service = source_hive_service
        if status is not None:
            self.status = status
        if ranger_replication is not None:
            self.ranger_replication = ranger_replication
        if atlas_replication is not None:
            self.atlas_replication = atlas_replication
        if external_table_replication is not None:
            self.external_table_replication = external_table_replication
        if external_table_base_dir is not None:
            self.external_table_base_dir = external_table_base_dir
        if distcp_on_target is not None:
            self.distcp_on_target = distcp_on_target
        if num_maps is not None:
            self.num_maps = num_maps
        if bandwidth_per_map is not None:
            self.bandwidth_per_map = bandwidth_per_map
        if policy_options is not None:
            self.policy_options = policy_options
        if source_db_name is not None:
            self.source_db_name = source_db_name
        if target_db_name is not None:
            self.target_db_name = target_db_name
        if policy_name is not None:
            self.policy_name = policy_name
        if schedule_clause is not None:
            self.schedule_clause = schedule_clause
        if run_as is not None:
            self.run_as = run_as
        if hive_op is not None:
            self.hive_op = hive_op
        if hive_update_op is not None:
            self.hive_update_op = hive_update_op
        if exclude_source is not None:
            self.exclude_source = exclude_source
        if exclude_target is not None:
            self.exclude_target = exclude_target
        if failover_status is not None:
            self.failover_status = failover_status
        if cloud_args is not None:
            self.cloud_args = cloud_args
        if remote_db_params is not None:
            self.remote_db_params = remote_db_params

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


        :return: The source_hive_service of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: ApiServiceRef
        """
        return self._source_hive_service

    @source_hive_service.setter
    def source_hive_service(self, source_hive_service):
        """Sets the source_hive_service of this ApiHive3ReplicationArguments.


        :param source_hive_service: The source_hive_service of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: ApiServiceRef
        """

        self._source_hive_service = source_hive_service

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


        :return: The status of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: PolicyStatus
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this ApiHive3ReplicationArguments.


        :param status: The status of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: PolicyStatus
        """

        self._status = status

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


        :return: The ranger_replication of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._ranger_replication

    @ranger_replication.setter
    def ranger_replication(self, ranger_replication):
        """Sets the ranger_replication of this ApiHive3ReplicationArguments.


        :param ranger_replication: The ranger_replication of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: bool
        """

        self._ranger_replication = ranger_replication

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


        :return: The atlas_replication of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._atlas_replication

    @atlas_replication.setter
    def atlas_replication(self, atlas_replication):
        """Sets the atlas_replication of this ApiHive3ReplicationArguments.


        :param atlas_replication: The atlas_replication of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: bool
        """

        self._atlas_replication = atlas_replication

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


        :return: The external_table_replication of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._external_table_replication

    @external_table_replication.setter
    def external_table_replication(self, external_table_replication):
        """Sets the external_table_replication of this ApiHive3ReplicationArguments.


        :param external_table_replication: The external_table_replication of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: bool
        """

        self._external_table_replication = external_table_replication

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


        :return: The external_table_base_dir of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._external_table_base_dir

    @external_table_base_dir.setter
    def external_table_base_dir(self, external_table_base_dir):
        """Sets the external_table_base_dir of this ApiHive3ReplicationArguments.


        :param external_table_base_dir: The external_table_base_dir of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._external_table_base_dir = external_table_base_dir

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


        :return: The distcp_on_target of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._distcp_on_target

    @distcp_on_target.setter
    def distcp_on_target(self, distcp_on_target):
        """Sets the distcp_on_target of this ApiHive3ReplicationArguments.


        :param distcp_on_target: The distcp_on_target of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: bool
        """

        self._distcp_on_target = distcp_on_target

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


        :return: The num_maps of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: int
        """
        return self._num_maps

    @num_maps.setter
    def num_maps(self, num_maps):
        """Sets the num_maps of this ApiHive3ReplicationArguments.


        :param num_maps: The num_maps of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: int
        """

        self._num_maps = num_maps

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


        :return: The bandwidth_per_map of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: int
        """
        return self._bandwidth_per_map

    @bandwidth_per_map.setter
    def bandwidth_per_map(self, bandwidth_per_map):
        """Sets the bandwidth_per_map of this ApiHive3ReplicationArguments.


        :param bandwidth_per_map: The bandwidth_per_map of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: int
        """

        self._bandwidth_per_map = bandwidth_per_map

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


        :return: The policy_options of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: dict(str, str)
        """
        return self._policy_options

    @policy_options.setter
    def policy_options(self, policy_options):
        """Sets the policy_options of this ApiHive3ReplicationArguments.


        :param policy_options: The policy_options of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: dict(str, str)
        """

        self._policy_options = policy_options

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


        :return: The source_db_name of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._source_db_name

    @source_db_name.setter
    def source_db_name(self, source_db_name):
        """Sets the source_db_name of this ApiHive3ReplicationArguments.


        :param source_db_name: The source_db_name of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._source_db_name = source_db_name

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


        :return: The target_db_name of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._target_db_name

    @target_db_name.setter
    def target_db_name(self, target_db_name):
        """Sets the target_db_name of this ApiHive3ReplicationArguments.


        :param target_db_name: The target_db_name of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._target_db_name = target_db_name

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


        :return: The policy_name of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._policy_name

    @policy_name.setter
    def policy_name(self, policy_name):
        """Sets the policy_name of this ApiHive3ReplicationArguments.


        :param policy_name: The policy_name of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._policy_name = policy_name

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


        :return: The schedule_clause of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._schedule_clause

    @schedule_clause.setter
    def schedule_clause(self, schedule_clause):
        """Sets the schedule_clause of this ApiHive3ReplicationArguments.


        :param schedule_clause: The schedule_clause of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._schedule_clause = schedule_clause

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


        :return: The run_as of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._run_as

    @run_as.setter
    def run_as(self, run_as):
        """Sets the run_as of this ApiHive3ReplicationArguments.


        :param run_as: The run_as of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._run_as = run_as

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


        :return: The hive_op of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._hive_op

    @hive_op.setter
    def hive_op(self, hive_op):
        """Sets the hive_op of this ApiHive3ReplicationArguments.


        :param hive_op: The hive_op of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._hive_op = hive_op

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


        :return: The hive_update_op of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._hive_update_op

    @hive_update_op.setter
    def hive_update_op(self, hive_update_op):
        """Sets the hive_update_op of this ApiHive3ReplicationArguments.


        :param hive_update_op: The hive_update_op of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._hive_update_op = hive_update_op

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


        :return: The exclude_source of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._exclude_source

    @exclude_source.setter
    def exclude_source(self, exclude_source):
        """Sets the exclude_source of this ApiHive3ReplicationArguments.


        :param exclude_source: The exclude_source of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: bool
        """

        self._exclude_source = exclude_source

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


        :return: The exclude_target of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._exclude_target

    @exclude_target.setter
    def exclude_target(self, exclude_target):
        """Sets the exclude_target of this ApiHive3ReplicationArguments.


        :param exclude_target: The exclude_target of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: bool
        """

        self._exclude_target = exclude_target

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


        :return: The failover_status of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._failover_status

    @failover_status.setter
    def failover_status(self, failover_status):
        """Sets the failover_status of this ApiHive3ReplicationArguments.


        :param failover_status: The failover_status of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._failover_status = failover_status

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


        :return: The cloud_args of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: ApiHive3CloudArguments
        """
        return self._cloud_args

    @cloud_args.setter
    def cloud_args(self, cloud_args):
        """Sets the cloud_args of this ApiHive3ReplicationArguments.


        :param cloud_args: The cloud_args of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: ApiHive3CloudArguments
        """

        self._cloud_args = cloud_args

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


        :return: The remote_db_params of this ApiHive3ReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._remote_db_params

    @remote_db_params.setter
    def remote_db_params(self, remote_db_params):
        """Sets the remote_db_params of this ApiHive3ReplicationArguments.


        :param remote_db_params: The remote_db_params of this ApiHive3ReplicationArguments.  # noqa: E501
        :type: str
        """

        self._remote_db_params = remote_db_params

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

        return self.__dict__ == other.__dict__

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