It looks like there was either no CIB or it was configured improperly on
the machine I was working on.  I will read the documentation on this to
better understand how I can use it in the future.  Thanks Dejan.

Dejan Muhamedagic wrote:
> Hi,
>
> On Fri, Dec 19, 2008 at 09:46:36AM -0500, Jason Noble wrote:
>   
>> The problem I was seeing was that $OCF_RESKEY_vmxpath was not being set,
>>     
>
> It's supposed to be set by the user in the CIB. Or do you mean
> something else?
>
>   
>> and even if it were, it could only start or stop a single virtual
>> machine.
>>     
>
> Well, that was the point of my question: you can put more than
> one resource of this kind (vmware) in the CIB. Almost all RA
> handle only one instance.
>
> Thanks,
>
> Dejan
>
>   
>> Rather than making the script try to parse multiple arguments
>> and loop through a list of machines, I decided to just put a "shim"
>> script in there to call the agent for each VM.
>>
>>
>> Dejan Muhamedagic wrote:
>>     
>>> Hi,
>>>
>>> On Thu, Dec 18, 2008 at 11:48:46AM -0500, Jason Noble wrote:
>>>   
>>>       
>>>> I had a customer who tried to use this script, but it didn't work.  I
>>>> made some modifications to the control script.  Additionally, the
>>>> customer wanted to start/stop multiple machines.  The solution
>>>> implemented makes the Resource Agent a simple script -- vmstart_all --
>>>> that makes multiple calls to vmstart in order to start/stop the virtual
>>>> machines.
>>>>     
>>>>         
>>> Thanks for sharing the RA. BTW, what's wrong with having multiple
>>> VM resources?
>>>
>>> Thanks,
>>>
>>> Dejan
>>>
>>>   
>>>       
>>>> Here is vmstart_all:
>>>>
>>>> #!/bin/bash
>>>> VMSTARTDIR="/etc/ha.d/resource.d"
>>>> # Start up multiple virtual machines
>>>> # enter one per line in the following format:
>>>> # $VMSTARTDIR/vmstart $1 directoryname
>>>> #
>>>> # where directoryname is the name of the
>>>> # directory that contains a .vmx file
>>>> $VMSTARTDIR/vmstart $1 vm1
>>>> $VMSTARTDIR/vmstart $1 vm2
>>>>
>>>> And here's the patch for vmstart:
>>>> --- vmstart.20081114    2008-12-18 11:02:30.000000000 -0500
>>>> +++ vmstart    2008-12-18 11:12:45.000000000 -0500
>>>> @@ -31,79 +31,106 @@
>>>>  #################################################################
>>>>  
>>>>  # Source ocf shell functions
>>>> -#. ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs
>>>> -. /usr/lib64/heartbeat/ocf-shellfuncs
>>>> -#. /etc/ha.d/shellfuncs
>>>> +OCF_ROOT=/usr/lib/ocf
>>>> +. ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs
>>>> +#. /usr/lib64/heartbeat/ocf-shellfuncs
>>>> +. /etc/ha.d/shellfuncs
>>>> +
>>>>  # Basic variables configuration
>>>>  #################################################################
>>>>  
>>>>  # Path to the virtual machine configuration file
>>>> -VMXPATH="$OCF_RESKEY_vmxpath"
>>>> +#VMXPATH="$OCF_RESKEY_vmxpath"
>>>> +VMXPATH="/mnt/vmware/$2"
>>>>  
>>>>  # Path to the vmware-vim-cmd executable
>>>> -VIMSHBIN="$OCF_RESKEY_vimshbin"
>>>> +#VIMSHBIN="$OCF_RESKEY_vimshbin"
>>>> +VIMSHBIN="/usr/bin/vmware-vim-cmd"
>>>> +
>>>> +# Additional options to pass to vmware-vim-cmd executable
>>>> +VIMSHBINOPTS="-H localhost -O 904"
>>>> +
>>>> +# Print usage summary
>>>> +vmware_usage() {
>>>> +cat <<EOF
>>>> +usage: $0 VMDIR {start|stop|status|monitor|meta-data|validate-all}
>>>> +
>>>> +VMDIR    A directory under $VMXPATH that contains a virtual machine.
>>>> +EOF
>>>> +}
>>>> +
>>>> +# Check for two parameters
>>>> +if [ "$2" == "" ]; then
>>>> +  vmware_usage
>>>> +  exit 0
>>>> +fi
>>>> +
>>>>  
>>>>  # vmware-vim-cmd functions
>>>>  #################################################################
>>>>  
>>>>  # Get virtual machine vid
>>>>  vmware_get_vid() {
>>>> -$VIMSHBIN vmsvc/getallvms 2>/dev/null | awk '/\/'"$1"'/ {print $1}'
>>>> +$VIMSHBIN $VIMSHBINOPTS vmsvc/getallvms 2>/dev/null | awk '/\/'"$1"'/
>>>> {print $1}'
>>>>  }
>>>>  
>>>>  # Is the vm waiting for input after a migration?
>>>>  vmware_uuid_alt() {
>>>> -$VIMSHBIN vmsvc/message $1 2>/dev/null | awk /^msg.uuid.altered/
>>>> +$VIMSHBIN $VIMSHBINOPTS vmsvc/message $1 2>/dev/null | awk
>>>> /^msg.uuid.altered/
>>>>  }
>>>>  
>>>>  # Get message id
>>>>  vmware_get_msgid() {
>>>> -$VIMSHBIN vmsvc/message $1 2>/dev/null | awk '/^Virtual machine
>>>> message/ {print $4}' | awk -F : '{print $1}'
>>>> +$VIMSHBIN $VIMSHBINOPTS vmsvc/message $1 2>/dev/null | awk '/^Virtual
>>>> machine message/ {print $4}' | awk -F : '{print $1}'
>>>>  }
>>>>  
>>>>  # Answers message
>>>>  vmware_answer_msg() {
>>>> -$VIMSHBIN vmsvc/message $1 $2 $3 &> /dev/null
>>>> +$VIMSHBIN $VIMSHBINOPTS vmsvc/message $1 $3 $4 &> /dev/null
>>>>  }
>>>>  
>>>>  # Register a virtual machine
>>>>  vmware_register_vm() {
>>>> -$VIMSHBIN solo/registervm '"'$1'"' &> /dev/null
>>>> +$VIMSHBIN $VIMSHBINOPTS solo/registervm '"'$1'"' &> /dev/null
>>>>  }
>>>>  
>>>>  # Unregister a virtual machine
>>>>  vmware_unregister_vm() {
>>>> -$VIMSHBIN vmsvc/unregister $1 &> /dev/null
>>>> +$VIMSHBIN $VIMSHBINOPTS vmsvc/unregister $1 &> /dev/null
>>>>  }
>>>>  
>>>>  # Start a virtual machine
>>>>  vmware_poweron_vm() {
>>>> -$VIMSHBIN vmsvc/power.on $1 &> /dev/null
>>>> +$VIMSHBIN $VIMSHBINOPTS vmsvc/power.on $1 &> /dev/null
>>>>  }
>>>>  
>>>>  # Suspend a virtual machine
>>>>  vmware_suspend_vm() {
>>>> -$VIMSHBIN vmsvc/power.suspend $1 &> /dev/null
>>>> +$VIMSHBIN $VIMSHBINOPTS vmsvc/power.suspend $1 &> /dev/null
>>>>  }
>>>>  
>>>>  # Get virtual machine power state
>>>>  vmware_get_status() {
>>>> -$VIMSHBIN vmsvc/power.getstate $1 2>/dev/null | awk '/^Powered on/ ||
>>>> /^Powered off/ || /^Suspended/'
>>>> +$VIMSHBIN $VIMSHBINOPTS vmsvc/power.getstate $1 2>/dev/null | awk
>>>> '/^Powered on/ || /^Powered off/ || /^Suspended/'
>>>>  }
>>>>  
>>>>  # Get vid of missing virtual machines
>>>>  vmware_get_broken() {
>>>> -$VIMSHBIN vmsvc/getallvm 2>&1 | awk -F "'" '/^Skipping/ {print $2}'
>>>> +$VIMSHBIN $VIMSHBINOPTS vmsvc/getallvm 2>&1 | awk -F "'" '/^Skipping/
>>>> {print $2}'
>>>>  }
>>>>  
>>>>  # Variables depending on the above functions
>>>>  #################################################################
>>>>  
>>>>  # Directory containing the virtual machine
>>>> -VMXDIR="`dirname "$VMXPATH"`"
>>>> +#VMXDIR="`dirname "$VMXPATH"`"
>>>> +VMXDIR=$VMXPATH
>>>>  
>>>>  # Basename of the configuration file
>>>> -RELVMXPATH="`basename "$VMXPATH"`"
>>>> +#RELVMXPATH="`basename "$VMXPATH"`"
>>>> +RELVMXPATH=`basename "$(ls -1 $VMXPATH/*.vmx 2>/dev/null| head -n1)"
>>>> 2>/dev/null`
>>>> +
>>>> +VMXPATH=$VMXDIR/$RELVMXPATH
>>>>  
>>>>  # Vid of the virtual machine (can be empty if the vm is not registered)
>>>>  VMID=`vmware_get_vid "$RELVMXPATH"`
>>>> @@ -120,15 +147,6 @@
>>>>  # Main functions
>>>>  #################################################################
>>>>  
>>>> -# Print usage summary
>>>> -vmware_usage() {
>>>> -cat <<END
>>>> -usage: $0 {start|stop|status|monitor|meta-data|validate-all}
>>>> -
>>>> -Expects to have a fully populated OCF RA-compliant environment set.
>>>> -END
>>>> -}
>>>> -
>>>>  # Check for mandatory files presence and consistency
>>>>  vmware_validate() {
>>>>  if [ -z "`pidof vmware-hostd`" ]; then
>>>> @@ -182,7 +200,7 @@
>>>>  if [ -z "$VMID" ]; then
>>>>  # VM is not registered, need to register
>>>>  ocf_log info "Virtual machine $VM is not registered"
>>>> -ocf_log info "Registering Virtual machine $VM"
>>>> +ocf_log info "Registering Virtual machine $VM  >>>> $VMXPATH"
>>>>  vmware_register_vm "$VMXPATH"
>>>>  VMID=`vmware_get_vid "$RELVMXPATH"`
>>>>  if [ -z "$VMID" ]; then
>>>> @@ -269,7 +287,7 @@
>>>>  
>>>>  # Print metadata informations
>>>>  meta_data() {
>>>> -cat <<END
>>>> +cat <<EOF
>>>>  <?xml version="1.0"?>
>>>>  <!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
>>>>  <resource-agent name="vmwarevm">
>>>> @@ -305,7 +323,7 @@
>>>>  <action name="meta-data" timeout="5" />
>>>>  </actions>
>>>>  </resource-agent>
>>>> -END
>>>> +EOF
>>>>  }
>>>>  
>>>>  # See how we were called
>>>> _______________________________________________
>>>> Linux-HA mailing list
>>>> [email protected]
>>>> http://lists.linux-ha.org/mailman/listinfo/linux-ha
>>>> See also: http://linux-ha.org/ReportingProblems
>>>>     
>>>>         
>>> _______________________________________________
>>> Linux-HA mailing list
>>> [email protected]
>>> http://lists.linux-ha.org/mailman/listinfo/linux-ha
>>> See also: http://linux-ha.org/ReportingProblems
>>>   
>>>       
>> _______________________________________________
>> Linux-HA mailing list
>> [email protected]
>> http://lists.linux-ha.org/mailman/listinfo/linux-ha
>> See also: http://linux-ha.org/ReportingProblems
>>     
> _______________________________________________
> Linux-HA mailing list
> [email protected]
> http://lists.linux-ha.org/mailman/listinfo/linux-ha
> See also: http://linux-ha.org/ReportingProblems
>   
_______________________________________________
Linux-HA mailing list
[email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems

Reply via email to