# coding: utf-8

"""
DPLCoreDumpInfo.py

 The Clear BSD License

 Copyright (c) – 2016, NetApp, Inc. All rights reserved.

 Redistribution and use in source and binary forms, with or without modification, are permitted (subject to the limitations in the disclaimer below) provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

 * Neither the name of NetApp, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

 NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""

from pprint import pformat
from six import iteritems


class DPLCoreDumpInfo(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self):
        """
        DPLCoreDumpInfo - a model defined in Swagger

        :param dict swaggerTypes: The key is attribute name
                                  and the value is attribute type.
        :param dict attributeMap: The key is attribute name
                                  and the value is json key in definition.
        """
        self.swagger_types = {
            'dpl_core_dump_tag': 'int',  # (required parameter)
            'capture_time': 'int',  # (required parameter)
            'full_capture_size': 'int',  # (required parameter)
            'fw_version': 'str',  # (required parameter)
            'platform_type': 'str',  # (required parameter)
            'full_ctlr': 'str',  # (required parameter)
            'full_ctlr_serial_number': 'str',  # (required parameter)
            'alt_ctlr': 'str',  # (required parameter)
            'alt_ctlr_serial_number': 'str',  # (required parameter)
            'trigger_reason': 'int',  # (required parameter)
            'detail': 'DPLCoreDumpDetail',  # (required parameter)
            'dom0_capture_size': 'int',  # (required parameter)
            'dom0_alt_capture_size': 'int',  # (required parameter)
            'dom0_capture_time': 'int',  # (required parameter)
            'dom0_alt_capture_time': 'int',  # (required parameter)
            'alt_capture_size': 'int'
        }

        self.attribute_map = {
            'dpl_core_dump_tag': 'dplCoreDumpTag',  # (required parameter)
            'capture_time': 'captureTime',  # (required parameter)
            'full_capture_size': 'fullCaptureSize',  # (required parameter)
            'fw_version': 'fwVersion',  # (required parameter)
            'platform_type': 'platformType',  # (required parameter)
            'full_ctlr': 'fullCtlr',  # (required parameter)
            'full_ctlr_serial_number': 'fullCtlrSerialNumber',  # (required parameter)
            'alt_ctlr': 'altCtlr',  # (required parameter)
            'alt_ctlr_serial_number': 'altCtlrSerialNumber',  # (required parameter)
            'trigger_reason': 'triggerReason',  # (required parameter)
            'detail': 'detail',  # (required parameter)
            'dom0_capture_size': 'dom0CaptureSize',  # (required parameter)
            'dom0_alt_capture_size': 'dom0AltCaptureSize',  # (required parameter)
            'dom0_capture_time': 'dom0CaptureTime',  # (required parameter)
            'dom0_alt_capture_time': 'dom0AltCaptureTime',  # (required parameter)
            'alt_capture_size': 'altCaptureSize'
        }

        self._dpl_core_dump_tag = None
        self._capture_time = None
        self._full_capture_size = None
        self._fw_version = None
        self._platform_type = None
        self._full_ctlr = None
        self._full_ctlr_serial_number = None
        self._alt_ctlr = None
        self._alt_ctlr_serial_number = None
        self._trigger_reason = None
        self._detail = None
        self._dom0_capture_size = None
        self._dom0_alt_capture_size = None
        self._dom0_capture_time = None
        self._dom0_alt_capture_time = None
        self._alt_capture_size = None

    @property
    def dpl_core_dump_tag(self):
        """
        Gets the dpl_core_dump_tag of this DPLCoreDumpInfo.
        The DPL core dump tag. Each core dump has a unique tag value.

        :return: The dpl_core_dump_tag of this DPLCoreDumpInfo.
        :rtype: int
        :required/optional: required
        """
        return self._dpl_core_dump_tag

    @dpl_core_dump_tag.setter
    def dpl_core_dump_tag(self, dpl_core_dump_tag):
        """
        Sets the dpl_core_dump_tag of this DPLCoreDumpInfo.
        The DPL core dump tag. Each core dump has a unique tag value.

        :param dpl_core_dump_tag: The dpl_core_dump_tag of this DPLCoreDumpInfo.
        :type: int
        """
        self._dpl_core_dump_tag = dpl_core_dump_tag

    @property
    def capture_time(self):
        """
        Gets the capture_time of this DPLCoreDumpInfo.
        The time that the DPL core dump was captured measured in seconds since January 1, 1970.

        :return: The capture_time of this DPLCoreDumpInfo.
        :rtype: int
        :required/optional: required
        """
        return self._capture_time

    @capture_time.setter
    def capture_time(self, capture_time):
        """
        Sets the capture_time of this DPLCoreDumpInfo.
        The time that the DPL core dump was captured measured in seconds since January 1, 1970.

        :param capture_time: The capture_time of this DPLCoreDumpInfo.
        :type: int
        """
        self._capture_time = capture_time

    @property
    def full_capture_size(self):
        """
        Gets the full_capture_size of this DPLCoreDumpInfo.
        The size of the full core dump, in megabytes.

        :return: The full_capture_size of this DPLCoreDumpInfo.
        :rtype: int
        :required/optional: required
        """
        return self._full_capture_size

    @full_capture_size.setter
    def full_capture_size(self, full_capture_size):
        """
        Sets the full_capture_size of this DPLCoreDumpInfo.
        The size of the full core dump, in megabytes.

        :param full_capture_size: The full_capture_size of this DPLCoreDumpInfo.
        :type: int
        """
        self._full_capture_size = full_capture_size

    @property
    def fw_version(self):
        """
        Gets the fw_version of this DPLCoreDumpInfo.
        The controller firmware version at the time the core dump was captured.

        :return: The fw_version of this DPLCoreDumpInfo.
        :rtype: str
        :required/optional: required
        """
        return self._fw_version

    @fw_version.setter
    def fw_version(self, fw_version):
        """
        Sets the fw_version of this DPLCoreDumpInfo.
        The controller firmware version at the time the core dump was captured.

        :param fw_version: The fw_version of this DPLCoreDumpInfo.
        :type: str
        """
        self._fw_version = fw_version

    @property
    def platform_type(self):
        """
        Gets the platform_type of this DPLCoreDumpInfo.
        The controller platform type.

        :return: The platform_type of this DPLCoreDumpInfo.
        :rtype: str
        :required/optional: required
        """
        return self._platform_type

    @platform_type.setter
    def platform_type(self, platform_type):
        """
        Sets the platform_type of this DPLCoreDumpInfo.
        The controller platform type.

        :param platform_type: The platform_type of this DPLCoreDumpInfo.
        :type: str
        """
        self._platform_type = platform_type

    @property
    def full_ctlr(self):
        """
        Gets the full_ctlr of this DPLCoreDumpInfo.
        The controller with the full DPL core dump.

        :return: The full_ctlr of this DPLCoreDumpInfo.
        :rtype: str
        :required/optional: required
        """
        return self._full_ctlr

    @full_ctlr.setter
    def full_ctlr(self, full_ctlr):
        """
        Sets the full_ctlr of this DPLCoreDumpInfo.
        The controller with the full DPL core dump.

        :param full_ctlr: The full_ctlr of this DPLCoreDumpInfo.
        :type: str
        """
        self._full_ctlr = full_ctlr

    @property
    def full_ctlr_serial_number(self):
        """
        Gets the full_ctlr_serial_number of this DPLCoreDumpInfo.
        The serial number of the controller with the full DPL core dump.

        :return: The full_ctlr_serial_number of this DPLCoreDumpInfo.
        :rtype: str
        :required/optional: required
        """
        return self._full_ctlr_serial_number

    @full_ctlr_serial_number.setter
    def full_ctlr_serial_number(self, full_ctlr_serial_number):
        """
        Sets the full_ctlr_serial_number of this DPLCoreDumpInfo.
        The serial number of the controller with the full DPL core dump.

        :param full_ctlr_serial_number: The full_ctlr_serial_number of this DPLCoreDumpInfo.
        :type: str
        """
        self._full_ctlr_serial_number = full_ctlr_serial_number

    @property
    def alt_ctlr(self):
        """
        Gets the alt_ctlr of this DPLCoreDumpInfo.
        The controller with an alternate DPL core dump. May be none.

        :return: The alt_ctlr of this DPLCoreDumpInfo.
        :rtype: str
        :required/optional: required
        """
        return self._alt_ctlr

    @alt_ctlr.setter
    def alt_ctlr(self, alt_ctlr):
        """
        Sets the alt_ctlr of this DPLCoreDumpInfo.
        The controller with an alternate DPL core dump. May be none.

        :param alt_ctlr: The alt_ctlr of this DPLCoreDumpInfo.
        :type: str
        """
        self._alt_ctlr = alt_ctlr

    @property
    def alt_ctlr_serial_number(self):
        """
        Gets the alt_ctlr_serial_number of this DPLCoreDumpInfo.
        The serial number of the controller with an alternate DPL core dump.

        :return: The alt_ctlr_serial_number of this DPLCoreDumpInfo.
        :rtype: str
        :required/optional: required
        """
        return self._alt_ctlr_serial_number

    @alt_ctlr_serial_number.setter
    def alt_ctlr_serial_number(self, alt_ctlr_serial_number):
        """
        Sets the alt_ctlr_serial_number of this DPLCoreDumpInfo.
        The serial number of the controller with an alternate DPL core dump.

        :param alt_ctlr_serial_number: The alt_ctlr_serial_number of this DPLCoreDumpInfo.
        :type: str
        """
        self._alt_ctlr_serial_number = alt_ctlr_serial_number

    @property
    def trigger_reason(self):
        """
        Gets the trigger_reason of this DPLCoreDumpInfo.
        The type of trigger or reboot reason resulting in the DPL core dump. This information is for internal LSI use only.

        :return: The trigger_reason of this DPLCoreDumpInfo.
        :rtype: int
        :required/optional: required
        """
        return self._trigger_reason

    @trigger_reason.setter
    def trigger_reason(self, trigger_reason):
        """
        Sets the trigger_reason of this DPLCoreDumpInfo.
        The type of trigger or reboot reason resulting in the DPL core dump. This information is for internal LSI use only.

        :param trigger_reason: The trigger_reason of this DPLCoreDumpInfo.
        :type: int
        """
        self._trigger_reason = trigger_reason

    @property
    def detail(self):
        """
        Gets the detail of this DPLCoreDumpInfo.
        Additional detail about the DPL Core Dump.

        :return: The detail of this DPLCoreDumpInfo.
        :rtype: DPLCoreDumpDetail
        :required/optional: required
        """
        return self._detail

    @detail.setter
    def detail(self, detail):
        """
        Sets the detail of this DPLCoreDumpInfo.
        Additional detail about the DPL Core Dump.

        :param detail: The detail of this DPLCoreDumpInfo.
        :type: DPLCoreDumpDetail
        """
        self._detail = detail

    @property
    def dom0_capture_size(self):
        """
        Gets the dom0_capture_size of this DPLCoreDumpInfo.
        This is the total size of the core dump data to be retrieved from this controller, in bytes.

        :return: The dom0_capture_size of this DPLCoreDumpInfo.
        :rtype: int
        :required/optional: required
        """
        return self._dom0_capture_size

    @dom0_capture_size.setter
    def dom0_capture_size(self, dom0_capture_size):
        """
        Sets the dom0_capture_size of this DPLCoreDumpInfo.
        This is the total size of the core dump data to be retrieved from this controller, in bytes.

        :param dom0_capture_size: The dom0_capture_size of this DPLCoreDumpInfo.
        :type: int
        """
        self._dom0_capture_size = dom0_capture_size

    @property
    def dom0_alt_capture_size(self):
        """
        Gets the dom0_alt_capture_size of this DPLCoreDumpInfo.
        This is the total size of the core dump data to be retrieved from the alternate controller, in bytes.

        :return: The dom0_alt_capture_size of this DPLCoreDumpInfo.
        :rtype: int
        :required/optional: required
        """
        return self._dom0_alt_capture_size

    @dom0_alt_capture_size.setter
    def dom0_alt_capture_size(self, dom0_alt_capture_size):
        """
        Sets the dom0_alt_capture_size of this DPLCoreDumpInfo.
        This is the total size of the core dump data to be retrieved from the alternate controller, in bytes.

        :param dom0_alt_capture_size: The dom0_alt_capture_size of this DPLCoreDumpInfo.
        :type: int
        """
        self._dom0_alt_capture_size = dom0_alt_capture_size

    @property
    def dom0_capture_time(self):
        """
        Gets the dom0_capture_time of this DPLCoreDumpInfo.
        This is the time stamp of the latest core dump file on this controller measured in seconds since January 1, 1970.

        :return: The dom0_capture_time of this DPLCoreDumpInfo.
        :rtype: int
        :required/optional: required
        """
        return self._dom0_capture_time

    @dom0_capture_time.setter
    def dom0_capture_time(self, dom0_capture_time):
        """
        Sets the dom0_capture_time of this DPLCoreDumpInfo.
        This is the time stamp of the latest core dump file on this controller measured in seconds since January 1, 1970.

        :param dom0_capture_time: The dom0_capture_time of this DPLCoreDumpInfo.
        :type: int
        """
        self._dom0_capture_time = dom0_capture_time

    @property
    def dom0_alt_capture_time(self):
        """
        Gets the dom0_alt_capture_time of this DPLCoreDumpInfo.
        This is the time stamp of the latest core dump file on the alternate controller measured in seconds since January 1, 1970.

        :return: The dom0_alt_capture_time of this DPLCoreDumpInfo.
        :rtype: int
        :required/optional: required
        """
        return self._dom0_alt_capture_time

    @dom0_alt_capture_time.setter
    def dom0_alt_capture_time(self, dom0_alt_capture_time):
        """
        Sets the dom0_alt_capture_time of this DPLCoreDumpInfo.
        This is the time stamp of the latest core dump file on the alternate controller measured in seconds since January 1, 1970.

        :param dom0_alt_capture_time: The dom0_alt_capture_time of this DPLCoreDumpInfo.
        :type: int
        """
        self._dom0_alt_capture_time = dom0_alt_capture_time

    @property
    def alt_capture_size(self):
        """
        Gets the alt_capture_size of this DPLCoreDumpInfo.


        :return: The alt_capture_size of this DPLCoreDumpInfo.
        :rtype: int
        :required/optional: optional
        """
        return self._alt_capture_size

    @alt_capture_size.setter
    def alt_capture_size(self, alt_capture_size):
        """
        Sets the alt_capture_size of this DPLCoreDumpInfo.


        :param alt_capture_size: The alt_capture_size of this DPLCoreDumpInfo.
        :type: int
        """
        self._alt_capture_size = alt_capture_size

    def to_dict(self):
        """
        Returns the model properties as a dict
        """
        result = {}

        for attr, _ in 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

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return pformat(self.to_dict())

    def __repr__(self):
        """
        For `print` and `pprint`
        """
        if self is None:
           return None
        return self.to_str()

    def __eq__(self, other):
        """
        Returns true if both objects are equal
        """
        if self is None or other is None:
            return None
        return self.__dict__ == other.__dict__

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

