<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEUHSXw8eCp7ImA9WhFSEU0.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595</id><updated>2013-06-13T08:50:38.270+02:00</updated><category term="logging" /><category term="serilization" /><category term="chain length" /><category term="bug" /><category term="free" /><category term="vExpert" /><category term="VMworld" /><category term="SOAP client" /><category term="new" /><category term="SOAP plug-in" /><category term="reserve" /><category term="boot image" /><category term="vcenter appliance" /><category term="OOTB" /><category term="ip" /><category term="vmx" /><category term="powershell" /><category term="vSphere 4.1" /><category term="web client" /><category term="configs" /><category term="VcOptionValue" /><category term="vSphere API" /><category term="VcOptionValues" /><category term="vmware orchestrator bug Andreas Diemer" /><category term="bus" /><category term="2008" /><category term="Auto deploy" /><category term="Altiris SDK" /><category term="Andreas" /><category term="PowerCLI" /><category term="scripting" /><category term="Extensibility" /><category term="Altiris DS" /><category term="host.login" /><category term="updateOptions" /><category term="java" /><category term="appliance" /><category term="HDS" /><category term="PyvCO" /><category term="int" /><category term="bus id" /><category term="output" /><category term="Array" /><category term="VMware" /><category term="consolidation" /><category term="second SCSI controller" /><category term="VclHost" /><category term="workspaces" /><category term="custom property" /><category term="error" /><category term="vCloud" /><category term=".NET" /><category term="premature end of file" /><category term="ruby" /><category term="VMX automation" /><category term="vCO 5.1" /><category term="client" /><category term="kb" /><category term="TFTP" /><category term="cloud service" /><category term="vCD automation" /><category term="consolidate" /><category term="secure" /><category term="text file" /><category term="jQuery UI" /><category term="Altiris automation" /><category term="web complexity" /><category term="ports" /><category term="Oracle" /><category term="boot order" /><category term="port-group" /><category term="interface" /><category term="defaultPortConfig" /><category term="MTU" /><category term="cacerts" /><category term="plugin" /><category term="DVS" /><category term="Jumbo Frames" /><category term="vCD" /><category term="Parameter" /><category term="access" /><category term="SSL" /><category term="programming language" /><category term="OptionValue" /><category term="firewall" /><category term="JSON" /><category term="boot device" /><category term="SCSI Controller" /><category term="Cluster" /><category term="vb .net" /><category term="vCO" /><category term="SCSI" /><category term="long" /><category term="Christian Johannsen" /><category term="operation" /><category term="vSphere 5" /><category term="connection lost" /><category term="dvportsetting" /><category term="login" /><category term="second bus" /><category term="ESXi" /><category term="deployment" /><category term="dvPortGroup" /><category term="Workflow Solution" /><category term="migration" /><category term="post" /><category term="txt" /><category term="Distributed Virtual Switch" /><category term="vb" /><category term="vcap" /><category term="PHP" /><category term="vCAC 5.1" /><category term="VM config" /><category term="Database" /><category term="vSphere 5.1" /><category term="sql express" /><category term="credentials" /><category term="Altiris" /><category term="server" /><category term="ip address" /><category term="vCloud API" /><category term="unzip" /><category term="keystore" /><category term="problem" /><category term="VMX parameter" /><category term="organizations" /><category term="installation" /><category term="uplink" /><category term="workflowName" /><category term="rights" /><category term="plug-in" /><category term="dvPort" /><category term="vcap-dca" /><category term="vCenter Server Appliance" /><category term="c#" /><category term="troubleshooting" /><category term="WebClient" /><category term="values" /><category term="graylog" /><category term="PXE" /><category term="web portal" /><category term="vCloud Automation Center" /><category term="web service" /><category term="roles" /><category term="performance" /><category term="Active-Directory" /><category term="float" /><category term="vCenter Orchestrator" /><category term="x64" /><category term="vCAC" /><category term="web.config" /><category term="add host" /><category term="workflow call" /><category term="vSM" /><category term="Portal" /><category term="AdvancedSettings" /><category term="AAM" /><category term="vCenter" /><category term="datastore" /><category term="XML" /><category term="language" /><category term="vLM auomation" /><category term="Diemer" /><category term="role" /><category term="vmx options" /><category term="regular expression" /><category term="graylog2" /><category term="custom properties" /><category term="HA" /><category term="integration" /><category term="dunes" /><category term="find vlanId" /><category term="OUT" /><category term="certificate" /><category term="configurations" /><category term="automation" /><category term="JavaScript" /><category term="serialize" /><category term="phyton" /><category term="wavemaker" /><category term="java.util" /><category term="workflow" /><category term="organization" /><category term="fast" /><category term="vCloud Director" /><category term="ESX" /><category term="vlan id" /><category term="calendar picker" /><category term="switch" /><category term="PortGroup" /><category term="Altiris ASDK" /><category term="WSDL" /><category term="Orchestrator" /><category term="ldap" /><category term="physical" /><category term="perfmon" /><category term="LabManager" /><category term="ldaps" /><category term="dvSwitch" /><category term="class" /><category term="self-service" /><category term="domain" /><category term="vCO reference" /><category term="csv" /><category term="suds" /><category term="Cisco UCS" /><category term="cloud portal" /><category term="http://www.blogger.com/img/blank.gif" /><category term="REST" /><category term="orchestration" /><category term="vCAC 4.5" /><category term="syslog" /><category term="experience" /><category term="vApp" /><category term="vLM" /><category term="name" /><category term="API" /><category term="VMware Service Manager" /><category term="keytool" /><category term="SOAP" /><category term="stateless ESXi" /><category term="Webservice" /><category term="RegExp" /><category term="feature" /><category term="call" /><category term="Hitachi" /><category term="in-parameter" /><category term="BlueARC" /><category term="vLM automation" /><category term="https" /><category term="AD" /><category term="zip" /><title>mighty virtualization</title><subtitle type="html">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.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://mighty-virtualization.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>67</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MightyVirtualization" /><feedburner:info uri="mightyvirtualization" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkcNQnY9fSp7ImA9WhBUGEs.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-1376460151673358117</id><published>2013-05-06T21:21:00.000+02:00</published><updated>2013-05-06T21:21:33.865+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-06T21:21:33.865+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vSM" /><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director" /><category scheme="http://www.blogger.com/atom/ns#" term="vLM automation" /><category scheme="http://www.blogger.com/atom/ns#" term="configs" /><category scheme="http://www.blogger.com/atom/ns#" term="vLM" /><category scheme="http://www.blogger.com/atom/ns#" term="migration" /><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Automation Center" /><category scheme="http://www.blogger.com/atom/ns#" term="organizations" /><category scheme="http://www.blogger.com/atom/ns#" term="VMware Service Manager" /><category scheme="http://www.blogger.com/atom/ns#" term="vCAC" /><category scheme="http://www.blogger.com/atom/ns#" term="workspaces" /><category scheme="http://www.blogger.com/atom/ns#" term="configurations" /><title>vCloud Automation Center -  a LabManager "rebirth"?</title><content type="html">This week i had a very interesting conversation with a fellow at VMware. We talked about LabManager migrations and my experience in customer environments, when i was a consultant. There were two stages of migrations from VMware LabManager to vCloud Director in the past:&lt;br /&gt;
&lt;br /&gt;
1. The organizational and administrative design&lt;br /&gt;
2. The migration of the virtual environment&lt;br /&gt;
&lt;br /&gt;
The first one wasn´t easy to define, especially in large environments, caused by the different layers of administration. In VMware LabManager we had:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Workspaces&lt;/li&gt;
&lt;li&gt;Organizations&lt;/li&gt;
&lt;li&gt;Configurations&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
In vCloud Director we have:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Organizations&amp;nbsp;&lt;/li&gt;
&lt;li&gt;vApps&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
So there is an organizational layer missed. To be honest, there is one: the SYSTEM organization, but: you can´t limit the administrator account. So there is no chance to give the SYSTEM organization to the end-user or customer.&lt;br /&gt;
&lt;br /&gt;
In fact the migration from VMware LabManager to vCloud Director needs to compromise.&lt;br /&gt;
&lt;br /&gt;
The migration of the virtual machines wasn´t easy too, because you needed to enable the virtual machine operations in the VMware LabManager database what doesn´t sounds good without a tested and released tool.&lt;br /&gt;
&lt;br /&gt;
Using vCloud Automation Center since the last DynamicOps version we talked about the administrative layers and a possible implementation. After a few minutes i thought that this could be the answer to the organizational migration of LabManager including Self-Service, API support (REST) and different endpoints (vSphere, vCloud) without administer "real" resources in vCloud Director as a SYSTEM administrator.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-dUkoNgznbm8/UYdaNrEahmI/AAAAAAAAAag/7AO5NYLnSxc/s1600/Screen+Shot+2013-05-06+at+9.22.01+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://3.bp.blogspot.com/-dUkoNgznbm8/UYdaNrEahmI/AAAAAAAAAag/7AO5NYLnSxc/s400/Screen+Shot+2013-05-06+at+9.22.01+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this combination of resources delivered by the "internal IT" you are now able to create your own business logic for your lab environments. Starting with the Enterprise Groups to add resources to your environment you are able to build your Provisioning Group (like Workspaces in LabManager):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-0CfiZXp-Au8/UYdbHhxdU_I/AAAAAAAAAas/FAMrZoAIU6A/s1600/Screen+Shot+2013-05-06+at+9.16.52+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="231" src="http://3.bp.blogspot.com/-0CfiZXp-Au8/UYdbHhxdU_I/AAAAAAAAAas/FAMrZoAIU6A/s320/Screen+Shot+2013-05-06+at+9.16.52+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Based on those you can add Resource Reservations for this particular group:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-tnKu9SqZ_Ys/UYdbg9l4RTI/AAAAAAAAAa0/6mo2FW3qqBQ/s1600/Screen+Shot+2013-05-06+at+9.18.04+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-tnKu9SqZ_Ys/UYdbg9l4RTI/AAAAAAAAAa0/6mo2FW3qqBQ/s320/Screen+Shot+2013-05-06+at+9.18.04+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And with all that in place you can now add the Blueprints (like Configurations in LabManager):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-Xphc-MRuDz0/UYdbzh4RmtI/AAAAAAAAAa8/caHb9SrSxzM/s1600/Screen+Shot+2013-05-06+at+9.19.54+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" src="http://2.bp.blogspot.com/-Xphc-MRuDz0/UYdbzh4RmtI/AAAAAAAAAa8/caHb9SrSxzM/s320/Screen+Shot+2013-05-06+at+9.19.54+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With the Self-Service Portal in vCloud Automation Center you are now able to control (based on the rights) the virtual machines, making snapshots or destroy them.&lt;br /&gt;
&lt;br /&gt;
As you can see this is just a simple example, not explaining API methods or workflow enhancements (Microsoft TFS integration for example) but it should be a good way to "upgrade" your LabManager to a broader audience.&lt;br /&gt;
&lt;br /&gt;
Feel free to ask in the comments :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/0NidGk_ktnM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/1376460151673358117/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2013/05/vcloud-automation-center-labmanager.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/1376460151673358117?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/1376460151673358117?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/0NidGk_ktnM/vcloud-automation-center-labmanager.html" title="vCloud Automation Center -  a LabManager &quot;rebirth&quot;?" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-dUkoNgznbm8/UYdaNrEahmI/AAAAAAAAAag/7AO5NYLnSxc/s72-c/Screen+Shot+2013-05-06+at+9.22.01+AM.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2013/05/vcloud-automation-center-labmanager.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcGRnY7fSp7ImA9WhBVF00.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-7547282920932798462</id><published>2013-04-23T09:43:00.003+02:00</published><updated>2013-04-23T09:43:47.805+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-23T09:43:47.805+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="custom property" /><category scheme="http://www.blogger.com/atom/ns#" term="call" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="custom properties" /><category scheme="http://www.blogger.com/atom/ns#" term="in-parameter" /><category scheme="http://www.blogger.com/atom/ns#" term="workflow call" /><category scheme="http://www.blogger.com/atom/ns#" term="values" /><category scheme="http://www.blogger.com/atom/ns#" term="vCAC" /><category scheme="http://www.blogger.com/atom/ns#" term="Parameter" /><title>Using vCAC custom properties as vCO inputs</title><content type="html">Based on the excellent blog post at &lt;a href="http://www.vcoteam.info/learn-vco/remove-computer-from-ad-using-vco-during-vcac-decommission.html"&gt;vcoteam.info&lt;/a&gt; describing the decommission of services with vCenter Orchestrator integration, I searched for an option to deliver input values for workflows from vCAC to vCO.&lt;br /&gt;
&lt;br /&gt;
A big thanks goes to my fellow Adam Bohle for providing me the essential answer :)&lt;br /&gt;
&lt;br /&gt;
The "Extensibility Guide" describes different ExternalWFStubs for some states of the service lifecycle.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-GImIDu_hfUE/UXYyy02GOTI/AAAAAAAAAYQ/siTCgPKBAjo/s1600/Screen+Shot+2013-04-23+at+9.05.24+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="105" src="http://4.bp.blogspot.com/-GImIDu_hfUE/UXYyy02GOTI/AAAAAAAAAYQ/siTCgPKBAjo/s320/Screen+Shot+2013-04-23+at+9.05.24+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So this is where you can access external systems using the vCloud Automation Design Center. So the first step is to build or enhance a blueprint adding the ExternalWFStubXXX property. In my case I used the ExternalWFStubs.MachineProvisioned.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-r_Q-I1jDb7E/UXY1T93v80I/AAAAAAAAAYg/ky8kW-JwSFk/s1600/Screen+Shot+2013-04-23+at+9.15.35+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="66" src="http://3.bp.blogspot.com/-r_Q-I1jDb7E/UXY1T93v80I/AAAAAAAAAYg/ky8kW-JwSFk/s400/Screen+Shot+2013-04-23+at+9.15.35+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next step is to add a new custom property "ValueToReceive" and let the user make some input (User Prompt = Yes).&lt;br /&gt;
&lt;br /&gt;
So this was all from the vCAC side!&lt;br /&gt;
&lt;br /&gt;
In vCO I designed a little workflow finding the virtual machine object with the vmName as IN-Parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-yt7O9SqmPnI/UXY2KBFzCwI/AAAAAAAAAYo/6E68vLuSVCE/s1600/Screen+Shot+2013-04-23+at+9.19.46+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://4.bp.blogspot.com/-yt7O9SqmPnI/UXY2KBFzCwI/AAAAAAAAAYo/6E68vLuSVCE/s320/Screen+Shot+2013-04-23+at+9.19.46+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So in my case the value to receive is the vmName the user enters in the vCAC wizard. So let´s check out the vCAC Design Center workflow. First you have to "Load" the actual release of the WFStubMachineProvisioned workflow:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-NAWHa9A8rtQ/UXY2tV5OKGI/AAAAAAAAAYw/7dRb8PlT0iE/s1600/Screen+Shot+2013-04-23+at+9.21.56+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://3.bp.blogspot.com/-NAWHa9A8rtQ/UXY2tV5OKGI/AAAAAAAAAYw/7dRb8PlT0iE/s320/Screen+Shot+2013-04-23+at+9.21.56+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can double click the "Custom Code" part of the loaded workflow and add two more variables: vmName (String) and VM (VirtualMachine).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-bU_3b9fqvAI/UXY3TRX5zNI/AAAAAAAAAY4/IIFMHli8INU/s1600/Screen+Shot+2013-04-23+at+9.24.05+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="47" src="http://4.bp.blogspot.com/-bU_3b9fqvAI/UXY3TRX5zNI/AAAAAAAAAY4/IIFMHli8INU/s400/Screen+Shot+2013-04-23+at+9.24.05+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next step is to drag a "GetMachineProperty" element next to the "Start" element and open it with a double click:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-dqMH3oNI3B4/UXY3jDsD2OI/AAAAAAAAAZA/7gvs1X7hgnc/s1600/Screen+Shot+2013-04-23+at+9.23.48+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="142" src="http://4.bp.blogspot.com/-dqMH3oNI3B4/UXY3jDsD2OI/AAAAAAAAAZA/7gvs1X7hgnc/s320/Screen+Shot+2013-04-23+at+9.23.48+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enter the values as shown in the screen and go back to the Custom Code (Navigation on top of the workflow).&lt;br /&gt;
&lt;br /&gt;
Now drag the "InvokevCOworkflow" element next to the "GetMachineProperty" element, browse for the vCO workflow we designed first and enter "vmName" as Input and "myVm" as Output:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-AMFa9dqSVos/UXY4FCtqnpI/AAAAAAAAAZI/DoOxXlD417c/s1600/Screen+Shot+2013-04-23+at+9.27.09+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-AMFa9dqSVos/UXY4FCtqnpI/AAAAAAAAAZI/DoOxXlD417c/s320/Screen+Shot+2013-04-23+at+9.27.09+AM.png" width="304" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can connect every step and you will see if there is any error. In my case I had to enter "virtualMachineId" in the VirtualMachineId field on the right upper side for the "InvokevCOworkflow" element:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-hbTTZDtPaiU/UXY4sRO14xI/AAAAAAAAAZQ/qzOTwHCJqyE/s1600/Screen+Shot+2013-04-23+at+9.30.47+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://3.bp.blogspot.com/-hbTTZDtPaiU/UXY4sRO14xI/AAAAAAAAAZQ/qzOTwHCJqyE/s320/Screen+Shot+2013-04-23+at+9.30.47+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When everything is okay (no error messages) you can now press the "Load" button and give the new workflow release a description. With this step the workflow is updated.&lt;br /&gt;
&lt;br /&gt;
After the configuration you can now deploy a virtual machine ("Windows XP instance" in my environment) from the enhanced blueprint and the wizard will ask for a custom property called "ValueToReceive":&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Dnkkl92H4vM/UXY5kSSUtcI/AAAAAAAAAZc/YAGmRBInRTE/s1600/Screen+Shot+2013-04-23+at+9.34.14+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="226" src="http://3.bp.blogspot.com/-Dnkkl92H4vM/UXY5kSSUtcI/AAAAAAAAAZc/YAGmRBInRTE/s320/Screen+Shot+2013-04-23+at+9.34.14+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So this is the value our vCO workflow should receive. Keep in mind that this is just a functional example. You can do this with every option you want to provide ("Backup Network", "Additional Tools" etc.) to a vCO workflow.&lt;br /&gt;
&lt;br /&gt;
When the machine is provisioned there should be a new workflow run with your value :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-gsED8coAFVs/UXY7BkwGJfI/AAAAAAAAAZo/8afcypHSqrE/s1600/Screen+Shot+2013-04-23+at+9.39.33+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="90" src="http://3.bp.blogspot.com/-gsED8coAFVs/UXY7BkwGJfI/AAAAAAAAAZo/8afcypHSqrE/s400/Screen+Shot+2013-04-23+at+9.39.33+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Simple, isn´t it?&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/5B8TWxwYIKo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/7547282920932798462/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2013/04/using-vcac-custom-properties-as-vco.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/7547282920932798462?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/7547282920932798462?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/5B8TWxwYIKo/using-vcac-custom-properties-as-vco.html" title="Using vCAC custom properties as vCO inputs" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-GImIDu_hfUE/UXYyy02GOTI/AAAAAAAAAYQ/siTCgPKBAjo/s72-c/Screen+Shot+2013-04-23+at+9.05.24+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2013/04/using-vcac-custom-properties-as-vco.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4FQHw7eCp7ImA9WhBQEUg.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-6209167964610051844</id><published>2013-03-12T17:11:00.001+01:00</published><updated>2013-03-13T06:01:51.200+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-13T06:01:51.200+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="vb" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Automation Center" /><category scheme="http://www.blogger.com/atom/ns#" term="workflow" /><category scheme="http://www.blogger.com/atom/ns#" term="vCAC" /><category scheme="http://www.blogger.com/atom/ns#" term="Workflow Solution" /><category scheme="http://www.blogger.com/atom/ns#" term="Extensibility" /><title>vCAC and vCO - a perfect match?!</title><content type="html">Why is vCAC important to vCO you may ask... Because it´s the missing piece you need for intelligent rules, lifecycle management and role-based cloud usage!&lt;br /&gt;
Yes, you can build this with WaveMaker and any other Frontend, but you have to build the "business intelligence" and that´s what makes it really hard (trust me, I had several projects in the past).&lt;br /&gt;
&lt;br /&gt;
So vCloud Automation Center allows you to provision VM´s and vApps in vSphere and vCloud environments based on roles and business groups. Sometimes this is enough. But, what if you want to integrate 3rd party systems, well know vCO workflows or partner applications based on vCO?&lt;br /&gt;
&lt;br /&gt;
You can follow this excellent post, Tom O´Rourke and Joe Sarabia have written:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://clearascloud.blogspot.de/2013/03/vmware-vco-workflows-integration-with.html"&gt;http://clearascloud.blogspot.de/2013/03/vmware-vco-workflows-integration-with.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
One thing that I missed to have a perfect match was the return value of the workflows. So I wanted to have the result displayed with the VM or in the self-service portal. So I checked for the options in the vCAC Designer and enhance the workflow with an additional option called &lt;i&gt;"LogMachineEvent"&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-cDdU1zBkMtE/UT9RnDiFMqI/AAAAAAAAAXg/IYY1GL4lCWE/s1600/Screen+Shot+2013-03-12+at+5.01.58+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="208" src="http://3.bp.blogspot.com/-cDdU1zBkMtE/UT9RnDiFMqI/AAAAAAAAAXg/IYY1GL4lCWE/s320/Screen+Shot+2013-03-12+at+5.01.58+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So I attached this WF element at the end and filled it with several parameters:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-A8yKaBQDt68/UT9R5lcBa7I/AAAAAAAAAXo/WQd8VBdInpY/s1600/Screen+Shot+2013-03-12+at+5.03.26+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="175" src="http://4.bp.blogspot.com/-A8yKaBQDt68/UT9R5lcBa7I/AAAAAAAAAXo/WQd8VBdInpY/s320/Screen+Shot+2013-03-12+at+5.03.26+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In my case the word "Ergebnis" (german for result) should be shown as info log message in the user´s selfservice portal. After uploading and xml/blueprint submission I was able to select the "Invoke vCO" option:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-R30ljVUmXdA/UT9TTSqmM3I/AAAAAAAAAYA/uzkcYN7aMvA/s1600/Screen+Shot+2013-03-12+at+5.07.14+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://4.bp.blogspot.com/-R30ljVUmXdA/UT9TTSqmM3I/AAAAAAAAAYA/uzkcYN7aMvA/s320/Screen+Shot+2013-03-12+at+5.07.14+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and received the result in my "recent events" log:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-k4l0rQhaARQ/UT9SzgGT-CI/AAAAAAAAAXw/NI5dy4ZWv20/s1600/Screen+Shot+2013-03-12+at+5.06.52+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://1.bp.blogspot.com/-k4l0rQhaARQ/UT9SzgGT-CI/AAAAAAAAAXw/NI5dy4ZWv20/s320/Screen+Shot+2013-03-12+at+5.06.52+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So just try it and it will become the perfect match :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/NBtmsd1s4I4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/6209167964610051844/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2013/03/vcac-and-vco-perfect-match.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/6209167964610051844?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/6209167964610051844?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/NBtmsd1s4I4/vcac-and-vco-perfect-match.html" title="vCAC and vCO - a perfect match?!" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-cDdU1zBkMtE/UT9RnDiFMqI/AAAAAAAAAXg/IYY1GL4lCWE/s72-c/Screen+Shot+2013-03-12+at+5.01.58+PM.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2013/03/vcac-and-vco-perfect-match.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUGQXs7cSp7ImA9WhNRGUo.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-2460961770648448347</id><published>2012-11-15T11:50:00.001+01:00</published><updated>2012-11-15T12:17:00.509+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-15T12:17:00.509+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="web.config" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="self-service" /><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Automation Center" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud portal" /><category scheme="http://www.blogger.com/atom/ns#" term="Portal" /><category scheme="http://www.blogger.com/atom/ns#" term="vCAC 5.1" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery UI" /><category scheme="http://www.blogger.com/atom/ns#" term="c#" /><category scheme="http://www.blogger.com/atom/ns#" term="calendar picker" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="vCAC" /><category scheme="http://www.blogger.com/atom/ns#" term="vCAC 4.5" /><title>vCAC - vCloud Automation Center UI customization</title><content type="html">At the VMworld 2012 the vCloud Suite bundle was announced. Within this new suite package a new automation tool has arrived: vCloud Automation Center aka vCAC. Many of you know that this was the former dnynamicOps aqcuisition.&lt;br /&gt;
&lt;br /&gt;
With vCloud Automation Center you can do some really cool things and I will show more of it in the upcoming posts. Based on the "old" dynamicOps 4.5 bits I tried to figure out how to customize the vCAC self-service portal which looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Rap0yboy6As/UKSlk_MCZQI/AAAAAAAAAVw/w1Pk1KdkxjU/s1600/Screen+shot+2012-11-15+at+9.19.09+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-Rap0yboy6As/UKSlk_MCZQI/AAAAAAAAAVw/w1Pk1KdkxjU/s400/Screen+shot+2012-11-15+at+9.19.09+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see, it´a really smart frontend with some nice slider, buttons and of course functions. Based on the IIS config you can find the folder which contains the self-service portal files:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-MHSHg6AHem4/UKSqqq9DPoI/AAAAAAAAAWA/cxet2yBctkQ/s1600/Screen+shot+2012-11-15+at+9.10.24+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-MHSHg6AHem4/UKSqqq9DPoI/AAAAAAAAAWA/cxet2yBctkQ/s320/Screen+shot+2012-11-15+at+9.10.24+AM.png" width="181" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Under "App_Themes" you can now create a new one. Now you can edit the web.config file and add your themes there. In the web.config file is a description what to do :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-4lHkGgRdnNI/UKTCSBr53XI/AAAAAAAAAWY/w7o7GDcBvVw/s1600/Screen+shot+2012-11-15+at+11.21.47+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-4lHkGgRdnNI/UKTCSBr53XI/AAAAAAAAAWY/w7o7GDcBvVw/s400/Screen+shot+2012-11-15+at+11.21.47+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this step you can now choose what designs you will offer:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-3OQ5SiObvCo/UKTGS7kMiXI/AAAAAAAAAWo/GbvTvHfDYfU/s1600/Screen+shot+2012-11-15+at+9.37.49+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-3OQ5SiObvCo/UKTGS7kMiXI/AAAAAAAAAWo/GbvTvHfDYfU/s400/Screen+shot+2012-11-15+at+9.37.49+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I also checked the used objects (javascript console) to find out which .css file is used. As you can see, the design URL&amp;nbsp;"/DCACSelfService/Content/Styles/all.css" defines all the layout stuff.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-lbSAt5kPeKs/UKTIl9qPerI/AAAAAAAAAW4/oPAg_IL0iz0/s1600/Screen+shot+2012-11-15+at+11.41.02+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-lbSAt5kPeKs/UKTIl9qPerI/AAAAAAAAAW4/oPAg_IL0iz0/s400/Screen+shot+2012-11-15+at+11.41.02+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So the App_Theme only manages the calendar. I changed my profile in "custom" and used the downloaded jQuery theme for the calendar which isn´t colored:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Yg30sRGSYzo/UKTINp_apSI/AAAAAAAAAWw/f-Lg14hRpxc/s1600/Screen+shot+2012-11-15+at+11.47.02+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-Yg30sRGSYzo/UKTINp_apSI/AAAAAAAAAWw/f-Lg14hRpxc/s400/Screen+shot+2012-11-15+at+11.47.02+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see, it´a bit tricky but you don´t need a master degree to design your own layout. So have fun with all the colors :)&lt;br /&gt;
&lt;br /&gt;
UPDATE: One thing to keep in mind! Like all of my posts this one is no official supported solution :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/g9jDby2M2zo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/2460961770648448347/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/11/vcac-vcloud-automation-center.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/2460961770648448347?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/2460961770648448347?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/g9jDby2M2zo/vcac-vcloud-automation-center.html" title="vCAC - vCloud Automation Center UI customization" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Rap0yboy6As/UKSlk_MCZQI/AAAAAAAAAVw/w1Pk1KdkxjU/s72-c/Screen+shot+2012-11-15+at+9.19.09+AM.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/11/vcac-vcloud-automation-center.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMEQnc9fSp7ImA9WhJaE0s.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-4778500712454592145</id><published>2012-10-04T18:16:00.001+02:00</published><updated>2012-10-04T18:16:43.965+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-04T18:16:43.965+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vSphere API" /><category scheme="http://www.blogger.com/atom/ns#" term="long" /><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="AdvancedSettings" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="updateOptions" /><category scheme="http://www.blogger.com/atom/ns#" term="float" /><category scheme="http://www.blogger.com/atom/ns#" term="VcOptionValue" /><category scheme="http://www.blogger.com/atom/ns#" term="int" /><category scheme="http://www.blogger.com/atom/ns#" term="vSphere 5.1" /><title>vCO - VcOptionValue which value type?</title><content type="html">Got some tricky task this week: Change the advanced parameter "NFS.MaxVolumes" of a ESX host to 256. First thought was: my post for VcOptionValue on the virtual machine. So I searched for the scripting class and wrote some like this:&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var configMgr = myHost.configManager;&lt;br /&gt;
&lt;br /&gt;
for(i in configMgr.advancedOption.queryOptions("NFS.MaxVolumes")){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.debug(configMgr.advancedOption.queryOptions("NFS.MaxVolumes")[0].key);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var oValues = new Array();&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;oValues[0] = new VcOptionValue() ;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;oValues[0].key = "NFS.MaxVolumes";&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;oValues[0].value = 256;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; configMgr.advancedOption.updateOptions(oValues);&lt;br /&gt;
}catch (e){&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.log("Could not setAdvanced Settings. Error: " + e);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
which should be run. But after firing this in vCO there comes an error message like: "wrong parameter" and "internal error". I looked into the vCO logs, the vSphere client and the vpxd.log but all messages didn´t show the exact problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-GE3op3PngMA/UG21Jv3DOkI/AAAAAAAAAVU/e9lhzlx6Q1w/s1600/Screen+Shot+2012-10-04+at+6.10.14+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="81" src="http://2.bp.blogspot.com/-GE3op3PngMA/UG21Jv3DOkI/AAAAAAAAAVU/e9lhzlx6Q1w/s320/Screen+Shot+2012-10-04+at+6.10.14+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After some investigation i found out that the type definition of the value is necessary! So there are some like int, float or long. In my case "long" was the answer. So the code has to look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var configMgr = myHost.configManager;&lt;br /&gt;
&lt;br /&gt;
for(i in configMgr.advancedOption.queryOptions("NFS.MaxVolumes")){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.debug(configMgr.advancedOption.queryOptions("NFS.MaxVolumes")[0].key);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var oValues = new Array();&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;oValues[0] = new VcOptionValue() ;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;oValues[0].key = "NFS.MaxVolumes";&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;oValues[0].value_LongValue = 256;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; configMgr.advancedOption.updateOptions(oValues);&lt;br /&gt;
}catch (e){&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.log("Could not setAdvanced Settings. Error: " + e);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-JhPepx_IjaU/UG217mz4_AI/AAAAAAAAAVc/3LDBagq5AeM/s1600/Screen+Shot+2012-10-04+at+6.14.19+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="98" src="http://3.bp.blogspot.com/-JhPepx_IjaU/UG217mz4_AI/AAAAAAAAAVc/3LDBagq5AeM/s320/Screen+Shot+2012-10-04+at+6.14.19+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, after the next test everything was fine :)&lt;br /&gt;
&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/lpn6-zzTTnw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/4778500712454592145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/10/vco-vcoptionvalue-which-value-type.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/4778500712454592145?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/4778500712454592145?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/lpn6-zzTTnw/vco-vcoptionvalue-which-value-type.html" title="vCO - VcOptionValue which value type?" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-GE3op3PngMA/UG21Jv3DOkI/AAAAAAAAAVU/e9lhzlx6Q1w/s72-c/Screen+Shot+2012-10-04+at+6.10.14+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/10/vco-vcoptionvalue-which-value-type.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUAQHw8fCp7ImA9WhJbEk4.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-6319573721993401069</id><published>2012-09-21T16:37:00.001+02:00</published><updated>2012-09-21T16:37:21.274+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-21T16:37:21.274+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><category scheme="http://www.blogger.com/atom/ns#" term="https" /><category scheme="http://www.blogger.com/atom/ns#" term="certificate" /><category scheme="http://www.blogger.com/atom/ns#" term="wavemaker" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO 5.1" /><category scheme="http://www.blogger.com/atom/ns#" term="Webservice" /><category scheme="http://www.blogger.com/atom/ns#" term="SSL" /><category scheme="http://www.blogger.com/atom/ns#" term="SOAP" /><category scheme="http://www.blogger.com/atom/ns#" term="cacerts" /><category scheme="http://www.blogger.com/atom/ns#" term="new" /><category scheme="http://www.blogger.com/atom/ns#" term="secure" /><category scheme="http://www.blogger.com/atom/ns#" term="keytool" /><category scheme="http://www.blogger.com/atom/ns#" term="premature end of file" /><title>WaveMaker - handling SSL certificates</title><content type="html">In the past some people ask for the SSL certificate handling of WaveMaker. This is mostly caused by WebService integration. With my new vCO 5.1 appliance I had the problem again. After generating a new certificate for the vCenter Orchestrator here I connected the WaveMaker and had to learn a hard lesson: no more HTTP API connection with SOAP! Checking the cause in the browser I could see that there is always a HTTPS redirection :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-DzJwd7Hgb_k/UFx5cQ4q3uI/AAAAAAAAAUo/GKEl9NeS5oU/s1600/Screen+Shot+2012-09-21+at+4.27.21+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="199" src="http://3.bp.blogspot.com/-DzJwd7Hgb_k/UFx5cQ4q3uI/AAAAAAAAAUo/GKEl9NeS5oU/s320/Screen+Shot+2012-09-21+at+4.27.21+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So I had to import the certificate of the vCenter Orchestrator like this:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;sudo keytool -import -alias vco51.vcloud.lab -file /Users/cjohannsen/Desktop/vco51.vcloud.lab -storepass changeit -keystore /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security/cacerts&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
As you can see the WaveMaker uses the JDK certificate store. So I had to export the vCO certificate (i used Firefox) and import it in the certificate store. The store password is originally "changeit". After a WaveMaker restart I tried to connect the https path:&lt;br /&gt;
&lt;br /&gt;
https://vco51.vcloud.lab:8281/vmware-vmo-webcontrol/webservice?wsdl&lt;br /&gt;
&lt;br /&gt;
and everything was fine.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-X3amfgSmp5E/UFx68iaJ9YI/AAAAAAAAAUw/cklL78L16fU/s1600/Screen+Shot+2012-09-21+at+4.33.55+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="124" src="http://4.bp.blogspot.com/-X3amfgSmp5E/UFx68iaJ9YI/AAAAAAAAAUw/cklL78L16fU/s320/Screen+Shot+2012-09-21+at+4.33.55+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this its really easy to access the SOAP API. Next post will show how to connect the REST API with WaveMaker :)&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/u9gMJcNy8mw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/6319573721993401069/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/09/wavemaker-handling-ssl-certificates.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/6319573721993401069?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/6319573721993401069?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/u9gMJcNy8mw/wavemaker-handling-ssl-certificates.html" title="WaveMaker - handling SSL certificates" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-DzJwd7Hgb_k/UFx5cQ4q3uI/AAAAAAAAAUo/GKEl9NeS5oU/s72-c/Screen+Shot+2012-09-21+at+4.27.21+PM.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/09/wavemaker-handling-ssl-certificates.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAFRHo_fCp7ImA9WhJbEUs.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-4692447927495747550</id><published>2012-09-20T21:01:00.001+02:00</published><updated>2012-09-20T21:01:55.444+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-20T21:01:55.444+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chain length" /><category scheme="http://www.blogger.com/atom/ns#" term="consolidate" /><category scheme="http://www.blogger.com/atom/ns#" term="consolidation" /><category scheme="http://www.blogger.com/atom/ns#" term="Portal" /><category scheme="http://www.blogger.com/atom/ns#" term="rights" /><category scheme="http://www.blogger.com/atom/ns#" term="host.login" /><category scheme="http://www.blogger.com/atom/ns#" term="vCD" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO 5.1" /><title>vCloud Director - get chain length and consolidate a vCloud:VM</title><content type="html">As you may know it isn´t possible to consolidate a VM as an organization administrator. In most environments the customer gets an Org (Cola for example) and can deploy vApps etc. but isn´t able to consolidate a vCloud:VM (i use the vCO syntax for explicit wording).&lt;br /&gt;
&lt;br /&gt;
If you want to provide this function in a customer portal, with WaveMaker for example, you need to check the chain length and when the user decides the consolidate method has to be called.&lt;br /&gt;
&lt;br /&gt;
I build a workflow:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-MCYyG__e6kc/UFtl6Oo6vnI/AAAAAAAAAUY/bMHhBVFs2qY/s1600/Screen+Shot+2012-09-20+at+8.46.38+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-MCYyG__e6kc/UFtl6Oo6vnI/AAAAAAAAAUY/bMHhBVFs2qY/s320/Screen+Shot+2012-09-20+at+8.46.38+PM.png" width="300" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The workflow has three steps: determination of the chain length, user decision to consolidate or not and the consolidate call itself. The first part (getChain script) looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;myVm.updateInternalState();&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;System.log("VM name: "+myVm.name);&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;var doc = new XML(myVm.toXml());&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;default xml namespace = doc.namespace();&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;var n8 = new Namespace("http://www.vmware.com/vcloud/extension/v1.5");&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;System.log("ChainLength: "+doc.VCloudExtension.*::VmVimInfo.*::VirtualDisksMaxChainLength);&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;var chainLength = doc.VCloudExtension.*::VmVimInfo.*::VirtualDisksMaxChainLength;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;if(myVm.vmStatus.value != 8){&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;throw("VM is not powered off!");&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;}&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see I update the state of "myVM" (vCloud:VM) and setting the variable "chainLength" (number). The chain length is used as external input for the user interaction, so it´s possible to decide based on the count.&lt;br /&gt;
&lt;br /&gt;
After the submission the myVm.consolidate() method is called and the workflows waits for it.&lt;br /&gt;
&lt;br /&gt;
With my host.login() &lt;a href="http://mighty-virtualization.blogspot.de/2012/07/vcd-is-multi-tenant-vco-is-single.html" target="_blank"&gt;workflow&lt;/a&gt; you can combine the Org based login with the consolidation of vCloud:VM´s :)&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/kJWqlSGOS20" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/4692447927495747550/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/09/vcloud-director-get-chain-length-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/4692447927495747550?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/4692447927495747550?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/kJWqlSGOS20/vcloud-director-get-chain-length-and.html" title="vCloud Director - get chain length and consolidate a vCloud:VM" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-MCYyG__e6kc/UFtl6Oo6vnI/AAAAAAAAAUY/bMHhBVFs2qY/s72-c/Screen+Shot+2012-09-20+at+8.46.38+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/09/vcloud-director-get-chain-length-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQESHg6eyp7ImA9WhJbEUg.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-7515973777822790078</id><published>2012-09-20T17:18:00.002+02:00</published><updated>2012-09-20T17:18:29.613+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-20T17:18:29.613+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSL" /><category scheme="http://www.blogger.com/atom/ns#" term="kb" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="dunes" /><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><category scheme="http://www.blogger.com/atom/ns#" term="appliance" /><category scheme="http://www.blogger.com/atom/ns#" term="https" /><category scheme="http://www.blogger.com/atom/ns#" term="certificate" /><category scheme="http://www.blogger.com/atom/ns#" term="keytool" /><category scheme="http://www.blogger.com/atom/ns#" term="keystore" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO 5.1" /><title>vCO 5.1 appliance - how-to fix the localhost.localdom certificate</title><content type="html">Yesterday I updated my local lab to the brand new vCloud Suite 5.1. The most interesting thing for me was the vCenter Orchestrator appliance and it´s REST API. So after the deployment the appliance came up (I had to disconnect/connect the cd-rom while the certificate was generated) and the typical configuration interface was available.&lt;br /&gt;
&lt;br /&gt;
After some normal tests I had some smaller problems:&lt;br /&gt;
&lt;br /&gt;
1. the logs windows doesn´t show the logs&lt;br /&gt;
2. the browser tells me that the ceritifcate isn´t okay&lt;br /&gt;
&lt;br /&gt;
My colleague Christophe Decannini points me in the right direction with the logs problem: the time between appliance and client was different. After changing the time and timezone everything was fine.&lt;br /&gt;
&lt;br /&gt;
The second problem wasn´t this easy to solve. First I created a new certificate with the standard configuration service method:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-CP_7vV6O4Ns/UFswP-iI5LI/AAAAAAAAATY/muQj0phhOwE/s1600/new_ceritficate.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://4.bp.blogspot.com/-CP_7vV6O4Ns/UFswP-iI5LI/AAAAAAAAATY/muQj0phhOwE/s320/new_ceritficate.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After that I checked the certificate in my browser and was surprised that the certificate name was localhost.localdom.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-msikuyN2mfY/UFswrXTVhTI/AAAAAAAAATg/PsJ0MEJ7Tss/s1600/result_browser.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="154" src="http://2.bp.blogspot.com/-msikuyN2mfY/UFswrXTVhTI/AAAAAAAAATg/PsJ0MEJ7Tss/s320/result_browser.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A short console test also shows that the common name wasn´t right.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-U_XVoC2qIDU/UFsxmZ_LnvI/AAAAAAAAATo/vRmOUiwsE1Q/s1600/certificate_nok_console.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://1.bp.blogspot.com/-U_XVoC2qIDU/UFsxmZ_LnvI/AAAAAAAAATo/vRmOUiwsE1Q/s320/certificate_nok_console.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After a few more tests Burke Azbill mentioned his blog article and what should I say... even the linux appliance has the problem (&lt;a href="http://www.vcoteam.info/learn-vco/work-with-vco-over-ssl.html" target="_blank"&gt;article&lt;/a&gt;).&amp;nbsp;So i started the following steps:&lt;br /&gt;
&lt;br /&gt;
1. check for the certificate store&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-2ZgnzSG_BXA/UFsyW7DIQjI/AAAAAAAAATw/sZo_-u7SCjY/s1600/01check-for-store.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://2.bp.blogspot.com/-2ZgnzSG_BXA/UFsyW7DIQjI/AAAAAAAAATw/sZo_-u7SCjY/s320/01check-for-store.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. delete the old "dunes" ceritficate&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Bgs0RE7DHeg/UFsyoca8_uI/AAAAAAAAAT4/o_aqGSpOqEo/s1600/02-delete-old.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://1.bp.blogspot.com/-Bgs0RE7DHeg/UFsyoca8_uI/AAAAAAAAAT4/o_aqGSpOqEo/s320/02-delete-old.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. generate new certificate&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ETW4Y9XF0Cw/UFsy4uZG0sI/AAAAAAAAAUA/bkKxaYCKd0Q/s1600/03-create-new-cert.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://1.bp.blogspot.com/-ETW4Y9XF0Cw/UFsy4uZG0sI/AAAAAAAAAUA/bkKxaYCKd0Q/s320/03-create-new-cert.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. restart the vCenter Orchestrator appliance&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-sHssxI2nzEw/UFszNvfWWfI/AAAAAAAAAUI/MiaB8L49gx0/s1600/certificate_ok_console.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="128" src="http://3.bp.blogspot.com/-sHssxI2nzEw/UFszNvfWWfI/AAAAAAAAAUI/MiaB8L49gx0/s320/certificate_ok_console.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After the restart I checked for the certificate again and everything was okay. Now I can test the new REST API :)&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/o-zOYHnhPJU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/7515973777822790078/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/09/vco-51-appliance-how-to-fix.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/7515973777822790078?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/7515973777822790078?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/o-zOYHnhPJU/vco-51-appliance-how-to-fix.html" title="vCO 5.1 appliance - how-to fix the localhost.localdom certificate" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-CP_7vV6O4Ns/UFswP-iI5LI/AAAAAAAAATY/muQj0phhOwE/s72-c/new_ceritficate.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/09/vco-51-appliance-how-to-fix.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQASX04fCp7ImA9WhJQEUw.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-2548692310867852968</id><published>2012-07-24T08:45:00.002+02:00</published><updated>2012-07-24T08:45:48.334+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-24T08:45:48.334+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director" /><category scheme="http://www.blogger.com/atom/ns#" term="csv" /><category scheme="http://www.blogger.com/atom/ns#" term="txt" /><category scheme="http://www.blogger.com/atom/ns#" term="powershell" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="ip" /><category scheme="http://www.blogger.com/atom/ns#" term="PowerCLI" /><category scheme="http://www.blogger.com/atom/ns#" term="ip address" /><category scheme="http://www.blogger.com/atom/ns#" term="reserve" /><category scheme="http://www.blogger.com/atom/ns#" term="text file" /><title>PowerCLI - IP reservation with PowerShell</title><content type="html">Sometimes I receive questions which aren´t exactly my skill. In this case I was asked for a "IP management" from a .csv/.txt file to receive an IP address and reserve it. The IP address should be used for a vCloud Director vApp deployment. As a google junkie i searched for a ready-to-use solution but there wasn´t any.&lt;br /&gt;
&lt;br /&gt;
So i decide to build a small script and a text file to play around with. The text file (ip_names.txt) only has three informations, comma separated:&lt;br /&gt;
&lt;br /&gt;
ip address; dns name; state&lt;br /&gt;
&lt;br /&gt;
and looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;127.0.0.1;cjohannsen001;reserved&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;127.0.0.2;cjohannsen002;free&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;127.0.0.3;cjohannsen003;reserved&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;127.0.0.4;cjohannsen004;free&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;127.0.0.5;cjohannsen005;free&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;127.0.0.6;cjohannsen006;reserved&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The goal was to select an ip address and if the address is chosen it should be reserved by changing the state keyword.&lt;br /&gt;
&lt;br /&gt;
After a few attempts I figure out the following script:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;$file = "ip_names.txt"&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;$Lines = Get-Content -path $file -readcount 0&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;For($i=0; $i -lt $Lines.Count; $i+=1){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;$ip = $Lines[$i].ToString().Split(';')[0].Trim()&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;$dns = $Lines[$i].ToString().Split(';')[1].Trim()&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;$state = $Lines[$i].ToString().Split(';')[2].Trim()&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if ($state –eq 'free')&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;{&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;echo $ip "... is free"&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;$Lines[$i]&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;$bool = Read-Host "Use IP?"&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if($bool -eq "yes"){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;$Lines[$i] = $Lines[$i].Replace("free", "reserved")&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;$Lines | Set-Content -Path $file&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;echo "IP address:"&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;$ip&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;break&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;else{&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;echo "IP wasn´t chosen."&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-S0ny2cC11bw/UA5EVWUFv0I/AAAAAAAAASs/JEF4bG10bLQ/s1600/Screen+Shot+2012-07-24+at+8.44.09+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="167" src="http://1.bp.blogspot.com/-S0ny2cC11bw/UA5EVWUFv0I/AAAAAAAAASs/JEF4bG10bLQ/s320/Screen+Shot+2012-07-24+at+8.44.09+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this small script you will be able to "select" an IP address ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/ZFgpAbDZImI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/2548692310867852968/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/07/powercli-ip-reservation-with-powershell.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/2548692310867852968?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/2548692310867852968?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/ZFgpAbDZImI/powercli-ip-reservation-with-powershell.html" title="PowerCLI - IP reservation with PowerShell" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-S0ny2cC11bw/UA5EVWUFv0I/AAAAAAAAASs/JEF4bG10bLQ/s72-c/Screen+Shot+2012-07-24+at+8.44.09+AM.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/07/powercli-ip-reservation-with-powershell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8GSXc4fCp7ImA9WhJSGE4.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-7752984919123115582</id><published>2012-07-09T12:47:00.000+02:00</published><updated>2012-07-09T12:47:08.934+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-09T12:47:08.934+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="vCloud" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="chain length" /><category scheme="http://www.blogger.com/atom/ns#" term="consolidate" /><category scheme="http://www.blogger.com/atom/ns#" term="vCloud API" /><category scheme="http://www.blogger.com/atom/ns#" term="rights" /><category scheme="http://www.blogger.com/atom/ns#" term="organization" /><category scheme="http://www.blogger.com/atom/ns#" term="role" /><title>chain length consolidation in vCloud Director - multi-tenancy part 2</title><content type="html">Based on the last &lt;a href="http://mighty-virtualization.blogspot.de/2012/07/vcd-is-multi-tenant-vco-is-single.html" target="_blank"&gt;article&lt;/a&gt; I think about a solution to enable vCloud Director organization administrators to consolidate their virtual machines (keep in mind this is only available in the SYSTEM organization) without being the SYSTEM administrator.&lt;br /&gt;
&lt;br /&gt;
So if your customers are administrators in their org they aren´t able to consolidate their VMs and this could cause performance issues.&lt;br /&gt;
&lt;br /&gt;
With the "host.login()" method in the vCloud Director plug-in of vCenter Orchestrator you will be able to authorize organization administrators and identify their organizational vApps and VMs. Because the vCenter Orchestrator is connected as a SYSTEM administrator to the vCloud Director you can call methods like "consolidate" directly.&lt;br /&gt;
&lt;br /&gt;
The most valuable step is to identify the chain length of the VM which isn´t viewable as organization admin. So if you know have identified your VMs you can create an scriptable task like this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;myVm.updateInternalState();&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;System.log("VM name: "+myVm.name);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;var doc = new XML(myVm.toXml());&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;default xml namespace = doc.namespace();&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;var n8 = new Namespace("http://www.vmware.com/vcloud/extension/v1.5");&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;System.log("ChainLength: "+doc.VCloudExtension.*::VmVimInfo.*::VirtualDisksMaxChainLength);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;var chainLength = doc.VCloudExtension.*::VmVimInfo.*::VirtualDisksMaxChainLength;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;if(myVm.vmStatus.value != 8){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;throw("VM is not powered off!");&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;}&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Please keep in mind that the vm.updateInternalState() method is useful cause the state is sometimes not the same as displayed in vCO. This is also useful for the host.login() method in my last article.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The first step identifies the chain length and the second one checks the state of the VM. In my workflow used a "user interaction" with the chain length as external input to ask if the VM should be consolidate. From a external portal you have to use the "answerWorkflow" method.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;When the user decides to consolidate (with seeing the chain length in the decision field) the next scriptable task only has a consolidate call:&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;var task = myVm.consolidate();&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The whole workflow looks like this:&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-gy13dgo0yf0/T_fyh_g3gkI/AAAAAAAAASg/5iXZT5nF_ow/s1600/Screen+Shot+2012-07-07+at+10.25.16+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="207" src="http://2.bp.blogspot.com/-gy13dgo0yf0/T_fyh_g3gkI/AAAAAAAAASg/5iXZT5nF_ow/s320/Screen+Shot+2012-07-07+at+10.25.16+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;You can control the operation in you vCloud Director, there you will see a "consolidating VM" even if you aren´t a SYSTEM administrator :)&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/L_5MofOG2BY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/7752984919123115582/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/07/chain-length-consolidation-in-vcloud.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/7752984919123115582?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/7752984919123115582?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/L_5MofOG2BY/chain-length-consolidation-in-vcloud.html" title="chain length consolidation in vCloud Director - multi-tenancy part 2" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-gy13dgo0yf0/T_fyh_g3gkI/AAAAAAAAASg/5iXZT5nF_ow/s72-c/Screen+Shot+2012-07-07+at+10.25.16+AM.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/07/chain-length-consolidation-in-vcloud.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AARH47fip7ImA9WhJSE04.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-2113559921280183106</id><published>2012-07-03T19:15:00.001+02:00</published><updated>2012-07-03T19:15:45.006+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-03T19:15:45.006+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="plug-in" /><category scheme="http://www.blogger.com/atom/ns#" term="login" /><category scheme="http://www.blogger.com/atom/ns#" term="chain length" /><category scheme="http://www.blogger.com/atom/ns#" term="roles" /><category scheme="http://www.blogger.com/atom/ns#" term="consolidate" /><category scheme="http://www.blogger.com/atom/ns#" term="vCloud API" /><category scheme="http://www.blogger.com/atom/ns#" term="VclHost" /><category scheme="http://www.blogger.com/atom/ns#" term="credentials" /><category scheme="http://www.blogger.com/atom/ns#" term="rights" /><category scheme="http://www.blogger.com/atom/ns#" term="vCD" /><title>vCD is multi-tenant, vCO is single-tenant, what now?</title><content type="html">This week I had a discussion with one of our VSSP customers about the integration of vCloud Director in vCenter Orchestrator. As you might know there ist a plug-in for the vCD available which allows you to configure the vCD connection and make it available in vCO.&lt;br /&gt;
&lt;br /&gt;
Now there is one thing to know about: If you configure the plug-in you will use the SYSTEM organization to have all other organizations available. If you connect to the vCO with the SOAP interface (with WaveMaker for example) the users will have full access to the vCD and not only to their organization.&lt;br /&gt;
&lt;br /&gt;
Because of the user and role management in vCloud Director you will be limited in some functions. As example: There is no way to "consolidate" a VM even if you can see the chain length in their properties. This is limited to the provider administrator role.&lt;br /&gt;
&lt;br /&gt;
So what´s the solution?&lt;br /&gt;
&lt;br /&gt;
You can insert all organizations as new vCD connections in the vCD plug-in and as a vCO admin you are able to consolidate... but this isn´t really slick. The other was is to "authenticate" users with their organization and limit their access to their vApps/VMs.&lt;br /&gt;
&lt;br /&gt;
After some attempts i designed a workflow like this:&lt;br /&gt;
&lt;br /&gt;
IN-Parameter:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;org (string)&lt;/li&gt;
&lt;li&gt;user (string)&lt;/li&gt;
&lt;li&gt;pass (string)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
IN-Attributes:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;url (string)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
which were easy to fill from a web portal. With these parameters you are able to use the VclHost.login() method like this:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;code&gt;VclHostManager.setRuntimeCredentials(user, pass);&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;var host = VclHostManager.createHost();&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;host.url = url;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;host.organization = org;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;host.sessionMode = VclHostSessionMode.PER_USER_SESSION;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;host.enabled = true;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;host.login();&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now you are "logged" in with the user and the matching org. A way to verify this is to check for the organizations:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;var Organizations = host.getOrganizations();&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;code&gt;for (i in Organizations){&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; System.log("Organization: "+Organizations[i].name);&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see you will only receive the organizations of the logged in user :)&lt;br /&gt;
&lt;br /&gt;
In my test environment it looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-G1rE8zZaX_o/T_MmfpznXoI/AAAAAAAAASU/g5gW64jnQhs/s1600/Screen+Shot+2012-07-03+at+7.05.25+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://4.bp.blogspot.com/-G1rE8zZaX_o/T_MmfpznXoI/AAAAAAAAASU/g5gW64jnQhs/s400/Screen+Shot+2012-07-03+at+7.05.25+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you will be able to get the vApps and Vms of the organization and do some magic with them. I will post some further steps (chain length, WaveMaker portal) later... cause I´m a consultant... in a hotel... with some beer... and only a notebook :)&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/_6Krza4vE9I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/2113559921280183106/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/07/vcd-is-multi-tenant-vco-is-single.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/2113559921280183106?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/2113559921280183106?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/_6Krza4vE9I/vcd-is-multi-tenant-vco-is-single.html" title="vCD is multi-tenant, vCO is single-tenant, what now?" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-G1rE8zZaX_o/T_MmfpznXoI/AAAAAAAAASU/g5gW64jnQhs/s72-c/Screen+Shot+2012-07-03+at+7.05.25+PM.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/07/vcd-is-multi-tenant-vco-is-single.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8MRX8yeyp7ImA9WhVVEUs.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-3128323578352381572</id><published>2012-05-04T22:38:00.000+02:00</published><updated>2012-05-04T22:38:04.193+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-04T22:38:04.193+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="SOAP" /><category scheme="http://www.blogger.com/atom/ns#" term="web client" /><category scheme="http://www.blogger.com/atom/ns#" term="SOAP client" /><category scheme="http://www.blogger.com/atom/ns#" term="programming language" /><category scheme="http://www.blogger.com/atom/ns#" term="language" /><title>ruby - SOAP access with savon</title><content type="html">The last three days I played around with ruby and learned a lot of things (a big thanks to Marius). When practicing some basic functionalities (&lt;a href="http://tryruby.org/"&gt;tryruby.org&lt;/a&gt;) I decide to check if I can connect to the SOAP interface of the vCenter Orchestrator. Yes, SOAP, it´s old school :)&lt;br /&gt;
&lt;br /&gt;
First you need to install a new gem called savon to enable ruby as a SOAP client. After that the &lt;i&gt;require 'savon'&lt;/i&gt; loads the gem.&lt;br /&gt;
&lt;br /&gt;
Now here is an example to get some vCenter Orchestrator workflows:&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;require 'savon'&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;Savon.configure do |config|&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp; config.log = false &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;end&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;client = Savon::Client.new do&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;wsdl.document = "http://10.4.13.15:8280/vmware-vmo-webcontrol/webservice?wsdl"&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;end&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;user = "YourUser"&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;pass = "YourPass"&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;def findWorkflow(wfName, client,user,pass)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;response = client.request :get_workflows_with_name do&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp; soap.body = { workflowName: wfName, username: user, password: pass }&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;end&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;return response&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;end&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;def getAllWfs(client,user,pass)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;response = client.request :get_all_workflows do&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp; soap.body = { username: user, password: pass}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;end&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;return response&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;end&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;def getAllWfInfos(allWfs)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;allWfs[:get_all_workflows_response][:get_all_workflows_return].each do |wf|&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp; wf.each { |x| x.each { |y| p y } }&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;end&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;end&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;myWfs = getAllWfs(client)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;wfInfos = getAllWfInfos(myWfs)&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This code produces the following output:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-tkuSp-rIQdM/T6Q8BsflnNI/AAAAAAAAASE/noBmgIoWcHw/s1600/Screen+Shot+2012-05-04+at+10.28.31+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/-tkuSp-rIQdM/T6Q8BsflnNI/AAAAAAAAASE/noBmgIoWcHw/s400/Screen+Shot+2012-05-04+at+10.28.31+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So maybe this helps you to play around with ruby and some SOAP operations. Hopefully I will find some time to consume the REST API of the vCloud Director and show you some examples :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/J7-_ug5zS1s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/3128323578352381572/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/05/ruby-soap-access-with-savon.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/3128323578352381572?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/3128323578352381572?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/J7-_ug5zS1s/ruby-soap-access-with-savon.html" title="ruby - SOAP access with savon" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-tkuSp-rIQdM/T6Q8BsflnNI/AAAAAAAAASE/noBmgIoWcHw/s72-c/Screen+Shot+2012-05-04+at+10.28.31+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/05/ruby-soap-access-with-savon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IMSHw4fSp7ImA9WhVSE04.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-9045140165713710349</id><published>2012-03-09T23:19:00.000+01:00</published><updated>2012-03-09T23:19:49.235+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-09T23:19:49.235+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vlan id" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="dvSwitch" /><category scheme="http://www.blogger.com/atom/ns#" term="dvPortGroup" /><category scheme="http://www.blogger.com/atom/ns#" term="find vlanId" /><category scheme="http://www.blogger.com/atom/ns#" term="defaultPortConfig" /><category scheme="http://www.blogger.com/atom/ns#" term="dvportsetting" /><title>vCO - how to find the vlanID of a dvPortGroup</title><content type="html">Today I received an interesting question: "How to find out the VLAN ID of a distributed virtual port group?". At the first moment I think: "No problem, cause the vSphere client can also show the information.".&lt;br /&gt;
&lt;br /&gt;
After several hours and searches in the vSphere API and Onyx I realized that there isn´t any direct method for that :(&lt;br /&gt;
&lt;br /&gt;
So I test the illogical things and enhanced the defaultPortConfig attribute about the &lt;i&gt;vlan&lt;/i&gt; attribute... and what should I say: There was an atribute!&lt;br /&gt;
&lt;br /&gt;
After testing if the attribute is part of the VcVmwareDistributedVirtualSwitchVlanIdSpec I was able to check the vlan :)&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;for(i in dvSwitch.portgroup){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;System.debug(dvSwitch.portgroup[i].config.defaultPortConfig.vlan);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if(dvSwitch.portgroup[i].config.defaultPortConfig.vlan instanceof VcVmwareDistributedVirtualSwitchVlanIdSpec){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;System.debug(dvSwitch.portgroup[i].config.defaultPortConfig.vlan.vlanId);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This looks like the following screen in the end:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-qMDgPQC5ZOU/T1qBsz4RnDI/AAAAAAAAARk/pAD5Y0bKPSk/s1600/Screen+Shot+2012-03-09+at+11.17.05+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="http://4.bp.blogspot.com/-qMDgPQC5ZOU/T1qBsz4RnDI/AAAAAAAAARk/pAD5Y0bKPSk/s400/Screen+Shot+2012-03-09+at+11.17.05+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So I hope this helps! By the way, I never had so many failed runs in a row :)&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/v54bH2RPl3A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/9045140165713710349/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/03/vco-how-to-find-vlanid-of-dvportgroup.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/9045140165713710349?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/9045140165713710349?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/v54bH2RPl3A/vco-how-to-find-vlanid-of-dvportgroup.html" title="vCO - how to find the vlanID of a dvPortGroup" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-qMDgPQC5ZOU/T1qBsz4RnDI/AAAAAAAAARk/pAD5Y0bKPSk/s72-c/Screen+Shot+2012-03-09+at+11.17.05+PM.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/03/vco-how-to-find-vlanid-of-dvportgroup.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8BQH8-eSp7ImA9WhVTE0o.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-5801365512803758193</id><published>2012-02-27T21:00:00.002+01:00</published><updated>2012-02-27T21:00:51.151+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-27T21:00:51.151+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="suds" /><category scheme="http://www.blogger.com/atom/ns#" term="fast" /><category scheme="http://www.blogger.com/atom/ns#" term="WSDL" /><category scheme="http://www.blogger.com/atom/ns#" term="scripting" /><category scheme="http://www.blogger.com/atom/ns#" term="PyvCO" /><category scheme="http://www.blogger.com/atom/ns#" term="Webservice" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="SOAP" /><category scheme="http://www.blogger.com/atom/ns#" term="API" /><category scheme="http://www.blogger.com/atom/ns#" term="automation" /><category scheme="http://www.blogger.com/atom/ns#" term="phyton" /><category scheme="http://www.blogger.com/atom/ns#" term="SOAP client" /><title>vCO - want fast success? use python!</title><content type="html">







&lt;br /&gt;
&lt;div class="p1"&gt;
As you may know I´m always interested in finding new methods to make vCO available in the most common programming languages. Last week some guys developed their web service client in python using the outstanding PyvCO module:&amp;nbsp;&lt;a href="http://labs.vmware.com/flings/pyvco"&gt;&lt;span class="s1"&gt;http://labs.vmware.com/flings/pyvco&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
I see their fast and impressive results which took them just a few days and decided to take a look into python using "native" SOAP clients. After reading thru some available modules I decide to use suds:&amp;nbsp;&lt;a href="https://fedorahosted.org/suds/"&gt;&lt;span class="s1"&gt;https://fedorahosted.org/suds/&lt;/span&gt;&lt;/a&gt;&amp;nbsp;because it seems to have a simple design.&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
After installing the module on my MacBook with&amp;nbsp;pip install suds&amp;nbsp;the first test is really simple:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
import suds&lt;br /&gt;
client = suds.client.Client('http://172.16.0.176:8280/vmware-vmo-webcontrol/webservice?wsdl')&lt;br /&gt;
print client&lt;/code&gt;&lt;/div&gt;
&lt;code&gt;
&lt;/code&gt;&lt;div class="p2"&gt;
&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
This is the output:&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-NNX5-E6MYzg/T0vbBYJBPxI/AAAAAAAAARM/68iyWbFuMbU/s1600/Screen+Shot+2012-02-27+at+8.34.22+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://4.bp.blogspot.com/-NNX5-E6MYzg/T0vbBYJBPxI/AAAAAAAAARM/68iyWbFuMbU/s320/Screen+Shot+2012-02-27+at+8.34.22+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
As you can see all methods and types are shown with a simple print :)&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
Based on this and some indents you can produce some real nice functions like this:&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;import suds&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;vCOurl = 'http://172.16.0.176:8280/vmware-vmo-webcontrol/webservice?WSDL'&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;#username = raw_input('Username: ')&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;#password = raw_input('Password: ')&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;username = 'USERNAME'&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;password = 'PASSWORD'&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;client = suds.client.Client(vCOurl)&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;#print client&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;def getAllWfs():&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp;allWfs = client.service.getAllWorkflows(username, password)&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp;return allWfs&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;def findWfs(name):&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp;Wfs = client.service.getWorkflowsWithName(name, username, password)&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp;return Wfs&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;#allWfs = getAllWfs()&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;allWfs = findWfs(raw_input('Workflow name: '))&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;for wf in allWfs:&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;print wf.name&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;print wf.id&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;wfInParas = wf.inParameters&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;for iParas in wfInParas[0]:&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print 'inParameter: '&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print (iParas.name, iParas.type)&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;wfOutParas = wf.outParameters&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;for oParas in wfOutParas[0]:&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print 'outParameter: '&lt;/code&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print (oParas.name, oParas.type)&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;code&gt;
&lt;/code&gt;&lt;div class="p2"&gt;
&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
With this you can search for a workflow and get the IN/OUT parameters. As you can see the success comes really fast!&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-69vWPwScc0s/T0vgW_xSEyI/AAAAAAAAARc/PHJKs74jnBw/s1600/Screen+Shot+2012-02-27+at+8.48.24+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="92" src="http://2.bp.blogspot.com/-69vWPwScc0s/T0vgW_xSEyI/AAAAAAAAARc/PHJKs74jnBw/s320/Screen+Shot+2012-02-27+at+8.48.24+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
So feel free to post your implementations!&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/i0xU3JZghZs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/5801365512803758193/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/02/vco-want-fast-success-use-python.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/5801365512803758193?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/5801365512803758193?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/i0xU3JZghZs/vco-want-fast-success-use-python.html" title="vCO - want fast success? use python!" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-NNX5-E6MYzg/T0vbBYJBPxI/AAAAAAAAARM/68iyWbFuMbU/s72-c/Screen+Shot+2012-02-27+at+8.34.22+PM.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/02/vco-want-fast-success-use-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQERHY5eip7ImA9WhVTE0s.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-393808702187481217</id><published>2012-02-24T21:32:00.001+01:00</published><updated>2012-02-27T19:45:05.822+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-27T19:45:05.822+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Altiris DS" /><category scheme="http://www.blogger.com/atom/ns#" term="Altiris" /><category scheme="http://www.blogger.com/atom/ns#" term="Altiris ASDK" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="vCloud" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="deployment" /><category scheme="http://www.blogger.com/atom/ns#" term="physical" /><category scheme="http://www.blogger.com/atom/ns#" term="vApp" /><category scheme="http://www.blogger.com/atom/ns#" term="Altiris SDK" /><category scheme="http://www.blogger.com/atom/ns#" term="Altiris automation" /><title>vCO - How to automate Altiris Deployments</title><content type="html">This week I was in Vienna to implement a VM deployment automation based on Altiris. First thing I always ask is: "Why do you use Altiris as deployment mechanism if you have VMware templates?" and in this case the physical deployment was the answer. So Altiris Deployment is used for physical and virtual servers.&lt;br /&gt;
&lt;br /&gt;
What I like when implementing these things is that the customer has the freedom to choose where to deploy. So there are no borders to deploy a VM or vApp in the vCloud Director for example. It´s just a decision field away :)&lt;br /&gt;
&lt;br /&gt;
First thing you need is to have the Altiris SDK installed on your Altiris Deployment Server. You can find the actual version here:&amp;nbsp;&lt;a href="http://www.symantec.com/business/support/index?page=content&amp;amp;id=TECH40810"&gt;http://www.symantec.com/business/support/index?page=content&amp;amp;id=TECH40810&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
After the installation you will have another IIS website available: /Altiris.ASDK.DS/ which serves the webservice "API". Now we have two options: the SOAP plug-in and native HTTP POST/GET commands. I prefer the HTTP command way cause the SOAP API isn´t available as one WSDL definition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-PZTegBFYHJ8/T0fxlvl_WZI/AAAAAAAAARE/gFRRGhfp2F8/s1600/Screen+Shot+2012-02-24+at+9.22.22+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-PZTegBFYHJ8/T0fxlvl_WZI/AAAAAAAAARE/gFRRGhfp2F8/s320/Screen+Shot+2012-02-24+at+9.22.22+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So the most simple way is to call the Altiris URL for the exact task. In my case I search for the UUID because the system is displayed as VMware-xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx, rename the system into the VMname IN-parameter and schedule the exact job for the system. You can find the JobIDs via web-browser on the Altiris.ASDK.DS path.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;The command for searching a system (HTTP GET) could look like this:&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;var url = "http://"+AltirisServer+"/Altiris.ASDK.DS/ComputerManagementService.asmx/GetComputerID?computerSearchPhrase=";&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;url += Servername&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;url += "&amp;amp;computerSearchType=2";&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;var MyURL = new URL(url);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;MyURL.getContent();&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;var Result = MyURL.result;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, now have fun to automate your Altiris Deployment :)&lt;br /&gt;
Maybe this also could be used to automate the vApp deployment including Altiris for the vCloud Director...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/MORK-K8j7ww" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/393808702187481217/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2012/02/vco-how-to-automate-altiris-deployments.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/393808702187481217?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/393808702187481217?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/MORK-K8j7ww/vco-how-to-automate-altiris-deployments.html" title="vCO - How to automate Altiris Deployments" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-PZTegBFYHJ8/T0fxlvl_WZI/AAAAAAAAARE/gFRRGhfp2F8/s72-c/Screen+Shot+2012-02-24+at+9.22.22+PM.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2012/02/vco-how-to-automate-altiris-deployments.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcNSXoycCp7ImA9WhRWEUk.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-6576188953875167736</id><published>2011-12-28T23:25:00.000+01:00</published><updated>2011-12-29T09:41:38.498+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-29T09:41:38.498+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="powershell" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="TFTP" /><category scheme="http://www.blogger.com/atom/ns#" term="plug-in" /><category scheme="http://www.blogger.com/atom/ns#" term="integration" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Server Appliance" /><category scheme="http://www.blogger.com/atom/ns#" term="boot image" /><category scheme="http://www.blogger.com/atom/ns#" term="stateless ESXi" /><category scheme="http://www.blogger.com/atom/ns#" term="PXE" /><category scheme="http://www.blogger.com/atom/ns#" term="Auto deploy" /><title>vCO - Auto Deploy Plug-in</title><content type="html">I used the holidays to test around with the new vCenter Orchestrator Plug-in for VMware Auto Deploy. The main value is that there is no need to use Microsoft Powershell which isn´t really often available in pure linux environments :)&lt;br /&gt;
&lt;br /&gt;
First you have to configure the vCenter Server Appliance to act as a TFTP or DHCP server if this one isn´t already in place. This page describes the DHCP/TFTP configuration:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://jreypo.wordpress.com/tag/vsphere-auto-deploy/"&gt;http://jreypo.wordpress.com/tag/vsphere-auto-deploy/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Once the services are configured you have to download the ESXi depot file from our download area and place it on a webserver. After that you can download the Plug-in for the vCenter Orchestrator and install it with the vCenter Orchestrator configuration interface.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-B7sZH-Bpg1c/TvuSJIhE2AI/AAAAAAAAAPw/QNNjTZtXqT0/s1600/Screen+Shot+2011-12-28+at+11.02.56+PM.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="102" src="http://1.bp.blogspot.com/-B7sZH-Bpg1c/TvuSJIhE2AI/AAAAAAAAAPw/QNNjTZtXqT0/s400/Screen+Shot+2011-12-28+at+11.02.56+PM.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can add the vCenter Server Appliance as a VMware Auto Deploy host:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-7wX0SMth5h0/TvuT6otso6I/AAAAAAAAAP8/x2H8Ycf8FjM/s1600/Screen+Shot+2011-12-28+at+11.10.01+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="http://2.bp.blogspot.com/-7wX0SMth5h0/TvuT6otso6I/AAAAAAAAAP8/x2H8Ycf8FjM/s320/Screen+Shot+2011-12-28+at+11.10.01+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After adding the host you need to add a depot too. Please note that you have to extract the ESXi depot .zip file downloaded in the beginning cause you have to point to the "index.xml" file in the package.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-T1F7VB_TB3A/TvuUXtmYAnI/AAAAAAAAAQI/3OyBUWg9tLc/s1600/Screen+Shot+2011-12-28+at+11.12.31+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://1.bp.blogspot.com/-T1F7VB_TB3A/TvuUXtmYAnI/AAAAAAAAAQI/3OyBUWg9tLc/s320/Screen+Shot+2011-12-28+at+11.12.31+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With the host and depot you can now create a deploy rule and activate it with the included workflows.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-ezxDlTVNI6E/TvuU7bawkzI/AAAAAAAAAQU/Qo6R3iLOC64/s1600/Screen+Shot+2011-12-28+at+11.14.30+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="172" src="http://4.bp.blogspot.com/-ezxDlTVNI6E/TvuU7bawkzI/AAAAAAAAAQU/Qo6R3iLOC64/s320/Screen+Shot+2011-12-28+at+11.14.30+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can check the activation really fast by clicking the "Inventory" tab and taking a look into the Auto Deploy tree.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-9Uk-My21e_o/TvuV7Lx2TRI/AAAAAAAAAQg/omg4nW_0ojg/s1600/Screen+Shot+2011-12-28+at+11.19.01+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://2.bp.blogspot.com/-9Uk-My21e_o/TvuV7Lx2TRI/AAAAAAAAAQg/omg4nW_0ojg/s200/Screen+Shot+2011-12-28+at+11.19.01+PM.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If everything looking as expected you can now check to start a host system (I tested it with some virtual machines) and see if it boots into an ESXi image.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-w81Kdw3ta34/TvuW2Q0Y72I/AAAAAAAAAQs/fx0lpODwZxA/s1600/Screen+Shot+2011-12-28+at+11.22.43+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="http://1.bp.blogspot.com/-w81Kdw3ta34/TvuW2Q0Y72I/AAAAAAAAAQs/fx0lpODwZxA/s320/Screen+Shot+2011-12-28+at+11.22.43+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is just a small quick start, there are some more possibilities (answer files etc.) but it shows how to get your feet on the street. See you next year!&lt;br /&gt;
&lt;br /&gt;
P.S.: The TFTP/DHCP service isn´t a supported scenario. Thanks&amp;nbsp;&lt;a href="http://www.virtuallyghetto.com/" target="_blank"&gt;William&lt;/a&gt; for the hint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/0Vlwcw4c1wI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/6576188953875167736/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/12/vco-auto-deploy-plug-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/6576188953875167736?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/6576188953875167736?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/0Vlwcw4c1wI/vco-auto-deploy-plug-in.html" title="vCO - Auto Deploy Plug-in" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-B7sZH-Bpg1c/TvuSJIhE2AI/AAAAAAAAAPw/QNNjTZtXqT0/s72-c/Screen+Shot+2011-12-28+at+11.02.56+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/12/vco-auto-deploy-plug-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8GSHc4fCp7ImA9WhRQF0o.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-3857436454654037943</id><published>2011-12-13T12:13:00.000+01:00</published><updated>2011-12-13T12:13:49.934+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-13T12:13:49.934+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bus" /><category scheme="http://www.blogger.com/atom/ns#" term="SCSI" /><category scheme="http://www.blogger.com/atom/ns#" term="bus id" /><category scheme="http://www.blogger.com/atom/ns#" term="SCSI Controller" /><category scheme="http://www.blogger.com/atom/ns#" term="second bus" /><category scheme="http://www.blogger.com/atom/ns#" term="workflow" /><category scheme="http://www.blogger.com/atom/ns#" term="second SCSI controller" /><category scheme="http://www.blogger.com/atom/ns#" term="OOTB" /><title>vCO - How to add a second SCSI controller</title><content type="html">&lt;br /&gt;
Sometimes you will miss some OOTB workflows in your vCenter Orchestrator library. The last time I searched for a workflow the customer task was:&lt;br /&gt;
&lt;br /&gt;
"Add a second disk with a different controller type and and a new bus ID (1)."&lt;br /&gt;
&lt;br /&gt;
Reading this the task sounds really simple, but when searching there is only an "Add disk" workflow in the library which always crashes if you set the bus ID to 1, cause there isn´t a second SCSI controller.&lt;br /&gt;
Also there is no workflow to add a second SCSI controller and there is no method in the vSphere Client. So I decide to check how the vSphere client handle this event and used Onyx (&lt;a href="http://labs.vmware.com/flings/onyx"&gt;http://labs.vmware.com/flings/onyx&lt;/a&gt;) to look for the used specifications.&lt;br /&gt;
&lt;br /&gt;
So I found out that there is only an "add disk" method in the vSphere Client which automatically adds a second SCSI controller. With this knowledge I build a workflow which adds a second SCSI controller and then a second hard disk on this SCSI controller.&lt;br /&gt;
&lt;br /&gt;
First make a clone of the "createVirtualScsiControllerConfigSpec" action and change the lines:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;controller.key = 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;controller.busNumber = 1;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Now create a new workflow and add a "Scriptable Task" element and the "vim3WaitTaskEnd" action. My IN parameter are: the VM (VC:VirtualMachine), the diskSize (number), the datastore (VC:Datastore) and the thinProvisioned (boolean) switch. The attributes are: task, progress, pollRate.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-rsYyzA_0Ob4/TucwzGKyBSI/AAAAAAAAAPQ/54VtkjrbTc4/s1600/Screen+shot+2011-12-13+at+12.02.14+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="136" src="http://1.bp.blogspot.com/-rsYyzA_0Ob4/TucwzGKyBSI/AAAAAAAAAPQ/54VtkjrbTc4/s400/Screen+shot+2011-12-13+at+12.02.14+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the "Scriptable Task" element I added the lines shown in the screenshot. As you can see I use my cloned action to create the second controller. Than just add the second disk and push all into the array and start the reconfigVM task.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Have fun!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/Z2kO_vlgdUk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/3857436454654037943/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/12/vco-how-to-add-second-scsi-controller.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/3857436454654037943?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/3857436454654037943?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/Z2kO_vlgdUk/vco-how-to-add-second-scsi-controller.html" title="vCO - How to add a second SCSI controller" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-rsYyzA_0Ob4/TucwzGKyBSI/AAAAAAAAAPQ/54VtkjrbTc4/s72-c/Screen+shot+2011-12-13+at+12.02.14+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/12/vco-how-to-add-second-scsi-controller.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QHRn86eCp7ImA9WhRRF0s.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-6384631647047031408</id><published>2011-11-30T12:13:00.001+01:00</published><updated>2011-12-01T20:55:37.110+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-01T20:55:37.110+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="graylog2" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter" /><category scheme="http://www.blogger.com/atom/ns#" term="ESX" /><category scheme="http://www.blogger.com/atom/ns#" term="syslog" /><category scheme="http://www.blogger.com/atom/ns#" term="logging" /><category scheme="http://www.blogger.com/atom/ns#" term="vcenter appliance" /><category scheme="http://www.blogger.com/atom/ns#" term="graylog" /><title>vSphere 5 - VCSA and syslog with graylog2</title><content type="html">As you may know the vCenter Server Appliance can act as a syslog server for the ESX host-systems. The appliance logs all messages into a log partition (/storage/log) what´s not a real feature if you or your customer uses a syslog server. My customer actually uses Graylog2 (&lt;a href="http://graylog2.org/"&gt;http://graylog2.org/&lt;/a&gt;) which is a real cool tool.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-e1WCzyWZoDU/TtYbnG2fThI/AAAAAAAAAO4/bmPvF7UnS5Q/s1600/Screen+shot+2011-11-30+at+1.02.22+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="90" src="http://2.bp.blogspot.com/-e1WCzyWZoDU/TtYbnG2fThI/AAAAAAAAAO4/bmPvF7UnS5Q/s320/Screen+shot+2011-11-30+at+1.02.22+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the base configuration you aren´t able to insert a remote syslog server, so you have to access the vCenter Server appliance with ssh. Here you go to the /etc/syslog-ng directory.&lt;br /&gt;
&lt;br /&gt;
In this directory there is a config file called: syslog-ng.conf which you have to open with an editor (vim/less for example).&lt;br /&gt;
&lt;br /&gt;
Now search the line: &lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;#&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;# Enable this and adopt IP to send log messages to a log server.&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;#&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;#destination logserver { udp("10.10.10.10" port(514)); };&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;#log { source(src); destination(logserver); };&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
end enter your syslog host, port. Please don´t forget to remove the # before the line :) After these settings you can enhance the Global Options to send the fully qualified domain name:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;options { long_hostnames(off); sync(0); perm(0640); stats(3600); use_fqdn(yes); };&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
After the changes restart the syslog deamon with &lt;i&gt;/etc/init.d/syslog restart&lt;/i&gt; and check with &lt;i&gt;tcpdump port 514&lt;/i&gt; if the packages are send.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://3.bp.blogspot.com/-pS2fd6AuuTA/TtYlqro8KBI/AAAAAAAAAPI/WkReIRAOZCM/s1600/Screen+shot+2011-11-30+at+1.46.10+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="105" src="http://3.bp.blogspot.com/-pS2fd6AuuTA/TtYlqro8KBI/AAAAAAAAAPI/WkReIRAOZCM/s320/Screen+shot+2011-11-30+at+1.46.10+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Happy logging!&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/2l5bWmWClDg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/6384631647047031408/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/11/vsphere-5-vcsa-and-syslog-with-graylog.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/6384631647047031408?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/6384631647047031408?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/2l5bWmWClDg/vsphere-5-vcsa-and-syslog-with-graylog.html" title="vSphere 5 - VCSA and syslog with graylog2" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-e1WCzyWZoDU/TtYbnG2fThI/AAAAAAAAAO4/bmPvF7UnS5Q/s72-c/Screen+shot+2011-11-30+at+1.02.22+PM.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/11/vsphere-5-vcsa-and-syslog-with-graylog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ECQXo4fip7ImA9WhRRE0U.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-629671705419114583</id><published>2011-11-24T10:02:00.001+01:00</published><updated>2011-11-27T11:27:40.436+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-27T11:27:40.436+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="vCloud" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="dvSwitch" /><category scheme="http://www.blogger.com/atom/ns#" term="vSphere 5" /><category scheme="http://www.blogger.com/atom/ns#" term="web complexity" /><category scheme="http://www.blogger.com/atom/ns#" term="wavemaker" /><category scheme="http://www.blogger.com/atom/ns#" term="operation" /><category scheme="http://www.blogger.com/atom/ns#" term="web service" /><category scheme="http://www.blogger.com/atom/ns#" term="web portal" /><category scheme="http://www.blogger.com/atom/ns#" term="Parameter" /><title>vCO - wavemaker, your cloud webservice (part II)</title><content type="html">Based on the first article I will show you how to interact with the workflows and give them parameters and receive results. As you might assume this is more complex than only a short "getAllWorkflows", but with wavemaker and some instructions it is much easier than develop web-clients in higher programming languages.&lt;br /&gt;
&lt;br /&gt;
First thing we will need is the workflowId which was displayed in the first tab. To copy the ID from the workflow "getFreeDvPorts" you have to change the options of the dojoGrid.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-8829AhfoJeA/Ts4KXOlcf0I/AAAAAAAAANw/aiMTpiAizsg/s1600/Screen+shot+2011-11-24+at+10.11.44+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-8829AhfoJeA/Ts4KXOlcf0I/AAAAAAAAANw/aiMTpiAizsg/s1600/Screen+shot+2011-11-24+at+10.11.44+AM.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So the "selectionMode" has to be "extended" which allows you to copy the ID of the workflow. Next thing you have to do is to change the IN parameter of the "getFreeDvPorts" workflow into "dvSwitchName" as String and "NumPorts" as Number. I also added an "CriticalGroups" as Array/String OUT parameter. So the inputs are the name of the dvSwitch and the minimum of free ports the port-groups must have. The output shows all critical port-groups without enough ports.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-sFNeNwn_TfI/TtC2RJRFjFI/AAAAAAAAAN4/ShdPMfG2DdI/s1600/Screen+shot+2011-11-26+at+10.49.39+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://4.bp.blogspot.com/-sFNeNwn_TfI/TtC2RJRFjFI/AAAAAAAAAN4/ShdPMfG2DdI/s320/Screen+shot+2011-11-26+at+10.49.39+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In wavemaker, under the tab "getInventory" you can now add 4 textfields:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;username&lt;/li&gt;
&lt;li&gt;password&lt;/li&gt;
&lt;li&gt;dvSwitchName&lt;/li&gt;
&lt;li&gt;FreePorts&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
and a button called "Submit". I also add a TokenID field to control if the workflow is started. Next button is called "Result" and the "dataGrid" is used to show the OUT results of the workflow. I entered the username and password fixed which makes it a bit easier. The page should look like this:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-2GOZKsZRRvI/TtC4sE7prwI/AAAAAAAAAOA/keFKsV_MLYE/s1600/Screen+shot+2011-11-26+at+10.59.15+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="276" src="http://1.bp.blogspot.com/-2GOZKsZRRvI/TtC4sE7prwI/AAAAAAAAAOA/keFKsV_MLYE/s400/Screen+shot+2011-11-26+at+10.59.15+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
First step is to select the submit button and select a new "Service" for the OnClick event. This service I named "executeWf" and select the reference "vCOlab" and the "executeWorkflow" operation. Now the Submit button is linked with the "executeWorkflow" operation.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-icfMn3sDEbM/TtC5rw3WwjI/AAAAAAAAAOQ/m_lSnhSXxKU/s1600/Screen+shot+2011-11-26+at+11.03.21+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="305" src="http://1.bp.blogspot.com/-icfMn3sDEbM/TtC5rw3WwjI/AAAAAAAAAOQ/m_lSnhSXxKU/s320/Screen+shot+2011-11-26+at+11.03.21+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As you can see the "executeWorkflow" operation needs different input parameters. The first two: username and password are easy, cause you only have to bind them to the text fields created in the beginning. The third one is the workflow ID of the "getFreeDvPorts" workflow you can copy from the first "getAllWorkflows" tab (extended editor).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The fourth parameter is very special and William Lam (&lt;a href="http://www.virtuallyghetto.com/"&gt;http://www.virtuallyghetto.com/&lt;/a&gt;) and I had some sleepless nights to get the right method. The input parameters "workflowInputs" are set as an expression not as Array/List or something. So you have to insert the following in the expression field:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-HSo6K14GcBo/TtC7CcqJMnI/AAAAAAAAAOY/zo26z_sB-g8/s1600/Screen+shot+2011-11-26+at+11.09.49+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="203" src="http://3.bp.blogspot.com/-HSo6K14GcBo/TtC7CcqJMnI/AAAAAAAAAOY/zo26z_sB-g8/s320/Screen+shot+2011-11-26+at+11.09.49+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see the value is linked to the text .dataValue from "dvSwitchName" and "FreeDvPorts". So the name and the ports are defined with the text fields. For the control field you have to link the dataValue of the TokenID field to the return value "id" of the executeWf operation.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-UhwnVyEvomI/TtC8R5bVGYI/AAAAAAAAAOg/HneRDw7k2D0/s1600/Screen+shot+2011-11-26+at+11.13.16+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://3.bp.blogspot.com/-UhwnVyEvomI/TtC8R5bVGYI/AAAAAAAAAOg/HneRDw7k2D0/s320/Screen+shot+2011-11-26+at+11.13.16+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will show the TokenID also when pressing "Submit" and this indicates that the workflow is executed in vCenter Orchestrator.&lt;br /&gt;
&lt;br /&gt;
The next step is to create a new Service for the "Result" button. This is the "getWorkflowTokenResult" operation which also needs some input parameters: username, password and workflowTokenId. The first and second is bind to the appropriate text field. The third one is linked to the TokenId dataValue:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-LlWa4oIEqNM/TtC_NkNlM0I/AAAAAAAAAOo/9vavawTlyBI/s1600/Screen+shot+2011-11-26+at+11.27.36+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="124" src="http://3.bp.blogspot.com/-LlWa4oIEqNM/TtC_NkNlM0I/AAAAAAAAAOo/9vavawTlyBI/s320/Screen+shot+2011-11-26+at+11.27.36+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At last you have to bind the dataGrid to the return value of the "getResult" operation. As you can the the empty dataGrid is changed to a name, type and value separation.&lt;br /&gt;
&lt;br /&gt;
If everything is right the execution should look like:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-h2wrykNeUeA/TtDAGTqAzNI/AAAAAAAAAOw/cNQsbVCui78/s1600/Screen+shot+2011-11-26+at+11.31.40+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://4.bp.blogspot.com/-h2wrykNeUeA/TtDAGTqAzNI/AAAAAAAAAOw/cNQsbVCui78/s320/Screen+shot+2011-11-26+at+11.31.40+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, I hope this more complex scenario helps you to speed up your personal cloud portal with wavemaker and vCO.&lt;br /&gt;
&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/ZpL2X-VkJl0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/629671705419114583/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/11/vco-wavemaker-your-cloud-webservice_24.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/629671705419114583?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/629671705419114583?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/ZpL2X-VkJl0/vco-wavemaker-your-cloud-webservice_24.html" title="vCO - wavemaker, your cloud webservice (part II)" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-8829AhfoJeA/Ts4KXOlcf0I/AAAAAAAAANw/aiMTpiAizsg/s72-c/Screen+shot+2011-11-24+at+10.11.44+AM.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/11/vco-wavemaker-your-cloud-webservice_24.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IBRnw9cSp7ImA9WhRRFkg.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-1718328310710074301</id><published>2011-11-23T11:37:00.000+01:00</published><updated>2011-11-30T14:25:57.269+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T14:25:57.269+01:00</app:edited><title>mighty virtualization - layout change</title><content type="html">I decided to change the layout to a more dynamic one (thanks blogspot). I think this one looks better and it´s better to read :)&lt;br /&gt;
&lt;br /&gt;
UPDATE: Had to change it back cause the links where broken and displayed wrong :(&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/KcvPzGQPBEc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/1718328310710074301/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/11/mighty-virtualization.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/1718328310710074301?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/1718328310710074301?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/KcvPzGQPBEc/mighty-virtualization.html" title="mighty virtualization - layout change" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/11/mighty-virtualization.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQMSX4-cCp7ImA9WhRREkw.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-1620048923729723525</id><published>2011-11-18T08:51:00.001+01:00</published><updated>2011-11-25T11:53:08.058+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-25T11:53:08.058+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vSphere API" /><category scheme="http://www.blogger.com/atom/ns#" term="ports" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="dvSwitch" /><category scheme="http://www.blogger.com/atom/ns#" term="free" /><category scheme="http://www.blogger.com/atom/ns#" term="port-group" /><category scheme="http://www.blogger.com/atom/ns#" term="switch" /><category scheme="http://www.blogger.com/atom/ns#" term="DVS" /><category scheme="http://www.blogger.com/atom/ns#" term="Distributed Virtual Switch" /><title>vCO - how to determine free dvSwitch ports</title><content type="html">Last week one of my customers ask for a method to report the free ports of all dvSwitch port-groups. First step I try was to look in the API explorer for a "freePorts" parameter, but there wasn´t one. So I developed a litte workflow including some loops (Thanks to Christophe for the bookmarked vCOteam article: &lt;a href="http://www.vcoteam.info/learn-vco/creating-workflow-loops.html" target="_blank"&gt;Creating workflow loops&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
The loops are necessary because of the unknown count of port-groups on the dvSwitch. So the whole workflow looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-szeM0ziPGHA/TsYX1RUOx9I/AAAAAAAAANU/EJAQBJ6Z-8w/s1600/Screen+shot+2011-11-18+at+9.26.42+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="289" src="http://4.bp.blogspot.com/-szeM0ziPGHA/TsYX1RUOx9I/AAAAAAAAANU/EJAQBJ6Z-8w/s320/Screen+shot+2011-11-18+at+9.26.42+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IN parameters are: DVports(String or number) and DVswitch (VC:DistributedVirtualSwitch). The DVports define the minimum available ports for the port groups and the DVswitch is the Switch to test on.&lt;br /&gt;
&lt;br /&gt;
The first element "getAllPortGroups" gets all port-groups and test if it is a uplink port-group which I don´t want to test. The result is an array filled with all port-groups.&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;var DVSgroups = new Array();&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;for(i in DVS.portgroup){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if(DVS.portgroup[i].config.name.match("Uplink")){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;System.log("Port-group is uplink port-group.");&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;else{&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;DVSgroups.push(DVS.portgroup[i]);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next element "LoopSetup" sets the number of port-groups for the looping (DVSnb = DVSgroups.length;) and the following decision tests if the DVSnb is greater than 0 which allows you to iterate over every port-group.&amp;nbsp;If the decision is true the counter will be lowered in the next step (counter = counter-1;) and the actual port-group is set in the next task (DVportGroup = DVSgroups[DVSnb];).&lt;br /&gt;
&lt;br /&gt;
Now we have one port-group to test on (screenshot, cause the code raises an error in blogspot):&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-ad_7rWn4Kc4/TsY6WEeWsKI/AAAAAAAAANg/N-gXbb1H1_I/s1600/Screen+shot+2011-11-18+at+11.57.43+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://2.bp.blogspot.com/-ad_7rWn4Kc4/TsY6WEeWsKI/AAAAAAAAANg/N-gXbb1H1_I/s400/Screen+shot+2011-11-18+at+11.57.43+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see I decided to count the connectees (VM Nics) of the port-groups to ensure that double used ports are counted.&lt;br /&gt;
&lt;br /&gt;
I hope this helps you to find some free ports :)&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/zLCcgWJ1U-4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/1620048923729723525/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/11/vco-how-to-determine-free-dvswitch.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/1620048923729723525?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/1620048923729723525?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/zLCcgWJ1U-4/vco-how-to-determine-free-dvswitch.html" title="vCO - how to determine free dvSwitch ports" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-szeM0ziPGHA/TsYX1RUOx9I/AAAAAAAAANU/EJAQBJ6Z-8w/s72-c/Screen+shot+2011-11-18+at+9.26.42+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/11/vco-how-to-determine-free-dvswitch.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMFRHwyeyp7ImA9WhRREkw.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-1609672885830160978</id><published>2011-11-16T20:36:00.001+01:00</published><updated>2011-11-25T11:53:35.293+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-25T11:53:35.293+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="SOAP" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO reference" /><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud portal" /><category scheme="http://www.blogger.com/atom/ns#" term="web complexity" /><category scheme="http://www.blogger.com/atom/ns#" term="wavemaker" /><category scheme="http://www.blogger.com/atom/ns#" term="interface" /><category scheme="http://www.blogger.com/atom/ns#" term="web service" /><category scheme="http://www.blogger.com/atom/ns#" term="WSDL" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud service" /><category scheme="http://www.blogger.com/atom/ns#" term="web portal" /><title>vCO - wavemaker, your cloud webservice (part I)</title><content type="html">Many of you noticed that VMware acquired wavemaker (&lt;a href="http://dev.wavemaker.com/blog/2011/03/08/wavemaker-springs-to-vmware/" target="_blank"&gt;acquisition&lt;/a&gt;) in march this year. When searching for a WebView (included in vCenter Orchestrator) alternative I decided to take a look on wavemaker. I was really surprised how easy it was to start with a simple web portal as showcase for my customers. The biggest advantage in my opinion is the simple access to the SOAP based vCenter Orchestrator interface which allows you to build web portals an applications without any knowledge of a higher programming language.&lt;br /&gt;
&lt;br /&gt;
With this series I want to show you three examples:&lt;br /&gt;
&lt;br /&gt;
1. Get all Workflows&lt;br /&gt;
2. Get free DVS port-group ports&lt;br /&gt;
3. Clone a simple VM&lt;br /&gt;
&lt;br /&gt;
After the installation of wavemaker on my MacBook Pro the Wavemaker GUI is shown in my browser (http://localhost:8094/wavemaker/). At first I have to open a new project and define the basic layout (you can customize the layout later):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-xPO_Cjx5GPc/TsQS1UE8caI/AAAAAAAAALg/6wLzw_YLQI4/s1600/Screen+shot+2011-11-16+at+8.25.14+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" src="http://1.bp.blogspot.com/-xPO_Cjx5GPc/TsQS1UE8caI/AAAAAAAAALg/6wLzw_YLQI4/s320/Screen+shot+2011-11-16+at+8.25.14+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I normally use the "no_theme" option because of it´s slick design. Next step is to create a WebService reference under "Service" in the main menu. Please note that you have to install the &lt;b&gt;&lt;i&gt;wsdl4j.jar&lt;/i&gt;&lt;/b&gt; library first.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Ne7HGd4TWVc/TsQS5C-AbSI/AAAAAAAAAMI/o1LBztJu5uQ/s1600/Screen+shot+2011-11-16+at+8.29.22+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="http://1.bp.blogspot.com/-Ne7HGd4TWVc/TsQS5C-AbSI/AAAAAAAAAMI/o1LBztJu5uQ/s400/Screen+shot+2011-11-16+at+8.29.22+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I named my reference "vCOreference" and insert several elements in the main layout box: 2 text boxes (name/caption username and password), one button (name/caption Submit) and a datagrid below those elements. I also named the tabs as the further functionality: getAllWorkflows, getInventory and cloneVM. Please note that you have to select "password" for the password textbox to ensure the hidden input.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-8A7Sif8DP_w/TsQS2wxJ7nI/AAAAAAAAAL0/0-iMFIkgYeQ/s1600/Screen+shot+2011-11-16+at+8.27.27+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-8A7Sif8DP_w/TsQS2wxJ7nI/AAAAAAAAAL0/0-iMFIkgYeQ/s400/Screen+shot+2011-11-16+at+8.27.27+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now I select the "Submit" button an pick the "events" text on the right side of the navigation. Then I choose "New Service" for the "OnClick" event. This means that when the button is clicked the service variable is called.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;a href="http://4.bp.blogspot.com/-LDrmOjlP0-w/TsQXNAyjBeI/AAAAAAAAANE/pCBjvto3e5Q/s1600/Screen+shot+2011-11-16+at+9.03.44+PM.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="304" src="http://4.bp.blogspot.com/-LDrmOjlP0-w/TsQXNAyjBeI/AAAAAAAAANE/pCBjvto3e5Q/s320/Screen+shot+2011-11-16+at+9.03.44+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
After the selection is made wavemaker switches to the Services view and I choose the service I want to use with the new variable.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Fg9JAiqzQeM/TsQS6RH4cQI/AAAAAAAAAMc/vYFJAUHj8EU/s1600/Screen+shot+2011-11-16+at+8.30.36+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-Fg9JAiqzQeM/TsQS6RH4cQI/AAAAAAAAAMc/vYFJAUHj8EU/s400/Screen+shot+2011-11-16+at+8.30.36+PM.png" width="173" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
Remember the first use case I choose the "getAllWorkflows" method. After this selection I link the input variables (username/password) to the text boxes designed at the beginning of this article.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-kGtKCbsT7nI/TsQS7Vlj8iI/AAAAAAAAAMk/mryhOSKcsQE/s1600/Screen+shot+2011-11-16+at+8.31.32+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="301" src="http://3.bp.blogspot.com/-kGtKCbsT7nI/TsQS7Vlj8iI/AAAAAAAAAMk/mryhOSKcsQE/s320/Screen+shot+2011-11-16+at+8.31.32+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
Now the variables are linked with the inputs of the SOAP call. As you might imagined I want the data grid to show the result of the "getAllWorkflows" method. This is also really simple: Just click on the data grid and click the bracket beside "data set" in the right navigation pane. In the displayed binding list just choose the first (list) parameter.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-RWtut5QmHts/TsQS8rC9U-I/AAAAAAAAAMs/35ndcvAf2eY/s1600/Screen+shot+2011-11-16+at+8.32.04+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://4.bp.blogspot.com/-RWtut5QmHts/TsQS8rC9U-I/AAAAAAAAAMs/35ndcvAf2eY/s400/Screen+shot+2011-11-16+at+8.32.04+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
With this selection the data grid changes it´s layout into the return parameters (id, name, description) automatically. Now you can save the project and press "Run" on top of the page. After giving the credentials and pressing the "Submit" button all workflows are displayed in the data grid.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-19T2qUyo-AQ/TsQaRcnxZzI/AAAAAAAAANM/kmA1PDO6c8E/s1600/Screen+shot+2011-11-16+at+9.00.29+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="http://2.bp.blogspot.com/-19T2qUyo-AQ/TsQaRcnxZzI/AAAAAAAAANM/kmA1PDO6c8E/s400/Screen+shot+2011-11-16+at+9.00.29+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
As you can see I used only 10-15 clicks to establish a SOAP connection and a small web portal. So my opinion is: &lt;b&gt;"Wavemaker rocks!"&lt;/b&gt; This is really an alternative to the included WebViews and allows you to build web services and web portals from the scratch without any knowledge in programming languages!&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/gX94-fJrAeQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/1609672885830160978/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/11/vco-wavemaker-your-cloud-webservice.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/1609672885830160978?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/1609672885830160978?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/gX94-fJrAeQ/vco-wavemaker-your-cloud-webservice.html" title="vCO - wavemaker, your cloud webservice (part I)" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-xPO_Cjx5GPc/TsQS1UE8caI/AAAAAAAAALg/6wLzw_YLQI4/s72-c/Screen+shot+2011-11-16+at+8.25.14+PM.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/11/vco-wavemaker-your-cloud-webservice.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEHR344fip7ImA9WhdQFk0.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-2258729085523674943</id><published>2011-08-17T21:00:00.000+02:00</published><updated>2011-08-17T21:00:36.036+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-17T21:00:36.036+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director" /><category scheme="http://www.blogger.com/atom/ns#" term="vLM auomation" /><category scheme="http://www.blogger.com/atom/ns#" term="vCD automation" /><category scheme="http://www.blogger.com/atom/ns#" term="SOAP" /><category scheme="http://www.blogger.com/atom/ns#" term="vLM" /><category scheme="http://www.blogger.com/atom/ns#" term="migration" /><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><category scheme="http://www.blogger.com/atom/ns#" term="LabManager" /><category scheme="http://www.blogger.com/atom/ns#" term="vCD" /><title>vCO - VMware LabManager migration to vCloud Director (part 1)</title><content type="html">Awaiting my new hardware for testing the vLM to vCD migration I decided to give you an theoretical overview how the migration is realized. First thing I had to learn was that a vCD registered host could not act as an vLM host because of a higher agent version on the host (version 5). Unfortunately I forgot to make a screenshot (will repeat that with the new lab).&lt;br /&gt;
&lt;br /&gt;
With this knowledge there is only one option: vLM with vCenter Server 4 and vCD with vCenter Server 5, both registered in the vCenter Orchestrator.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-v-KHh3paPLQ/TkwBJ4renII/AAAAAAAAALA/qnFHMvB-z3s/s1600/vLM_road-to_vCD_part1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-v-KHh3paPLQ/TkwBJ4renII/AAAAAAAAALA/qnFHMvB-z3s/s320/vLM_road-to_vCD_part1.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When migrating to vSphere 5 this could be a one-time scenario. Maybe there are two environments -&amp;gt; the "old" vSphere 4 with vCenter Server 4.x, ESX/ESXi 4.x and VMware LabManager 4.x.x and the "new" one with vCenter 5, ESX 5 and vCD 1.x.&lt;br /&gt;
&lt;br /&gt;
The migration scenario I want to build up is divided into the following steps:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Archiving the vLM VMs into the Library&lt;/li&gt;
&lt;li&gt;Export of the archived VMs to a "transfer" NFS datastore&lt;/li&gt;
&lt;li&gt;Creation of the "old" configuration as vApp in the vCD&lt;/li&gt;
&lt;li&gt;Import of the exported vLM VMs as new vCD VMs&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;Really simple, or what?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I think I will need several SOAP workflows for the vLM to export the VMs in a consistent state to the "transfer" datastore. Next thing is to create the configuration in the vCD and register the VMs as new vApps or VMs in the vCD.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Please be patient, in the next 2 weeks I will test it and create a manual for the migration including the vCO packages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;In the meantime... have a look upon the new &lt;a href="http://www.vcoteam.info/newsflash/vmware-released-the-amqp-plug-in.html"&gt;AMQP Plug-In&lt;/a&gt;!&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/ZXNHTCTNqZk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/2258729085523674943/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/08/vco-vmware-labmanager-migration-to.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/2258729085523674943?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/2258729085523674943?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/ZXNHTCTNqZk/vco-vmware-labmanager-migration-to.html" title="vCO - VMware LabManager migration to vCloud Director (part 1)" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-v-KHh3paPLQ/TkwBJ4renII/AAAAAAAAALA/qnFHMvB-z3s/s72-c/vLM_road-to_vCD_part1.jpg" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/08/vco-vmware-labmanager-migration-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4CQXY_fip7ImA9WhdQEU4.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-3414104404734438566</id><published>2011-08-10T23:34:00.014+02:00</published><updated>2011-08-12T10:32:40.846+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-12T10:32:40.846+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vmx" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="VMX parameter" /><category scheme="http://www.blogger.com/atom/ns#" term="vmx options" /><category scheme="http://www.blogger.com/atom/ns#" term="VMX automation" /><category scheme="http://www.blogger.com/atom/ns#" term="VcOptionValues" /><category scheme="http://www.blogger.com/atom/ns#" term="OptionValue" /><title>vCO - what´s up with VcOptionValue?</title><content type="html">Based on my article about the fixed VM boot order and the used VcOptionValue I investigate some time to figure out what else we can do with these parameters. The main statement in my opinion is: "It is the .vmx extension as API data object.".&lt;br /&gt;
&lt;br /&gt;
As described in the API reference:&amp;nbsp;&lt;a href="http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/index.html"&gt;OptionValue&lt;/a&gt;&amp;nbsp;we know that there are two properties: key and value, as used in many other objects.&lt;br /&gt;
&lt;br /&gt;
The things which aren´t described are the keys and the values :( The thing I know from the powershell scripts was the "bios.bootDeviceClasses" key in my last article:&amp;nbsp;&lt;a href="http://mighty-virtualization.blogspot.com/2011/06/vco-change-vms-boot-order.html"&gt;VM Boot order&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
After some investigation I found several other keys and values described by Ulli Hankeln at:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://sanbarrow.com/vmx/vmx-advanced.html"&gt;http://sanbarrow.com/vmx/vmx-advanced.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
With the knowledge of these parameters it is really easy to automate your .vmx parameters. Especially the uuid parameters ("I copied this VM"), could make your life easier.&lt;br /&gt;
&lt;br /&gt;
Here is one example to automate the &lt;a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;amp;cmd=displayKC&amp;amp;externalId=196"&gt;KB196&lt;/a&gt; change (repeated characters in VM console) which comes up very often in Linux-VMs:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-RR5Yal_9b9I/TkTee_RGIEI/AAAAAAAAAK8/93_WYlyo6V0/s1600/Screen+shot+2011-08-12+at+10.03.46+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://3.bp.blogspot.com/-RR5Yal_9b9I/TkTee_RGIEI/AAAAAAAAAK8/93_WYlyo6V0/s320/Screen+shot+2011-08-12+at+10.03.46+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please find the .package file for download at google-docs:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;a href="https://docs.google.com/leaf?id=0B-albCIDFQtYZDUxYjU3ZWItMTc4MC00YjIzLWI0YzAtYTJmNjE2NGYwMDI0&amp;amp;hl=en_US"&gt;de.cjohannen.local.KB196.package&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If you have use-cases, please let me know how you change the rules :)&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/xP3_r0JepqU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/3414104404734438566/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/08/vco-whats-up-with-vcoptionvalue.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/3414104404734438566?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/3414104404734438566?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/xP3_r0JepqU/vco-whats-up-with-vcoptionvalue.html" title="vCO - what´s up with VcOptionValue?" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-RR5Yal_9b9I/TkTee_RGIEI/AAAAAAAAAK8/93_WYlyo6V0/s72-c/Screen+shot+2011-08-12+at+10.03.46+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/08/vco-whats-up-with-vcoptionvalue.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkECQX46cCp7ImA9WhdSFkU.&quot;"><id>tag:blogger.com,1999:blog-4479559294098558595.post-4563290049730325031</id><published>2011-07-26T15:43:00.001+02:00</published><updated>2011-07-26T15:57:40.018+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-26T15:57:40.018+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vExpert" /><category scheme="http://www.blogger.com/atom/ns#" term="vCO" /><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator" /><category scheme="http://www.blogger.com/atom/ns#" term="Christian Johannsen" /><title>vExpert 2011 - Christian Johannsen</title><content type="html">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.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dkYh7Lv0gXU/Ti7Ecqzh2II/AAAAAAAAAHk/ftUBCsv4RSw/s1600/Screen+shot+2011-07-26+at+3.42.53+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-dkYh7Lv0gXU/Ti7Ecqzh2II/AAAAAAAAAHk/ftUBCsv4RSw/s1600/Screen+shot+2011-07-26+at+3.42.53+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
So, thanks folks! :)&lt;img src="http://feeds.feedburner.com/~r/MightyVirtualization/~4/eVk7DTHSM7w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mighty-virtualization.blogspot.com/feeds/4563290049730325031/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://mighty-virtualization.blogspot.com/2011/07/vexpert-2011-christian-johannsen.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/4563290049730325031?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4479559294098558595/posts/default/4563290049730325031?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MightyVirtualization/~3/eVk7DTHSM7w/vexpert-2011-christian-johannsen.html" title="vExpert 2011 - Christian Johannsen" /><author><name>Christian Johannsen</name><uri>http://www.blogger.com/profile/05436107822493548471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_ctSUxQyMOqI/TQ-iLAiPUUI/AAAAAAAAAFc/ZXpfc9OS1xU/S220/DSC00134_smaller.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-dkYh7Lv0gXU/Ti7Ecqzh2II/AAAAAAAAAHk/ftUBCsv4RSw/s72-c/Screen+shot+2011-07-26+at+3.42.53+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mighty-virtualization.blogspot.com/2011/07/vexpert-2011-christian-johannsen.html</feedburner:origLink></entry></feed>
