Created
August 26, 2017 01:57
-
-
Save trisharia/55a18615fac6c659e3e7524090efe605 to your computer and use it in GitHub Desktop.
Submit a catalog item request via vRA API in PowerShell
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# VMware vRealize Automation API sample in PowerSHell | |
# | |
# Submits a catalog item request via the vRA API | |
# | |
# For vRO 7.0+ | |
#set global variables | |
$baseUrl = 'https://vra01a.corp.local' | |
$vrauser = 'myuser' | |
$vrapass = 'mypassword' | |
$tenant = 'dev02' | |
$catalogItemName = 'HVD 7' | |
#connect to AppHost | |
$url = "$baseUrl/identity/api/tokens" | |
$req = [System.Net.WebRequest]::Create($url) | |
$req.Method ="POST" | |
$req.Contenttype = "application/json" | |
$Body = [byte[]][char[]] '{"username":"$vrauser","password":"$vrapass","tenant":"$tenant"}'; | |
$Stream = $req.GetRequestStream(); | |
$Stream.Write($Body, 0, $Body.Length); | |
$Stream.Flush(); | |
$Stream.Close(); | |
$response = $req.GetResponse(); | |
$reader = new-object System.IO.StreamReader($response.GetResponseStream()) | |
$stuff = $reader.ReadToEnd() | |
$obJson = $stuff | ConvertFrom-Json | |
$jID = $obJson.id | |
$jExpires = $obJson.expires | |
#get catalog item by name | |
$url = "$baseUrl/catalog-service/api/consumer/entitledCatalogItemViews?`$filter=name+eq+'$catalogItemName'" | |
$req = [System.Net.WebRequest]::Create($url) | |
$req.Method ="GET" | |
$req.Headers.Add('Authorization','Bearer ' + $jID) | |
$response = $req.GetResponse(); | |
$reader = new-object System.IO.StreamReader($response.GetResponseStream()) | |
$stuff = $reader.ReadToEnd() | |
$obJson = $stuff | ConvertFrom-Json | |
$arrContent = $obJson.content | select catalogItemId, name, description | Where-Object {$_.name -eq $catalogItemName} | |
$CatalogItemId = $arrContent.catalogItemId | |
# get catalog item template | |
$url = "$baseUrl/catalog-service/api/consumer/entitledCatalogItems/$CatalogItemId/requests/template" | |
$R=Invoke-WebRequest $url -Headers $headers | |
# modify the template as needed for the request | |
$Form = $R.Content | ConvertFrom-Json | |
$Form.data.vSphere_Machine_1.data.cpu = 8 | |
$Form.data.vSphere_Machine_1.data.memory = 8192 | |
#submit request | |
$url = "$baseUrl/catalog-service/api/consumer/entitledCatalogItems/$CatalogItemId/requests" | |
$cjson = $Form | ConvertTo-Json -Depth 10 | |
$K=Invoke-WebRequest $url -Headers $headers -Method POST -Body $cjson -ContentType "application/json" | |
if ($K.StatusCode -eq 201) {write-host "successful"} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi,
I tried to use this process but in my case, there are some properties defined in my business group. I expected to show them in the requests/template as it's the case when I use VRA portal. But it's not the case.
How can I merge subtenant properties with requests properties ?
Note that a simple user can not access to the subtenants info via "identity/api/tenants/{tenant}/subtenants".