Public/Get-ArmorCompleteWorkload.ps1
function Get-ArmorCompleteWorkload { <# .SYNOPSIS Retrieves Armor Complete workloads. .DESCRIPTION Workloads and tiers are logical grouping tools for helping you organize your virtual machines and corresponding resources in your Armor Complete software-defined datacenters. Workloads contain tiers, and tiers contain virtual machines. Workloads are intended to help you describe the business function of a group of servers, such as 'My Secure Website', which could be useful for chargeback or showback to your customers, as well as helping your staff and the Armor Support teams understand the architecture of your environment. Tiers are intended to describe the application tiers within each workload. A typical three tiered application workload is comprised of presentation, business logic, and persistence tiers. Common labels for each are: web, application, and database respectively, but you can group your VMs however you choose. Returns a set of workloads that correspond to the filter criteria provided by the cmdlet parameters. .INPUTS System.UInt16 .INPUTS System.String .INPUTS System.Management.Automation.PSObject .NOTES - Troy Lindsay - Twitter: @troylindsay42 - GitHub: tlindsay42 .EXAMPLE Get-ArmorCompleteWorkload Retrieves the details for all workloads in the Armor Complete account that currently has context. .EXAMPLE Get-ArmorCompleteWorkload -ID 1 Retrieves the details for the workload with ID=1. .EXAMPLE Get-ArmorCompleteWorkload -Name 'LAMP stack' Retrieves the details for the workload with Name='LAMP stack'. .EXAMPLE 2, 'WISP stack' | Get-ArmorCompleteWorkload -ApiVersion 'v1.0' Retrieves the API version 1.0 details for the workloads with ID=2 and Name='WISP stack' via pipeline values. .EXAMPLE [PSCustomObject] @{ Name = 'Secure stack' } | Get-ArmorCompleteWorkload Retrieves the details for the workload with Name='Secure stack' via property name in the pipeline. .EXAMPLE [PSCustomObject] @{ ID = 1 } | Get-ArmorCompleteWorkload Retrieves the details for the workload with ID=1 via property name in the pipeline. .LINK https://tlindsay42.github.io/ArmorPowerShell/public/Get-ArmorCompleteWorkload/ .LINK https://github.com/tlindsay42/ArmorPowerShell/blob/master/Armor/Public/Get-ArmorCompleteWorkload.ps1 .LINK https://docs.armor.com/display/KBSS/Get+Workloads .LINK https://docs.armor.com/display/KBSS/Get+Workload .LINK https://developer.armor.com/#!/Infrastructure/App_GetAppList .LINK https://developer.armor.com/#!/Infrastructure/App_GetAppDetail .COMPONENT Armor Complete .FUNCTIONALITY Armor Complete infrastructure management #> [CmdletBinding( DefaultParameterSetName = 'ID' )] [OutputType( [ArmorCompleteWorkload[]] )] [OutputType( [ArmorCompleteWorkload] )] param ( # Specifies the ID of the Armor Complete workload. [Parameter( ParameterSetName = 'ID', Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true )] [ValidateRange( 1, 65535 )] [UInt16] $ID = 0, # Specifies the name of the Armor Complete workload. [Parameter( ParameterSetName = 'Name', Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true )] [AllowEmptyString()] [SupportsWildcards()] [String] $Name, # Specifies the API version for this request. [Parameter( Position = 1 )] [ValidateSet( 'v1.0', 'internal' )] [String] $ApiVersion = $Global:ArmorSession.ApiVersion ) begin { $function = $MyInvocation.MyCommand.Name Write-Verbose -Message "Beginning: '${function}' with ParameterSetName '$( $PSCmdlet.ParameterSetName )' and Parameters: $( $PSBoundParameters | Out-String )" Test-ArmorSession } process { [ArmorCompleteWorkload[]] $return = $null $resources = Get-ArmorApiData -FunctionName $function -ApiVersion $ApiVersion if ( $PSCmdlet.ParameterSetName -eq 'ID' -and $ID -gt 0 ) { $uri = New-ArmorApiUri -Endpoints $resources.Endpoints -IDs $ID } else { $uri = New-ArmorApiUri -Endpoints $resources.Endpoints } $keys = ( $resources.Query | Get-Member -MemberType 'NoteProperty' ).Name $parameters = ( Get-Command -Name $function ).Parameters.Values $uri = Add-ArmorApiUriQuery -Keys $keys -Parameters $parameters -Uri $uri $splat = @{ Uri = $uri Method = $resources.Method SuccessCode = $resources.SuccessCode } $results = Invoke-ArmorRestMethod @splat $filters = $resources.Filter | Get-Member -MemberType 'NoteProperty' $results = Select-ArmorApiResult -Results $results -Filters $filters if ( $results.Count -eq 0 -and $PSCmdlet.ParameterSetName -eq 'Name' ) { Write-Error -Message "Armor workload not found: Name: '${Name}'." } else { $return = $results } $return } end { Write-Verbose -Message "Ending: '${function}'." } } |