initiatorGroup.psm1
$InitiatorGroupsDefaultProperties = ('name', 'index', 'sys-name', 'num-of-initiators', 'num-of-vols', 'iops') .(commonLib) Function Get-XtremInitiatorGroups { <# .DESCRIPTION Displays the list of all Initiator Groups. .PARAMETER Properties Array of properties requested from this call. .PARAMETER Filters Array of filters for this call. .PARAMETER ShowRest Return an object represents the REST operation including URI , Method and JSON .EXAMPLE Get-XtremInitiatorGroups #> [cmdletbinding()] [Alias('xmsInitiatorGroupList')] Param ( [parameter()] $XtremClusterName = (Get-XtremDefaultSession)._XtremClusterName, [parameter()] [Alias("Properties")] [Argumentcompleter( { doComplete $args 'initiator-groups' prop })] [string[]]$Property = $InitiatorGroupsDefaultProperties, [parameter()] [Alias("Filters")] [Argumentcompleter( { doComplete $args 'initiator-groups' filter })] [string[]]$Filter, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest, [Parameter()] [switch]$Full = $false ) initCommand $Route = '/types/initiator-groups' if ($Full) { $Property = '' } $result = NewXtremRequest -Method GET -Endpoint $Route -Session $Session -XtremClusterName $XtremClusterName -Properties $Property -ObjectSelection $ObjectSelection -Filters $Filter -ShowRest:$ShowRest.IsPresent -Multi -Full:$Full.IsPresent $result = formatOutPut $Property $result finalizeCommand return $result } Function Get-XtremInitiatorGroup{ <# .DESCRIPTION displays the name and index number of the selected Initiator Group. .PARAMETER InitiatorGroupName Initiator Group's name or index number. .PARAMETER Properties Array of properties requested from this call. .PARAMETER ShowRest Return an object represents the REST operation including URI , Method and JSON .EXAMPLE Get-XtremInitiatorGroup -InitiatorGroupName initiatorName #> [cmdletbinding()] [Alias('xmsInitiatorGroupGet')] Param ( [parameter()] $XtremClusterName = (Get-XtremDefaultSession)._XtremClusterName, [Alias("Name", "Index")] [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)] [Argumentcompleter( { doComplete $args 'initiator-groups' name })] $InitiatorGroupName, [Parameter()] [Alias("Properties")] [Argumentcompleter( { doComplete $args 'initiator-groups' prop })] [string[]]$Property, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest ) $Route = '/types/initiator-groups' $Route, $GetProperty = SetParametersForRequest $Route $InitiatorGroupName initCommand $result = NewXtremRequest -Method GET -Endpoint $Route -Session $Session -XtremClusterName $XtremClusterName -ObjectSelection $ObjectSelection -GetProperty $GetProperty -Properties $Property -ShowRest:$ShowRest.IsPresent $result = formatOutPut $Property $result finalizeCommand return $result } Function New-XtremInitiatorGroup { <# .DESCRIPTION Enables you to add an Initiator Group and its Initiators to the XtremIO cluster. .PARAMETER InitiatorGroupName Initiator Group's name. .PARAMETER operatigSystem Initiators operating System. .PARAMETER InitiatorList List of associated Initiators (port adressess) .PARAMETER TagList Tag ID list .PARAMETER QoSEnabledMode QosEnabledMode .PARAMETER QoSPolicyId QoSPolicyId .PARAMETER ShowRest Return an object represents the REST operation including URI , Method and JSON .EXAMPLE New-XtremInitiatorGroup -InitiatorGroupName mygroup #> [CmdletBinding()] [Alias('xmsInitiatorGroupCreate')] Param ( [Parameter()] $XtremClusterName = (Get-XtremDefaultSession)._XtremClusterName, [Alias("Name", "Index")] [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)] [Argumentcompleter( { doComplete $args 'initiator-groups' name })] [ValidatePattern("^[^\[\]&\(\)`";,<>'/]+$")] [String]$InitiatorGroupName, [Parameter()] [ValidateSet("esx", "Linux", "Windows", "Solaris", "AIX", "HP-UX", "Other")] [string]$operatigSystem = 'esx', [Parameter()] [ArgumentCompleter( { param ( $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters ) $vals = (Invoke-XtremGetRequest '/types/discover-initiators' port-address) | foreach { $_."port-type" + '-' + $_."port-address"} $vals = removeEntredVals $commandAst $vals $vals | Where-Object { $_ -like "$wordToComplete*" } } )] [String[]]$InitiatorList, [Parameter()] [Array]$TagList, [Parameter()] [ValidateSet('enabled','disabled','monitor_only')] [String]$QoSEnabledMode, [Parameter()] [String]$QoSPolicyId, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest ) $Route = '/types/initiator-groups' $BodyList = @{ } AddIfExists -name "cluster-id" -value $XtremClusterName -list $BodyList AddIfExists -name "ig-name" -value $InitiatorGroupName -list $BodyList AddIfExists -name "initiator-list" -value (getInitiatorsInfo) -list $BodyList AddIfExists -name "tag-list" -value $TagList -list $BodyList AddIfExists -name "qos-enabled-mode" -value $QoSEnabledMode -list $BodyList AddIfExists -name "qos-policy-id" -value $QoSPolicyId -list $BodyList AddIfExists -name "created-by-external-client" -value 'PowerShell' -list $BodyList initCommand $Body = BuildXtremJson -list $BodyList $result = NewXtremRequest -Method POST -Endpoint $Route -Session $Session -Body $Body -ObjectSelection $ObjectSelection -ShowRest:$ShowRest.IsPresent finalizeCommand return $result } function getInitiatorsInfo(){ $outList = [System.Collections.ArrayList]@() for ($i = 0; $i -lt $InitiatorList.Count; $i++) { $intrName = $InitiatorList[$i] $intr = @{} $nArr = $intrName -split '-' $intr."initiator-name" = $InitiatorGroupName+'-'+$nArr[0]+'-'+($i+1) $intr."port-address" = $nArr[1] $intr."operating-system" = $operatigSystem [void]($outList.Add($intr)) } return $outList } Function Set-XtremInitiatorGroup { <# .DESCRIPTION Enables you to rename an Initiator Group .PARAMETER InitiatorGroupName Initiator Group's name. .PARAMETER NewName Initiator Group's new name .PARAMETER TagList Tag ID list .PARAMETER QoSEnabledMode QosEnabledMode .PARAMETER QoSPolicyId QoSPolicyId .PARAMETER OperatingSystem Operating System (e.g. Linux,Windows, ESX, Solaris, AIX, HP-UX) .PARAMETER ShowRest Return an object represents the REST operation including URI , Method and JSON .EXAMPLE Set-XtremInitiatorGroup -InitiatorGroupName mygroup -NewName mynewgroup #> [CmdletBinding()] [Alias('xmsInitiatorGroupModify')] Param ( [Parameter()] $XtremClusterName = (Get-XtremDefaultSession)._XtremClusterName, [Alias("Name", "Index")] [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)] [Argumentcompleter( { doComplete $args 'initiator-groups' name })] $InitiatorGroupName, [Parameter()] [ValidatePattern("^[^\[\]&\(\)`";,<>'/]+$")] [String]$NewName, [Parameter()] [Array]$TagList, [Parameter()] [ValidateSet('enabled','disabled','monitor_only')] [String]$QoSEnabledMode, [Parameter()] $QoSPolicyId, [Parameter()] [ValidateSet("linux", "windows", "esx", "solaris", "aix", "hpux", "other")] [String]$OperatingSystem, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest ) $Route = '/types/initiator-groups' $Route, $GetProperty = SetParametersForRequest $Route $InitiatorGroupName $BodyList = @{ } AddIfExists -name "cluster-id" -value $XtremClusterName -list $BodyList AddIfExists -name "new-name" -value $NewName -list $BodyList AddIfExists -name "qos-enabled-mode" -value $QoSEnabledMode -list $BodyList AddIfExists -name "qos-policy-id" -value $QoSPolicyId -list $BodyList AddIfExists -name "operating-system" -value $OperatingSystem -list $BodyList initCommand $Body = BuildXtremJson -list $BodyList $result = NewXtremRequest -Method PUT -Endpoint $Route -Session $Session -XtremClusterName $XtremClusterName -Body $Body -ObjectSelection $ObjectSelection -GetProperty $GetProperty -ShowRest:$ShowRest.IsPresent finalizeCommand return $result } Function Remove-XtremInitiatorGroup { <# .DESCRIPTION Enables you to remove an Initiator Group and its associated Initiators. .PARAMETER InitiatorGroupName Initiator Group's current name or index number .PARAMETER ShowRest Return an object represents the REST operation including URI , Method and JSON .EXAMPLE Remove-XtremIitiatorGroup -InitiatorGroupName groupName #> [cmdletbinding()] [Alias('xmsInitiatorGroupRemove')] Param ( [parameter()] $XtremClusterName = (Get-XtremDefaultSession)._XtremClusterName, [Alias("Name", "Index")] [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)] [Argumentcompleter( { doComplete $args 'initiator-groups' name })] $InitiatorGroupName, [Parameter()] [bool]$Confirm = (Get-XtremDefaultSession)._XtremCLIMode, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest ) $confirmed = IsConfirmed $Confirm if (!$confirmed){ return } initCommand $Route = '/types/initiator-groups' $Route, $GetProperty = SetParametersForRequest $Route $InitiatorGroupName $result = NewXtremRequest -Method DELETE -Endpoint $Route -Session $Session -XtremClusterName $XtremClusterName -GetProperty $GetProperty -ShowRest:$ShowRest.IsPresent finalizeCommand return $result } Export-ModuleMember *-* -Alias * |