<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' 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'><id>tag:blogger.com,1999:blog-4479559294098558595</id><updated>2026-08-19T20:18:01.021+02:00</updated><category term="vCO"/><category term="vCenter Orchestrator"/><category term="vSphere 4.1"/><category term="Orchestrator"/><category term="VMware"/><category term="automation"/><category term="vCloud Director"/><category term="Andreas"/><category term="Diemer"/><category term="SOAP"/><category term="vCAC"/><category term="vCloud Automation Center"/><category term="REST"/><category term="Webservice"/><category term="dvSwitch"/><category term="vCenter"/><category term="vCloud"/><category term="powershell"/><category term="workflow"/><category term="Active-Directory"/><category term="Parameter"/><category term="Portal"/><category term="SSL"/><category term="WSDL"/><category term="XML"/><category term="chain length"/><category term="consolidate"/><category term="java"/><category term="plug-in"/><category term="rights"/><category term="secure"/><category term="vCD"/><category term="vCO 5.1"/><category term="vLM"/><category term="wavemaker"/><category term=".NET"/><category term="AD"/><category term="API"/><category term="Christian Johannsen"/><category term="DVS"/><category term="ESX"/><category term="ESXi"/><category term="JavaScript"/><category term="PowerCLI"/><category term="SOAP client"/><category term="bug"/><category term="c#"/><category term="certificate"/><category term="client"/><category term="cloud portal"/><category term="custom properties"/><category term="deployment"/><category term="https"/><category term="keytool"/><category term="ldap"/><category term="ldaps"/><category term="migration"/><category term="orchestration"/><category term="vCD automation"/><category term="vCloud API"/><category term="vSphere API"/><category term="vb"/><category term="vmx"/><category term="web complexity"/><category term="web portal"/><category term="web service"/><category term="2008"/><category term="AAM"/><category term="AdvancedSettings"/><category term="Altiris"/><category term="Altiris ASDK"/><category term="Altiris DS"/><category term="Altiris SDK"/><category term="Altiris automation"/><category term="Array"/><category term="Auto deploy"/><category term="BlueARC"/><category term="Cisco UCS"/><category term="Cluster"/><category term="Database"/><category term="Design Center"/><category term="Dictionary"/><category term="Distributed Virtual Switch"/><category term="ExecutePowershell"/><category term="Extensibility"/><category term="ExternalWFStubs"/><category term="HA"/><category term="HDS"/><category term="Hitachi"/><category term="InvokePowershellCommand"/><category term="JSON"/><category term="Jumbo Frames"/><category term="LabManager"/><category term="MTU"/><category term="OOTB"/><category term="OUT"/><category term="OptionValue"/><category term="Oracle"/><category term="PHP"/><category term="PXE"/><category term="PortGroup"/><category term="PyvCO"/><category term="RegExp"/><category term="SCSI"/><category term="SCSI Controller"/><category term="SOAP plug-in"/><category term="TFTP"/><category term="VM config"/><category term="VMX automation"/><category term="VMX parameter"/><category term="VMware Service Manager"/><category term="VMworld"/><category term="VS 2012"/><category term="VcOptionValue"/><category term="VcOptionValues"/><category term="VclHost"/><category term="WebClient"/><category term="Workflow Solution"/><category term="access"/><category term="action"/><category term="add host"/><category term="appliance"/><category term="blueprint"/><category term="boot device"/><category term="boot image"/><category term="boot order"/><category term="bus"/><category term="bus id"/><category term="cacerts"/><category term="calendar picker"/><category term="call"/><category term="class"/><category term="cloud service"/><category term="configs"/><category term="configurations"/><category term="connection lost"/><category term="consolidation"/><category term="credentials"/><category term="csv"/><category term="custom property"/><category term="datastore"/><category term="defaultPortConfig"/><category term="domain"/><category term="dunes"/><category term="dvPort"/><category term="dvPortGroup"/><category term="dvportsetting"/><category term="endpoint"/><category term="entitlement"/><category term="error"/><category term="experience"/><category term="fast"/><category term="feature"/><category term="find vlanId"/><category term="firewall"/><category term="float"/><category term="free"/><category term="graylog"/><category term="graylog2"/><category term="host.login"/><category term="http://www.blogger.com/img/blank.gif"/><category term="in-parameter"/><category term="installation"/><category term="int"/><category term="integration"/><category term="interface"/><category term="ip"/><category term="ip address"/><category term="jQuery UI"/><category term="java.util"/><category term="kb"/><category term="keystore"/><category term="language"/><category term="logging"/><category term="login"/><category term="long"/><category term="name"/><category term="new"/><category term="operation"/><category term="organization"/><category term="organizations"/><category term="output"/><category term="perfmon"/><category term="performance"/><category term="physical"/><category term="phyton"/><category term="plugin"/><category term="port-group"/><category term="ports"/><category term="post"/><category term="premature end of file"/><category term="problem"/><category term="programming language"/><category term="regular expression"/><category term="reserve"/><category term="role"/><category term="roles"/><category term="ruby"/><category term="scripting"/><category term="second SCSI controller"/><category term="second bus"/><category term="self-service"/><category term="serialize"/><category term="serilization"/><category term="server"/><category term="service"/><category term="sql express"/><category term="stateless ESXi"/><category term="stub"/><category term="suds"/><category term="switch"/><category term="syslog"/><category term="text file"/><category term="troubleshooting"/><category term="txt"/><category term="unzip"/><category term="updateOptions"/><category term="uplink"/><category term="vApp"/><category term="vCAC 4.5"/><category term="vCAC 5.1"/><category term="vCAC 5.2"/><category term="vCAC 6"/><category term="vCO clone"/><category term="vCO deployment"/><category term="vCO reference"/><category term="vCenter Server Appliance"/><category term="vExpert"/><category term="vLM auomation"/><category term="vLM automation"/><category term="vSM"/><category term="vSphere 5"/><category term="vSphere 5.1"/><category term="values"/><category term="vb .net"/><category term="vcap"/><category term="vcap-dca"/><category term="vcenter appliance"/><category term="vlan id"/><category term="vmware orchestrator bug Andreas Diemer"/><category term="vmx options"/><category term="web client"/><category term="web.config"/><category term="workflow call"/><category term="workflowName"/><category term="workspaces"/><category term="x64"/><category term="xaml"/><category term="zip"/><title type='text'>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='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.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'/><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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4479559294098558595.post-968163375677997913</id><published>2014-08-06T22:15:00.000+02:00</published><updated>2014-08-06T22:15:13.616+02:00</updated><title type='text'>Time is running...</title><content type='html'>... and I decided to follow my mind into a new adventure :)&lt;br /&gt;
&lt;br /&gt;
With the first of August I started as Systems Engineer at Datastax (&lt;a href=&quot;http://www.datastax.com/&quot;&gt;http://www.datastax.com&lt;/a&gt;) and launched a new blog (&lt;a href=&quot;http://datatomix.com/&quot;&gt;http://datatomix.com&lt;/a&gt;)!&lt;br /&gt;
&lt;br /&gt;
So feel free to check both out!&lt;br /&gt;
&lt;br /&gt;
I look forward to meet some of you in person and to have chat about the new cool shit :)</content><link rel='replies' type='application/atom+xml' href='http://mighty-virtualization.blogspot.com/feeds/968163375677997913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mighty-virtualization.blogspot.com/2014/08/time-is-running.html#comment-form' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/968163375677997913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/968163375677997913'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2014/08/time-is-running.html' title='Time is running...'/><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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><thr:total>36</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4479559294098558595.post-7265525940797769118</id><published>2013-12-12T13:10:00.001+01:00</published><updated>2013-12-12T14:37:26.599+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="action"/><category scheme="http://www.blogger.com/atom/ns#" term="deployment"/><category scheme="http://www.blogger.com/atom/ns#" term="endpoint"/><category scheme="http://www.blogger.com/atom/ns#" term="entitlement"/><category scheme="http://www.blogger.com/atom/ns#" term="service"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC 6"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Automation Center"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO clone"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO deployment"/><title type='text'>vCAC - How to use vCenter Orchestrator as deployment option in vCAC</title><content type='html'>Since yesterday vCloud Automation Center is GA, what gives me the chance to write some news using vClou Automation Center and the vCenter Orchestrator. First thing to note is that vCenter Orchestrator comes included in vCloud Automation Center and this allows a real quick service integration.&lt;br /&gt;
&lt;br /&gt;
Most of my customer ask: Why should I use the vCloud Automation Center workflow for the virtual machine deployment, if vCenter Orchestrator offers the same capability? To be honest, I think using vCloud Automation Center only is the fastest way to deploy and manage virtual machine, hardware hosts and external cloud instances...&lt;br /&gt;
&lt;br /&gt;
But if you want to deploy virtual machines using vCenter Orchestrator here is how:&lt;br /&gt;
&lt;br /&gt;
At first you have to create an Advanced Services vCenter endpoint.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglvaUGPaBMBHq38jzcEqF0beeZ64UyiT5m36DRCvXe5NYkTcxL_uZtnecVFAa2K9HyOppO2ER6_oie8JcfOEYSDjWS86xdQffmnEFmuxuH9NIGDdtuPhyphenhyphenTs-puh9y-Ve3fTvfu3sRPdzkK/s1600/Screen+Shot+2013-12-12+at+12.49.50.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglvaUGPaBMBHq38jzcEqF0beeZ64UyiT5m36DRCvXe5NYkTcxL_uZtnecVFAa2K9HyOppO2ER6_oie8JcfOEYSDjWS86xdQffmnEFmuxuH9NIGDdtuPhyphenhyphenTs-puh9y-Ve3fTvfu3sRPdzkK/s400/Screen+Shot+2013-12-12+at+12.49.50.png&quot; width=&quot;400&quot; /&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;
This creates a vCenter endpoint in the vCenter Orchestrator which allows you to create services. Now you can create a Resource Type element for a new virtual machine (VC:VirtualMachine).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd_HKdf0ieO0lPfxD1yGaebVwwem_GgELB6GBj_X50wrsnprcs81M_NRseU4HVm5L7agJPihYCnMxhsK0jqXwJPPahiZuFhDVlqN1nj-5QRA0PWm1VNhJklp1L7gEJsvYedSdzdf_ejyME/s1600/Screen+Shot+2013-12-12+at+12.55.06.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd_HKdf0ieO0lPfxD1yGaebVwwem_GgELB6GBj_X50wrsnprcs81M_NRseU4HVm5L7agJPihYCnMxhsK0jqXwJPPahiZuFhDVlqN1nj-5QRA0PWm1VNhJklp1L7gEJsvYedSdzdf_ejyME/s400/Screen+Shot+2013-12-12+at+12.55.06.png&quot; width=&quot;400&quot; /&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;
The next step is the creation of a Service Blueprint, using the vCenter Orchestrator workflow.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIFH9v0tgi2_JpoJl9uFAMlRwjkqQCmH63Wuta03hks4NZQPFhymlXeISX0b-ZMEkLpHaXsARNM8opQE70uMeAO2S-rC37OkMCx5DkkAHOA0XgMv_Xt42adZC6EQTyGt_D93FkTW5Nx32s/s1600/Screen+Shot+2013-12-12+at+12.57.01.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIFH9v0tgi2_JpoJl9uFAMlRwjkqQCmH63Wuta03hks4NZQPFhymlXeISX0b-ZMEkLpHaXsARNM8opQE70uMeAO2S-rC37OkMCx5DkkAHOA0XgMv_Xt42adZC6EQTyGt_D93FkTW5Nx32s/s400/Screen+Shot+2013-12-12+at+12.57.01.png&quot; width=&quot;400&quot; /&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;
After the blueprint form is customized you can add Resource Actions to allow operations on the new object (VC:VirtualMachine). In my lab I choose &quot;Power On&quot; and &quot;Power Off&quot; using the vCenter Orchestrator Workflows.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDRJ7usgYZcuIuxepqJzpwZsC8V9vAuU2tWDKWFXXE_CsAK5EgjVjK7dMVN-wVLyytqiY4Q0_IebwYly44GlJq1u7p7NbdZ3BlXhOrWQkILOqpxip6Rbg6LC4_KVWmV-b77vpZYGrKYC0q/s1600/Screen+Shot+2013-12-12+at+12.59.54.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDRJ7usgYZcuIuxepqJzpwZsC8V9vAuU2tWDKWFXXE_CsAK5EgjVjK7dMVN-wVLyytqiY4Q0_IebwYly44GlJq1u7p7NbdZ3BlXhOrWQkILOqpxip6Rbg6LC4_KVWmV-b77vpZYGrKYC0q/s400/Screen+Shot+2013-12-12+at+12.59.54.png&quot; width=&quot;400&quot; /&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;
The last step you have to do is to publish the Service Blueprint and the Resource Actions.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2LHvGJ1OOSflfQhPPTvwHX8yKWpMhzNRmAxCrg4BxuPk0KoHvNie0vCm_X6Q8BNNvtxV5eZ0NzeM0F5wiFHH3hw7fD6cIJMX4_GkNHtOfqI-ehAOIOK3OQaudqjqkNVLBWP_OIUhC3FJO/s1600/Screen+Shot+2013-12-12+at+13.02.33.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2LHvGJ1OOSflfQhPPTvwHX8yKWpMhzNRmAxCrg4BxuPk0KoHvNie0vCm_X6Q8BNNvtxV5eZ0NzeM0F5wiFHH3hw7fD6cIJMX4_GkNHtOfqI-ehAOIOK3OQaudqjqkNVLBWP_OIUhC3FJO/s400/Screen+Shot+2013-12-12+at+13.02.33.png&quot; width=&quot;400&quot; /&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;
Congrats! This is you first service :) To allow the users to access this service as part of their Catalog you have to create an item in: &quot;Administration&quot; -&amp;gt; &quot;Catalog Management&quot; -&amp;gt; &quot;Services&quot; and then you have to entitle all elements for this service under &quot;Administration&quot; -&amp;gt; &quot;Catalog Management&quot; -&amp;gt; &quot;Entitlements&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSyfdcahjb8SjASaWVDQM0dDF4A6QOqFbV_mgCopaYo6NPtNNL4PXa_B1D84fKwCsZkDNhmpuNHYHzbyGZ-BvZ86S6bL-QkijjydKnXD0SAW-JK3hvurU_8-Mhfp7oIbm_pyJsRVbgm2YG/s1600/Screen+Shot+2013-12-12+at+13.05.09.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSyfdcahjb8SjASaWVDQM0dDF4A6QOqFbV_mgCopaYo6NPtNNL4PXa_B1D84fKwCsZkDNhmpuNHYHzbyGZ-BvZ86S6bL-QkijjydKnXD0SAW-JK3hvurU_8-Mhfp7oIbm_pyJsRVbgm2YG/s400/Screen+Shot+2013-12-12+at+13.05.09.png&quot; width=&quot;400&quot; /&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 entitlements your users are now able to order the virtual machine using vCenter Orchestrator as deployment option. With the Actions they can also use the vCenter Orchestrator workflows to manage the virtual machine.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWqaEFqOQefQR_9NZnE51v0VQATrods56AAh8ep3cMvGDi84Nylcjn4wI6QU6ryqnj1Tk4r4nu5miv4og5VfIECpURMuE3wgYb3aZc22aLpzlGM3HfnYvwXz7F80iW2h_sT9up6xBayhMs/s1600/Screen+Shot+2013-12-12+at+13.18.23.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWqaEFqOQefQR_9NZnE51v0VQATrods56AAh8ep3cMvGDi84Nylcjn4wI6QU6ryqnj1Tk4r4nu5miv4og5VfIECpURMuE3wgYb3aZc22aLpzlGM3HfnYvwXz7F80iW2h_sT9up6xBayhMs/s400/Screen+Shot+2013-12-12+at+13.18.23.png&quot; width=&quot;400&quot; /&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;
Have fun!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mighty-virtualization.blogspot.com/feeds/7265525940797769118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mighty-virtualization.blogspot.com/2013/12/vcac-how-to-use-vcenter-orchestrator-as.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/7265525940797769118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/7265525940797769118'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2013/12/vcac-how-to-use-vcenter-orchestrator-as.html' title='vCAC - How to use vCenter Orchestrator as deployment option in vCAC'/><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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglvaUGPaBMBHq38jzcEqF0beeZ64UyiT5m36DRCvXe5NYkTcxL_uZtnecVFAa2K9HyOppO2ER6_oie8JcfOEYSDjWS86xdQffmnEFmuxuH9NIGDdtuPhyphenhyphenTs-puh9y-Ve3fTvfu3sRPdzkK/s72-c/Screen+Shot+2013-12-12+at+12.49.50.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4479559294098558595.post-5599737897854975296</id><published>2013-09-27T11:51:00.003+02:00</published><updated>2013-09-27T11:51:47.175+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Design Center"/><category scheme="http://www.blogger.com/atom/ns#" term="Dictionary"/><category scheme="http://www.blogger.com/atom/ns#" term="ExecutePowershell"/><category scheme="http://www.blogger.com/atom/ns#" term="InvokePowershellCommand"/><category scheme="http://www.blogger.com/atom/ns#" term="PowerCLI"/><category scheme="http://www.blogger.com/atom/ns#" term="powershell"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC 5.2"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Automation Center"/><title type='text'>vCAC - how to change the VM network after provisioning</title><content type='html'>Sometimes we are asked for some special test cases in pilot scenarios. On of my colleagues asked me how we can change a virtual machine network after the virtual machine is provisioned in vCAC. The reason for this was a provisioning environment in which the virtual machine is deployed in a special network and attached to the production afterwards.&lt;br /&gt;
&lt;br /&gt;
So at first you have to set the &quot;ExternalWFStubs.MachineProvisioned&quot; property at the virtual machine blueprint.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1vARtxw1NWgdGXwwqIcmEKlBZrVHQDoQPMhuMG4SdFuJFnP91Z7ZWXJT54vC1w0v0AOI9rX6Bk7vyOoJRE2-0DG2pvZfsmOLyWs8VizfH5Hdnrsv124a_x9tm2iQRQB7JBXdLGshhFPYB/s1600/Screen+Shot+2013-09-27+at+11.04.44+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1vARtxw1NWgdGXwwqIcmEKlBZrVHQDoQPMhuMG4SdFuJFnP91Z7ZWXJT54vC1w0v0AOI9rX6Bk7vyOoJRE2-0DG2pvZfsmOLyWs8VizfH5Hdnrsv124a_x9tm2iQRQB7JBXdLGshhFPYB/s400/Screen+Shot+2013-09-27+at+11.04.44+AM.png&quot; width=&quot;400&quot; /&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;
As an additional input i created a custom property called &quot;VirtualMachine.NewNetwork&quot; which holds the name of the new network. I created a custom property with a dropdown list (Values: VM Network, DVPortGroup) to let the user select the network.&lt;br /&gt;
&lt;br /&gt;
Next step was the creation of a powershell script (ChangeNetwork.ps1):&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;i&gt;#Variable detection&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;$OldNetwork = $Properties[&quot;VirtualMachine.Network0.Name&quot;]&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;$NewNetwork = $Properties[&quot;VirtualMachine.NewNetwork&quot;]&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;$Hostname = $Properties[&quot;VirtualMachineName&quot;]&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;#Check for the variables&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;$OldNetwork &amp;gt;&amp;gt; C:\test.txt&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;$NewNetwork &amp;gt;&amp;gt; C:\test.txt&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;$Hostname &amp;gt;&amp;gt; C:\test.txt&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;#Calls the powershell actions&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Add-PSSnapin VMware.VimAutomation.Core&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Connect-VIServer YourVcenterServer -User YourUser -Password YourPass&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Get-VM -Name $Hostname | Get-NetworkAdapter | Where {$_.NetworkName -eq $OldNetwork }|Set-NetworkAdapter -NetworkName $NewNetwork -Confirm:$false&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I uploaded the powershell script using the CloudUtil command line:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;i&gt;CloudUtil File-Import -n ChangeNetwork -f ChangeNetwork.ps1&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now i created a new workflow in the Design Center for the MachineProvisioned stub like Zack described here: &lt;a href=&quot;http://www.vcacteam.info/index.php/articles/vcac-customization/advanced-customizations/4-calling-powershell-powercli-scripts-from-vcac&quot;&gt;Calling Powershell/PowerCLI Scripts from a vCAC workflow&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Please note that you need to initialize the Dictionary array like described in the blog post. After sending the workflow to the vCAC server the stub should call the Powershell script and change the network adapter from &quot;DVPortGroup&quot; to &quot;VM Network&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBDsl9LewzImigtiRTqW6roqhR99JbgtPb_Fi0IBlzucvfLynuYJuA2jm6UAeiK3SlUslITiMm0J-p7sjaxBAyZjGTKvsqB21Pzyi88FgWP-MB-6W0ciVHBgZ_IoQefs2yXWxEa_tL8Gvi/s1600/Screen+Shot+2013-09-27+at+11.45.21+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;114&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBDsl9LewzImigtiRTqW6roqhR99JbgtPb_Fi0IBlzucvfLynuYJuA2jm6UAeiK3SlUslITiMm0J-p7sjaxBAyZjGTKvsqB21Pzyi88FgWP-MB-6W0ciVHBgZ_IoQefs2yXWxEa_tL8Gvi/s320/Screen+Shot+2013-09-27+at+11.45.21+AM.png&quot; width=&quot;320&quot; /&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;
After the deployment (my template has DVPortGroup as network when deployed)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx14QlCmmjQp9dgZicK_JfiG0n5wuPbQes5ol0n_WOtFy8cAoo2aLDgLtbSQ0NX_xKpF3aWsJ0Qbrt9td9cvvpeF_7aEM510II-3wZ7vmZxSHCA2y4cL_noEtXhp8b71MFmcKRdtUnibDJ/s1600/Screen+Shot+2013-09-27+at+11.47.42+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx14QlCmmjQp9dgZicK_JfiG0n5wuPbQes5ol0n_WOtFy8cAoo2aLDgLtbSQ0NX_xKpF3aWsJ0Qbrt9td9cvvpeF_7aEM510II-3wZ7vmZxSHCA2y4cL_noEtXhp8b71MFmcKRdtUnibDJ/s400/Screen+Shot+2013-09-27+at+11.47.42+AM.png&quot; width=&quot;400&quot; /&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;
the network should change with a reconfigure task.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid2gWN0dJ7C8V554sQ0YzC04ygUlqNKlCfzmYC6jduAc5O93yfyRYLqjoIIEKARYT0M9e03wqfxRfEIZrwGS6mAfYvbfczIRUttGYGWXv3u9kHqkPaRnqaM-vMVOV3tXlgvbAj-RQ7pC7K/s1600/Screen+Shot+2013-09-27+at+11.49.20+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid2gWN0dJ7C8V554sQ0YzC04ygUlqNKlCfzmYC6jduAc5O93yfyRYLqjoIIEKARYT0M9e03wqfxRfEIZrwGS6mAfYvbfczIRUttGYGWXv3u9kHqkPaRnqaM-vMVOV3tXlgvbAj-RQ7pC7K/s320/Screen+Shot+2013-09-27+at+11.49.20+AM.png&quot; width=&quot;320&quot; /&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;
Have fun with this!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mighty-virtualization.blogspot.com/feeds/5599737897854975296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mighty-virtualization.blogspot.com/2013/09/vcac-how-to-change-vm-network-after.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/5599737897854975296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/5599737897854975296'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2013/09/vcac-how-to-change-vm-network-after.html' title='vCAC - how to change the VM network after provisioning'/><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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1vARtxw1NWgdGXwwqIcmEKlBZrVHQDoQPMhuMG4SdFuJFnP91Z7ZWXJT54vC1w0v0AOI9rX6Bk7vyOoJRE2-0DG2pvZfsmOLyWs8VizfH5Hdnrsv124a_x9tm2iQRQB7JBXdLGshhFPYB/s72-c/Screen+Shot+2013-09-27+at+11.04.44+AM.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4479559294098558595.post-3955669760607061674</id><published>2013-07-01T19:58:00.000+02:00</published><updated>2013-07-01T19:58:03.693+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blueprint"/><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="custom properties"/><category scheme="http://www.blogger.com/atom/ns#" term="ExternalWFStubs"/><category scheme="http://www.blogger.com/atom/ns#" term="stub"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Automation Center"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><category scheme="http://www.blogger.com/atom/ns#" term="VS 2012"/><category scheme="http://www.blogger.com/atom/ns#" term="xaml"/><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><title type='text'>vCAC - What if you need vCO on every blueprint?</title><content type='html'>Based on my blog posts you know already how to interact with vCenter Orchestrator from a vCloud Automation Center blueprint. When you use this interaction there will be the day when you ask yourself: &quot;How can &amp;nbsp;i use different workflows with the same stub?&quot;.&lt;br /&gt;
&lt;br /&gt;
To be honest, it looked to me as there is only one external call possible at the &quot;ExternalWFStubs.MachineProvisioned&quot; stub, but what if i can create another stub based on this provisioning state? Something like &quot;ExternalWFStubs.MyMachineStateEqualMachineProvisioned&quot;? Heureka!&lt;br /&gt;
&lt;br /&gt;
Here is how:&lt;br /&gt;
&lt;br /&gt;
First you have to install the CDK plug-in for Visual Studio. This enables the vCAC workflow generator and allows you to generate a &quot;StateChange&quot; workflow with your own stub name.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK_FhuXURNZlYi4WNIBNGqdyZmZTfzkY9lSU9ziCKLzX7rwVNVhZkWsTNqSGUEQStOhrhidGXU2tOG_wc2_dGfpMH59xW-8fEwI731F6Dw3lD846UH7Wg1iK8iaCz3njqX7z1JF33JRkcc/s1060/Screen+Shot+2013-07-01+at+7.36.47+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;169&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK_FhuXURNZlYi4WNIBNGqdyZmZTfzkY9lSU9ziCKLzX7rwVNVhZkWsTNqSGUEQStOhrhidGXU2tOG_wc2_dGfpMH59xW-8fEwI731F6Dw3lD846UH7Wg1iK8iaCz3njqX7z1JF33JRkcc/s320/Screen+Shot+2013-07-01+at+7.36.47+PM.png&quot; width=&quot;320&quot; /&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 workflow: &quot;MyShinyWorkflow&quot; and this is shown as naming in the solution explorer.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeg8xpEJMgnA6OD5pc3xeI0o4oGXFWsxVzLKFYv12qI8UxIGS9wWZ4vI6y-8_lybNjX19Lam17eqUCmDD2cv2gKNbaHRjMNTUC6KGsK9M2EBVSZEABln9j5Ws8gzv1Vy-wC03v3L9AiEc7/s1600/Screen+Shot+2013-07-01+at+7.38.44+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;141&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeg8xpEJMgnA6OD5pc3xeI0o4oGXFWsxVzLKFYv12qI8UxIGS9wWZ4vI6y-8_lybNjX19Lam17eqUCmDD2cv2gKNbaHRjMNTUC6KGsK9M2EBVSZEABln9j5Ws8gzv1Vy-wC03v3L9AiEc7/s400/Screen+Shot+2013-07-01+at+7.38.44+PM.png&quot; width=&quot;400&quot; /&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;
Now you can build everything you want in Visual Studio... or you can upload the empty workflow in your vCAC like described in the .txt file (just open the solution in a windows explorer and copy the files).&lt;br /&gt;
&lt;br /&gt;








&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;i&gt;Cloudutil Workflow-Install -f MyShinyWorkflow.xaml -n MyShinyWorkflow&lt;/i&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzdre5orqrolQpncORVaMkKL_6A0xMR0W_-_m-yHQKuaqd211Vgl8IWyFzybooGP9zWGRwJcmD1MU05sjYfSBCfvkKwvseyNFfCFs3GIP3zOImoZa1brdzE28k3CVc7hFp3zTf6rSFKS1c/s1600/Screen+Shot+2013-07-01+at+7.44.37+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;196&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzdre5orqrolQpncORVaMkKL_6A0xMR0W_-_m-yHQKuaqd211Vgl8IWyFzybooGP9zWGRwJcmD1MU05sjYfSBCfvkKwvseyNFfCFs3GIP3zOImoZa1brdzE28k3CVc7hFp3zTf6rSFKS1c/s320/Screen+Shot+2013-07-01+at+7.44.37+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Don´t forget to copy the .xml file to the /xmldb folder in your vCAC file location. After that you are able to &quot;design&quot; your workflow in the vCAC Design Center.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeAoAOOhyphenhyphenEQxygu1ltHMgDD2fsnqCfUNBfPVs9mjWgRAgIzQ3nD07jH69bOAGKDYvnDkDNwKDd6J8GZJq7Y9hmerZP_YX6Mv-GBdzCot8zhyrSdsy267VFnVs1ymIAZugFby2LotOzXL1O/s1358/Screen+Shot+2013-07-01+at+7.47.11+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeAoAOOhyphenhyphenEQxygu1ltHMgDD2fsnqCfUNBfPVs9mjWgRAgIzQ3nD07jH69bOAGKDYvnDkDNwKDd6J8GZJq7Y9hmerZP_YX6Mv-GBdzCot8zhyrSdsy267VFnVs1ymIAZugFby2LotOzXL1O/s320/Screen+Shot+2013-07-01+at+7.47.11+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
With this new workflow you can set a custom property for example (keep in mind that this is only a simple one)&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOL7CCaxs862aiBX24Ju_gda9fNk_YgGOVdhCNU0a8oogLTnelIMmbpO9i4LRbvztO5Viy0BBT2_kZWrsOpkffXJY91bYoFlGfW56aWB9bSxuGFifTPsa3CCpu2-7XkxNlSYFq3SEaRYLb/s900/Screen+Shot+2013-07-01+at+7.49.44+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOL7CCaxs862aiBX24Ju_gda9fNk_YgGOVdhCNU0a8oogLTnelIMmbpO9i4LRbvztO5Viy0BBT2_kZWrsOpkffXJY91bYoFlGfW56aWB9bSxuGFifTPsa3CCpu2-7XkxNlSYFq3SEaRYLb/s320/Screen+Shot+2013-07-01+at+7.49.44+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Now you can upload the workflow it will set a new custom property when the workflow is called.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjspJIMm8KRsLOT_iz-bnFcc43SuKk6I_73EiNioGX-psVqV8UuBxTe8jJPK-gY2JBI0SUPiG_XWjSy9O04rryNg37Aw-F6dAuK8x3zURE6J5TtWmYY-d6QzYHQEwPUkxTUs39LuIPPGFlQ/s1098/Screen+Shot+2013-07-01+at+7.50.06+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjspJIMm8KRsLOT_iz-bnFcc43SuKk6I_73EiNioGX-psVqV8UuBxTe8jJPK-gY2JBI0SUPiG_XWjSy9O04rryNg37Aw-F6dAuK8x3zURE6J5TtWmYY-d6QzYHQEwPUkxTUs39LuIPPGFlQ/s320/Screen+Shot+2013-07-01+at+7.50.06+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Just add your stub (mine is named: ExternalWFStubs.MyMachineStateEqualMachineProvisioned) to the blueprint you want to enhance.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7PP4iG9gPfZX5kJlr_po96XhRGVRX3GnGRRZ5irN8In2ZYPZqByOBqZ4BrjCcZz6KDPYojQYlDRq4blKKDnzvtaWnvdlKvzxjGeSGE9mdVZDx_0VgSWqyQrSUBP9fzJJ1n9lSA1aY0uCT/s1600/Screen+Shot+2013-07-01+at+7.53.33+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;158&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7PP4iG9gPfZX5kJlr_po96XhRGVRX3GnGRRZ5irN8In2ZYPZqByOBqZ4BrjCcZz6KDPYojQYlDRq4blKKDnzvtaWnvdlKvzxjGeSGE9mdVZDx_0VgSWqyQrSUBP9fzJJ1n9lSA1aY0uCT/s320/Screen+Shot+2013-07-01+at+7.53.33+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
After the machine is requested the custom property is set once the &quot;MachineProvisioned&quot; stated is reached.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizEGIgWlmoZHOhBi2Pd0XURBYt3jtqRjryifxL-FkpkwYKCqt2UNoqeCyV93fLO-QuL3mGaNFZ43wl_RAHBwYeVTwGDduGpPGQfA1jVuWE4qm5WQE4eQ2sNHeqwALBeLuFnnDuPvlyKgsW/s1600/Screen+Shot+2013-07-01+at+7.56.39+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;116&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizEGIgWlmoZHOhBi2Pd0XURBYt3jtqRjryifxL-FkpkwYKCqt2UNoqeCyV93fLO-QuL3mGaNFZ43wl_RAHBwYeVTwGDduGpPGQfA1jVuWE4qm5WQE4eQ2sNHeqwALBeLuFnnDuPvlyKgsW/s400/Screen+Shot+2013-07-01+at+7.56.39+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Now you have the power!&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mighty-virtualization.blogspot.com/feeds/3955669760607061674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mighty-virtualization.blogspot.com/2013/07/vcac-what-if-you-need-vco-on-every.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/3955669760607061674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/3955669760607061674'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2013/07/vcac-what-if-you-need-vco-on-every.html' title='vCAC - What if you need vCO on every blueprint?'/><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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK_FhuXURNZlYi4WNIBNGqdyZmZTfzkY9lSU9ziCKLzX7rwVNVhZkWsTNqSGUEQStOhrhidGXU2tOG_wc2_dGfpMH59xW-8fEwI731F6Dw3lD846UH7Wg1iK8iaCz3njqX7z1JF33JRkcc/s72-c/Screen+Shot+2013-07-01+at+7.36.47+PM.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="configs"/><category scheme="http://www.blogger.com/atom/ns#" term="configurations"/><category scheme="http://www.blogger.com/atom/ns#" term="migration"/><category scheme="http://www.blogger.com/atom/ns#" term="organizations"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Automation Center"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director"/><category scheme="http://www.blogger.com/atom/ns#" term="vLM"/><category scheme="http://www.blogger.com/atom/ns#" term="vLM automation"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware Service Manager"/><category scheme="http://www.blogger.com/atom/ns#" term="vSM"/><category scheme="http://www.blogger.com/atom/ns#" term="workspaces"/><title type='text'>vCloud Automation Center -  a LabManager &quot;rebirth&quot;?</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 &quot;real&quot; resources in vCloud Director as a SYSTEM administrator.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0OrTjTRdSulLOYocw38rBVWF29MK6qSkNBNxBmwFFN9o4pxaa2jMtmDn7pphnA8HSZIWxbP7ak7fvebOw-Q8MFufOALvYR-t417L2pYbJvSUoxFN90MaZ78dS1FoOvXeZuNqQA_9J2nDm/s1600/Screen+Shot+2013-05-06+at+9.22.01+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;195&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0OrTjTRdSulLOYocw38rBVWF29MK6qSkNBNxBmwFFN9o4pxaa2jMtmDn7pphnA8HSZIWxbP7ak7fvebOw-Q8MFufOALvYR-t417L2pYbJvSUoxFN90MaZ78dS1FoOvXeZuNqQA_9J2nDm/s400/Screen+Shot+2013-05-06+at+9.22.01+AM.png&quot; width=&quot;400&quot; /&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 &quot;internal IT&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoMjrGSsEYhl1q4O6uVBWrOqYuGOa_PrtijJvDG8ThtiyJI8XeH1ExBQagZyyXn-RME29_TGUJIXZk-nHrJqS_yIuHcHogGUBEIqOEtYZKEaWwL57wJsuNVNF0b-o870HSKvi9571M0nse/s1600/Screen+Shot+2013-05-06+at+9.16.52+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;231&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoMjrGSsEYhl1q4O6uVBWrOqYuGOa_PrtijJvDG8ThtiyJI8XeH1ExBQagZyyXn-RME29_TGUJIXZk-nHrJqS_yIuHcHogGUBEIqOEtYZKEaWwL57wJsuNVNF0b-o870HSKvi9571M0nse/s320/Screen+Shot+2013-05-06+at+9.16.52+AM.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1OEPOjhw1bi2AXyZclBeX_sq1c1Er6c92a6V-iJ8jDK33BVx621DrqXtRHRrLikN3uE523t_Dl1TmigBn6nAcj6rX_0HIhLYvU5kOE6OwaSFk6qghXT-vAIdjQtTtcsz64gQ03Goqqtx4/s1600/Screen+Shot+2013-05-06+at+9.18.04+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1OEPOjhw1bi2AXyZclBeX_sq1c1Er6c92a6V-iJ8jDK33BVx621DrqXtRHRrLikN3uE523t_Dl1TmigBn6nAcj6rX_0HIhLYvU5kOE6OwaSFk6qghXT-vAIdjQtTtcsz64gQ03Goqqtx4/s320/Screen+Shot+2013-05-06+at+9.18.04+AM.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinCsYBY5AaxwRFTXvlDQSqcdYA37lQ64gC_aJYoSBzanLVpjt-R30O7nlxp00pDeAsQef-ifRmwlHC9MKcKoeJPT5h5OhsAl77iACfhXYZfFTFLqMpIJuLV-JOC0KqK24MLE-dYLiIXvf-/s1600/Screen+Shot+2013-05-06+at+9.19.54+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinCsYBY5AaxwRFTXvlDQSqcdYA37lQ64gC_aJYoSBzanLVpjt-R30O7nlxp00pDeAsQef-ifRmwlHC9MKcKoeJPT5h5OhsAl77iACfhXYZfFTFLqMpIJuLV-JOC0KqK24MLE-dYLiIXvf-/s320/Screen+Shot+2013-05-06+at+9.19.54+AM.png&quot; width=&quot;320&quot; /&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 &quot;upgrade&quot; 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;</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/1376460151673358117'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2013/05/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0OrTjTRdSulLOYocw38rBVWF29MK6qSkNBNxBmwFFN9o4pxaa2jMtmDn7pphnA8HSZIWxbP7ak7fvebOw-Q8MFufOALvYR-t417L2pYbJvSUoxFN90MaZ78dS1FoOvXeZuNqQA_9J2nDm/s72-c/Screen+Shot+2013-05-06+at+9.22.01+AM.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="call"/><category scheme="http://www.blogger.com/atom/ns#" term="custom properties"/><category scheme="http://www.blogger.com/atom/ns#" term="custom property"/><category scheme="http://www.blogger.com/atom/ns#" term="in-parameter"/><category scheme="http://www.blogger.com/atom/ns#" term="Parameter"/><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="vCO"/><category scheme="http://www.blogger.com/atom/ns#" term="workflow call"/><title type='text'>Using vCAC custom properties as vCO inputs</title><content type='html'>Based on the excellent blog post at &lt;a href=&quot;http://www.vcoteam.info/learn-vco/remove-computer-from-ad-using-vco-during-vcac-decommission.html&quot;&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 &quot;Extensibility Guide&quot; describes different ExternalWFStubs for some states of the service lifecycle.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx_eLNDybDepkSE0Ua9YAM5hYTXVdDljkuAfff0hc-j5RVB6ijo3VwBPfKyV8zUZ0efqvW75S9y6wuZgvl3YMt7HuSlrHjfVYBGz3NuhZye1LSdLBvVBdqJKfG0I2jd-Wy7d8RuSQzpoPQ/s1600/Screen+Shot+2013-04-23+at+9.05.24+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;105&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx_eLNDybDepkSE0Ua9YAM5hYTXVdDljkuAfff0hc-j5RVB6ijo3VwBPfKyV8zUZ0efqvW75S9y6wuZgvl3YMt7HuSlrHjfVYBGz3NuhZye1LSdLBvVBdqJKfG0I2jd-Wy7d8RuSQzpoPQ/s320/Screen+Shot+2013-04-23+at+9.05.24+AM.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYWmqNa-Z-uSqahb8ZZ6ada3-ZI_rGiwjtJEz_VjLsmRSwWOaVZg7SuyQMXIN_q1M5LIHcU07Ck0SwyJB8ZORDhs-_Z7OcmI9EW2Skk-a9RzjC_qrd_okTqshr2K9zKAgXNx-18HE_mco6/s1600/Screen+Shot+2013-04-23+at+9.15.35+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;66&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYWmqNa-Z-uSqahb8ZZ6ada3-ZI_rGiwjtJEz_VjLsmRSwWOaVZg7SuyQMXIN_q1M5LIHcU07Ck0SwyJB8ZORDhs-_Z7OcmI9EW2Skk-a9RzjC_qrd_okTqshr2K9zKAgXNx-18HE_mco6/s400/Screen+Shot+2013-04-23+at+9.15.35+AM.png&quot; width=&quot;400&quot; /&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 &quot;ValueToReceive&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibueSHgoUTy-ZaDK_TjWtjn6vvK-EG8zqA2SBNu9pre05wk6-mtef9YyS4Fok6xee_NFYzhbP4JzpyUYmlDSBaNpFep6pSGPTtV5HvcMsW8gKq67LDHjU3kCC7cMkzH2nfa8VjC98RYXxd/s1600/Screen+Shot+2013-04-23+at+9.19.46+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibueSHgoUTy-ZaDK_TjWtjn6vvK-EG8zqA2SBNu9pre05wk6-mtef9YyS4Fok6xee_NFYzhbP4JzpyUYmlDSBaNpFep6pSGPTtV5HvcMsW8gKq67LDHjU3kCC7cMkzH2nfa8VjC98RYXxd/s320/Screen+Shot+2013-04-23+at+9.19.46+AM.png&quot; width=&quot;320&quot; /&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 &quot;Load&quot; the actual release of the WFStubMachineProvisioned workflow:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNsFlFKXWggS4Ru4O9b3JqSSBLqRIyydaIO94Jy1dwROPASEFoFrUuWhiw_GE4ngqrtmP0x2O4EIXlz3_-lCVSnukVHMBsOmtBmCf5TcUI5_fjVGjVsx52L7at03wvVVIpInGgvLVrbTHT/s1600/Screen+Shot+2013-04-23+at+9.21.56+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;236&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNsFlFKXWggS4Ru4O9b3JqSSBLqRIyydaIO94Jy1dwROPASEFoFrUuWhiw_GE4ngqrtmP0x2O4EIXlz3_-lCVSnukVHMBsOmtBmCf5TcUI5_fjVGjVsx52L7at03wvVVIpInGgvLVrbTHT/s320/Screen+Shot+2013-04-23+at+9.21.56+AM.png&quot; width=&quot;320&quot; /&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 &quot;Custom Code&quot; part of the loaded workflow and add two more variables: vmName (String) and VM (VirtualMachine).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFnBgeHuK41kdYm7lpc40TFPVPHrVOx5L5KgMIxvh2uoqdY2LT-ZFFjUoSoKP565S8EANfKPf0OE9BEzqve5N_m6QU-8KSRQfXg00XgjAmK1QYzDzTQ_KN2l95guG3xQlk_BXDhT25Gk9P/s1600/Screen+Shot+2013-04-23+at+9.24.05+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;47&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFnBgeHuK41kdYm7lpc40TFPVPHrVOx5L5KgMIxvh2uoqdY2LT-ZFFjUoSoKP565S8EANfKPf0OE9BEzqve5N_m6QU-8KSRQfXg00XgjAmK1QYzDzTQ_KN2l95guG3xQlk_BXDhT25Gk9P/s400/Screen+Shot+2013-04-23+at+9.24.05+AM.png&quot; width=&quot;400&quot; /&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 &quot;GetMachineProperty&quot; element next to the &quot;Start&quot; element and open it with a double click:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1B7FGiNtwfDqwxi37AWvd8BiyXb4eiU7T2gWIe4M0ctB3GG5NydqFPFl-Pa1Ueh-rstulWZO-IvCjrhHapqtkBzu8mOnZz20Sh5ezyHIWzNtDf8cYHzuov9pGAcKtKp0i8b2iT6f2HlET/s1600/Screen+Shot+2013-04-23+at+9.23.48+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;142&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1B7FGiNtwfDqwxi37AWvd8BiyXb4eiU7T2gWIe4M0ctB3GG5NydqFPFl-Pa1Ueh-rstulWZO-IvCjrhHapqtkBzu8mOnZz20Sh5ezyHIWzNtDf8cYHzuov9pGAcKtKp0i8b2iT6f2HlET/s320/Screen+Shot+2013-04-23+at+9.23.48+AM.png&quot; width=&quot;320&quot; /&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 &quot;InvokevCOworkflow&quot; element next to the &quot;GetMachineProperty&quot; element, browse for the vCO workflow we designed first and enter &quot;vmName&quot; as Input and &quot;myVm&quot; as Output:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWGcDxr4BNNbHqT06b0I0TjvtSdyWYeYNtT6GLDlrsV459pn9B3vI23MDDW4g7MGH_5AmaYWKx4c7wfwlJCEQcw6GoilnUdY5CkqHKEZynfGx-AHmuYTTIgy5vF5NSbXBMLSkdvRVVMIOX/s1600/Screen+Shot+2013-04-23+at+9.27.09+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWGcDxr4BNNbHqT06b0I0TjvtSdyWYeYNtT6GLDlrsV459pn9B3vI23MDDW4g7MGH_5AmaYWKx4c7wfwlJCEQcw6GoilnUdY5CkqHKEZynfGx-AHmuYTTIgy5vF5NSbXBMLSkdvRVVMIOX/s320/Screen+Shot+2013-04-23+at+9.27.09+AM.png&quot; width=&quot;304&quot; /&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 &quot;virtualMachineId&quot; in the VirtualMachineId field on the right upper side for the &quot;InvokevCOworkflow&quot; element:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhizldReXLG6Z3-EtLcZ4mHj3p2PTnrOvIWvn5933h3FbsQMK4YSMhn5Z2wYQtQ6jafy5taSzBlr89ENfMrCISVlWD20tO8tUUvXj_Sy34mo8FabQjEDnTJvxLZcQa1nMLvrK6Wy4XpGCAW/s1600/Screen+Shot+2013-04-23+at+9.30.47+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;233&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhizldReXLG6Z3-EtLcZ4mHj3p2PTnrOvIWvn5933h3FbsQMK4YSMhn5Z2wYQtQ6jafy5taSzBlr89ENfMrCISVlWD20tO8tUUvXj_Sy34mo8FabQjEDnTJvxLZcQa1nMLvrK6Wy4XpGCAW/s320/Screen+Shot+2013-04-23+at+9.30.47+AM.png&quot; width=&quot;320&quot; /&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 &quot;Load&quot; 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 (&quot;Windows XP instance&quot; in my environment) from the enhanced blueprint and the wizard will ask for a custom property called &quot;ValueToReceive&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyfBEbDB0OmR7ci2r1U9VczQP0glVZnZ42yYX7tpIZgHbGEixwU3UKEGRM8fmWTB5Qu3-egcP12UvNDggZ105GCnC71YveNoQ7I9ZZUMN1Tb-Yo11ov0bLFQcwrsGj0SonmAoxTrDDm2PM/s1600/Screen+Shot+2013-04-23+at+9.34.14+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyfBEbDB0OmR7ci2r1U9VczQP0glVZnZ42yYX7tpIZgHbGEixwU3UKEGRM8fmWTB5Qu3-egcP12UvNDggZ105GCnC71YveNoQ7I9ZZUMN1Tb-Yo11ov0bLFQcwrsGj0SonmAoxTrDDm2PM/s320/Screen+Shot+2013-04-23+at+9.34.14+AM.png&quot; width=&quot;320&quot; /&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 (&quot;Backup Network&quot;, &quot;Additional Tools&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2UE__yjLCps4aZ3JmyPQvtYEezhH0nJPzumyrAceKR0-qv8KyiavS9oVnk8edbOTWSPPFMNnvnsF58yWJPzQwpwrDkNV92tSV6N7NECXnp2oTxoekmxvsVxArRfVO5v3S1YqT5pFl9PVV/s1600/Screen+Shot+2013-04-23+at+9.39.33+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;90&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2UE__yjLCps4aZ3JmyPQvtYEezhH0nJPzumyrAceKR0-qv8KyiavS9oVnk8edbOTWSPPFMNnvnsF58yWJPzQwpwrDkNV92tSV6N7NECXnp2oTxoekmxvsVxArRfVO5v3S1YqT5pFl9PVV/s400/Screen+Shot+2013-04-23+at+9.39.33+AM.png&quot; width=&quot;400&quot; /&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?</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='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/7547282920932798462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/7547282920932798462'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2013/04/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx_eLNDybDepkSE0Ua9YAM5hYTXVdDljkuAfff0hc-j5RVB6ijo3VwBPfKyV8zUZ0efqvW75S9y6wuZgvl3YMt7HuSlrHjfVYBGz3NuhZye1LSdLBvVBdqJKfG0I2jd-Wy7d8RuSQzpoPQ/s72-c/Screen+Shot+2013-04-23+at+9.05.24+AM.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="Extensibility"/><category scheme="http://www.blogger.com/atom/ns#" term="vb"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Automation Center"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><category scheme="http://www.blogger.com/atom/ns#" term="workflow"/><category scheme="http://www.blogger.com/atom/ns#" term="Workflow Solution"/><title type='text'>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 &quot;business intelligence&quot; 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=&quot;http://clearascloud.blogspot.de/2013/03/vmware-vco-workflows-integration-with.html&quot;&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;&quot;LogMachineEvent&quot;&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZztpqm-2U7Rtx1wQBjz-VsKtH677MQKxBkwj_qKVfoEPWt-jvl4pXItiond838Y3K_zHw8BCzoDq2JmicBjgQs9AkgxtEzLiSyNqa_pk4TdagKuaCsw1wxGdgy5_PJxVk3EuqSU8_ESz5/s1600/Screen+Shot+2013-03-12+at+5.01.58+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZztpqm-2U7Rtx1wQBjz-VsKtH677MQKxBkwj_qKVfoEPWt-jvl4pXItiond838Y3K_zHw8BCzoDq2JmicBjgQs9AkgxtEzLiSyNqa_pk4TdagKuaCsw1wxGdgy5_PJxVk3EuqSU8_ESz5/s320/Screen+Shot+2013-03-12+at+5.01.58+PM.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidYjZOI0mPLSk868CaOdIBlGxMEqh8dm3spWfv3PuCTRlyz0OxQl3B_U7CPeSwmlL1uVFcH2pPwqvKDm0neTNz1HhiX5wPFJ2On1pNPdlh4C7regzKGJf5j_09JROhVD1c5KtpslVwEsYP/s1600/Screen+Shot+2013-03-12+at+5.03.26+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidYjZOI0mPLSk868CaOdIBlGxMEqh8dm3spWfv3PuCTRlyz0OxQl3B_U7CPeSwmlL1uVFcH2pPwqvKDm0neTNz1HhiX5wPFJ2On1pNPdlh4C7regzKGJf5j_09JROhVD1c5KtpslVwEsYP/s320/Screen+Shot+2013-03-12+at+5.03.26+PM.png&quot; width=&quot;320&quot; /&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 &quot;Ergebnis&quot; (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 &quot;Invoke vCO&quot; option:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEindYLQJGiPceTNVKPdivIHf0D-47dp3m7md1dIOIrN9LOUOQNwrqdbGQRV2_jkjwnru02Q4lFsKWoc_25MkH651DwxUJ8BHu9aKDFVM9qVCYHJBVQZFj7jX_J_jRw63Z7wesDPmzRv1g1J/s1600/Screen+Shot+2013-03-12+at+5.07.14+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEindYLQJGiPceTNVKPdivIHf0D-47dp3m7md1dIOIrN9LOUOQNwrqdbGQRV2_jkjwnru02Q4lFsKWoc_25MkH651DwxUJ8BHu9aKDFVM9qVCYHJBVQZFj7jX_J_jRw63Z7wesDPmzRv1g1J/s320/Screen+Shot+2013-03-12+at+5.07.14+PM.png&quot; width=&quot;320&quot; /&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 &quot;recent events&quot; log:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU7RAd05RiYm2amDSDX7iocpNeqXYZ2_921XE7XovwLnckQsFgtp0TI1jGBuFaBvpilu13-Mkw5ODERdFyBwav63tBmjhzB7SG72zxJU2A6xwc-89r9m6yDJ3WKrZk-J-_2YqPuJudUidC/s1600/Screen+Shot+2013-03-12+at+5.06.52+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;256&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU7RAd05RiYm2amDSDX7iocpNeqXYZ2_921XE7XovwLnckQsFgtp0TI1jGBuFaBvpilu13-Mkw5ODERdFyBwav63tBmjhzB7SG72zxJU2A6xwc-89r9m6yDJ3WKrZk-J-_2YqPuJudUidC/s320/Screen+Shot+2013-03-12+at+5.06.52+PM.png&quot; width=&quot;320&quot; /&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;</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='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/6209167964610051844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/6209167964610051844'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2013/03/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZztpqm-2U7Rtx1wQBjz-VsKtH677MQKxBkwj_qKVfoEPWt-jvl4pXItiond838Y3K_zHw8BCzoDq2JmicBjgQs9AkgxtEzLiSyNqa_pk4TdagKuaCsw1wxGdgy5_PJxVk3EuqSU8_ESz5/s72-c/Screen+Shot+2013-03-12+at+5.01.58+PM.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><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="cloud portal"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery UI"/><category scheme="http://www.blogger.com/atom/ns#" term="Portal"/><category scheme="http://www.blogger.com/atom/ns#" term="self-service"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC 4.5"/><category scheme="http://www.blogger.com/atom/ns#" term="vCAC 5.1"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Automation Center"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><category scheme="http://www.blogger.com/atom/ns#" term="web.config"/><title type='text'>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 &quot;old&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPzD-LFVQKyckTxMYmNvCngjhERTIj-4TJZLxQLwZkyWvs_8KDs0LQtzq6k2ttwBouqgcKAGgRexr_bvlYIqJZMHFETV7hDC9LelAJ8r0fsggjyR_SIhe5kwygq-e4-xRRoScaG_5Kc9Hc/s1600/Screen+shot+2012-11-15+at+9.19.09+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPzD-LFVQKyckTxMYmNvCngjhERTIj-4TJZLxQLwZkyWvs_8KDs0LQtzq6k2ttwBouqgcKAGgRexr_bvlYIqJZMHFETV7hDC9LelAJ8r0fsggjyR_SIhe5kwygq-e4-xRRoScaG_5Kc9Hc/s400/Screen+shot+2012-11-15+at+9.19.09+AM.png&quot; width=&quot;400&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRblE5UBez6PglqTCKcYIP8LMGApZxFAQbtyIrozxO_i5Cv3yR7jk_VYhVNAz1i1WUdMus7auH-LxFbQQq4n39pFzlGBdNe6YPXqS3j8Q_oiHYgXHhuWVLX8teeRfQ-qXGCwhUrXNBw75J/s1600/Screen+shot+2012-11-15+at+9.10.24+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRblE5UBez6PglqTCKcYIP8LMGApZxFAQbtyIrozxO_i5Cv3yR7jk_VYhVNAz1i1WUdMus7auH-LxFbQQq4n39pFzlGBdNe6YPXqS3j8Q_oiHYgXHhuWVLX8teeRfQ-qXGCwhUrXNBw75J/s320/Screen+shot+2012-11-15+at+9.10.24+AM.png&quot; width=&quot;181&quot; /&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 &quot;App_Themes&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSuwHFY_TO1LCgBLXxK1zuuDDoz9BoO34a55cj_tpXxQJhrqUvQcBuRPSr0IP2UUAqBetWMEC2C6GiLnB7HpGCoBbKtHbTXrN3GX4qo_0_8cmVElDXY4ASqtcaO-V1IQBGu4Khq5jcvCax/s1600/Screen+shot+2012-11-15+at+11.21.47+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSuwHFY_TO1LCgBLXxK1zuuDDoz9BoO34a55cj_tpXxQJhrqUvQcBuRPSr0IP2UUAqBetWMEC2C6GiLnB7HpGCoBbKtHbTXrN3GX4qo_0_8cmVElDXY4ASqtcaO-V1IQBGu4Khq5jcvCax/s400/Screen+shot+2012-11-15+at+11.21.47+AM.png&quot; width=&quot;400&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0Hm7XacGivKxE0x0XVRWi7KuPpI7OsbNR28sakvba6H-yc6a2sImwei31gKuDlkucodqKclQo73lbXybiaRjoyhJodLKMXYxxzIebuYMC7EkjkFdfYamga1ljnR-kpsX35HyZEiHZKH72/s1600/Screen+shot+2012-11-15+at+9.37.49+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0Hm7XacGivKxE0x0XVRWi7KuPpI7OsbNR28sakvba6H-yc6a2sImwei31gKuDlkucodqKclQo73lbXybiaRjoyhJodLKMXYxxzIebuYMC7EkjkFdfYamga1ljnR-kpsX35HyZEiHZKH72/s400/Screen+shot+2012-11-15+at+9.37.49+AM.png&quot; width=&quot;400&quot; /&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;&quot;/DCACSelfService/Content/Styles/all.css&quot; defines all the layout stuff.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTkEg4CQhfhhNlAm5clSTN9lYHdDQ8yLmAaSNggLKeDic3Q0hAQ-JkZvV9T8MD7hf_NZJx3Yti2Bao9j2yBnB7ty4EqNxSkqGrXemxR3ypboPwwnt8UH5aLaiY1o0sv0JCWqllQ6pYp7OX/s1600/Screen+shot+2012-11-15+at+11.41.02+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTkEg4CQhfhhNlAm5clSTN9lYHdDQ8yLmAaSNggLKeDic3Q0hAQ-JkZvV9T8MD7hf_NZJx3Yti2Bao9j2yBnB7ty4EqNxSkqGrXemxR3ypboPwwnt8UH5aLaiY1o0sv0JCWqllQ6pYp7OX/s400/Screen+shot+2012-11-15+at+11.41.02+AM.png&quot; width=&quot;400&quot; /&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 &quot;custom&quot; and used the downloaded jQuery theme for the calendar which isn´t colored:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhosn8dr-7WDYQPqTrBmynnPcmGx2H6n8AdvkSu4iNlT0_aOmfRNkNU1sEHhKxc1sLSC-XR-34oXp4N17vTO0Lk0GQGPVEDv-7ZzmPbRQjRr33kPyz5XFqpCLbMwo0SVrr3M1r5-gZctAgD/s1600/Screen+shot+2012-11-15+at+11.47.02+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhosn8dr-7WDYQPqTrBmynnPcmGx2H6n8AdvkSu4iNlT0_aOmfRNkNU1sEHhKxc1sLSC-XR-34oXp4N17vTO0Lk0GQGPVEDv-7ZzmPbRQjRr33kPyz5XFqpCLbMwo0SVrr3M1r5-gZctAgD/s400/Screen+shot+2012-11-15+at+11.47.02+AM.png&quot; width=&quot;400&quot; /&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;</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='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/2460961770648448347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/2460961770648448347'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/11/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPzD-LFVQKyckTxMYmNvCngjhERTIj-4TJZLxQLwZkyWvs_8KDs0LQtzq6k2ttwBouqgcKAGgRexr_bvlYIqJZMHFETV7hDC9LelAJ8r0fsggjyR_SIhe5kwygq-e4-xRRoScaG_5Kc9Hc/s72-c/Screen+shot+2012-11-15+at+9.19.09+AM.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="AdvancedSettings"/><category scheme="http://www.blogger.com/atom/ns#" term="float"/><category scheme="http://www.blogger.com/atom/ns#" term="int"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="long"/><category scheme="http://www.blogger.com/atom/ns#" term="updateOptions"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><category scheme="http://www.blogger.com/atom/ns#" term="VcOptionValue"/><category scheme="http://www.blogger.com/atom/ns#" term="vSphere 5.1"/><category scheme="http://www.blogger.com/atom/ns#" term="vSphere API"/><title type='text'>vCO - VcOptionValue which value type?</title><content type='html'>Got some tricky task this week: Change the advanced parameter &quot;NFS.MaxVolumes&quot; 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(&quot;NFS.MaxVolumes&quot;)){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.debug(configMgr.advancedOption.queryOptions(&quot;NFS.MaxVolumes&quot;)[0].key);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var oValues = new Array();&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;oValues[0] = new VcOptionValue() ;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;oValues[0].key = &quot;NFS.MaxVolumes&quot;;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&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(&quot;Could not setAdvanced Settings. Error: &quot; + 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: &quot;wrong parameter&quot; and &quot;internal error&quot;. 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhInMsgyle9NyeVA1dLL-Jye75FQCajDGTNTw1HE3P7TeHceYV5SDefPA-uic3vTbTz7Vw9V-aBkyBHBBMKCSxFclU8reHGe1R8x_i9b0hQKrJT2PoyeHRUdGfJBMNb3mADxlmQ4vtju_W/s1600/Screen+Shot+2012-10-04+at+6.10.14+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;81&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhInMsgyle9NyeVA1dLL-Jye75FQCajDGTNTw1HE3P7TeHceYV5SDefPA-uic3vTbTz7Vw9V-aBkyBHBBMKCSxFclU8reHGe1R8x_i9b0hQKrJT2PoyeHRUdGfJBMNb3mADxlmQ4vtju_W/s320/Screen+Shot+2012-10-04+at+6.10.14+PM.png&quot; width=&quot;320&quot; /&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 &quot;long&quot; 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(&quot;NFS.MaxVolumes&quot;)){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.debug(configMgr.advancedOption.queryOptions(&quot;NFS.MaxVolumes&quot;)[0].key);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var oValues = new Array();&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;oValues[0] = new VcOptionValue() ;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;oValues[0].key = &quot;NFS.MaxVolumes&quot;;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&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(&quot;Could not setAdvanced Settings. Error: &quot; + 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuWoZUE8FodrYPoBf4XbeBcoDWw9FNzZ1-V9XBtu-t_3OonzasjyD812wOnt-eSrYiIiWRSMVPjhIE7lO2eb-fHvfg1GzbMm-c2FmQZSGe1Er2ctwVAl0Qy8CCQIMXsKSWfdzMUVKlL5KB/s1600/Screen+Shot+2012-10-04+at+6.14.19+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;98&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuWoZUE8FodrYPoBf4XbeBcoDWw9FNzZ1-V9XBtu-t_3OonzasjyD812wOnt-eSrYiIiWRSMVPjhIE7lO2eb-fHvfg1GzbMm-c2FmQZSGe1Er2ctwVAl0Qy8CCQIMXsKSWfdzMUVKlL5KB/s320/Screen+Shot+2012-10-04+at+6.14.19+PM.png&quot; width=&quot;320&quot; /&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;
</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/4778500712454592145'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/10/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhInMsgyle9NyeVA1dLL-Jye75FQCajDGTNTw1HE3P7TeHceYV5SDefPA-uic3vTbTz7Vw9V-aBkyBHBBMKCSxFclU8reHGe1R8x_i9b0hQKrJT2PoyeHRUdGfJBMNb3mADxlmQ4vtju_W/s72-c/Screen+Shot+2012-10-04+at+6.10.14+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="cacerts"/><category scheme="http://www.blogger.com/atom/ns#" term="certificate"/><category scheme="http://www.blogger.com/atom/ns#" term="https"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="keytool"/><category scheme="http://www.blogger.com/atom/ns#" term="new"/><category scheme="http://www.blogger.com/atom/ns#" term="premature end of file"/><category scheme="http://www.blogger.com/atom/ns#" term="REST"/><category scheme="http://www.blogger.com/atom/ns#" term="secure"/><category scheme="http://www.blogger.com/atom/ns#" term="SOAP"/><category scheme="http://www.blogger.com/atom/ns#" term="SSL"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO 5.1"/><category scheme="http://www.blogger.com/atom/ns#" term="wavemaker"/><category scheme="http://www.blogger.com/atom/ns#" term="Webservice"/><title type='text'>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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-h2kWW2T4NCVK2ZB2QLh0pAyem9_XGgan4h0f9yXCGEgQFRoceYQM-V_xzzAyQsFbb-B8UNZ7HJwOD5tL4a4hEdA_hYaWuTwheAwuVH49H_0Iyqye4no6zL-57Q7l2MrLniz1ixA9rxk-/s1600/Screen+Shot+2012-09-21+at+4.27.21+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;199&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-h2kWW2T4NCVK2ZB2QLh0pAyem9_XGgan4h0f9yXCGEgQFRoceYQM-V_xzzAyQsFbb-B8UNZ7HJwOD5tL4a4hEdA_hYaWuTwheAwuVH49H_0Iyqye4no6zL-57Q7l2MrLniz1ixA9rxk-/s320/Screen+Shot+2012-09-21+at+4.27.21+PM.png&quot; width=&quot;320&quot; /&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=&quot;font-family: Courier New, Courier, monospace;&quot;&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 &quot;changeit&quot;. 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaKq1y2GdZlqhLVQoM-yfe9XNgQO5KshTITZqHeVYCD6Qge6E-bUnWHwdPUWMYftscR5xLfj1l9WQxs7D4r-Nv5oXnd9200eK-a5vnxm5lZEq8sdhyolGadH0XkOW_nlLxiZ_M-FQ2WKWT/s1600/Screen+Shot+2012-09-21+at+4.33.55+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;124&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaKq1y2GdZlqhLVQoM-yfe9XNgQO5KshTITZqHeVYCD6Qge6E-bUnWHwdPUWMYftscR5xLfj1l9WQxs7D4r-Nv5oXnd9200eK-a5vnxm5lZEq8sdhyolGadH0XkOW_nlLxiZ_M-FQ2WKWT/s320/Screen+Shot+2012-09-21+at+4.33.55+PM.png&quot; width=&quot;320&quot; /&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;</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/6319573721993401069'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/09/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-h2kWW2T4NCVK2ZB2QLh0pAyem9_XGgan4h0f9yXCGEgQFRoceYQM-V_xzzAyQsFbb-B8UNZ7HJwOD5tL4a4hEdA_hYaWuTwheAwuVH49H_0Iyqye4no6zL-57Q7l2MrLniz1ixA9rxk-/s72-c/Screen+Shot+2012-09-21+at+4.27.21+PM.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><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><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="host.login"/><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="vCD"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO 5.1"/><title type='text'>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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij0TMebjFF1DT6qr3nbx1Owo_ITW5UxBS3k56EUCMiUk2YB3VaKy378QhQlTs_4d9rYnCEZj-v2Qap1Sge-GWFTma9vu08NDMjcGwbRK48SrY9PpcqweEelU7B8tXhcigdh99sc5do9yAa/s1600/Screen+Shot+2012-09-20+at+8.46.38+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij0TMebjFF1DT6qr3nbx1Owo_ITW5UxBS3k56EUCMiUk2YB3VaKy378QhQlTs_4d9rYnCEZj-v2Qap1Sge-GWFTma9vu08NDMjcGwbRK48SrY9PpcqweEelU7B8tXhcigdh99sc5do9yAa/s320/Screen+Shot+2012-09-20+at+8.46.38+PM.png&quot; width=&quot;300&quot; /&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=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;myVm.updateInternalState();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;System.log(&quot;VM name: &quot;+myVm.name);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var doc = new XML(myVm.toXml());&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;default xml namespace = doc.namespace();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var n8 = new Namespace(&quot;http://www.vmware.com/vcloud/extension/v1.5&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;System.log(&quot;ChainLength: &quot;+doc.VCloudExtension.*::VmVimInfo.*::VirtualDisksMaxChainLength);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var chainLength = doc.VCloudExtension.*::VmVimInfo.*::VirtualDisksMaxChainLength;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;if(myVm.vmStatus.value != 8){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;throw(&quot;VM is not powered off!&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&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 &quot;myVM&quot; (vCloud:VM) and setting the variable &quot;chainLength&quot; (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=&quot;http://mighty-virtualization.blogspot.de/2012/07/vcd-is-multi-tenant-vco-is-single.html&quot; target=&quot;_blank&quot;&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;</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='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/4692447927495747550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/4692447927495747550'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/09/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij0TMebjFF1DT6qr3nbx1Owo_ITW5UxBS3k56EUCMiUk2YB3VaKy378QhQlTs_4d9rYnCEZj-v2Qap1Sge-GWFTma9vu08NDMjcGwbRK48SrY9PpcqweEelU7B8tXhcigdh99sc5do9yAa/s72-c/Screen+Shot+2012-09-20+at+8.46.38+PM.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="appliance"/><category scheme="http://www.blogger.com/atom/ns#" term="certificate"/><category scheme="http://www.blogger.com/atom/ns#" term="dunes"/><category scheme="http://www.blogger.com/atom/ns#" term="https"/><category scheme="http://www.blogger.com/atom/ns#" term="kb"/><category scheme="http://www.blogger.com/atom/ns#" term="keystore"/><category scheme="http://www.blogger.com/atom/ns#" term="keytool"/><category scheme="http://www.blogger.com/atom/ns#" term="REST"/><category scheme="http://www.blogger.com/atom/ns#" term="SSL"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO 5.1"/><title type='text'>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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaJ9UFzvkkYruxC4ZzE0wEAdNvZcmSk3-0K2eaLI8qd2ytLCNCNuGl-CTrFJPlDBZ1EjAns8OZrm3Vj5NdMf9Ntcs9IvgQRfRn_1d5QdJEXBMazDY0Wu5raaSrliAt2wrbkXLS04X9yYqd/s1600/new_ceritficate.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaJ9UFzvkkYruxC4ZzE0wEAdNvZcmSk3-0K2eaLI8qd2ytLCNCNuGl-CTrFJPlDBZ1EjAns8OZrm3Vj5NdMf9Ntcs9IvgQRfRn_1d5QdJEXBMazDY0Wu5raaSrliAt2wrbkXLS04X9yYqd/s320/new_ceritficate.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv4ymmg1FRT1F0n4SzaQEwpouJMBwjcHr4Ol6VWpcmGwbDleFaJeU335gu95NgjooE6KfHV_XwtCH7p3IIweu_Vdq6tdD0_7igsgqELar6A5IVQav0OKSsTuPhYY-pMXtK972PetHUDxwS/s1600/result_browser.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;154&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv4ymmg1FRT1F0n4SzaQEwpouJMBwjcHr4Ol6VWpcmGwbDleFaJeU335gu95NgjooE6KfHV_XwtCH7p3IIweu_Vdq6tdD0_7igsgqELar6A5IVQav0OKSsTuPhYY-pMXtK972PetHUDxwS/s320/result_browser.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiPL45riBRjr8ti7jz5dxDMOuojtA8_bP1b0bEyZYrd8xXPOzqex6-B7J6WUyE5S1mDEdumwXMH47yqLpMrU8MnHlaWerTY3LfNXz4uELjS-xyC-yll4pedyRCf8el5Iczl1R6XfjrPau4/s1600/certificate_nok_console.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;131&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiPL45riBRjr8ti7jz5dxDMOuojtA8_bP1b0bEyZYrd8xXPOzqex6-B7J6WUyE5S1mDEdumwXMH47yqLpMrU8MnHlaWerTY3LfNXz4uELjS-xyC-yll4pedyRCf8el5Iczl1R6XfjrPau4/s320/certificate_nok_console.png&quot; width=&quot;320&quot; /&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=&quot;http://www.vcoteam.info/learn-vco/work-with-vco-over-ssl.html&quot; target=&quot;_blank&quot;&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg99W-r1-VzK1yNJSWVxv1zqMU3x8weU1SKfNwOFPa0LW6gBNDTlPnKLXiY4MbS3iGWYsF1rCXna0MDlhTBje8FBwOE89f9-v14l3PZXEdOoj0sGJQZCjKiN8GtkYWNLMaJHObI8XzNeMAU/s1600/01check-for-store.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;218&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg99W-r1-VzK1yNJSWVxv1zqMU3x8weU1SKfNwOFPa0LW6gBNDTlPnKLXiY4MbS3iGWYsF1rCXna0MDlhTBje8FBwOE89f9-v14l3PZXEdOoj0sGJQZCjKiN8GtkYWNLMaJHObI8XzNeMAU/s320/01check-for-store.png&quot; width=&quot;320&quot; /&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 &quot;dunes&quot; ceritficate&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWJq7IkGKVKAMUR8MjxG1Ll6iY450f58YQp_I2zjTiuyeNe1apxcQrpRTaGNvtLHzsNpew2CWOTUuVxUQvVQsafLEWpgcbR9rSNFiipUwjAMJqpnsgawGu2CrM53Arbhyphenhyphen2i7p7R8rwLyRt/s1600/02-delete-old.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;218&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWJq7IkGKVKAMUR8MjxG1Ll6iY450f58YQp_I2zjTiuyeNe1apxcQrpRTaGNvtLHzsNpew2CWOTUuVxUQvVQsafLEWpgcbR9rSNFiipUwjAMJqpnsgawGu2CrM53Arbhyphenhyphen2i7p7R8rwLyRt/s320/02-delete-old.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlENGY3oLsWRlw4EqAxQ-fjpssgUALFyffgMGwg_mW4q6b43RDO9ASg4H4v6jGR_zjoomp57Rwd-14s1v4P1hpqD2q8Rny5dMlly7eKuVup9oWN8YmHuGFAtd2Sy1UTSNHmGbCXLDgOhRk/s1600/03-create-new-cert.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;218&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlENGY3oLsWRlw4EqAxQ-fjpssgUALFyffgMGwg_mW4q6b43RDO9ASg4H4v6jGR_zjoomp57Rwd-14s1v4P1hpqD2q8Rny5dMlly7eKuVup9oWN8YmHuGFAtd2Sy1UTSNHmGbCXLDgOhRk/s320/03-create-new-cert.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigDGdIFi83tPrY7pfnjbuXRbeO6nI9F5HTadh7kU8JMqhBFEBjwofn1e3v_ormtw-rpnCWvrtvVwQ47GfNpGyywcda9inwwTfMSZATXts-aboyJV_OovXjtzmKcHiYlL0xTzYdTz-bfZgH/s1600/certificate_ok_console.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;128&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigDGdIFi83tPrY7pfnjbuXRbeO6nI9F5HTadh7kU8JMqhBFEBjwofn1e3v_ormtw-rpnCWvrtvVwQ47GfNpGyywcda9inwwTfMSZATXts-aboyJV_OovXjtzmKcHiYlL0xTzYdTz-bfZgH/s320/certificate_ok_console.png&quot; width=&quot;320&quot; /&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;</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/7515973777822790078'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/09/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaJ9UFzvkkYruxC4ZzE0wEAdNvZcmSk3-0K2eaLI8qd2ytLCNCNuGl-CTrFJPlDBZ1EjAns8OZrm3Vj5NdMf9Ntcs9IvgQRfRn_1d5QdJEXBMazDY0Wu5raaSrliAt2wrbkXLS04X9yYqd/s72-c/new_ceritficate.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="csv"/><category scheme="http://www.blogger.com/atom/ns#" term="ip"/><category scheme="http://www.blogger.com/atom/ns#" term="ip address"/><category scheme="http://www.blogger.com/atom/ns#" term="PowerCLI"/><category scheme="http://www.blogger.com/atom/ns#" term="powershell"/><category scheme="http://www.blogger.com/atom/ns#" term="reserve"/><category scheme="http://www.blogger.com/atom/ns#" term="text file"/><category scheme="http://www.blogger.com/atom/ns#" term="txt"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><title type='text'>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 &quot;IP management&quot; 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 = &quot;ip_names.txt&quot;&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=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;$ip = $Lines[$i].ToString().Split(&#39;;&#39;)[0].Trim()&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;$dns = $Lines[$i].ToString().Split(&#39;;&#39;)[1].Trim()&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;$state = $Lines[$i].ToString().Split(&#39;;&#39;)[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=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;if ($state –eq &#39;free&#39;)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;{&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;echo $ip &quot;... is free&quot;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;$Lines[$i]&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;$bool = Read-Host &quot;Use IP?&quot;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;if($bool -eq &quot;yes&quot;){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;$Lines[$i] = $Lines[$i].Replace(&quot;free&quot;, &quot;reserved&quot;)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;$Lines | Set-Content -Path $file&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;echo &quot;IP address:&quot;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;$ip&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;break&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;else{&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;echo &quot;IP wasn´t chosen.&quot;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6XOSP_s5Kak6A4SKjoAxBLDywJddJmPIEgLYdN8pdahe9_zYI-ElOEs-kHb0X6mBe_38Y796vnsH2M3sZUvZU0eqTDeyMm_cLsVCl_svh2j0nBtLQbbp-Y1rVEOst9OJh494Es86FPfVi/s1600/Screen+Shot+2012-07-24+at+8.44.09+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;167&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6XOSP_s5Kak6A4SKjoAxBLDywJddJmPIEgLYdN8pdahe9_zYI-ElOEs-kHb0X6mBe_38Y796vnsH2M3sZUvZU0eqTDeyMm_cLsVCl_svh2j0nBtLQbbp-Y1rVEOst9OJh494Es86FPfVi/s320/Screen+Shot+2012-07-24+at+8.44.09+AM.png&quot; width=&quot;320&quot; /&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 &quot;select&quot; an IP address ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/2548692310867852968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/2548692310867852968'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/07/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6XOSP_s5Kak6A4SKjoAxBLDywJddJmPIEgLYdN8pdahe9_zYI-ElOEs-kHb0X6mBe_38Y796vnsH2M3sZUvZU0eqTDeyMm_cLsVCl_svh2j0nBtLQbbp-Y1rVEOst9OJh494Es86FPfVi/s72-c/Screen+Shot+2012-07-24+at+8.44.09+AM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><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><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="organization"/><category scheme="http://www.blogger.com/atom/ns#" term="rights"/><category scheme="http://www.blogger.com/atom/ns#" term="role"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud API"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><title type='text'>chain length consolidation in vCloud Director - multi-tenancy part 2</title><content type='html'>Based on the last &lt;a href=&quot;http://mighty-virtualization.blogspot.de/2012/07/vcd-is-multi-tenant-vco-is-single.html&quot; target=&quot;_blank&quot;&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 &quot;host.login()&quot; 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 &quot;consolidate&quot; 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(&quot;VM name: &quot;+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(&quot;http://www.vmware.com/vcloud/extension/v1.5&quot;);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;System.log(&quot;ChainLength: &quot;+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=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;throw(&quot;VM is not powered off!&quot;);&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=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&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=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The first step identifies the chain length and the second one checks the state of the VM. In my workflow used a &quot;user interaction&quot; with the chain length as external input to ask if the VM should be consolidate. From a external portal you have to use the &quot;answerWorkflow&quot; method.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&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=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&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=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp0nlxg8nh5xpq5vH53XBEmk4_vanKme0n6gsvpE_mX-AxlBz8WQXsUAhsaKWQlK4NKw5dI5sDA8oLa5HAehAMwwBPZM97dEjsQCyEWRANfKIbyKl4wg1dh8rc-WjxYUjDx6a-rUetoixf/s1600/Screen+Shot+2012-07-07+at+10.25.16+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;207&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp0nlxg8nh5xpq5vH53XBEmk4_vanKme0n6gsvpE_mX-AxlBz8WQXsUAhsaKWQlK4NKw5dI5sDA8oLa5HAehAMwwBPZM97dEjsQCyEWRANfKIbyKl4wg1dh8rc-WjxYUjDx6a-rUetoixf/s320/Screen+Shot+2012-07-07+at+10.25.16+AM.png&quot; width=&quot;320&quot; /&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=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;You can control the operation in you vCloud Director, there you will see a &quot;consolidating VM&quot; even if you aren´t a SYSTEM administrator :)&lt;/span&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='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/7752984919123115582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/7752984919123115582'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/07/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp0nlxg8nh5xpq5vH53XBEmk4_vanKme0n6gsvpE_mX-AxlBz8WQXsUAhsaKWQlK4NKw5dI5sDA8oLa5HAehAMwwBPZM97dEjsQCyEWRANfKIbyKl4wg1dh8rc-WjxYUjDx6a-rUetoixf/s72-c/Screen+Shot+2012-07-07+at+10.25.16+AM.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><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><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="credentials"/><category scheme="http://www.blogger.com/atom/ns#" term="login"/><category scheme="http://www.blogger.com/atom/ns#" term="plug-in"/><category scheme="http://www.blogger.com/atom/ns#" term="rights"/><category scheme="http://www.blogger.com/atom/ns#" term="roles"/><category scheme="http://www.blogger.com/atom/ns#" term="vCD"/><category scheme="http://www.blogger.com/atom/ns#" term="VclHost"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud API"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud Director"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><title type='text'>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 &quot;consolidate&quot; 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 &quot;authenticate&quot; 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 &quot;logged&quot; 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(&quot;Organization: &quot;+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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggiJwjIyQfISZPTIXxoPsYgTIMFNzSGI7zLpXj9ZxmIUj79kXG3zCJOMF6UZiowDq9oIEILV1dUnvfQFHN59DAXqVPaZkmguC8jGolTRYngcgFxvEKTUtA4LbFIVAD-olfOegN0yI-esnq/s1600/Screen+Shot+2012-07-03+at+7.05.25+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggiJwjIyQfISZPTIXxoPsYgTIMFNzSGI7zLpXj9ZxmIUj79kXG3zCJOMF6UZiowDq9oIEILV1dUnvfQFHN59DAXqVPaZkmguC8jGolTRYngcgFxvEKTUtA4LbFIVAD-olfOegN0yI-esnq/s400/Screen+Shot+2012-07-03+at+7.05.25+PM.png&quot; width=&quot;400&quot; /&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;</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/2113559921280183106'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/07/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggiJwjIyQfISZPTIXxoPsYgTIMFNzSGI7zLpXj9ZxmIUj79kXG3zCJOMF6UZiowDq9oIEILV1dUnvfQFHN59DAXqVPaZkmguC8jGolTRYngcgFxvEKTUtA4LbFIVAD-olfOegN0yI-esnq/s72-c/Screen+Shot+2012-07-03+at+7.05.25+PM.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="language"/><category scheme="http://www.blogger.com/atom/ns#" term="programming language"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="SOAP"/><category scheme="http://www.blogger.com/atom/ns#" term="SOAP client"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator"/><category scheme="http://www.blogger.com/atom/ns#" term="web client"/><title type='text'>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=&quot;http://tryruby.org/&quot;&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 &#39;savon&#39;&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 &#39;savon&#39;&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 = &quot;http://10.4.13.15:8280/vmware-vmo-webcontrol/webservice?wsdl&quot;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;end&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;user = &quot;YourUser&quot;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;pass = &quot;YourPass&quot;&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENJDcFjAZUAFkK9yo4A0L1o6lmtH65_mqfbsO7Uavq9cRHbQLjuSjRDlsmeAGj5PZ5nMzvHuXnsCUnYhhKIx9PJLvsxLOYLi0WTCdxkXPQylykxCCdWuMk9N-N0JYU-0WgHmMf5gD7Tj4/s1600/Screen+Shot+2012-05-04+at+10.28.31+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENJDcFjAZUAFkK9yo4A0L1o6lmtH65_mqfbsO7Uavq9cRHbQLjuSjRDlsmeAGj5PZ5nMzvHuXnsCUnYhhKIx9PJLvsxLOYLi0WTCdxkXPQylykxCCdWuMk9N-N0JYU-0WgHmMf5gD7Tj4/s400/Screen+Shot+2012-05-04+at+10.28.31+PM.png&quot; width=&quot;400&quot; /&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;</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/3128323578352381572'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/05/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENJDcFjAZUAFkK9yo4A0L1o6lmtH65_mqfbsO7Uavq9cRHbQLjuSjRDlsmeAGj5PZ5nMzvHuXnsCUnYhhKIx9PJLvsxLOYLi0WTCdxkXPQylykxCCdWuMk9N-N0JYU-0WgHmMf5gD7Tj4/s72-c/Screen+Shot+2012-05-04+at+10.28.31+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="defaultPortConfig"/><category scheme="http://www.blogger.com/atom/ns#" term="dvPortGroup"/><category scheme="http://www.blogger.com/atom/ns#" term="dvportsetting"/><category scheme="http://www.blogger.com/atom/ns#" term="dvSwitch"/><category scheme="http://www.blogger.com/atom/ns#" term="find vlanId"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><category scheme="http://www.blogger.com/atom/ns#" term="vlan id"/><title type='text'>vCO - how to find the vlanID of a dvPortGroup</title><content type='html'>Today I received an interesting question: &quot;How to find out the VLAN ID of a distributed virtual port group?&quot;. At the first moment I think: &quot;No problem, cause the vSphere client can also show the information.&quot;.&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=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;System.debug(dvSwitch.portgroup[i].config.defaultPortConfig.vlan);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&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=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&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=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIdi3IRivf5e6kiNtlRzOK2xvCaGauerg6mFkHjoa7cUENBnfyIhczQqGiYF17ZMsOIOjLRQJCHtfeW8KxcxHA6dHwDlY-1fkEOyKDkO0t80rsYZ2av_UJmpM2nUmbZt_K6vZN7fBfjpyx/s1600/Screen+Shot+2012-03-09+at+11.17.05+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;141&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIdi3IRivf5e6kiNtlRzOK2xvCaGauerg6mFkHjoa7cUENBnfyIhczQqGiYF17ZMsOIOjLRQJCHtfeW8KxcxHA6dHwDlY-1fkEOyKDkO0t80rsYZ2av_UJmpM2nUmbZt_K6vZN7fBfjpyx/s400/Screen+Shot+2012-03-09+at+11.17.05+PM.png&quot; width=&quot;400&quot; /&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;</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='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/9045140165713710349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/9045140165713710349'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/03/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIdi3IRivf5e6kiNtlRzOK2xvCaGauerg6mFkHjoa7cUENBnfyIhczQqGiYF17ZMsOIOjLRQJCHtfeW8KxcxHA6dHwDlY-1fkEOyKDkO0t80rsYZ2av_UJmpM2nUmbZt_K6vZN7fBfjpyx/s72-c/Screen+Shot+2012-03-09+at+11.17.05+PM.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><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><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="fast"/><category scheme="http://www.blogger.com/atom/ns#" term="phyton"/><category scheme="http://www.blogger.com/atom/ns#" term="PyvCO"/><category scheme="http://www.blogger.com/atom/ns#" term="scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="SOAP"/><category scheme="http://www.blogger.com/atom/ns#" term="SOAP client"/><category scheme="http://www.blogger.com/atom/ns#" term="suds"/><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="Webservice"/><category scheme="http://www.blogger.com/atom/ns#" term="WSDL"/><title type='text'>vCO - want fast success? use python!</title><content type='html'>







&lt;br /&gt;
&lt;div class=&quot;p1&quot;&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=&quot;http://labs.vmware.com/flings/pyvco&quot;&gt;&lt;span class=&quot;s1&quot;&gt;http://labs.vmware.com/flings/pyvco&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
I see their fast and impressive results which took them just a few days and decided to take a look into python using &quot;native&quot; SOAP clients. After reading thru some available modules I decide to use suds:&amp;nbsp;&lt;a href=&quot;https://fedorahosted.org/suds/&quot;&gt;&lt;span class=&quot;s1&quot;&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=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&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(&#39;http://172.16.0.176:8280/vmware-vmo-webcontrol/webservice?wsdl&#39;)&lt;br /&gt;
print client&lt;/code&gt;&lt;/div&gt;
&lt;code&gt;
&lt;/code&gt;&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
This is the output:&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrUYIBLUxQc6FDXgXmlRhoEazU1bATIY7rZAhffSTHbXVPy0PfS1MyzfY8941JgoW9taZFvHND3dBk5BDveGxgg0R0Z2h7CcndIw8N9e0ksFuu7OaiiL4NV9B9txlyJ6v-HqhFbEygcRyx/s1600/Screen+Shot+2012-02-27+at+8.34.22+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;186&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrUYIBLUxQc6FDXgXmlRhoEazU1bATIY7rZAhffSTHbXVPy0PfS1MyzfY8941JgoW9taZFvHND3dBk5BDveGxgg0R0Z2h7CcndIw8N9e0ksFuu7OaiiL4NV9B9txlyJ6v-HqhFbEygcRyx/s320/Screen+Shot+2012-02-27+at+8.34.22+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
As you can see all methods and types are shown with a simple print :)&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Based on this and some indents you can produce some real nice functions like this:&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;import suds&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;vCOurl = &#39;http://172.16.0.176:8280/vmware-vmo-webcontrol/webservice?WSDL&#39;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;#username = raw_input(&#39;Username: &#39;)&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;#password = raw_input(&#39;Password: &#39;)&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;username = &#39;USERNAME&#39;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;password = &#39;PASSWORD&#39;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;client = suds.client.Client(vCOurl)&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;#print client&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;def getAllWfs():&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp;allWfs = client.service.getAllWorkflows(username, password)&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp;return allWfs&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;def findWfs(name):&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp;Wfs = client.service.getWorkflowsWithName(name, username, password)&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp;return Wfs&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;#allWfs = getAllWfs()&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;allWfs = findWfs(raw_input(&#39;Workflow name: &#39;))&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;for wf in allWfs:&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;print wf.name&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;print wf.id&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;wfInParas = wf.inParameters&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;for iParas in wfInParas[0]:&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print &#39;inParameter: &#39;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&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=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;wfOutParas = wf.outParameters&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp;for oParas in wfOutParas[0]:&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print &#39;outParameter: &#39;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&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=&quot;p2&quot;&gt;
&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&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=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjpPsviOXV4BjLBRCMq7GcKM1cBJu7poAH671agOKWtIuf1-9y0rf86ynzDYE9hkCwaSSTHJAMVZpM7lta2xu6xPkmmvRVc4ORwG9xt8o00CJXYWmwGg01EjfEiotQAQqruy-BnUY25X56/s1600/Screen+Shot+2012-02-27+at+8.48.24+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;92&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjpPsviOXV4BjLBRCMq7GcKM1cBJu7poAH671agOKWtIuf1-9y0rf86ynzDYE9hkCwaSSTHJAMVZpM7lta2xu6xPkmmvRVc4ORwG9xt8o00CJXYWmwGg01EjfEiotQAQqruy-BnUY25X56/s320/Screen+Shot+2012-02-27+at+8.48.24+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
So feel free to post your implementations!&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/5801365512803758193'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/02/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrUYIBLUxQc6FDXgXmlRhoEazU1bATIY7rZAhffSTHbXVPy0PfS1MyzfY8941JgoW9taZFvHND3dBk5BDveGxgg0R0Z2h7CcndIw8N9e0ksFuu7OaiiL4NV9B9txlyJ6v-HqhFbEygcRyx/s72-c/Screen+Shot+2012-02-27+at+8.34.22+PM.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><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><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="Altiris automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Altiris DS"/><category scheme="http://www.blogger.com/atom/ns#" term="Altiris SDK"/><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="vCenter Orchestrator"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud"/><category scheme="http://www.blogger.com/atom/ns#" term="vCO"/><title type='text'>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: &quot;Why do you use Altiris as deployment mechanism if you have VMware templates?&quot; 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=&quot;http://www.symantec.com/business/support/index?page=content&amp;amp;id=TECH40810&quot;&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 &quot;API&quot;. 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPqSv0w-qYZVQqIT9lsUFs5JGkutnyuO_fySpyFpBWvUUJWTp-4A-a84PSNEXaZC4YAMZPPlfsqGw1uLk2XJscghatEWN9NyMP_MhvNB9HmlSfkrMK02lCR6t3M7BfPqzPuls6zh2ZMj-B/s1600/Screen+Shot+2012-02-24+at+9.22.22+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPqSv0w-qYZVQqIT9lsUFs5JGkutnyuO_fySpyFpBWvUUJWTp-4A-a84PSNEXaZC4YAMZPPlfsqGw1uLk2XJscghatEWN9NyMP_MhvNB9HmlSfkrMK02lCR6t3M7BfPqzPuls6zh2ZMj-B/s320/Screen+Shot+2012-02-24+at+9.22.22+PM.png&quot; width=&quot;320&quot; /&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 = &quot;http://&quot;+AltirisServer+&quot;/Altiris.ASDK.DS/ComputerManagementService.asmx/GetComputerID?computerSearchPhrase=&quot;;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;url += Servername&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;url += &quot;&amp;amp;computerSearchType=2&quot;;&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;</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='46 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/393808702187481217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/393808702187481217'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2012/02/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPqSv0w-qYZVQqIT9lsUFs5JGkutnyuO_fySpyFpBWvUUJWTp-4A-a84PSNEXaZC4YAMZPPlfsqGw1uLk2XJscghatEWN9NyMP_MhvNB9HmlSfkrMK02lCR6t3M7BfPqzPuls6zh2ZMj-B/s72-c/Screen+Shot+2012-02-24+at+9.22.22+PM.png" height="72" width="72"/><thr:total>46</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="Auto deploy"/><category scheme="http://www.blogger.com/atom/ns#" term="boot image"/><category scheme="http://www.blogger.com/atom/ns#" term="integration"/><category scheme="http://www.blogger.com/atom/ns#" term="plug-in"/><category scheme="http://www.blogger.com/atom/ns#" term="powershell"/><category scheme="http://www.blogger.com/atom/ns#" term="PXE"/><category scheme="http://www.blogger.com/atom/ns#" term="stateless ESXi"/><category scheme="http://www.blogger.com/atom/ns#" term="TFTP"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Server Appliance"/><title type='text'>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=&quot;http://jreypo.wordpress.com/tag/vsphere-auto-deploy/&quot;&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=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiubBY7aPsrfkR3BTxh00DIk_VteqrutEHvv5KmgtjdES-aSK43GP7_ykOIvRm8rWytqrRAPtq8zu4HWjNxQ3wER_9_PaO3YraY-twb9V15QrYKfuMkMRNAlGew-9vk8p4vAgdGEX51pzvg/s1600/Screen+Shot+2011-12-28+at+11.02.56+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;102&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiubBY7aPsrfkR3BTxh00DIk_VteqrutEHvv5KmgtjdES-aSK43GP7_ykOIvRm8rWytqrRAPtq8zu4HWjNxQ3wER_9_PaO3YraY-twb9V15QrYKfuMkMRNAlGew-9vk8p4vAgdGEX51pzvg/s400/Screen+Shot+2011-12-28+at+11.02.56+PM.png&quot; width=&quot;400&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2ZnofP0inITodTDUXFwy9_TSwIWRZd9Jrk9b5wQPjX0zYJ3ARXAGOzAzrimiQPgXmKPWOv7znuznlnxmLMjtyizyJ_GBZtVWOaMUvEYobsxFLU0hWBqwpXUqssG9JRbDzEbhQzVFgLQDE/s1600/Screen+Shot+2011-12-28+at+11.10.01+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2ZnofP0inITodTDUXFwy9_TSwIWRZd9Jrk9b5wQPjX0zYJ3ARXAGOzAzrimiQPgXmKPWOv7znuznlnxmLMjtyizyJ_GBZtVWOaMUvEYobsxFLU0hWBqwpXUqssG9JRbDzEbhQzVFgLQDE/s320/Screen+Shot+2011-12-28+at+11.10.01+PM.png&quot; width=&quot;320&quot; /&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 &quot;index.xml&quot; file in the package.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8vxcnvF7qg5suU7D9H1Y5j_HFWrozv5cix1dLRNYoEvzW2AetWpZRhtw3tkVzaRgOBSJCfMlM37sbwy-OYVAfSnmnq3LnNcDvABSeTRhwyMdI-s0hH7X149qIScaCbRuVjJK0wLPL_7Hy/s1600/Screen+Shot+2011-12-28+at+11.12.31+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8vxcnvF7qg5suU7D9H1Y5j_HFWrozv5cix1dLRNYoEvzW2AetWpZRhtw3tkVzaRgOBSJCfMlM37sbwy-OYVAfSnmnq3LnNcDvABSeTRhwyMdI-s0hH7X149qIScaCbRuVjJK0wLPL_7Hy/s320/Screen+Shot+2011-12-28+at+11.12.31+PM.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC3ziSf6R0S149THwT0EH3k3Y-LMhGIJt4PQBJ6XSxOltGFHfzsRORZjU0RKkNPylYi1r5p72J7WlUxtrszxXdJ9x0yuxaW1Iw20chjoPrtuQqYrnkgR7x12veyNVWw3CGQ0AqtUtxRMok/s1600/Screen+Shot+2011-12-28+at+11.14.30+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;172&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC3ziSf6R0S149THwT0EH3k3Y-LMhGIJt4PQBJ6XSxOltGFHfzsRORZjU0RKkNPylYi1r5p72J7WlUxtrszxXdJ9x0yuxaW1Iw20chjoPrtuQqYrnkgR7x12veyNVWw3CGQ0AqtUtxRMok/s320/Screen+Shot+2011-12-28+at+11.14.30+PM.png&quot; width=&quot;320&quot; /&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 &quot;Inventory&quot; tab and taking a look into the Auto Deploy tree.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPjP2ymCqw6o6dhxkXN7JryGCwaDDIAEe7fskqQlZPXAlcm4DDqpMXFRKK7rJJSATZ3UTaofbcokGtHDqDnqT92IeB36LI9IB2uJVti0lCvrHSbzLA0jEvvR4kF5Vv7tlUq7XMm5kPzSC3/s1600/Screen+Shot+2011-12-28+at+11.19.01+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;173&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPjP2ymCqw6o6dhxkXN7JryGCwaDDIAEe7fskqQlZPXAlcm4DDqpMXFRKK7rJJSATZ3UTaofbcokGtHDqDnqT92IeB36LI9IB2uJVti0lCvrHSbzLA0jEvvR4kF5Vv7tlUq7XMm5kPzSC3/s200/Screen+Shot+2011-12-28+at+11.19.01+PM.png&quot; width=&quot;200&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUOdKdqhIQKokzUC06ZZAotBNivPnDT878ldEgNt1drqFjJ7b2AAbM8B7eqTfSbVI3Q9OmonZGYkQQUebICtjyCTheKMAfH53DSn5hOkTAddXhYPqFXs4hlue_2QEWlAjDa2mCzjnpfEk4/s1600/Screen+Shot+2011-12-28+at+11.22.43+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUOdKdqhIQKokzUC06ZZAotBNivPnDT878ldEgNt1drqFjJ7b2AAbM8B7eqTfSbVI3Q9OmonZGYkQQUebICtjyCTheKMAfH53DSn5hOkTAddXhYPqFXs4hlue_2QEWlAjDa2mCzjnpfEk4/s320/Screen+Shot+2011-12-28+at+11.22.43+PM.png&quot; width=&quot;320&quot; /&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=&quot;http://www.virtuallyghetto.com/&quot; target=&quot;_blank&quot;&gt;William&lt;/a&gt; for the hint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/6576188953875167736'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2011/12/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiubBY7aPsrfkR3BTxh00DIk_VteqrutEHvv5KmgtjdES-aSK43GP7_ykOIvRm8rWytqrRAPtq8zu4HWjNxQ3wER_9_PaO3YraY-twb9V15QrYKfuMkMRNAlGew-9vk8p4vAgdGEX51pzvg/s72-c/Screen+Shot+2011-12-28+at+11.02.56+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="bus"/><category scheme="http://www.blogger.com/atom/ns#" term="bus id"/><category scheme="http://www.blogger.com/atom/ns#" term="OOTB"/><category scheme="http://www.blogger.com/atom/ns#" term="SCSI"/><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="second SCSI controller"/><category scheme="http://www.blogger.com/atom/ns#" term="workflow"/><title type='text'>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;
&quot;Add a second disk with a different controller type and and a new bus ID (1).&quot;&lt;br /&gt;
&lt;br /&gt;
Reading this the task sounds really simple, but when searching there is only an &quot;Add disk&quot; 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=&quot;http://labs.vmware.com/flings/onyx&quot;&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 &quot;add disk&quot; 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 &quot;createVirtualScsiControllerConfigSpec&quot; 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 &quot;Scriptable Task&quot; element and the &quot;vim3WaitTaskEnd&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS12hiunagZLXtJUVgestrjP6JDZM4Os7KlvY_GqQnupa1pAe74Cv63rkaxLJrqU-RG7klFKXNc72ubLPDVlFvYvwudfCVkgHcVvDXytgEsrtHIK7Yddxalc0ZpaNhv3l4-0pWK-b2o4Wy/s1600/Screen+shot+2011-12-13+at+12.02.14+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;136&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS12hiunagZLXtJUVgestrjP6JDZM4Os7KlvY_GqQnupa1pAe74Cv63rkaxLJrqU-RG7klFKXNc72ubLPDVlFvYvwudfCVkgHcVvDXytgEsrtHIK7Yddxalc0ZpaNhv3l4-0pWK-b2o4Wy/s400/Screen+shot+2011-12-13+at+12.02.14+PM.png&quot; width=&quot;400&quot; /&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 &quot;Scriptable Task&quot; 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;</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='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/3857436454654037943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/3857436454654037943'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2011/12/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS12hiunagZLXtJUVgestrjP6JDZM4Os7KlvY_GqQnupa1pAe74Cv63rkaxLJrqU-RG7klFKXNc72ubLPDVlFvYvwudfCVkgHcVvDXytgEsrtHIK7Yddxalc0ZpaNhv3l4-0pWK-b2o4Wy/s72-c/Screen+shot+2011-12-13+at+12.02.14+PM.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="ESX"/><category scheme="http://www.blogger.com/atom/ns#" term="graylog"/><category scheme="http://www.blogger.com/atom/ns#" term="graylog2"/><category scheme="http://www.blogger.com/atom/ns#" term="logging"/><category scheme="http://www.blogger.com/atom/ns#" term="syslog"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter"/><category scheme="http://www.blogger.com/atom/ns#" term="vcenter appliance"/><title type='text'>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=&quot;http://graylog2.org/&quot;&gt;http://graylog2.org/&lt;/a&gt;) which is a real cool tool.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbatVDllfT9gz8Jh1AT1rGUd-v4nFymWvBu9_vTkxN2_1F20tjjEGviOZ9C3ah7_4qdLCEtqq6JZStdb6zsFzTeAobu5o1G33HQ44GkXK2VEWMRXx5PsfihsrX-cqnfCSzv8_1xDcfjD_V/s1600/Screen+shot+2011-11-30+at+1.02.22+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;90&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbatVDllfT9gz8Jh1AT1rGUd-v4nFymWvBu9_vTkxN2_1F20tjjEGviOZ9C3ah7_4qdLCEtqq6JZStdb6zsFzTeAobu5o1G33HQ44GkXK2VEWMRXx5PsfihsrX-cqnfCSzv8_1xDcfjD_V/s320/Screen+shot+2011-11-30+at+1.02.22+PM.png&quot; width=&quot;320&quot; /&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(&quot;10.10.10.10&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj71d3IzC3K7jfcG6wBn-Vfg33-4GteEj9zhDY2i40TGJgGeLLpg2Qru7SpkVCynXfZZnj5H_jXAzdCsL4Y7ICIvVFRRO0zoKCtpci_MJLnUanuKV5Yz5msgbngWo_fHtF-fLTQ492e9b_e/s1600/Screen+shot+2011-11-30+at+1.46.10+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;105&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj71d3IzC3K7jfcG6wBn-Vfg33-4GteEj9zhDY2i40TGJgGeLLpg2Qru7SpkVCynXfZZnj5H_jXAzdCsL4Y7ICIvVFRRO0zoKCtpci_MJLnUanuKV5Yz5msgbngWo_fHtF-fLTQ492e9b_e/s320/Screen+shot+2011-11-30+at+1.46.10+PM.png&quot; width=&quot;320&quot; /&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;</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/6384631647047031408'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2011/11/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbatVDllfT9gz8Jh1AT1rGUd-v4nFymWvBu9_vTkxN2_1F20tjjEGviOZ9C3ah7_4qdLCEtqq6JZStdb6zsFzTeAobu5o1G33HQ44GkXK2VEWMRXx5PsfihsrX-cqnfCSzv8_1xDcfjD_V/s72-c/Screen+shot+2011-11-30+at+1.02.22+PM.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="dvSwitch"/><category scheme="http://www.blogger.com/atom/ns#" term="operation"/><category scheme="http://www.blogger.com/atom/ns#" term="Parameter"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter Orchestrator"/><category scheme="http://www.blogger.com/atom/ns#" term="vCloud"/><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="vSphere 5"/><category scheme="http://www.blogger.com/atom/ns#" term="wavemaker"/><category scheme="http://www.blogger.com/atom/ns#" term="web complexity"/><category scheme="http://www.blogger.com/atom/ns#" term="web portal"/><category scheme="http://www.blogger.com/atom/ns#" term="web service"/><title type='text'>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 &quot;getAllWorkflows&quot;, 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 &quot;getFreeDvPorts&quot; you have to change the options of the dojoGrid.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVQxlAppl4vQwNh9wWb4sXGkuqKfwk_IIknXtSrTPvfu3yaoZdu6ZSoheKZxSffODpPkZGdIljGnWNd1loadRcyQZm95fpMhTQw1WLCO0di27IPkVjl8bFf0IkfTOIvyRxbENXKRMatIHZ/s1600/Screen+shot+2011-11-24+at+10.11.44+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVQxlAppl4vQwNh9wWb4sXGkuqKfwk_IIknXtSrTPvfu3yaoZdu6ZSoheKZxSffODpPkZGdIljGnWNd1loadRcyQZm95fpMhTQw1WLCO0di27IPkVjl8bFf0IkfTOIvyRxbENXKRMatIHZ/s1600/Screen+shot+2011-11-24+at+10.11.44+AM.png&quot; /&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 &quot;selectionMode&quot; has to be &quot;extended&quot; which allows you to copy the ID of the workflow. Next thing you have to do is to change the IN parameter of the &quot;getFreeDvPorts&quot; workflow into &quot;dvSwitchName&quot; as String and &quot;NumPorts&quot; as Number. I also added an &quot;CriticalGroups&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAirqG4BH35gEdW80e6mjvkY_kMLNpeE9qH87Zeb7NhZ_sYgHUAdTLCU-3QU3-vil3GqvDb-zqwlzp1NK4gC8kGtD-VzIdE4Q_w2uK2t479cor6MacIj8npk1qrfw-e6UISYHnGJ_BBXPa/s1600/Screen+shot+2011-11-26+at+10.49.39+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;162&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAirqG4BH35gEdW80e6mjvkY_kMLNpeE9qH87Zeb7NhZ_sYgHUAdTLCU-3QU3-vil3GqvDb-zqwlzp1NK4gC8kGtD-VzIdE4Q_w2uK2t479cor6MacIj8npk1qrfw-e6UISYHnGJ_BBXPa/s320/Screen+shot+2011-11-26+at+10.49.39+AM.png&quot; width=&quot;320&quot; /&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 &quot;getInventory&quot; 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 &quot;Submit&quot;. I also add a TokenID field to control if the workflow is started. Next button is called &quot;Result&quot; and the &quot;dataGrid&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2FmsWHgCeoLqCTOqsTeZDOMDjDLKKia0uZcRjaVz6WtXlEHsG0vUB9aB1mkVe0XPrjuBUN0flCUnYdvwLOgURQ6m78AiViC-wUk951UZ6qkoO5lt7sXjjuak4YqQkWx5xLP5GM6aLhfCo/s1600/Screen+shot+2011-11-26+at+10.59.15+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;276&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2FmsWHgCeoLqCTOqsTeZDOMDjDLKKia0uZcRjaVz6WtXlEHsG0vUB9aB1mkVe0XPrjuBUN0flCUnYdvwLOgURQ6m78AiViC-wUk951UZ6qkoO5lt7sXjjuak4YqQkWx5xLP5GM6aLhfCo/s400/Screen+shot+2011-11-26+at+10.59.15+AM.png&quot; width=&quot;400&quot; /&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 &quot;Service&quot; for the OnClick event. This service I named &quot;executeWf&quot; and select the reference &quot;vCOlab&quot; and the &quot;executeWorkflow&quot; operation. Now the Submit button is linked with the &quot;executeWorkflow&quot; operation.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWFo0T6almcCJqJyy_AZf4OOb3GOTOt7ujEnCdaflrMDlVPuyjjjc4uweM_V5G5qgkRAn2dHIVfZ0Iz4Tyvuy6KbjVBJPITewCZzsbkIVLOOg0_m_VOKfIfyG5rhnvtZF9wDJl6rLYTZPg/s1600/Screen+shot+2011-11-26+at+11.03.21+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;305&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWFo0T6almcCJqJyy_AZf4OOb3GOTOt7ujEnCdaflrMDlVPuyjjjc4uweM_V5G5qgkRAn2dHIVfZ0Iz4Tyvuy6KbjVBJPITewCZzsbkIVLOOg0_m_VOKfIfyG5rhnvtZF9wDJl6rLYTZPg/s320/Screen+shot+2011-11-26+at+11.03.21+AM.png&quot; width=&quot;320&quot; /&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As you can see the &quot;executeWorkflow&quot; 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 &quot;getFreeDvPorts&quot; workflow you can copy from the first &quot;getAllWorkflows&quot; 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=&quot;http://www.virtuallyghetto.com/&quot;&gt;http://www.virtuallyghetto.com/&lt;/a&gt;) and I had some sleepless nights to get the right method. The input parameters &quot;workflowInputs&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtiw_QXqKsszab5h6lwzwxzIdrOkh5k2tRKX0MwvrzgZOrTrr0WH6ylNAvRexkymnMx5lUrSAaVsfUlBTAZh9LcbLiWV4OPLlmjD6nU1VtWYaDlxdJ_Ajt7imczbGi2XYs7cw1JkZN9PFT/s1600/Screen+shot+2011-11-26+at+11.09.49+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;203&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtiw_QXqKsszab5h6lwzwxzIdrOkh5k2tRKX0MwvrzgZOrTrr0WH6ylNAvRexkymnMx5lUrSAaVsfUlBTAZh9LcbLiWV4OPLlmjD6nU1VtWYaDlxdJ_Ajt7imczbGi2XYs7cw1JkZN9PFT/s320/Screen+shot+2011-11-26+at+11.09.49+AM.png&quot; width=&quot;320&quot; /&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 &quot;dvSwitchName&quot; and &quot;FreeDvPorts&quot;. 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 &quot;id&quot; of the executeWf operation.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgralgnP5SccmhA5I8JKp3Cvj6t7e17ZPpLZE7pYJ6FAa66Qv9bDid-AoBrrlSWwGaRl13sS2OabOz2B4XZgyhcmrOq8XMKv-YRjUt_4AG0ctekA3NXeDs6sxByq12UMNPaWkMHTbY2T8RL/s1600/Screen+shot+2011-11-26+at+11.13.16+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgralgnP5SccmhA5I8JKp3Cvj6t7e17ZPpLZE7pYJ6FAa66Qv9bDid-AoBrrlSWwGaRl13sS2OabOz2B4XZgyhcmrOq8XMKv-YRjUt_4AG0ctekA3NXeDs6sxByq12UMNPaWkMHTbY2T8RL/s320/Screen+shot+2011-11-26+at+11.13.16+AM.png&quot; width=&quot;320&quot; /&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 &quot;Submit&quot; 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 &quot;Result&quot; button. This is the &quot;getWorkflowTokenResult&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH9KWslCx4YQeL3Tc15c8mMwGg_QV6iA58RuNRR0uq9nzooFBuA0DBZrIR7GfUU6LLm4bZtd9ypV-Bdv7M8MSxBBzeagSKP_CW_x_jLTYPXBQN_UNqJh4i0De7gEU58qfq2HAR1F5x9iC7/s1600/Screen+shot+2011-11-26+at+11.27.36+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;124&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH9KWslCx4YQeL3Tc15c8mMwGg_QV6iA58RuNRR0uq9nzooFBuA0DBZrIR7GfUU6LLm4bZtd9ypV-Bdv7M8MSxBBzeagSKP_CW_x_jLTYPXBQN_UNqJh4i0De7gEU58qfq2HAR1F5x9iC7/s320/Screen+shot+2011-11-26+at+11.27.36+AM.png&quot; width=&quot;320&quot; /&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 &quot;getResult&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLvcDaEW24HJFk44srCXH_b35Y7bTIR65S2DkpuRlkmmzOxJhf8b4U5WV9yok97zPt3FVa4TQoADfxWFv5n7Cov-Up4vwITNreC-4PqBSRnsobzUW4ImaEfBqt3ik96S4TrusYgu_tTwih/s1600/Screen+shot+2011-11-26+at+11.31.40+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;211&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLvcDaEW24HJFk44srCXH_b35Y7bTIR65S2DkpuRlkmmzOxJhf8b4U5WV9yok97zPt3FVa4TQoADfxWFv5n7Cov-Up4vwITNreC-4PqBSRnsobzUW4ImaEfBqt3ik96S4TrusYgu_tTwih/s320/Screen+shot+2011-11-26+at+11.31.40+AM.png&quot; width=&quot;320&quot; /&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;</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/629671705419114583'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2011/11/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVQxlAppl4vQwNh9wWb4sXGkuqKfwk_IIknXtSrTPvfu3yaoZdu6ZSoheKZxSffODpPkZGdIljGnWNd1loadRcyQZm95fpMhTQw1WLCO0di27IPkVjl8bFf0IkfTOIvyRxbENXKRMatIHZ/s72-c/Screen+shot+2011-11-24+at+10.11.44+AM.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><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><title type='text'>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 :(</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/1718328310710074301'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2011/11/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><thr:total>1</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="Distributed Virtual Switch"/><category scheme="http://www.blogger.com/atom/ns#" term="DVS"/><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="ports"/><category scheme="http://www.blogger.com/atom/ns#" term="switch"/><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="vSphere API"/><title type='text'>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 &quot;freePorts&quot; 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=&quot;http://www.vcoteam.info/learn-vco/creating-workflow-loops.html&quot; target=&quot;_blank&quot;&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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-SzlJSqnl9-PTy4m28OtmUhSLoRIABze-5QXOUFMvNUmgKOOg7s3Jn2F040IIbUqC2DyYhCfD9hbkaFclN0DB_ui0q5zG-IMR_jet9z1deZhpJQaj3bECJnyanMD2oYvFpcuKY9gTcRd6/s1600/Screen+shot+2011-11-18+at+9.26.42+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;289&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-SzlJSqnl9-PTy4m28OtmUhSLoRIABze-5QXOUFMvNUmgKOOg7s3Jn2F040IIbUqC2DyYhCfD9hbkaFclN0DB_ui0q5zG-IMR_jet9z1deZhpJQaj3bECJnyanMD2oYvFpcuKY9gTcRd6/s320/Screen+shot+2011-11-18+at+9.26.42+AM.png&quot; width=&quot;320&quot; /&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 &quot;getAllPortGroups&quot; 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=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;if(DVS.portgroup[i].config.name.match(&quot;Uplink&quot;)){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;System.log(&quot;Port-group is uplink port-group.&quot;);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;else{&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;DVSgroups.push(DVS.portgroup[i]);&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&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 &quot;LoopSetup&quot; 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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-QvvxopRPz_5MQWVxtDY8AkK54Is_NnVW_TSo2uVSkv52fYMiHw6wssOtqnIqpQR-2ReJ9hmsKyftf5Ba0o6aaZno441YdFOERpsJz2JYjnHGDQ7CEasA3IYqrmlyYmL9mecHmRbLW0Iy/s1600/Screen+shot+2011-11-18+at+11.57.43+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;233&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-QvvxopRPz_5MQWVxtDY8AkK54Is_NnVW_TSo2uVSkv52fYMiHw6wssOtqnIqpQR-2ReJ9hmsKyftf5Ba0o6aaZno441YdFOERpsJz2JYjnHGDQ7CEasA3IYqrmlyYmL9mecHmRbLW0Iy/s400/Screen+shot+2011-11-18+at+11.57.43+AM.png&quot; width=&quot;400&quot; /&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 :)</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'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4479559294098558595/posts/default/1620048923729723525'/><link rel='alternate' type='text/html' href='http://mighty-virtualization.blogspot.com/2011/11/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='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHPh1gJoWQj_kh7CPxnY2UM0RT1WhKl2dBsQ7kG_gCyPgS4ufZTZcQBcveSESC0lt-pmWRfTO3ABLFc227MCyJ3kIDb2bumGiBvnfva979O9C6S2Bj4ptAABD3T4bZQ/s220/DSC00134_smaller.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-SzlJSqnl9-PTy4m28OtmUhSLoRIABze-5QXOUFMvNUmgKOOg7s3Jn2F040IIbUqC2DyYhCfD9hbkaFclN0DB_ui0q5zG-IMR_jet9z1deZhpJQaj3bECJnyanMD2oYvFpcuKY9gTcRd6/s72-c/Screen+shot+2011-11-18+at+9.26.42+AM.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>