Navigation
CATEGORY: vCO

vCAC Day 2: Detach Linked Clone VM

This post will demonstrate another very cool day 2 operation, detaching a linked clone VM. Though I didn’t implement it as part of a customer engagement, it just occurred to me that this can be done with some of the great vCO / ASD Day 2 operations.
In vCAC, when creating a linked clone blueprint, one must properly design the hardware infrastructure underneath. Or more correctly, your underlying storage.

There are many storage considerations that needs to take place when designing a Dev / QA typed linked clone environment with vCAC, since vCAC unlike vCD, doesn’t currently abstract the underlying linked clone machine management.
While this is not an issue if planned correctly, performance hits are something that can always lurk behind dark corners, when many VMs are using the same Read-Only replica.

This, got me thinking. If vCAC doesn’t do any abstraction on the VM provisioning layer like vCD, you could actually detach, or inflate, a vCAC linked clone vm, with a simple API call to vSphere. Thus, turning the VM to a full-clone machine, totally non-dependent on the ‘source replica’ it was generated from.
This is also an API call generally available in vCD as well as a ‘Consolidate’ operation. It’s available in the vApp VM menu given the right permission, and that the VM is powered off. BUT, in vCD, if a VM is consolidated it still won’t be able to do stuff as hard disk resizing – while vCAC VMs – CAN!

Thus, the main difference though is that vCAC VMs , when detached from their linked-clone replicas, just turn into day to day vsphere VMs, while vCD VMs will still be under vCD’s ‘Hard’ management thus a bit more tricky to back up / restore etc, and still retain the OvDC Linked Clone policy in some forms.

The Technical Details

Essentially, the API call we are going to utilize is for a VC:VirtualMachine object. The method is called ‘promoteDisks_Task’ we can see in vCO, that this method accepts two parameters,an array of which disks do you want to promote, and whether to detach them from the link clone replica.

Screen Shot 2014-11-09 at 11.18.14

We’ll create a workflow for our Day 2 Op. Since the VM needs to be powered off during this operation, we will prompt the user for the best time for shut-down of his VM, by choosing an input of ‘date’ type (ASD will take care to present it automatically with a nice calendar. How cool is that?!) The second input for the workflow is the VM itself of course, of type VC:VirtualMachine.

With vCAC 6.1, we can create 2 workflows to run at separate cases, when the VM is Off, or On. The Off state workflow will not contain a date input, and the On Status workflow will. For this blog’s purpose, i’ll demonstrate only the On status workflow.

The workflow, will wait for the time specified by the user, then power off the VM grace fully, then, it will invoke the promote disks api call (we’ll get that in a second) and last it will wait for the generated task to end. Of course you can also opt to power the VM back on again.

Screen Shot 2014-11-06 at 18.12.15So what is in that scriptable task you ask? first , the scriptable takes in the VC:VirtualMachine parameter, and as out parameter has a VC:Task object (the task generated from promoting disks). The actual code that’s in there is:

[code]vcTask = vm.promoteDisks_Task(true)[/code]

This line of code will execute the promoteDisks task, on all of the VM disks, by specifying a null array, or only one parameter. Second parameter is ‘true’ for detaching disks (rather then just consolidating them).
Once the user will submit the request, vCO will do its thing, and by morning, that VM will turn into a regular boy! (VM!). The time this task takes may vary according to disk size, etc.

Once we have the workflow ready, we’ll configure it as an ‘On Status’ Day 2 operation like so:

Screen Shot 2014-11-15 at 12.24.16

 

And create an appropriate form for it:

Screen Shot 2014-11-17 at 11.41.12

As far as IaaS reservations , and policies for the user using up storage space, a check can be made to see if the VMs data store has enough room for the operation. Part from that, vCAC will actually calculate a full-disk usage on your reservation when you use linked-clones. This is due to the fact that linked clones are able to reach maximum VMDK size, thus , causing over allocation of their owner reservation. With this default method of calculating reservations, we can give our users the option to detach their VMs without worrying that their reservation will be over-subscribed.

As funny as it may seem, I couldn’t get a working vCAC system to demonstrate this fully and take screenshots, but really wanted to get this post out as soon as possible. I‘ll update it hopefully soon with the rest of the screenshots showing the VMs turning to full clones after the day 2 initiated.

Also, a thank you is deserved for Niran Even-Chen my VCDX friend for letting me use his 6.1 system, to take the screenshots above. Go check out his website – http://Cloud-Abstract.com

vCAC Day 2: Un-Archive VM

So, for a recent project of mine, I was requested with a cool ‘vCAC feature’ being able to archive, and un-archive a vCAC managed VM. I’ll explain the meaning behind the request.
Basically, the customer wanted to have his old VMs moved to low tier storage (SATA spindles), as part of the archiving process, in order to save on expensive storage, and of course for them to be able to back up ‘archived’ VMs in a certain manner, etc.
In order to achieve this, I leveraged two of vCAC’s abilities:

  • Use / Create a “Machine Expired” workflow stub.
  • Created a Day 2 Operation with vCO , to do a couple of things:
    • Storage vMotion the VM to its original datastore
    • Submit a lease extend request so the user won’t have to do two operations.

An “Expired” state workflow already exists in the vCAC stub workflow library, so its pretty simple to utilize it in order to trigger a storage vMotion operation to move an expired VM to a predefined storage location.
All we have to do next is to keep the original storage location in a custom property, for later use, to be able to get the VM to its original location.

I’ve created a custom property called “VirtualMachine.OriginalDatastore” and assigned it to my vSphere blueprints. What we need to do next is to write a vCO workflow to update that property with the VMs datastore ID when the machine’s expired, and also trigger a simple Storage vMotion to a predefined location (or an archive storage location that is decided by what ever logic you choose.

To trigger the expired vCO workflow, we can either use the vCAC Designer , or the vCO vCAC plugin (Extensibility pack.
I’ll cover doing this with the extensibiltiy pack. Simply copy the workflow template from the vCAC Extensibility package (vCAC -> Infrastructure Administration – > Extensibility) and generate a new workflow off of it.

Archive Flow

 

(Action is ‘addUpdatePropertyFromVirtualMachineEntity’)
As for the scriptable code:
Basically i’m just preparing variables needed to update the property on the expired VM.
After that, i’m updating the blueprints property to store it’s original location, and the I svMotion it to Archive Storage.

Now for the cooler part – Un-Archiving / Un-Expiring the VM. Here, we will create an ASD day 2 operation, that will:

  • Read the previous datastore data for that VM, locate the datastore object.
  • Storage vMotion the VM to its original datastore
  • Request a lease time extension on behalf of the user, so the VM won’t be ‘Expired’ anymore.

And here is how the workflow for it looks like:

Unarchive

 

First off, i’m receiving a VC:VirtualMachine object from the day 2 operation (the VM the user is requesting the operation on) so in the first activity I find the vCAC IaaS object that is that vCenter VM, with an action.
After that, I need to check if the machine is actually expired, since this day 2 is meant for ‘Expired’ VMs. This , BTW, can be avoided with vCAC 6.1, since I can expose the ‘Un-Archive’ Day 2 operation only when the VM status equals ‘expired’.

If the VM is in an ‘Expired’ state, I continue to read the ‘Pre Archive Datastore’ cusom property I put earlier on in the VM. After that, I get the VC:Datastore object of that datastore. Now, you can notice that if I don’t find that datastore, I ask the administrator what to do. He can opt to cancel the entire thing, or to continue extending the lease on the current VM ‘Archive’ datastore and let it power-on there.
If I find the datastore, I svMotion the virtual machine to its correct datastore. vCAC will pick this change on the next data collection cycle.

Lastly, I generate an action request to change the lease, to the user’s chosen date. This workflow, also takes a date variable as an input. This will prompt the user for a date, with a nice calendar UI in the Day 2 operation form.

Since I won’t be able to really show you how this is actually done in this context, i’ll link you to a very helpful community article written by one of our vCAC vCO plugin lead developers, that will help you to understand how to submit a request in vCAC using vCO.

I hope you enjoyed this article, leave your comments below!

vCloud Automation Center 6.1 GA – What’s New?

Now that vCloud Automation Center 6.1 is generally available (grab it!) we can go more into the details of whats new! I’ve been waiting for this release for quite some time, as it improved some nice things and set a standard for next versions. So are you ready? lets go!

 

Installation Changes Quick-guide

Some notable installation changes can be seen with this new version. In terms of install steps, they are still the same:

  1. vCAC SSO (Id Appliance / Windows Install / vCenter Server)
  2. vCAC VA (Clustered or not)
  3. vCAC IaaS (Distributed or not)

An important note regarding the identity appliance – Upgrades from 6.0.x will still need the <id appliance FQDN>:7444 format in the host name field, BUT a fresh install will not require the port, only the host FQDN.
On the vCAC appliance side – achieving HA is now a breeze. Simply install 2 vCAC VA Appliances, configure the primary one, and add a secondary to the cluster by clicking an “HA Mode” option. This will configure the Web app, and messaging for HA mode, PostgresSQL will still have to be configured manually.

vCAC VA HA

HA Mode in vCAC VA Configuration Page

As for the vCAC IaaS component, the installation of the components is pretty much the same, but a couple of things changed. .Net 4.5.1 is now the new IaaS operating framework, but you will also need Java 1.7 x64 or later to be installed on the db machine as well.

UPDATE: Looks like it might be the Manager server that specifically needs Java rather then the DB, I’ll re-check and update pre-req script soon.

The new pre-req checker will obviously warn you about this, also another tiny thing i’ve noticed – When you download java from Oracle, using a server box (an 2008 R2 for that matter) the Java you will get is an x86 one since IE is a 32 bit application, thus your computer is detected as such. So pay a good attention to which version of Java you download, since x64 is a must here.
The install script below will handle all pre-reqs, as well as attempt to download the Java 1.7 x64 and set JAVA_HOME (which is also required) for you.

After we’re done configuring everything, it’s time to login! At a first glance we can notice the vCAC UI got a nice minor revamp , showing the vCloud Suite colors & theme, and also a bit of a flat design. I like it overall.
Oh and another minor thing, you can now also access vCAC through –
https://vcac-host-fqdn/vcac/org/tenant (no more shell-ui-app, though it will work as a soft link)

New Features

vcac6 ui

New vCAC 6.1 UI

A major change that had to go deep into the vCAC 6.x code base was support for the standard i18n language codes, which includes some standard languages such as German, Japanese, Chinese and more. This is actually something coming all the way from Pat Gelsinger for all of the VMware products.

Enhanced NSX Support

This version of vCAC is mostly ‘the NSX version’ it brings some major improvements to the way multi-machine blueprints are deployed with complex networking and supports NSX in order to do so. A good example of this is the support for NSX features like:

  • Logical Switches
  • Distributed Logical Routers
  • Security Groups & policies
  • Distributed Firewall Rules
  • Load Balancers

Basically all of these improve a lot of the NSX functionality, for instance, the ability to utilize DLR enables us to deploy single-arm edge devices, with an internal link that serves as a gateway, and the external link is served by the ESXi DLR.

Also, vCAC 6.1 comes with a builtin vCO 5.5.2 Server, which contains by default, a new version of the NSX plugin for vCO! This is actually crucial in running some of the logic for vCAC / NSX integration, so if you configure vCAC for an external vCO IaaS endpoint, and plan to use NSX, be sure to install the NSX plugin on that vCO server!

This plugin will also enable you to perform some great day 2 operations on your VMs, like adding a machine to a load balanced configuration, or a security group.

ASD Capabilities

Add Day2

Add a new day2Op. Notice the ‘Status equals On’

Advanced Service Designer has been around since 6.0.x release, and VMware has extended some of the things it can perform. For example, you can now assign a day 2 operation to a VM on a VM filter basis.
This means that from now on you will be able to decide when does a VM shows its ASD Day 2 operations, according to its properties. For example, show a custom day 2 operation only if a VM is Powered On, since it is only relevant to that state of the VM.

You will also be able to filter-out operations to be displayed based on other parameters as well, kind of like the parameters available with approval policies.
Also, one of the problems with vCAC 6.x was the lack of ability to specify that a certain Day 2 operations is an ‘Un-provision’ operation. You had do delete the item off of vCO’s cache, and get vCAC to refresh its inventory as well. With the 6.1 ASD, you can specify whether a Day 2 operation is a ‘Provisioning’ one like lets say – clone a vCAC VM (and provision a second VM off of it) , or un-provisioning an ‘abstract’ item.

Last thing new and exciting about ASD is the ability to show output to the users from an ASD Day 2 operation! Meaning, you can have the output of the vCO workflow displayed to the user after the day 2 operation is done, if you need to let him know of a specific output. This is a lot nicer then an email in some cases.

Application Services

ApplicationsS

Application Services 6.1

As part of the vCAC 6.1 release, VMware’s former ‘App Director’ or now, Application Services , is also released in a new version. This version has better integration to vCAC , allowing for users to deploy fully blown multi tier apps as service catalog items.
Some of the new features include:

  • Resuming a failed App deployment
  • Multi tenancy support
  • Allowing for additional day 2 ops

Users will now be able to own the infrastructure holding the application requested from the ‘Application Services’ provider (unlike in vCAC 6.0.x) so they are easier to manage, from the central vCAC item portal.

Also, the new Application Services platform is more tightly integrated with puppet, to be able to deliver puppet configured platforms, enabling application teardown, scale in / scale out using the puppet nodes.

Infrastructure Bulk Import

vCloud Automation 6.1 now allows you to bulk import your existing infrastructure into vCAC’s management, with the help of CSV files. Although you could also import brownfield environments in 6.0.x using the infrastructure organizer, things would get complicated when you would try to import a lot of machine with multiple owners to multiple business groups. The bulk import tool comes to simplify all of that, and generates a much simpler importing flow for the end user / admin.

vCloud Automation Center CLI

vcaccli

vCAC CLI

This version of vCAC comes built in with a little tool called vCAC-CLI. It’ll help you do some rest operations on vCAC with ease, and allow you to get well formatted JSON responses when you perform GET operations. This tool is not ‘CloudClient’ as some of you may or may not know, but more of a vCAC cURL tool.
The tool is Java based, so you can use it from any client OS (Mac / Windows / Linux). You can download the vCAC-CLI tool directly from the vCAC Appliance.
Expect some more in-depth posts about this one later on.

vCloud Automation Center API

The fruits of the vCAC 6.0.x API have ripened and the vCloud Automation Center 6.1 exposes a fully blown Rest APIs accessible even without the help of our friend vCO !

XaaS & Dynamic Types Plugin

vCO 5.5.2 Dynamic Types plugin should now be in full sync with vCAC 6.1, allowing for users to create any vCO inventory item (and thus, a vCAC ASD item) off of services equipped with external REST/SOAP APIs … I’ll be fiddling with these capabilities soon, so expect some interesting updates in the posts to come. Meanwhile, you can check out this few guides at vCOTeam.Info to get your game going on new XaaS options and capabilities!

Downloads

vCAC XaaS: Requester Details

The next couple of posts will be more focused about some nice vCAC XaaS things i’ve been doing lately. This post is probably a good way to get to know some XaaS tips & tricks.
When you create an ASD Service – e.g – XaaS / Day 2 Operation, you can get some of requester details , which are handed to you by the ASD/XaaS engine. This comes in VERY handy.

How can this be used? Well, for an example, if you build a catalog item that grants the user with a Virtual Desktop, meaning, a Desktop-as-a-Service , you will be able to determine who you need to entitle the new desktop for – seamlessly.
No need to query the user for their details (user name, department ) you might just want to query what the desktop is used for and why , and that’s itץ Advanced Service Designer will automatically fill the gaps for you.

The information that is retrievable is:
– By whom the Request was made
– Who was the item/day 2 requested for (in case of an ‘On behalf of’ request
– Tenant reference (which in vCAC is the tenant name)
– Subtenant reference – The business group uuid
– The catalog request id
– Any static parameter that was inserted in the ASD form.

In order to get these essential parameters, all we have to do is to build our Day 2 / XaaS request as usual, but then we can achieve the data within the vCO workflow in to simple ways:
1. Download this vCO package, containing actions to get the parameters
2. In scriptable tasks, you can use the code I’ll exhibit below

This code is essentially the same that makes up the vCO Actions in the ASD package I linked – but i’ll break it down anyway for you lazies :)
vco asd actions

Essentially what we’re doing is just grabbing some info from the vCO server runtime, by using this code to get the ‘Requested For’ parameter

[code]
System.getContext().getParameter("__asd_requestedFor")
[/code]

What this piece of code will return, is basically the user name for the user who the requested XaaS , Day 2 Op is for, in a user@domain format.

This can also be used in conjunction to other parts of the vCAC plugin, grabbing useful business group information like the amount of Memory or Storage that the user’s business group is currently using. Though i’d generally recommend not to rely on implementing your own policy logic, and try to enforce business group policies through the IaaS engine when you can.

Again to break everything completely down, i’ll list the options of scriptable code writing in order to retrieve these details:

[code]
System.getContext().getParameter("__asd_requestedBy")
System.getContext().getParameter("__asd_catalogRequestId")
System.getContext().getParameter("__asd_subtenantRef")
System.getContext().getParameter("__asd_tenantRef)
[/code]

Also, you can notice that these variables automatically appear at vCO’s execution tokens. Taking a close look at the ‘variables section’ we can see them:
vco asd vars

So, start XaaS-ing and build awesome services and day 2 operations, extending your Private cloud with automated!
More blogposts are coming up on cool use cases where I used this XaaS capability. Any comments you have – Below!

Using vCAC 6.0 REST APIs – Part 1

vCloud Automation Center 6.x has a very extensive API that can allow you to automate everything done with your cloud. This ranges from auto creating new tenants, to auto generating catalog items & services. One could even ask to request a catalog item on behalf of another user defined in vCloud Automation Center. The thing is, is at the moment these API’s are considered in a beta state this is due to the fact that they are still under development in 6.0.x and that not all of the functionalities (as you’ll see soon) are still available.

Recently, VMware has released a vCO Plugin for vCAC, which consists of two parts:
– The IaaS ODATA API workflow interface
– A vCAC Appliance API workflow interface.

Interacting with vCAC API

For the purpose of this post, we will learn how to utilize the vCAC-VA APIs, which are the MAIN set of API’s exposed from vCAC to users. Thing is, in order to authenticate we will have to use the vCO Server + vCAC 6.x vCO Plugin , since the natural authentication mechanism isn’t yet exposed (remember? BETA APIs)

vco-vcac-rest

 

In this first of two-part series, i’ll demonstrate how to capture, and make sense of the JSON request generated by the vCAC UI. Next post, will discuss on how to utilize vCO and this JSON code, to generate new automated requests via REST calls.

Capturing the API Call


The first step here is to understand the JSON construct vCAC 6.0 requests (I’m assuming API usage of vCAC would be for using it to consume services like IaaS / ASD)

We’ll begin by downloading Firefox, and FireBug plugin. What firebug does, is to get in between the actual UI click and the HTTP REST call that the browser make. We can leverage this to easily poke around, and re-create some of the REST API calls! So lets dive deeper in the rabbit hole. We will open up our vCAC catalog , and request an item:
Requesting Deb6
We’ll need to enable firebug, and then click the submit button:
FIREBUGON
Once we do that, we’ll see the HTTP responses , GET and POST operations.

HTTP REST Requests

If we click the plus sign and open it, we will get the JSON code posted:

PostMakeRequest

Analyzing the Request’s JSON Code

if we grab the text and format it, we can make some sense out of it. I’ll put the formatted code here, in case you want to take a look, and analyze what we can do further down. An explanation on how to utilize this using vCO will follow.

[code lang=”js” collapse=”true” title=”Click to see full Item Request JSON Code (warning: it׳s a LONG one)”]
"@type": "CatalogItemRequest",
"catalogItemRef": {
"id": "e783893b-3068-498d-b5cc-3be78cf4742d",
"label": "Debian 6"
},
"organization": {
"tenantRef": "vmdemo",
"tenantLabel": "vmdemo.local",
"subtenantRef": "a88b5eb5-210f-4f25-b074-95475f599018",
"subtenantLabel": "Lab-BG"
},
"quote": {
"leasePeriod": null,
"leaseRate": {
"type": "moneyTimeRate",
"cost": {
"type": "money",
"currencyCode": null,
"amount": 177
},
"basis": {
"type": "timeSpan",
"unit": "DAYS",
"amount": 1
}
},
"totalLeaseCost": null
},
"requestedFor": "kushmaro@vmdemo.local",
"requestedBy": "kushmaro@vmdemo.local",
"requestorEntitlementId": "e2117850-88ed-4564-a8e8-6fff77e8fede",
"state": "SUBMITTED",
"requestData": {"entries": [
{
"key": "provider-Cafe.Shim.VirtualMachine.Description",
"value": {
"type": "string",
"value": ""
}
},
{
"key": "provider-blueprintId",
"value": {
"type": "string",
"value": "e0f0b0d0-681d-45ee-9dfe-5b3466b161ef"
}
},
{
"key": "provider-Cafe.Shim.VirtualMachine.Reason",
"value": {
"type": "string",
"value": ""
}
},
{
"key": "provider-Cafe.Shim.VirtualMachine.MaxCost",
"value": {
"type": "string",
"value": "177.0000"
}
},
{
"key": "provider-VirtualMachine.CPU.Count",
"value": {
"type": "integer",
"value": 1
}
},
{
"key": "provider-Cafe.Shim.VirtualMachine.NumberOfInstances",
"value": {
"type": "integer",
"value": 1
}
},
{
"key": "provider-Cafe.Shim.VirtualMachine.TotalStorageSize",
"value": {
"type": "decimal",
"value": 0
}
},
{
"key": "provider-__Notes",
"value": {
"type": "string",
"value": ""
}
},
{
"key": "provider-provisioningGroupId",
"value": {
"type": "string",
"value": "a88b5eb5-210f-4f25-b074-95475f599018"
}
},
{
"key": "provider-Cafe.Shim.VirtualMachine.MinCost",
"value": {
"type": "string",
"value": "177.0000"
}
},
{
"key": "provider-VirtualMachine.Disk0.Size",
"value": {
"type": "string",
"value": "16"
}
},
{
"key": "provider-Cafe.Shim.VirtualMachine.AssignToUser",
"value": {
"type": "string",
"value": "kushmaro@vmdemo.local"
}
},
{
"key": "provider-VirtualMachine.LeaseDays",
"value": {
"type": "integer",
"value": 0
}
},
{
"key": "provider-VirtualMachine.Memory.Size",
"value": {
"type": "integer",
"value": 1024
}
}
]},
"preApprovalId": null,
"postApprovalId": null,
"retriesRemaining": 3
}
[/code]

I’ll review some of the JSON Code above.
If we’ll look at the two first lines, we are able to see what type this JSON request is.

[code lang=”js”]
"@type": "CatalogItemRequest",
  "catalogItemRef":   {
    "id": "e783893b-3068-498d-b5cc-3be78cf4742d",
    "label": "Debian 6"
  },
 [/code]

As mentioned, this specific request is a catalog item request, referencing the specific id and name of the catalog item requested.
By changing these two parameters , and assuming we have multiple catalog items that look the same (in terms of request fields / input params) , we are able to easily shift our request from one item to the other. Like requesting a Red Hat VM or a Windows VM , all according to specific needs.

Next part of the code, depicts which BG & Tenant the request was made for:

[code lang=”js”]
"organization": {
"tenantRef": "vmdemo",
"tenantLabel": "vmdemo.local",
"subtenantRef": "a88b5eb5-210f-4f25-b074-95475f599018",
"subtenantLabel": "Lab-BG"
},
[/code]

The subtenantRef value is actually the Business group UUID within vCAC , and the tenantRef is the UUID kept for the tenant. vCAC keeps tenants by name, which represent a single UUID for the tenant.
Next comes an interesting part, specifying who is this requested for, and by whom:

[code lang=”js”]
"requestedFor": "kushmaro@vmdemo.local",
"requestedBy": "kushmaro@vmdemo.local",
"requestorEntitlementId": "e2117850-88ed-4564-a8e8-6fff77e8fede",
"state": "SUBMITTED",
[/code]

another part of the code determines who is the assigned user for the VM, its owner:

[code lang=”js”]
"key": "provider-Cafe.Shim.VirtualMachine.AssignToUser",
"value": {
"type": "string",
"value": "kushmaro@vmdemo.local"
[/code]

The ‘RequestedFor’ and ‘AssignToUser’ fields, indicates the user that this request is done on behalf of. This opens up some very nice possibilities, in automating requests for other users.
Lets say you want to perform a mass request automatically for new groups or users who joined the organization, or maybe a QA environment for each of your QE team’s members (hint: vCAC Devops Post), so that when they come to work, they have a new build ready for testing.
If you want the API Requested VM to be requested and assigned for a different user, you’ll have to change the ‘AssignToUser’ and ‘Requested For’ parameters for a user of your choice (having the proper entitlement).

Another interesting thing to notice here is the request state. A new request is tagged as submitted, while a request that’s been done is marked as completed.
This allows for tracking of the request, also with the help of a ‘phase’ field, that is non-existing at time of submitting the request.

Lastly comes the request details.
This part of the request details all of the item’s specific details, whether its customer properties, CPUs, Memory etc. For ASD requests , this would hold the ASD form values filled in by the user.

By modifying parameters below, we can easily set the CPU / Memory numbers for the specific request.

[code lang=”js”]
{
"key": "provider-VirtualMachine.Memory.Size",
"value": {
"type": "integer",
"value": 1024
}
{
"key": "provider-VirtualMachine.CPU.Count",
"value": {
"type": "integer",
"value": 1
}
[/code]

This concludes the first part of the vCAC6 REST API series, in the next part (coming soon!) i’ll demonstrate how to use vCO to regenerate a new API request, and help you automate vCAC for different purposes.
As always – Leave your comments below!