Hi Tino,
Yes, I'm attaching the ruby file...
Thanks,
Zaina
On Mon, 4 Apr 2011 15:06:02 +0200, Tino Vazquez wrote:
Hi Zaina,
Is that after the "vms.info" line?
Regards,
-Tino
--
Constantino Vázquez Blanco | dsa-research.org/tinova
Virtualization Technology Engineer / Researcher
OpenNebula Toolkit | opennebula.org
On Sat, Apr 2, 2011 at 12:22 PM, Zaina AFOULKI
<zaina.afou...@ensi-bourges.fr> wrote:
Hi Tino,
I changed as you advised and it prints:
<VM_POOL/>
On Fri, 1 Apr 2011 18:06:57 +0200, Tino Vazquez wrote:
Hi,
Everything seems alright, except for the xpath expression returned
nil
object. So please let's try debugging the vms fetched:
---
class OpenNebula::VirtualMachinePool
attr_reader :xml
end
my_file.puts vms.xml
---
Regards,
-Tino
--
Constantino Vázquez Blanco | dsa-research.org/tinova
Virtualization Technology Engineer / Researcher
OpenNebula Toolkit | opennebula.org
On Fri, Apr 1, 2011 at 5:47 PM, Zaina AFOULKI
<zaina.afou...@ensi-bourges.fr> wrote:
Hi Tino,
I added the lines as you asked and I get this in the
/tmp/remove_me.txt
OpenNebula host NilClass
NilClass
$ onehost list -x
<HOST_POOL>
<HOST>
<ID>29</ID>
<NAME>node1</NAME>
<STATE>2</STATE>
<IM_MAD>im_kvm</IM_MAD>
<VM_MAD>vmm_kvm</VM_MAD>
<TM_MAD>tm_nfs</TM_MAD>
<LAST_MON_TIME>1301672703</LAST_MON_TIME>
<CLUSTER>default</CLUSTER>
<TEMPLATE>
<ARCH><![CDATA[x86_64]]></ARCH>
<CPUSPEED><![CDATA[1998]]></CPUSPEED>
<FREECPU><![CDATA[90.6]]></FREECPU>
<FREEMEMORY><![CDATA[770956]]></FREEMEMORY>
<HOSTNAME><![CDATA[node1]]></HOSTNAME>
<HYPERVISOR><![CDATA[kvm]]></HYPERVISOR>
<MODELNAME><![CDATA[Intel(R) Core(TM)2 Duo CPU E6550 @
2.33GHz]]></MODELNAME>
<NETRX><![CDATA[0]]></NETRX>
<NETTX><![CDATA[0]]></NETTX>
<TOTALCPU><![CDATA[200]]></TOTALCPU>
<TOTALMEMORY><![CDATA[2056676]]></TOTALMEMORY>
<USEDCPU><![CDATA[109.4]]></USEDCPU>
<USEDMEMORY><![CDATA[1285720]]></USEDMEMORY>
</TEMPLATE>
<HOST_SHARE>
<HID>29</HID>
<DISK_USAGE>0</DISK_USAGE>
<MEM_USAGE>262144</MEM_USAGE>
<CPU_USAGE>10</CPU_USAGE>
<MAX_DISK>0</MAX_DISK>
<MAX_MEM>2056676</MAX_MEM>
<MAX_CPU>200</MAX_CPU>
<FREE_DISK>0</FREE_DISK>
<FREE_MEM>770956</FREE_MEM>
<FREE_CPU>90</FREE_CPU>
<USED_DISK>0</USED_DISK>
<USED_MEM>1285720</USED_MEM>
<USED_CPU>109</USED_CPU>
<RUNNING_VMS>1</RUNNING_VMS>
</HOST_SHARE>
</HOST>
<HOST>
<ID>31</ID>
<NAME>node2</NAME>
<STATE>4</STATE>
<IM_MAD>im_kvm</IM_MAD>
<VM_MAD>vmm_kvm</VM_MAD>
<TM_MAD>tm_nfs</TM_MAD>
<LAST_MON_TIME>1301672409</LAST_MON_TIME>
<CLUSTER>default</CLUSTER>
<TEMPLATE>
<ARCH><![CDATA[x86_64]]></ARCH>
<CPUSPEED><![CDATA[1998]]></CPUSPEED>
<FREECPU><![CDATA[200.0]]></FREECPU>
<FREEMEMORY><![CDATA[1800824]]></FREEMEMORY>
<HOSTNAME><![CDATA[node2]]></HOSTNAME>
<HYPERVISOR><![CDATA[kvm]]></HYPERVISOR>
<MODELNAME><![CDATA[Intel(R) Core(TM)2 Duo CPU E6550 @
2.33GHz]]></MODELNAME>
<NETRX><![CDATA[0]]></NETRX>
<NETTX><![CDATA[0]]></NETTX>
<TOTALCPU><![CDATA[200]]></TOTALCPU>
<TOTALMEMORY><![CDATA[2056676]]></TOTALMEMORY>
<USEDCPU><![CDATA[0.0]]></USEDCPU>
<USEDMEMORY><![CDATA[255852]]></USEDMEMORY>
</TEMPLATE>
<HOST_SHARE>
<HID>31</HID>
<DISK_USAGE>0</DISK_USAGE>
<MEM_USAGE>0</MEM_USAGE>
<CPU_USAGE>0</CPU_USAGE>
<MAX_DISK>0</MAX_DISK>
<MAX_MEM>2056676</MAX_MEM>
<MAX_CPU>200</MAX_CPU>
<FREE_DISK>0</FREE_DISK>
<FREE_MEM>1800824</FREE_MEM>
<FREE_CPU>200</FREE_CPU>
<USED_DISK>0</USED_DISK>
<USED_MEM>255852</USED_MEM>
<USED_CPU>0</USED_CPU>
<RUNNING_VMS>0</RUNNING_VMS>
</HOST_SHARE>
</HOST>
</HOST_POOL>
$ onevm list -x
<VM_POOL>
<VM>
<ID>3056</ID>
<UID>2</UID>
<USERNAME>sfr</USERNAME>
<NAME>sfr-ar</NAME>
<LAST_POLL>1301672685</LAST_POLL>
<STATE>3</STATE>
<LCM_STATE>3</LCM_STATE>
<STIME>1301672613</STIME>
<ETIME>0</ETIME>
<DEPLOY_ID>one-3056</DEPLOY_ID>
<MEMORY>0</MEMORY>
<CPU>0</CPU>
<NET_TX>0</NET_TX>
<NET_RX>0</NET_RX>
<LAST_SEQ>0</LAST_SEQ>
<TEMPLATE>
<CPU><![CDATA[0.1]]></CPU>
<DISK>
<DISK_ID><![CDATA[0]]></DISK_ID>
<SOURCE><![CDATA[/home/oneadmin/vmu.img]]></SOURCE>
<TARGET><![CDATA[sda]]></TARGET>
</DISK>
<FEATURES>
<ACPI><![CDATA[yes]]></ACPI>
</FEATURES>
<HAIZEA>
<DURATION><![CDATA[00:07:00]]></DURATION>
<PREEMPTIBLE><![CDATA[no]]></PREEMPTIBLE>
<START><![CDATA[+00:00:50]]></START>
</HAIZEA>
<MEMORY><![CDATA[256]]></MEMORY>
<NAME><![CDATA[sfr-ar]]></NAME>
<NIC>
<BRIDGE><![CDATA[br0]]></BRIDGE>
<IP><![CDATA[172.30.8.12]]></IP>
<MAC><![CDATA[02:00:ac:1e:08:0c]]></MAC>
<NETWORK><![CDATA[orange_public]]></NETWORK>
<NETWORK_ID><![CDATA[20]]></NETWORK_ID>
</NIC>
<OS>
<BOOT><![CDATA[hd]]></BOOT>
<ROOT><![CDATA[sda]]></ROOT>
</OS>
<RAW>
<DATA><![CDATA[<devices><serial type="pty"><source
path="/dev/pts/5"/><target port="0"/></serial><console type="pty"
tty="/dev/pts/5"><source path="/dev/pts/5"/><target
port="0"/></console><graphics type="vnc" port="5901"
autoport="yes"/></devices>]]></DATA>
<TYPE><![CDATA[kvm]]></TYPE>
</RAW>
<VMID><![CDATA[3056]]></VMID>
</TEMPLATE>
<HISTORY>
<SEQ>0</SEQ>
<HOSTNAME>node1</HOSTNAME>
<HID>29</HID>
<STIME>1301672663</STIME>
<ETIME>0</ETIME>
<PSTIME>1301672663</PSTIME>
<PETIME>1301672665</PETIME>
<RSTIME>1301672665</RSTIME>
<RETIME>0</RETIME>
<ESTIME>0</ESTIME>
<EETIME>0</EETIME>
<REASON>0</REASON>
</HISTORY>
</VM>
<VM>
<ID>3057</ID>
<UID>2</UID>
<USERNAME>sfr</USERNAME>
<NAME>sfr-ar</NAME>
<LAST_POLL>1301672685</LAST_POLL>
<STATE>3</STATE>
<LCM_STATE>3</LCM_STATE>
<STIME>1301672614</STIME>
<ETIME>0</ETIME>
<DEPLOY_ID>one-3057</DEPLOY_ID>
<MEMORY>0</MEMORY>
<CPU>0</CPU>
<NET_TX>0</NET_TX>
<NET_RX>0</NET_RX>
<LAST_SEQ>0</LAST_SEQ>
<TEMPLATE>
<CPU><![CDATA[0.1]]></CPU>
<DISK>
<DISK_ID><![CDATA[0]]></DISK_ID>
<SOURCE><![CDATA[/home/oneadmin/vmu.img]]></SOURCE>
<TARGET><![CDATA[sda]]></TARGET>
</DISK>
<FEATURES>
<ACPI><![CDATA[yes]]></ACPI>
</FEATURES>
<HAIZEA>
<DURATION><![CDATA[00:07:00]]></DURATION>
<PREEMPTIBLE><![CDATA[no]]></PREEMPTIBLE>
<START><![CDATA[+00:00:50]]></START>
</HAIZEA>
<MEMORY><![CDATA[256]]></MEMORY>
<NAME><![CDATA[sfr-ar]]></NAME>
<NIC>
<BRIDGE><![CDATA[br0]]></BRIDGE>
<IP><![CDATA[172.30.8.10]]></IP>
<MAC><![CDATA[02:00:ac:1e:08:0a]]></MAC>
<NETWORK><![CDATA[orange_public]]></NETWORK>
<NETWORK_ID><![CDATA[20]]></NETWORK_ID>
</NIC>
<OS>
<BOOT><![CDATA[hd]]></BOOT>
<ROOT><![CDATA[sda]]></ROOT>
</OS>
<RAW>
<DATA><![CDATA[<devices><serial type="pty"><source
path="/dev/pts/5"/><target port="0"/></serial><console type="pty"
tty="/dev/pts/5"><source path="/dev/pts/5"/><target
port="0"/></console><graphics type="vnc" port="5901"
autoport="yes"/></devices>]]></DATA>
<TYPE><![CDATA[kvm]]></TYPE>
</RAW>
<VMID><![CDATA[3057]]></VMID>
</TEMPLATE>
<HISTORY>
<SEQ>0</SEQ>
<HOSTNAME>node2</HOSTNAME>
<HID>31</HID>
<STIME>1301672664</STIME>
<ETIME>0</ETIME>
<PSTIME>1301672664</PSTIME>
<PETIME>1301672684</PETIME>
<RSTIME>1301672684</RSTIME>
<RETIME>0</RETIME>
<ESTIME>0</ESTIME>
<EETIME>0</EETIME>
<REASON>0</REASON>
</HISTORY>
</VM>
</VM_POOL>
On Fri, 1 Apr 2011 17:31:44 +0200, Tino Vazquez wrote:
Hi,
Please try the following:
my_file.puts "OpenNebula host #{vm_ids_array.class}"
my_file.puts vm_ids_array.class
Also, please send the output of
$ onehost list -x
$ onevm list -x
Regards,
-Tino
--
Constantino Vázquez Blanco | dsa-research.org/tinova
Virtualization Technology Engineer / Researcher
OpenNebula Toolkit | opennebula.org
On Fri, Apr 1, 2011 at 5:23 PM, Zaina AFOULKI
<zaina.afou...@ensi-bourges.fr> wrote:
Hi Tino,
I added this to the ruby script (I'm new to Ruby, so I'm not
sure it's
correct):
my_file.puts "OpenNebula host #{vm_ids_array.class}"
for item in 0...vm_ids_array.length
my_file.puts " #{vm_ids_array[item]}";
end
$cat /tmp/remove_me.txt
OpenNebula host has failed 31
NilClass
oned.log:
Fri Apr 1 17:16:36 2011 [HKM][D]: Message received: LOG - 31
Command
execution fail: /home/oneadmin/one/share/hooks/host_error.rb 31
-r y
Fri Apr 1 17:16:36 2011 [HKM][D]: Message received: LOG - 31
STDERR
follows.
Fri Apr 1 17:16:36 2011 [HKM][D]: Message received: LOG - 31
/home/oneadmin/one/share/hooks/host_error.rb:81: undefined
method
`length'
for nil:NilClass (NoMethodError)
Thanks for your help,
--
Zaina
On Fri, 1 Apr 2011 12:31:21 +0100, Tino Vazquez wrote:
Hi Zaina,
Could you please print out also the content of "vm_ids_array"?
I am
afraid the xpath expression may not be doing its job.
Regards,
-Tino
--
Constantino Vázquez Blanco, MSc
OpenNebula Major Contributor
www.OpenNebula.org | @tinova79
On Fri, Apr 1, 2011 at 8:57 AM, Zaina AFOULKI
<zaina.afou...@ensi-bourges.fr> wrote:
Hi,
I checked the ruby script that's called and it seems that the
array
containing the list of VMs is empty
vm_ids_array =
vms.retrieve_elements("/VM_POOL/VM[STATE=3]/HISTORY[HOSTNAME=\"#{host_name}\"]/../ID")
I tried printing something to a tmp file to make sure that the
script
gets
the right host id.
my_file = File.new("/tmp/remove_me.txt", "w")
my_file.puts "OpenNebula host has failed #{ARGV[0]}"
The hostname and host_id are correctly detected by the script.
Thank you for any hints on how to fix this,
--
Zaina
On Thu, 31 Mar 2011 16:36:22 +0200, Zaina AFOULKI wrote:
I just checked back the oned.log and it seems that the hook
is
executed
[HKM][D]: Message received: EXECUTE SUCCESS 31 disable
However the VMs aren't re-submitted as expected ?
Thanks,
--
Zaina
On Thu, 31 Mar 2011 16:20:27 +0200, Zaina AFOULKI wrote:
Hi,
I'm having some trouble getting the HOST_HOOKS to work:
I added this to the configuration file and restarted oned.
HOST_HOOK = [
name = "disable",
on = "DISABLE",
command = "host_error.rb",
arguments = "$HID -r y",
remote = "no" ]
However when I disable a host using "onehost disable" the
VMs
aren't
re-submitted.
The oned.log doesn't indicate that the hook has been
triggered.
I'm using OpenNebula 2.2 and the script host_error.rb is
indeed
located in my $ONE_LOCATION/share/hooks/
What am I doing wrong? Thanks
_______________________________________________
Users mailing list
Users@lists.opennebula.org
http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
--
Zaina AFOULKI
Étudiante à l'Ecole Nationale Supérieure d'Ingénieurs de
Bourges.
1ère année Sécurité et Technologies Informatiques
_______________________________________________
Users mailing list
Users@lists.opennebula.org
http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
--
Zaina AFOULKI
Étudiante à l'Ecole Nationale Supérieure d'Ingénieurs de Bourges.
1ère année Sécurité et Technologies Informatiques
_______________________________________________
Users mailing list
Users@lists.opennebula.org
http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
--
Zaina
_______________________________________________
Users mailing list
Users@lists.opennebula.org
http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
--
Zaina
#!/usr/bin/env ruby
# -------------------------------------------------------------------------- #
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
####################################################
# Script to implement host failure tolerance
# It can be set to
# -r resubmit VMs running in the host
# -d delete VMs running in the host
####################################################
my_file = File.new("/tmp/remove_me.txt", "w")
my_file.puts "OpenNebula host has failed #{ARGV[0]}"
ONE_LOCATION=ENV["ONE_LOCATION"]
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby"
VMDIR="/var/lib/one"
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby"
VMDIR=ONE_LOCATION+"/var"
end
$: << RUBY_LIB_LOCATION
require 'OpenNebula'
include OpenNebula
if !(host_id=ARGV[0])
exit -1
end
if !(mode=ARGV[1]) # By default, resubmit VMs
mode = "-r"
end
if !(force=ARGV[2]) # By default, don't resubmit/finalize suspended VMs
force = "n"
end
begin
client = Client.new()
rescue Exception => e
puts "Error: #{e}"
exit -1
end
# Retrieve hostname
host = OpenNebula::Host.new_with_id(host_id, client)
exit -1 if OpenNebula.is_error?(host)
host.info
host_name = host.name
# Loop through all vms
vms = VirtualMachinePool.new(client)
exit -1 if OpenNebula.is_error?(vms)
vms.info
class OpenNebula::VirtualMachinePool
attr_reader :xml
end
my_file.puts vms.xml
my_file.puts "OpenNebula vms info"
vm_ids_array =
vms.retrieve_elements("/VM_POOL/VM[STATE=3]/HISTORY[HOSTNAME=\"#{host_name}\"]/../ID")
my_file.puts "OpenNebula host #{vm_ids_array.class}"
my_file.puts vm_ids_array.class
if vm_ids_array
my_file.puts "OpenNebula vms array if"
vm_ids_array.each do |vm_id|
my_file.puts "OpenNebula vm_id 1"
vm=OpenNebula::VirtualMachine.new_with_id(vm_id, client)
vm.info
if mode == "-r"
vm.resubmit
elsif mode == "-d"
vm.finalize
end
end
end
if force == "y"
vm_ids_array =
vms.retrieve_elements("/VM_POOL/VM[STATE=5]/HISTORY[HOSTNAME=\"#{host_name}\"]/../ID")
if vm_ids_array
vm_ids_array.each do |vm_id|
my_file.puts "OpenNebula vm_id 1"
vm=OpenNebula::VirtualMachine.new_with_id(vm_id, client)
vm.info
if mode == "-r"
vm.resubmit
elsif mode == "-d"
vm.finalize
end
end
end
end
_______________________________________________
Users mailing list
Users@lists.opennebula.org
http://lists.opennebula.org/listinfo.cgi/users-opennebula.org