# 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 ApiIcebergReplicationArguments(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_iceberg_replication_service': 'ApiServiceRef',
        'policy_name': 'str',
        'included_table_filters': 'list[ApiHiveTable]',
        'excluded_table_filters': 'list[ApiHiveTable]',
        'batch_size': 'int',
        'proxy_name': 'str',
        'export_yarn_options': 'IcebergReplicationYarnOptions',
        'xfer_yarn_options': 'IcebergReplicationYarnOptions',
        'sync_yarn_options': 'IcebergReplicationYarnOptions',
        'should_replicate_column_stats': 'bool',
        'atlas_replication_needed': 'bool',
        'atlas_change_marker': 'str',
        'safety_valves_source': 'dict(str, IcebergReplicationSafetyValve)',
        'safety_valves_target': 'dict(str, IcebergReplicationSafetyValve)',
        'run_distcp_on_source': 'bool',
        'alt_staging_location': 'str',
        'force_test': 'bool',
        'jvm_opts_for_export': 'str',
        'jvm_opts_for_xfer': 'str',
        'jvm_opts_for_sync': 'str',
        'location_mapping': 'list[ApiMapEntry]',
        'source_storage_filter': 'SourceStorageFilter',
        'proxy_name_on_source': 'str'
    }

    attribute_map = {
        'source_iceberg_replication_service': 'sourceIcebergReplicationService',
        'policy_name': 'policyName',
        'included_table_filters': 'includedTableFilters',
        'excluded_table_filters': 'excludedTableFilters',
        'batch_size': 'batchSize',
        'proxy_name': 'proxyName',
        'export_yarn_options': 'exportYarnOptions',
        'xfer_yarn_options': 'xferYarnOptions',
        'sync_yarn_options': 'syncYarnOptions',
        'should_replicate_column_stats': 'shouldReplicateColumnStats',
        'atlas_replication_needed': 'atlasReplicationNeeded',
        'atlas_change_marker': 'atlasChangeMarker',
        'safety_valves_source': 'safetyValvesSource',
        'safety_valves_target': 'safetyValvesTarget',
        'run_distcp_on_source': 'runDistcpOnSource',
        'alt_staging_location': 'altStagingLocation',
        'force_test': 'forceTest',
        'jvm_opts_for_export': 'jvmOptsForExport',
        'jvm_opts_for_xfer': 'jvmOptsForXfer',
        'jvm_opts_for_sync': 'jvmOptsForSync',
        'location_mapping': 'locationMapping',
        'source_storage_filter': 'sourceStorageFilter',
        'proxy_name_on_source': 'proxyNameOnSource'
    }

    def __init__(self, source_iceberg_replication_service=None, policy_name=None, included_table_filters=None, excluded_table_filters=None, batch_size=None, proxy_name=None, export_yarn_options=None, xfer_yarn_options=None, sync_yarn_options=None, should_replicate_column_stats=None, atlas_replication_needed=None, atlas_change_marker=None, safety_valves_source=None, safety_valves_target=None, run_distcp_on_source=None, alt_staging_location=None, force_test=None, jvm_opts_for_export=None, jvm_opts_for_xfer=None, jvm_opts_for_sync=None, location_mapping=None, source_storage_filter=None, proxy_name_on_source=None):  # noqa: E501
        """ApiIcebergReplicationArguments - a model defined in Swagger"""  # noqa: E501
        self._source_iceberg_replication_service = None
        self._policy_name = None
        self._included_table_filters = None
        self._excluded_table_filters = None
        self._batch_size = None
        self._proxy_name = None
        self._export_yarn_options = None
        self._xfer_yarn_options = None
        self._sync_yarn_options = None
        self._should_replicate_column_stats = None
        self._atlas_replication_needed = None
        self._atlas_change_marker = None
        self._safety_valves_source = None
        self._safety_valves_target = None
        self._run_distcp_on_source = None
        self._alt_staging_location = None
        self._force_test = None
        self._jvm_opts_for_export = None
        self._jvm_opts_for_xfer = None
        self._jvm_opts_for_sync = None
        self._location_mapping = None
        self._source_storage_filter = None
        self._proxy_name_on_source = None
        self.discriminator = None
        if source_iceberg_replication_service is not None:
            self.source_iceberg_replication_service = source_iceberg_replication_service
        if policy_name is not None:
            self.policy_name = policy_name
        if included_table_filters is not None:
            self.included_table_filters = included_table_filters
        if excluded_table_filters is not None:
            self.excluded_table_filters = excluded_table_filters
        if batch_size is not None:
            self.batch_size = batch_size
        if proxy_name is not None:
            self.proxy_name = proxy_name
        if export_yarn_options is not None:
            self.export_yarn_options = export_yarn_options
        if xfer_yarn_options is not None:
            self.xfer_yarn_options = xfer_yarn_options
        if sync_yarn_options is not None:
            self.sync_yarn_options = sync_yarn_options
        if should_replicate_column_stats is not None:
            self.should_replicate_column_stats = should_replicate_column_stats
        self.atlas_replication_needed = atlas_replication_needed
        if atlas_change_marker is not None:
            self.atlas_change_marker = atlas_change_marker
        if safety_valves_source is not None:
            self.safety_valves_source = safety_valves_source
        if safety_valves_target is not None:
            self.safety_valves_target = safety_valves_target
        if run_distcp_on_source is not None:
            self.run_distcp_on_source = run_distcp_on_source
        if alt_staging_location is not None:
            self.alt_staging_location = alt_staging_location
        self.force_test = force_test
        if jvm_opts_for_export is not None:
            self.jvm_opts_for_export = jvm_opts_for_export
        if jvm_opts_for_xfer is not None:
            self.jvm_opts_for_xfer = jvm_opts_for_xfer
        if jvm_opts_for_sync is not None:
            self.jvm_opts_for_sync = jvm_opts_for_sync
        if location_mapping is not None:
            self.location_mapping = location_mapping
        if source_storage_filter is not None:
            self.source_storage_filter = source_storage_filter
        if proxy_name_on_source is not None:
            self.proxy_name_on_source = proxy_name_on_source

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


        :return: The source_iceberg_replication_service of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: ApiServiceRef
        """
        return self._source_iceberg_replication_service

    @source_iceberg_replication_service.setter
    def source_iceberg_replication_service(self, source_iceberg_replication_service):
        """Sets the source_iceberg_replication_service of this ApiIcebergReplicationArguments.


        :param source_iceberg_replication_service: The source_iceberg_replication_service of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: ApiServiceRef
        """

        self._source_iceberg_replication_service = source_iceberg_replication_service

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


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

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


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

        self._policy_name = policy_name

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


        :return: The included_table_filters of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: list[ApiHiveTable]
        """
        return self._included_table_filters

    @included_table_filters.setter
    def included_table_filters(self, included_table_filters):
        """Sets the included_table_filters of this ApiIcebergReplicationArguments.


        :param included_table_filters: The included_table_filters of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: list[ApiHiveTable]
        """

        self._included_table_filters = included_table_filters

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


        :return: The excluded_table_filters of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: list[ApiHiveTable]
        """
        return self._excluded_table_filters

    @excluded_table_filters.setter
    def excluded_table_filters(self, excluded_table_filters):
        """Sets the excluded_table_filters of this ApiIcebergReplicationArguments.


        :param excluded_table_filters: The excluded_table_filters of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: list[ApiHiveTable]
        """

        self._excluded_table_filters = excluded_table_filters

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


        :return: The batch_size of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: int
        """
        return self._batch_size

    @batch_size.setter
    def batch_size(self, batch_size):
        """Sets the batch_size of this ApiIcebergReplicationArguments.


        :param batch_size: The batch_size of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: int
        """

        self._batch_size = batch_size

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


        :return: The proxy_name of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._proxy_name

    @proxy_name.setter
    def proxy_name(self, proxy_name):
        """Sets the proxy_name of this ApiIcebergReplicationArguments.


        :param proxy_name: The proxy_name of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: str
        """

        self._proxy_name = proxy_name

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


        :return: The export_yarn_options of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: IcebergReplicationYarnOptions
        """
        return self._export_yarn_options

    @export_yarn_options.setter
    def export_yarn_options(self, export_yarn_options):
        """Sets the export_yarn_options of this ApiIcebergReplicationArguments.


        :param export_yarn_options: The export_yarn_options of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: IcebergReplicationYarnOptions
        """

        self._export_yarn_options = export_yarn_options

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


        :return: The xfer_yarn_options of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: IcebergReplicationYarnOptions
        """
        return self._xfer_yarn_options

    @xfer_yarn_options.setter
    def xfer_yarn_options(self, xfer_yarn_options):
        """Sets the xfer_yarn_options of this ApiIcebergReplicationArguments.


        :param xfer_yarn_options: The xfer_yarn_options of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: IcebergReplicationYarnOptions
        """

        self._xfer_yarn_options = xfer_yarn_options

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


        :return: The sync_yarn_options of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: IcebergReplicationYarnOptions
        """
        return self._sync_yarn_options

    @sync_yarn_options.setter
    def sync_yarn_options(self, sync_yarn_options):
        """Sets the sync_yarn_options of this ApiIcebergReplicationArguments.


        :param sync_yarn_options: The sync_yarn_options of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: IcebergReplicationYarnOptions
        """

        self._sync_yarn_options = sync_yarn_options

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


        :return: The should_replicate_column_stats of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._should_replicate_column_stats

    @should_replicate_column_stats.setter
    def should_replicate_column_stats(self, should_replicate_column_stats):
        """Sets the should_replicate_column_stats of this ApiIcebergReplicationArguments.


        :param should_replicate_column_stats: The should_replicate_column_stats of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: bool
        """

        self._should_replicate_column_stats = should_replicate_column_stats

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


        :return: The atlas_replication_needed of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._atlas_replication_needed

    @atlas_replication_needed.setter
    def atlas_replication_needed(self, atlas_replication_needed):
        """Sets the atlas_replication_needed of this ApiIcebergReplicationArguments.


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

        self._atlas_replication_needed = atlas_replication_needed

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


        :return: The atlas_change_marker of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._atlas_change_marker

    @atlas_change_marker.setter
    def atlas_change_marker(self, atlas_change_marker):
        """Sets the atlas_change_marker of this ApiIcebergReplicationArguments.


        :param atlas_change_marker: The atlas_change_marker of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: str
        """

        self._atlas_change_marker = atlas_change_marker

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


        :return: The safety_valves_source of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: dict(str, IcebergReplicationSafetyValve)
        """
        return self._safety_valves_source

    @safety_valves_source.setter
    def safety_valves_source(self, safety_valves_source):
        """Sets the safety_valves_source of this ApiIcebergReplicationArguments.


        :param safety_valves_source: The safety_valves_source of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: dict(str, IcebergReplicationSafetyValve)
        """

        self._safety_valves_source = safety_valves_source

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


        :return: The safety_valves_target of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: dict(str, IcebergReplicationSafetyValve)
        """
        return self._safety_valves_target

    @safety_valves_target.setter
    def safety_valves_target(self, safety_valves_target):
        """Sets the safety_valves_target of this ApiIcebergReplicationArguments.


        :param safety_valves_target: The safety_valves_target of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: dict(str, IcebergReplicationSafetyValve)
        """

        self._safety_valves_target = safety_valves_target

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


        :return: The run_distcp_on_source of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._run_distcp_on_source

    @run_distcp_on_source.setter
    def run_distcp_on_source(self, run_distcp_on_source):
        """Sets the run_distcp_on_source of this ApiIcebergReplicationArguments.


        :param run_distcp_on_source: The run_distcp_on_source of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: bool
        """

        self._run_distcp_on_source = run_distcp_on_source

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


        :return: The alt_staging_location of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._alt_staging_location

    @alt_staging_location.setter
    def alt_staging_location(self, alt_staging_location):
        """Sets the alt_staging_location of this ApiIcebergReplicationArguments.


        :param alt_staging_location: The alt_staging_location of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: str
        """

        self._alt_staging_location = alt_staging_location

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


        :return: The force_test of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: bool
        """
        return self._force_test

    @force_test.setter
    def force_test(self, force_test):
        """Sets the force_test of this ApiIcebergReplicationArguments.


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

        self._force_test = force_test

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


        :return: The jvm_opts_for_export of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._jvm_opts_for_export

    @jvm_opts_for_export.setter
    def jvm_opts_for_export(self, jvm_opts_for_export):
        """Sets the jvm_opts_for_export of this ApiIcebergReplicationArguments.


        :param jvm_opts_for_export: The jvm_opts_for_export of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: str
        """

        self._jvm_opts_for_export = jvm_opts_for_export

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


        :return: The jvm_opts_for_xfer of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._jvm_opts_for_xfer

    @jvm_opts_for_xfer.setter
    def jvm_opts_for_xfer(self, jvm_opts_for_xfer):
        """Sets the jvm_opts_for_xfer of this ApiIcebergReplicationArguments.


        :param jvm_opts_for_xfer: The jvm_opts_for_xfer of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: str
        """

        self._jvm_opts_for_xfer = jvm_opts_for_xfer

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


        :return: The jvm_opts_for_sync of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._jvm_opts_for_sync

    @jvm_opts_for_sync.setter
    def jvm_opts_for_sync(self, jvm_opts_for_sync):
        """Sets the jvm_opts_for_sync of this ApiIcebergReplicationArguments.


        :param jvm_opts_for_sync: The jvm_opts_for_sync of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: str
        """

        self._jvm_opts_for_sync = jvm_opts_for_sync

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


        :return: The location_mapping of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: list[ApiMapEntry]
        """
        return self._location_mapping

    @location_mapping.setter
    def location_mapping(self, location_mapping):
        """Sets the location_mapping of this ApiIcebergReplicationArguments.


        :param location_mapping: The location_mapping of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: list[ApiMapEntry]
        """

        self._location_mapping = location_mapping

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


        :return: The source_storage_filter of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: SourceStorageFilter
        """
        return self._source_storage_filter

    @source_storage_filter.setter
    def source_storage_filter(self, source_storage_filter):
        """Sets the source_storage_filter of this ApiIcebergReplicationArguments.


        :param source_storage_filter: The source_storage_filter of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: SourceStorageFilter
        """

        self._source_storage_filter = source_storage_filter

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


        :return: The proxy_name_on_source of this ApiIcebergReplicationArguments.  # noqa: E501
        :rtype: str
        """
        return self._proxy_name_on_source

    @proxy_name_on_source.setter
    def proxy_name_on_source(self, proxy_name_on_source):
        """Sets the proxy_name_on_source of this ApiIcebergReplicationArguments.


        :param proxy_name_on_source: The proxy_name_on_source of this ApiIcebergReplicationArguments.  # noqa: E501
        :type: str
        """

        self._proxy_name_on_source = proxy_name_on_source

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

        return self.__dict__ == other.__dict__

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