targets.psm1


$TargetGroupsDefaultProperties = ('name', 'index', 'sys-id')
$TargetsDefaultProperties = ('name', 'port-type', 'port-address', 'port-state', 'index', 'iops')

.(commonLib) 

Function Get-XtremTargets {
  <#
    .DESCRIPTION
    Displays the list of all Targets and their parameters.
 
    .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-XtremTargets
  #>

    [cmdletbinding()]
    Param (
        [parameter()]
        $XtremClusterName =  (Get-XtremDefaultSession)._XtremClusterName,
        [parameter()]
        [Alias("Properties")]
        [string[]]$Property = $TargetsDefaultProperties,
        [parameter()]
        [Alias("Filters")]
        [string[]]$Filter,
        [Parameter()]
        [object]$Session =  (Get-XtremDefaultSession),
        [Parameter()]
        [switch]$ShowRest,
        [Parameter()]
        [switch]$Full = $false
    )
    initCommand
    $Route = '/types/targets'

    if ($Full) { $Property = '' }

    $result = NewXtremRequest -Method GET -endpoint $Route -Session $Session  -XtremClusterName $XtremClusterName -Properties $Property -Filters $Filter -ObjectSelection $ObjectSelection -ShowRest:$ShowRest.IsPresent -Multi -Full:$Full.IsPresent
        
    $result = formatOutPut $Property $result

    finalizeCommand
    return $result
}

Function Get-XtremTarget {
   <#
    .DESCRIPTION
    Displays details of the selected Target.
 
    .PARAMETER TargetName
    Target'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-XtremTarget -TargetName mytarget
  #>

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

    
    $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 Set-XtremTarget
{
    
 <#
    .DESCRIPTION
    Enables you to modify a Target.
 
    .PARAMETER TargetName
    Target's name or index number.
 
    .PARAMETER MTU
    Maximum transmission unit (in bytes).
 
    .PARAMETER Properties
    Array of properties requested from this call.
 
    .PARAMETER ShowRest
    Return an object represents the REST operation including URI , Method and JSON
 
    .EXAMPLE
    Set-XtremTarget -TargetName target -MTU 1500
  #>

    [CmdletBinding()]
    Param (
        [Parameter()]
        $XtremClusterName =  (Get-XtremDefaultSession)._XtremClusterName,
        [Alias("Name", "Index")]
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)]
        $TargetName,
        [Parameter(Mandatory = $true, Position = 1)]
        [AllowNull()]
        [System.Nullable[Int]]$MTU,
        [Parameter()]
        [object]$Session =  (Get-XtremDefaultSession),
        [Parameter()]
        [switch]$ShowRest
    )
    
    $Route = '/types/targets'
    $Route, $GetProperty = SetParametersForRequest $Route $TargetName
    $BodyList = @{ }
    
    AddIfExists -name "cluster-id" -value $XtremClusterName -list $BodyList
    AddIfExists -name "tar-id" -value $TarId -list $BodyList
    AddIfExists -name "mtu" -value $MTU -list $BodyList
    
    $Body = BuildXtremJson -list $BodyList
    
    NewXtremRequest -Method PUT -endpoint $Route -Session $Session  -XtremClusterName $XtremClusterName -Body $Body -GetProperty $GetProperty -ShowRest:$ShowRest.IsPresent
}

######### TARGET GROUPS COMMANDS #########
Function Get-XtremTargetGroups {
  <#
    .DESCRIPTION
    Displays the list of all Targets and their parameters.
 
    .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-XtremTargetGroups
  #>

    
    [cmdletbinding()]
    Param (
        [parameter()]
        $XtremClusterName =  (Get-XtremDefaultSession)._XtremClusterName,
        [parameter()]
        [Alias("Properties")]
        [string[]]$Property = $TargetGroupsDefaultProperties,
        [parameter()]
        [Alias("Filters")]
        [string[]]$Filter,
        [Parameter()]
        [object]$Session =  (Get-XtremDefaultSession),
        [Parameter()]
        [switch]$ShowRest,
        [Parameter()]
        [switch]$Full = $false
    )
    initCommand
    $Route = '/types/target-groups'

    if ($Full) { $Property = '' }
    
    $result = NewXtremRequest -Method GET -endpoint $Route -Session $Session -XtremClusterName $XtremClusterName -Properties $Property -Filters $Filter -ObjectSelection $ObjectSelection -ShowRest:$ShowRest.IsPresent -Multi -Full:$Full.IsPresent
    
    $result = formatOutPut $Property $result

    finalizeCommand
    return $result
}

Function Get-XtremTargetGroup {
   <#
    .DESCRIPTION
    Displays details of the selected Target Group.
 
    .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-XtremTargetGroup -TargetGroupName mytarget
  #>

    [cmdletbinding()]
    Param (
        [parameter()]
        $XtremClusterName =  (Get-XtremDefaultSession)._XtremClusterName,
        [Alias("Name", "Index")]
        [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)]
        [Argumentcompleter( { doComplete $args 'target-groups' name })]
        $TargetGroupName,
        [Parameter()]
        [Alias("Properties")]
        [string[]]$Property,
        [Parameter()]
        [object]$Session =  (Get-XtremDefaultSession),
        [Parameter()]
        [switch]$ShowRest
    )
    initCommand
    $Route = '/types/target-groups'
    $Route, $GetProperty = SetParametersForRequest $Route $TargetGroupName
    
    $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
}

Export-ModuleMember *-*