Functions/Public/reservation-service/Set-vRAReservationStorage.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
function Set-vRAReservationStorage { <# .SYNOPSIS Set vRA reservation storage properties .DESCRIPTION Set vRA reservation storage properties .PARAMETER Id The Id of the reservation .PARAMETER Path The storage path .PARAMETER ReservedSizeGB The size in GB of this reservation .PARAMETER Priority The priority of storage .PARAMETER Enabled The status of the storage .INPUTS System.String. System.Int. System.Management.Automation.SwitchParameter .OUTPUTS System.Management.Automation.PSObject .EXAMPLE Get-vRAReservation -Name "Reservation01" | Set-vRAReservationStorage -Path "Datastore01" -ReservedSizeGB 20 -Priority 10 #> [CmdletBinding(SupportsShouldProcess,ConfirmImpact="High")][OutputType('System.Management.Automation.PSObject')] Param ( [parameter(Mandatory=$true,ValueFromPipelineByPropertyName)] [ValidateNotNullOrEmpty()] [String]$Id, [parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [String]$Path, [parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [Int]$ReservedSizeGB, [parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [Int]$Priority, [parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [Switch]$Enabled ) begin { } process { try { # --- Get the reservation $URI = "/reservation-service/api/reservations/$($id)" $Reservation = Invoke-vRARestMethod -Method GET -URI $URI $ReservationTypeName = (Get-vRAReservationType -Id $Reservation.reservationTypeId).name $ComputeResourceId = ($Reservation.extensionData.entries | Where-Object {$_.key -eq "computeResource"}).value.id # --- # --- Set Storage Properties # --- Write-Verbose -Message "Removing Storage From Reservation" $ReservationStoragePath = (Get-vRAReservationComputeResourceStorage -Type $ReservationTypeName -ComputeResourceId $ComputeResourceId -Name $Path).values.entries | Where-Object {$_.key -eq "storagePath"} $ReservationStoragePathId = $ReservationStoragePath.value.id $Storage = $Reservation.extensionData.entries | Where-Object {$_.key -eq "reservationStorages"} $StorageItems = $Storage.value.items foreach ($Item in $StorageItems) { $StoragePath = $item.values.entries | Where-Object {$_.key -eq "StoragePath"} if ($StoragePath.value.id -eq $ReservationStoragePathId) { if ($PSBoundParameters.ContainsKey("ReservedSizeGB")){ $StorageReservedSizeGB = $item.values.entries | Where-Object {$_.key -eq "storageReservedSizeGB"} Write-Verbose -Message "Setting Storage Reservation Size: $($StorageReservedSizeGB.value.value) >> $($ReservedSizeGB)" $StorageReservedSizeGB.value.value = $ReservedSizeGB } if ($PSBoundParameters.ContainsKey("Priority")){ $StorageReservationPriority = $item.values.entries | Where-Object {$_.key -eq "storageReservationPriority"} Write-Verbose -Message "Setting Storage Reservation Priority: $($StorageReservationPriority.value.value) >> $($Priority)" $StorageReservationPriority.value.value = $Priority } if ($PSBoundParameters.ContainsKey("Enabled")){ if ($Enabled) { $BoolAsString = "true" } else { $BoolAsString = "false" } $StorageEnabled = $item.values.entries | Where-Object {$_.key -eq "storageEnabled"} Write-Verbose -Message "Setting Storage Reservation Priority: $($StorageEnabled.value.value) >> $($BoolAsString)" $StorageEnabled.value.value = $BoolAsString } } } if ($PSCmdlet.ShouldProcess($Id)){ $URI = "/reservation-service/api/reservations/$($Id)" Write-Verbose -Message "Preparing PUT to $($URI)" # --- Run vRA REST Request Invoke-vRARestMethod -Method PUT -URI $URI -Body ($Reservation | ConvertTo-Json -Depth 100) -Verbose:$VerbosePreference | Out-Null } } catch [Exception]{ throw } } end { } } |