Functions/Public/reservation-service/New-vRAReservationNetworkDefinition.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 |
function New-vRAReservationNetworkDefinition { <# .SYNOPSIS Creates a new network definition for a reservation. .DESCRIPTION Creates a new network definition for a reservation. This cmdlet is used to create a custom complex network object. One or more of these can be added to an array and passed to New-vRAReservation. .PARAMETER Type The reservation type .PARAMETER ComputeResourceId The id of the compute resource .PARAMETER NetworkPath The network path .PARAMETER NetworkProfile The network profile .INPUTS System.String. .OUTPUTS System.Management.Automation.PSObject .EXAMPLE $NetworkDefinitionArray = @() $Network1 = New-vRAReservationNetworkDefinition -Type vSphere -ComputeResourceId 75ae3400-beb5-4b0b-895a-0484413c93b1 -Path "VM Network" -Profile "Test" $NetworkDefinitionArray += $Networ1 #> [CmdletBinding(SupportsShouldProcess,ConfirmImpact="Low",DefaultParameterSetName="Standard")][OutputType('System.Management.Automation.PSObject')] Param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [String]$Type, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [String]$ComputeResourceId, [Parameter(Mandatory=$true,ParameterSetName="Standard")] [ValidateNotNullOrEmpty()] [String]$NetworkPath, [Parameter(Mandatory=$false,ParameterSetName="Standard")] [ValidateNotNullOrEmpty()] [String]$NetworkProfile ) begin { } process { try { if ($PSCmdlet.ShouldProcess("ReservationNetworkDefinition")) { # --- Define object $NetworkDefinitionJSON = @" { "type": "complex", "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Network", "typeFilter": null, "values": { "entries": [] } } "@ # --- Convert the networkDefinition json to an object $NetworkDefinition = $NetworkDefinitionJSON | ConvertFrom-Json # --- Get network information $Network = Get-vRAReservationComputeResourceNetwork -Type $Type -ComputeResourceId $ComputeResourceId -Name $NetworkPath $Path = ($Network.values.entries | Where-Object {$_.key -eq "networkPath"}) # --- Add the network path to the network definition $NetworkDefinition.values.entries += $Path if ($NetworkProfile) { $Response = Invoke-vRARestMethod -Method GET -URI "/iaas-proxy-provider/api/network/profiles?`$filter=name%20eq%20'$($NetworkProfile)'" if ($Response.content.Count -eq 0) { throw "Could not find network profile with name $($NetworkProfile)" } $Profile = $Response.content[0] $NetworkProfileJSON = @" { "key": "networkProfile", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "$($Profile.id)", "label": "$($Profile.name)" } } "@ $Profile = $NetworkProfileJSON | ConvertFrom-Json # --- Add the network profile to the network definition $NetworkDefinition.values.entries += $Profile } $NetworkDefinition } } catch [Exception]{ throw } } end { } } |