initiators.psm1


$InitiatorsDefaultProperties = ( 'name', 'index', 'port-address', 'iops', 'operating-system', 'initiator-conn-state', 'port-type')

  
.(commonLib) 

Function Get-XtremInitiators {
  <#
    .DESCRIPTION
    Displays details of all Initiators.
 
    .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-XtremInitiators
  #>

    [cmdletbinding()]
    [Alias('xmsInitiatorList')]
    Param (
        [parameter()]
        $XtremClusterName =  (Get-XtremDefaultSession)._XtremClusterName,
        [parameter()]
        [Alias("Properties")]
        [Argumentcompleter( { doComplete $args 'initiators' prop })] 
        [string[]]$Property = $InitiatorsDefaultProperties,
        [parameter()]
        [Alias("Filters")]
        [Argumentcompleter( { doComplete $args 'initiators' filter })] 
        [string[]]$Filter,
        [Parameter()]
        [object]$Session =  (Get-XtremDefaultSession),
        [Parameter()]
        [switch]$ShowRest,
        [Parameter()]
        [switch]$Full = $false
    )
    initCommand
    
    $Route = '/types/initiators'

    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-XtremInitiator {
   <#
    .DESCRIPTION
    Displays details of the selected Initiator.
 
    .PARAMETER InitiatorName
    Initiator's name or index number.
 
    .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-XtremInitiator -InitiatorName initiator
  #>

    [cmdletbinding()]
    [Alias('xmsInitiatorGet')]
    Param (
        [parameter()]
        $XtremClusterName =  (Get-XtremDefaultSession)._XtremClusterName,
        [Alias("Name", "Index")]
        [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)]
        [Argumentcompleter( { doComplete $args 'initiators' name })] 
        $InitiatorName,
        [Parameter()]
        [Alias("Properties")]
        [Argumentcompleter( { doComplete $args 'initiators' prop })] 
        [string[]]$Property,
        [Parameter()]
        [object]$Session =  (Get-XtremDefaultSession),
        [Parameter()]
        [switch]$ShowRest
    )
    initCommand
    $Route = '/types/initiators'
    $Route, $GetProperty = SetParametersForRequest $Route $InitiatorName

    $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-XtremInitiator {
 <#
    .DESCRIPTION
    Enables you to add a new Initiator and associate it with an existing Initiator Group.
 
    .PARAMETER InitiatorName
    New initiator name
 
    .PARAMETER InitiatorGroup
    Initiator Group name of Index.
 
    .PARAMETER PortAddress
    Initiator's port address
 
    .PARAMETER InitiatorAuthenticationUserName
    CHAP authentication username
 
    .PARAMETER InitiatorAuthenticationPassword
    CHAP authentication password
 
    .PARAMETER InitiatorDiscoveryUserName
    CHAP discovery cluster username
 
    .PARAMETER InitiatorDiscoveryPassword
    CHAP discovery cluster password
 
    .PARAMETER ClusterAuthenticationUserName
    CHAP authentication cluster username
 
    .PARAMETER ClusterAuthenticationPassword
    CHAP authentication cluster password
 
    .PARAMETER ClusterDiscoveryUserName
    CHAP discovery Initiator username
 
    .PARAMETER ClusterDiscoveryPassword
    CHAP discovery password
 
    .PARAMETER ShowRest
    Return an object represents the REST operation including URI , Method and JSON
 
    .PARAMETER OperatingSystem
    Operating System (e.g. Linux,Windows, ESX, Solaris, AIX, HP-UX)
 
    .EXAMPLE
    New-XtremInitiator
  #>

    [CmdletBinding()]
    [Alias('xmsInitiatorCreate')]
    Param (
        [Parameter()]
        $XtremClusterName =  (Get-XtremDefaultSession)._XtremClusterName,
        [Alias("Name", "Index")]
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)]
        [Argumentcompleter( { doComplete $args 'initiators' name })] 
        [ValidatePattern("^[^\[\]&\(\)`";,<>'/]+$")] 
        [String]$InitiatorName,
        [Parameter(Mandatory = $true, Position = 1)]
        [Argumentcompleter( { doComplete $args 'initiator-groups' name })] 
        $InitiatorGroup,
        [Parameter(Mandatory = $true, Position = 2)]
        [String]$PortAddress,
        [Parameter()]
        [String]$InitiatorAuthenticationUserName,
        [Parameter()]
        [String]$InitiatorAuthenticationPassword,
        [Parameter()]
        [String]$InitiatorDiscoveryUserName,
        [Parameter()]
        [String]$InitiatorDiscoveryPassword,
        [Parameter()]
        [String]$ClusterAuthenticationUserName,
        [Parameter()]
        [String]$ClusterAuthenticationPassword,
        [Parameter()]
        [String]$ClusterDiscoveryUserName,
        [Parameter()]
        [String]$ClusterDiscoveryPassword,
        [Parameter()]
        [ValidateSet("linux", "windows", "esx", "solaris", "aix", "hpux", "other")]
        [String]$OperatingSystem,
        [Parameter()]
        [object]$Session =  (Get-XtremDefaultSession),
        [Parameter()]
        [switch]$ShowRest
    )
    $Route = '/types/initiators'
    
    $BodyList = @{ }
    
    AddIfExists -name "cluster-id" -value $XtremClusterName -list $BodyList
    AddIfExists -name "initiator-name" -value $InitiatorName -list $BodyList
    AddIfExists -name "ig-id" -value $InitiatorGroup -list $BodyList
    AddIfExists -name "port-address" -value $PortAddress -list $BodyList
    AddIfExists -name "initiator-authentication-user-name" -value $InitiatorAuthenticationUserName -list $BodyList
    AddIfExists -name "initiator-authentication-password" -value $InitiatorAuthenticationPassword -list $BodyList
    AddIfExists -name "initiator-discovery-user-name" -value $InitiatorDiscoveryUserName -list $BodyList
    AddIfExists -name "initiator-discovery-password" -value $InitiatorDiscoveryPassword -list $BodyList
    AddIfExists -name "cluster-authentication-user-name" -value $ClusterAuthenticationUserName -list $BodyList
    AddIfExists -name "cluster-authentication-password" -value $ClusterAuthenticationPassword -list $BodyList
    AddIfExists -name "cluster-discovery-user-name" -value $ClusterDiscoveryUserName -list $BodyList
    AddIfExists -name "cluster-discovery-password" -value $ClusterDiscoveryPassword -list $BodyList
    AddIfExists -name "operating-system" -value $OperatingSystem -list $BodyList

    initCommand
    
    $Body = BuildXtremJson -list $BodyList

    $result = NewXtremRequest -Method POST -Endpoint $Route -Session $Session -XtremClusterName $XtremClusterName -Body $Body -ObjectSelection $ObjectSelection -ShowRest:$ShowRest.IsPresent

    finalizeCommand
    return $result
}

Function Set-XtremInitiator {
 <#
    .DESCRIPTION
    Enables you to modify an Initiator.
 
    .PARAMETER InitiatorName
    Initiator name
 
    .PARAMETER InitiatorGroup
    Initiator Group name of Index.
 
    .PARAMETER PortAddress
    Initiator's port address
 
    .PARAMETER InitiatorAuthenticationUserName
    CHAP authentication username
 
    .PARAMETER InitiatorAuthenticationPassword
    CHAP authentication password
 
    .PARAMETER InitiatorDiscoveryUserName
    CHAP discovery cluster username
 
    .PARAMETER InitiatorDiscoveryPassword
    CHAP discovery cluster password
 
    .PARAMETER ClusterAuthenticationUserName
    CHAP authentication cluster username
 
    .PARAMETER ClusterAuthenticationPassword
    CHAP authentication cluster password
 
    .PARAMETER ClusterDiscoveryUserName
    CHAP discovery Initiator username
 
    .PARAMETER ClusterDiscoveryPassword
    CHAP discovery password
 
    .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-XtremInitiator -InitiatorName 5 -NewInitiatorName newInitiator
  #>

    [CmdletBinding()]
    [Alias('xmsInitiatorModify')]
    Param (
        [Parameter()]
        $XtremClusterName =  (Get-XtremDefaultSession)._XtremClusterName,
        [Alias("Name", "Index")]
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)]
        [Argumentcompleter( { doComplete $args 'initiators' name })] 
        $InitiatorName,
        [Parameter()]
        [String]$PortAddress,
        [Parameter()]
        [ValidatePattern("^[^\[\]&\(\)`";,<>'/]+$")] 
        [String]$NewInitiatorName,
        [Parameter()]
        [String]$InitiatorAuthenticationUserName,
        [Parameter()]
        [String]$InitiatorAuthenticationPassword,
        [Parameter()]
        [String]$InitiatorDiscoveryUserName,
        [Parameter()]
        [String]$InitiatorDiscoveryPassword,
        [Parameter()]
        [String]$ClusterAuthenticationUserName,
        [Parameter()]
        [String]$ClusterAuthenticationPassword,
        [Parameter()]
        [String]$ClusterDiscoveryUserName,
        [Parameter()]
        [String]$ClusterDiscoveryPassword,
        [Parameter()]
        [ValidateSet("linux", "windows", "esx", "solaris", "aix", "hpux", "other")]
        [String]$OperatingSystem,
        [Parameter()]
        [object]$Session =  (Get-XtremDefaultSession),
        [Parameter()]
        [switch]$ShowRest
    )
    
    $Route = '/types/initiators'
    $Route, $GetProperty = SetParametersForRequest $Route $InitiatorName
    $BodyList = @{ }
    
    AddIfExists -name "cluster-id" -value $XtremClusterName -list $BodyList
    AddIfExists -name "port-address" -value $PortAddress -list $BodyList
    AddIfExists -name "initiator-name" -value $NewInitiatorName -list $BodyList
    AddIfExists -name "initiator-authentication-user-name" -value $InitiatorAuthenticationUserName -list $BodyList
    AddIfExists -name "initiator-authentication-password" -value $InitiatorAuthenticationPassword -list $BodyList
    AddIfExists -name "initiator-discovery-user-name" -value $InitiatorDiscoveryUserName -list $BodyList
    AddIfExists -name "initiator-discovery-password" -value $InitiatorDiscoveryPassword -list $BodyList
    AddIfExists -name "cluster-authentication-user-name" -value $ClusterAuthenticationUserName -list $BodyList
    AddIfExists -name "cluster-authentication-password" -value $ClusterAuthenticationPassword -list $BodyList
    AddIfExists -name "cluster-discovery-user-name" -value $ClusterDiscoveryUserName -list $BodyList
    AddIfExists -name "cluster-discovery-password" -value $ClusterDiscoveryPassword -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 -GetProperty $GetProperty -ShowRest:$ShowRest.IsPresent

    finalizeCommand
    return $result
}


Function Remove-XtremInitiator {
  <#
    .DESCRIPTION
    enables you to remove an Initiator.
 
    .EXAMPLE
    Remove-XtremInitiator
 
    .PARAMETER ShowRest
    Return an object represents the REST operation including URI , Method and JSON
  #>

    [cmdletbinding()]
    [Alias('xmsInitiatorRemove')]
    Param (
        [parameter()]
        $XtremClusterName =  (Get-XtremDefaultSession)._XtremClusterName,
        [Alias("Name", "Index")]
        [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)]
        [Argumentcompleter( { doComplete $args 'initiators' name })] 
        $InitiatorName,
        [Parameter()]
        [bool]$Confirm =  (Get-XtremDefaultSession)._XtremCLIMode,
        [Parameter()]
        [object]$Session =  (Get-XtremDefaultSession),
        [Parameter()]
        [switch]$ShowRest
    )
    
    $confirmed = IsConfirmed $Confirm
    if (!$confirmed) {
        return
    }
    initCommand
    
    $Route = '/types/initiators'
    $Route, $GetProperty = SetParametersForRequest $Route $InitiatorName
    
    $result = NewXtremRequest -Method DELETE -Endpoint $Route -Session $Session -XtremClusterName $XtremClusterName -GetProperty $GetProperty -ShowRest:$ShowRest.IsPresent

    finalizeCommand
    return $result
}


Export-ModuleMember *-* -Alias *