<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vcoportal - Orchestrate. Your Cloud.</title>
	<atom:link href="http://www.vcoportal.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vcoportal.de</link>
	<description></description>
	<lastBuildDate>Fri, 18 May 2012 11:08:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>There&#8217;s a new guitar in town!</title>
		<link>http://www.vcoportal.de/2012/05/theres-a-new-guitar-in-town/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=theres-a-new-guitar-in-town</link>
		<comments>http://www.vcoportal.de/2012/05/theres-a-new-guitar-in-town/#comments</comments>
		<pubDate>Wed, 16 May 2012 11:14:13 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=1141</guid>
		<description><![CDATA[An Orchestra typically needs more than one musician. And for a blog about vCenter Orchestrator it&#8217;s also a good idea to have more than one authors! ***DRUMROLL***  Let me introduce...]]></description>
			<content:encoded><![CDATA[<p id="top" />An Orchestra typically needs more than one musician. And for a blog about vCenter Orchestrator it&#8217;s also a good idea to have more than one authors!</p>
<p>***DRUMROLL***  Let me introduce &#8230;&#8230;***DRUMROLL***&#8230; <strong>Christian Strijbos </strong>as co-author for vcoportal!</p>
<p>Christian works as Senior IT-Architect for a VMware Consulting Partner in Germany, helping customers of all sizes and all industries to design, implement, automate and <em><strong>orchestrate</strong></em> (obviously  <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> ) their VMware environments. He holds VCDX3 and VCDX4 certifications (magic number: 64).</p>
<p>Current work in progress: Wavemaker and Orchestrator and (better(?): <em>versus  <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' />  </em>)  LDAP, much more in the pipeline&#8230; So, stay tuned for great articles coming soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/05/theres-a-new-guitar-in-town/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using Onyx to speed-up Workflow development</title>
		<link>http://www.vcoportal.de/2012/05/using-onyx-for-fast-workflow-development/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-onyx-for-fast-workflow-development</link>
		<comments>http://www.vcoportal.de/2012/05/using-onyx-for-fast-workflow-development/#comments</comments>
		<pubDate>Thu, 10 May 2012 13:03:58 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[Get Started!]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=1122</guid>
		<description><![CDATA[In the VMTN Community Forums for Orchestrator recently one question came up: &#8220;&#8230;how to use orchestrator to change the Video Card Setting of a VM to &#8220;Auto-detect settings&#8221; the next...]]></description>
			<content:encoded><![CDATA[<p id="top" />In the <a title="http://communities.vmware.com/community/vmtn/server/vcenter/orchestrator" href="http://communities.vmware.com/community/vmtn/server/vcenter/orchestrator" target="_blank">VMTN Community Forums for Orchestrator</a> recently one question came up:</p>
<p>&#8220;&#8230;how to use orchestrator to change the Video Card Setting of a VM to &#8220;Auto-detect settings&#8221; the next time the VM reboots?&#8221; (read the full thread here: <a href="http://communities.vmware.com/message/2040860#2040860">http://communities.vmware.com/message/2040860#2040860</a>)</p>
<p>That is a typical task for a workflow developer: Automate something you can easily click in vSphere Client, but it maybe hard to figure out, how to automate it.</p>
<h3><a title="http://labs.vmware.com/flings/onyx" href="http://labs.vmware.com/flings/onyx" target="_blank">ONYX</a> to the rescue!</h3>
<p>See this video how to get to the solution in <em>less than 15 minutes</em>  <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> &#8230; (You can download the resulting workflow below, but that shouldn&#8217;t be necessary anymore <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' />  !)</p>
<p><iframe src="http://player.vimeo.com/video/41911520" frameborder="0" width="500" height="375"></iframe></p>
<p>It&#8217;s a quick shot screencast, so no audio&#8230;.</p>
<p>If you like the style, <strong>drop me a comment</strong>, and I will create more videos (with explanations  <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> ) in future!</p>
<div class="wpfilebase-attachment">
 <div class="wpfilebase-fileicon"><a href="http://www.vcoportal.de/download/workflow/Change-VM-settings-to-auto-detect-video-memory.workflow" title="Download Change VM Video Settings Workflow"><img align="middle" src="http://www.vcoportal.de/wp-includes/images/crystal/default.png" alt="Change VM Video Settings Workflow" /></a></div>
 <div class="wpfilebase-rightcol">
  <div class="wpfilebase-filetitle">
   <a href="http://www.vcoportal.de/download/workflow/Change-VM-settings-to-auto-detect-video-memory.workflow" title="Download Change VM Video Settings Workflow">Change VM Video Settings Workflow</a><br />
   Change-VM-settings-to-auto-detect-video-memory.workflow<br />
   
   
  </div>
  <div class="wpfilebase-filedetails" id="wpfilebase-filedetails1" style="display: none;">
  <p>This workflow changes the video settings of a VM. It was created using Onyx</p>
  <table border="0">
   
   <tr><th>Author:</th><td>Joerg Lew</td></tr>
   
   
   <tr><th>Category:</th><td>Workflows, Actions and Packages</td></tr>
   
   <tr><th>Date:</th><td>May 10, 2012</td></tr>
   
  </table>
  </div>
 </div>
 <div class="wpfilebase-fileinfo">
  2.1 KiB<br />

  <a href="#" onclick="return wpfilebase_filedetails(1);">Details...</a>
 </div>
 <div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/05/using-onyx-for-fast-workflow-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safe your job, create unmaintainable workflows!</title>
		<link>http://www.vcoportal.de/2012/04/safe-your-job-create-unmaintainable-workflows/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=safe-your-job-create-unmaintainable-workflows</link>
		<comments>http://www.vcoportal.de/2012/04/safe-your-job-create-unmaintainable-workflows/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 01:00:04 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Best-Practices]]></category>
		<category><![CDATA[Get Started!]]></category>
		<category><![CDATA[Workflow Design]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=1086</guid>
		<description><![CDATA[The need for unmaintainable workflows As an external consultant as well as permanent employee it&#8217;s always a good idea to make yourself indispensable for your customer/company. This ensures ongoing engagement/a...]]></description>
			<content:encoded><![CDATA[<p id="top" />
<h3 lang="de">The need for unmaintainable workflows</h3>
<p lang="de">As an external consultant as well as permanent employee it&#8217;s always a good idea to make yourself indispensable for your customer/company. This ensures ongoing engagement/a safe job.</p>
<p lang="de">In IT in general you can achieve this by devloping unique solutions nobody else except yourself can understand (and maintain). I&#8217;m sure: You all can instantly give at least one example for an IT-component where youself/your teammates/everybody else follow the policy: &#8220;<em><strong>Never touch a running system</strong></em>&#8220;.</p>
<p lang="de"> &lt;buzzword-for-the-robots&gt;The modern term for this is <em>NoOps</em>.&lt;/buzzword-for-the-robots&gt;</p>
<p lang="de"> As a workflow developer you also can follow some simple rules to make sure: <em><strong>You, and only you, will be able to maintain, re-use or even exand your workflows</strong></em>!</p>
<p lang="de">Here we go&#8230;:</p>
<h3 lang="de">Documentation, Labeling, Description Fields</h3>
<p lang="de">Avoid Documentation, and <em><strong>use the default labels for workflow elements</strong></em>. So one has really click into each element, read the code, see the bindings to figure out what happens here.</p>
<p lang="de"><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/20120401-defaultlabel.png"><img class="aligncenter size-medium wp-image-1087" title="Use default labels" src="http://www.vcoportal.de/wp-content/uploads/2012/03/20120401-defaultlabel-300x223.png" alt="" width="300" height="223" /></a><br />
When naming workflows and actions, and their parameters and attributes:<em><strong> Don&#8217;t be too obvious!</strong></em> A simple &#8220;name&#8221; or &#8220;vm&#8221; or &#8220;theArray&#8221; is enough.</p>
<p lang="de"><em><strong>Be aware of the Description fields!</strong></em> They are shown in so  many different places (when you re-use the elements, mouse-over in the schema, for documentation, &#8230;), that your really want to avoid this disclosure of &#8220;what this element is for&#8221;.</p>
<p lang="de"><a href="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-description.png"><img class="aligncenter size-medium wp-image-1102" title="My first workflow... and a job for lifetime!" src="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-description-300x177.png" alt="" width="300" height="177" /></a></p>
<h3 lang="de">Logging</h3>
<p lang="de">For the usage of System.log(), System.debug() and co. you have the choice:</p>
<ul>
<li><em><strong>Don&#8217;t log at all!</strong></em> Your NoOps-Team will thank you for that.</li>
<li><em><strong>Log everything!</strong></em> It&#8217;s always a good challenge for the NoOps-Team to find the really important messages in hundrets of lines with traced-out variables (Eastern is coming!)&#8230;</li>
<li><em><strong>Just log values!</strong></em> The <em>value</em> of a variable is what&#8217;s interesting. Nobody wants to know <em>what</em> variable it is&#8230; System.log(myVariable) does the trick.</li>
<li><em><strong>Pro-Tip:</strong></em> You can even improve confusion by<em><strong> logging WRONG things</strong></em>, e.g. when you copy&amp;paste scripts to re-use it in another context.</li>
</ul>
<h3 lang="de">Workflow Design</h3>
<p>Especially important for Library-Workflows which are intended to be called by other Workflows:<br />
<em><strong>Hardcoding values</strong></em> in the script, not exposing important parameters as INPUT-parameters and  <strong>creative usage</strong> of  the data types <em>ANY</em> and <em>Properties</em> (of course <em><strong>whithout proper documentation</strong></em>) will ensure that it&#8217;s you, and only you, who can re-use the workflow.</p>
<h3><a href="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-cluster.png"><img class="aligncenter size-medium wp-image-1089" title="find all bad things here!" src="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-cluster-300x164.png" alt="" width="300" height="164" /></a></h3>
<p>In General:<br />
<em><strong>Use the default names</strong></em> &#8220;<em>actionResult</em>&#8221; and &#8220;<em>errorCode</em>&#8221; when binding Action elements and Exception paths&#8230;</p>
<p><em><strong>Forget about the &#8220;Add note&#8230;&#8221;-Feature!</strong></em> Structuring workflow part with coloured background just creates a better visual structure for the workflow.</p>
<h3>Workflow Organization</h3>
<p><em><strong>Duplicate Workflows for small adjustments!</strong></em> This helps to keep your work big if something has to change in there for the next version.</p>
<p>Don&#8217;t use too many Workflow Folders, or clear labes for them! Leave it to the user to figure out which workflows are intended to be called manually, and which ones are just the &#8220;drivers&#8221; for them.</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-clone-folder.png"><img class="aligncenter size-medium wp-image-1091" title="The Kama Sutra of Clone a Virtual Machine" src="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-clone-folder-300x280.png" alt="" width="300" height="280" /></a></p>
<p><em><strong>Create hidden dependencies!</strong></em> Calling Actions or nested Workflows not via the corresponding Elements, but within scriptable tasks creates nice surprises if one is changing the called.</p>
<h3 lang="de">Optimize your JavaScript coding style</h3>
<p>You can find a long list of tips for that here: <a title="http://thc.org/root/phun/unmaintain.html" href="http://thc.org/root/phun/unmaintain.html" target="_blank">http://thc.org/root/phun/unmaintain.html</a></p>
<h3>Forget vCO, just do scripting!</h3>
<p>Who needs the visual, self-explaning graphical flowcharts of vCenter Orchestrator when you can to something like this??:</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-powerCLI.png"><img class="aligncenter size-medium wp-image-1093" title="Unr3ad4bl3 P0werC7I Ru7eZ!" src="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-powerCLI-300x196.png" alt="" width="300" height="196" /></a></p>
<p>P<em><strong>ro-Tip: Use the <a title="http://blogs.vmware.com/orchestrator/2011/12/vco-powershell-plug-in.html" href="http://blogs.vmware.com/orchestrator/2011/12/vco-powershell-plug-in.html" target="_blank">PowerShell-Plugin </a>or the <a title="vcoportal’s PowerSSHell-Plugin: Run Your Powershell-Scripts from Orchestrator-Workflows" href="http://www.vcoportal.de/powersshell-plugin/" target="_blank">PowerSSHell-Plugin</a> to combine the best of both worlds.</strong></em> This will garantuee your job forever!</p>
<h2 style="text-align: center;"> <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' />  HAPPY APRIL FOOLS&#8217; DAY!!! <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </h2>
<p style="text-align: left;"><em>Special Greetings to my mates in Sofia <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> :</em> Please do not take that criticism of some parts of the vCenter-Plugin-Library personal! I know it&#8217;s an hard challenge to maintain this inherited aged content <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' />  . You do a great job, especially with all the new &#8220;written-from-scratch&#8221; Plugins! Keep them coming!!! <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p style="text-align: left;"><a href="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-newlibraryn.png"><img class="aligncenter size-medium wp-image-1096" title="A perfect structured, easy to use Library!" src="http://www.vcoportal.de/wp-content/uploads/2012/04/20120401-newlibraryn-300x244.png" alt="" width="300" height="244" /></a></p>
<h3 style="text-align: left;">Got more?</h3>
<p>Comment on the post and share your finest ideas  how to create poor workflows! <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_twisted.gif' alt=':twisted:' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/04/safe-your-job-create-unmaintainable-workflows/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Updating the vCenter Orchestrator Appliance to 4.2.1</title>
		<link>http://www.vcoportal.de/2012/03/updating-the-vcenter-orchestrator-appliance-to-4-2-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=updating-the-vcenter-orchestrator-appliance-to-4-2-1</link>
		<comments>http://www.vcoportal.de/2012/03/updating-the-vcenter-orchestrator-appliance-to-4-2-1/#comments</comments>
		<pubDate>Sat, 31 Mar 2012 10:26:43 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Install-Configure-Upgrade]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=1073</guid>
		<description><![CDATA[Note to myself: RTFM!!! RTFM!!! RTFM!!!! What happend? I tried to update my vCO Appliance to the current Version 4.2.1 using the built-in update-feature (that&#8217;s what we have an appliance...]]></description>
			<content:encoded><![CDATA[<p id="top" />Note to myself: <strong>RTFM!!! RTFM!!! RTFM!!!!</strong></p>
<p>What happend?<br />
I tried to update my <a title="http://blogs.vmware.com/orchestrator/2011/10/the-vmware-vcenter-orchestrator-appliance-is-now-available.html" href="http://blogs.vmware.com/orchestrator/2011/10/the-vmware-vcenter-orchestrator-appliance-is-now-available.html" target="_blank">vCO Appliance</a> to the<a title="http://www.vcoteam.info/newsflash/vmware-released-vcenter-orchestrator-421.html" href="http://www.vcoteam.info/newsflash/vmware-released-vcenter-orchestrator-421.html" target="_blank"> current Version 4.2.1 </a>using the built-in update-feature (that&#8217;s what we have an appliance for). It stucked with the screen &#8220;Installing vCO Appliance &#8211; 4.2.1.0 Build 612841, please wait&#8230;&#8221;, and the vCO service was not running anymore. Even a reboot of the appliance didn&#8217;t bring the service up again.</p>
<p>To save you this troubleshooting time:<br />
This behaviour is not really expected, but documented in the <em><strong>Known Issues</strong></em>-Section of the <a title="http://www.vmware.com/support/orchestrator/doc/vcenter-orchestrator-421-release-notes.html" href="http://www.vmware.com/support/orchestrator/doc/vcenter-orchestrator-421-release-notes.html" target="_blank">vCenter Orchestrator 4.2.1 Release Notes</a>&#8230;</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331-vcoRTFM.png"><img class="aligncenter size-medium wp-image-1074" title="R T F M ! ! !" src="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331-vcoRTFM-300x219.png" alt="" width="300" height="219" /></a></p>
<p>Therefore, the complete process to</p>
<h3>Update the vCO Appliance to version 4.2.1</h3>
<p>1. Login to the <em>Appliance Configuration</em> page<br />
<a href="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapphomepage.png"><img class="aligncenter size-medium wp-image-1083" title="20120331_vcoapphomepage" src="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapphomepage-300x184.png" alt="" width="300" height="184" /></a></p>
<p>2. Start the Update in the &#8220;<strong>Update</strong>&#8220;-Tab<br />
<a href="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-updatepage.png"><img class="aligncenter size-medium wp-image-1082" title="vCO Appliance Update Page" src="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-updatepage-300x132.png" alt="" width="300" height="132" /></a></p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-updating.png"><img class="aligncenter size-medium wp-image-1081" title="updating..." src="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-updating-300x146.png" alt="" width="300" height="146" /></a></p>
<p>3. Leave the Update-Tab open, and oen a new browser tab with the <em>Orchestrator Configuration</em>, goto <strong>Database</strong>, confirm that there is a problem <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  <em>(&#8220;Mismatching database version&#8221;)<br />
<a href="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-validation-results.png"><img class="aligncenter size-medium wp-image-1078" title="vCO validation error &quot;Mismatch database version&quot;" src="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-validation-results-300x57.png" alt="" width="300" height="57" /></a></em></p>
<p>&nbsp;</p>
<p>4. On the top of the<strong> Database</strong>-Section, click to &#8220;<em>Update</em>&#8221;<br />
<em><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-update.png"><img class="aligncenter size-medium wp-image-1079" title="vCO Appliance Database Update" src="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-update-300x94.png" alt="" width="300" height="94" /></a></em></p>
<p>5. Start the vCO Service in <strong>Startup Options<br />
<a href="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-start-service.png"><img class="aligncenter size-medium wp-image-1076" title="Start vCO Service after database update" src="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-start-service-300x92.png" alt="" width="300" height="92" /></a></strong></p>
<p>6. Confirm in<em> Appliance Configuration</em> / <strong>Update</strong>-Tab the new vCO version<strong><br />
<a href="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-upgardede.png"><img class="aligncenter size-medium wp-image-1075" title="vCO Update successful!" src="http://www.vcoportal.de/wp-content/uploads/2012/03/20120331_vcoapp-upgardede-300x118.png" alt="" width="300" height="118" /></a><br />
</strong></p>
<h3><strong>7. Orchestrate again!</strong></h3>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/03/updating-the-vcenter-orchestrator-appliance-to-4-2-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cool JavaScript code in 140byt.es</title>
		<link>http://www.vcoportal.de/2012/03/140bytes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=140bytes</link>
		<comments>http://www.vcoportal.de/2012/03/140bytes/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 16:14:33 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Get Started!]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=1062</guid>
		<description><![CDATA[This weekend I stumbled over a cool repository to see what&#8217;s possible in JavaScript even in very short code snippets: http://140byt.es There you find functions and other small examples of...]]></description>
			<content:encoded><![CDATA[<p id="top" />This weekend I stumbled over a cool repository to see what&#8217;s possible in JavaScript even in very short code snippets:</p>
<p style="text-align: center;"><span style="font-size: large;"><a title="http://140byt.es" href="http://140byt.es" target="_blank">http://140byt.es</a></span></p>
<p style="text-align: left;">There you find functions and other small examples of JavaScript code in Tweet-length. Mostly very elegant solutions, sometimes hard to understand directly, but always with a longer, annotated version.</p>
<p style="text-align: left;"><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120318_140bytes.png"><img class="aligncenter size-medium wp-image-1063" title="JavaScript in 140byt.es" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120318_140bytes-300x261.png" alt="" width="300" height="261" /></a></p>
<p style="text-align: left;">Most functions can be used as-is in vCO Scriptable elements, like this one to figure out the ordinal suffix of a number (the &#8220;<em>st</em>&#8221; of <em>1st</em>, &#8220;<em>nd</em>&#8221; of <em>2nd</em> and so on):</p>
<pre class="brush: jscript; title: ; notranslate">

function b(a){return[&quot;th&quot;,&quot;st&quot;,&quot;nd&quot;,&quot;rd&quot;][(a=~~(a10&amp;&amp;a3?0:a]}
</pre>
<p style="text-align: left;">In a vCO Scriptable Element (or an Action) the annotated long version would look like this (<em>theNumber</em> is an IN-Parameter of type <strong>Number</strong>):</p>
<pre class="brush: jscript; title: ; notranslate">

var ret = ordinal(theNumber);
System.log(theNumber + ret);

function ordinal(
a                         // number
){
return[
&quot;th&quot;,&quot;st&quot;,&quot;nd&quot;,&quot;rd&quot;     // array of ordinal suffixes
][
(a=~~                   // floor the value for usable index (integer)
(a10&amp;&amp;a3                      // all digits above 3 return &quot;th&quot;
?0                      // return &quot;th&quot; for above cases
:a                      // return &quot;th&quot;, &quot;st&quot;, &quot;rd&quot; for others
]
}
</pre>
<p style="text-align: left;"><em><strong>Just be aware</strong></em> that some of the snippets use the <em>prototype</em>-Feature of JavaScript (to extend basic objects with new methods). This is not available in vCO and you will get an error like</p>
<p style="text-align: center;">&#8220;<em>Cannot add a property to a sealed object: &#8230;.</em>&#8220;</p>
<p style="text-align: left;">But there are enough other functions for lots of nice use-cases in vCO. Enjoy! <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/03/140bytes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change the password for vcoadmin on vCO Appliance</title>
		<link>http://www.vcoportal.de/2012/03/change-the-password-for-vcoadmin-on-vco-appliance/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=change-the-password-for-vcoadmin-on-vco-appliance</link>
		<comments>http://www.vcoportal.de/2012/03/change-the-password-for-vcoadmin-on-vco-appliance/#comments</comments>
		<pubDate>Sat, 10 Mar 2012 18:40:25 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Get Started!]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=1049</guid>
		<description><![CDATA[UPDATE 14. Mar. 2012: Christophe from @vcoteam posted a great article about how to &#8220;Pimp Your vCenter Orchestrator Appliance&#8221;, including a ready-to-run workflow package for all that stuff below (and...]]></description>
			<content:encoded><![CDATA[<p id="top" /><span style="text-decoration: underline;"><strong>UPDATE 14. Mar. 2012:</strong></span> Christophe from <a title="https://twitter.com/#!/vcoteam" href="https://twitter.com/#!/vcoteam" target="_blank">@vcoteam </a>posted a great article about how to &#8220;Pimp Your vCenter Orchestrator Appliance&#8221;, including a <strong><em>ready-to-run workflow package</em></strong> for all that stuff below (and much more useful info!). No need to get your keyboard dirty with the console <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /><br />
<a title="http://www.vcoteam.info/learn-vco/pimp-my-vcenter-orchestrator-virtual-appliance.html" href="http://www.vcoteam.info/learn-vco/pimp-my-vcenter-orchestrator-virtual-appliance.html" target="_blank">http://www.vcoteam.info/learn-vco/pimp-my-vcenter-orchestrator-virtual-appliance.html</a></p>
<p><span style="text-decoration: underline;"><strong>Original Post:</strong></span></p>
<p>You all know <a title="http://blogs.vmware.com/orchestrator/2011/10/the-vmware-vcenter-orchestrator-appliance-is-now-available.html" href="http://blogs.vmware.com/orchestrator/2011/10/the-vmware-vcenter-orchestrator-appliance-is-now-available.html" target="_blank">VMware vCenter Orchestrator Appliance </a>as the quickest way to get started with vCO.</p>
<p>You all have learned (maybe the hard way) that the vCO Appliance uses 4 (in words: FOUR) different credentials&#8230;</p>
<h3>The vCO Appliance user credentials</h3>
<ul>
<li>One for the <strong>root</strong>-user Appliance it self: This is used if you select the &#8220;Login&#8221;-Button on the console of the appliance (or via SSH, if you enabled SSH login for root (google for &#8220;ssh PermitRootLogin&#8221;)) and for the webbased  &#8220;Appliance Configuration&#8221; (on port <em>5480</em>) . Change it with the <strong>passwd</strong> command on the console.</li>
<li>One for the &#8220;Orchestrator Configuration&#8221; webpage (port <em>8283</em>). It can be changed using the &#8220;Change Password&#8221;-Tab in the General-section of the configurator (username is always <strong>vmware</strong>):<br />
<a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120310_vcoconfigpass.png"><img class="aligncenter size-medium wp-image-1051" title="Change password for vCO Configuration" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120310_vcoconfigpass-300x103.png" alt="" width="300" height="103" /><br />
</a></li>
<li>And finally, the (ldap-based) users to login with the vCO Smart Client or the weboperator (port <em>8281</em>). Default: <strong>vcoadmin</strong> with password <em>vcoadmin</em> and <strong>vcouser</strong> with password <em>vcouser</em>. This article shows how to change their credentials&#8230;</li>
</ul>
<p>Typically the default webpage asks you for new passwords for the appliance&#8217;s <strong>root</strong>-user and the <strong>vmware</strong>-user of the configuration when you click  on the links for the first time.</p>
<h3>Change the default passwords for vcoadmin and vcouser:</h3>
<p>For the vcoadmin &amp; vcouser it&#8217;s not that easy: Because they are users defined in the local OpenLDAP-installation of the appliance, you have to use some ldap tools for this&#8230;</p>
<p>1. Login to the appliance on the console (or via SSH if PermitRootLogin is enabled)</p>
<p style="text-align: left;">2. Type following command:</p>
<p style="text-align: center;"><strong>ldappasswd -D &#8220;cn=vcoadmin,ou=vco,dc=appliance&#8221; -W -S</strong></p>
<p>3. Type in the NEW Password for the <strong>vcoadmin</strong>-user (twice), and the OLD one once (when being asked for<em> LDAP password</em>)</p>
<p>(optionally: repeat the steps for cn=vcouser,ou=vco,dc=appliance&#8221;)</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120310_vcopasswd.png"><img class="aligncenter size-medium wp-image-1050" title="Change default password of vcoadmin" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120310_vcopasswd-300x126.png" alt="" width="300" height="126" /></a></p>
<p>4. Because you changed the password of the vcoadmin, you have to reconfigure all settings which are using this password:<br />
The password to browse the ldap-directory (in <strong>LDAP</strong>)</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120310_vcoconfigldap.png"><img class="aligncenter size-medium wp-image-1052" title="re-configure LDAP password after changing it!" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120310_vcoconfigldap-300x205.png" alt="" width="300" height="205" /></a></p>
<p>The password for user vcoadmin which is used to install Plugins in <strong>PLUGINS</strong>)<br />
<a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120310_vcoconfigplugins.png"><img class="aligncenter size-medium wp-image-1053" title="re-configure credentials for Plugin installation" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120310_vcoconfigplugins-300x229.png" alt="" width="300" height="229" /></a></p>
<p>5. <strong>RESTART</strong> THE vCO SERVICE<strong>! </strong><br />
(It took me for a complete cup of coffee to troubleshoot that I forgot that step)</p>
<p>6. <em>Voila</em>: Test the new passwords in LDAP / &#8220;Test Login&#8221;-Tab and just by logging in with the vCO Client.</p>
<h3>References</h3>
<ul>
<li><strong>ldappassword</strong> man-page:<br />
<a title="http://www.centos.org/docs/5/html/CDS/cli/8.0/Configuration_Command_File_Reference-Command_Line_Utilities-ldappasswd.html" href="http://www.centos.org/docs/5/html/CDS/cli/8.0/Configuration_Command_File_Reference-Command_Line_Utilities-ldappasswd.html" target="_blank">http://www.centos.org/docs/5/html/CDS/cli/8.0/Configuration_Command_File_Reference-Command_Line_Utilities-ldappasswd.html</a></li>
<li>Discussion in the Forums:<br />
<a title="http://communities.vmware.com/thread/335136" href="http://communities.vmware.com/thread/335136" target="_blank">http://communities.vmware.com/thread/335136</a></li>
<li><em>@vCO Developer Team</em>: Feel free to add this description to the next version of the<br />
<a title="http://pubs.vmware.com/vsphere-50/topic/com.vmware.ICbase/PDF/using-vcenter-orchestrator-42-appliance-guide.pdf" href="http://pubs.vmware.com/vsphere-50/topic/com.vmware.ICbase/PDF/using-vcenter-orchestrator-42-appliance-guide.pdf" target="_blank">vCO Appliance User Guide</a> <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/03/change-the-password-for-vcoadmin-on-vco-appliance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Philosopher&#8217;s Stone of vCO: Workflow Reflection</title>
		<link>http://www.vcoportal.de/2012/03/workflow-reflection/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=workflow-reflection</link>
		<comments>http://www.vcoportal.de/2012/03/workflow-reflection/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 21:49:36 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Best-Practices]]></category>
		<category><![CDATA[Examples]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=1027</guid>
		<description><![CDATA[Don&#8217;t fear anything, it&#8217;s not necessary to live in a barrel to understand this topic! You just have to go a bit beyond the obvious&#8230; &#8220;In computer science, reflection is...]]></description>
			<content:encoded><![CDATA[<p id="top" />Don&#8217;t fear anything, it&#8217;s not necessary to <a title="http://philosophers.endless-greece.com/diogenes.php" href="http://philosophers.endless-greece.com/diogenes.php" target="_blank">live in a barrel</a> to understand this topic! You just have to go a bit beyond the obvious&#8230;</p>
<p><img class="aligncenter size-medium wp-image-1029" title="...." src="http://www.vcoportal.de/wp-content/uploads/2012/03/HiRes-300x300.jpg" alt="" width="300" height="300" /></p>
<p>&#8220;<em>In <span style="color: #000000;"><span style="color: #000000;">computer science</span>, reflection is the process by which a <span style="color: #000000;">compute</span><span style="color: #000000;">r</span><span style="color: #000000;"> program</span> can observe (do <span style="color: #000000;">type introspection</span>) and modify its own structure and behavior at <span style="color: #000000;">runtime</span>.</span></em>&#8221; <a title="http://en.wikipedia.org/wiki/Reflection_%28computer_programming%29" href="http://en.wikipedia.org/wiki/Reflection_%28computer_programming%29" target="_blank">says Wikipedia.</a></p>
<p>The Orchestrator also provides a kind of reflection for workflows: Using the keyword &#8220;<strong>workflow</strong>&#8221; in a JavaScript Element a workflow can access its current runtime state. This article explains the basic understanding about Workflows and WorkflowToken, script examples and common use-cases for that.</p>
<h3>The Basics</h3>
<p>An important conecpt of vCO is to create a so called <em>Workflow Token</em> for every single time a workflow gets executed. Only so it&#8217;s possible to keep track of multiple in-parallel runs of the same workflow, what&#8217;s absolutely possible. (Currently supported in vCO 4.2: 150 concurrent running workflows).</p>
<p>In the vCO Smart Client you can see all the workflow token (=past executions) in the Workflow library, as leafs under the workflow itself:</p>
<p><img class="aligncenter size-full wp-image-1036" title="Workflow vs. WorkflowToken in vCO" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120308_workflowvsToken.png" alt="" width="501" height="108" /></p>
<p>If you are familiar with object-oriented programming, consider the Workflow as a class (description), the WorkflowToken is an actual instance of this class.</p>
<p>When you select a workflow token in the tree, you can see its details in the main window, most important:</p>
<ul>
<li>the state (e.g. running, failed, completed, waiting)</li>
<li>the current vlaues of the workflow attributes</li>
<li>the log output (done via System.log() or System.debug())</li>
<li>(if there is one:) the error message at the bottom of the <em>Variables</em>-Tab</li>
</ul>
<p style="text-align: center;"><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120308_workflowtokendetails.png"><img class="aligncenter  wp-image-1035" title="Details of a Workflow run" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120308_workflowtokendetails-1024x289.png" alt="" width="492" height="138" /></a></p>
<p style="text-align: left;"><em>&lt;</em><em>Additional Technical Background&gt;:</em> All information about the state of a workflow token is stored in vCO&#8217;s database (the state, the attributes, the current element,&#8230;). So it&#8217;s possible for vCO to continue the workflow even after a crash of the server (Checkpointing).<br />
For a quick &amp; (really!) dirty ( <em><strong>&amp;</strong></em> <em><strong>completly unsupported</strong></em>!) monitoring you could do SQL-cram against the vCO database like that:</p>
<pre class="brush: sql; title: ; notranslate">
ALTER trigger [dbo].[monitor] on [dbo].[VMO_WorkflowToken]
AFTER UPDATE
AS
SET NOCOUNT ON
IF EXISTS ( SELECT * FROM Inserted I WHERE I.globalState = 'failed')
BEGIN
/* ***DEMO ONLY:** */ Insert into dbo.fails VALUES ('adsf'); # send a mail, wake somebody up...
END
</pre>
<p style="text-align: left;">&lt;/<em></em><em>Additional Technical Background</em>&gt;</p>
<h3 style="text-align: left;">How to&#8230;</h3>
<p style="text-align: left;">Back to topic: You can also access the runtime information about the current workflow execution &#8220;from inside&#8221;, by using the keyword &#8220;<strong>workflow</strong>&#8221; (small-caps, remember: JavaScript is case-sensitive!) in a scriptable element.<br />
This keyword returns an object of type <em>WorkflowToken</em>.  This object now represents the current instance of the workflow. This object provides some attributes, see the script below for examples&#8230;</p>
<p style="text-align: left;">Important: If you want to access the <em>Workflow</em>-object (the (class/description/definition), you have to use the <strong>rootWorkflow</strong>-Attribute of the <em>WorkflowToken</em> (eg. &#8220;var theWorkflow = <strong>workflow</strong>.rootWorkflow&#8221;; theWorkflow will be of type <em>Workflow). (Yeah, that&#8217;s what I meant with &#8220;beyond the obvious&#8221;)</em></p>
<p style="text-align: left;">The following script examples shows all that stuff: First we get some information about the current instance (you got it, the <em>WorkflowToken</em>). Starting in line 10 we access the <em>Workflow</em>, the last part from line 23 uses the <em>WorkflowToken</em> again.</p>
<pre class="brush: jscript; title: ; notranslate">
//get the current workflow token /&quot;instance&quot;
 var token = workflow;
 System.debug(token);

//get some details about the current workflow token/execution/instance
 System.debug(&quot;startDate: &quot; + token.startDate);
 System.debug(&quot;businessState: &quot; + token.businessState);

//get the Workflow-&quot;Class&quot; of the current token
 var rootWorkflow = workflow.rootWorkflow;
 System.debug(rootWorkflow);

// get &quot;declaraction&quot;: Array of Input Parameters of the workflow in general
 var inParams = rootWorkflow.inParameters;
 System.debug(&quot;inParams: &quot; + inParams);
 //loop through array and print out details for each parameter
 for (var i in inParams) {
 loopParam = inParams[i];
 //print out in type:::name:::description
 System.debug(loopParam.type + &quot;:::&quot;+ loopParam.name + &quot;:::&quot; + loopParam.description);
 }

// get the current token's inParameters (they include the values, and are returned as Properties
 //(key : values tuples)
 var curInParams = token.getInputParameters();
 System.debug(&quot;curInParams: &quot; + curInParams);
 //crawl through the Properties
 var keys = curInParams.keys;
 for (var i in keys) {
 var curKey = keys[i];
 //print out properties in format key :::: value
 var curValue = curInParams.get(curKey)
 System.debug(curKey + &quot; :::: &quot; + curValue );
 }
</pre>
<p>All that happens just in the script, there are no workflow attributes bound to this scriptable element. The Workflow you can download below has one INPUT Parameter, just to see something in the logs <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . It&#8217;s not used anywhere.</p>
<p>The script produces output like this:</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120308_workflowReflection.png"><img class="aligncenter  wp-image-1034" title="vCO Workflow Reflection output" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120308_workflowReflection.png" alt="" width="498" height="305" /></a></p>
<h3>Use-Cases</h3>
<p>Now, what to use all that stuff for?</p>
<ul>
<li>Obviously, if you need some of the information, like the <em>startDate</em>, later in the workflow</li>
<li>If your workflow has an User Interaction element, you can send an URL to answer it via email (there is a complete example in Library / Mail)</li>
<li>It&#8217;s possible to change the User context the workflow runs, using the <em>changeCredential</em>()-Method</li>
<li>If you are working with the Business State field of workflow elements, you eventually want to read this in script.</li>
</ul>
<p>Not really related to the &#8220;Reflection&#8221;, but useful anyway:<br />
The same objects are used when you access past workflow tokens not of the current workflow, but of other workflows. This can be used for instance to create Healthcheck Workflows which monitor the vCO Server for failed or canceled workflow runs (a much cleaner &amp; more reliable ( &amp; supported) way to replace the SQL-cram mentioned above!).<em><strong><br />
Insider Tip</strong></em>: See the Actions provided by the module &#8220;<em>com.vmware.web.webview</em>&#8221; for a lot of useful scripts! They have many more use-cases than only within webviews&#8230;</p>
<p>Now, finally:</p>
<h3>Download the example!</h3>
<p>It should just run out of the box&#8230;</p>
<div class="wpfilebase-attachment">
 <div class="wpfilebase-fileicon"><a href="http://www.vcoportal.de/download/workflow/WorkflowReflection.workflow" title="Download Workflow Reflection example"><img align="middle" src="http://www.vcoportal.de/wp-includes/images/crystal/default.png" alt="Workflow Reflection example" /></a></div>
 <div class="wpfilebase-rightcol">
  <div class="wpfilebase-filetitle">
   <a href="http://www.vcoportal.de/download/workflow/WorkflowReflection.workflow" title="Download Workflow Reflection example">Workflow Reflection example</a><br />
   WorkflowReflection.workflow<br />
   
   
  </div>
  <div class="wpfilebase-filedetails" id="wpfilebase-filedetails2" style="display: none;">
  <p>This workflow just prints out some information about itself...</p>
  <table border="0">
   
   <tr><th>Author:</th><td>Joerg</td></tr>
   
   
   <tr><th>Category:</th><td>Workflows, Actions and Packages</td></tr>
   
   <tr><th>Date:</th><td>March 8, 2012</td></tr>
   
  </table>
  </div>
 </div>
 <div class="wpfilebase-fileinfo">
  1.8 KiB<br />

  <a href="#" onclick="return wpfilebase_filedetails(2);">Details...</a>
 </div>
 <div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/03/workflow-reflection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vCO integration with VMware View</title>
		<link>http://www.vcoportal.de/2012/03/vco-integration-with-vmware-view/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vco-integration-with-vmware-view</link>
		<comments>http://www.vcoportal.de/2012/03/vco-integration-with-vmware-view/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 19:29:31 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Integrate vCO]]></category>
		<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=1023</guid>
		<description><![CDATA[Just that you do not miss it: @cloudnutz postet a great example how to leverage the Powershell plugin to call VMware View PowerCLI cmdlets from vCO Workflows: http://communities.vmware.com/docs/DOC-18638 Find the...]]></description>
			<content:encoded><![CDATA[<p id="top" />Just that you do not miss it: <a title="https://twitter.com/#!/cloudnutz" href="https://twitter.com/#!/cloudnutz" target="_blank">@cloudnutz</a> postet a great example how to leverage the Powershell plugin to call <a title="http://www.vmware.com/files/pdf/techpaper/PowerShell-Integration-View45-WP.pdf" href="http://www.vmware.com/files/pdf/techpaper/PowerShell-Integration-View45-WP.pdf" target="_blank">VMware View PowerCLI cmdlets</a> from vCO Workflows:</p>
<p style="text-align: center;"><a title="http://communities.vmware.com/docs/DOC-18638" href="http://communities.vmware.com/docs/DOC-18638" target="_blank">http://communities.vmware.com/docs/DOC-18638</a></p>
<p>Find the original post also on <a title="http://cloudnutz.com/2012/03/07/using-vmware-vco-to-manage-vmware-view/" href="http://cloudnutz.com/2012/03/07/using-vmware-vco-to-manage-vmware-view/" target="_blank">http://cloudnutz.com/2012/03/07/using-vmware-vco-to-manage-vmware-view/</a></p>
<p>And don&#8217;t miss some (unofficial, but don&#8217;t blame me (this time <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_redface.gif' alt=':oops:' class='wp-smiley' />  ) <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' />  ) additional PowerCLI cmdlets for VMware View: <a title="http://velemental.com/2012/02/04/unofficial-advanced-vmware-view-powershell-cmdlets/" href="http://velemental.com/2012/02/04/unofficial-advanced-vmware-view-powershell-cmdlets/" target="_blank">http://velemental.com/2012/02/04/unofficial-advanced-vmware-view-powershell-cmdlets/</a></p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120307_view.png"><img class="aligncenter size-medium wp-image-1024" title="vCO integration with VMware View - Example" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120307_view-300x187.png" alt="" width="300" height="187" /></a></p>
<p>And <strong>Dear VMware View Team</strong>: Please give us a full (and documented) (and official) API!</p>
<p><em>Or even better:</em> What about a View-Plugin for vCO?<br />
I know a lot of customer having use-cases for it (and a lot of people having to use workarounds like this for now). Desktop-as-a-Service and Cloud Desktops need Orchestration (just to add the buzzwords for the robots <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_twisted.gif' alt=':twisted:' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/03/vco-integration-with-vmware-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick one: Trace out object attributes in JavaScript</title>
		<link>http://www.vcoportal.de/2012/03/quick-one-trace-out-object-attributes-in-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-one-trace-out-object-attributes-in-javascript</link>
		<comments>http://www.vcoportal.de/2012/03/quick-one-trace-out-object-attributes-in-javascript/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 15:43:52 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[Get Started!]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=1010</guid>
		<description><![CDATA[I just strumbled (once again) over some scripting objects in vCenter Orchestrator where the documentation in the API Explorer is, eeeh, just missing. So I had to figure out the...]]></description>
			<content:encoded><![CDATA[<p id="top" />I just strumbled (once again) over some scripting objects in vCenter Orchestrator where the documentation in the API Explorer is, eeeh, just missing. So I had to figure out the attributes of the object manually. To do this, you can leverage the JavaScripts&#8217;s characteristic that objects are represented as enumerations of their attributes.</p>
<p>So it&#8217;s possible to loop through all the attributes even if you don&#8217;t know their identifier (yet). Following example in Javascript does exactly that, to trace out all attributes of a VM-Object (Type: VcVirtualMachine) and its Datastores. (you can download the full example below)</p>
<h3>The script</h3>
<pre class="brush: jscript; title: ; notranslate">
//print out properties of a VM-object

//loop through all properties (leverage Javascript's
// &quot;object is an associative array&quot; characteristic)
for (var i in vm) { (//vm is an input parameter of Type VcVirtualMachine
	//we have to catch some 'not defined' errors if object has
	//an attribute of type &quot;dynamic property&quot;)
	try {
	//print out in form &quot;propertyname:::value&quot;
		System.debug(i + &quot;:::&quot; + vm[i]);
	} catch (ex) {
		//just ignore error and continue with next iteration(=property)
		continue;
	}
}

//other example: For a datastore
System.debug(&quot;================================&quot;);
System.debug(&quot;====NOW FOR THE DATASTORE===&quot;);
System.debug(&quot;================================&quot;);
var vmsDatastores = vm.datastore;
System.debug(&quot;VM's Datastore(-object): &quot; + vmsDatastores);
//vm.datastore return an ARRAY OF DATASTORES itself, so we have
//wrap it in another loop
for (var k in vmsDatastores) {
	var curDatastore = vmsDatastores[k];
	System.debug(&quot;******** NEXT DATASTORE: *****&quot;);
	System.debug(&quot;curDatastore: &quot; + curDatastore);

//same loop as above for each datastore
//play it again, Sam!
for (var j in curDatastore) {
	try{
		System.debug(j + &quot;:::&quot; + curDatastore[j]);
	} catch (ex) {
		continue;
	}
}
//end same loop as above <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> 

} //end loop through Datastore-Array
</pre>
<h3>The results</h3>
<p>The output looks like this:</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120306_workflow.png"><img class="aligncenter size-medium wp-image-1011" title="Example output of &quot;trace object attributes&quot; script" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120306_workflow-300x253.png" alt="" width="300" height="253" /></a></p>
<p>To interpret the results, an example line of the output:</p>
<pre>[2012-03-06 09:45:23.844] [D] <span style="color: #ff0000;">resourcePool</span>:::DynamicWrapper (Instance) : \\
    [<span style="color: #339966;">VcResourcePool</span>]-[class com.vmware.vmo.plugin.vi4.model.VimResourcePool] \\
    -- VALUE : <span style="color: #0000ff;">ResourcePool&lt;resgroup-98&gt;</span></pre>
<p>The first part <em>resourcePool</em> is the name of the attribute.<br />
After the<em> :::</em> separator you get the object type <em>[<span style="color: #339966;">VcResourcePool</span>]</em> of this attribute, the providing class in the vCenter-Plugin of vCO,<br />
and finally after the<em> &#8211;</em> separator you get the value of the attribute, in this case it&#8217;s with <span style="color: #0000ff;"><em>ResourcePool&lt;resgroup-98&gt;</em></span> a Moref (Managed Object Reference) to the resource pool the VM is located in.</p>
<p>Now you can use the <strong>.</strong>-Operator in JavaScript to access the attributes, as in line 21 in the script where we do the cram again for all Datastores the VM is related to.</p>
<p><strong><em>Only caveat:</em></strong> Just from the System.debug()-Output it&#8217;s <strong>NOT</strong> possible to see if an attribute is just a single object or an Array!<br />
(read carefully the example again: <strong>vm.datastore</strong> (line 21) returns and <em>Array of VcDatastores</em>, but you cannot see this just from the output of line 22)</p>
<h3>Conclusion:</h3>
<p>Always have the vSphere API Reference open in background when working with vCenter objects in vCO!</p>
<h3>Download the example:</h3>
<div class="wpfilebase-attachment">
 <div class="wpfilebase-fileicon"><a href="http://www.vcoportal.de/download/workflow/trace out object properties.workflow" title="Download Workflow: Trace Out Object Properties"><img align="middle" src="http://www.vcoportal.de/wp-includes/images/crystal/default.png" alt="Workflow: Trace Out Object Properties" /></a></div>
 <div class="wpfilebase-rightcol">
  <div class="wpfilebase-filetitle">
   <a href="http://www.vcoportal.de/download/workflow/trace out object properties.workflow" title="Download Workflow: Trace Out Object Properties">Workflow: Trace Out Object Properties</a><br />
   trace out object properties.workflow<br />
   
   
  </div>
  <div class="wpfilebase-filedetails" id="wpfilebase-filedetails3" style="display: none;">
  <p>Example how to System.debug() out properties of object in vCO JavaScript. Should run out of the box :-)</p>
  <table border="0">
   
   <tr><th>Author:</th><td>Joerg</td></tr>
   
   
   <tr><th>Category:</th><td>Workflows, Actions and Packages</td></tr>
   
   <tr><th>Date:</th><td>March 6, 2012</td></tr>
   
  </table>
  </div>
 </div>
 <div class="wpfilebase-fileinfo">
  2.3 KiB<br />

  <a href="#" onclick="return wpfilebase_filedetails(3);">Details...</a>
 </div>
 <div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/03/quick-one-trace-out-object-attributes-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Let your vCO Workflow text you! Yes, via SMS!</title>
		<link>http://www.vcoportal.de/2012/03/let-your-vco-text-you/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=let-your-vco-text-you</link>
		<comments>http://www.vcoportal.de/2012/03/let-your-vco-text-you/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 22:59:18 +0000</pubDate>
		<dc:creator>Joerg Lew</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[Get Started!]]></category>
		<category><![CDATA[Integrate vCO]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://www.vcoportal.de/?p=983</guid>
		<description><![CDATA[Working on another blogpost on some design best-practices for workflows (stay tuned&#8230;) a promising idea came into my mind: What about sending text messages to my mobile from workflows? I...]]></description>
			<content:encoded><![CDATA[<p id="top" />Working on another blogpost on some design best-practices for workflows (stay tuned&#8230;) a promising idea came into my mind:</p>
<h3><em>What about sending text messages to my mobile from workflows?</em></h3>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS.png"><img class="aligncenter size-medium wp-image-999" title="Sending SMS messages from vCO? Yep." src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-187x300.png" alt="" width="187" height="300" /></a></p>
<p>I guessed there are many SMS-Gateway-Services out there which provide any kind of SOAP or REST-API&#8230; (I want to leverage an existing plugin for vCO for quick results). So google came up with this nice discussion:</p>
<p><a title="http://stackoverflow.com/questions/2383542/recommendations-for-sms-gateways-with-api-support" href="http://stackoverflow.com/questions/2383542/recommendations-for-sms-gateways-with-api-support" target="_blank">http://stackoverflow.com/questions/2383542/recommendations-for-sms-gateways-with-api-support</a></p>
<p>I decided to give <a title="https://www.clickatell.com" href="https://www.clickatell.com" target="_blank">https://www.clickatell.com</a> a try, because they</p>
<ul>
<li>provide interational service</li>
<li>provide multiple kinds of API</li>
<li>seem to be reliable and widely used</li>
<li>don&#8217;t force you in a contract/monthly plan for my limited test usage</li>
</ul>
<p>What you need to reproduce this example:</p>
<ul>
<li>a clickatell account (I think it will work with most of the other SMS-Gateway services in a comparable fashion)</li>
<li>the REST-Plugin for vCO installed in your Orchestrator environment (see details here: <a title="http://www.vmware.com/support/pubs/vco_plugins_pubs.html" href="http://www.vmware.com/support/pubs/vco_plugins_pubs.html" target="_blank">http://www.vmware.com/support/pubs/vco_plugins_pubs.html</a> (Select HTTP-REST for the plugin-download and a bunch of examples)</li>
</ul>
<h3>Step-by-step&#8230;</h3>
<p>I quickly signed-up for an account, used the web-form to send a test message to German) mobile number, and prepaid for some credits to be able to send via the API.</p>
<p>After that, I created a new access for the &#8220;HTTP&#8221;-API of clickatell (no special settings):</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-clickatell.png"><img class="aligncenter size-medium wp-image-992" title="Clickatell-New API" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-clickatell-300x192.png" alt="" width="300" height="192" /></a>(You may open clickatell&#8217;s API Documentation now in background if you&#8217;re a<em> read-first-try-then</em> kind of guy.)<br />
For myself I just started my vCO client and ran the &#8220;Add a REST host&#8221;-Workflow from the library, providing just a name and http://api.clickatell.com as URL:</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-addRESTHost.png"><img class="aligncenter size-medium wp-image-991" title="Add api.clickatell.com as REST host" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-addRESTHost-300x110.png" alt="" width="300" height="110" /></a></p>
<p>The workflow finished sucessfully, I confirmed the new host in the Inventory:</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-inventory.png"><img class="aligncenter size-full wp-image-990" title="clickatell SMS gateway in vCO-Inventory" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-inventory.png" alt="" width="230" height="296" /></a></p>
<p>Now I called the &#8220;Add a REST operation&#8221;-Workflow to invoke the API-Call to clickatell (based on their example given when creating the API account):</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-AddRESToperation.png"><img class="aligncenter size-medium wp-image-989" title="Add the REST operation to send the text message" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-AddRESToperation-300x209.png" alt="" width="300" height="209" /></a></p>
<p>(instead of hardcoding my credentials I used the generic {parameter}-notation of the REST-plugin for all the necessary parameters like username, password, API-Id, &#8230;, so that I can re-use the  operation later flexibly). The full &#8220;Template URL&#8221; value is:</p>
<pre class="brush: xml; title: ; notranslate">

/http/sendmsg?user={username}&amp;password={password}&amp;api_id={apiid}&amp;to={tonr}&amp;text={message}
</pre>
<p>When the operation was created (again: Confirm in Inventory-Tree) I started the &#8220;Invoke a REST operation&#8221; workflow providing all the input parameters:</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-InvokeRESToperation.png"><img class="aligncenter size-medium wp-image-988" title="Calling the SMS gateway API to send the message" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-InvokeRESToperation-300x205.png" alt="" width="300" height="205" /></a></p>
<p>aaand voila,  <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> seconds later the text messgae arrived on my mobile!   <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-recieved.png"><img class="aligncenter size-medium wp-image-987" title="GOT IT!" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-recieved-187x300.png" alt="" width="187" height="300" /></a></p>
<h3>Now, the real-world use-case:</h3>
<p>Well, sending generic messages to a mobile from a vCO workflow is cool|geeky, but what for? For a realistic example I used the Workflow-Generation of the REST-Plugin to let vCO generate my very own &#8220;Invoke &#8216;send a text message&#8217;&#8221;-Workflow in my very own Workflow folder for easy re-usage:</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-generateWorkflow.png"><img class="aligncenter size-medium wp-image-986" title="Workflow Generation with vCO REST Plugin" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-generateWorkflow-300x118.png" alt="" width="300" height="118" /></a></p>
<p>So I was able to re-use the created workflow in my Snapshot-Hunter-Workflow&#8230; (you know the pain with backup software which accidentally forgets to cleanup the VM snapshots! <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_evil.gif' alt=':evil:' class='wp-smiley' /> )</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-completeSnaphunterWorkflow.png"><img class="aligncenter size-medium wp-image-985" title="Orchestrated Snapshot Hunter " src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-completeSnaphunterWorkflow-300x176.png" alt="" width="300" height="176" /></a></p>
<p>(The first element to find these workflows leverages the xpath-filter of the VcPlugin.getAllSnapshots()-Method, see the discussion here: <a title="http://communities.vmware.com/thread/342686" href="http://communities.vmware.com/thread/342686" target="_blank">http://communities.vmware.com/thread/342686</a> and <a title="http://communities.vmware.com/message/1673575" href="http://communities.vmware.com/message/1673575" target="_blank">http://communities.vmware.com/message/1673575</a> )</p>
<p>At the end: After scheduling the workflow as Scheduled Task in vCO, starting from tomorrow I will get waked-up by my mobile receiving an text message from vCO when there are leftover snapshots from the nightly backups!</p>
<p><a href="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-snapwarningSMS.png"><img class="aligncenter size-medium wp-image-984" title="Backup snapshots found!" src="http://www.vcoportal.de/wp-content/uploads/2012/03/120305_SMS-snapwarningSMS-187x300.png" alt="" width="187" height="300" /></a></p>
<h3>Summary</h3>
<ul>
<li>Don&#8217;t fear any tasks integrating vCenter Orchestrator! When the external system provides an API, chances are that you get in run in a few minutes&#8230;</li>
<li>Remember: less and simple workflow inputs make it easy to use, many and generic workflow inputs make it easy to re-use! (referencing the <a title="Orchestrator Workflow Development Best Practices @vmworld2011" href="http://www.vcoportal.de/2011/10/workflow-development-best-practices/" target="_blank">&#8220;Workflow Development Best Practices&#8221;</a>-session as a shameless plug <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> )</li>
<li>Sometimes it IS good to be creative|distracted when drafting a blog-post (expect the post I actually was working on soon&#8230;)</li>
<li>Turn off your mobile when you want to sleep in!</li>
<li>&#8230;and thank god I&#8217;m too tired to think about other use-cases for this&#8230;<br />
(I will not make an Orchestrator &amp; Ringtone joke!<br />
I do not plan to provide a monthly subscription for my content, just text a SMS with &#8220;vCO Rockz!&#8221; to &#8230;..<br />
And I better not search for an API for Asterisk (&#8220;If you want to execute workflow XYZ, press 1; for all other requests press 2&#8243; 8-O)</li>
</ul>
<h3>Download the example</h3>
<div class="wpfilebase-attachment">
 <div class="wpfilebase-fileicon"><a href="http://www.vcoportal.de/download/workflow/de.vcoportal.snapshothunter.package" title="Download SnapshotHunter Package"><img align="middle" src="http://www.vcoportal.de/wp-includes/images/crystal/default.png" alt="SnapshotHunter Package" /></a></div>
 <div class="wpfilebase-rightcol">
  <div class="wpfilebase-filetitle">
   <a href="http://www.vcoportal.de/download/workflow/de.vcoportal.snapshothunter.package" title="Download SnapshotHunter Package">SnapshotHunter Package</a><br />
   de.vcoportal.snapshothunter.package<br />
   
   
  </div>
  <div class="wpfilebase-filedetails" id="wpfilebase-filedetails4" style="display: none;">
  <p>These Workflows search your inventory for certain Snapshots, and call the clickatell-API to send a text message to your mobile if they found some.<br />
(They will NOT run out-of-the-box, see corresponding post for details!)</p>
  <table border="0">
   <tr><th>Languages:</th><td>Englisch</td></tr>
   <tr><th>Author:</th><td>Joerg</td></tr>
   <tr><th>Platforms:</th><td>vCO 4.x</td></tr>
   
   <tr><th>Category:</th><td>Workflows, Actions and Packages</td></tr>
   
   <tr><th>Date:</th><td>March 5, 2012</td></tr>
   
  </table>
  </div>
 </div>
 <div class="wpfilebase-fileinfo">
  23.3 KiB<br />

  <a href="#" onclick="return wpfilebase_filedetails(4);">Details...</a>
 </div>
 <div style="clear: both;"></div>
</div>
<p><em><strong>Be aware that it will NOT run out-of-the-box</strong></em>, because you have to add the REST-Host and the Operation in your environment! And: Don&#8217;t forget to set the necessary values for<em> username, password, mobilenr, &#8230;</em> in the configuration elements.You know<a title="http://blogs.vmware.com/orchestrator/2012/02/configuration-elements-revisited.html" href="http://blogs.vmware.com/orchestrator/2012/02/configuration-elements-revisited.html" target="_blank"> that blogpost whith a great description of Configuration Elements</a>, don&#8217;t you! <img src='http://www.vcoportal.de/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.vcoportal.de/2012/03/let-your-vco-text-you/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 24/49 queries in 0.118 seconds using disk: basic

Served from: www.vcoportal.de @ 2012-05-19 08:22:33 -->
