# coding: utf-8

"""
PitViewEx.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 PitViewEx(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self):
        """
        PitViewEx - 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 = {
            'view_ref': 'str',  # (required parameter)
            'world_wide_name': 'str',  # (required parameter)
            'base_vol': 'str',  # (required parameter)
            'base_pit': 'str',  # (required parameter)
            'bound_to_pit': 'bool',  # (required parameter)
            'access_mode': 'str',  # (required parameter)
            'label': 'str',  # (required parameter)
            'status': 'str',  # (required parameter)
            'current_manager': 'str',  # (required parameter)
            'preferred_manager': 'str',  # (required parameter)
            'repository_volume': 'str',  # (required parameter)
            'full_warn_threshold': 'int',  # (required parameter)
            'view_time': 'int',  # (required parameter)
            'view_sequence_number': 'int',  # (required parameter)
            'perms': 'VolumePerms',  # (required parameter)
            'volume_handle': 'int',  # (required parameter)
            'cluster_size': 'int',  # (required parameter)
            'max_repository_capacity': 'int',  # (required parameter)
            'unusable_repository_capacity': 'int',  # (required parameter)
            'membership': 'PITViewMembership',  # (required parameter)
            'mgmt_client_attribute': 'int',  # (required parameter)
            'offline': 'bool',  # (required parameter)
            'volume_full': 'bool',  
            'repository_capacity': 'int',  
            'base_volume_capacity': 'int',  
            'total_size_in_bytes': 'int',  
            'consistency_group_id': 'str',  
            'volume_copy_target': 'bool',  
            'clone_copy': 'bool',  
            'volume_copy_source': 'bool',  
            'pit_base_volume': 'bool',  
            'async_mirror_target': 'bool',  
            'async_mirror_source': 'bool',  
            'protection_type': 'str',  
            'remote_mirror_source': 'bool',  
            'remote_mirror_target': 'bool',  
            'object_type': 'str',  
            'name': 'str',  
            'id': 'str',  
            'wwn': 'str',  
            'list_of_mappings': 'list[LUNMapping]',  
            'mapped': 'bool',  # (required parameter)
            'current_controller_id': 'str',  
            'preferred_controller_id': 'str',  
            'online_volume_copy': 'bool'
        }

        self.attribute_map = {
            'view_ref': 'viewRef',  # (required parameter)
            'world_wide_name': 'worldWideName',  # (required parameter)
            'base_vol': 'baseVol',  # (required parameter)
            'base_pit': 'basePIT',  # (required parameter)
            'bound_to_pit': 'boundToPIT',  # (required parameter)
            'access_mode': 'accessMode',  # (required parameter)
            'label': 'label',  # (required parameter)
            'status': 'status',  # (required parameter)
            'current_manager': 'currentManager',  # (required parameter)
            'preferred_manager': 'preferredManager',  # (required parameter)
            'repository_volume': 'repositoryVolume',  # (required parameter)
            'full_warn_threshold': 'fullWarnThreshold',  # (required parameter)
            'view_time': 'viewTime',  # (required parameter)
            'view_sequence_number': 'viewSequenceNumber',  # (required parameter)
            'perms': 'perms',  # (required parameter)
            'volume_handle': 'volumeHandle',  # (required parameter)
            'cluster_size': 'clusterSize',  # (required parameter)
            'max_repository_capacity': 'maxRepositoryCapacity',  # (required parameter)
            'unusable_repository_capacity': 'unusableRepositoryCapacity',  # (required parameter)
            'membership': 'membership',  # (required parameter)
            'mgmt_client_attribute': 'mgmtClientAttribute',  # (required parameter)
            'offline': 'offline',  # (required parameter)
            'volume_full': 'volumeFull',  
            'repository_capacity': 'repositoryCapacity',  
            'base_volume_capacity': 'baseVolumeCapacity',  
            'total_size_in_bytes': 'totalSizeInBytes',  
            'consistency_group_id': 'consistencyGroupId',  
            'volume_copy_target': 'volumeCopyTarget',  
            'clone_copy': 'cloneCopy',  
            'volume_copy_source': 'volumeCopySource',  
            'pit_base_volume': 'pitBaseVolume',  
            'async_mirror_target': 'asyncMirrorTarget',  
            'async_mirror_source': 'asyncMirrorSource',  
            'protection_type': 'protectionType',  
            'remote_mirror_source': 'remoteMirrorSource',  
            'remote_mirror_target': 'remoteMirrorTarget',  
            'object_type': 'objectType',  
            'name': 'name',  
            'id': 'id',  
            'wwn': 'wwn',  
            'list_of_mappings': 'listOfMappings',  
            'mapped': 'mapped',  # (required parameter)
            'current_controller_id': 'currentControllerId',  
            'preferred_controller_id': 'preferredControllerId',  
            'online_volume_copy': 'onlineVolumeCopy'
        }

        self._view_ref = None
        self._world_wide_name = None
        self._base_vol = None
        self._base_pit = None
        self._bound_to_pit = None
        self._access_mode = None
        self._label = None
        self._status = None
        self._current_manager = None
        self._preferred_manager = None
        self._repository_volume = None
        self._full_warn_threshold = None
        self._view_time = None
        self._view_sequence_number = None
        self._perms = None
        self._volume_handle = None
        self._cluster_size = None
        self._max_repository_capacity = None
        self._unusable_repository_capacity = None
        self._membership = None
        self._mgmt_client_attribute = None
        self._offline = None
        self._volume_full = None
        self._repository_capacity = None
        self._base_volume_capacity = None
        self._total_size_in_bytes = None
        self._consistency_group_id = None
        self._volume_copy_target = None
        self._clone_copy = None
        self._volume_copy_source = None
        self._pit_base_volume = None
        self._async_mirror_target = None
        self._async_mirror_source = None
        self._protection_type = None
        self._remote_mirror_source = None
        self._remote_mirror_target = None
        self._object_type = None
        self._name = None
        self._id = None
        self._wwn = None
        self._list_of_mappings = None
        self._mapped = None
        self._current_controller_id = None
        self._preferred_controller_id = None
        self._online_volume_copy = None

    @property
    def view_ref(self):
        """
        Gets the view_ref of this PitViewEx.
        The reference (key) for this view.

        :return: The view_ref of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._view_ref

    @view_ref.setter
    def view_ref(self, view_ref):
        """
        Sets the view_ref of this PitViewEx.
        The reference (key) for this view.

        :param view_ref: The view_ref of this PitViewEx.
        :type: str
        """
        self._view_ref = view_ref

    @property
    def world_wide_name(self):
        """
        Gets the world_wide_name of this PitViewEx.
        The WWN of the view.

        :return: The world_wide_name of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._world_wide_name

    @world_wide_name.setter
    def world_wide_name(self, world_wide_name):
        """
        Sets the world_wide_name of this PitViewEx.
        The WWN of the view.

        :param world_wide_name: The world_wide_name of this PitViewEx.
        :type: str
        """
        self._world_wide_name = world_wide_name

    @property
    def base_vol(self):
        """
        Gets the base_vol of this PitViewEx.
        A reference to the base volume with which this view is associated.

        :return: The base_vol of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._base_vol

    @base_vol.setter
    def base_vol(self, base_vol):
        """
        Sets the base_vol of this PitViewEx.
        A reference to the base volume with which this view is associated.

        :param base_vol: The base_vol of this PitViewEx.
        :type: str
        """
        self._base_vol = base_vol

    @property
    def base_pit(self):
        """
        Gets the base_pit of this PitViewEx.
        A reference to the particular PiT of the base for which this view applies. This field is only valid if the boundToPIT field is true.

        :return: The base_pit of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._base_pit

    @base_pit.setter
    def base_pit(self, base_pit):
        """
        Sets the base_pit of this PitViewEx.
        A reference to the particular PiT of the base for which this view applies. This field is only valid if the boundToPIT field is true.

        :param base_pit: The base_pit of this PitViewEx.
        :type: str
        """
        self._base_pit = base_pit

    @property
    def bound_to_pit(self):
        """
        Gets the bound_to_pit of this PitViewEx.
        If true, this flag indicates that the basePIT field is a valid reference to an associated PIT. If false, the view is disassociated from the PiT so the basePIT reference is invalid.

        :return: The bound_to_pit of this PitViewEx.
        :rtype: bool
        :required/optional: required
        """
        return self._bound_to_pit

    @bound_to_pit.setter
    def bound_to_pit(self, bound_to_pit):
        """
        Sets the bound_to_pit of this PitViewEx.
        If true, this flag indicates that the basePIT field is a valid reference to an associated PIT. If false, the view is disassociated from the PiT so the basePIT reference is invalid.

        :param bound_to_pit: The bound_to_pit of this PitViewEx.
        :type: bool
        """
        self._bound_to_pit = bound_to_pit

    @property
    def access_mode(self):
        """
        Gets the access_mode of this PitViewEx.
        The view access mode.

        :return: The access_mode of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._access_mode

    @access_mode.setter
    def access_mode(self, access_mode):
        """
        Sets the access_mode of this PitViewEx.
        The view access mode.

        :param access_mode: The access_mode of this PitViewEx.
        :type: str
        """
        allowed_values = ["modeUnknown", "readWrite", "readOnly", "__UNDEFINED"]
        if access_mode not in allowed_values:
            raise ValueError(
                "Invalid value for `access_mode`, must be one of {0}"
                .format(allowed_values)
            )
        self._access_mode = access_mode

    @property
    def label(self):
        """
        Gets the label of this PitViewEx.
        The name of the view.

        :return: The label of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._label

    @label.setter
    def label(self, label):
        """
        Sets the label of this PitViewEx.
        The name of the view.

        :param label: The label of this PitViewEx.
        :type: str
        """
        self._label = label

    @property
    def status(self):
        """
        Gets the status of this PitViewEx.
        The view status.

        :return: The status of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._status

    @status.setter
    def status(self, status):
        """
        Sets the status of this PitViewEx.
        The view status.

        :param status: The status of this PitViewEx.
        :type: str
        """
        allowed_values = ["unknown", "optimal", "stopped", "failed", "overThreshold", "full", "__UNDEFINED"]
        if status not in allowed_values:
            raise ValueError(
                "Invalid value for `status`, must be one of {0}"
                .format(allowed_values)
            )
        self._status = status

    @property
    def current_manager(self):
        """
        Gets the current_manager of this PitViewEx.
        The current owner of the view.

        :return: The current_manager of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._current_manager

    @current_manager.setter
    def current_manager(self, current_manager):
        """
        Sets the current_manager of this PitViewEx.
        The current owner of the view.

        :param current_manager: The current_manager of this PitViewEx.
        :type: str
        """
        self._current_manager = current_manager

    @property
    def preferred_manager(self):
        """
        Gets the preferred_manager of this PitViewEx.
        The preferred owner of the view.

        :return: The preferred_manager of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._preferred_manager

    @preferred_manager.setter
    def preferred_manager(self, preferred_manager):
        """
        Sets the preferred_manager of this PitViewEx.
        The preferred owner of the view.

        :param preferred_manager: The preferred_manager of this PitViewEx.
        :type: str
        """
        self._preferred_manager = preferred_manager

    @property
    def repository_volume(self):
        """
        Gets the repository_volume of this PitViewEx.
        The copy-on-write repository for this view.

        :return: The repository_volume of this PitViewEx.
        :rtype: str
        :required/optional: required
        """
        return self._repository_volume

    @repository_volume.setter
    def repository_volume(self, repository_volume):
        """
        Sets the repository_volume of this PitViewEx.
        The copy-on-write repository for this view.

        :param repository_volume: The repository_volume of this PitViewEx.
        :type: str
        """
        self._repository_volume = repository_volume

    @property
    def full_warn_threshold(self):
        """
        Gets the full_warn_threshold of this PitViewEx.
        The repository utilization warning threshold percentage.

        :return: The full_warn_threshold of this PitViewEx.
        :rtype: int
        :required/optional: required
        """
        return self._full_warn_threshold

    @full_warn_threshold.setter
    def full_warn_threshold(self, full_warn_threshold):
        """
        Sets the full_warn_threshold of this PitViewEx.
        The repository utilization warning threshold percentage.

        :param full_warn_threshold: The full_warn_threshold of this PitViewEx.
        :type: int
        """
        self._full_warn_threshold = full_warn_threshold

    @property
    def view_time(self):
        """
        Gets the view_time of this PitViewEx.
        The controller-time (measured in seconds since January 1, 1970) when view was created or re-attached to another PiT.

        :return: The view_time of this PitViewEx.
        :rtype: int
        :required/optional: required
        """
        return self._view_time

    @view_time.setter
    def view_time(self, view_time):
        """
        Sets the view_time of this PitViewEx.
        The controller-time (measured in seconds since January 1, 1970) when view was created or re-attached to another PiT.

        :param view_time: The view_time of this PitViewEx.
        :type: int
        """
        self._view_time = view_time

    @property
    def view_sequence_number(self):
        """
        Gets the view_sequence_number of this PitViewEx.
        Sequence number. This is a monotonically increasing sequence value that can be used to determine related views when the view was created as part of a consistency group operation.

        :return: The view_sequence_number of this PitViewEx.
        :rtype: int
        :required/optional: required
        """
        return self._view_sequence_number

    @view_sequence_number.setter
    def view_sequence_number(self, view_sequence_number):
        """
        Sets the view_sequence_number of this PitViewEx.
        Sequence number. This is a monotonically increasing sequence value that can be used to determine related views when the view was created as part of a consistency group operation.

        :param view_sequence_number: The view_sequence_number of this PitViewEx.
        :type: int
        """
        self._view_sequence_number = view_sequence_number

    @property
    def perms(self):
        """
        Gets the perms of this PitViewEx.
        The permissions for the view.

        :return: The perms of this PitViewEx.
        :rtype: VolumePerms
        :required/optional: required
        """
        return self._perms

    @perms.setter
    def perms(self, perms):
        """
        Sets the perms of this PitViewEx.
        The permissions for the view.

        :param perms: The perms of this PitViewEx.
        :type: VolumePerms
        """
        self._perms = perms

    @property
    def volume_handle(self):
        """
        Gets the volume_handle of this PitViewEx.
        The volume ssid. This is provided primarily for debug purposes.

        :return: The volume_handle of this PitViewEx.
        :rtype: int
        :required/optional: required
        """
        return self._volume_handle

    @volume_handle.setter
    def volume_handle(self, volume_handle):
        """
        Sets the volume_handle of this PitViewEx.
        The volume ssid. This is provided primarily for debug purposes.

        :param volume_handle: The volume_handle of this PitViewEx.
        :type: int
        """
        self._volume_handle = volume_handle

    @property
    def cluster_size(self):
        """
        Gets the cluster_size of this PitViewEx.
        The cluster size in bytes.

        :return: The cluster_size of this PitViewEx.
        :rtype: int
        :required/optional: required
        """
        return self._cluster_size

    @cluster_size.setter
    def cluster_size(self, cluster_size):
        """
        Sets the cluster_size of this PitViewEx.
        The cluster size in bytes.

        :param cluster_size: The cluster_size of this PitViewEx.
        :type: int
        """
        self._cluster_size = cluster_size

    @property
    def max_repository_capacity(self):
        """
        Gets the max_repository_capacity of this PitViewEx.
        The maximum allowable repository size in bytes based on current cluster size.

        :return: The max_repository_capacity of this PitViewEx.
        :rtype: int
        :required/optional: required
        """
        return self._max_repository_capacity

    @max_repository_capacity.setter
    def max_repository_capacity(self, max_repository_capacity):
        """
        Sets the max_repository_capacity of this PitViewEx.
        The maximum allowable repository size in bytes based on current cluster size.

        :param max_repository_capacity: The max_repository_capacity of this PitViewEx.
        :type: int
        """
        self._max_repository_capacity = max_repository_capacity

    @property
    def unusable_repository_capacity(self):
        """
        Gets the unusable_repository_capacity of this PitViewEx.
        The amount of repository capacity in bytes that is unusable due to limited addressability of the current cluster size.

        :return: The unusable_repository_capacity of this PitViewEx.
        :rtype: int
        :required/optional: required
        """
        return self._unusable_repository_capacity

    @unusable_repository_capacity.setter
    def unusable_repository_capacity(self, unusable_repository_capacity):
        """
        Sets the unusable_repository_capacity of this PitViewEx.
        The amount of repository capacity in bytes that is unusable due to limited addressability of the current cluster size.

        :param unusable_repository_capacity: The unusable_repository_capacity of this PitViewEx.
        :type: int
        """
        self._unusable_repository_capacity = unusable_repository_capacity

    @property
    def membership(self):
        """
        Gets the membership of this PitViewEx.
        This view's relationship (if any) to a Consistency Group View.

        :return: The membership of this PitViewEx.
        :rtype: PITViewMembership
        :required/optional: required
        """
        return self._membership

    @membership.setter
    def membership(self, membership):
        """
        Sets the membership of this PitViewEx.
        This view's relationship (if any) to a Consistency Group View.

        :param membership: The membership of this PitViewEx.
        :type: PITViewMembership
        """
        self._membership = membership

    @property
    def mgmt_client_attribute(self):
        """
        Gets the mgmt_client_attribute of this PitViewEx.
        The management client attribute.

        :return: The mgmt_client_attribute of this PitViewEx.
        :rtype: int
        :required/optional: required
        """
        return self._mgmt_client_attribute

    @mgmt_client_attribute.setter
    def mgmt_client_attribute(self, mgmt_client_attribute):
        """
        Sets the mgmt_client_attribute of this PitViewEx.
        The management client attribute.

        :param mgmt_client_attribute: The mgmt_client_attribute of this PitViewEx.
        :type: int
        """
        self._mgmt_client_attribute = mgmt_client_attribute

    @property
    def offline(self):
        """
        Gets the offline of this PitViewEx.
        The view is offline due to the associated repository volume state.

        :return: The offline of this PitViewEx.
        :rtype: bool
        :required/optional: required
        """
        return self._offline

    @offline.setter
    def offline(self, offline):
        """
        Sets the offline of this PitViewEx.
        The view is offline due to the associated repository volume state.

        :param offline: The offline of this PitViewEx.
        :type: bool
        """
        self._offline = offline

    @property
    def volume_full(self):
        """
        Gets the volume_full of this PitViewEx.


        :return: The volume_full of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._volume_full

    @volume_full.setter
    def volume_full(self, volume_full):
        """
        Sets the volume_full of this PitViewEx.


        :param volume_full: The volume_full of this PitViewEx.
        :type: bool
        """
        self._volume_full = volume_full

    @property
    def repository_capacity(self):
        """
        Gets the repository_capacity of this PitViewEx.


        :return: The repository_capacity of this PitViewEx.
        :rtype: int
        :required/optional: optional
        """
        return self._repository_capacity

    @repository_capacity.setter
    def repository_capacity(self, repository_capacity):
        """
        Sets the repository_capacity of this PitViewEx.


        :param repository_capacity: The repository_capacity of this PitViewEx.
        :type: int
        """
        self._repository_capacity = repository_capacity

    @property
    def base_volume_capacity(self):
        """
        Gets the base_volume_capacity of this PitViewEx.


        :return: The base_volume_capacity of this PitViewEx.
        :rtype: int
        :required/optional: optional
        """
        return self._base_volume_capacity

    @base_volume_capacity.setter
    def base_volume_capacity(self, base_volume_capacity):
        """
        Sets the base_volume_capacity of this PitViewEx.


        :param base_volume_capacity: The base_volume_capacity of this PitViewEx.
        :type: int
        """
        self._base_volume_capacity = base_volume_capacity

    @property
    def total_size_in_bytes(self):
        """
        Gets the total_size_in_bytes of this PitViewEx.


        :return: The total_size_in_bytes of this PitViewEx.
        :rtype: int
        :required/optional: optional
        """
        return self._total_size_in_bytes

    @total_size_in_bytes.setter
    def total_size_in_bytes(self, total_size_in_bytes):
        """
        Sets the total_size_in_bytes of this PitViewEx.


        :param total_size_in_bytes: The total_size_in_bytes of this PitViewEx.
        :type: int
        """
        self._total_size_in_bytes = total_size_in_bytes

    @property
    def consistency_group_id(self):
        """
        Gets the consistency_group_id of this PitViewEx.


        :return: The consistency_group_id of this PitViewEx.
        :rtype: str
        :required/optional: optional
        """
        return self._consistency_group_id

    @consistency_group_id.setter
    def consistency_group_id(self, consistency_group_id):
        """
        Sets the consistency_group_id of this PitViewEx.


        :param consistency_group_id: The consistency_group_id of this PitViewEx.
        :type: str
        """
        self._consistency_group_id = consistency_group_id

    @property
    def volume_copy_target(self):
        """
        Gets the volume_copy_target of this PitViewEx.


        :return: The volume_copy_target of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._volume_copy_target

    @volume_copy_target.setter
    def volume_copy_target(self, volume_copy_target):
        """
        Sets the volume_copy_target of this PitViewEx.


        :param volume_copy_target: The volume_copy_target of this PitViewEx.
        :type: bool
        """
        self._volume_copy_target = volume_copy_target

    @property
    def clone_copy(self):
        """
        Gets the clone_copy of this PitViewEx.


        :return: The clone_copy of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._clone_copy

    @clone_copy.setter
    def clone_copy(self, clone_copy):
        """
        Sets the clone_copy of this PitViewEx.


        :param clone_copy: The clone_copy of this PitViewEx.
        :type: bool
        """
        self._clone_copy = clone_copy

    @property
    def volume_copy_source(self):
        """
        Gets the volume_copy_source of this PitViewEx.


        :return: The volume_copy_source of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._volume_copy_source

    @volume_copy_source.setter
    def volume_copy_source(self, volume_copy_source):
        """
        Sets the volume_copy_source of this PitViewEx.


        :param volume_copy_source: The volume_copy_source of this PitViewEx.
        :type: bool
        """
        self._volume_copy_source = volume_copy_source

    @property
    def pit_base_volume(self):
        """
        Gets the pit_base_volume of this PitViewEx.


        :return: The pit_base_volume of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._pit_base_volume

    @pit_base_volume.setter
    def pit_base_volume(self, pit_base_volume):
        """
        Sets the pit_base_volume of this PitViewEx.


        :param pit_base_volume: The pit_base_volume of this PitViewEx.
        :type: bool
        """
        self._pit_base_volume = pit_base_volume

    @property
    def async_mirror_target(self):
        """
        Gets the async_mirror_target of this PitViewEx.
        True if the volume is a target in an Asynchronous Mirror relationship.

        :return: The async_mirror_target of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._async_mirror_target

    @async_mirror_target.setter
    def async_mirror_target(self, async_mirror_target):
        """
        Sets the async_mirror_target of this PitViewEx.
        True if the volume is a target in an Asynchronous Mirror relationship.

        :param async_mirror_target: The async_mirror_target of this PitViewEx.
        :type: bool
        """
        self._async_mirror_target = async_mirror_target

    @property
    def async_mirror_source(self):
        """
        Gets the async_mirror_source of this PitViewEx.
        True if the volume is a source in an Asynchronous Mirror relationship.

        :return: The async_mirror_source of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._async_mirror_source

    @async_mirror_source.setter
    def async_mirror_source(self, async_mirror_source):
        """
        Sets the async_mirror_source of this PitViewEx.
        True if the volume is a source in an Asynchronous Mirror relationship.

        :param async_mirror_source: The async_mirror_source of this PitViewEx.
        :type: bool
        """
        self._async_mirror_source = async_mirror_source

    @property
    def protection_type(self):
        """
        Gets the protection_type of this PitViewEx.


        :return: The protection_type of this PitViewEx.
        :rtype: str
        :required/optional: optional
        """
        return self._protection_type

    @protection_type.setter
    def protection_type(self, protection_type):
        """
        Sets the protection_type of this PitViewEx.


        :param protection_type: The protection_type of this PitViewEx.
        :type: str
        """
        allowed_values = ["type0Protection", "type1Protection", "type2Protection", "type3Protection", "__UNDEFINED"]
        if protection_type not in allowed_values:
            raise ValueError(
                "Invalid value for `protection_type`, must be one of {0}"
                .format(allowed_values)
            )
        self._protection_type = protection_type

    @property
    def remote_mirror_source(self):
        """
        Gets the remote_mirror_source of this PitViewEx.
        True if the volume is a source (primary), in an Remote Volume Mirror relationship.

        :return: The remote_mirror_source of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._remote_mirror_source

    @remote_mirror_source.setter
    def remote_mirror_source(self, remote_mirror_source):
        """
        Sets the remote_mirror_source of this PitViewEx.
        True if the volume is a source (primary), in an Remote Volume Mirror relationship.

        :param remote_mirror_source: The remote_mirror_source of this PitViewEx.
        :type: bool
        """
        self._remote_mirror_source = remote_mirror_source

    @property
    def remote_mirror_target(self):
        """
        Gets the remote_mirror_target of this PitViewEx.
        True if the volume is a target (secondary), in an Remote Volume Mirror relationship.

        :return: The remote_mirror_target of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._remote_mirror_target

    @remote_mirror_target.setter
    def remote_mirror_target(self, remote_mirror_target):
        """
        Sets the remote_mirror_target of this PitViewEx.
        True if the volume is a target (secondary), in an Remote Volume Mirror relationship.

        :param remote_mirror_target: The remote_mirror_target of this PitViewEx.
        :type: bool
        """
        self._remote_mirror_target = remote_mirror_target

    @property
    def object_type(self):
        """
        Gets the object_type of this PitViewEx.


        :return: The object_type of this PitViewEx.
        :rtype: str
        :required/optional: optional
        """
        return self._object_type

    @object_type.setter
    def object_type(self, object_type):
        """
        Sets the object_type of this PitViewEx.


        :param object_type: The object_type of this PitViewEx.
        :type: str
        """
        allowed_values = ["volume", "pool", "host", "lunMapping", "hostGroup", "thinVolume", "drive", "volumeCopy", "pit", "pitView", "snapshotGroup", "snapshot", "accessVolume", "legacySnapshot", "hostType", "metadataTag", "managementUrl", "folder", "asyncMirrorGroup", "asyncMirrorGroupMember", "asyncMirrorGroupIncompleteMember", "consistencyGroup", "consistencyGroupView", "fan", "battery", "storageSystem", "controller", "powerSupply", "minihub", "esm", "drawer", "hostBoard", "interconnectCRU", "cacheBackupDevice", "tray", "supportCRU", "hostPort", "initiator", "snapshotSchedule", "thermalSensor", "sfp", "flashCache", "featureAttribute", "featureState", "lockKeyId", "remoteVolume", "mirrorVolume", "vaultMirrorVolume", "vaultMirrorGroup", "metadataVolume", "sasPort", "sasExpander", "channelPort", "speedNegError", "snmpAgentBundle", "stagedFirmware", "workload"]
        if object_type not in allowed_values:
            raise ValueError(
                "Invalid value for `object_type`, must be one of {0}"
                .format(allowed_values)
            )
        self._object_type = object_type

    @property
    def name(self):
        """
        Gets the name of this PitViewEx.


        :return: The name of this PitViewEx.
        :rtype: str
        :required/optional: optional
        """
        return self._name

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


        :param name: The name of this PitViewEx.
        :type: str
        """
        self._name = name

    @property
    def id(self):
        """
        Gets the id of this PitViewEx.


        :return: The id of this PitViewEx.
        :rtype: str
        :required/optional: optional
        """
        return self._id

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


        :param id: The id of this PitViewEx.
        :type: str
        """
        self._id = id

    @property
    def wwn(self):
        """
        Gets the wwn of this PitViewEx.


        :return: The wwn of this PitViewEx.
        :rtype: str
        :required/optional: optional
        """
        return self._wwn

    @wwn.setter
    def wwn(self, wwn):
        """
        Sets the wwn of this PitViewEx.


        :param wwn: The wwn of this PitViewEx.
        :type: str
        """
        self._wwn = wwn

    @property
    def list_of_mappings(self):
        """
        Gets the list_of_mappings of this PitViewEx.


        :return: The list_of_mappings of this PitViewEx.
        :rtype: list[LUNMapping]
        :required/optional: optional
        """
        return self._list_of_mappings

    @list_of_mappings.setter
    def list_of_mappings(self, list_of_mappings):
        """
        Sets the list_of_mappings of this PitViewEx.


        :param list_of_mappings: The list_of_mappings of this PitViewEx.
        :type: list[LUNMapping]
        """
        self._list_of_mappings = list_of_mappings

    @property
    def mapped(self):
        """
        Gets the mapped of this PitViewEx.


        :return: The mapped of this PitViewEx.
        :rtype: bool
        :required/optional: required
        """
        return self._mapped

    @mapped.setter
    def mapped(self, mapped):
        """
        Sets the mapped of this PitViewEx.


        :param mapped: The mapped of this PitViewEx.
        :type: bool
        """
        self._mapped = mapped

    @property
    def current_controller_id(self):
        """
        Gets the current_controller_id of this PitViewEx.


        :return: The current_controller_id of this PitViewEx.
        :rtype: str
        :required/optional: optional
        """
        return self._current_controller_id

    @current_controller_id.setter
    def current_controller_id(self, current_controller_id):
        """
        Sets the current_controller_id of this PitViewEx.


        :param current_controller_id: The current_controller_id of this PitViewEx.
        :type: str
        """
        self._current_controller_id = current_controller_id

    @property
    def preferred_controller_id(self):
        """
        Gets the preferred_controller_id of this PitViewEx.


        :return: The preferred_controller_id of this PitViewEx.
        :rtype: str
        :required/optional: optional
        """
        return self._preferred_controller_id

    @preferred_controller_id.setter
    def preferred_controller_id(self, preferred_controller_id):
        """
        Sets the preferred_controller_id of this PitViewEx.


        :param preferred_controller_id: The preferred_controller_id of this PitViewEx.
        :type: str
        """
        self._preferred_controller_id = preferred_controller_id

    @property
    def online_volume_copy(self):
        """
        Gets the online_volume_copy of this PitViewEx.


        :return: The online_volume_copy of this PitViewEx.
        :rtype: bool
        :required/optional: optional
        """
        return self._online_volume_copy

    @online_volume_copy.setter
    def online_volume_copy(self, online_volume_copy):
        """
        Sets the online_volume_copy of this PitViewEx.


        :param online_volume_copy: The online_volume_copy of this PitViewEx.
        :type: bool
        """
        self._online_volume_copy = online_volume_copy

    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

