# Web Services Embedded information
#eseries_subnet:                         # Network subnet to search for the storage system specified in CIDR form. Example: 192.168.1.0/24
#eseries_system_serial:                  # Storage system serial number. Be sure to quote if the serial is all numbers and begins with zero. (This is located
                                         #     on a label at the top-left towards the front on the device)
#eseries_system_addresses:               # Storage system management IP addresses. Only required when eseries_system_serial or eseries_system_api_url are not
                                         #     defined. When not specified, addresses will be populated with eseries_management_interfaces controller addresses.
#eseries_system_api_url:                 # Url for the storage system's for embedded web services rest api. Example: https://192.168.10.100/devmgr/v2
#eseries_system_username:                # Username for the storage system's for embedded web services rest api
#eseries_system_password:                # Password for the storage system's for embedded web services rest api and when the admin password has not been set
                                         #     eseries_system_password will be used to set it.
#eseries_proxy_ssid:                     # Arbitrary string for the proxy to represent the storage system. eseries_system_serial will be used when not defined.
#eseries_template_api_url:               # Template for the web services api url. Default: https://0.0.0.0:8443/devmgr/v2/
#eseries_validate_certs:                 # Indicates Whether SSL certificates should be verified. Used for both embedded and proxy. Choices: true, false

# Web Services Proxy information
#   Note: eseries_proxy_* variables are required to discover storage systems prior to SANtricity OS version 11.60.2.
#eseries_proxy_api_url:                  # Url for the storage system's for proxy web services rest api. Example: https://192.168.10.100/devmgr/v2
#eseries_proxy_api_username:             # Username for the storage system's for proxy web services rest api.
#eseries_proxy_api_password:             # Password for the storage system's for proxy web services rest api and when the admin password has not been set
                                         #     eseries_proxy_api_password will be used to set it.


# Storage Pool Default Policy Specifications
# ------------------------------------------
eseries_storage_pool_state: present                      # Default storage pool state. Choices: present, absent
eseries_storage_pool_raid_level: raidDiskPool            # Default volume raid level. Choices: raid0, raid1, raid5, raid6, raidDiskPool
eseries_storage_pool_secure_pool: false                  # Default for storage pool drive security. This flag will enable the security at rest feature. There
                                                         #    must be sufficient FDE or FIPS security capable drives. Type: boolean
#eseries_storage_pool_criteria_drive_count:              # Default storage pool drive count.
#eseries_storage_pool_reserve_drive_count:               # Default reserve drive count for drive reconstruction for storage pools using dynamic disk pool and
                                                         #    the raid level must be set for raidDiskPool.
#eseries_storage_pool_criteria_min_usable_capacity:      # Default minimum required capacity for storage pools.
#eseries_storage_pool_criteria_drive_type:               # Default drive type for storage pools. Choices: hdd, ssd
eseries_storage_pool_criteria_size_unit: gb              # Default unit size for all storage pool related sizing.
                                                         #    Choices: bytes, b, kb, mb, gb, tb, pb, eb, zb, yb
#eseries_storage_pool_criteria_drive_min_size:           # Default minimum drive size for storage pools.
#eseries_storage_pool_criteria_drive_require_da:         # Default for whether storage pools are required to have data assurance (DA) compatible drives.
                                                         #    Type: boolean
#eseries_storage_pool_criteria_drive_require_fde:        # Default for whether storage pools are required to have drive security compatible drives.
                                                         #    Type: boolean
#eseries_storage_pool_usable_drives:                     # Ordered list of <tray_number>:<drive_slot> strings for drive candidates. This is useful to control
                                                         #    drive selections.
eseries_storage_pool_remove_volumes: True                # Default policy for deleting volumes prior to removing storage pools.
#eseries_storage_pool_erase_secured_drives:              # Default policy for erasing the content drives during create and delete storage pool operations.
                                                         #    Type: boolean
#eseries_storage_pool_ddp_critical_threshold_pct:        # Default policy for dynamic disk pool alert critical threshold.
#eseries_storage_pool_ddp_warning_threshold_pct:         # Default policy for dynamic disk pool alert warning threshold.

# Volume Default Policy Specifications
# ------------------------------------
eseries_volume_state: present                        # Default volume state. Choices: present, absent
eseries_volume_size_unit: gb                         # Default unit size for all volume sizing options.
#eseries_volume_size:                                # Default volume size or the presented size for thinly provisioned volumes.
#eseries_volume_data_assurance_enabled:              # Default for whether data assurance(DA) is required to be enabled.
#eseries_volume_segment_size_kb:                     # Default segment size measured in kib.
#eseries_volume_read_cache_enable:                   # Default for read caching which will cache all read requests.
#eseries_volume_read_ahead_enable:                   # Default for read ahead caching; this is good for sequential workloads to cache subsequent blocks.
#eseries_volume_write_cache_enable:                  # Default for write caching which will cache all writes.
#eseries_volume_cache_without_batteries:             # Default for allowing caching when batteries are not present.
#eseries_volume_thin_provision:                      # Default for whether volumes should be thinly provisioned.
#eseries_volume_thin_volume_repo_size:               # Default for actually allocated space for thinly provisioned volumes.
#eseries_volume_thin_volume_max_repo_size:           # Default for the maximum allocated space allowed for thinly provisioned volumes.
#eseries_volume_thin_volume_expansion_policy:        # Default thin volume expansion policy. Choices: automatic, manual
#eseries_volume_thin_volume_growth_alert_threshold:  # Default thin volume growth alert threshold; this is the threshold for when the thin volume expansion
                                                     #    policy will be enacted. Allowable values are between and including 10% and 99%
#eseries_volume_ssd_cache_enabled:                   # Default for ssd cache which will enable the volume to use an existing SSD cache on the storage array.
#eseries_volume_host:                                # Default host for all volumes; the value can be any host from the Ansible inventory. Any initiator may be
                                                     #    used whether connected or not since the storage array does not require connectivity in order to create
                                                     #    host objects.
#eseries_volume_workload_name:                       # Default workload tag name
#eseries_volume_metadata:                            # Default metadata
#eseries_volume_owning_controller                    # Default preferred owning controller
eseries_volume_wait_for_initialization: false        # Default for whether volume creation with wait for initialization to complete


# Storage Pool-Volume Mapping Default Policy Specifications
# ---------------------------------------------------------
eseries_lun_mapping_state: present       # Generally specifies whether a LUN mapping should be present. This is useful when adding a default host for all
                                         #    volumes. Choices: present, absent
#eseries_lun_mapping_host:               # Default host for all volumes not specifically give a host either in common_volume_configuration or in
                                         #    eseries_storage_pool_configuration.


# Controller iSCSI Interface Port Default Policy Specifications
# -------------------------------------------------------
eseries_controller_iscsi_port_state: enabled              # Generally specifies whether a controller port definition should be applied Choices: enabled, disabled
eseries_controller_iscsi_port_config_method: dhcp         # General port configuration method definition for both controllers. Choices: static, dhcp
#eseries_controller_iscsi_port_gateway:                   # General port IPv4 gateway for both controllers.
#eseries_controller_iscsi_port_subnet_mask:               # General port IPv4 subnet mask for both controllers.
eseries_controller_iscsi_port_mtu: 9000                   # General port maximum transfer units (MTU) for both controllers. Any value greater than 1500 (bytes).
#eseries_controller_iscsi_port:
#  controller_a:                                    # Controller A port definition.
#    state:                                         # General definitions for all ports on controller A. Any option specified in the ports definition can be
                                                    #     specified here to generalize for all controller A ports. Choices: enabled, disabled
#    config_method:                                 # Port configuration method Choices: static, dhcp
#    address:                                       # Port IPv4 address
#    gateway:                                       # Port IPv4 gateway
#    subnet_mask:                                   # Port IPv4 subnet_mask
#    mtu:                                           # Port IPv4 mtu
#    ports:                                         # List containing ports definitions
#      - state:                                     # Whether the port should be enabled. Choices: enabled, disabled
#        config_method:                             # Port configuration method Choices: static, dhcp
#        address:                                   # Port IPv4 address
#        gateway:                                   # Port IPv4 gateway
#        subnet_mask:                               # Port IPv4 subnet_mask
#  controller_b:                                    # Controller B port definition.
#    (...)                                          # Same as controller A but for controller B



# Controller InfiniBand iSER Interface Channel
# --------------------------------------------
#eseries_controller_ib_iser_port:
#  controller_a:                                     # Ordered list of controller A channel address definition.
#      -                                             # Port IPv4 address for channel 1
#      - (...)                                       # So on and so forth
#  controller_b:                                     # Ordered list of controller B channel address definition.

# Controller NVMe over InfiniBand Interface Channel
# -------------------------------------------------
#eseries_controller_nvme_ib_port:
#  controller_a:                                     # Ordered list of controller A channel address definition.
#      -                                             # Port IPv4 address for channel 1
#      - (...)                                       # So on and so forth
#  controller_b:                                     # Ordered list of controller B channel address definition.

# Controller NVMe RoCE Interface Port Default Policy Specifications
# -------------------------------------------------------
eseries_controller_nvme_roce_port_state: enabled              # Generally specifies whether a controller port definition should be applied Choices: enabled, disabled
eseries_controller_nvme_roce_port_config_method: dhcp         # General port configuration method definition for both controllers. Choices: static, dhcp
#eseries_controller_nvme_roce_port_gateway:                   # General port IPv4 gateway for both controllers.
#eseries_controller_nvme_roce_port_subnet_mask:               # General port IPv4 subnet mask for both controllers.
eseries_controller_nvme_roce_port_mtu: 4200                  # General port maximum transfer units (MTU). Any value greater than 1500 (bytes).
eseries_controller_nvme_roce_port_speed: auto                # General interface speed. Value must be a supported speed or auto for automatically negotiating the speed with the port.
#eseries_controller_nvme_roce_port:
#  controller_a:                                    # Controller A port definition.
#    state:                                         # General definitions for all ports on controller A. Any option specified in the ports definition can be
                                                    #     specified here to generalize for all controller A ports.
#    config_method:                                 # Port configuration method Choices: static, dhcp
#    address:                                       # Port IPv4 address
#    gateway:                                       # Port IPv4 gateway
#    subnet_mask:                                   # Port IPv4 subnet_mask
#    mtu:                                           # Port IPv4 mtu
#    speed:                                         # Port IPv4 speed
#    ports:                                         # List containing ports definitions
#      - channel:                                   # Channel of the port to modify. This will be a numerical value that represents the port; typically read
                                                    #     left to right on the HIC.
#        state:                                     # Whether the port should be enabled.
#        config_method:                             # Port configuration method Choices: static, dhcp
#        address:                                   # Port IPv4 address
#        gateway:                                   # Port IPv4 gateway
#        subnet_mask:                               # Port IPv4 subnet_mask
#  controller_b:                                    # Controller B port definition.
#    state:                                         # General definitions for all ports on controller B. Any option specified in the ports definition can be
                                                    #     specified here to generalize for all controller A ports.
#    config_method:                                 # Port configuration method Choices: static, dhcp
#    address:                                       # Port IPv4 address
#    gateway:                                       # Port IPv4 gateway
#    subnet_mask:                                   # Port IPv4 subnet_mask
#    mtu:                                           # Port IPv4 mtu
#    speed:                                         # Port IPv4 speed
#    ports:                                         # List containing ports definitions
#      - channel:                                   # Channel of the port to modify. This will be a numerical value that represents the port; typically read
                                                    #     left to right on the HIC.
#        state:                                     # Whether the port should be enabled.
#        config_method:                             # Port configuration method Choices: static, dhcp
#        address:                                   # Port IPv4 address
#        gateway:                                   # Port IPv4 gateway
#        subnet_mask:                               # Port IPv4 subnet_mask


# Target Discovery Default Policy Specifications
# ----------------------------------------------
#eseries_target_name:                         # iSCSI target name
eseries_target_ping: True                     # Enables ICMP ping response from the configured iSCSI ports (boolean)
eseries_target_unnamed_discovery: True        # Whether the iSCSI target iqn should be returned when an initiator performs a discovery session.
eseries_target_chap_secret:                   # iSCSI chap secret. When left blank, the chap secret will be removed from the storage system.
eseries_target_chap_secret_update: False      # DO NOT REMOVE! Since netapp_e_iscsi_target cannot compare the chap secret with the current and chooses to always
                                              #     return changed=True, this flag is used to force the module to update the chap secret. It is preferable to
                                              #     leave this value False and to add the --extra-vars "eseries_target_chap_secret_update=True".

# Host Default Policy Specifications
# ----------------------------------
eseries_host_force_port: True                 # Default for whether ports are to be allowed to be re-assigned (boolean)
eseries_host_remove_unused_hostgroup: True    # Forces any unused groups to be removed
#eseries_host_object:
#  - name:                                    # Host label as referenced by the storage array.
#    state:
#    host_type:                               # Windows (non-clustering) 1, Windows (clustering) 6, Vmware 10, Linux (using kernal 3.10 and later) 28
#    group:                                   # Host's host group
#    ports:                                   # List of port definitions
#      - type:                                # Port protocol definition (iscsi, fc, sas, ib, nvme)
#        label:                               # Arbitrary port label
#        port:                                # Port initiator (iqn, wwn, etc)


# Storage Pool-Volume Default Policy Specifications
# -------------------------------------------------
#   Name schemes: Storage pool and volume names can be used to specify a naming scheme to produce a list of storage pools and volumes. The scheme are defined by
#                 brackets and can be used to specify a range of lowercase letters, uppercase letters, range of single digit numbers, any top-level inventory
#                 variables, and the current defined storage pool (volume only).

#eseries_storage_pool_configuration:
#  - name:                                    # Name or name scheme (see above) for the storage pool.
#    state:                                   # Specifies whether the storage pool should exist (present, absent). When removing an existing storage array all of the
                                              #    volumes must be defined with state=absent.
#    raid_level                               # Volume group raid level. Choices: raid0, raid1, raid5, raid6, raidDiskPool (Default: raidDiskPool)
#    secure_pool: no                          # Default for storage pool drive security. This flag will enable the security at rest feature. There must be sufficient FDE
                                              #    or FIPS security capable drives. Type: boolean
#    criteria_drive_count:                    # Default storage pool drive count.
#    reserve_drive_count:                     # Default reserve drive count for drive reconstruction for storage pools using dynamic disk pool and the raid level must be
                                              #    set for raidDiskPool.
#    criteria_min_usable_capacity:            # Default minimum required capacity for storage pools.
#    criteria_drive_type:                     # Default drive type for storage pools. Choices: hdd, ssd
#    criteria_size_unit: gb                   # Default unit size for all storage pool related sizing. Choices: bytes, b, kb, mb, gb, tb, pb, eb, zb, yb
#    criteria_drive_min_size:                 # Default minimum drive size for storage pools.
#    criteria_drive_require_da:               # Default for whether storage pools are required to have data assurance (DA) compatible drives. Type: boolean
#    criteria_drive_require_fde:              # Default for whether storage pools are required to have drive security compatible drives. Type: boolean
#    usable_drives:                           # Ordered list of <tray_number>:<drive_slot> strings for drive candidates. This is useful to control
                                              #    drive selections.
#    remove_volumes:                          # Default policy for deleting volumes prior to removing storage pools.
#    erase_secured_drives:                    # Default policy for erasing the content drives during create and delete storage pool operations. Type: boolean
#    common_volume_configuration:             # Any option that can be specified at the volume level can be generalized here at the storage pool level. This is useful when
                                              #    all volumes share common configuration definitions.
#    volumes:                                 # List of volumes associated the storage pool.
#      - state:                               # Specifies whether the volume should exist (present, absent)
#        name:                                # (required) Name or name scheme (see above) for the volume(s) to be created in the storage pool(s)
#        host:                                # host or host group for the volume should be mapped to.
#        host_type:                           # Only required when using something other than Linux kernel 3.10 or later with DM-MP (Linux DM-MP),
                                              #     non-clustered Windows (Windows), or the storage system default host type is incorrect. Common definitions below:
                                              #     - AIX MPIO: The Advanced Interactive Executive (AIX) OS and the native MPIO driver
                                              #     - AVT 4M: Silicon Graphics, Inc. (SGI) proprietary multipath driver; refer to the SGI installation documentation for more information
                                              #     - HP-UX: The HP-UX OS with native multipath driver
                                              #     - Linux ATTO: The Linux OS and the ATTO Technology, Inc. driver (must use ATTO FC HBAs)
                                              #     - Linux DM-MP: The Linux OS and the native DM-MP driver
                                              #     - Linux Pathmanager: The Linux OS and the SGI proprietary multipath driver; refer to the SGI installation documentation for more information
                                              #     - Mac: The Mac OS and the ATTO Technology, Inc. driver
                                              #     - ONTAP: FlexArray
                                              #     - Solaris 11 or later: The Solaris 11 or later OS and the native MPxIO driver
                                              #     - Solaris 10 or earlier: The Solaris 10 or earlier OS and the native MPxIO driver
                                              #     - SVC: IBM SAN Volume Controller
                                              #     - VMware: ESXi OS
                                              #     - Windows: Windows Server OS and Windows MPIO with a DSM driver
                                              #     - Windows Clustered: Clustered Windows Server OS and Windows MPIO with a DSM driver
                                              #     - Windows ATTO: Windows OS and the ATTO Technology, Inc. driver
#        size:                                # Size of the volume or presented size of the thinly provisioned volume.
#        size_unit:                           # Unit size for the size, thin_volume_repo_size, and thin_volume_max_repo_size
                                              #    Choices: bytes, b, kb, mb, gb, tb, pb, eb, zb, yb
#        segment_size_kb:                     # Indicates the amount of data stored on a drive before moving on to the next drive in the volume group. Does not apply to pool volumes.
#        thin_provision:                      # Whether volumes should be thinly provisioned.
#        thin_volume_repo_size:               # Actually allocated space for thinly provisioned volumes.
#        thin_volume_max_repo_size:           # Maximum allocated space allowed for thinly provisioned volumes.
#        thin_volume_expansion_policy:        # Thin volume expansion policy. Choices: automatic, manual
#        thin_volume_growth_alert_threshold:  # Thin volume growth alert threshold; this is the threshold for when the thin volume expansion
                                              #    policy will be enacted. Allowable values are between and including 10% and 99%
#        ssd_cache_enabled:                   # Enables ssd cache which will enable the volume to use an existing SSD cache on the storage array.
#        data_assurance_enabled:              # Enables whether data assurance(DA) is required to be enabled.
#        read_cache_enable:                   # Enables read caching which will cache all read requests.
#        read_ahead_enable:                   # Enables read ahead caching; this is good for sequential workloads to cache subsequent blocks.
#        write_cache_enable:                  # Enables write caching which will cache all writes.
#        workload_name:                       # Name of the volume's workload. This can be defined using the metadata option or, if already defined, specify one already
                                              #    created on the storage array.
#        metadata:                            # Dictionary containing arbitrary entries normally used for defining the volume(s) workload.
#        wait_for_initialization:             # Whether volume creation with wait for initialization to complete

# Snapshot Consistency Group Default Policy Specifications
# --------------------------------------------------------
eseries_snapshot_remove_unspecified: false                # Whether to remove any snapshot group or view that is not specified (Default: false).
#eseries_snapshot_groups_maximum_snapshots:               # Default maximum point-in-time snapshot images (Default: 32).
#eseries_snapshot_groups_reserve_capacity_pct:            # Default reserve capacity percentage (Default: 40)
#eseries_snapshot_groups_preferred_reserve_storage_pool:  # Preferred storage pool or volume group for the reserve capacity volume.
#eseries_snapshot_groups_reserve_capacity_full_policy:    # Default full reserve capacity policy (Default: purge). Choices: [purge, reject]
#eseries_snapshot_groups_alert_threshold_pct:             # Default reserve capacity percentage full to alert administrators (Default 75).
#eseries_snapshot_groups:
#  - name:                                                # Name of snapshot consistency group.
#    maximum_snapshots:                                   # Maximum allowed snapshot point-in-time images for consistency group (Default: 32).
#    reserve_capacity_pct:                                # Reserve capacity measured as a percentage of the base volume (Default: 40). Reserve capacity can be expanded
#                                                         #   and trimmed; however, the trim operation requires there be no base volume snapshots images in the group.
#    reserve_capacity_full_policy:                        # Policy to implement when reserve capacity is full (Default: purge). Choices [purge, reject]
#    alert_threshold_pct:                                 # Reserve capacity full alert threshold for storage system administrators (Default: 75).
#    rollback_priority:                                   # Storage system priority for base volume rollback (Default: medium). Choices [lowest, low, medium, high, highest]
#    volumes:                                             # Information for each volume in the consistency group.
#      - volume:                                          # Base volume name
#        reserve_capacity_pct:                            # Reserve capacity measured as a percentage of the base volume (Default: 40). Reserve capacity can be expanded
                                                          #   and trimmed; however, the trim operation requires there be no base volume snapshots images in the group.
#        preferred_reserve_storage_pool:                  # Preferred reserve capacity storage pool or volume group. This will default to the base volume's
                                                          #   storage pool or volume group. The reserve capacity volume cannot be changed once created.
#      - (...)

#eseries_snapshot_views_host:                              # Default host or host group to map all snapshot volumes.
#eseries_snapshot_views_reserve_capacity_pct:              # Default reserve capacity percentage (Default: 40)
#eseries_snapshot_views_preferred_reserve_storage_pool:    # Preferred storage pool or volume group for the reserve capacity volume.
#eseries_snapshot_views_alert_threshold_pct:               # Default reserve capacity percentage full to alert administrators (Default 75).
#eseries_snapshot_views_writable:                          # Default for whether to make snapshot volumes writable.
#eseries_snapshot_views_validate:                          # Default for whether to validate snapshot volumes after creation.
#eseries_snapshot_views:
#  - volume:                                               # Consistency group's snapshot view's name.
#    group_name:                                           # Snapshot consistency group's name.
#    pit_name:                                             # Point-in-time snapshot images group name. (Only available when specified using Ansible na_santricity_module (via direct or role)
#    pit_timestamp:                                        # Point-in-time snapshot images group timestamp. Snapshot image timestamp in the YYYY-MM-DD HH:MM:SS (AM|PM) (hours, minutes, seconds, and day-period are optional)
#    host:                                                 # Host or host group to map snapshot volumes.
#    writable:                                             # Whether snapshot volume of base volume images should be writable.
#    validate:                                             # Whether snapshot volume should be validated which includes both a media scan and parity validation.
#    reserve_capacity_pct:                                 # Percentage of base volume capacity to reserve for snapshot copy-on-writes (COW). Only used when snapshot volume is writable.
#    preferred_reserve_storage_pool:                       # Preferred storage pool or volume group for the reserve capacity volume.
#    alert_threshold:                                      # Reserve capacity percentage full to alert administrators
#    volumes:                                              # (Optional) Select subset of volumes within the snapshot consistency group.
#      - name:                                             # Name of volume within consistency group.
#        host:                                             # Host or host group to map snapshot volumes.
#        writable:                                         # Whether snapshot volume of base volume images should be writable.
#        validate:                                         # Whether snapshot volume should be validated which includes both a media scan and parity validation.
#        reserve_capacity_pct:                             # Percentage of base volume capacity to reserve for snapshot copy-on-writes (COW). Only used when snapshot volume is writable.
#        preferred_reserve_storage_pool:                   # Preferred storage pool or volume group for the reserve capacity volume.

#eseries_snapshot_rollback_priority: medium                # Default point-in-time rollback priority (Default: medium). Choices [lowest, low, medium, high, highest]
#eseries_snapshot_rollback_backup: true                    # Default whether snapshot should be taken prior to rolling back base volumes (Default: true).
#eseries_snapshot_rollbacks:
#  - group_name:                                           # Snapshot consistency group's name.
#    pit_name:                                             # Point-in-time snapshot images group name (Only available when specified using Ansible na_santricity_module (via direct or role)
#    pit_timestamp:                                        # Point-in-time snapshot images group timestamp. Snapshot image timestamp in the YYYY-MM-DD HH:MM:SS (AM|PM) (hours, minutes, seconds, and day-period are optional)
#    rollback_priority:                                    # Storage system priority for base volume rollback (Default: medium). Choices [lowest, low, medium, high, highest]
#    rollback_backup:                                      # Whether to create point-in-time snapshot images of the consistency group prior to rollback.
#    volumes:                                              # (Optional) Select subset of volume names within the snapshot consistency group to rollback.

# Initiator-Target Protocol Variable Defaults
# -------------------------------------------
#   Note that the following commands produce a unique list of IQNs or WWNs of the interfaces used, line separated.
eseries_initiator_protocol:     # This variable defines which protocol the storage array will use. Choices: iscsi, fc, sas, ib_iser, ib_srp, nvme_ib, nvme_fc, nvme_roce
eseries_initiator_command:
  fc:
    linux: "cat /sys/class/fc_host/host*/port_name | sort | uniq"
    windows: "(Get-InitiatorPort | Where-Object -P ConnectionType -EQ 'Fibre Channel' | Select-Object -Property PortAddress |
               Format-Table -AutoSize -HideTableHeaders | Out-String).trim()"
  iscsi:
    linux: "grep -o iqn.* /etc/iscsi/initiatorname.iscsi"
    windows: "(get-initiatorPort | select-object -property nodeaddress | sort-object | get-unique | ft -autoSize | out-string -stream |
               select-string iqn | out-string).trim()"
  sas:
    # NetApp IMT for SAS attached E-Series SAN hosts recommends adding all possible SAS addresses with the base address
    # starting at 0, and the last address ending in 3 for single port HBAs, or 7 for dual port HBAs. Since determining
    # single vs . dual port HBAs adds complexity, we always add all 8 possible permutations of the SAS address.
    linux: "cat /sys/class/sas_host/host*/device/scsi_host/*/host_sas_address | sort | uniq"
    windows: "(Get-InitiatorPort | Where-Object -P ConnectionType -EQ 'SAS' | Select-Object -Property PortAddress | Format-Table -AutoSize -HideTableHeaders | Out-String).trim()"
  ib_iser:
    linux: "grep -o iqn.* /etc/iscsi/initiatorname.iscsi"
    windows: ""   # add windows command for determining host iqn address(es)
  ib_srp:
    linux: "for fp in /sys/class/infiniband/*/ports/*/gids/*; do out=`cat $fp | tr -d :`; port=`expr substr $out 17 32`; if [ $port != 0000000000000000 ]; then echo 0x$port; fi; done | sort | uniq"
    windows: ""   # add windows command for determining host guid
  nvme_ib:
    linux: "grep -o nqn.* /etc/nvme/hostnqn"
    windows: ""   # add windows command for determining host nqn address(es)
  nvme_fc:
    linux: "grep -o nqn.* /etc/nvme/hostnqn"
    windows: ""   # add windows command for determining host nqn address(es)
  nvme_roce:
    linux: "grep -o nqn.* /etc/nvme/hostnqn"
    windows: ""   # add windows command for determining host nqn address(es)

eseries_iscsi_iqn_prefix: "iqn.2005-03.org.open-iscsi:"     # Last 12 characters from host machine-id (uuid) will be appended to the prefix if the host does not have a required iqn.
eseries_nvme_nqn_prefix: "nqn.2014-08.org.nvmexpress:uuid:" # Host machine-id (uuid) will be appended to the prefix if the host does not have a required nqn.
eseries_protocols_using_eseries_iscsi_iqn: ["iscsi", "ib_iser"]
eseries_protocols_using_eseries_nvme_nqn: ["nvme_ib", "nvme_fc", "nvme_roce"]
eseries_iscsi_iqn_path: "/etc/iscsi/"  #initiatorname.iscsi"
eseries_nvme_nqn_path: "/etc/nvme/"  #hostnqn"

eseries_remove_all_configuration: False   # WARNING!!! This flag will force any storage pool, volume, host, hostgroup and mapping to be absent. Choices: True, False