tags.psm1
$TagsDefaultProperties = ('name', 'index', 'object-type', 'num-of-items', 'color') .(commonLib) Function Get-XtremTags { <# .DESCRIPTION displays the list of Tags. .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-XtremTags #> [cmdletbinding()] [Alias('xmsTagList')] Param ( [parameter()] [Alias("Properties")] [Argumentcompleter( { doComplete $args 'tags' prop })] [string[]]$Property = $TagsDefaultProperties, [parameter()] [Alias("Filters")] [Argumentcompleter( { doComplete $args 'tags' filter })] [string[]]$Filter, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest, [Parameter()] [switch]$Full = $false ) initCommand $Route = '/types/tags' if ($Full) { $Property = '' } $result = NewXtremRequest -Method GET -Endpoint $Route -Session $Session -Properties $Property -ObjectSelection $ObjectSelection -ShowRest:$ShowRest.IsPresent -Multi -Full:$Full.IsPresent $result = formatOutPut $Property $result finalizeCommand return $result } # Retrieves information about a Tag Function Get-XtremTag { <# .DESCRIPTION Retrieves information about a tag .PARAMETER TagName Name of the tag you would like information for .PARAMETER ShowRest Return an object represents the REST operation including URI , Method and JSON .EXAMPLE Get-XtremTag -TagName myTag -ObjectType Volume #> [cmdletbinding()] [Alias('xmsTagGet')] Param ( [Alias("Name", "Index")] [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)] [Argumentcompleter( { doComplete $args 'tags' name })] $TagName, [Parameter()] [Alias("Properties")] [Argumentcompleter( { doComplete $args 'tags' prop })] [string[]]$Property, [ValidateSet('Volume', 'ConsistencyGroup', 'Snapshot', 'SnapshotSet', 'InitiatorGroup', 'Initiator', 'Scheduler')] [string]$Entity, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [switch]$ShowRest ) initCommand $Route = '/types/tags' if ($TagName.GetType().Name -eq "String" -and $Entity -and $TagName -notlike "/$Entity/*") { $TagName = '/' + $Entity + '/' + $TagName } $Route, $GetProperty = SetParametersForRequest $Route $TagName $result = NewXtremRequest -Method GET -Endpoint $Route -Session $Session -ObjectSelection $ObjectSelection -GetProperty $GetProperty -Properties $Property -ShowRest:$ShowRest.IsPresent $result = formatOutPut $Property $result finalizeCommand return $result } Function New-XtremTag { <# .DESCRIPTION Enables you to create a Tag. .PARAMETER TagName Full path Tag name. .PARAMETER Entity The entity type asscoiated. .PARAMETER Color Tag Color .PARAMETER ShowRest Return an object represents the REST operation including URI , Method and JSON .EXAMPLE New-XtremTag -TagName mytag -Entity Snapshot #> [CmdletBinding()] [Alias('xmsTagCreate')] Param ( [Parameter(Mandatory = $true, Position = 1)] [ValidateSet('Volume', 'ConsistencyGroup', 'Snapshot', 'SnapshotSet', 'InitiatorGroup', 'Initiator', 'Scheduler')] [String]$Entity, [Alias("Name", "Index")] [Parameter(Mandatory = $True, ValueFromPipelineByPropertyName = $true, Position = 0)] [Argumentcompleter( { doComplete $args 'tags' name })] [ValidatePattern("^[^\[\]&\(\)`";,<>']+$")] [String]$TagName, [Parameter()] [ValidateSet('Green', 'Blue', 'Red', 'Yellow', 'Brown', 'Magenta', 'Cyan', 'Gray', 'DarkGray', 'Black', 'DarkYellow', 'DarkMagenta', 'DarkRed', 'DarkCyan', 'DarkGreen', 'DarkBlue')] [String]$Color, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest ) initCommand $Route = '/types/tags' $BodyList = @{ } AddIfExists -name "entity" -value $Entity -list $BodyList AddIfExists -name "tag-name" -value $TagName -list $BodyList AddIfExists -name "color" -value $Color -list $BodyList $Body = BuildXtremJson -list $BodyList $result = NewXtremRequest -Method POST -Endpoint $Route -Session $Session -Body $Body -ObjectSelection $ObjectSelection -ShowRest:$ShowRest.IsPresent finalizeCommand return $result } Function Remove-XtremTag { <# .DESCRIPTION Enables you to delete a Tag. .PARAMETER TagName Tag's name or index number .PARAMETER Entity Name of the entity .EXAMPLE Remove-XtremTag -TagName myTag -Entity Volume #> [CmdletBinding()] [Alias('xmsTagRemove')] Param ( [Alias("Name", "Index")] [Parameter(Mandatory = $true, Position = 0)] [Argumentcompleter( { doComplete $args 'tags' name })] $TagName, [Parameter(ValueFromPipelineByPropertyName = $true, Position = 1)] [ValidateSet('Volume', 'ConsistencyGroup', 'Snapshot', 'SnapshotSet', 'InitiatorGroup', 'Initiator', 'Scheduler')] [String]$Entity, [Parameter()] [bool]$Confirm = (Get-XtremDefaultSession)._XtremCLIMode, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest ) $confirmed = IsConfirmed $Confirm if (!$confirmed) { return } initCommand $Route = '/types/tags' if ($TagName.GetType().Name -eq "String" -and $Entity -and $TagName -notlike "/$Entity/*") { $TagName = '/' + $Entity + '/' + $TagName } $Route, $GetProperty = SetParametersForRequest $Route $TagName $result = NewXtremRequest -Method DELETE -Endpoint $Route -Session $Session -GetProperty $GetProperty -ShowRest:$ShowRest.IsPresent finalizeCommand return $result } Function Set-XtremTag { <# .DESCRIPTION Enables you to rename the selected tag, change color. .PARAMETER TagName Name or index of the tag you want to modify. .PARAMETER Entity Name of the entity .PARAMETER EntityDetails Entity's name or index number .EXAMPLE Set-XtremTag -TagName 7 -Entity Volume -NewTagName -ShowRest -EntityDetails Testing #> [CmdletBinding()] [Alias('xmsTagModify')] Param ( [Alias("Name", "Index")] [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)] [Argumentcompleter( { doComplete $args 'tags' name })] $TagName, [Parameter(ValueFromPipelineByPropertyName = $true, Position = 1)] [ValidateSet('Volume', 'ConsistencyGroup', 'Snapshot', 'SnapshotSet', 'InitiatorGroup', 'Initiator')] [String]$Entity, [Parameter()] [ValidatePattern("^[^\[\]&\(\)`";,<>']+$")] [String]$NewTagName, [Parameter()] [ValidateSet('Green', 'Blue', 'Red', 'Yellow', 'Brown', 'Magenta', 'Cyan', 'Gray', 'DarkGray', 'Black', 'DarkYellow', 'DarkMagenta', 'DarkRed', 'DarkCyan', 'DarkGreen', 'DarkBlue')] [String]$Color, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest ) initCommand $Route = '/types/tags' if (($TagName.GetType().Name -eq "String") -and $Entity -and ($TagName -notlike "/$Entity/*")) { $TagName = '/' + $Entity + '/' + $TagName } $Route, $GetProperty = SetParametersForRequest $Route $TagName $BodyList = @{ } AddIfExists -name "caption" -value $NewTagName -list $BodyList AddIfExists -name "color" -value $Color -list $BodyList $Body = BuildXtremJson -list $BodyList $result = NewXtremRequest -Method PUT -Endpoint $Route -Session $Session -Body $Body -GetProperty $GetProperty -XtremClusterName "" -ShowRest:$ShowRest.IsPresent finalizeCommand return $result } Function Set-XtremTagObject { <# .DESCRIPTION Enables you to tag an object. .PARAMETER TagName Name of the tag you would like to tag with. .PARAMETER Entity Name of the entity .PARAMETER EntityDetails Entity's name or index number .EXAMPLE Set-XtremTag -TagName 7 -Entity Volume -ShowRest -EntityDetails Testing #> [CmdletBinding()] [Alias('xmsTagApply')] Param ( [Alias("Name", "Index")] [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)] [Argumentcompleter( { doComplete $args 'tags' name })] $TagName, [Parameter(Position = 1)] [ValidateSet('Volume', 'ConsistencyGroup', 'Snapshot', 'SnapshotSet', 'InitiatorGroup', 'Initiator')] [String]$Entity, [Parameter()] [Argumentcompleter( { completeEntityName $args 'Entity' })] $EntityDetails, [Parameter()] [object]$Session = (Get-XtremDefaultSession), [Parameter()] [switch]$ShowRest ) initCommand $Route = '/types/tags' if ($TagName.GetType().Name -eq "String" -and $Entity -and $TagName -notlike "/$Entity/*") { $TagName = '/' + $Entity + '/' + $TagName } $Route, $GetProperty = SetParametersForRequest $Route $TagName $BodyList = @{ } AddIfExists -name "cluster-id" -value $XtremClusterName -list $BodyList AddIfExists -name "entity" -value $Entity -list $BodyList AddIfExists -name "entity-details" -value $EntityDetails -list $BodyList $Body = BuildXtremJson -list $BodyList $result = NewXtremRequest -Method PUT -Endpoint $Route -Session $Session -Body $Body -GetProperty $GetProperty -ShowRest:$ShowRest.IsPresent finalizeCommand return $result } Export-ModuleMember *-* -Alias * |