Beispiel #1
0
            type: str
        node_wwn:
            description: Unique network identifier for the HBA's interface card
            type: str
        port_wwn:
            description: Unique network identifier for the port
            type: str
        target_ports:
            description: List of VPLEX ports visible to initiator
            type: list
        type:
            description: Host operating system
            type: str
'''

LOG = utils.get_logger('dellemc_vplex_initiator')
HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexInitiator():    # pylint:disable=R0902
    """Class with initiator operations"""

    def __init__(self):
        """Define all parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_vplex_initiator_parameters())

        mutually_exclusive = [
            ['iscsi_name', 'port_wwn']
        ]
            type: int
        type:
            description:
                - The type of mobility job
            type: str
        source_exported:
            description:
                - Whether the source device is exported
            type: bool
        target_exported:
            description:
                - Whether the target device is exported
            type: bool
'''

LOG = utils.get_logger('dellemc_vplex_data_migration')

HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexDataMigration():  # pylint: disable=R0902
    """Class with VPLEX Data migration operations"""
    def __init__(self):
        """Define all the parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_vplex_data_migration_parameters())

        self.module = AnsibleModule(
            argument_spec=self.module_params,
            supports_check_mode=False,
        )
Beispiel #3
0
        visibility:
            description: To enable remote access global or local
            type: str
        vpd_id:
            description: vpd_id
            type: str
        additional_devs:
            description: added device list to expand virtual volume
            type: list
        mirrors:
            descrition: added device list for mirroring
            type: list
'''


LOG = utils.get_logger('dellemc_vplex_virtual_volume')

HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VirtualVolumeModule:  # pylint: disable=R0902
    """Class with virtual Volume operations"""

    def __init__(self):
        """Define all parameters required by the module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_user_parameters())
        mutually_exclusive = [
            ['virtual_volume_name', 'virtual_volume_id']
        ]
        required_one_of = [
Beispiel #4
0
            type: str
        storage_array_family:
            description: The storage array family name
            type: str
        thin_capable:
            description: Thin provisioning support
            type: bool
        virtual_volume:
            description: Name of the distributed virtual volume
            type: str
        name:
            description: The name of the distributed device
            type: str
'''

LOG = utils.get_logger('dellemc_vplex_distributed_device')
HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexDistributedDevice():
    """Class with distributed device operations"""
    def __init__(self):
        """ Define all parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_distributed_device_parameters())
        # initialize the ansible module
        self.module = AnsibleModule(argument_spec=self.module_params,
                                    supports_check_mode=False)
        # Check for external libraries
        lib_status, message = utils.external_library_check()
        if not lib_status:
Beispiel #5
0
            type: bool
        storage_at_clusters:
            description:
                - Consistency group storage clusters
            type: list
        virtual_volumes:
            description:
                - URI of virtual volumes belongs to consistency group
            type: list
        visibility:
            description:
                - Cluster visibility of consistency group
            type: list
'''

LOG = utils.get_logger('dellemc_vplex_consistency_group')

HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class ConsistencyGroup():
    """Class with VPLEX Consistency group operations"""
    def __init__(self):
        """Define all the parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_vplex_cg_parameters())

        required_together = [['virtual_volumes', 'virtual_volume_state']]

        self.module = AnsibleModule(argument_spec=self.module_params,
                                    supports_check_mode=False,
    contains:
        name:
            description: Extent names
            type: str

Device Migration Jobs:
    description: List of Device migration jobs
    returned: When Device migration jobs exist
    type: complex
    contains:
        name:
            description: Device migration jobs names
            type: str
'''

LOG = utils.get_logger('dellemc_vplex_gatherfacts')

HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexGatherFacts():
    """Class with Gather Facts operations"""
    def __init__(self):
        """Define all the parameters required by this module"""

        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_vplex_gatherfacts_parameters())
        self.module = AnsibleModule(argument_spec=self.module_params,
                                    supports_check_mode=False)

        # Check for external libraries
            type: str
        system_id:
            description: Unique volume id
            type: str
        thin_enabled:
            description: Thin provisioning support
            type: str
        visibility:
            description: To display the global access
            type: str
        vpd_id:
            description: vpd_id
            type: str
'''

LOG = utils.get_logger('dellemc_vplex_distributed_virtual_volume')
HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexDistributedVirtualVolume():  # pylint:disable=R0902
    """Class with distributed virtual volume operations"""
    def __init__(self):
        """Define all parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_distributed_virtual_volume_parameters())

        mutually_exclusive = [[
            'distributed_virtual_volume_name', 'distributed_virtual_volume_id'
        ]]

        required_one_of = [[
            type: list
        iscsi_name:
            description: ISCSI name of the port
            type: str
        name:
            description: Name of the port
            type: str
        node_wwn:
            description: node wwn for registering the port
            type: str
        port_wwn:
            description: WWN of the port to register
            type: str
'''

LOG = utils.get_logger('dellemc_vplex_port')
HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexPort():  # pylint:disable=R0902
    """Class wth port operations"""

    def __init__(self):
        """Define all parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_vplex_port_parameters())

        # initialize the ansible module
        self.module = AnsibleModule(
            argument_spec=self.module_params,
            supports_check_mode=False,
Beispiel #9
0
            type: str

        virtual_volumes:
            description: List of virtual volumes attached to the storage view
            type: list

        initiators:
            description: List of initiators attached to the storage view
            type: list

        ports:
            description: List of ports attached to the storage view
            type: list
'''

LOG = utils.get_logger('dellemc_vplex_storage_view')
HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexStorageview():  # pylint:disable=R0902
    ''' class with storage view operations '''
    def __init__(self):
        """Define all the parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_vplex_storageview_parameters())
        self.resource_fail_msg = "Failed to collect resources"
        self.fail_msg = "Could not collect resources in {0}"

        self.module = AnsibleModule(argument_spec=self.module_params,
                                    supports_check_mode=False)
Beispiel #10
0
        underlying_storage_block_size:
            description: Size of the storage volume block
            type: int
        use:
            description: Status of the extent
            type: str
        used_by:
            description: Device list which use the extent
            type: list
        vendor_specific_name:
            description: Vendor specific name
            type: str

'''

LOG = utils.get_logger('dellemc_vplex_extent')
HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexExtent():  # pylint:disable=R0902
    """Class with extent operations"""
    def __init__(self):
        """Define all parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_vplex_extent_parameters())
        self.resource_fail_msg = "Failed to collect resources"
        self.fail_msg = "Could not collect resources in {0}"
        mutually_exclusive = [['storage_volume_name', 'storage_volume_id']]
        required_one_of = [[
            'storage_volume_name', 'storage_volume_id', 'extent_name'
        ]]
Beispiel #11
0
            type: bool
        transfer_size:
            description:
                - Size of the region in cache used to service the migration
            type: int
        virtual_volume:
            description:
                - Name of the virtual volume
            type: str
        visibility:
            description:
                - The cluster visibility of the device
            type: str
'''

LOG = utils.get_logger('dellemc_vplex_device')

HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexDevice():
    """Class with VPLEX Device operations"""
    def __init__(self):
        """Define all the parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_vplex_device_parameters())

        required_together = [['extents', 'extent_state']]

        self.module = AnsibleModule(argument_spec=self.module_params,
                                    supports_check_mode=False,
            type: bool
        thin_rebuild:
            description: Thin rebuild
            type: bool
        use:
            description: Status of the volume
            type: str
        used_by:
            description: List of extents used by
            type: bool
        vendor_specific_name:
            description: Vendor specific name
            type: str
'''

LOG = utils.get_logger('dellemc_vplex_storage_volume')
HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class StorageVolumeModule:
    """Class with Storage Volume operations"""
    def __init__(self):
        """Define all parameters required by the module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_user_parameters())
        mutually_exclusive = [['storage_volume_name', 'storage_volume_id']]
        required_one_of = [['storage_volume_name', 'storage_volume_id']]
        self.module = AnsibleModule(argument_spec=self.module_params,
                                    mutually_exclusive=mutually_exclusive,
                                    required_one_of=required_one_of,
                                    supports_check_mode=False)
Beispiel #13
0
        storage_array_family:
            description:
                - StorageArray's family
            type: str
        storage_groups:
            description:
                - storage_groups URI of StorageArray
            type: str
        storage_pools:
            description:
                - storage_pools URI of the StorageArray
            type: str

'''

LOG = utils.get_logger('dellemc_vplex_array')
HAS_VPLEXAPI_SDK = utils.has_vplexapi_sdk()


class VplexRediscoverArray():
    """Class with VPLEX Rediscover Array operation"""
    def __init__(self):
        """Define all the parameters required by this module"""
        self.module_params = utils.get_vplex_management_host_parameters()
        self.module_params.update(get_vplex_rediscover_array_parameters())

        self.module = AnsibleModule(argument_spec=self.module_params,
                                    supports_check_mode=False)

        # Check for external libraries
        lib_status, message = utils.external_library_check()