From 6d3d8a881cf4028d633e5a0f30b2204289e27445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tino=20V=C3=A1zquez?= Date: Fri, 3 Sep 2010 18:17:46 +0200 Subject: [PATCH 001/102] Fix for VirtualNetwork authentication bug --- src/rm/RequestManagerVirtualNetworkDelete.cc | 81 ++++++++++++------- src/rm/RequestManagerVirtualNetworkPublish.cc | 46 +++++++---- 2 files changed, 82 insertions(+), 45 deletions(-) diff --git a/src/rm/RequestManagerVirtualNetworkDelete.cc b/src/rm/RequestManagerVirtualNetworkDelete.cc index d365f36ca3..4a44d445c2 100644 --- a/src/rm/RequestManagerVirtualNetworkDelete.cc +++ b/src/rm/RequestManagerVirtualNetworkDelete.cc @@ -25,7 +25,7 @@ void RequestManager::VirtualNetworkDelete::execute( xmlrpc_c::paramList const& paramList, xmlrpc_c::value * const retval) -{ +{ string session; string name; @@ -33,10 +33,13 @@ void RequestManager::VirtualNetworkDelete::execute( int uid; VirtualNetwork * vn; - - int rc; + + int network_owner; + bool is_public; + + int rc; ostringstream oss; - + const string method_name = "VirtualNetworkDelete"; /* -- RPC specific vars -- */ @@ -48,57 +51,75 @@ void RequestManager::VirtualNetworkDelete::execute( // Get the parameters & host session = xmlrpc_c::value_string(paramList.getString(0)); nid = xmlrpc_c::value_int (paramList.getInt (1)); - - // Only oneadmin or the VN owner can perform operations upon the VN + + // First, we need to authenticate the user rc = VirtualNetworkDelete::upool->authenticate(session); - - if ( rc == -1 ) - { - goto error_authenticate; + + if ( rc == -1 ) + { + goto error_authenticate; } - + + // Retrieve VN from the pool + vn = vnpool->get(nid,true); + + if ( vn == 0 ) + { + goto error_vn_get; + } + + network_owner = vn->get_uid(); + is_public = vn->isPublic(); + + vn->unlock(); + + //Authorize the operation if ( rc != 0 ) // rc == 0 means oneadmin { AuthRequest ar(rc); - ar.add_auth(AuthRequest::NET,nid,AuthRequest::DELETE,0,false); + ar.add_auth(AuthRequest::NET, + nid, + AuthRequest::DELETE, + network_owner, + is_public); if (UserPool::authorize(ar) == -1) { goto error_authorize; } } - - // Retrieve VN from the pool - vn = vnpool->get(nid,true); - - if ( vn == 0 ) - { - goto error_vn_get; + + // Retrieve VN from the pool + vn = vnpool->get(nid,true); + + if ( vn == 0 ) + { + goto error_vn_get; } uid = vn->get_uid(); - + rc = vnpool->drop(vn); vn->unlock(); - - // All nice, return the host info to the client + + // All nice, return the host info to the client arrayData.push_back(xmlrpc_c::value_boolean( rc == 0 )); // SUCCESS arrayresult = new xmlrpc_c::value_array(arrayData); - + // Copy arrayresult into retval mem space *retval = *arrayresult; // and get rid of the original delete arrayresult; - + return; error_authenticate: oss.str(authenticate_error(method_name)); goto error_common; - + error_authorize: oss.str(authorization_error(method_name, "DELETE", "NET", rc, nid)); goto error_common; @@ -106,17 +127,17 @@ error_authorize: error_vn_get: oss.str(get_error(method_name, "NET", nid)); goto error_common; - + error_common: NebulaLog::log ("ReM",Log::ERROR,oss); - + arrayData.push_back(xmlrpc_c::value_boolean(false)); // FAILURE arrayData.push_back(xmlrpc_c::value_string(oss.str())); - + xmlrpc_c::value_array arrayresult_error(arrayData); - + *retval = arrayresult_error; - + return; } diff --git a/src/rm/RequestManagerVirtualNetworkPublish.cc b/src/rm/RequestManagerVirtualNetworkPublish.cc index c8d0befb6e..8c3011f959 100644 --- a/src/rm/RequestManagerVirtualNetworkPublish.cc +++ b/src/rm/RequestManagerVirtualNetworkPublish.cc @@ -31,11 +31,14 @@ void RequestManager::VirtualNetworkPublish::execute( string session; int nid; - bool publish_flag; + bool publish_flag; int uid; - + VirtualNetwork * vn; + int network_owner; + bool is_public; + ostringstream oss; const string method_name = "VirtualNetworkPublish"; @@ -57,15 +60,20 @@ void RequestManager::VirtualNetworkPublish::execute( { goto error_authenticate; } - + // Get virtual network from the VirtualNetworkPool - vn = VirtualNetworkPublish::vnpool->get(nid,true); - - if ( vn == 0 ) - { - goto error_vn_get; + vn = VirtualNetworkPublish::vnpool->get(nid,true); + + if ( vn == 0 ) + { + goto error_vn_get; } - + + network_owner = vn->get_uid(); + is_public = vn->isPublic(); + + vn->unlock(); + //Authorize the operation if ( uid != 0 ) // uid == 0 means oneadmin { @@ -74,8 +82,8 @@ void RequestManager::VirtualNetworkPublish::execute( ar.add_auth(AuthRequest::NET, nid, AuthRequest::MANAGE, - 0, - vn->isPublic()); + network_owner, + is_public); if (UserPool::authorize(ar) == -1) { @@ -83,10 +91,18 @@ void RequestManager::VirtualNetworkPublish::execute( } } + // Get virtual network from the VirtualNetworkPool + vn = VirtualNetworkPublish::vnpool->get(nid,true); + + if ( vn == 0 ) + { + goto error_vn_get; + } + vn->publish(publish_flag); - + VirtualNetworkPublish::vnpool->update(vn); - + vn->unlock(); arrayData.push_back(xmlrpc_c::value_boolean(true)); @@ -103,11 +119,11 @@ void RequestManager::VirtualNetworkPublish::execute( error_authenticate: oss.str(authenticate_error(method_name)); goto error_common; - + error_vn_get: oss.str(get_error(method_name, "NET", nid)); goto error_common; - + error_authorize: oss.str(authorization_error(method_name, "MANAGE", "NET", uid, nid)); vn->unlock(); From a0b3eec6ee702520f064e87461297c4cd0a19809 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Fri, 3 Sep 2010 18:46:23 +0200 Subject: [PATCH 002/102] Bumped version to 1.9.85 --- include/Nebula.h | 2 +- src/cli/command_parse.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/Nebula.h b/include/Nebula.h index baf4b31159..c0b5850af1 100644 --- a/include/Nebula.h +++ b/include/Nebula.h @@ -203,7 +203,7 @@ public: static string version() { - return "OpenNebula 1.9.80"; + return "OpenNebula 1.9.85"; }; void start(); diff --git a/src/cli/command_parse.rb b/src/cli/command_parse.rb index 67bc4c1d91..b43c865b6d 100644 --- a/src/cli/command_parse.rb +++ b/src/cli/command_parse.rb @@ -31,7 +31,7 @@ Options: EOT ONE_VERSION=<<-EOT -OpenNebula 1.9.80 +OpenNebula 1.9.85 Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) EOT From 60c02d5de22b00b56aff4dd28b0a33aa07c03b45 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Sat, 4 Sep 2010 01:29:03 +0200 Subject: [PATCH 003/102] fixed bug in IM polling --- src/im_mad/remotes/kvm.d/kvm.rb | 25 +++++++++++++++---------- src/im_mad/remotes/xen.d/xen.rb | 25 +++++++++++++++---------- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/im_mad/remotes/kvm.d/kvm.rb b/src/im_mad/remotes/kvm.d/kvm.rb index 0b7c664d7b..3de95e2733 100755 --- a/src/im_mad/remotes/kvm.d/kvm.rb +++ b/src/im_mad/remotes/kvm.d/kvm.rb @@ -16,6 +16,11 @@ # limitations under the License. # #--------------------------------------------------------------------------- # +def print_info(name, value) + value = "0" if value.nil? or value.to_s.empty? + puts "#{name}=#{value}" +end + ###### # First, get all the posible info out of virsh # TODO : use virsh freecell when available @@ -78,18 +83,18 @@ net_text.split(/\n/).each{|line| end } -puts "HYPERVISOR=kvm" +print_info("HYPERVISOR","kvm") -puts "TOTALCPU=#{$total_cpu}" -puts "CPUSPEED=#{$cpu_speed}" +print_info("TOTALCPU",$total_cpu) +print_info("CPUSPEED",$cpu_speed) -puts "TOTALMEMORY=#{$total_memory}" -puts "USEDMEMORY=#{$used_memory}" -puts "FREEMEMORY=#{$free_memory}" +print_info("TOTALMEMORY",$total_memory) +print_info("USEDMEMORY",$used_memory) +print_info("FREEMEMORY",$free_memory) -puts "FREECPU=#{$free_cpu}" -puts "USEDCPU=#{$used_cpu}" +print_info("FREECPU",$free_cpu) +print_info("USEDCPU",$used_cpu) -puts "NETRX=#{$netrx}" -puts "NETTX=#{$nettx}" +print_info("NETRX",$netrx) +print_info("NETTX",$nettx) diff --git a/src/im_mad/remotes/xen.d/xen.rb b/src/im_mad/remotes/xen.d/xen.rb index 7c35f4d870..eec3a66ce8 100755 --- a/src/im_mad/remotes/xen.d/xen.rb +++ b/src/im_mad/remotes/xen.d/xen.rb @@ -21,6 +21,11 @@ require "pp" XENTOP_PATH="/usr/sbin/xentop" XM_PATH="/usr/sbin/xm" +def print_info(name, value) + value = "0" if value.nil? or value.to_s.empty? + puts "#{name}=#{value}" +end + xentop_text=`sudo #{XENTOP_PATH} -bi2` xm_text=`sudo #{XM_PATH} info` @@ -85,13 +90,13 @@ domains_info.each {|line| # WRITE INFO -puts "HYPERVISOR=xen" -puts "TOTALCPU=" + cpu_info[:total].round.to_s -puts "CPUSPEED=" + cpu_info[:speed] -puts "TOTALMEMORY=" + memory_info[:total].to_s -puts "FREEMEMORY=" + memory_info[:free].to_s -puts "USEDMEMORY=" + memory_info[:used].to_s -puts "USEDCPU=" + vm_info[:cpu].round.to_s -puts "FREECPU=" + (cpu_info[:total]-vm_info[:cpu]).round.to_s -puts "NETTX=" + vm_info[:nettx].to_s -puts "NETRX=" + vm_info[:netrx].to_s +print_info("HYPERVISOR","xen") +print_info("TOTALCPU",cpu_info[:total].round.to_s) +print_info("CPUSPEED",cpu_info[:speed]) +print_info("TOTALMEMORY",memory_info[:total].to_s) +print_info("FREEMEMORY",memory_info[:free].to_s) +print_info("USEDMEMORY",memory_info[:used].to_s) +print_info("USEDCPU",vm_info[:cpu].round.to_s) +print_info("FREECPU",(cpu_info[:total]-vm_info[:cpu]).round.to_s) +print_info("NETTX",vm_info[:nettx].to_s) +print_info("NETRX",vm_info[:netrx].to_s) From 05032061c9d4676ed483c11183f07d2a35e4eb44 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Wed, 8 Sep 2010 13:23:22 +0200 Subject: [PATCH 004/102] fixes wrong STATUS varible in VM polling --- src/vmm_mad/remotes/kvm/poll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vmm_mad/remotes/kvm/poll b/src/vmm_mad/remotes/kvm/poll index 33ec0a44f0..5e004776bf 100755 --- a/src/vmm_mad/remotes/kvm/poll +++ b/src/vmm_mad/remotes/kvm/poll @@ -39,7 +39,7 @@ $1=="State" { else if(vstat=="crashed") state="c"; else state="u"; - print "STATUS=" state + print "STATE=" state } ' From 3e8db30a9dcd56ef14892f2a606b3fd6673689e5 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Wed, 8 Sep 2010 13:27:00 +0200 Subject: [PATCH 005/102] feature #336: Preserve SOURCE if present in the template file --- src/image/Image.cc | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/image/Image.cc b/src/image/Image.cc index 5a19ed6b24..2a8e837254 100644 --- a/src/image/Image.cc +++ b/src/image/Image.cc @@ -156,9 +156,6 @@ int Image::insert(SqlDB *db, string& error_str) string persistent_attr; string dev_prefix; - ostringstream tmp_hashstream; - ostringstream tmp_sourcestream; - // --------------------------------------------------------------------- // Check default image attributes // --------------------------------------------------------------------- @@ -230,13 +227,20 @@ int Image::insert(SqlDB *db, string& error_str) // ------------ SOURCE (path to store the image)-------------------- - tmp_hashstream << uid << ":" << name; + get_template_attribute("SOURCE", source); - tmp_sourcestream << ImagePool::source_prefix() << "/"; - tmp_sourcestream << sha1_digest(tmp_hashstream.str()); + if (source.empty()) + { + ostringstream tmp_hashstream; + ostringstream tmp_sourcestream; - source = tmp_sourcestream.str(); + tmp_hashstream << uid << ":" << name; + tmp_sourcestream << ImagePool::source_prefix() << "/"; + tmp_sourcestream << sha1_digest(tmp_hashstream.str()); + + source = tmp_sourcestream.str(); + } state = DISABLED; From d5810458f51eb570c183cf72f8063c2fad0f7e13 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Wed, 8 Sep 2010 17:56:52 +0200 Subject: [PATCH 006/102] Added error logging to im mad --- src/im_mad/im_ssh/one_im_ssh.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/im_mad/im_ssh/one_im_ssh.rb b/src/im_mad/im_ssh/one_im_ssh.rb index 243df86f1a..b6d00485a5 100755 --- a/src/im_mad/im_ssh/one_im_ssh.rb +++ b/src/im_mad/im_ssh/one_im_ssh.rb @@ -57,18 +57,21 @@ class InformationManager < OpenNebulaDriver # Execute the run_probes in the remote host #--------------------------------------------------------------------------- def action_monitor(number, host, do_update) + log_lambda=lambda do |message| + log(number, message) + end + if do_update == "1" # Use SCP to sync: sync_cmd = "scp -r #{REMOTES_LOCATION}/. #{host}:#{@remote_dir}" # Use rsync to sync: # sync_cmd = "rsync -Laz #{REMOTES_LOCATION} #{host}:#{@remote_dir}" - LocalCommand.run(sync_cmd) - else + LocalCommand.run(sync_cmd, log_lambda) end - cmd = SSHCommand.run("#{@remote_dir}/im/run_probes #{@hypervisor}", - host) + cmd = SSHCommand.run("#{@remote_dir}/im/run_probes #{@hypervisor}", + host, log_lambda) if cmd.code == 0 send_message("MONITOR", RESULT[:success], number, cmd.stdout) From 61b7cf367be118aef2ed2658dd31886716797aa3 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Wed, 8 Sep 2010 17:57:17 +0200 Subject: [PATCH 007/102] Stop im probes execution on error --- src/im_mad/remotes/kvm.d/kvm.rb | 4 ++++ src/im_mad/remotes/run_probes | 19 +++++++++++++++++++ src/im_mad/remotes/xen.d/xen.rb | 3 +++ 3 files changed, 26 insertions(+) diff --git a/src/im_mad/remotes/kvm.d/kvm.rb b/src/im_mad/remotes/kvm.d/kvm.rb index 3de95e2733..bc88f58b00 100755 --- a/src/im_mad/remotes/kvm.d/kvm.rb +++ b/src/im_mad/remotes/kvm.d/kvm.rb @@ -27,6 +27,7 @@ end ###### nodeinfo_text = `virsh -c qemu:///system nodeinfo` +exit(-1) if $?!=0 nodeinfo_text.split(/\n/).each{|line| if line.match('^CPU\(s\)') @@ -45,6 +46,8 @@ nodeinfo_text.split(/\n/).each{|line| NETINTERFACE = "eth1" top_text=`top -bin2` +exit(-1) if $?!=0 + top_text.gsub!(/^top.*^top.*?$/m, "") # Strip first top output top_text.split(/\n/).each{|line| @@ -73,6 +76,7 @@ top_text.split(/\n/).each{|line| $free_memory=`free -k|grep "buffers\/cache"|awk '{print $4}'` net_text=`cat /proc/net/dev` +exit(-1) if $?!=0 net_text.split(/\n/).each{|line| if line.match("^ *#{NETINTERFACE}") diff --git a/src/im_mad/remotes/run_probes b/src/im_mad/remotes/run_probes index f92bcd6564..0112759db1 100755 --- a/src/im_mad/remotes/run_probes +++ b/src/im_mad/remotes/run_probes @@ -29,6 +29,11 @@ function run_dir { for i in `ls *`;do if [ -x "$i" ]; then ./$i + EXIT_CODE=$? + if [ "x$EXIT_CODE" != "x0" ]; then + echo "Error executing $i" 1>&2 + exit $EXIT_CODE + fi fi done ) @@ -36,9 +41,23 @@ function run_dir { data=$( run_dir 'common.d' + + EXIT_CODE=$? + + if [ "x$EXIT_CODE" != "x0" ]; then + exit $EXIT_CODE + fi + if [ -d "$HYPERVISOR_DIR" ]; then run_dir $HYPERVISOR_DIR fi ) +EXIT_CODE=$? + echo $data | tr '\n' ' ' + +if [ "x$EXIT_CODE" != "x0" ]; then + exit $EXIT_CODE +fi + diff --git a/src/im_mad/remotes/xen.d/xen.rb b/src/im_mad/remotes/xen.d/xen.rb index eec3a66ce8..e03283752b 100755 --- a/src/im_mad/remotes/xen.d/xen.rb +++ b/src/im_mad/remotes/xen.d/xen.rb @@ -27,7 +27,10 @@ def print_info(name, value) end xentop_text=`sudo #{XENTOP_PATH} -bi2` +exit(-1) if $?!=0 + xm_text=`sudo #{XM_PATH} info` +exit(-1) if $?!=0 xentop_text.gsub!(/^xentop.*^xentop.*?$/m, "") # Strip first top output xentop_text.gsub!("no limit", "no_limit") From c9e9b6b323833aaabd19eae692b2ed0bd4995887 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Wed, 8 Sep 2010 19:22:09 +0200 Subject: [PATCH 008/102] bug #342: added addattr alias to update in oneimage --- src/cli/oneimage | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cli/oneimage b/src/cli/oneimage index 878f3e4a3d..5e2f271811 100755 --- a/src/cli/oneimage +++ b/src/cli/oneimage @@ -206,6 +206,9 @@ Commands: template is a file name where the Image description is located +* addattr (Add a new image attribute) + oneimage addattr + * update (Modifies an image attribute) oneimage update @@ -333,7 +336,7 @@ when "register", "create", "add" end -when "update" +when "update", "addattr" check_parameters("update", 3) image_id=get_image_id(ARGV[0]) From d0933d83ec4eb8c9c9c6589c6be240721b3b5dd0 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Wed, 8 Sep 2010 19:52:03 +0200 Subject: [PATCH 009/102] bug #341: bug in api calling exit instead of returning error to the caller --- src/oca/ruby/OpenNebula/ImageRepository.rb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/oca/ruby/OpenNebula/ImageRepository.rb b/src/oca/ruby/OpenNebula/ImageRepository.rb index f80638cc83..20f0d224a0 100644 --- a/src/oca/ruby/OpenNebula/ImageRepository.rb +++ b/src/oca/ruby/OpenNebula/ImageRepository.rb @@ -7,15 +7,14 @@ module OpenNebula def create(image, template, copy=true) if image.nil? error_msg = "Image could not be found, aborting." - result = OpenNebula::Error.new(error_msg) + return OpenNebula::Error.new(error_msg) end # ------ Allocate the Image ------ result = image.allocate(template) if OpenNebula.is_error?(result) - puts result.message - exit -1 + return result end @@ -29,7 +28,7 @@ module OpenNebula if !File.exists?(file_path) error_msg = "Image file could not be found, aborting." - result = OpenNebula::Error.new(error_msg) + return OpenNebula::Error.new(error_msg) end result = copy(file_path, image['SOURCE']) @@ -61,7 +60,7 @@ module OpenNebula def delete(image) if image.nil? error_msg = "Image could not be found, aborting." - result = OpenNebula::Error.new(error_msg) + return OpenNebula::Error.new(error_msg) end result = image.info @@ -82,7 +81,7 @@ module OpenNebula def update_source(image, source) if image.nil? error_msg = "Image could not be found, aborting." - result = OpenNebula::Error.new(error_msg) + return OpenNebula::Error.new(error_msg) end result = image.info From 0101c6b0a3c0d06862943f2b636f800b4ab8c5de Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Wed, 8 Sep 2010 22:37:59 +0200 Subject: [PATCH 010/102] Bug #340: Fixes image lock when publish fails --- src/rm/RequestManagerImagePublish.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rm/RequestManagerImagePublish.cc b/src/rm/RequestManagerImagePublish.cc index 8c48677097..1e5850ec5e 100644 --- a/src/rm/RequestManagerImagePublish.cc +++ b/src/rm/RequestManagerImagePublish.cc @@ -105,6 +105,8 @@ void RequestManager::ImagePublish::execute( if (!response) { + image->unlock(); + goto error_publish; } From aff16e50512f30a0af94f8272fef995e0147f2ee Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Thu, 9 Sep 2010 16:22:04 +0200 Subject: [PATCH 011/102] bug #341: raise exceptions instead of exiting in OpenNebula::Client --- src/oca/ruby/OpenNebula.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/oca/ruby/OpenNebula.rb b/src/oca/ruby/OpenNebula.rb index 93b82525a5..6affea51ea 100644 --- a/src/oca/ruby/OpenNebula.rb +++ b/src/oca/ruby/OpenNebula.rb @@ -74,13 +74,11 @@ module OpenNebula elsif File.file?(ENV["HOME"]+"/.one/one_auth") one_secret=File.read(ENV["HOME"]+"/.one/one_auth") else - puts "ONE_AUTH file not present" - exit -1 + raise "ONE_AUTH file not present" end if !one_secret.match(".+:.+") - puts "Authorization file malformed" - exit -1 + raise "Authorization file malformed" end From 311eefcb35e2f201836bf91f370cc506ebf73e5e Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Thu, 9 Sep 2010 16:22:57 +0200 Subject: [PATCH 012/102] bug #341: catch exceptions creating OpenNebula::Client --- share/hooks/image.rb | 8 +++++++- src/authm_mad/one_auth_mad.rb | 14 ++++++++++++-- src/authm_mad/oneauth | 8 +++++++- src/cloud/ec2/lib/econe-server.rb | 9 +++++++-- src/cloud/occi/lib/occi-server.rb | 7 ++++++- 5 files changed, 39 insertions(+), 7 deletions(-) diff --git a/share/hooks/image.rb b/share/hooks/image.rb index 8709a7d65f..7625810312 100755 --- a/share/hooks/image.rb +++ b/share/hooks/image.rb @@ -36,7 +36,13 @@ if !(vm_id=ARGV[0]) end -client = Client.new() +begin + client = Client.new() +rescue Exception => e + puts "Error: #{e}" + exit(-1) +end + img_repo = ImageRepository.new vm = VirtualMachine.new( diff --git a/src/authm_mad/one_auth_mad.rb b/src/authm_mad/one_auth_mad.rb index 6832e7cafc..0a36f4b1cc 100755 --- a/src/authm_mad/one_auth_mad.rb +++ b/src/authm_mad/one_auth_mad.rb @@ -84,7 +84,12 @@ class AuthorizationManager < OpenNebulaDriver end def action_authorize(request_id, user_id, *tokens) - auth=@permissions.auth(user_id, tokens.flatten) + begin + auth=@permissions.auth(user_id, tokens.flatten) + rescue Exception => e + auth="Error: #{e}" + end + if auth==true send_message('AUTHORIZE', RESULT[:success], request_id, 'success') @@ -95,7 +100,12 @@ class AuthorizationManager < OpenNebulaDriver end end +begin + am=AuthorizationManager.new +rescue Exception => e + puts "Error: #{e}" + exit(-1) +end -am=AuthorizationManager.new am.start_driver diff --git a/src/authm_mad/oneauth b/src/authm_mad/oneauth index 1f3d39c6f3..4aeafb1674 100755 --- a/src/authm_mad/oneauth +++ b/src/authm_mad/oneauth @@ -91,7 +91,13 @@ when "quota" when 'set' check_parameters("quota set", 3) Dir.chdir VAR_LOCATION - add_quota(*ARGV[1..3]) + + begin + add_quota(*ARGV[1..3]) + rescue Exception => e + puts "Error starting server: #{e}" + exit(-1) + end else #default end diff --git a/src/cloud/ec2/lib/econe-server.rb b/src/cloud/ec2/lib/econe-server.rb index dcb8440525..6bcf972bed 100644 --- a/src/cloud/ec2/lib/econe-server.rb +++ b/src/cloud/ec2/lib/econe-server.rb @@ -45,8 +45,13 @@ require 'EC2QueryServer' include OpenNebula -$econe_server = EC2QueryServer.new(CONFIGURATION_FILE, - TEMPLATE_LOCATION, VIEWS_LOCATION) +begin + $econe_server = EC2QueryServer.new(CONFIGURATION_FILE, + TEMPLATE_LOCATION, VIEWS_LOCATION) +rescue Exception => e + puts "Error starting server: #{e}" + exit(-1) +end if CloudServer.is_port_open?($econe_server.config[:server], $econe_server.config[:port]) diff --git a/src/cloud/occi/lib/occi-server.rb b/src/cloud/occi/lib/occi-server.rb index daaf85a439..82624fdf94 100755 --- a/src/cloud/occi/lib/occi-server.rb +++ b/src/cloud/occi/lib/occi-server.rb @@ -49,7 +49,12 @@ require 'OpenNebula' include OpenNebula -$occi_server = OCCIServer.new(CONFIGURATION_FILE, TEMPLATE_LOCATION) +begin + $occi_server = OCCIServer.new(CONFIGURATION_FILE, TEMPLATE_LOCATION) +rescue Exception => e + puts "Error starting server: #{e}" + exit(-1) +end if CloudServer.is_port_open?($occi_server.config[:server], $occi_server.config[:port]) From fd899f2a06c3eefd8583584d196d7e555c878a6f Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Thu, 9 Sep 2010 16:47:13 +0200 Subject: [PATCH 013/102] bug #343: Added "persistent" info to oneimage show --- src/cli/oneimage | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cli/oneimage b/src/cli/oneimage index 5e2f271811..60bb88d70f 100755 --- a/src/cli/oneimage +++ b/src/cli/oneimage @@ -476,7 +476,11 @@ when "show" else public_str = "No" end - puts str % ["PUBLIC", public_str] + puts str % ["PUBLIC", public_str] + + persistent_str=(image["PERSISTENT"].to_i==1 ? "Yes" : "No") + puts str % ["PERSISTENT", persistent_str] + puts str % ["SOURCE", image['SOURCE']] puts str % ["STATE", image.short_state_str] puts str % ["RUNNING_VMS", image['RUNNING_VMS']] From ce1bd84153f9f2b254f4d9669cd3e9710d2f920a Mon Sep 17 00:00:00 2001 From: Daniel Molina Date: Thu, 9 Sep 2010 12:44:12 +0200 Subject: [PATCH 014/102] feature #336: ImageRepository does not try to copy if SOURCE is present in the template --- src/cli/oneimage | 8 +------ src/oca/ruby/OpenNebula/ImageRepository.rb | 28 ++++++++++++---------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/cli/oneimage b/src/cli/oneimage index 60bb88d70f..01cee09bc1 100755 --- a/src/cli/oneimage +++ b/src/cli/oneimage @@ -266,12 +266,6 @@ EOT table=ShowTable.new(ShowTableImage) table.print_help end - - def special_options(opts, options) - opts.on_tail("-n", "--no-cp", "Do not copy the source") do |o| - options[:no_cp]=true - end - end end @@ -330,7 +324,7 @@ when "register", "create", "add" image = OpenNebula::Image.new(OpenNebula::Image.build_xml, get_one_client) - result = img_repo.create(image, template, !ops[:no_cp]) + result = img_repo.create(image, template) if is_successful?(result) puts "ID: " + image.id.to_s if ops[:verbose] end diff --git a/src/oca/ruby/OpenNebula/ImageRepository.rb b/src/oca/ruby/OpenNebula/ImageRepository.rb index 20f0d224a0..b6c040a1e9 100644 --- a/src/oca/ruby/OpenNebula/ImageRepository.rb +++ b/src/oca/ruby/OpenNebula/ImageRepository.rb @@ -4,7 +4,7 @@ require 'fileutils' module OpenNebula class ImageRepository - def create(image, template, copy=true) + def create(image, template) if image.nil? error_msg = "Image could not be found, aborting." return OpenNebula::Error.new(error_msg) @@ -21,18 +21,16 @@ module OpenNebula # ------ Copy the Image file ------ image.info - if image['TEMPLATE/PATH'] - if copy - # --- CDROM, DATABLOCK or OS based on a PATH --- - file_path = image['TEMPLATE/PATH'] + if image['TEMPLATE/PATH'] and image['TEMPLATE/SOURCE'].nil? + # --- CDROM, DATABLOCK or OS based on a PATH --- + file_path = image['TEMPLATE/PATH'] - if !File.exists?(file_path) - error_msg = "Image file could not be found, aborting." - return OpenNebula::Error.new(error_msg) - end - - result = copy(file_path, image['SOURCE']) + if !File.exists?(file_path) + error_msg = "Image file could not be found, aborting." + return OpenNebula::Error.new(error_msg) end + + result = copy(file_path, image['SOURCE']) elsif image['TEMPLATE/SIZE'] and image['TEMPLATE/FSTYPE'] and \ image['TEMPLATE/TYPE'] == 'DATABLOCK' # --- Empty DATABLOCK --- @@ -41,8 +39,12 @@ module OpenNebula if !OpenNebula.is_error?(result) result = mkfs(image['TEMPLATE/FSTYPE'], image['SOURCE']) end - else - error_msg = "Image not present, aborting." + elsif image['TEMPLATE/PATH'].nil? and image['TEMPLATE/SOURCE'].nil? + error_msg = "Image path not present, aborting." + result = OpenNebula::Error.new(error_msg) + elsif image['TEMPLATE/PATH'] and image['TEMPLATE/SOURCE'] + error_msg = "Template malformed, PATH and SOURCE are" << + " mutuallly exclusive" result = OpenNebula::Error.new(error_msg) end From 712b826dd7b2dd0ab39de05df9a1aca550004b75 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Fri, 10 Sep 2010 15:49:47 +0200 Subject: [PATCH 015/102] bug #344: Check save_disk return code --- src/rm/RequestManagerSaveDisk.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/rm/RequestManagerSaveDisk.cc b/src/rm/RequestManagerSaveDisk.cc index bfb1e13c29..15daa0eb15 100644 --- a/src/rm/RequestManagerSaveDisk.cc +++ b/src/rm/RequestManagerSaveDisk.cc @@ -112,7 +112,13 @@ void RequestManager::VirtualMachineSaveDisk::execute( goto error_vm_get; } - vm->save_disk(disk_id, img_id); + rc = vm->save_disk(disk_id, img_id); + + if ( rc == -1 ) + { + vm->unlock(); + goto error_vm_get_disk_id; + } VirtualMachineSaveDisk::vmpool->update(vm); @@ -137,6 +143,10 @@ error_vm_get: oss.str(get_error(method_name, "VM", vm_id)); goto error_common; +error_vm_get_disk_id: + oss.str(get_error(method_name, "DISK from VM", vm_id)); + goto error_common; + error_authenticate: oss.str(authenticate_error(method_name)); goto error_common_lock; From 99e1f565e349c2fb30769c0288211e01cf638be4 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Fri, 10 Sep 2010 16:20:59 +0200 Subject: [PATCH 016/102] bug #345: Put in ready state a disabled image when released --- src/image/Image.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/image/Image.cc b/src/image/Image.cc index 2a8e837254..cc354b63af 100644 --- a/src/image/Image.cc +++ b/src/image/Image.cc @@ -554,6 +554,14 @@ bool Image::release_image() break; case DISABLED: + if (running_vms == 1 && persistent_img == true ) + { + running_vms = 0; + state = READY; + + dirty = true; + } + break; case READY: default: break; From 6bb52aeaec019a14ec3cafdcbc4374b0e2a2d13a Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Fri, 10 Sep 2010 16:42:18 +0200 Subject: [PATCH 017/102] bug #339: remote scripts directory is defined in oned.conf --- share/etc/oned.conf | 2 ++ src/im_mad/im_ssh/one_im_ssh.rb | 15 +++++++-------- src/mad/ruby/ActionManager.rb | 34 +++++++++++++++++++++++++++++++++ src/vmm_mad/sh/one_vmm_sh.rb | 12 ++++++------ 4 files changed, 49 insertions(+), 14 deletions(-) diff --git a/share/etc/oned.conf b/share/etc/oned.conf index 4033353643..b304e57189 100644 --- a/share/etc/oned.conf +++ b/share/etc/oned.conf @@ -35,6 +35,8 @@ VM_POLLING_INTERVAL = 600 #VM_DIR=/srv/cloud/one/var +SCRIPTS_REMOTE_DIR=/tmp/one + PORT=2633 DB = [ backend = "sqlite" ] diff --git a/src/im_mad/im_ssh/one_im_ssh.rb b/src/im_mad/im_ssh/one_im_ssh.rb index b6d00485a5..12b851a490 100755 --- a/src/im_mad/im_ssh/one_im_ssh.rb +++ b/src/im_mad/im_ssh/one_im_ssh.rb @@ -43,12 +43,14 @@ class InformationManager < OpenNebulaDriver #--------------------------------------------------------------------------- # Init the driver #--------------------------------------------------------------------------- - def initialize(remote_dir, hypervisor, num) + def initialize(hypervisor, num) super(num, true) - + + @config = read_configuration + @hypervisor = hypervisor - @remote_dir = remote_dir - + @remote_dir = @config['SCRIPTS_REMOTE_DIR'] || '/tmp/one' + # register actions register_action(:MONITOR, method("action_monitor")) end @@ -89,9 +91,6 @@ end #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- -remote_dir = ENV["IM_REMOTE_DIR"] -remote_dir = "/tmp/one" if !remote_dir - hypervisor = ARGV[0]||'' -im = InformationManager.new(remote_dir, hypervisor, 15) +im = InformationManager.new(hypervisor, 15) im.start_driver diff --git a/src/mad/ruby/ActionManager.rb b/src/mad/ruby/ActionManager.rb index 5b26809802..a7feb2893c 100644 --- a/src/mad/ruby/ActionManager.rb +++ b/src/mad/ruby/ActionManager.rb @@ -177,6 +177,40 @@ class ActionManager private + def read_configuration + one_config=nil + + if ENV['ONE_LOCATION'] + one_config=ENV['ONE_LOCATION']+'/var/config' + else + one_config='/var/log/one/config' + end + + config=Hash.new + cfg='' + + begin + open(one_config) do |file| + cfg=file.read + end + + cfg.split(/\n/).each do |line| + m=line.match(/^([^=]+)=(.*)$/) + + if m + name=m[1].strip.upcase + value=m[2].strip + config[name]=value + end + end + rescue Exception => e + STDERR.puts "Error reading config: #{e.inspect}" + STDERR.flush + end + + config + end + def delete_running_action(action_id) @action_running.delete(action_id) end diff --git a/src/vmm_mad/sh/one_vmm_sh.rb b/src/vmm_mad/sh/one_vmm_sh.rb index 44b8ee6135..60d39800e9 100755 --- a/src/vmm_mad/sh/one_vmm_sh.rb +++ b/src/vmm_mad/sh/one_vmm_sh.rb @@ -41,10 +41,13 @@ class ShDriver < VirtualMachineDriver # ------------------------------------------------------------------------ # # ShDriver constructor # # ------------------------------------------------------------------------ # - def initialize(hypervisor, remote_dir) + def initialize(hypervisor) super(15,true) - @remote_dir = remote_dir + + @config = read_configuration + @hypervisor = hypervisor + @remote_dir = @config['SCRIPTS_REMOTE_DIR'] || '/tmp/one' end # ------------------------------------------------------------------------ # @@ -119,10 +122,7 @@ end # ---------------------------------------------------------------------------- # # ShDriver Main program # ---------------------------------------------------------------------------- # -remote_dir = ENV["VMM_REMOTE_DIR"] -remote_dir = "/tmp/one" if !remote_dir - hypervisor = ARGV[0] -sh_driver = ShDriver.new(hypervisor, remote_dir) +sh_driver = ShDriver.new(hypervisor) sh_driver.start_driver From 9af844e5b118009fb25424f5785758712ddee479 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Fri, 10 Sep 2010 16:44:25 +0200 Subject: [PATCH 018/102] bug #312: changes to fix_path in nfs tm commands --- src/tm_mad/tm_common.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/tm_mad/tm_common.sh b/src/tm_mad/tm_common.sh index aff902102c..605ebd6197 100644 --- a/src/tm_mad/tm_common.sh +++ b/src/tm_mad/tm_common.sh @@ -42,12 +42,26 @@ WGET=/usr/bin/wget function get_vmdir { VMDIR=`grep '^VM_DIR=' $ONE_LOCAL_VAR/config | cut -d= -f2` + fix_var_slashes +} + +function fix_dir_slashes +{ + dirname "$1/file" | sed -E 's/\/+/\//g' +} + +function fix_var_slashes +{ + ONE_LOCAL_VAR=`fix_dir_slashes "$ONE_LOCAL_VAR"` + VMDIR=`fix_dir_slashes "$VMDIR"` } function fix_paths { if [ -n "$VMDIR" ]; then + SRC_PATH=`fix_dir_slashes "$SRC_PATH"` SRC_PATH=${SRC_PATH/$VMDIR/$ONE_LOCAL_VAR} + DST_PATH=`fix_dir_slashes "$DST_PATH"` DST_PATH=${DST_PATH/$VMDIR/$ONE_LOCAL_VAR} fi } @@ -55,6 +69,7 @@ function fix_paths function fix_src_path { if [ -n "$VMDIR" ]; then + SRC_PATH=`fix_dir_slashes "$SRC_PATH"` SRC_PATH=${SRC_PATH/$VMDIR/$ONE_LOCAL_VAR} fi } @@ -62,6 +77,7 @@ function fix_src_path function fix_dst_path { if [ -n "$VMDIR" ]; then + DST_PATH=`fix_dir_slashes "$DST_PATH"` DST_PATH=${DST_PATH/$VMDIR/$ONE_LOCAL_VAR} fi } From 043f762950be519b4a75c95148bb556ce44be1ca Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Fri, 10 Sep 2010 23:23:47 +0200 Subject: [PATCH 019/102] bug #345: Revert previous commit. --- src/image/Image.cc | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/image/Image.cc b/src/image/Image.cc index cc354b63af..2a8e837254 100644 --- a/src/image/Image.cc +++ b/src/image/Image.cc @@ -554,14 +554,6 @@ bool Image::release_image() break; case DISABLED: - if (running_vms == 1 && persistent_img == true ) - { - running_vms = 0; - state = READY; - - dirty = true; - } - break; case READY: default: break; From bdf3e26cb6102e63fc1bfc80eac1eec750b1f7b2 Mon Sep 17 00:00:00 2001 From: Daniel Molina Date: Mon, 13 Sep 2010 15:24:26 +0200 Subject: [PATCH 020/102] Bug #240: Fix error message shown two times, onevnet show --- src/cli/onevnet | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/cli/onevnet b/src/cli/onevnet index 403db47135..b45f4bb249 100755 --- a/src/cli/onevnet +++ b/src/cli/onevnet @@ -238,9 +238,6 @@ when "show" else puts vn.to_xml(true) end - else - puts "Error: "+result.message - break end end From 5d081dd349a47304b720d43b55de2bd05c89c59b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tino=20V=C3=A1zquez?= Date: Mon, 13 Sep 2010 16:05:09 +0200 Subject: [PATCH 021/102] Xen checkpoint file created as oneadmin, not root. --- src/vmm_mad/remotes/xen/save | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vmm_mad/remotes/xen/save b/src/vmm_mad/remotes/xen/save index 46c9c5237a..d28422c6bf 100755 --- a/src/vmm_mad/remotes/xen/save +++ b/src/vmm_mad/remotes/xen/save @@ -21,5 +21,7 @@ source $(dirname $0)/xenrc deploy_id=$1 file=$2 +touch $file + $XM_SAVE $deploy_id $file From fa77c12061cec6eabf7de2db694f0272b947ac80 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Tue, 14 Sep 2010 16:53:00 +0200 Subject: [PATCH 022/102] Fixed bug in return value of sh polling --- src/vmm_mad/remotes/kvm/poll | 8 +++++++- src/vmm_mad/remotes/xen/poll | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/vmm_mad/remotes/kvm/poll b/src/vmm_mad/remotes/kvm/poll index 5e004776bf..4c68fbb168 100755 --- a/src/vmm_mad/remotes/kvm/poll +++ b/src/vmm_mad/remotes/kvm/poll @@ -50,4 +50,10 @@ awk_cmd="awk \'$AWK_SCRIPT\'" info=`$virsh_cmd 2>/dev/null | awk "$AWK_SCRIPT"` -echo $info +if [ -n "$info" ]; then + echo $info + exit 0 +else + echo STATE=d + exit 1 +fi diff --git a/src/vmm_mad/remotes/xen/poll b/src/vmm_mad/remotes/xen/poll index eb5ea10f87..59eb9614c0 100755 --- a/src/vmm_mad/remotes/xen/poll +++ b/src/vmm_mad/remotes/xen/poll @@ -55,6 +55,11 @@ function get_info() { info=`get_info $1 2>/dev/null | awk "$AWK_SCRIPT"` -echo $info - +if [ -n "$info" ]; then + echo $info + exit 0 +else + echo STATE=d + exit 1 +fi From b8812bcf18c30b958c945fddafc517913ba652ee Mon Sep 17 00:00:00 2001 From: Daniel Molina Date: Mon, 13 Sep 2010 15:11:32 +0200 Subject: [PATCH 023/102] bug #347: Fix onevm saveas, check VM consistency --- src/cli/onevm | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/cli/onevm b/src/cli/onevm index 955b3b6c43..c813fa2b3a 100755 --- a/src/cli/onevm +++ b/src/cli/onevm @@ -707,7 +707,13 @@ when "saveas" else image_id = vm["TEMPLATE/DISK[DISK_ID=\"#{disk_id}\"]/IMAGE_ID"] - if (image_id != nil) + if (image_id != nil) + if vm["TEMPLATE/DISK[DISK_ID=\"#{disk_id}\"]/SAVE_AS"] + puts "Error: The disk #{disk_id} is already" << + " suppossed to be saved" + exit -1 + end + # Get the image type image = OpenNebula::Image.new( OpenNebula::Image.build_xml(image_id), @@ -718,7 +724,7 @@ when "saveas" puts result.message exit -1 end - + image_type = image.type_str end end @@ -733,13 +739,19 @@ when "saveas" get_one_client) result = image.allocate(template) - if !is_successful?(result) puts result.message exit -1 end result = vm.save_as(disk_id.to_i, image.id) + if is_successful?(result) + puts "VM disk with ID #{disk_id} is prepared to be" << + " saved" if ops[:verbose] + else + image.delete + end + when "show" check_parameters("get_info", 1) From fd8b1db099cc3f69fb846fa5d4062f01ecb80590 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Wed, 15 Sep 2010 14:28:57 +0200 Subject: [PATCH 024/102] Bug #312: fix_paths is only run if VMDIR and VAR dir are different --- src/tm_mad/tm_common.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/tm_mad/tm_common.sh b/src/tm_mad/tm_common.sh index 605ebd6197..32628fb7b1 100644 --- a/src/tm_mad/tm_common.sh +++ b/src/tm_mad/tm_common.sh @@ -45,6 +45,8 @@ function get_vmdir fix_var_slashes } +# Takes out uneeded slashes. Repeated and final directory slashes: +# /some//path///somewhere/ -> /some/path/somewhere function fix_dir_slashes { dirname "$1/file" | sed -E 's/\/+/\//g' @@ -58,7 +60,7 @@ function fix_var_slashes function fix_paths { - if [ -n "$VMDIR" ]; then + if [ "x$ONE_LOCAL_VAR" != "x$VMDIR" ]; then SRC_PATH=`fix_dir_slashes "$SRC_PATH"` SRC_PATH=${SRC_PATH/$VMDIR/$ONE_LOCAL_VAR} DST_PATH=`fix_dir_slashes "$DST_PATH"` @@ -68,7 +70,7 @@ function fix_paths function fix_src_path { - if [ -n "$VMDIR" ]; then + if [ "x$ONE_LOCAL_VAR" != "x$VMDIR" ]; then SRC_PATH=`fix_dir_slashes "$SRC_PATH"` SRC_PATH=${SRC_PATH/$VMDIR/$ONE_LOCAL_VAR} fi @@ -76,7 +78,7 @@ function fix_src_path function fix_dst_path { - if [ -n "$VMDIR" ]; then + if [ "x$ONE_LOCAL_VAR" != "x$VMDIR" ]; then DST_PATH=`fix_dir_slashes "$DST_PATH"` DST_PATH=${DST_PATH/$VMDIR/$ONE_LOCAL_VAR} fi From 9c3e12f28fefd95929ceaa4887c3ee97c03e8956 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Wed, 15 Sep 2010 15:06:22 +0200 Subject: [PATCH 025/102] fixed bug in sh polling --- src/vmm_mad/remotes/kvm/poll | 3 +-- src/vmm_mad/remotes/xen/poll | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/vmm_mad/remotes/kvm/poll b/src/vmm_mad/remotes/kvm/poll index 4c68fbb168..224edb5d49 100755 --- a/src/vmm_mad/remotes/kvm/poll +++ b/src/vmm_mad/remotes/kvm/poll @@ -52,8 +52,7 @@ info=`$virsh_cmd 2>/dev/null | awk "$AWK_SCRIPT"` if [ -n "$info" ]; then echo $info - exit 0 else echo STATE=d - exit 1 fi +exit 0 diff --git a/src/vmm_mad/remotes/xen/poll b/src/vmm_mad/remotes/xen/poll index 59eb9614c0..c1f6e3aa64 100755 --- a/src/vmm_mad/remotes/xen/poll +++ b/src/vmm_mad/remotes/xen/poll @@ -58,8 +58,7 @@ info=`get_info $1 2>/dev/null | awk "$AWK_SCRIPT"` if [ -n "$info" ]; then echo $info - exit 0 else echo STATE=d - exit 1 fi +exit 0 From 2455ad4ff16f8fcca1612f2b0c9c766382312c46 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Wed, 15 Sep 2010 15:36:57 +0200 Subject: [PATCH 026/102] removed bash -e flag in shutdown scripts --- src/vmm_mad/remotes/kvm/shutdown | 2 +- src/vmm_mad/remotes/xen/shutdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vmm_mad/remotes/kvm/shutdown b/src/vmm_mad/remotes/kvm/shutdown index 53d84d25d1..892e9718a8 100755 --- a/src/vmm_mad/remotes/kvm/shutdown +++ b/src/vmm_mad/remotes/kvm/shutdown @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/xen/shutdown b/src/vmm_mad/remotes/xen/shutdown index ee73b12bd0..b90e1dec5e 100755 --- a/src/vmm_mad/remotes/xen/shutdown +++ b/src/vmm_mad/remotes/xen/shutdown @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # From 64f1b7e45906857841b7cdfbeb3d4afb97429eb0 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Wed, 15 Sep 2010 16:48:21 +0200 Subject: [PATCH 027/102] Stopped using Array#index as it is not compatible with ruby 1.8.5 --- src/mad/ruby/VirtualMachineDriver.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/mad/ruby/VirtualMachineDriver.rb b/src/mad/ruby/VirtualMachineDriver.rb index ec42758be4..5a5c1be48d 100644 --- a/src/mad/ruby/VirtualMachineDriver.rb +++ b/src/mad/ruby/VirtualMachineDriver.rb @@ -168,11 +168,16 @@ private end def get_first_runable - action_index=@action_queue.index do |action| - if action[:args][HOST_ARG] - !@hosts.include? action[:args][HOST_ARG] + action_index=nil + @action_queue.each_with_index do |action, index| + if action[:args][HOST_ARG] + if !@hosts.include?(action[:args][HOST_ARG]) + action_index=index + break + end else - true + action_index=index + break end end From e900b964da5a7768c22ede679ebf4392c75ffd96 Mon Sep 17 00:00:00 2001 From: Daniel Molina Date: Wed, 15 Sep 2010 18:01:53 +0200 Subject: [PATCH 028/102] Refactor OCA test directory tree --- src/oca/ruby/test/ClusterPool_spec.rb | 2 +- src/oca/ruby/test/Cluster_spec.rb | 2 +- src/oca/ruby/test/HostPool_spec.rb | 2 +- src/oca/ruby/test/Host_spec.rb | 2 +- src/oca/ruby/test/UserPool_spec.rb | 2 +- src/oca/ruby/test/User_spec.rb | 2 +- src/oca/ruby/test/VirtualMachinePool_spec.rb | 2 +- src/oca/ruby/test/VirtualMachine_spec.rb | 2 +- src/oca/ruby/test/VirtualNetworkPool_spec.rb | 2 +- src/oca/ruby/test/VirtualNetwork_spec.rb | 2 +- .../test/{xml_test => fixtures}/cluster.xml | 0 .../{xml_test => fixtures}/clusterpool.xml | 0 .../ruby/test/{xml_test => fixtures}/host.xml | 0 .../test/{xml_test => fixtures}/hostpool.xml | 0 .../ruby/test/{xml_test => fixtures}/user.xml | 0 .../test/{xml_test => fixtures}/userpool.xml | 0 .../ruby/test/{xml_test => fixtures}/vm.xml | 0 .../test/{xml_test => fixtures}/vmpool.xml | 0 .../ruby/test/{xml_test => fixtures}/vnet.xml | 0 .../test/{xml_test => fixtures}/vnetpool.xml | 0 src/oca/ruby/test/{ => helpers}/MockClient.rb | 20 +++++++++---------- 21 files changed, 20 insertions(+), 20 deletions(-) rename src/oca/ruby/test/{xml_test => fixtures}/cluster.xml (100%) rename src/oca/ruby/test/{xml_test => fixtures}/clusterpool.xml (100%) rename src/oca/ruby/test/{xml_test => fixtures}/host.xml (100%) rename src/oca/ruby/test/{xml_test => fixtures}/hostpool.xml (100%) rename src/oca/ruby/test/{xml_test => fixtures}/user.xml (100%) rename src/oca/ruby/test/{xml_test => fixtures}/userpool.xml (100%) rename src/oca/ruby/test/{xml_test => fixtures}/vm.xml (100%) rename src/oca/ruby/test/{xml_test => fixtures}/vmpool.xml (100%) rename src/oca/ruby/test/{xml_test => fixtures}/vnet.xml (100%) rename src/oca/ruby/test/{xml_test => fixtures}/vnetpool.xml (100%) rename src/oca/ruby/test/{ => helpers}/MockClient.rb (72%) diff --git a/src/oca/ruby/test/ClusterPool_spec.rb b/src/oca/ruby/test/ClusterPool_spec.rb index e68f052ba4..fd30f0fdb3 100644 --- a/src/oca/ruby/test/ClusterPool_spec.rb +++ b/src/oca/ruby/test/ClusterPool_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/Cluster_spec.rb b/src/oca/ruby/test/Cluster_spec.rb index 953d1b99f8..bb2a30889a 100644 --- a/src/oca/ruby/test/Cluster_spec.rb +++ b/src/oca/ruby/test/Cluster_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/HostPool_spec.rb b/src/oca/ruby/test/HostPool_spec.rb index 52a02ba019..5d08319618 100644 --- a/src/oca/ruby/test/HostPool_spec.rb +++ b/src/oca/ruby/test/HostPool_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/Host_spec.rb b/src/oca/ruby/test/Host_spec.rb index 08af3d377e..e2d8cb39e4 100644 --- a/src/oca/ruby/test/Host_spec.rb +++ b/src/oca/ruby/test/Host_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/UserPool_spec.rb b/src/oca/ruby/test/UserPool_spec.rb index 6bd5fcba8c..765603a422 100644 --- a/src/oca/ruby/test/UserPool_spec.rb +++ b/src/oca/ruby/test/UserPool_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/User_spec.rb b/src/oca/ruby/test/User_spec.rb index e0f43f8f61..1a4085d4e2 100644 --- a/src/oca/ruby/test/User_spec.rb +++ b/src/oca/ruby/test/User_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/VirtualMachinePool_spec.rb b/src/oca/ruby/test/VirtualMachinePool_spec.rb index 8e7c81acba..28ffb96dd3 100644 --- a/src/oca/ruby/test/VirtualMachinePool_spec.rb +++ b/src/oca/ruby/test/VirtualMachinePool_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/VirtualMachine_spec.rb b/src/oca/ruby/test/VirtualMachine_spec.rb index e2fc6571ff..53c4397e05 100644 --- a/src/oca/ruby/test/VirtualMachine_spec.rb +++ b/src/oca/ruby/test/VirtualMachine_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/VirtualNetworkPool_spec.rb b/src/oca/ruby/test/VirtualNetworkPool_spec.rb index 51013dc20f..fd107827c6 100644 --- a/src/oca/ruby/test/VirtualNetworkPool_spec.rb +++ b/src/oca/ruby/test/VirtualNetworkPool_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/VirtualNetwork_spec.rb b/src/oca/ruby/test/VirtualNetwork_spec.rb index 0b19f675f9..b74982bf52 100644 --- a/src/oca/ruby/test/VirtualNetwork_spec.rb +++ b/src/oca/ruby/test/VirtualNetwork_spec.rb @@ -1,7 +1,7 @@ $: << '../' require 'OpenNebula' -require 'MockClient' +require 'helpers/MockClient' module OpenNebula diff --git a/src/oca/ruby/test/xml_test/cluster.xml b/src/oca/ruby/test/fixtures/cluster.xml similarity index 100% rename from src/oca/ruby/test/xml_test/cluster.xml rename to src/oca/ruby/test/fixtures/cluster.xml diff --git a/src/oca/ruby/test/xml_test/clusterpool.xml b/src/oca/ruby/test/fixtures/clusterpool.xml similarity index 100% rename from src/oca/ruby/test/xml_test/clusterpool.xml rename to src/oca/ruby/test/fixtures/clusterpool.xml diff --git a/src/oca/ruby/test/xml_test/host.xml b/src/oca/ruby/test/fixtures/host.xml similarity index 100% rename from src/oca/ruby/test/xml_test/host.xml rename to src/oca/ruby/test/fixtures/host.xml diff --git a/src/oca/ruby/test/xml_test/hostpool.xml b/src/oca/ruby/test/fixtures/hostpool.xml similarity index 100% rename from src/oca/ruby/test/xml_test/hostpool.xml rename to src/oca/ruby/test/fixtures/hostpool.xml diff --git a/src/oca/ruby/test/xml_test/user.xml b/src/oca/ruby/test/fixtures/user.xml similarity index 100% rename from src/oca/ruby/test/xml_test/user.xml rename to src/oca/ruby/test/fixtures/user.xml diff --git a/src/oca/ruby/test/xml_test/userpool.xml b/src/oca/ruby/test/fixtures/userpool.xml similarity index 100% rename from src/oca/ruby/test/xml_test/userpool.xml rename to src/oca/ruby/test/fixtures/userpool.xml diff --git a/src/oca/ruby/test/xml_test/vm.xml b/src/oca/ruby/test/fixtures/vm.xml similarity index 100% rename from src/oca/ruby/test/xml_test/vm.xml rename to src/oca/ruby/test/fixtures/vm.xml diff --git a/src/oca/ruby/test/xml_test/vmpool.xml b/src/oca/ruby/test/fixtures/vmpool.xml similarity index 100% rename from src/oca/ruby/test/xml_test/vmpool.xml rename to src/oca/ruby/test/fixtures/vmpool.xml diff --git a/src/oca/ruby/test/xml_test/vnet.xml b/src/oca/ruby/test/fixtures/vnet.xml similarity index 100% rename from src/oca/ruby/test/xml_test/vnet.xml rename to src/oca/ruby/test/fixtures/vnet.xml diff --git a/src/oca/ruby/test/xml_test/vnetpool.xml b/src/oca/ruby/test/fixtures/vnetpool.xml similarity index 100% rename from src/oca/ruby/test/xml_test/vnetpool.xml rename to src/oca/ruby/test/fixtures/vnetpool.xml diff --git a/src/oca/ruby/test/MockClient.rb b/src/oca/ruby/test/helpers/MockClient.rb similarity index 72% rename from src/oca/ruby/test/MockClient.rb rename to src/oca/ruby/test/helpers/MockClient.rb index 4fa7ed7b6d..d119eb552a 100644 --- a/src/oca/ruby/test/MockClient.rb +++ b/src/oca/ruby/test/helpers/MockClient.rb @@ -5,13 +5,13 @@ class MockClient case xmlrpc_action when "one.vn.info" - return File.read("xml_test/vnet.xml") + return File.read("fixtures/vnet.xml") when "one.vn.allocate" return 3 when "one.vn.delete" return nil when "one.vm.info" - return File.read("xml_test/vm.xml") + return File.read("fixtures/vm.xml") when "one.vm.allocate" return 6 when "one.vm.delete" @@ -23,7 +23,7 @@ class MockClient when "one.vm.migrate" return nil when "one.host.info" - return File.read("xml_test/host.xml") + return File.read("fixtures/host.xml") when "one.host.allocate" return 7 when "one.host.delete" @@ -33,13 +33,13 @@ class MockClient when "one.user.allocate" return 3 when "one.user.info" - return File.read("xml_test/user.xml") + return File.read("fixtures/user.xml") when "one.user.delete" return nil when "one.cluster.allocate" return 5 when "one.cluster.info" - return File.read("xml_test/cluster.xml") + return File.read("fixtures/cluster.xml") when "one.cluster.delete" return nil when "one.cluster.addhost" @@ -47,15 +47,15 @@ class MockClient when "one.cluster.removehost" return nil when "one.vnpool.info" - return File.read("xml_test/vnetpool.xml") + return File.read("fixtures/vnetpool.xml") when "one.vmpool.info" - return File.read("xml_test/vmpool.xml") + return File.read("fixtures/vmpool.xml") when "one.hostpool.info" - return File.read("xml_test/hostpool.xml") + return File.read("fixtures/hostpool.xml") when "one.userpool.info" - return File.read("xml_test/userpool.xml") + return File.read("fixtures/userpool.xml") when "one.clusterpool.info" - return File.read("xml_test/clusterpool.xml") + return File.read("fixtures/clusterpool.xml") end end end \ No newline at end of file From 6ab6730a2f26a3ffa289d4e022bf65c83bb748f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tino=20V=C3=A1zquez?= Date: Thu, 16 Sep 2010 12:29:41 +0200 Subject: [PATCH 029/102] Get rid of "-e" debug flag for bash in the remotes shell scripts --- src/vmm_mad/remotes/kvm/cancel | 2 +- src/vmm_mad/remotes/kvm/deploy | 2 +- src/vmm_mad/remotes/kvm/migrate | 2 +- src/vmm_mad/remotes/kvm/poll | 2 +- src/vmm_mad/remotes/kvm/restore | 2 +- src/vmm_mad/remotes/kvm/save | 2 +- src/vmm_mad/remotes/kvm/shutdown | 3 ++- src/vmm_mad/remotes/xen/cancel | 2 +- src/vmm_mad/remotes/xen/deploy | 2 +- src/vmm_mad/remotes/xen/migrate | 2 +- src/vmm_mad/remotes/xen/poll | 2 +- src/vmm_mad/remotes/xen/restore | 2 +- src/vmm_mad/remotes/xen/save | 2 +- src/vmm_mad/remotes/xen/shutdown | 2 +- 14 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/vmm_mad/remotes/kvm/cancel b/src/vmm_mad/remotes/kvm/cancel index ad708bd76a..b879901db7 100755 --- a/src/vmm_mad/remotes/kvm/cancel +++ b/src/vmm_mad/remotes/kvm/cancel @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/kvm/deploy b/src/vmm_mad/remotes/kvm/deploy index b9bd265bbe..b3cdb0d5d6 100755 --- a/src/vmm_mad/remotes/kvm/deploy +++ b/src/vmm_mad/remotes/kvm/deploy @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/kvm/migrate b/src/vmm_mad/remotes/kvm/migrate index b56d8773a5..5d23368648 100755 --- a/src/vmm_mad/remotes/kvm/migrate +++ b/src/vmm_mad/remotes/kvm/migrate @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/kvm/poll b/src/vmm_mad/remotes/kvm/poll index 224edb5d49..54d9ff3e7d 100755 --- a/src/vmm_mad/remotes/kvm/poll +++ b/src/vmm_mad/remotes/kvm/poll @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/kvm/restore b/src/vmm_mad/remotes/kvm/restore index 9a01b73333..655288e276 100755 --- a/src/vmm_mad/remotes/kvm/restore +++ b/src/vmm_mad/remotes/kvm/restore @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/kvm/save b/src/vmm_mad/remotes/kvm/save index efd44274b7..f9bf8888f8 100755 --- a/src/vmm_mad/remotes/kvm/save +++ b/src/vmm_mad/remotes/kvm/save @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/kvm/shutdown b/src/vmm_mad/remotes/kvm/shutdown index 892e9718a8..64aba04296 100755 --- a/src/vmm_mad/remotes/kvm/shutdown +++ b/src/vmm_mad/remotes/kvm/shutdown @@ -1,4 +1,5 @@ -#!/bin/bash +#!/bin/bash + # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/xen/cancel b/src/vmm_mad/remotes/xen/cancel index 6d6835f435..af411dcee0 100755 --- a/src/vmm_mad/remotes/xen/cancel +++ b/src/vmm_mad/remotes/xen/cancel @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/xen/deploy b/src/vmm_mad/remotes/xen/deploy index 06ef8dce32..c5871d2abc 100755 --- a/src/vmm_mad/remotes/xen/deploy +++ b/src/vmm_mad/remotes/xen/deploy @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/xen/migrate b/src/vmm_mad/remotes/xen/migrate index 0996202b43..3130c37741 100755 --- a/src/vmm_mad/remotes/xen/migrate +++ b/src/vmm_mad/remotes/xen/migrate @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/xen/poll b/src/vmm_mad/remotes/xen/poll index c1f6e3aa64..7c45ddaae3 100755 --- a/src/vmm_mad/remotes/xen/poll +++ b/src/vmm_mad/remotes/xen/poll @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/xen/restore b/src/vmm_mad/remotes/xen/restore index a35c236d8b..0955253b9e 100755 --- a/src/vmm_mad/remotes/xen/restore +++ b/src/vmm_mad/remotes/xen/restore @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/xen/save b/src/vmm_mad/remotes/xen/save index d28422c6bf..33f690b17a 100755 --- a/src/vmm_mad/remotes/xen/save +++ b/src/vmm_mad/remotes/xen/save @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # diff --git a/src/vmm_mad/remotes/xen/shutdown b/src/vmm_mad/remotes/xen/shutdown index b90e1dec5e..da368cd502 100755 --- a/src/vmm_mad/remotes/xen/shutdown +++ b/src/vmm_mad/remotes/xen/shutdown @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) # From 2bf89b9143802b7090d77734e0641e74569a0c98 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Fri, 17 Sep 2010 18:38:38 +0200 Subject: [PATCH 030/102] Added xml output to cppunit tests --- include/test/PoolTest.h | 7 +++++++ include/test/one_test_common.h | 12 ++++++++++++ src/authm/test/AuthManagerTest.cc | 6 ++++++ src/common/test/action_manager.cc | 6 ++++++ src/common/test/mem_collector.cc | 6 ++++++ src/common/test/single_attribute.cc | 6 ++++++ src/common/test/vector_attribute.cc | 6 ++++++ src/pool/test/pool.cc | 6 ++++++ src/scheduler/src/pool/test/HostXMLTest.cc | 7 +++++++ src/scheduler/src/pool/test/VirtualMachineXMLTest.cc | 6 ++++++ src/scheduler/src/xml/test/ObjectXMLTest.cc | 6 ++++++ src/scheduler/src/xml/test/SConstruct | 1 + src/template/test/template.cc | 6 ++++++ 13 files changed, 81 insertions(+) create mode 100644 include/test/one_test_common.h diff --git a/include/test/PoolTest.h b/include/test/PoolTest.h index 25a87bbe18..91a90654cf 100644 --- a/include/test/PoolTest.h +++ b/include/test/PoolTest.h @@ -36,6 +36,8 @@ #include "PoolSQL.h" #include "Nebula.h" +#include "test/one_test_common.h" + // Use this macro in sub-classes to add all the tests defined here #define ALL_POOLTEST_CPPUNIT_TESTS() \ CPPUNIT_TEST (oid_assignment); \ @@ -339,6 +341,9 @@ public: NebulaLog::log("Test", Log::INFO, "Test started"); CppUnit::TextUi::TestRunner runner; + + SETUP_XML_WRITER(runner, "output.xml") + runner.addTest( suite ); if (sqlite_flag) @@ -356,6 +361,8 @@ public: runner.run(); + END_XML_WRITER + if (!log_flag) remove("test.log"); diff --git a/include/test/one_test_common.h b/include/test/one_test_common.h new file mode 100644 index 0000000000..857f2be6c6 --- /dev/null +++ b/include/test/one_test_common.h @@ -0,0 +1,12 @@ + +#include + +#define SETUP_XML_WRITER(runner, output) \ + ofstream outputFile(output); \ + CppUnit::XmlOutputter* outputter = \ + new CppUnit::XmlOutputter(&runner.result(), outputFile); \ + \ + runner.setOutputter(outputter); + +#define END_XML_WRITER outputFile.close(); + diff --git a/src/authm/test/AuthManagerTest.cc b/src/authm/test/AuthManagerTest.cc index 882d8b4a91..452419fa52 100644 --- a/src/authm/test/AuthManagerTest.cc +++ b/src/authm/test/AuthManagerTest.cc @@ -34,6 +34,8 @@ #include #include +#include "test/one_test_common.h" + using namespace std; @@ -291,10 +293,14 @@ int main(int argc, char ** argv) NebulaLog::init_log_system(NebulaLog::FILE, Log::DEBUG,"test.log"); NebulaLog::log("Test", Log::INFO, "Test started"); + SETUP_XML_WRITER(runner, "AuthManagerTest.xml"); + runner.addTest(AuthManagerTest::suite()); runner.run(); + END_XML_WRITER + NebulaLog::finalize_log_system(); return 0; diff --git a/src/common/test/action_manager.cc b/src/common/test/action_manager.cc index 134c30e899..87f71017d9 100644 --- a/src/common/test/action_manager.cc +++ b/src/common/test/action_manager.cc @@ -10,6 +10,8 @@ #include #include +#include "test/one_test_common.h" + using namespace std; extern "C" void * addsub_loop(void *arg); @@ -175,9 +177,13 @@ int main(int argc, char ** argv) { CppUnit::TextUi::TestRunner tr; + + SETUP_XML_WRITER(tr, "action_manager.xml"); tr.addTest(ActionManagerTest::suite()); tr.run(); + END_XML_WRITER + return 0; } diff --git a/src/common/test/mem_collector.cc b/src/common/test/mem_collector.cc index 19397c2031..b7fe391738 100644 --- a/src/common/test/mem_collector.cc +++ b/src/common/test/mem_collector.cc @@ -27,6 +27,8 @@ extern "C" #include #include +#include "test/one_test_common.h" + using namespace std; class MemCollectorTest : public CppUnit::TestFixture @@ -110,8 +112,12 @@ int main(int argc, char ** argv) { CppUnit::TextUi::TestRunner tr; + SETUP_XML_WRITER(tr, "mem_collector.xml"); + tr.addTest(MemCollectorTest::suite()); tr.run(); + END_XML_WRITER + return 0; } diff --git a/src/common/test/single_attribute.cc b/src/common/test/single_attribute.cc index cd9462e0d4..6a02e47914 100644 --- a/src/common/test/single_attribute.cc +++ b/src/common/test/single_attribute.cc @@ -9,6 +9,8 @@ #include #include +#include "test/one_test_common.h" + using namespace std; class SingleAttributeTest : public CppUnit::TestFixture @@ -123,9 +125,13 @@ public: int main(int argc, char ** argv) { CppUnit::TextUi::TestRunner tr; + + SETUP_XML_WRITER(tr, "single_attribute.xml"); tr.addTest(SingleAttributeTest::suite()); tr.run(); + END_XML_WRITER + return 0; } diff --git a/src/common/test/vector_attribute.cc b/src/common/test/vector_attribute.cc index 5c6b3d634d..54b18a3a40 100644 --- a/src/common/test/vector_attribute.cc +++ b/src/common/test/vector_attribute.cc @@ -10,6 +10,8 @@ #include #include +#include "test/one_test_common.h" + using namespace std; class VectorAttributeTest : public CppUnit::TestFixture @@ -156,9 +158,13 @@ int main(int argc, char ** argv) { CppUnit::TextUi::TestRunner tr; + + SETUP_XML_WRITER(tr, "vector_attribute.xml"); tr.addTest(VectorAttributeTest::suite()); tr.run(); + END_XML_WRITER + return 0; } diff --git a/src/pool/test/pool.cc b/src/pool/test/pool.cc index 5b2580ae8b..f12e95cb3f 100644 --- a/src/pool/test/pool.cc +++ b/src/pool/test/pool.cc @@ -32,6 +32,8 @@ #include "MySqlDB.h" #include "SqlDB.h" +#include "test/one_test_common.h" + using namespace std; /* ************************************************************************* */ @@ -287,12 +289,16 @@ int main(int argc, char ** argv) cout << "\nRunning MySQL tests...\n"; } + SETUP_XML_WRITER(runner, "pool.xml") + runner.addTest( PoolTest::suite() ); runner.run(); if (!log_flag) remove("test.log"); + END_XML_WRITER + NebulaLog::finalize_log_system(); return 0; diff --git a/src/scheduler/src/pool/test/HostXMLTest.cc b/src/scheduler/src/pool/test/HostXMLTest.cc index 1fbca65e84..e178097976 100644 --- a/src/scheduler/src/pool/test/HostXMLTest.cc +++ b/src/scheduler/src/pool/test/HostXMLTest.cc @@ -31,6 +31,8 @@ #include "ObjectXML.h" #include "HostPoolXML.h" +#include "test/one_test_common.h" + /* ************************************************************************* */ /* ************************************************************************* */ @@ -263,10 +265,15 @@ int main(int argc, char ** argv) CppUnit::TextUi::TestRunner runner; + SETUP_XML_WRITER(runner, "HostXMLTest.xml") + runner.addTest(HostXMLTest::suite()); runner.run(); + END_XML_WRITER + + // remove("test.log"); NebulaLog::finalize_log_system(); diff --git a/src/scheduler/src/pool/test/VirtualMachineXMLTest.cc b/src/scheduler/src/pool/test/VirtualMachineXMLTest.cc index 9b446e9eeb..aac5f1750b 100644 --- a/src/scheduler/src/pool/test/VirtualMachineXMLTest.cc +++ b/src/scheduler/src/pool/test/VirtualMachineXMLTest.cc @@ -32,6 +32,8 @@ #include "VirtualMachinePoolXML.h" #include "HostPoolXML.h" +#include "test/one_test_common.h" + /* ************************************************************************* */ /* ************************************************************************* */ @@ -317,9 +319,13 @@ int main(int argc, char ** argv) CppUnit::TextUi::TestRunner runner; + SETUP_XML_WRITER(runner, "VirtualMachineXMLTest.xml") + runner.addTest(VirtualMachineXMLTest::suite()); runner.run(); + END_XML_WRITER + remove("test.log"); NebulaLog::finalize_log_system(); diff --git a/src/scheduler/src/xml/test/ObjectXMLTest.cc b/src/scheduler/src/xml/test/ObjectXMLTest.cc index 8a3ef1b809..6652e0e765 100644 --- a/src/scheduler/src/xml/test/ObjectXMLTest.cc +++ b/src/scheduler/src/xml/test/ObjectXMLTest.cc @@ -30,6 +30,8 @@ #include "ObjectXML.h" +#include "test/one_test_common.h" + /* ************************************************************************* */ /* ************************************************************************* */ @@ -331,9 +333,13 @@ int main(int argc, char ** argv) { CppUnit::TextUi::TestRunner runner; + SETUP_XML_WRITER(runner, "ObjectXMLTest.xml"); + runner.addTest(ObjectXMLTest::suite()); runner.run(); + END_XML_WRITER + return 0; } diff --git a/src/scheduler/src/xml/test/SConstruct b/src/scheduler/src/xml/test/SConstruct index f17f7e4cf6..d750c4e7c5 100644 --- a/src/scheduler/src/xml/test/SConstruct +++ b/src/scheduler/src/xml/test/SConstruct @@ -29,6 +29,7 @@ main_env['ENV']['PATH']=os.environ['PATH'] # Include dirs main_env.Append(CPPPATH=[ cwd+'/../../../include', + cwd+'/../../../../../include', '/usr/include/cppunit/' ]) diff --git a/src/template/test/template.cc b/src/template/test/template.cc index dfdd060a18..87e4084362 100644 --- a/src/template/test/template.cc +++ b/src/template/test/template.cc @@ -9,6 +9,8 @@ #include #include +#include "test/one_test_common.h" + using namespace std; /* ************************************************************************* */ @@ -400,8 +402,12 @@ int main(int argc, char ** argv) { CppUnit::TextUi::TestRunner tr; + SETUP_XML_WRITER(tr, "template.xml") + tr.addTest(TemplateTest::suite()); tr.run(); + END_XML_WRITER + return 0; } From de97b5d24904e1696c2eea1a97177bbb32e87c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tino=20V=C3=A1zquez?= Date: Mon, 20 Sep 2010 17:51:55 +0200 Subject: [PATCH 031/102] Remove EH installation from the core distribution See http://dev.opennebula.org/projects/elastichosts in order to get the ElasticHosts drivers. --- install.sh | 40 +++----- src/im_mad/eh/im_eh.conf | 7 -- src/im_mad/eh/im_ehrc | 16 ---- src/im_mad/eh/one_im_eh | 42 --------- src/im_mad/eh/one_im_eh.rb | 61 ------------ src/vmm_mad/eh/one_vmm_eh | 38 -------- src/vmm_mad/eh/one_vmm_eh.rb | 178 ----------------------------------- src/vmm_mad/eh/vmm_eh.conf | 1 - src/vmm_mad/eh/vmm_ehrc | 25 ----- 9 files changed, 12 insertions(+), 396 deletions(-) delete mode 100644 src/im_mad/eh/im_eh.conf delete mode 100644 src/im_mad/eh/im_ehrc delete mode 100644 src/im_mad/eh/one_im_eh delete mode 100644 src/im_mad/eh/one_im_eh.rb delete mode 100644 src/vmm_mad/eh/one_vmm_eh delete mode 100644 src/vmm_mad/eh/one_vmm_eh.rb delete mode 100644 src/vmm_mad/eh/vmm_eh.conf delete mode 100644 src/vmm_mad/eh/vmm_ehrc diff --git a/install.sh b/install.sh index 782168eaff..7da1b48534 100755 --- a/install.sh +++ b/install.sh @@ -150,9 +150,7 @@ SHARE_DIRS="$SHARE_LOCATION/examples \ ETC_DIRS="$ETC_LOCATION/im_kvm \ $ETC_LOCATION/im_xen \ $ETC_LOCATION/im_ec2 \ - $ETC_LOCATION/im_eh \ $ETC_LOCATION/vmm_ec2 \ - $ETC_LOCATION/vmm_eh \ $ETC_LOCATION/vmm_sh \ $ETC_LOCATION/tm_nfs \ $ETC_LOCATION/tm_ssh \ @@ -242,20 +240,18 @@ INSTALL_OCCI_CLIENT_FILES[2]="OCCI_BIN_CLIENT_FILES:$BIN_LOCATION" INSTALL_ETC_FILES[0]="ETC_FILES:$ETC_LOCATION" INSTALL_ETC_FILES[1]="VMM_EC2_ETC_FILES:$ETC_LOCATION/vmm_ec2" -INSTALL_ETC_FILES[2]="VMM_EH_ETC_FILES:$ETC_LOCATION/vmm_eh" -INSTALL_ETC_FILES[3]="VMM_SH_ETC_FILES:$ETC_LOCATION/vmm_sh" -INSTALL_ETC_FILES[4]="IM_EC2_ETC_FILES:$ETC_LOCATION/im_ec2" -INSTALL_ETC_FILES[5]="IM_EH_ETC_FILES:$ETC_LOCATION/im_eh" -INSTALL_ETC_FILES[6]="TM_NFS_ETC_FILES:$ETC_LOCATION/tm_nfs" -INSTALL_ETC_FILES[7]="TM_SSH_ETC_FILES:$ETC_LOCATION/tm_ssh" -INSTALL_ETC_FILES[8]="TM_DUMMY_ETC_FILES:$ETC_LOCATION/tm_dummy" -INSTALL_ETC_FILES[9]="TM_LVM_ETC_FILES:$ETC_LOCATION/tm_lvm" -INSTALL_ETC_FILES[10]="HM_ETC_FILES:$ETC_LOCATION/hm" -INSTALL_ETC_FILES[11]="AUTH_ETC_FILES:$ETC_LOCATION/auth" -INSTALL_ETC_FILES[14]="ECO_ETC_FILES:$ETC_LOCATION" -INSTALL_ETC_FILES[15]="ECO_ETC_TEMPLATE_FILES:$ETC_LOCATION/ec2query_templates" -INSTALL_ETC_FILES[16]="OCCI_ETC_FILES:$ETC_LOCATION" -INSTALL_ETC_FILES[17]="OCCI_ETC_TEMPLATE_FILES:$ETC_LOCATION/occi_templates" +INSTALL_ETC_FILES[2]="VMM_SH_ETC_FILES:$ETC_LOCATION/vmm_sh" +INSTALL_ETC_FILES[3]="IM_EC2_ETC_FILES:$ETC_LOCATION/im_ec2" +INSTALL_ETC_FILES[4]="TM_NFS_ETC_FILES:$ETC_LOCATION/tm_nfs" +INSTALL_ETC_FILES[5]="TM_SSH_ETC_FILES:$ETC_LOCATION/tm_ssh" +INSTALL_ETC_FILES[6]="TM_DUMMY_ETC_FILES:$ETC_LOCATION/tm_dummy" +INSTALL_ETC_FILES[7]="TM_LVM_ETC_FILES:$ETC_LOCATION/tm_lvm" +INSTALL_ETC_FILES[8]="HM_ETC_FILES:$ETC_LOCATION/hm" +INSTALL_ETC_FILES[9]="AUTH_ETC_FILES:$ETC_LOCATION/auth" +INSTALL_ETC_FILES[10]="ECO_ETC_FILES:$ETC_LOCATION" +INSTALL_ETC_FILES[11]="ECO_ETC_TEMPLATE_FILES:$ETC_LOCATION/ec2query_templates" +INSTALL_ETC_FILES[12]="OCCI_ETC_FILES:$ETC_LOCATION" +INSTALL_ETC_FILES[13]="OCCI_ETC_TEMPLATE_FILES:$ETC_LOCATION/occi_templates" #------------------------------------------------------------------------------- # Binary files, to be installed under $BIN_LOCATION @@ -325,16 +321,12 @@ MADS_LIB_FILES="src/mad/sh/madcommon.sh \ src/vmm_mad/sh/one_vmm_sh \ src/vmm_mad/ec2/one_vmm_ec2.rb \ src/vmm_mad/ec2/one_vmm_ec2 \ - src/vmm_mad/eh/one_vmm_eh.rb \ - src/vmm_mad/eh/one_vmm_eh \ src/vmm_mad/dummy/one_vmm_dummy.rb \ src/vmm_mad/dummy/one_vmm_dummy \ src/im_mad/im_ssh/one_im_ssh.rb \ src/im_mad/im_ssh/one_im_ssh \ src/im_mad/ec2/one_im_ec2.rb \ src/im_mad/ec2/one_im_ec2 \ - src/im_mad/eh/one_im_eh.rb \ - src/im_mad/eh/one_im_eh \ src/im_mad/dummy/one_im_dummy.rb \ src/im_mad/dummy/one_im_dummy \ src/tm_mad/one_tm \ @@ -429,21 +421,16 @@ ETC_FILES="share/etc/oned.conf \ #------------------------------------------------------------------------------- # Virtualization drivers config. files, to be installed under $ETC_LOCATION # - ec2, $ETC_LOCATION/vmm_ec2 -# - eh, $ETC_LOCATION/vmm_eh # - sh, $ETC_LOCATION/vmm_sh #------------------------------------------------------------------------------- VMM_EC2_ETC_FILES="src/vmm_mad/ec2/vmm_ec2rc \ src/vmm_mad/ec2/vmm_ec2.conf" -VMM_EH_ETC_FILES="src/vmm_mad/eh/vmm_ehrc \ - src/vmm_mad/eh/vmm_eh.conf" - VMM_SH_ETC_FILES="src/vmm_mad/sh/vmm_shrc \ src/vmm_mad/sh/vmm_sh_kvm.conf \ src/vmm_mad/sh/vmm_sh_xen.conf" - #------------------------------------------------------------------------------- # Information drivers config. files, to be installed under $ETC_LOCATION # - ec2, $ETC_LOCATION/im_ec2 @@ -452,9 +439,6 @@ VMM_SH_ETC_FILES="src/vmm_mad/sh/vmm_shrc \ IM_EC2_ETC_FILES="src/im_mad/ec2/im_ec2rc \ src/im_mad/ec2/im_ec2.conf" -IM_EH_ETC_FILES="src/im_mad/eh/im_ehrc \ - src/im_mad/eh/im_eh.conf" - #------------------------------------------------------------------------------- # Storage drivers config. files, to be installed under $ETC_LOCATION # - nfs, $ETC_LOCATION/tm_nfs diff --git a/src/im_mad/eh/im_eh.conf b/src/im_mad/eh/im_eh.conf deleted file mode 100644 index e122c1a79d..0000000000 --- a/src/im_mad/eh/im_eh.conf +++ /dev/null @@ -1,7 +0,0 @@ -# Max memory that can be provided by ElasticHosts -# These defaults allows for two machines with MEMORY=1024 and using 1 CPU - -TOTAL_MEMORY=2048 -TOTAL_CPU=2 - - diff --git a/src/im_mad/eh/im_ehrc b/src/im_mad/eh/im_ehrc deleted file mode 100644 index e740161f09..0000000000 --- a/src/im_mad/eh/im_ehrc +++ /dev/null @@ -1,16 +0,0 @@ -# -------------------------------------------------------------------------- # -# Copyright 2002-2010, 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. # -#--------------------------------------------------------------------------- # - diff --git a/src/im_mad/eh/one_im_eh b/src/im_mad/eh/one_im_eh deleted file mode 100644 index 2c64a8c67f..0000000000 --- a/src/im_mad/eh/one_im_eh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------- # -# Copyright 2002-2010, 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. # -#--------------------------------------------------------------------------- # - -if [ -z "${ONE_LOCATION}" ]; then - EHRC=/etc/one/im_eh/im_ehrc - EHCONF=/etc/one/im_eh/im_eh.conf - MADCOMMON=/usr/lib/one/mads/madcommon.sh - VAR_LOCATION=/var/lib/one -else - EHRC=$ONE_LOCATION/etc/im_eh/im_ehrc - EHCONF=$ONE_LOCATION/etc/im_eh/im_eh.conf - MADCOMMON=$ONE_LOCATION/lib/mads/madcommon.sh - VAR_LOCATION=$ONE_LOCATION/var -fi - -. $MADCOMMON - -# Export the vmm_mad specific rc -export_rc_vars $EHRC - -# Export max instance type usages -export_rc_vars $EHCONF - -# Go to var directory ONE_LOCATION/var or /var/lib/one -cd $VAR_LOCATION - -# Execute the actual MAD -execute_mad $* diff --git a/src/im_mad/eh/one_im_eh.rb b/src/im_mad/eh/one_im_eh.rb deleted file mode 100644 index d6eeb98168..0000000000 --- a/src/im_mad/eh/one_im_eh.rb +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env ruby - -# -------------------------------------------------------------------------- # -# Copyright 2002-2010, 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. # -#--------------------------------------------------------------------------- # - -ONE_LOCATION=ENV["ONE_LOCATION"] - -if !ONE_LOCATION - RUBY_LIB_LOCATION="/usr/lib/one/ruby" -else - RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" -end - -$: << RUBY_LIB_LOCATION - -require 'pp' -require 'one_mad' - -################ -# EC2 IM MAD # -################ - -class IM < ONEMad - - def initialize(sensors=nil) - super(3, 4) - end - - def action_init(args) - STDOUT.puts "INIT SUCCESS" - STDOUT.flush - end - - def action_monitor(args) - - totalmemory = ENV["TOTAL_MEMORY"].to_i - totalcpu = 100 * ENV["TOTAL_CPU"].to_i - - - STDOUT.puts "MONITOR SUCCESS " + args[1].to_s + - "HOSTNAME=#{args[2]},TOTALMEMORY=#{totalmemory},TOTALCPU=#{totalcpu},CPUSPEED=1000,FREEMEMORY=#{totalmemory},FREECPU=#{totalcpu}" - STDOUT.flush - end - -end - -im=IM.new(nil) -im.loop diff --git a/src/vmm_mad/eh/one_vmm_eh b/src/vmm_mad/eh/one_vmm_eh deleted file mode 100644 index 3bfabb0261..0000000000 --- a/src/vmm_mad/eh/one_vmm_eh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# -------------------------------------------------------------------------- # -# Copyright 2002-2010, 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. # -#--------------------------------------------------------------------------- # - -if [ -z "${ONE_LOCATION}" ]; then - DRIVERRC=/etc/one/vmm_eh/vmm_ehrc - MADCOMMON=/usr/lib/one/mads/madcommon.sh - VAR_LOCATION=/var/lib/one -else - DRIVERRC=$ONE_LOCATION/etc/vmm_eh/vmm_ehrc - MADCOMMON=$ONE_LOCATION/lib/mads/madcommon.sh - VAR_LOCATION=$ONE_LOCATION/var -fi - -. $MADCOMMON - -# Export the vmm_mad specific rc -export_rc_vars $DRIVERRC - -# Go to ONE_LOCATION -cd $VAR_LOCATION - -# Execute the actual MAD -execute_mad $* diff --git a/src/vmm_mad/eh/one_vmm_eh.rb b/src/vmm_mad/eh/one_vmm_eh.rb deleted file mode 100644 index 89f0b6038c..0000000000 --- a/src/vmm_mad/eh/one_vmm_eh.rb +++ /dev/null @@ -1,178 +0,0 @@ -#!/usr/bin/env ruby -# -------------------------------------------------------------------------- # -# Copyright 2002-2010, 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. # -#--------------------------------------------------------------------------- # - -EHAUTH = ENV["EHAUTH"] - -if !EHAUTH - puts "EHAUTH not set" - exit -1 -end - -ONE_LOCATION=ENV["ONE_LOCATION"] - -if !ONE_LOCATION - RUBY_LIB_LOCATION="/usr/lib/one/ruby" -else - RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" -end - -$: << RUBY_LIB_LOCATION - -require 'pp' -require 'one_mad' -require 'open3' - -class DM < ONEMad - - def initialize - super(5, 4) - end - - def action_init(args) - - send_message("INIT", "SUCCESS") - - end - - def action_deploy(args) - - action_number=args[1] - action_host=args[2] - remote_deployment_file=args[3] - - # Get local deployment file - local_deployment_file=get_local_deployment_file(remote_deployment_file) - - std_action("DEPLOY", "elastichosts -f #{local_deployment_file} servers create", args) - - end - - def action_shutdown(args) - - std_action("SHUTDOWN", "elastichosts servers #{args[3]} shutdown", args) - - end - - def action_cancel(args) - - std_action("SHUTDOWN", "elastichosts servers #{args[3]} destroy", args) - - end - - def action_checkpoint(args) - - send_message("CHECKPOINT", "FAILURE", args[1], "action not supported for ElasticHost") - - end - - def action_save(args) - - send_message("SAVE", "FAILURE", args[1], "action not supported for ElasticHost") - - end - - def action_restore(args) - - send_message("RESTORE", "FAILURE", args[1], "action not supported for ElasticHost") - - end - - def action_poll(args) - - std = Open3.popen3("elastichosts servers #{args[3]} info; echo ExitCode: $? 1>&2") - - stdout=std[1].read - stderr=std[2].read - - exit_code=get_exit_code(stderr) - - tx=0 - rx=0 - - if exit_code=="0" - stdout.each_line{|line| - cols=line.split(" ") - case cols[0] - when "rx" - rx=cols[1] - when "tx" - tx=cols[1] - end - } - - end - - send_message("POLL", "SUCCESS", args[1],"USEDCPU=0.0 NETTX=#{tx} NETRX=#{rx} USEDMEMORY=0") - - end - - ########################### - # Common action functions # - ########################### - - def std_action(action, command, args) - - std= Open3.popen3("#{command} ; echo ExitCode: $? 1>&2") - - stdout=std[1].read - stderr=std[2].read - - exit_code=get_exit_code(stderr) - - if exit_code=="0" - domain_name=args[3] - if action=="DEPLOY" - remote_deployment_file=args[3] - - # Get local deployment file - local_deployment_file=get_local_deployment_file(remote_deployment_file) - - domain_name = stdout - end - send_message(action, "SUCCESS", args[1], domain_name) - else - error_message=get_error_message(stderr) - send_message(action, "FAILURE", args[1], error_message) - end - - end - - ######################################### - # Get information form xm create output # - ######################################### - - # From STDERR if exit code == 1 - def get_exit_code(str) - tmp=str.scan(/^ExitCode:.*$/)[0] - if tmp - return tmp.split(' ')[1] - else - return -1 - end - end - - # From STDERR if exit code == 1 - def get_error_message(str) - tmp=str.split(/\n/) - return "Unknown error" if !tmp[0] - tmp[0] - end - -end - -dm=DM.new -dm.loop diff --git a/src/vmm_mad/eh/vmm_eh.conf b/src/vmm_mad/eh/vmm_eh.conf deleted file mode 100644 index 22ec225dc7..0000000000 --- a/src/vmm_mad/eh/vmm_eh.conf +++ /dev/null @@ -1 +0,0 @@ -# Default configuration attributes for the ElasticHost driver diff --git a/src/vmm_mad/eh/vmm_ehrc b/src/vmm_mad/eh/vmm_ehrc deleted file mode 100644 index e47129a2db..0000000000 --- a/src/vmm_mad/eh/vmm_ehrc +++ /dev/null @@ -1,25 +0,0 @@ -# -------------------------------------------------------------------------- # -# Copyright 2002-2010, 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. # -#--------------------------------------------------------------------------- ## - -# May be needed in some setups -# CLASSPATH="" - -# -# Note: elastichosts command line script (download it here http://www.elastichosts.com/downloads/elastichosts) -# MUST be in the PATH -# - -EHAUTH=":" From ba4106e1d15a72a2d72b9add0fe1d3f747e6fcb6 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Mon, 27 Sep 2010 14:01:31 +0200 Subject: [PATCH 032/102] Rename ShDriver to SshDriver. Fixed install.sh --- install.sh | 16 ++++++++-------- share/etc/oned.conf | 8 ++++---- src/vmm_mad/{sh/one_vmm_sh => ssh/one_vmm_ssh} | 4 ++-- .../{sh/one_vmm_sh.rb => ssh/one_vmm_ssh.rb} | 10 +++++----- .../{sh/vmm_sh_kvm.conf => ssh/vmm_ssh_kvm.conf} | 0 .../{sh/vmm_sh_xen.conf => ssh/vmm_ssh_xen.conf} | 0 src/vmm_mad/{sh/vmm_shrc => ssh/vmm_sshrc} | 0 7 files changed, 19 insertions(+), 19 deletions(-) rename src/vmm_mad/{sh/one_vmm_sh => ssh/one_vmm_ssh} (94%) rename src/vmm_mad/{sh/one_vmm_sh.rb => ssh/one_vmm_ssh.rb} (96%) rename src/vmm_mad/{sh/vmm_sh_kvm.conf => ssh/vmm_ssh_kvm.conf} (100%) rename src/vmm_mad/{sh/vmm_sh_xen.conf => ssh/vmm_ssh_xen.conf} (100%) rename src/vmm_mad/{sh/vmm_shrc => ssh/vmm_sshrc} (100%) diff --git a/install.sh b/install.sh index 7da1b48534..0990de9f96 100755 --- a/install.sh +++ b/install.sh @@ -151,7 +151,7 @@ ETC_DIRS="$ETC_LOCATION/im_kvm \ $ETC_LOCATION/im_xen \ $ETC_LOCATION/im_ec2 \ $ETC_LOCATION/vmm_ec2 \ - $ETC_LOCATION/vmm_sh \ + $ETC_LOCATION/vmm_ssh \ $ETC_LOCATION/tm_nfs \ $ETC_LOCATION/tm_ssh \ $ETC_LOCATION/tm_dummy \ @@ -240,7 +240,7 @@ INSTALL_OCCI_CLIENT_FILES[2]="OCCI_BIN_CLIENT_FILES:$BIN_LOCATION" INSTALL_ETC_FILES[0]="ETC_FILES:$ETC_LOCATION" INSTALL_ETC_FILES[1]="VMM_EC2_ETC_FILES:$ETC_LOCATION/vmm_ec2" -INSTALL_ETC_FILES[2]="VMM_SH_ETC_FILES:$ETC_LOCATION/vmm_sh" +INSTALL_ETC_FILES[2]="VMM_SH_ETC_FILES:$ETC_LOCATION/vmm_ssh" INSTALL_ETC_FILES[3]="IM_EC2_ETC_FILES:$ETC_LOCATION/im_ec2" INSTALL_ETC_FILES[4]="TM_NFS_ETC_FILES:$ETC_LOCATION/tm_nfs" INSTALL_ETC_FILES[5]="TM_SSH_ETC_FILES:$ETC_LOCATION/tm_ssh" @@ -317,8 +317,8 @@ RUBY_OPENNEBULA_LIB_FILES="src/oca/ruby/OpenNebula/Host.rb \ MADS_LIB_FILES="src/mad/sh/madcommon.sh \ src/tm_mad/tm_common.sh \ - src/vmm_mad/sh/one_vmm_sh.rb \ - src/vmm_mad/sh/one_vmm_sh \ + src/vmm_mad/ssh/one_vmm_ssh.rb \ + src/vmm_mad/ssh/one_vmm_ssh \ src/vmm_mad/ec2/one_vmm_ec2.rb \ src/vmm_mad/ec2/one_vmm_ec2 \ src/vmm_mad/dummy/one_vmm_dummy.rb \ @@ -421,15 +421,15 @@ ETC_FILES="share/etc/oned.conf \ #------------------------------------------------------------------------------- # Virtualization drivers config. files, to be installed under $ETC_LOCATION # - ec2, $ETC_LOCATION/vmm_ec2 -# - sh, $ETC_LOCATION/vmm_sh +# - ssh, $ETC_LOCATION/vmm_ssh #------------------------------------------------------------------------------- VMM_EC2_ETC_FILES="src/vmm_mad/ec2/vmm_ec2rc \ src/vmm_mad/ec2/vmm_ec2.conf" -VMM_SH_ETC_FILES="src/vmm_mad/sh/vmm_shrc \ - src/vmm_mad/sh/vmm_sh_kvm.conf \ - src/vmm_mad/sh/vmm_sh_xen.conf" +VMM_SH_ETC_FILES="src/vmm_mad/ssh/vmm_sshrc \ + src/vmm_mad/ssh/vmm_ssh_kvm.conf \ + src/vmm_mad/ssh/vmm_ssh_xen.conf" #------------------------------------------------------------------------------- # Information drivers config. files, to be installed under $ETC_LOCATION diff --git a/share/etc/oned.conf b/share/etc/oned.conf index b304e57189..81ab5670cf 100644 --- a/share/etc/oned.conf +++ b/share/etc/oned.conf @@ -164,9 +164,9 @@ IM_MAD = [ #------------------------------------------------------------------------------- VM_MAD = [ name = "vmm_kvm", - executable = "one_vmm_sh", + executable = "one_vmm_ssh", arguments = "kvm", - default = "vmm_sh/vmm_sh_kvm.conf", + default = "vmm_ssh/vmm_ssh_kvm.conf", type = "kvm" ] #------------------------------------------------------------------------------- @@ -175,9 +175,9 @@ VM_MAD = [ #------------------------------------------------------------------------------- #VM_MAD = [ # name = "vmm_xen", -# executable = "one_vmm_sh", +# executable = "one_vmm_ssh", # arguments = "xen", -# default = "vmm_sh/vmm_sh_xen.conf", +# default = "vmm_ssh/vmm_ssh_xen.conf", # type = "xen" ] #------------------------------------------------------------------------------- diff --git a/src/vmm_mad/sh/one_vmm_sh b/src/vmm_mad/ssh/one_vmm_ssh similarity index 94% rename from src/vmm_mad/sh/one_vmm_sh rename to src/vmm_mad/ssh/one_vmm_ssh index 1d278edc84..35a503ae63 100755 --- a/src/vmm_mad/sh/one_vmm_sh +++ b/src/vmm_mad/ssh/one_vmm_ssh @@ -17,11 +17,11 @@ #--------------------------------------------------------------------------- # if [ -z "${ONE_LOCATION}" ]; then - DRIVERRC=/etc/one/vmm_sh/vmm_shrc + DRIVERRC=/etc/one/vmm_ssh/vmm_sshrc MADCOMMON=/usr/lib/one/mads/madcommon.sh VAR_LOCATION=/var/lib/one else - DRIVERRC=$ONE_LOCATION/etc/vmm_sh/vmm_shrc + DRIVERRC=$ONE_LOCATION/etc/vmm_ssh/vmm_sshrc MADCOMMON=$ONE_LOCATION/lib/mads/madcommon.sh VAR_LOCATION=$ONE_LOCATION/var fi diff --git a/src/vmm_mad/sh/one_vmm_sh.rb b/src/vmm_mad/ssh/one_vmm_ssh.rb similarity index 96% rename from src/vmm_mad/sh/one_vmm_sh.rb rename to src/vmm_mad/ssh/one_vmm_ssh.rb index 60d39800e9..ed37db0fee 100755 --- a/src/vmm_mad/sh/one_vmm_sh.rb +++ b/src/vmm_mad/ssh/one_vmm_ssh.rb @@ -37,9 +37,9 @@ require "VirtualMachineDriver" # ---------------------------------------------------------------------------- # # The main class for the Sh driver # # ---------------------------------------------------------------------------- # -class ShDriver < VirtualMachineDriver +class SshDriver < VirtualMachineDriver # ------------------------------------------------------------------------ # - # ShDriver constructor # + # SshDriver constructor # # ------------------------------------------------------------------------ # def initialize(hypervisor) super(15,true) @@ -120,9 +120,9 @@ class ShDriver < VirtualMachineDriver end # ---------------------------------------------------------------------------- # -# ShDriver Main program +# SshDriver Main program # ---------------------------------------------------------------------------- # hypervisor = ARGV[0] -sh_driver = ShDriver.new(hypervisor) -sh_driver.start_driver +ssh_driver = SshDriver.new(hypervisor) +ssh_driver.start_driver diff --git a/src/vmm_mad/sh/vmm_sh_kvm.conf b/src/vmm_mad/ssh/vmm_ssh_kvm.conf similarity index 100% rename from src/vmm_mad/sh/vmm_sh_kvm.conf rename to src/vmm_mad/ssh/vmm_ssh_kvm.conf diff --git a/src/vmm_mad/sh/vmm_sh_xen.conf b/src/vmm_mad/ssh/vmm_ssh_xen.conf similarity index 100% rename from src/vmm_mad/sh/vmm_sh_xen.conf rename to src/vmm_mad/ssh/vmm_ssh_xen.conf diff --git a/src/vmm_mad/sh/vmm_shrc b/src/vmm_mad/ssh/vmm_sshrc similarity index 100% rename from src/vmm_mad/sh/vmm_shrc rename to src/vmm_mad/ssh/vmm_sshrc From 7095f3c7b7a0b69565392ce8db230a10470d4fbd Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Mon, 27 Sep 2010 16:46:47 +0200 Subject: [PATCH 033/102] Revert "Rename ShDriver to SshDriver. Fixed install.sh" This reverts commit ba4106e1d15a72a2d72b9add0fe1d3f747e6fcb6. --- install.sh | 16 ++++++++-------- share/etc/oned.conf | 8 ++++---- src/vmm_mad/{ssh/one_vmm_ssh => sh/one_vmm_sh} | 4 ++-- .../{ssh/one_vmm_ssh.rb => sh/one_vmm_sh.rb} | 10 +++++----- .../{ssh/vmm_ssh_kvm.conf => sh/vmm_sh_kvm.conf} | 0 .../{ssh/vmm_ssh_xen.conf => sh/vmm_sh_xen.conf} | 0 src/vmm_mad/{ssh/vmm_sshrc => sh/vmm_shrc} | 0 7 files changed, 19 insertions(+), 19 deletions(-) rename src/vmm_mad/{ssh/one_vmm_ssh => sh/one_vmm_sh} (94%) rename src/vmm_mad/{ssh/one_vmm_ssh.rb => sh/one_vmm_sh.rb} (96%) rename src/vmm_mad/{ssh/vmm_ssh_kvm.conf => sh/vmm_sh_kvm.conf} (100%) rename src/vmm_mad/{ssh/vmm_ssh_xen.conf => sh/vmm_sh_xen.conf} (100%) rename src/vmm_mad/{ssh/vmm_sshrc => sh/vmm_shrc} (100%) diff --git a/install.sh b/install.sh index 0990de9f96..7da1b48534 100755 --- a/install.sh +++ b/install.sh @@ -151,7 +151,7 @@ ETC_DIRS="$ETC_LOCATION/im_kvm \ $ETC_LOCATION/im_xen \ $ETC_LOCATION/im_ec2 \ $ETC_LOCATION/vmm_ec2 \ - $ETC_LOCATION/vmm_ssh \ + $ETC_LOCATION/vmm_sh \ $ETC_LOCATION/tm_nfs \ $ETC_LOCATION/tm_ssh \ $ETC_LOCATION/tm_dummy \ @@ -240,7 +240,7 @@ INSTALL_OCCI_CLIENT_FILES[2]="OCCI_BIN_CLIENT_FILES:$BIN_LOCATION" INSTALL_ETC_FILES[0]="ETC_FILES:$ETC_LOCATION" INSTALL_ETC_FILES[1]="VMM_EC2_ETC_FILES:$ETC_LOCATION/vmm_ec2" -INSTALL_ETC_FILES[2]="VMM_SH_ETC_FILES:$ETC_LOCATION/vmm_ssh" +INSTALL_ETC_FILES[2]="VMM_SH_ETC_FILES:$ETC_LOCATION/vmm_sh" INSTALL_ETC_FILES[3]="IM_EC2_ETC_FILES:$ETC_LOCATION/im_ec2" INSTALL_ETC_FILES[4]="TM_NFS_ETC_FILES:$ETC_LOCATION/tm_nfs" INSTALL_ETC_FILES[5]="TM_SSH_ETC_FILES:$ETC_LOCATION/tm_ssh" @@ -317,8 +317,8 @@ RUBY_OPENNEBULA_LIB_FILES="src/oca/ruby/OpenNebula/Host.rb \ MADS_LIB_FILES="src/mad/sh/madcommon.sh \ src/tm_mad/tm_common.sh \ - src/vmm_mad/ssh/one_vmm_ssh.rb \ - src/vmm_mad/ssh/one_vmm_ssh \ + src/vmm_mad/sh/one_vmm_sh.rb \ + src/vmm_mad/sh/one_vmm_sh \ src/vmm_mad/ec2/one_vmm_ec2.rb \ src/vmm_mad/ec2/one_vmm_ec2 \ src/vmm_mad/dummy/one_vmm_dummy.rb \ @@ -421,15 +421,15 @@ ETC_FILES="share/etc/oned.conf \ #------------------------------------------------------------------------------- # Virtualization drivers config. files, to be installed under $ETC_LOCATION # - ec2, $ETC_LOCATION/vmm_ec2 -# - ssh, $ETC_LOCATION/vmm_ssh +# - sh, $ETC_LOCATION/vmm_sh #------------------------------------------------------------------------------- VMM_EC2_ETC_FILES="src/vmm_mad/ec2/vmm_ec2rc \ src/vmm_mad/ec2/vmm_ec2.conf" -VMM_SH_ETC_FILES="src/vmm_mad/ssh/vmm_sshrc \ - src/vmm_mad/ssh/vmm_ssh_kvm.conf \ - src/vmm_mad/ssh/vmm_ssh_xen.conf" +VMM_SH_ETC_FILES="src/vmm_mad/sh/vmm_shrc \ + src/vmm_mad/sh/vmm_sh_kvm.conf \ + src/vmm_mad/sh/vmm_sh_xen.conf" #------------------------------------------------------------------------------- # Information drivers config. files, to be installed under $ETC_LOCATION diff --git a/share/etc/oned.conf b/share/etc/oned.conf index 81ab5670cf..b304e57189 100644 --- a/share/etc/oned.conf +++ b/share/etc/oned.conf @@ -164,9 +164,9 @@ IM_MAD = [ #------------------------------------------------------------------------------- VM_MAD = [ name = "vmm_kvm", - executable = "one_vmm_ssh", + executable = "one_vmm_sh", arguments = "kvm", - default = "vmm_ssh/vmm_ssh_kvm.conf", + default = "vmm_sh/vmm_sh_kvm.conf", type = "kvm" ] #------------------------------------------------------------------------------- @@ -175,9 +175,9 @@ VM_MAD = [ #------------------------------------------------------------------------------- #VM_MAD = [ # name = "vmm_xen", -# executable = "one_vmm_ssh", +# executable = "one_vmm_sh", # arguments = "xen", -# default = "vmm_ssh/vmm_ssh_xen.conf", +# default = "vmm_sh/vmm_sh_xen.conf", # type = "xen" ] #------------------------------------------------------------------------------- diff --git a/src/vmm_mad/ssh/one_vmm_ssh b/src/vmm_mad/sh/one_vmm_sh similarity index 94% rename from src/vmm_mad/ssh/one_vmm_ssh rename to src/vmm_mad/sh/one_vmm_sh index 35a503ae63..1d278edc84 100755 --- a/src/vmm_mad/ssh/one_vmm_ssh +++ b/src/vmm_mad/sh/one_vmm_sh @@ -17,11 +17,11 @@ #--------------------------------------------------------------------------- # if [ -z "${ONE_LOCATION}" ]; then - DRIVERRC=/etc/one/vmm_ssh/vmm_sshrc + DRIVERRC=/etc/one/vmm_sh/vmm_shrc MADCOMMON=/usr/lib/one/mads/madcommon.sh VAR_LOCATION=/var/lib/one else - DRIVERRC=$ONE_LOCATION/etc/vmm_ssh/vmm_sshrc + DRIVERRC=$ONE_LOCATION/etc/vmm_sh/vmm_shrc MADCOMMON=$ONE_LOCATION/lib/mads/madcommon.sh VAR_LOCATION=$ONE_LOCATION/var fi diff --git a/src/vmm_mad/ssh/one_vmm_ssh.rb b/src/vmm_mad/sh/one_vmm_sh.rb similarity index 96% rename from src/vmm_mad/ssh/one_vmm_ssh.rb rename to src/vmm_mad/sh/one_vmm_sh.rb index ed37db0fee..60d39800e9 100755 --- a/src/vmm_mad/ssh/one_vmm_ssh.rb +++ b/src/vmm_mad/sh/one_vmm_sh.rb @@ -37,9 +37,9 @@ require "VirtualMachineDriver" # ---------------------------------------------------------------------------- # # The main class for the Sh driver # # ---------------------------------------------------------------------------- # -class SshDriver < VirtualMachineDriver +class ShDriver < VirtualMachineDriver # ------------------------------------------------------------------------ # - # SshDriver constructor # + # ShDriver constructor # # ------------------------------------------------------------------------ # def initialize(hypervisor) super(15,true) @@ -120,9 +120,9 @@ class SshDriver < VirtualMachineDriver end # ---------------------------------------------------------------------------- # -# SshDriver Main program +# ShDriver Main program # ---------------------------------------------------------------------------- # hypervisor = ARGV[0] -ssh_driver = SshDriver.new(hypervisor) -ssh_driver.start_driver +sh_driver = ShDriver.new(hypervisor) +sh_driver.start_driver diff --git a/src/vmm_mad/ssh/vmm_ssh_kvm.conf b/src/vmm_mad/sh/vmm_sh_kvm.conf similarity index 100% rename from src/vmm_mad/ssh/vmm_ssh_kvm.conf rename to src/vmm_mad/sh/vmm_sh_kvm.conf diff --git a/src/vmm_mad/ssh/vmm_ssh_xen.conf b/src/vmm_mad/sh/vmm_sh_xen.conf similarity index 100% rename from src/vmm_mad/ssh/vmm_ssh_xen.conf rename to src/vmm_mad/sh/vmm_sh_xen.conf diff --git a/src/vmm_mad/ssh/vmm_sshrc b/src/vmm_mad/sh/vmm_shrc similarity index 100% rename from src/vmm_mad/ssh/vmm_sshrc rename to src/vmm_mad/sh/vmm_shrc From f17ee423ff455862936e0f150eee8a2578f0cd59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Thu, 23 Sep 2010 15:50:52 +0200 Subject: [PATCH 034/102] Feature #192: Tests fixed for commit f1ef57e0b53cf5fdf5f9e79f67e828db7c433f2b, and testing DB name changed for consistency. --- src/pool/test/pool.cc | 2 +- src/template/test/template.cc | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pool/test/pool.cc b/src/pool/test/pool.cc index 5b2580ae8b..2889ee29f0 100644 --- a/src/pool/test/pool.cc +++ b/src/pool/test/pool.cc @@ -66,7 +66,7 @@ public: void setUp() { - string db_name = "testdb"; + string db_name = "ONE_test_database"; if (mysql) { diff --git a/src/template/test/template.cc b/src/template/test/template.cc index dfdd060a18..163310fa70 100644 --- a/src/template/test/template.cc +++ b/src/template/test/template.cc @@ -64,13 +64,13 @@ public: ""; test_ok_str= - "\n\tCPU=4" - "\n\tDISK=EXTRA=disk attribute ,FILE=path1" - "\n\tDISK=EXTRA=str,FILE=path2,TYPE=disk" - "\n\tEMPTY_VAR=" - "\n\tGRAPHICS=PORT=12,VNC=127.0.0.1" - "\n\tMEMORY=345" - "\n\tREQUIREMENTS=HOSTNAME = \"host*.com\""; + "CPU=4\n" + "DISK=EXTRA=disk attribute ,FILE=path1\n" + "DISK=EXTRA=str,FILE=path2,TYPE=disk\n" + "EMPTY_VAR=\n" + "GRAPHICS=PORT=12,VNC=127.0.0.1\n" + "MEMORY=345\n" + "REQUIREMENTS=HOSTNAME = \"host*.com\"\n"; } ~TemplateTest(){}; From d7eaab77f17f16fd4c11fab76916f480969db54b Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Tue, 28 Sep 2010 16:26:27 +0200 Subject: [PATCH 035/102] feature #192: Recover original db name --- src/pool/test/pool.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pool/test/pool.cc b/src/pool/test/pool.cc index 2889ee29f0..5b2580ae8b 100644 --- a/src/pool/test/pool.cc +++ b/src/pool/test/pool.cc @@ -66,7 +66,7 @@ public: void setUp() { - string db_name = "ONE_test_database"; + string db_name = "testdb"; if (mysql) { From 3448f8698603eaf50db47113315815da4e93f0d5 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Tue, 28 Sep 2010 21:24:17 +0200 Subject: [PATCH 036/102] bug #335: Solves seg fault in scheduler with empty strings --- src/scheduler/src/xml/expr_bool.cc | 28 ++++++++++++++-------------- src/scheduler/src/xml/expr_bool.h | 6 +++--- src/scheduler/src/xml/expr_bool.y | 8 ++++---- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/scheduler/src/xml/expr_bool.cc b/src/scheduler/src/xml/expr_bool.cc index d1b86f1d85..0d9c80598f 100644 --- a/src/scheduler/src/xml/expr_bool.cc +++ b/src/scheduler/src/xml/expr_bool.cc @@ -1,9 +1,9 @@ -/* A Bison parser, made by GNU Bison 2.4.2. */ +/* A Bison parser, made by GNU Bison 2.4.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software - Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,7 +45,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.4.2" +#define YYBISON_VERSION "2.4.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -1243,7 +1243,7 @@ YYLTYPE yylloc; YYLTYPE *yylsp; /* The locations where the error started and ended. */ - YYLTYPE yyerror_range[2]; + YYLTYPE yyerror_range[3]; YYSIZE_T yystacksize; @@ -1556,7 +1556,7 @@ yyreduce: /* Line 1464 of yacc.c */ #line 137 "expr_bool.y" - {float val; + { float val; get_xml_attribute(oxml,(yyvsp[(1) - (3)].val_str),val); (yyval.val_int) = val > (yyvsp[(3) - (3)].val_float);;} @@ -1566,7 +1566,7 @@ yyreduce: /* Line 1464 of yacc.c */ #line 142 "expr_bool.y" - {float val; + { float val; get_xml_attribute(oxml,(yyvsp[(1) - (3)].val_str),val); (yyval.val_int) = val < (yyvsp[(3) - (3)].val_float);;} @@ -1579,7 +1579,7 @@ yyreduce: { string val; get_xml_attribute(oxml,(yyvsp[(1) - (3)].val_str),val); - (yyval.val_int) = val.empty() ? false :fnmatch((yyvsp[(3) - (3)].val_str), val.c_str(), 0) == 0;;} + (yyval.val_int) = (val.empty() || (yyvsp[(3) - (3)].val_str)==0) ? false : fnmatch((yyvsp[(3) - (3)].val_str),val.c_str(),0)==0;;} break; case 13: @@ -1589,7 +1589,7 @@ yyreduce: { string val; get_xml_attribute(oxml,(yyvsp[(1) - (4)].val_str),val); - (yyval.val_int) = val.empty() ? false : fnmatch((yyvsp[(4) - (4)].val_str), val.c_str(), 0) != 0;;} + (yyval.val_int) = (val.empty() || (yyvsp[(4) - (4)].val_str)==0) ? false : fnmatch((yyvsp[(4) - (4)].val_str),val.c_str(),0)!=0;;} break; case 14: @@ -1695,7 +1695,7 @@ yyerrlab: #endif } - yyerror_range[0] = yylloc; + yyerror_range[1] = yylloc; if (yyerrstatus == 3) { @@ -1732,7 +1732,7 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; - yyerror_range[0] = yylsp[1-yylen]; + yyerror_range[1] = yylsp[1-yylen]; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); @@ -1766,7 +1766,7 @@ yyerrlab1: if (yyssp == yyss) YYABORT; - yyerror_range[0] = *yylsp; + yyerror_range[1] = *yylsp; yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp, mc, oxml, result, error_msg); YYPOPSTACK (1); @@ -1776,10 +1776,10 @@ yyerrlab1: *++yyvsp = yylval; - yyerror_range[1] = yylloc; + yyerror_range[2] = yylloc; /* Using YYLLOC is tempting, but would change the location of the lookahead. YYLOC is available though. */ - YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); + YYLLOC_DEFAULT (yyloc, yyerror_range, 2); *++yylsp = yyloc; /* Shift the error token. */ diff --git a/src/scheduler/src/xml/expr_bool.h b/src/scheduler/src/xml/expr_bool.h index 41d20a621f..3e0c95e1f6 100644 --- a/src/scheduler/src/xml/expr_bool.h +++ b/src/scheduler/src/xml/expr_bool.h @@ -1,9 +1,9 @@ -/* A Bison parser, made by GNU Bison 2.4.2. */ +/* A Bison parser, made by GNU Bison 2.4.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software - Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/src/scheduler/src/xml/expr_bool.y b/src/scheduler/src/xml/expr_bool.y index 0a1bb7199c..fc7adc891d 100644 --- a/src/scheduler/src/xml/expr_bool.y +++ b/src/scheduler/src/xml/expr_bool.y @@ -134,12 +134,12 @@ expr: STRING '=' INTEGER { int val; get_xml_attribute(oxml,$1,val); $$ = val != $4;} - | STRING '>' FLOAT {float val; + | STRING '>' FLOAT { float val; get_xml_attribute(oxml,$1,val); $$ = val > $3;} - | STRING '<' FLOAT {float val; + | STRING '<' FLOAT { float val; get_xml_attribute(oxml,$1,val); $$ = val < $3;} @@ -147,12 +147,12 @@ expr: STRING '=' INTEGER { int val; | STRING '=' STRING { string val; get_xml_attribute(oxml,$1,val); - $$ = val.empty() ? false :fnmatch($3, val.c_str(), 0) == 0;} + $$ = (val.empty() || $3==0) ? false : fnmatch($3,val.c_str(),0)==0;} | STRING '!''=' STRING { string val; get_xml_attribute(oxml,$1,val); - $$ = val.empty() ? false : fnmatch($4, val.c_str(), 0) != 0;} + $$ = (val.empty() || $4==0) ? false : fnmatch($4,val.c_str(),0)!=0;} | expr '&' expr { $$ = $1 && $3; } | expr '|' expr { $$ = $1 || $3; } From 1da03e831037449a2fffedbc7edd2083816f5cd5 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Wed, 29 Sep 2010 12:07:20 +0200 Subject: [PATCH 037/102] In the end we have decided to rename ShDriver to SshDriver. This reverts commit 7095f3c7b7a0b69565392ce8db230a10470d4fbd. --- install.sh | 24 +++++++++---------- share/etc/oned.conf | 8 +++---- .../{sh/one_vmm_sh => ssh/one_vmm_ssh} | 4 ++-- .../{sh/one_vmm_sh.rb => ssh/one_vmm_ssh.rb} | 10 ++++---- .../vmm_sh_kvm.conf => ssh/vmm_ssh_kvm.conf} | 0 .../vmm_sh_xen.conf => ssh/vmm_ssh_xen.conf} | 0 src/vmm_mad/{sh/vmm_shrc => ssh/vmm_sshrc} | 0 7 files changed, 23 insertions(+), 23 deletions(-) rename src/vmm_mad/{sh/one_vmm_sh => ssh/one_vmm_ssh} (94%) rename src/vmm_mad/{sh/one_vmm_sh.rb => ssh/one_vmm_ssh.rb} (96%) rename src/vmm_mad/{sh/vmm_sh_kvm.conf => ssh/vmm_ssh_kvm.conf} (100%) rename src/vmm_mad/{sh/vmm_sh_xen.conf => ssh/vmm_ssh_xen.conf} (100%) rename src/vmm_mad/{sh/vmm_shrc => ssh/vmm_sshrc} (100%) diff --git a/install.sh b/install.sh index 7da1b48534..f64a8c18a0 100755 --- a/install.sh +++ b/install.sh @@ -151,7 +151,7 @@ ETC_DIRS="$ETC_LOCATION/im_kvm \ $ETC_LOCATION/im_xen \ $ETC_LOCATION/im_ec2 \ $ETC_LOCATION/vmm_ec2 \ - $ETC_LOCATION/vmm_sh \ + $ETC_LOCATION/vmm_ssh \ $ETC_LOCATION/tm_nfs \ $ETC_LOCATION/tm_ssh \ $ETC_LOCATION/tm_dummy \ @@ -214,8 +214,8 @@ INSTALL_FILES[6]="IM_PROBES_FILES:$LIB_LOCATION/remotes/im" INSTALL_FILES[7]="IM_PROBES_COMMON_FILES:$LIB_LOCATION/remotes/im/common.d" INSTALL_FILES[8]="IM_PROBES_KVM_FILES:$LIB_LOCATION/remotes/im/kvm.d" INSTALL_FILES[9]="IM_PROBES_XEN_FILES:$LIB_LOCATION/remotes/im/xen.d" -INSTALL_FILES[10]="VMM_SH_KVM_SCRIPTS:$LIB_LOCATION/remotes/vmm/kvm" -INSTALL_FILES[11]="VMM_SH_XEN_SCRIPTS:$LIB_LOCATION/remotes/vmm/xen" +INSTALL_FILES[10]="VMM_SSH_KVM_SCRIPTS:$LIB_LOCATION/remotes/vmm/kvm" +INSTALL_FILES[11]="VMM_SSH_XEN_SCRIPTS:$LIB_LOCATION/remotes/vmm/xen" INSTALL_FILES[12]="NFS_TM_COMMANDS_LIB_FILES:$LIB_LOCATION/tm_commands/nfs" INSTALL_FILES[13]="SSH_TM_COMMANDS_LIB_FILES:$LIB_LOCATION/tm_commands/ssh" INSTALL_FILES[14]="DUMMY_TM_COMMANDS_LIB_FILES:$LIB_LOCATION/tm_commands/dummy" @@ -240,7 +240,7 @@ INSTALL_OCCI_CLIENT_FILES[2]="OCCI_BIN_CLIENT_FILES:$BIN_LOCATION" INSTALL_ETC_FILES[0]="ETC_FILES:$ETC_LOCATION" INSTALL_ETC_FILES[1]="VMM_EC2_ETC_FILES:$ETC_LOCATION/vmm_ec2" -INSTALL_ETC_FILES[2]="VMM_SH_ETC_FILES:$ETC_LOCATION/vmm_sh" +INSTALL_ETC_FILES[2]="VMM_SSH_ETC_FILES:$ETC_LOCATION/vmm_ssh" INSTALL_ETC_FILES[3]="IM_EC2_ETC_FILES:$ETC_LOCATION/im_ec2" INSTALL_ETC_FILES[4]="TM_NFS_ETC_FILES:$ETC_LOCATION/tm_nfs" INSTALL_ETC_FILES[5]="TM_SSH_ETC_FILES:$ETC_LOCATION/tm_ssh" @@ -317,8 +317,8 @@ RUBY_OPENNEBULA_LIB_FILES="src/oca/ruby/OpenNebula/Host.rb \ MADS_LIB_FILES="src/mad/sh/madcommon.sh \ src/tm_mad/tm_common.sh \ - src/vmm_mad/sh/one_vmm_sh.rb \ - src/vmm_mad/sh/one_vmm_sh \ + src/vmm_mad/ssh/one_vmm_ssh.rb \ + src/vmm_mad/ssh/one_vmm_ssh \ src/vmm_mad/ec2/one_vmm_ec2.rb \ src/vmm_mad/ec2/one_vmm_ec2 \ src/vmm_mad/dummy/one_vmm_dummy.rb \ @@ -340,7 +340,7 @@ MADS_LIB_FILES="src/mad/sh/madcommon.sh \ # VMM SH Driver KVM scripts, to be installed under $REMOTES_LOCATION/vmm/kvm #------------------------------------------------------------------------------- -VMM_SH_KVM_SCRIPTS="src/vmm_mad/remotes/kvm/cancel \ +VMM_SSH_KVM_SCRIPTS="src/vmm_mad/remotes/kvm/cancel \ src/vmm_mad/remotes/kvm/deploy \ src/vmm_mad/remotes/kvm/kvmrc \ src/vmm_mad/remotes/kvm/migrate \ @@ -353,7 +353,7 @@ VMM_SH_KVM_SCRIPTS="src/vmm_mad/remotes/kvm/cancel \ # VMM SH Driver Xen scripts, to be installed under $REMOTES_LOCATION/vmm/xen #------------------------------------------------------------------------------- -VMM_SH_XEN_SCRIPTS="src/vmm_mad/remotes/xen/cancel \ +VMM_SSH_XEN_SCRIPTS="src/vmm_mad/remotes/xen/cancel \ src/vmm_mad/remotes/xen/deploy \ src/vmm_mad/remotes/xen/xenrc \ src/vmm_mad/remotes/xen/migrate \ @@ -421,15 +421,15 @@ ETC_FILES="share/etc/oned.conf \ #------------------------------------------------------------------------------- # Virtualization drivers config. files, to be installed under $ETC_LOCATION # - ec2, $ETC_LOCATION/vmm_ec2 -# - sh, $ETC_LOCATION/vmm_sh +# - ssh, $ETC_LOCATION/vmm_ssh #------------------------------------------------------------------------------- VMM_EC2_ETC_FILES="src/vmm_mad/ec2/vmm_ec2rc \ src/vmm_mad/ec2/vmm_ec2.conf" -VMM_SH_ETC_FILES="src/vmm_mad/sh/vmm_shrc \ - src/vmm_mad/sh/vmm_sh_kvm.conf \ - src/vmm_mad/sh/vmm_sh_xen.conf" +VMM_SSH_ETC_FILES="src/vmm_mad/ssh/vmm_sshrc \ + src/vmm_mad/ssh/vmm_ssh_kvm.conf \ + src/vmm_mad/ssh/vmm_ssh_xen.conf" #------------------------------------------------------------------------------- # Information drivers config. files, to be installed under $ETC_LOCATION diff --git a/share/etc/oned.conf b/share/etc/oned.conf index b304e57189..81ab5670cf 100644 --- a/share/etc/oned.conf +++ b/share/etc/oned.conf @@ -164,9 +164,9 @@ IM_MAD = [ #------------------------------------------------------------------------------- VM_MAD = [ name = "vmm_kvm", - executable = "one_vmm_sh", + executable = "one_vmm_ssh", arguments = "kvm", - default = "vmm_sh/vmm_sh_kvm.conf", + default = "vmm_ssh/vmm_ssh_kvm.conf", type = "kvm" ] #------------------------------------------------------------------------------- @@ -175,9 +175,9 @@ VM_MAD = [ #------------------------------------------------------------------------------- #VM_MAD = [ # name = "vmm_xen", -# executable = "one_vmm_sh", +# executable = "one_vmm_ssh", # arguments = "xen", -# default = "vmm_sh/vmm_sh_xen.conf", +# default = "vmm_ssh/vmm_ssh_xen.conf", # type = "xen" ] #------------------------------------------------------------------------------- diff --git a/src/vmm_mad/sh/one_vmm_sh b/src/vmm_mad/ssh/one_vmm_ssh similarity index 94% rename from src/vmm_mad/sh/one_vmm_sh rename to src/vmm_mad/ssh/one_vmm_ssh index 1d278edc84..35a503ae63 100755 --- a/src/vmm_mad/sh/one_vmm_sh +++ b/src/vmm_mad/ssh/one_vmm_ssh @@ -17,11 +17,11 @@ #--------------------------------------------------------------------------- # if [ -z "${ONE_LOCATION}" ]; then - DRIVERRC=/etc/one/vmm_sh/vmm_shrc + DRIVERRC=/etc/one/vmm_ssh/vmm_sshrc MADCOMMON=/usr/lib/one/mads/madcommon.sh VAR_LOCATION=/var/lib/one else - DRIVERRC=$ONE_LOCATION/etc/vmm_sh/vmm_shrc + DRIVERRC=$ONE_LOCATION/etc/vmm_ssh/vmm_sshrc MADCOMMON=$ONE_LOCATION/lib/mads/madcommon.sh VAR_LOCATION=$ONE_LOCATION/var fi diff --git a/src/vmm_mad/sh/one_vmm_sh.rb b/src/vmm_mad/ssh/one_vmm_ssh.rb similarity index 96% rename from src/vmm_mad/sh/one_vmm_sh.rb rename to src/vmm_mad/ssh/one_vmm_ssh.rb index 60d39800e9..ed37db0fee 100755 --- a/src/vmm_mad/sh/one_vmm_sh.rb +++ b/src/vmm_mad/ssh/one_vmm_ssh.rb @@ -37,9 +37,9 @@ require "VirtualMachineDriver" # ---------------------------------------------------------------------------- # # The main class for the Sh driver # # ---------------------------------------------------------------------------- # -class ShDriver < VirtualMachineDriver +class SshDriver < VirtualMachineDriver # ------------------------------------------------------------------------ # - # ShDriver constructor # + # SshDriver constructor # # ------------------------------------------------------------------------ # def initialize(hypervisor) super(15,true) @@ -120,9 +120,9 @@ class ShDriver < VirtualMachineDriver end # ---------------------------------------------------------------------------- # -# ShDriver Main program +# SshDriver Main program # ---------------------------------------------------------------------------- # hypervisor = ARGV[0] -sh_driver = ShDriver.new(hypervisor) -sh_driver.start_driver +ssh_driver = SshDriver.new(hypervisor) +ssh_driver.start_driver diff --git a/src/vmm_mad/sh/vmm_sh_kvm.conf b/src/vmm_mad/ssh/vmm_ssh_kvm.conf similarity index 100% rename from src/vmm_mad/sh/vmm_sh_kvm.conf rename to src/vmm_mad/ssh/vmm_ssh_kvm.conf diff --git a/src/vmm_mad/sh/vmm_sh_xen.conf b/src/vmm_mad/ssh/vmm_ssh_xen.conf similarity index 100% rename from src/vmm_mad/sh/vmm_sh_xen.conf rename to src/vmm_mad/ssh/vmm_ssh_xen.conf diff --git a/src/vmm_mad/sh/vmm_shrc b/src/vmm_mad/ssh/vmm_sshrc similarity index 100% rename from src/vmm_mad/sh/vmm_shrc rename to src/vmm_mad/ssh/vmm_sshrc From 59bc8cd7fc9c62ee85c69f76a0f2acca01efe8f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tino=20V=C3=A1zquez?= Date: Thu, 30 Sep 2010 17:08:32 +0200 Subject: [PATCH 038/102] feature #199: Native suuport of vmware in the core --- include/LibVirtDriver.h | 8 + src/vmm/LibVirtDriver.cc | 351 ++++++++++++++++++++++++++++++- src/vmm/VirtualMachineManager.cc | 5 + 3 files changed, 363 insertions(+), 1 deletion(-) diff --git a/include/LibVirtDriver.h b/include/LibVirtDriver.h index 814e72b328..5f4e085d53 100644 --- a/include/LibVirtDriver.h +++ b/include/LibVirtDriver.h @@ -44,6 +44,14 @@ private: const VirtualMachine * vm, const string& file_name) const; + int deployment_description_kvm( + const VirtualMachine * vm, + const string& file_name) const; + + int deployment_description_vmware( + const VirtualMachine * vm, + const string& file_name) const; + const string emulator; }; diff --git a/src/vmm/LibVirtDriver.cc b/src/vmm/LibVirtDriver.cc index c55468defd..e02e455c9d 100644 --- a/src/vmm/LibVirtDriver.cc +++ b/src/vmm/LibVirtDriver.cc @@ -19,13 +19,29 @@ #include "Nebula.h" #include #include - +#include int LibVirtDriver::deployment_description( const VirtualMachine * vm, const string& file_name) const { + int rc = -1; + if (emulator == "kvm") + { + rc = deployment_description_kvm(vm,file_name); + } + else if (emulator == "vmware") + { + rc = deployment_description_vmware(vm,file_name); + } + + return rc; +} +int LibVirtDriver::deployment_description_kvm( + const VirtualMachine * vm, + const string& file_name) const +{ ofstream file; int num; @@ -584,6 +600,339 @@ error_boot: return -1; error_disk: + vm->log("VMM", Log::ERROR, "Wrong target value in DISK."); + file.close(); + return -1; +} + +int LibVirtDriver::deployment_description_vmware( + const VirtualMachine * vm, + const string& file_name) const +{ + ofstream file; + + int num; + vector attrs; + + string vcpu; + string memory; + + int memory_in_kb = 0; + + string arch = ""; + + const VectorAttribute * disk; + + string type = ""; + string target = ""; + string bus = ""; + string ro = ""; + string source = ""; + string datastore = ""; + bool readonly; + + const VectorAttribute * nic; + + string mac = ""; + string bridge = ""; + string script = ""; + string model = ""; + + const VectorAttribute * raw; + string data; + + // ------------------------------------------------------------------------ + + file.open(file_name.c_str(), ios::out); + + if (file.fail() == true) + { + goto error_vmware_file; + } + + // ------------------------------------------------------------------------ + // Starting XML document + // ------------------------------------------------------------------------ + + file << "" << endl; + + // ------------------------------------------------------------------------ + // Domain name + // ------------------------------------------------------------------------ + + file << "\tone-" << vm->get_oid() << "" << endl; + + // ------------------------------------------------------------------------ + // CPU + // ------------------------------------------------------------------------ + + vm->get_template_attribute("VCPU", vcpu); + + if(vcpu.empty()) + { + get_default("VCPU", vcpu); + } + + if (!vcpu.empty()) + { + file << "\t" << vcpu << "" << endl; + } + + // ------------------------------------------------------------------------ + // Memory + // ------------------------------------------------------------------------ + + vm->get_template_attribute("MEMORY",memory); + + if (memory.empty()) + { + get_default("MEMORY",memory); + } + + if (!memory.empty()) + { + memory_in_kb = atoi(memory.c_str()) * 1024; + + file << "\t" << memory_in_kb << "" << endl; + } + else + { + goto error_vmware_memory; + } + + // ------------------------------------------------------------------------ + // OS and boot options + // ------------------------------------------------------------------------ + + num = vm->get_template_attribute("OS",attrs); + + // Get values & defaults + if ( num > 0 ) + { + const VectorAttribute * os; + + os = dynamic_cast(attrs[0]); + + if( os != 0 ) + { + arch = os->vector_value("ARCHITECTURE"); + } + } + + + // Start writing to the file with the info we got + + file << "\t" << endl; + + + if ( arch.empty() ) + { + get_default("OS","ARCH",arch); + } + + if (arch.empty()) + { + goto error_vmware_arch; + } + + file << "\t\thvm" << endl; + + file << "\t" << endl; + + attrs.clear(); + + // ------------------------------------------------------------------------ + // Disks + // ------------------------------------------------------------------------ + + file << "\t" << endl; + + num = vm->get_template_attribute("DISK",attrs); + + if (num!=0) + { + get_default("DATASTORE", datastore); + } + + for (int i=0; i < num ;i++) + { + disk = dynamic_cast(attrs[i]); + + if ( disk == 0 ) + { + continue; + } + + type = disk->vector_value("TYPE"); + target = disk->vector_value("TARGET"); + ro = disk->vector_value("READONLY"); + bus = disk->vector_value("BUS"); + source = disk->vector_value("SOURCE"); + + if (target.empty()) + { + goto error_vmware_disk; + } + + readonly = false; + + if ( !ro.empty() ) + { + transform(ro.begin(),ro.end(),ro.begin(),(int(*)(int))toupper); + + if ( ro == "YES" ) + { + readonly = true; + } + } + + if (type.empty() == false) + { + transform(type.begin(),type.end(),type.begin(),(int(*)(int))toupper); + } + + if ( type == "BLOCK" ) + { + file << "\t\t" << endl; + file << "\t\t\t" << endl; + } + else if ( type == "CDROM" ) + { + file << "\t\t" << endl; + file << "\t\t\t" << endl; + } + else + { + file << "\t\t" << endl + << "\t\t\t" << endl; + } + + file << "\t\t\t" << endl; + } + else + { + file << "/>" << endl; + } + + if (readonly) + { + file << "\t\t\t" << endl; + } + + file << "\t\t" << endl; + } + + attrs.clear(); + + // ------------------------------------------------------------------------ + // Network interfaces + // ------------------------------------------------------------------------ + + num = vm->get_template_attribute("NIC",attrs); + + for(int i=0; i(attrs[i]); + + if ( nic == 0 ) + { + continue; + } + + bridge = nic->vector_value("BRIDGE"); + mac = nic->vector_value("MAC"); + target = nic->vector_value("TARGET"); + script = nic->vector_value("SCRIPT"); + model = nic->vector_value("MODEL"); + + if ( bridge.empty() ) + { + file << "\t\t" << endl; + } + else + { + file << "\t\t" << endl; + file << "\t\t\t" << endl; + } + + if( !mac.empty() ) + { + file << "\t\t\t" << endl; + } + + if( !target.empty() ) + { + file << "\t\t\t" << endl; + } + + if( !script.empty() ) + { + file << "\t\t\t