src/vbd.ps1
# SPDX-License-Identifier: Apache-2.0 $script:XO_VBD_FIELDS = "attached,bootable,device,is_cd_drive,position,read_only,uuid,`$pool" function ConvertTo-XoVbdObject { param( [Parameter(Mandatory, ValueFromPipeline, Position = 0)]$InputObject ) process { $props = @{ VbdUuid = $InputObject.uuid IsCdDrive = $InputObject.is_cd_drive ReadOnly = $InputObject.read_only } Set-XoObject $InputObject -TypeName XoPowershell.Vbd -Properties $props } } function Get-XoVbd { <# .SYNOPSIS Query VBDs by UUID or condition. .DESCRIPTION Get VBD details. You can specify VBDs by their UUIDs or properties. #> [CmdletBinding(DefaultParameterSetName = "Filter")] param ( # UUIDs of VBDs to query. [Parameter(Mandatory, ValueFromPipelineByPropertyName, Position = 0, ParameterSetName = "VbdUuid")] [ValidatePattern("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")] [Alias("`$VBDs")] [string[]]$VbdUuid, # Find VBDs that match the specified name substring. [Parameter(ParameterSetName = "Filter")] [string]$Name, # Filter to apply to the VBD query. [Parameter(ParameterSetName = "Filter")] [string]$Filter, # Find VBDs that match any of the specified tags. [Parameter(ParameterSetName = "Filter")] [ValidateNotNullOrEmpty()] [string[]]$Tag, # Maximum number of results to return. [Parameter(ParameterSetName = "Filter")] [int]$Limit = $script:XoSessionLimit ) begin { $params = @{ fields = $script:XO_VBD_FIELDS } } process { if ($PSCmdlet.ParameterSetName -eq "VbdUuid") { foreach ($id in $VbdUuid) { ConvertTo-XoVbdObject (Invoke-RestMethod -Uri "$script:XoHost/rest/v0/vbds/$id" @script:XoRestParameters -Body $params) } } } end { if ($PSCmdlet.ParameterSetName -eq "Filter") { $AllFilters = $Filter if ($Name) { $AllFilters = "$AllFilters name_label:`"$Name`"" } if ($Tag) { $tags = ($tag | ForEach-Object { "`"$_`"" }) -join " " $AllFilters = "$AllFilters tags:($tags)" } if ($AllFilters) { $params["filter"] = $AllFilters } if ($Limit) { $params["limit"] = $Limit } (Invoke-RestMethod -Uri "$script:XoHost/rest/v0/vbds" @script:XoRestParameters -Body $params) | ConvertTo-XoVbdObject } } } |