<?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>Hypervisor.fr &#187; SDK</title>
	<atom:link href="http://www.hypervisor.fr/?feed=rss2&#038;tag=sdk" rel="self" type="application/rss+xml" />
	<link>http://www.hypervisor.fr</link>
	<description>French Bare-Metal weblog</description>
	<lastBuildDate>Wed, 26 Jun 2024 22:42:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SendNMI in your face</title>
		<link>http://www.hypervisor.fr/?p=5556</link>
		<comments>http://www.hypervisor.fr/?p=5556#comments</comments>
		<pubDate>Tue, 16 Jun 2015 21:54:46 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[NMI]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5556</guid>
		<description><![CDATA[A chaque nouvelle version de vSphere, c&#8217;est toujours un plaisir de fouiller dans le SDK. La cuvée 2015 offre son lot de surprises comme le GuestWindowsRegistryManager qui permet de gérer la registry de Windows directement via les API VIX, des traces du projet VMFork (aka Linked Clones ++) qu&#8217;on attend avec impatience ou encore la possibilité [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">A chaque nouvelle version de vSphere, c&#8217;est toujours un plaisir de fouiller dans le SDK. <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/new-mo-types-landing.html">La cuvée 2015</a> offre son lot de surprises comme le <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/vim.vm.guest.WindowsRegistryManager.html" target="_blank">GuestWindowsRegistryManager</a> qui permet de <strong>gérer la registry de Windows directement via les API VIX</strong>, <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/vim.vm.ForkConfigInfo.html" target="_blank">des traces</a> du <a href="http://www.yellow-bricks.com/2014/10/07/project-fargo-aka-vmfork-what-is-it/" target="_blank">projet <strong>VMFork</strong></a> (aka Linked Clones ++) qu&#8217;on attend avec impatience ou encore <strong><a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/vim.VirtualMachine.html#sendNMI">la possibilité d&#8217;envoyer une non-maskable interrupt</a></strong> (<a href="https://en.wikipedia.org/wiki/Non-maskable_interrupt">aka NMI</a>) à une VM pour un troubleshooting velu.</p>
<p>Historiquement, il était un peu complexe de générer ce genre d’interruption <a href="http://www.virtuallyghetto.com/2014/07/quick-tip-how-to-bsodpanic-a-virtual-machine-in-esxi.html">comme le détail William</a> mais avec cette nouvelle API cela devient un jeu d&#8217;enfant en PowerCLI :</p>
<pre class="brush: powershell; title: ; notranslate">(Get-VM toto|Get-View).SendNMI()</pre>
<p>Malheureusement, connecté au vCenter, on se mange une jolie erreur :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SendNMI/SendNMI_vCenter_error.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SendNMI/SendNMI_vCenter_error.png" alt="" width="521" height="90" /></a></p>
<blockquote>
<p style="text-align: left;">Exception calling &#8220;SendNMI&#8221; with &#8220;0&#8243; argument(s): &#8220;The requested operation is not implemented by the server.&#8221;</p>
</blockquote>
<p><strong>Connecté en direct sur un ESX</strong> ça se passe nettement mieux :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SendNMI/SendNMI_ESXi_task.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SendNMI/SendNMI_ESXi_task.png" alt="" width="431" height="117" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SendNMI/SendNMI_BSOD.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SendNMI/SendNMI_BSOD.png" alt="" width="454" height="379" /></a></p>
<p style="text-align: left;">En prime, on droit au nouvel événement <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/vim.event.VmGuestOSCrashedEvent.html" target="_blank">VmGuestOSCrashedEvent</a> :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SendNMI/SendNMI_ESXi_event.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SendNMI/SendNMI_ESXi_event.png" alt="" width="547" height="180" /></a></p>
<blockquote>
<p style="text-align: left;">&lt;166&gt;NoneZ visor04.lab.schitz.org Hostd: 2015-06-04T22:21:45.933Z info hostd[6DE83B70] [Originator@6876 sub=Vimsvc.ha-eventmgr] Event 894 : Win10 on visor04.lab.schitz.org: <strong>Guest operating system has crashed</strong>.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5556</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Storage DRS jet lag</title>
		<link>http://www.hypervisor.fr/?p=4745</link>
		<comments>http://www.hypervisor.fr/?p=4745#comments</comments>
		<pubDate>Sat, 18 May 2013 23:40:08 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[SDRS]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4745</guid>
		<description><![CDATA[Suite à la publication de l’excellent Understanding VMware vSphere 5.1 Storage DRS rédigé (et surtout illustré) par Frank Denneman, nous nous permettons une petite remarque au sujet de la réactivité de SDRS lors du dépassement du seuil de remplissage. Dans le white paper, on peut lire ceci :
vSphere Storage DRS attempts to avoid an out-of-space situation [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Suite à la publication de l’excellent <a href="http://www.vmware.com/resources/techresources/10363" target="_blank">Understanding VMware vSphere 5.1 Storage DRS</a> rédigé (et surtout illustré) par Frank Denneman, nous nous permettons une petite remarque <strong>au sujet de la réactivité de SDRS lors du dépassement du seuil de remplissage</strong>. Dans le white paper, on peut lire ceci :</p>
<blockquote><p>vSphere Storage DRS attempts to avoid an out-of-space situation and therefore runs a load-balancing operation <strong>as soon as</strong> the datastore exceeds its space-utilization threshold. <strong>This operation can be outside of the normal load-balancing interval of every 8 hours</strong>.</p></blockquote>
<p style="text-align: justify;">La première phrase est aussi intéressante qu&#8217;imprécise. On y apprend que la réaction est immédiate mais aussi qu&#8217;elle dépend de vCenter. Et suite à une batterie de tests sur différents environnement (5.0 et 5.1), nous avons remarqué que la fréquence de rafraîchissement de cette information dans vCenter n&#8217;est malheureusement que d&#8217;<strong>une (1) fois toutes les 30 minutes au mieux</strong>. (on soupçonne un algorithme basé sur l&#8217;utilisation du datastore mais visiblement pas encore très efficace). Pour le vérifier, rien de tel qu&#8217;un petit oneliner de PowerCLI qui check la propriété info.timestamp des datastores :</p>
<pre class="brush: powershell; title: ; notranslate">Get-View -ViewType datastore -property info,name,summary|?{$_.summary.accessible}|select name,{$_.info.timestamp.ToLocalTime()}</pre>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/datastore_timestamp.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/datastore_timestamp.png" alt="" width="496" height="222" /></a></p>
<p style="text-align: justify;">On constate donc qu&#8217;un des pilier de SDRS repose sur une donnée dont la fiabilité peut malheureusement varier et dont la fraîcheur peut laisser à désirer même dans le cas des 30 minutes. En attendant que ça bouge coté VMware, voici un workaround (<a href="http://kb.vmware.com/kb/2008367" target="_blank">nettement moins dingue que celui d&#8217;une certaine kb</a>), qui consiste à forcer le refresh rapide à votre convenance <strong>sans que la tache n&#8217;apparaisse dans le vCenter</strong> (<a href="http://vijava.sourceforge.net/vSphereAPIDoc/ver51/ReferenceGuide/vim.Datastore.html#refresh" target="_blank">merci le SDK</a>). Dans notre exemple, refresh de tous les datastores dont la propriété info.timestamp serait &#8220;veille&#8221; de plus de 5 minutes :</p>
<pre class="brush: powershell; title: ; notranslate">Get-View -ViewType datastore -property info,summary|?{$_.summary.accessible}|?{($(get-date) - $_.info.timestamp.ToLocalTime()).TotalMinutes -gt 5}|%{$_.RefreshDatastore()}</pre>
<p>La seconde phrase de la citation, c&#8217;est un RTFM politiquement correct pour ceux qui font encore l&#8217;amalgame entre les 8h d&#8217;intervales de l&#8217;<strong>I/O load balancing</strong> et le <strong>Space-Utilization Load Balancing</strong>.</p>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/vmware_sdrs.jpg" alt="" width="500" height="277" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4745</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SDK] Les petits secrets du HostPatchManager</title>
		<link>http://www.hypervisor.fr/?p=3972</link>
		<comments>http://www.hypervisor.fr/?p=3972#comments</comments>
		<pubDate>Tue, 24 Jul 2012 23:39:58 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[HostPatch]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[vib]]></category>
		<category><![CDATA[VUM]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=3972</guid>
		<description><![CDATA[Pour un projet particulier, il nous a fallu trouver une méthode industrialisable pour patcher des ESXi 4.0 U1 &#62; U4 à chaud et sans maintenance mode. Evidemment la mise à jour nécessite un reboot pour être effective mais cela offre la possibilité (contrairement à VUM) de séparer totalement la partie patch de la partie &#8220;maintenance mode&#8221;/reboot afin de partager les taches entre 2 équipes par [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Pour un projet particulier, il nous a fallu trouver une méthode industrialisable pour patcher des ESXi 4.0 U1 &gt; U4 <strong>à chaud et sans maintenance mode</strong>. Evidemment la mise à jour nécessite un reboot pour être effective mais cela offre la possibilité (contrairement à VUM) de séparer totalement la partie patch de la partie &#8220;maintenance mode&#8221;/reboot afin de partager les taches entre 2 équipes par exemple (et accessoirement d’être plus rapide que VUM).</p>
<p style="text-align: justify;">Nous savions que c&#8217;était techniquement envisageable compte tenu du fait qu&#8217;un <a href="http://www.hypervisor.fr/?p=1049" target="_blank">patch pour ESXi se résume à la copie d&#8217;une nouvelle build dans <span style="text-decoration: line-through;">la &#8220;bootbank&#8221; après avoir copier la build courante dans la &#8220;altbootbank</span>&#8220;</a> <a href="http://youtu.be/rTYULTkudSI?t=9m51s" target="_blank">la &#8220;bootbank&#8221; inactive</a>. Compte tenu du fait qu&#8217;ESXi est un OS stateless, le fait d’écraser la &#8220;bootbank&#8221; <span style="text-decoration: line-through;">et la &#8220;altbootbank&#8221;</span> pendant le fonctionnement ne pose pas de problème. Malgré tout, il nous a fallu chercher un peu pour trouver le bon paramètre à passer à &#8220;esxupdate&#8221; pour forcer la mise à jour (qui nécessite le &#8220;maintenance mode&#8221; par défaut) avec des vm en fonctionnement.</p>
<p style="text-align: justify;">Voici un petit oneliner qui vous permettra de reproduire cet exploit (oubliez le support vmware naturellement) :</p>
<pre class="brush: powershell; title: ; notranslate">(get-view (get-vmhost vsp41esx01*|get-view).configmanager.PatchManager).InstallHostPatchV2($null, &quot;http://www.hypervisor.fr/img/ESXi410-201206001.zip&quot;, $null, ((new-object Vmware.Vim.HostPatchManagerPatchManagerOperationSpec -Property @{cmdOption = &quot;--maintenancemode&quot;})))</pre>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/HostPatch/InstallHostPatch.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/HostPatch/InstallHostPatch.png" alt="" width="521" height="645" /></a></p>
<p style="text-align: justify;"><a href="http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.host.PatchManager.html#InstallV2" target="_blank">Comme le détail le SDK</a>, il est possible de choisir entre 3 sources de patch : metaUrls, bundleUrls ou vibUrls, tout dépendra du format du patch. Concernant le &#8220;maintenance mode&#8221;, toute la magie réside dans le paramètre &#8221;<strong>&#8211;maintenancemode</strong>&#8221; qui fait parti des &#8220;hidden options&#8221; d&#8217;esxupdate (malheureusement pas toutes commentées) :</p>
<blockquote><p>&#8211;HA<br />
&#8211;vib-view<br />
&#8211;maintenancemode<br />
&#8211;force<br />
&#8211;test <em>&#8216;Test update transaction only&#8211;do not change sytem.&#8217;</em><br />
&#8211;all<em> &#8216;Display all bulletins.  Default is to display only the applicable updates.&#8217;</em><br />
&#8211;long <em>&#8216;Produce more detailed response in query or info output.&#8217;</em><br />
&#8211;noobsoletes <em>&#8216;Ignore obsoletions during update.  (Enables downgrading to older bundles.)&#8217;</em><br />
&#8211;reinstall <em>&#8216;Re-install a bundle that is already installed.&#8217;</em><br />
&#8211;nodeps<br />
&#8211;nosigcheck<br />
&#8211;nocache<br />
&#8211;olderversion<br />
&#8211;cachesize<br />
&#8211;cleancache<br />
&#8211;compliant</p></blockquote>
<p>A l&#8217;opposé, il est aussi possible de <strong>désinstaller un patch </strong>(à chaud toujours), ce qui est malheureusement impossible à faire avec VUM :</p>
<pre class="brush: powershell; title: ; notranslate">(get-view (get-vmhost vsp41esx02*|get-view).configmanager.PatchManager).UninstallHostPatch(&quot;ESXi410-201101223-UG&quot;,((new-object Vmware.Vim.HostPatchManagerPatchManagerOperationSpec -Property @{cmdOption = &quot;--maintenancemode&quot;})))</pre>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/HostPatch/UninstallHostPatch.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/HostPatch/UninstallHostPatch.png" alt="" width="521" height="534" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=3972</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
