# coding: utf-8

"""
    cloud_detect

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from volcenginesdkcore.configuration import Configuration


class UpdateTaskRequest(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 = {
        'address': 'str',
        'alarm_id_list': 'list[int]',
        'bind_group_id': 'int',
        'dns_config': 'DNSConfigForUpdateTaskInput',
        'dns_hijack_config': 'DNSHijackConfigForUpdateTaskInput',
        'diagnose_config': 'DiagnoseConfigForUpdateTaskInput',
        'download_config': 'DownloadConfigForUpdateTaskInput',
        'enable_shuffle': 'bool',
        'finish_time': 'int',
        'http_config': 'HTTPConfigForUpdateTaskInput',
        'id': 'int',
        'interval_seconds': 'int',
        'line_id_list': 'list[int]',
        'name': 'str',
        'node_count': 'int',
        'page_config': 'PageConfigForUpdateTaskInput',
        'period_config': 'PeriodConfigForUpdateTaskInput',
        'ping_config': 'PingConfigForUpdateTaskInput',
        'result_assert': 'ResultAssertForUpdateTaskInput',
        'selection_config': 'SelectionConfigForUpdateTaskInput',
        'tcp_config': 'TCPConfigForUpdateTaskInput',
        'tags': 'list[TagForUpdateTaskInput]',
        'target_server_type': 'int',
        'task_group_id': 'int',
        'udp_config': 'UDPConfigForUpdateTaskInput',
        'upload_config': 'UploadConfigForUpdateTaskInput'
    }

    attribute_map = {
        'address': 'Address',
        'alarm_id_list': 'AlarmIDList',
        'bind_group_id': 'BindGroupID',
        'dns_config': 'DNSConfig',
        'dns_hijack_config': 'DNSHijackConfig',
        'diagnose_config': 'DiagnoseConfig',
        'download_config': 'DownloadConfig',
        'enable_shuffle': 'EnableShuffle',
        'finish_time': 'FinishTime',
        'http_config': 'HTTPConfig',
        'id': 'ID',
        'interval_seconds': 'IntervalSeconds',
        'line_id_list': 'LineIDList',
        'name': 'Name',
        'node_count': 'NodeCount',
        'page_config': 'PageConfig',
        'period_config': 'PeriodConfig',
        'ping_config': 'PingConfig',
        'result_assert': 'ResultAssert',
        'selection_config': 'SelectionConfig',
        'tcp_config': 'TCPConfig',
        'tags': 'Tags',
        'target_server_type': 'TargetServerType',
        'task_group_id': 'TaskGroupID',
        'udp_config': 'UDPConfig',
        'upload_config': 'UploadConfig'
    }

    def __init__(self, address=None, alarm_id_list=None, bind_group_id=None, dns_config=None, dns_hijack_config=None, diagnose_config=None, download_config=None, enable_shuffle=None, finish_time=None, http_config=None, id=None, interval_seconds=None, line_id_list=None, name=None, node_count=None, page_config=None, period_config=None, ping_config=None, result_assert=None, selection_config=None, tcp_config=None, tags=None, target_server_type=None, task_group_id=None, udp_config=None, upload_config=None, _configuration=None):  # noqa: E501
        """UpdateTaskRequest - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._address = None
        self._alarm_id_list = None
        self._bind_group_id = None
        self._dns_config = None
        self._dns_hijack_config = None
        self._diagnose_config = None
        self._download_config = None
        self._enable_shuffle = None
        self._finish_time = None
        self._http_config = None
        self._id = None
        self._interval_seconds = None
        self._line_id_list = None
        self._name = None
        self._node_count = None
        self._page_config = None
        self._period_config = None
        self._ping_config = None
        self._result_assert = None
        self._selection_config = None
        self._tcp_config = None
        self._tags = None
        self._target_server_type = None
        self._task_group_id = None
        self._udp_config = None
        self._upload_config = None
        self.discriminator = None

        self.address = address
        if alarm_id_list is not None:
            self.alarm_id_list = alarm_id_list
        if bind_group_id is not None:
            self.bind_group_id = bind_group_id
        if dns_config is not None:
            self.dns_config = dns_config
        if dns_hijack_config is not None:
            self.dns_hijack_config = dns_hijack_config
        if diagnose_config is not None:
            self.diagnose_config = diagnose_config
        if download_config is not None:
            self.download_config = download_config
        if enable_shuffle is not None:
            self.enable_shuffle = enable_shuffle
        self.finish_time = finish_time
        if http_config is not None:
            self.http_config = http_config
        self.id = id
        self.interval_seconds = interval_seconds
        if line_id_list is not None:
            self.line_id_list = line_id_list
        self.name = name
        self.node_count = node_count
        if page_config is not None:
            self.page_config = page_config
        if period_config is not None:
            self.period_config = period_config
        if ping_config is not None:
            self.ping_config = ping_config
        if result_assert is not None:
            self.result_assert = result_assert
        if selection_config is not None:
            self.selection_config = selection_config
        if tcp_config is not None:
            self.tcp_config = tcp_config
        if tags is not None:
            self.tags = tags
        if target_server_type is not None:
            self.target_server_type = target_server_type
        if task_group_id is not None:
            self.task_group_id = task_group_id
        if udp_config is not None:
            self.udp_config = udp_config
        if upload_config is not None:
            self.upload_config = upload_config

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


        :return: The address of this UpdateTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._address

    @address.setter
    def address(self, address):
        """Sets the address of this UpdateTaskRequest.


        :param address: The address of this UpdateTaskRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and address is None:
            raise ValueError("Invalid value for `address`, must not be `None`")  # noqa: E501

        self._address = address

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


        :return: The alarm_id_list of this UpdateTaskRequest.  # noqa: E501
        :rtype: list[int]
        """
        return self._alarm_id_list

    @alarm_id_list.setter
    def alarm_id_list(self, alarm_id_list):
        """Sets the alarm_id_list of this UpdateTaskRequest.


        :param alarm_id_list: The alarm_id_list of this UpdateTaskRequest.  # noqa: E501
        :type: list[int]
        """

        self._alarm_id_list = alarm_id_list

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


        :return: The bind_group_id of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        """
        return self._bind_group_id

    @bind_group_id.setter
    def bind_group_id(self, bind_group_id):
        """Sets the bind_group_id of this UpdateTaskRequest.


        :param bind_group_id: The bind_group_id of this UpdateTaskRequest.  # noqa: E501
        :type: int
        """

        self._bind_group_id = bind_group_id

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


        :return: The dns_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: DNSConfigForUpdateTaskInput
        """
        return self._dns_config

    @dns_config.setter
    def dns_config(self, dns_config):
        """Sets the dns_config of this UpdateTaskRequest.


        :param dns_config: The dns_config of this UpdateTaskRequest.  # noqa: E501
        :type: DNSConfigForUpdateTaskInput
        """

        self._dns_config = dns_config

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


        :return: The dns_hijack_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: DNSHijackConfigForUpdateTaskInput
        """
        return self._dns_hijack_config

    @dns_hijack_config.setter
    def dns_hijack_config(self, dns_hijack_config):
        """Sets the dns_hijack_config of this UpdateTaskRequest.


        :param dns_hijack_config: The dns_hijack_config of this UpdateTaskRequest.  # noqa: E501
        :type: DNSHijackConfigForUpdateTaskInput
        """

        self._dns_hijack_config = dns_hijack_config

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


        :return: The diagnose_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: DiagnoseConfigForUpdateTaskInput
        """
        return self._diagnose_config

    @diagnose_config.setter
    def diagnose_config(self, diagnose_config):
        """Sets the diagnose_config of this UpdateTaskRequest.


        :param diagnose_config: The diagnose_config of this UpdateTaskRequest.  # noqa: E501
        :type: DiagnoseConfigForUpdateTaskInput
        """

        self._diagnose_config = diagnose_config

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


        :return: The download_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: DownloadConfigForUpdateTaskInput
        """
        return self._download_config

    @download_config.setter
    def download_config(self, download_config):
        """Sets the download_config of this UpdateTaskRequest.


        :param download_config: The download_config of this UpdateTaskRequest.  # noqa: E501
        :type: DownloadConfigForUpdateTaskInput
        """

        self._download_config = download_config

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


        :return: The enable_shuffle of this UpdateTaskRequest.  # noqa: E501
        :rtype: bool
        """
        return self._enable_shuffle

    @enable_shuffle.setter
    def enable_shuffle(self, enable_shuffle):
        """Sets the enable_shuffle of this UpdateTaskRequest.


        :param enable_shuffle: The enable_shuffle of this UpdateTaskRequest.  # noqa: E501
        :type: bool
        """

        self._enable_shuffle = enable_shuffle

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


        :return: The finish_time of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        """
        return self._finish_time

    @finish_time.setter
    def finish_time(self, finish_time):
        """Sets the finish_time of this UpdateTaskRequest.


        :param finish_time: The finish_time of this UpdateTaskRequest.  # noqa: E501
        :type: int
        """
        if self._configuration.client_side_validation and finish_time is None:
            raise ValueError("Invalid value for `finish_time`, must not be `None`")  # noqa: E501

        self._finish_time = finish_time

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


        :return: The http_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: HTTPConfigForUpdateTaskInput
        """
        return self._http_config

    @http_config.setter
    def http_config(self, http_config):
        """Sets the http_config of this UpdateTaskRequest.


        :param http_config: The http_config of this UpdateTaskRequest.  # noqa: E501
        :type: HTTPConfigForUpdateTaskInput
        """

        self._http_config = http_config

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


        :return: The id of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this UpdateTaskRequest.


        :param id: The id of this UpdateTaskRequest.  # noqa: E501
        :type: int
        """
        if self._configuration.client_side_validation and id is None:
            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501

        self._id = id

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


        :return: The interval_seconds of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        """
        return self._interval_seconds

    @interval_seconds.setter
    def interval_seconds(self, interval_seconds):
        """Sets the interval_seconds of this UpdateTaskRequest.


        :param interval_seconds: The interval_seconds of this UpdateTaskRequest.  # noqa: E501
        :type: int
        """
        if self._configuration.client_side_validation and interval_seconds is None:
            raise ValueError("Invalid value for `interval_seconds`, must not be `None`")  # noqa: E501

        self._interval_seconds = interval_seconds

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


        :return: The line_id_list of this UpdateTaskRequest.  # noqa: E501
        :rtype: list[int]
        """
        return self._line_id_list

    @line_id_list.setter
    def line_id_list(self, line_id_list):
        """Sets the line_id_list of this UpdateTaskRequest.


        :param line_id_list: The line_id_list of this UpdateTaskRequest.  # noqa: E501
        :type: list[int]
        """

        self._line_id_list = line_id_list

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


        :return: The name of this UpdateTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this UpdateTaskRequest.


        :param name: The name of this UpdateTaskRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and name is None:
            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501

        self._name = name

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


        :return: The node_count of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        """
        return self._node_count

    @node_count.setter
    def node_count(self, node_count):
        """Sets the node_count of this UpdateTaskRequest.


        :param node_count: The node_count of this UpdateTaskRequest.  # noqa: E501
        :type: int
        """
        if self._configuration.client_side_validation and node_count is None:
            raise ValueError("Invalid value for `node_count`, must not be `None`")  # noqa: E501

        self._node_count = node_count

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


        :return: The page_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: PageConfigForUpdateTaskInput
        """
        return self._page_config

    @page_config.setter
    def page_config(self, page_config):
        """Sets the page_config of this UpdateTaskRequest.


        :param page_config: The page_config of this UpdateTaskRequest.  # noqa: E501
        :type: PageConfigForUpdateTaskInput
        """

        self._page_config = page_config

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


        :return: The period_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: PeriodConfigForUpdateTaskInput
        """
        return self._period_config

    @period_config.setter
    def period_config(self, period_config):
        """Sets the period_config of this UpdateTaskRequest.


        :param period_config: The period_config of this UpdateTaskRequest.  # noqa: E501
        :type: PeriodConfigForUpdateTaskInput
        """

        self._period_config = period_config

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


        :return: The ping_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: PingConfigForUpdateTaskInput
        """
        return self._ping_config

    @ping_config.setter
    def ping_config(self, ping_config):
        """Sets the ping_config of this UpdateTaskRequest.


        :param ping_config: The ping_config of this UpdateTaskRequest.  # noqa: E501
        :type: PingConfigForUpdateTaskInput
        """

        self._ping_config = ping_config

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


        :return: The result_assert of this UpdateTaskRequest.  # noqa: E501
        :rtype: ResultAssertForUpdateTaskInput
        """
        return self._result_assert

    @result_assert.setter
    def result_assert(self, result_assert):
        """Sets the result_assert of this UpdateTaskRequest.


        :param result_assert: The result_assert of this UpdateTaskRequest.  # noqa: E501
        :type: ResultAssertForUpdateTaskInput
        """

        self._result_assert = result_assert

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


        :return: The selection_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: SelectionConfigForUpdateTaskInput
        """
        return self._selection_config

    @selection_config.setter
    def selection_config(self, selection_config):
        """Sets the selection_config of this UpdateTaskRequest.


        :param selection_config: The selection_config of this UpdateTaskRequest.  # noqa: E501
        :type: SelectionConfigForUpdateTaskInput
        """

        self._selection_config = selection_config

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


        :return: The tcp_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: TCPConfigForUpdateTaskInput
        """
        return self._tcp_config

    @tcp_config.setter
    def tcp_config(self, tcp_config):
        """Sets the tcp_config of this UpdateTaskRequest.


        :param tcp_config: The tcp_config of this UpdateTaskRequest.  # noqa: E501
        :type: TCPConfigForUpdateTaskInput
        """

        self._tcp_config = tcp_config

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


        :return: The tags of this UpdateTaskRequest.  # noqa: E501
        :rtype: list[TagForUpdateTaskInput]
        """
        return self._tags

    @tags.setter
    def tags(self, tags):
        """Sets the tags of this UpdateTaskRequest.


        :param tags: The tags of this UpdateTaskRequest.  # noqa: E501
        :type: list[TagForUpdateTaskInput]
        """

        self._tags = tags

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


        :return: The target_server_type of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        """
        return self._target_server_type

    @target_server_type.setter
    def target_server_type(self, target_server_type):
        """Sets the target_server_type of this UpdateTaskRequest.


        :param target_server_type: The target_server_type of this UpdateTaskRequest.  # noqa: E501
        :type: int
        """

        self._target_server_type = target_server_type

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


        :return: The task_group_id of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        """
        return self._task_group_id

    @task_group_id.setter
    def task_group_id(self, task_group_id):
        """Sets the task_group_id of this UpdateTaskRequest.


        :param task_group_id: The task_group_id of this UpdateTaskRequest.  # noqa: E501
        :type: int
        """

        self._task_group_id = task_group_id

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


        :return: The udp_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: UDPConfigForUpdateTaskInput
        """
        return self._udp_config

    @udp_config.setter
    def udp_config(self, udp_config):
        """Sets the udp_config of this UpdateTaskRequest.


        :param udp_config: The udp_config of this UpdateTaskRequest.  # noqa: E501
        :type: UDPConfigForUpdateTaskInput
        """

        self._udp_config = udp_config

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


        :return: The upload_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: UploadConfigForUpdateTaskInput
        """
        return self._upload_config

    @upload_config.setter
    def upload_config(self, upload_config):
        """Sets the upload_config of this UpdateTaskRequest.


        :param upload_config: The upload_config of this UpdateTaskRequest.  # noqa: E501
        :type: UploadConfigForUpdateTaskInput
        """

        self._upload_config = upload_config

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

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
