Over the last two years I tried to become a so called VMware "vExpert". This award is really important to me cause it indicates what I have done for the community in the last years. As blog author, author of several white-paper and virtualization evangelist (virtual automation cult) this is a real honor.
So, thanks folks! :)
virtualization and automation focused blog. description and code examples for vCloud Automation Center, vCenter Orchestrator, VMware LabManager, vSphere, vCenter Server, vCloud Director and many more. white paper and code snippet platform for virtualization environments.
Tuesday, July 26, 2011
Wednesday, July 13, 2011
vCO - OUT-parameter serialization with JSON
Today I stumbled again delivering OUT-parameters with vCO. There is a main thing you have to know: vCO can´t serialize objects. So it isn´t easy to deliver key-paired values to external interfaces, cause if you use "Object" and "Any" as output you`ll get some errors.
Discussing this with some smart guys at the customer site they came up with a JSON description in the "Developers Guide" which is used for WebView. Typically I put all information in a nested Array/string to generate a machine readable output, but JSON could be an alternative.
I started searching with the API Explorer for "JSON" and I found one action:
Discussing this with some smart guys at the customer site they came up with a JSON description in the "Developers Guide" which is used for WebView. Typically I put all information in a nested Array/string to generate a machine readable output, but JSON could be an alternative.
I started searching with the API Explorer for "JSON" and I found one action:
- objectToJson (includes the "serialize" action)
what describes exactly what I want to do.
So here is a little example vm(VC:VirtualMachine) ist IN-Parameter, param(string) is OUT-parameter:
var Specs = new Object();
Specs["vmName"] = vm.name;
Specs["vmId"] = vm.id;
Specs["vmNumCpus"] = vm.summary.config.numCpu;
Specs["vmMemorySize"] = vm.summary.config.memorySizeMB;
Specs["vmPowerState"] = vm.runtime.PowerState.value;
Specs["vmIpAddress"] = vm.guest.ipAddress;
Specs["vmMacAddress"] = NicObject.macAddress;
Specs["vmGuestHeartbeatStatus"] = vm.summary.quickStats.guestHeartbeatStatus.value;
Specs["vmGuestMemoryUsage"] = vm.summary.quickStats.guestMemoryUsage;
Specs["vmOverallCpuUsage"] = vm.summary.quickStats.overallCpuUsage;
Specs["vmUptime"] = vm.summary.quickStats.uptimeSeconds/3600;
for(i in vm.guest.disk){
if(vm.guest.disk.capacity != undefined){
System.log(vm.guest.disk.capacity);
Specs["vmDiskCapacity"] = vm.guest.disk.capacity;
}
else{
Specs["vmDiskCapacity"] = "undefined";
}
if(vm.guest.disk.freeSpace != undefined){
System.log(vm.guest.disk.freeSpace);
Specs["vmDiskFreeSpace"] = vm.guest.disk.freeSpace;
}
else{
Specs["vmDiskFreeSpace"] = "undefined";
}
}
param = System.getModule("com.vmware.web.webview").objectToJson(Specs) ;
The easiest way to validate the code is JSONlint (http://jsonlint.com). Please keep in mind that the JSON definition does not know "undefined" as type (http://en.wikipedia.org/wiki/JSON). So you need to catch it up and change it into a string or sort it out.
Hope this helps.
Labels:
java,
JavaScript,
JSON,
OUT,
output,
Parameter,
serialize,
serilization,
vCO
Subscribe to:
Posts (Atom)