From df3aa7f438d2192eb4f40ced0e519bbeb5fc2a53 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Fri, 20 May 2011 11:17:47 +0200 Subject: [PATCH] feature #476: vm class to obtain vm attributes --- share/hooks/KVMVLAN.rb | 3 ++- share/hooks/OpenNebulaVLAN.rb | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/share/hooks/KVMVLAN.rb b/share/hooks/KVMVLAN.rb index 13a20b00f3..096f263349 100644 --- a/share/hooks/KVMVLAN.rb +++ b/share/hooks/KVMVLAN.rb @@ -5,7 +5,8 @@ module OpenNebulaVLANKVM def get_info vminfo = Hash.new - vminfo[:dumpxml] = `#{COMMANDS[:virsh]} dumpxml #{@deploy_id}` + deploy_id = @vm['DEPLOY_ID'] + vminfo[:dumpxml] = `#{COMMANDS[:virsh]} dumpxml #{deploy_id} 2>/dev/null` vminfo.each_key{|k| vminfo[k] = nil if vminfo[k].to_s.strip.empty?} vminfo end diff --git a/share/hooks/OpenNebulaVLAN.rb b/share/hooks/OpenNebulaVLAN.rb index 361775bbd1..0822f8cfd5 100644 --- a/share/hooks/OpenNebulaVLAN.rb +++ b/share/hooks/OpenNebulaVLAN.rb @@ -83,12 +83,28 @@ class Nics < Array end end +class VM + def initialize(vm_root) + @vm_root = vm_root + end + + def [](element) + if @vm_root + val = @vm_root.elements[element] + if val.text + return val.text + end + end + nil + end +end class OpenNebulaVLAN attr_reader :vm_info, :hypervisor, :nics def initialize(vm_tpl, hypervisor=nil) @vm_root = REXML::Document.new(vm_tpl).root + @vm = VM.new(@vm_root) @vm_info = Hash.new if !hypervisor @@ -96,8 +112,6 @@ class OpenNebulaVLAN end @hypervisor = hypervisor - @deploy_id = @vm_root.elements['DEPLOY_ID'].text - case hypervisor when "kvm" require 'KVMVLAN'