Hi all,

recently I tried to use the STONITH plugin external/vcenter along with 
vCenter 5 (I doubt, that the version is significant).
While using the stonith resource for each node separately, I had no 
problems, but using it in a clone resulted in failures like that one:

====
Nov 14 08:53:57 shermcl1 external/vcenter(vfencing:0)[23236]: [23257]:
   ERROR: [reset shermcl2] Invalid target specified
====
where the cluster consists of virtual machines SHERMCL1, SHERMCL2 and 
SHERMCL3, with their unames shermcl1, shermcl2 and shermcl3, 
accordingly. shermcl2 should be fenced, but the remaining cluster 
members were unable to kill that machine.

The relevant portion of the cluster configuration is here:

====
node shermcl1
node shermcl2
node shermcl3

primitive vfencing stonith:external/vcenter \
        params VI_SERVER="virtualcenter.dom.ain"
  VI_CREDSTORE="/root/.vmware/credstore/vicredentials.xml"
  HOSTLIST="shermcl1=SHERMCL1;shermcl2=SHERMCL2;shermcl3=SHERMCL3"
  RESETPOWERON="0" \
        op monitor interval="3600s"
clone Fencing vfencing

location l-Fencing_shermcl1 Fencing 0: shermcl1
location l-Fencing_shermcl2 Fencing 0: shermcl2
location l-Fencing_shermcl3 Fencing 0: shermcl3
====

The location statements are needed, as the cluster itself is no 
symmetric.

All machines are plain openSUSE 12.2 with corosync 1.4.3 and pacemaker 
1.1.6.

While running perfectly on the commandline with
====
stonith -t external/vcenter VI_SERVER="virtualcenter.dom.ain" \
 VI_CREDSTORE="/root/.vmware/credstore/vicredentials.xml" \
 HOSTLIST="shermcl1=SHERMCL1;shermcl2=SHERMCL2;shermcl3=SHERMCL3" \
 RESETPOWERON="0" -l
====
and showing the names of the three virtual machines, I found, that 
called as resource inside the cluster only the first hostname until the 
first "=" is visible, perhaps caused by the handover as environment 
variable.

Applying the attached trivial patch to use a colon (":") instead of the 
equal sign ("=") the command line test
====
stonith -t external/vcenter VI_SERVER="virtualcenter.dom.ain" \
 VI_CREDSTORE="/root/.vmware/credstore/vicredentials.xml" \
 HOSTLIST="shermcl1:SHERMCL1;shermcl2:SHERMCL2;shermcl3:SHERMCL3" \
 RESETPOWERON="0" -l
====
as well as fencing inside the cluster with
====
primitive vfencing stonith:external/vcenter \
        params VI_SERVER="virtualcenter.dom.ain"
  VI_CREDSTORE="/root/.vmware/credstore/vicredentials.xml"
  HOSTLIST="shermcl1:SHERMCL1;shermcl2:SHERMCL2;shermcl3:SHERMCL3"
  RESETPOWERON="0" \
        op monitor interval="3600s"
====
succeeds.


So a question around: Is anyone using the external/vcenter with the 
cloned resource successfully with the original syntax?
If so, where is my problem?

If not, the attached patch changes the syntax in the above described 
way. If there is no objection can it be applied?

Greetings,

Stefan

PS: sorry for the line breaks in the code
-- 
Stefan Botter          listrea...@jsj.dyndns.org
# HG changeset patch
# User Stefan Botter <j...@jsj.dyndns.org>
# Date 1352974761 -3600
# Node ID 3429be9596a95127e04706c38c5c4d82fb67e206
# Parent  0809ed6abeb7289f3a8f4229f537df8d509c0854
- trivial change to use ":" as hostname delimiter in HOSTLIST instead of "="

diff -r 0809ed6abeb7 -r 3429be9596a9 lib/plugins/stonith/external/vcenter
--- a/lib/plugins/stonith/external/vcenter	Mon Oct 22 17:35:17 2012 +0200
+++ b/lib/plugins/stonith/external/vcenter	Thu Nov 15 11:19:21 2012 +0100
@@ -55,12 +55,12 @@
 <longdesc lang="en">
 The list of hosts that the VMware vCenter STONITH device controls.
 Syntax is:
-  hostname1[=VirtualMachineName1];hostname2[=VirtualMachineName2]
+  hostname1[:VirtualMachineName1];hostname2[:VirtualMachineName2]
 
-NOTE: omit =VirtualMachineName if hostname and virtual machine names are identical
+NOTE: omit :VirtualMachineName if hostname and virtual machine names are identical
 
 Example:
-  cluster1=VMCL1;cluster2=VMCL2
+  cluster1:VMCL1;cluster2:VMCL2
 </longdesc>
 </parameter>
 <parameter name="VI_SERVER">
@@ -128,7 +128,7 @@
 	my %host_to_vm = ();
 	my %vm_to_host = ();
 	foreach my $host (@hostlist) {
-		my @config = split(/=/, $host);
+		my @config = split(/:/, $host);
 		my $key = $config[0]; my $value = $config[1];
 		if (!defined($value)) { $value = $config[0]; }
 		$host_to_vm{$key} = $value;
_______________________________________________________
Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/

Reply via email to