1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-23 22:50:09 +03:00

Merge branch 'master' of git.opennebula.org:one

This commit is contained in:
Daniel Molina 2011-09-22 12:52:25 +02:00
commit c8fbdf8ed6
55 changed files with 1195 additions and 170 deletions

View File

@ -96,6 +96,27 @@ public:
void release_image(const string& iid,
const string& disk_path,
int disk_num,
const string& saveid)
{
int image_id;
istringstream iss;
iss.str(iid);
iss >> image_id;
release_image(image_id, disk_path, disk_num, saveid);
};
/**
* Releases an image and triggers any needed operations in the repo
* @param iid image id of the image to be released
* @param disk_path base path for disk location
* @param disk number for this image in the VM
* @param saveid id of image to save the current image
*/
void release_image(int iid,
const string& disk_path,
int disk_num,
const string& saveid);
/**

View File

@ -130,6 +130,7 @@ public:
* automatically increased.
* @param img_type will be set to the used image's type
* @param uid of VM owner (to look for the image id within its images)
* @param image_id on success returns the acquired image id
* @return 0 on success,
* -1 error,
* -2 not using the pool,
@ -139,7 +140,8 @@ public:
int disk_id,
int * index,
Image::ImageType * img_type,
int uid);
int uid,
int& image_id);
/**
* Generates an Authorization token for the DISK attribute
* @param disk the disk to be authorized

View File

@ -449,8 +449,9 @@ private:
void bootstrap();
/**
* Callback function to TODO
* @param _loaded_db_version TODO
* Callback function for the check_db_version method. Stores the read
* version in loaded_db_version
* @param _loaded_db_version returned columns
* @param num the number of columns read from the DB
* @param names the column names
* @param vaues the column values
@ -459,9 +460,12 @@ private:
int select_cb(void *_loaded_db_version, int num, char **values,
char **names);
/*
* TODO
* @return 0 ok, -1 version mismatch, -2 needs bootstrap
/**
* Reads the current DB version.
*
* @return 0 on success,
* -1 if there is a version mismatch,
* -2 if the DB needs a bootstrap
*/
int check_db_version();
};

View File

@ -35,12 +35,21 @@ protected:
:Request(method_name,params,help)
{
auth_op = AuthRequest::CHOWN;
Nebula& nd = Nebula::instance();
gpool = nd.get_gpool();
upool = nd.get_upool();
};
~RequestManagerChown(){};
/* -------------------------------------------------------------------- */
GroupPool * gpool;
UserPool * upool;
/* -------------------------------------------------------------------- */
virtual void request_execute(xmlrpc_c::paramList const& _paramList,
RequestAttributes& att);
};

View File

@ -185,7 +185,7 @@ ETC_DIRS="$ETC_LOCATION/im_kvm \
$ETC_LOCATION/im_ec2 \
$ETC_LOCATION/vmm_ec2 \
$ETC_LOCATION/vmm_exec \
$ETC_LOCATION/tm_nfs \
$ETC_LOCATION/tm_shared \
$ETC_LOCATION/tm_ssh \
$ETC_LOCATION/tm_dummy \
$ETC_LOCATION/tm_lvm \
@ -204,7 +204,7 @@ LIB_DIRS="$LIB_LOCATION/ruby \
$LIB_LOCATION/ruby/cloud/occi \
$LIB_LOCATION/ruby/onedb \
$LIB_LOCATION/tm_commands \
$LIB_LOCATION/tm_commands/nfs \
$LIB_LOCATION/tm_commands/shared \
$LIB_LOCATION/tm_commands/ssh \
$LIB_LOCATION/tm_commands/dummy \
$LIB_LOCATION/tm_commands/lvm \
@ -332,11 +332,7 @@ INSTALL_FILES=(
AUTH_QUOTA_FILES:$VAR_LOCATION/remotes/auth/quota
VMM_EXEC_KVM_SCRIPTS:$VAR_LOCATION/remotes/vmm/kvm
VMM_EXEC_XEN_SCRIPTS:$VAR_LOCATION/remotes/vmm/xen
VMM_EXEC_XEN_KVM_POLL:$VAR_LOCATION/remotes/vmm/kvm/poll
VMM_EXEC_XEN_KVM_POLL:$VAR_LOCATION/remotes/vmm/xen/poll
VMM_EXEC_GANGLIA_POLL:$VAR_LOCATION/remotes/vmm/kvm/poll_local
VMM_EXEC_GANGLIA_POLL:$VAR_LOCATION/remotes/vmm/xen/poll_local
NFS_TM_COMMANDS_LIB_FILES:$LIB_LOCATION/tm_commands/nfs
SHARED_TM_COMMANDS_LIB_FILES:$LIB_LOCATION/tm_commands/shared
SSH_TM_COMMANDS_LIB_FILES:$LIB_LOCATION/tm_commands/ssh
DUMMY_TM_COMMANDS_LIB_FILES:$LIB_LOCATION/tm_commands/dummy
LVM_TM_COMMANDS_LIB_FILES:$LIB_LOCATION/tm_commands/lvm
@ -445,7 +441,7 @@ INSTALL_ETC_FILES=(
VMM_EC2_ETC_FILES:$ETC_LOCATION/vmm_ec2
VMM_EXEC_ETC_FILES:$ETC_LOCATION/vmm_exec
IM_EC2_ETC_FILES:$ETC_LOCATION/im_ec2
TM_NFS_ETC_FILES:$ETC_LOCATION/tm_nfs
TM_SHARED_ETC_FILES:$ETC_LOCATION/tm_shared
TM_SSH_ETC_FILES:$ETC_LOCATION/tm_ssh
TM_DUMMY_ETC_FILES:$ETC_LOCATION/tm_dummy
TM_LVM_ETC_FILES:$ETC_LOCATION/tm_lvm
@ -552,6 +548,8 @@ VMM_EXEC_KVM_SCRIPTS="src/vmm_mad/remotes/kvm/cancel \
src/vmm_mad/remotes/kvm/migrate_local \
src/vmm_mad/remotes/kvm/restore \
src/vmm_mad/remotes/kvm/save \
src/vmm_mad/remotes/kvm/poll \
src/vmm_mad/remotes/kvm/poll_ganglia \
src/vmm_mad/remotes/kvm/shutdown"
#-------------------------------------------------------------------------------
@ -564,15 +562,10 @@ VMM_EXEC_XEN_SCRIPTS="src/vmm_mad/remotes/xen/cancel \
src/vmm_mad/remotes/xen/migrate \
src/vmm_mad/remotes/xen/restore \
src/vmm_mad/remotes/xen/save \
src/vmm_mad/remotes/xen/poll \
src/vmm_mad/remotes/xen/poll_ganglia \
src/vmm_mad/remotes/xen/shutdown"
#-----------------------------------------------------------------------------
# VMM SH Driver xen/kvm scripts, to be installed under $REMOTES_LOCATION/vmm/*
#-----------------------------------------------------------------------------
VMM_EXEC_XEN_KVM_POLL="src/vmm_mad/remotes/poll_xen_kvm.rb"
VMM_EXEC_GANGLIA_POLL="src/vmm_mad/remotes/poll_ganglia.rb"
#-------------------------------------------------------------------------------
# Information Manager Probes, to be installed under $REMOTES_LOCATION/im
#-------------------------------------------------------------------------------
@ -609,19 +602,19 @@ AUTH_QUOTA_FILES="src/authm_mad/remotes/quota/authorize"
#-------------------------------------------------------------------------------
# Transfer Manager commands, to be installed under $LIB_LOCATION/tm_commands
# - NFS TM, $LIB_LOCATION/tm_commands/nfs
# - SHARED TM, $LIB_LOCATION/tm_commands/shared
# - SSH TM, $LIB_LOCATION/tm_commands/ssh
# - dummy TM, $LIB_LOCATION/tm_commands/dummy
# - LVM TM, $LIB_LOCATION/tm_commands/lvm
#-------------------------------------------------------------------------------
NFS_TM_COMMANDS_LIB_FILES="src/tm_mad/nfs/tm_clone.sh \
src/tm_mad/nfs/tm_delete.sh \
src/tm_mad/nfs/tm_ln.sh \
src/tm_mad/nfs/tm_mkswap.sh \
src/tm_mad/nfs/tm_mkimage.sh \
src/tm_mad/nfs/tm_mv.sh \
src/tm_mad/nfs/tm_context.sh"
SHARED_TM_COMMANDS_LIB_FILES="src/tm_mad/shared/tm_clone.sh \
src/tm_mad/shared/tm_delete.sh \
src/tm_mad/shared/tm_ln.sh \
src/tm_mad/shared/tm_mkswap.sh \
src/tm_mad/shared/tm_mkimage.sh \
src/tm_mad/shared/tm_mv.sh \
src/tm_mad/shared/tm_context.sh"
SSH_TM_COMMANDS_LIB_FILES="src/tm_mad/ssh/tm_clone.sh \
src/tm_mad/ssh/tm_delete.sh \
@ -691,14 +684,14 @@ IM_EC2_ETC_FILES="src/im_mad/ec2/im_ec2rc \
#-------------------------------------------------------------------------------
# Storage drivers config. files, to be installed under $ETC_LOCATION
# - nfs, $ETC_LOCATION/tm_nfs
# - shared, $ETC_LOCATION/tm_shared
# - ssh, $ETC_LOCATION/tm_ssh
# - dummy, $ETC_LOCATION/tm_dummy
# - lvm, $ETC_LOCATION/tm_lvm
#-------------------------------------------------------------------------------
TM_NFS_ETC_FILES="src/tm_mad/nfs/tm_nfs.conf \
src/tm_mad/nfs/tm_nfsrc"
TM_SHARED_ETC_FILES="src/tm_mad/shared/tm_shared.conf \
src/tm_mad/shared/tm_sharedrc"
TM_SSH_ETC_FILES="src/tm_mad/ssh/tm_ssh.conf \
src/tm_mad/ssh/tm_sshrc"

View File

@ -254,12 +254,12 @@ VM_MAD = [
#*******************************************************************************
#-------------------------------------------------------------------------------
# NFS Transfer Manager Driver Configuration
# SHARED Transfer Manager Driver Configuration
#-------------------------------------------------------------------------------
TM_MAD = [
name = "tm_nfs",
name = "tm_shared",
executable = "one_tm",
arguments = "tm_nfs/tm_nfs.conf" ]
arguments = "tm_shared/tm_shared.conf" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------

View File

@ -165,7 +165,8 @@ def install_dependencies(gems, distro)
documentation.
Press enter to continue...
EOT
EOT
STDIN.readline
else
puts "Distribution \"#{distro.first}\" detected."
deps=get_dependencies(gems, distro.last[:dependencies])
@ -240,7 +241,7 @@ packages_string=gems_list.join(' ')
prefix=""
if dist.last[:gem_env]
if dist && dist.last[:gem_env]
prefix=dist.last[:gem_env].collect do |name, value|
"#{name}=\"#{value}\""
end.join(' ')+' '

View File

@ -358,7 +358,7 @@ void AuthManager::timer_action()
while ( it !=auth_requests.end())
{
if (the_time > it->second->time_out)
if ((it->second->time_out != 0) && (the_time > it->second->time_out))
{
AuthRequest * ar = it->second;
auth_requests.erase(it++);

View File

@ -398,7 +398,8 @@ EOT
editor_path = ENV["EDITOR"] ? ENV["EDITOR"] : EDITOR_PATH
system("#{editor_path} #{path}")
unless $?==0
unless $?.exitstatus == 0
puts "Editor not defined"
exit -1
end

View File

@ -325,20 +325,7 @@ class OCCIServer < CloudServer
return OpenNebula::Error.new(error_msg), 400
end
# Create a new Image to save the disk
template = "NAME=\"#{image_name}\"\n"
if image_type
template << "TYPE=\"#{image_type}\"\n"
else
template << "TYPE=\"OS\"\n"
end
image = Image.new(Image.build_xml, one_client)
rc = image.allocate(template)
return rc, 400 if OpenNebula.is_error?(rc)
rc = vm.save_as(disk_id, image.id)
rc = vm.save_as(disk_id, image_name)
if OpenNebula.is_error?(rc)
image.delete
return rc, 400
@ -563,7 +550,7 @@ class OCCIServer < CloudServer
return rc, 404 if OpenNebula::is_error?(rc)
# --- Delete the Image ---
rc = @img_repo.delete(image)
rc = image.delete
return rc, 500 if OpenNebula::is_error?(rc)
return "", 204

View File

@ -565,6 +565,7 @@ int DispatchManager::finalize(
switch (state)
{
case VirtualMachine::SUSPENDED:
case VirtualMachine::FAILED:
tm->trigger(TransferManager::EPILOG_DELETE,vid);
case VirtualMachine::INIT:
@ -573,7 +574,6 @@ int DispatchManager::finalize(
case VirtualMachine::STOPPED:
vm->set_exit_time(time(0));
case VirtualMachine::FAILED:
vm->set_state(VirtualMachine::LCM_INIT);
vm->set_state(VirtualMachine::DONE);
vmpool->update(vm);
@ -608,6 +608,7 @@ int DispatchManager::resubmit(int vid)
Nebula& nd = Nebula::instance();
LifeCycleManager * lcm = nd.get_lcm();
TransferManager * tm = nd.get_tm();
vm = vmpool->get(vid,true);
@ -628,9 +629,10 @@ int DispatchManager::resubmit(int vid)
case VirtualMachine::PENDING:
break;
case VirtualMachine::FAILED: //Cleanup VM host files
tm->trigger(TransferManager::EPILOG_DELETE,vid);
case VirtualMachine::HOLD: // Move the VM to PENDING in any of these
case VirtualMachine::STOPPED:
case VirtualMachine::FAILED:
vm->set_state(VirtualMachine::LCM_INIT);
vm->set_state(VirtualMachine::PENDING);
vmpool->update(vm);

View File

@ -27,7 +27,7 @@ end
######
nodeinfo_text = `virsh -c qemu:///system nodeinfo`
exit(-1) if $?!=0
exit(-1) if $?.exitstatus != 0
nodeinfo_text.split(/\n/).each{|line|
if line.match('^CPU\(s\)')
@ -46,7 +46,7 @@ nodeinfo_text.split(/\n/).each{|line|
NETINTERFACE = "eth1"
top_text=`top -bin2`
exit(-1) if $?!=0
exit(-1) if $?.exitstatus != 0
top_text.gsub!(/^top.*^top.*?$/m, "") # Strip first top output
@ -72,7 +72,7 @@ $used_memory=tmp[0]
$free_memory=tmp[1]
net_text=`cat /proc/net/dev`
exit(-1) if $?!=0
exit(-1) if $?.exitstatus != 0
net_text.split(/\n/).each{|line|
if line.match("^ *#{NETINTERFACE}")

View File

@ -27,10 +27,10 @@ def print_info(name, value)
end
xentop_text=`sudo #{XENTOP_PATH} -bi2`
exit(-1) if $?!=0
exit(-1) if $?.exitstatus != 0
xm_text=`sudo #{XM_PATH} info`
exit(-1) if $?!=0
exit(-1) if $?.exitstatus != 0
#xentop_text.gsub!(/^xentop.*^xentop.*?$/m, "") # Strip first top output
xentop_text.gsub!("no limit", "no_limit")

View File

@ -433,6 +433,11 @@ int Image::disk_attribute( VectorAttribute * disk,
get_template_attribute("DEV_PREFIX", prefix);
if (prefix.empty())//Removed from image template, get it again from defaults
{
prefix = ImagePool::default_dev_prefix();
}
//---------------------------------------------------------------------------
// BASE DISK ATTRIBUTES
//---------------------------------------------------------------------------

View File

@ -141,14 +141,13 @@ void ImageManager::disk_to_image(const string& disk_path,
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
void ImageManager::release_image(const string& image_id,
void ImageManager::release_image(int iid,
const string& disk_path,
int disk_num,
const string& save_id)
{
int rvms;
int iid;
int sid = -1;
istringstream iss;
@ -156,13 +155,8 @@ void ImageManager::release_image(const string& image_id,
ostringstream disk_file;
iss.str(image_id);
iss >> iid;
if ( save_id.empty() == false )
{
iss.clear();
iss.str(save_id);
iss >> sid;
@ -180,7 +174,7 @@ void ImageManager::release_image(const string& image_id,
case Image::USED:
rvms = img->dec_running();
if ( img->isPersistent() )
if ( img->isPersistent() && !disk_path.empty() )
{
disk_file << disk_path << "/disk." << disk_num;
@ -382,11 +376,16 @@ int ImageManager::register_image(int iid)
}
else
{
img->set_state(Image::READY);
ipool->update(img);
string source = img->get_source();
oss << "Using source " << img->get_source()
<< " from template for image " << img->get_name();
if (source != "-") //SAVE_AS IMAGE DO NOT ENABLE THE IMAGE
{
img->set_state(Image::READY);
ipool->update(img);
oss << "Using source " << img->get_source()
<< " from template for image " << img->get_name();
}
}
}
else //PATH -> COPY TO REPOSITORY AS SOURCE

View File

@ -131,7 +131,8 @@ int ImagePool::disk_attribute(VectorAttribute * disk,
int disk_id,
int * index,
Image::ImageType * img_type,
int uid)
int uid,
int& image_id)
{
string source;
Image * img = 0;
@ -143,7 +144,6 @@ int ImagePool::disk_attribute(VectorAttribute * disk,
ImageManager * imagem = nd.get_imagem();
istringstream is;
int image_id;
source = disk->vector_value("IMAGE");

View File

@ -589,7 +589,7 @@ public:
Image * img;
VectorAttribute * disk;
int oid_0, oid_1, index;
int oid_0, oid_1, index, img_id;
string value;
Image::ImageType img_type;
@ -625,7 +625,7 @@ public:
disk = new VectorAttribute("DISK");
disk->replace("IMAGE_ID", "0");
((ImagePool*)imp)->disk_attribute(disk, 0, &index, &img_type,0);
((ImagePool*)imp)->disk_attribute(disk, 0, &index, &img_type,0, img_id);
value = "";
value = disk->vector_value("TARGET");
@ -639,7 +639,7 @@ public:
disk = new VectorAttribute("DISK");
disk->replace("IMAGE_ID", "1");
((ImagePool*)imp)->disk_attribute(disk, 0, &index, &img_type,0);
((ImagePool*)imp)->disk_attribute(disk, 0, &index, &img_type,0, img_id);
value = "";
value = disk->vector_value("TARGET");

View File

@ -500,8 +500,7 @@ void LifeCycleManager::delete_action(int vid)
VirtualMachine::LcmState state = vm->get_lcm_state();
if ((state == VirtualMachine::LCM_INIT) ||
(state == VirtualMachine::CLEANUP) ||
(state == VirtualMachine::FAILURE))
(state == VirtualMachine::CLEANUP))
{
vm->unlock();
return;
@ -535,8 +534,7 @@ void LifeCycleManager::clean_action(int vid)
VirtualMachine::LcmState state = vm->get_lcm_state();
if ((state == VirtualMachine::LCM_INIT) ||
(state == VirtualMachine::CLEANUP) ||
(state == VirtualMachine::FAILURE))
(state == VirtualMachine::CLEANUP))
{
vm->unlock();
return;
@ -664,7 +662,11 @@ void LifeCycleManager::clean_up_vm(VirtualMachine * vm)
tm->trigger(TransferManager::EPILOG_DELETE,vid);
break;
default: //FAILURE,LCM_INIT,CLEANUP
case VirtualMachine::FAILURE:
tm->trigger(TransferManager::EPILOG_DELETE,vid);
break;
default: //LCM_INIT,CLEANUP
break;
}

View File

@ -778,7 +778,6 @@ void LifeCycleManager::monitor_done_action(int vid)
void LifeCycleManager::failure_action(VirtualMachine * vm)
{
Nebula& nd = Nebula::instance();
TransferManager * tm = nd.get_tm();
DispatchManager * dm = nd.get_dm();
time_t the_time = time(0);
@ -802,11 +801,9 @@ void LifeCycleManager::failure_action(VirtualMachine * vm)
hpool->del_capacity(vm->get_hid(),cpu,mem,disk);
//------------- Clean up remote files ----------------
//--- VM to FAILED. Remote host cleanup upon VM deletion ---
dm->trigger(DispatchManager::FAILED,vm->get_oid());
tm->trigger(TransferManager::EPILOG_DELETE,vm->get_oid());
}
/* -------------------------------------------------------------------------- */

View File

@ -53,7 +53,8 @@ module OpenNebula
# the command fails
def self.exec_and_log(command, message=nil)
output=`#{command} 2>&1 1>/dev/null`
code=$?
code=$?.exitstatus
if code!=0
log_error "Command \"#{command}\" failed."
log_error output

View File

@ -12,7 +12,7 @@ MANAGER_TIMER=15
NETWORK_SIZE=254
PORT=2633
SCRIPTS_REMOTE_DIR=/var/tmp/one
TM_MAD=ARGUMENTS=tm_nfs/tm_nfs.conf,EXECUTABLE=one_tm,NAME=tm_nfs
TM_MAD=ARGUMENTS=tm_shared/tm_shared.conf,EXECUTABLE=one_tm,NAME=tm_shared
VM_DIR=/Users/jfontan/tmp/borrar/git/one/install/var/
VM_MAD=ARGUMENTS=-t 15 -r 0 kvm,DEFAULT=vmm_ssh/vmm_ssh_kvm.conf,EXECUTABLE=one_vmm_ssh,NAME=vmm_kvm,TYPE=kvm
VM_POLLING_INTERVAL=600

View File

@ -15,25 +15,26 @@
#--------------------------------------------------------------------------- #
# Paths for utilities
export PATH=/bin:/sbin:/usr/bin:$PATH
AWK=awk
BASH=/bin/bash
BASH=bash
CUT=cut
DATE=/bin/date
DD=/bin/dd
DU=/usr/bin/du
LVCREATE=/sbin/lvcreate
LVREMOVE=/sbin/lvremove
LVS=/sbin/lvs
MD5SUM=/usr/bin/md5sum
MKFS=/sbin/mkfs
MKISOFS=/usr/bin/mkisofs
MKSWAP=/sbin/mkswap
SCP=/usr/bin/scp
SED=/bin/sed
SSH=/usr/bin/ssh
SUDO=/usr/bin/sudo
WGET=/usr/bin/wget
READLINK=/bin/readlink
DATE=date
DD=dd
DU=du
LVCREATE=lvcreate
LVREMOVE=lvremove
LVS=lvs
MD5SUM=md5sum
MKFS=mkfs
MKISOFS=mkisofs
MKSWAP=mkswap
SCP=scp
SED=sed
SSH=ssh
SUDO=sudo
WGET=wget
READLINK=readlink
# Used for log messages
SCRIPT_NAME=`basename $0`

View File

@ -250,12 +250,12 @@ VM_MAD = [ name="vmm_dummy", executable="one_vmm_dummy", type="xml" ]
#*******************************************************************************
#-------------------------------------------------------------------------------
# NFS Transfer Manager Driver Configuration
# SHARED Transfer Manager Driver Configuration
#-------------------------------------------------------------------------------
TM_MAD = [
name = "tm_nfs",
name = "tm_shared",
executable = "one_tm",
arguments = "tm_nfs/tm_nfs.conf" ]
arguments = "tm_shared/tm_shared.conf" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------

View File

@ -257,8 +257,8 @@ module Migrator
public = row[:public]
total_leases = 0
@db.fetch("SELECT COUNT (ip) FROM old_leases WHERE (oid=#{oid} AND used=1)") do |r|
total_leases = r[:"COUNT (ip)"]
@db.fetch("SELECT COUNT(ip) FROM old_leases WHERE (oid=#{oid} AND used=1)") do |r|
total_leases = r[:"COUNT(ip)"]
end

View File

@ -177,7 +177,7 @@ class BackEndMySQL < OneDBBacKEnd
end
create_cmd = mysql_cmd+"-e 'CREATE DATABASE IF NOT EXISTS #{@db_name};'"
rc = system(create_cnd)
rc = system(create_cmd)
if !rc
raise "Error creating MySQL DB #{@db_name} at #{@server}."
end

File diff suppressed because one or more lines are too long

View File

@ -182,17 +182,27 @@ sleep 3s
mkdir -p results/xml_files
for obj in host vnet image vm user; do
for obj in vnet image vm; do
one$obj list a -x > results/xml_files/$obj-pool.xml
done
for obj in host user; do
one$obj list -x > results/xml_files/$obj-pool.xml
done
for obj in host vnet image vm user; do
for i in 0 1 2 3 4; do
one$obj show -x $i > results/xml_files/$obj-$i.xml
done
done
if [ $TWO_SERIES == "no" ]; then
oneacl list a -x > results/xml_files/acl-pool.xml
onegroup list a -x > results/xml_files/group-pool.xml
oneacl list -x > results/xml_files/acl-pool.xml
onegroup list -x > results/xml_files/group-pool.xml
for i in 0 1; do
onegroup show -x $i > results/xml_files/group-$i.xml
done
fi
# Clean one auth files

View File

@ -0,0 +1,433 @@
#*******************************************************************************
# OpenNebula Configuration file
#*******************************************************************************
#*******************************************************************************
# Daemon configuration attributes
#-------------------------------------------------------------------------------
# MANAGER_TIMER: Time in seconds the core uses to evaluate periodical functions.
# HOST_MONITORING_INTERVAL and VM_POLLING_INTERVAL can not have smaller values
# than MANAGER_TIMER.
#
# HOST_MONITORING_INTERVAL: Time in seconds between host monitorization.
#
# VM_POLLING_INTERVAL: Time in seconds between virtual machine monitorization.
# (use 0 to disable VM monitoring).
#
# VM_DIR: Remote path to store the VM images, it should be shared between all
# the cluster nodes to perform live migrations. This variable is the default
# for all the hosts in the cluster. VM_DIR IS ONLY FOR THE NODES AND *NOT* THE
# FRONT-END
#
# SCRIPTS_REMOTE_DIR: Remote path to store the monitoring and VM management
# scripts.
#
# PORT: Port where oned will listen for xmlrpc calls.
#
# DB: Configuration attributes for the database backend
# backend : can be sqlite or mysql (default is sqlite)
# server : (mysql) host name or an IP address for the MySQL server
# port : (mysql) port for the connection to the server.
# If set to 0, the default port is used.
# user : (mysql) user's MySQL login ID
# passwd : (mysql) the password for user
# db_name : (mysql) the database name
#
# VNC_BASE_PORT: VNC ports for VMs can be automatically set to VNC_BASE_PORT +
# VMID
#
# DEBUG_LEVEL: 0 = ERROR, 1 = WARNING, 2 = INFO, 3 = DEBUG
#*******************************************************************************
#MANAGER_TIMER=30
HOST_MONITORING_INTERVAL = 1
VM_POLLING_INTERVAL = 1
#VM_DIR=/srv/cloud/one/var
SCRIPTS_REMOTE_DIR=/var/tmp/one
PORT=2889
#DB = [ backend = "sqlite" ]
# Sample configuration for MySQL
DB = [ backend = "mysql",
server = "localhost",
port = 0,
user = "oneadmin",
passwd = "oneadmin",
db_name = "onedb_test" ]
VNC_BASE_PORT = 5900
DEBUG_LEVEL=3
#*******************************************************************************
# Physical Networks configuration
#*******************************************************************************
# NETWORK_SIZE: Here you can define the default size for the virtual networks
#
# MAC_PREFIX: Default MAC prefix to be used to create the auto-generated MAC
# addresses is defined here (this can be overrided by the Virtual Network
# template)
#*******************************************************************************
NETWORK_SIZE = 254
MAC_PREFIX = "02:00"
#*******************************************************************************
# Image Repository Configuration
#*******************************************************************************
# DEFAULT_IMAGE_TYPE: This can take values
# OS Image file holding an operating system
# CDROM Image file holding a CDROM
# DATABLOCK Image file holding a datablock,
# always created as an empty block
# DEFAULT_DEVICE_PREFIX: This can be set to
# hd IDE prefix
# sd SCSI
# xvd XEN Virtual Disk
# vd KVM virtual disk
#*******************************************************************************
DEFAULT_IMAGE_TYPE = "OS"
DEFAULT_DEVICE_PREFIX = "hd"
#*******************************************************************************
# Information Driver Configuration
#*******************************************************************************
# You can add more information managers with different configurations but make
# sure it has different names.
#
# name : name for this information manager
#
# executable: path of the information driver executable, can be an
# absolute path or relative to $ONE_LOCATION/lib/mads (or
# /usr/lib/one/mads/ if OpenNebula was installed in /)
#
# arguments : for the driver executable, usually a probe configuration file,
# can be an absolute path or relative to $ONE_LOCATION/etc (or
# /etc/one/ if OpenNebula was installed in /)
#*******************************************************************************
#-------------------------------------------------------------------------------
# KVM Information Driver Manager Configuration
# -r number of retries when monitoring a host
# -t number of threads, i.e. number of hosts monitored at the same time
#-------------------------------------------------------------------------------
#IM_MAD = [
# name = "im_kvm",
# executable = "one_im_ssh",
# arguments = "-r 0 -t 15 kvm" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# XEN Information Driver Manager Configuration
# -r number of retries when monitoring a host
# -t number of threads, i.e. number of hosts monitored at the same time
#-------------------------------------------------------------------------------
#IM_MAD = [
# name = "im_xen",
# executable = "one_im_ssh",
# arguments = "xen" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# EC2 Information Driver Manager Configuration
#-------------------------------------------------------------------------------
#IM_MAD = [
# name = "im_ec2",
# executable = "one_im_ec2",
# arguments = "im_ec2/im_ec2.conf" ]
#-------------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Ganglia Information Driver Manager Configuration
#-----------------------------------------------------------------------------
#IM_MAD = [
# name = "im_ganglia",
# executable = "one_im_sh",
# arguments = "ganglia" ]
#-----------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Dummy Information Driver Manager Configuration
#-------------------------------------------------------------------------------
IM_MAD = [ name="im_dummy", executable="one_im_dummy"]
#-------------------------------------------------------------------------------
#*******************************************************************************
# Virtualization Driver Configuration
#*******************************************************************************
# You can add more virtualization managers with different configurations but
# make sure it has different names.
#
# name : name of the virtual machine manager driver
#
# executable: path of the virtualization driver executable, can be an
# absolute path or relative to $ONE_LOCATION/lib/mads (or
# /usr/lib/one/mads/ if OpenNebula was installed in /)
#
# arguments : for the driver executable
#
# default : default values and configuration parameters for the driver, can
# be an absolute path or relative to $ONE_LOCATION/etc (or
# /etc/one/ if OpenNebula was installed in /)
#
# type : driver type, supported drivers: xen, kvm, xml
#*******************************************************************************
#-------------------------------------------------------------------------------
# KVM Virtualization Driver Manager Configuration
# -r number of retries when monitoring a host
# -t number of threads, i.e. number of hosts monitored at the same time
# -p name of the poll probe (executed locally)
#-------------------------------------------------------------------------------
#VM_MAD = [
# name = "vmm_kvm",
# executable = "one_vmm_ssh",
# arguments = "-t 15 -r 0 kvm",
# default = "vmm_ssh/vmm_ssh_kvm.conf",
# type = "kvm" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# XEN Virtualization Driver Manager Configuration
# -r number of retries when monitoring a host
# -t number of threads, i.e. number of hosts monitored at the same time
# -l do not perform the VM polling in the node
# -p name of the poll probe (executed locally)
#-------------------------------------------------------------------------------
#VM_MAD = [
# name = "vmm_xen",
# executable = "one_vmm_ssh",
# arguments = "xen",
# default = "vmm_ssh/vmm_ssh_xen.conf",
# type = "xen" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# EC2 Virtualization Driver Manager Configuration
# arguments: default values for the EC2 driver, can be an absolute path or
# relative to $ONE_LOCATION/etc (or /etc/one/ if OpenNebula was
# installed in /).
#-------------------------------------------------------------------------------
#VM_MAD = [
# name = "vmm_ec2",
# executable = "one_vmm_ec2",
# arguments = "vmm_ec2/vmm_ec2.conf",
# type = "xml" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Dummy Virtualization Driver Configuration
#-------------------------------------------------------------------------------
VM_MAD = [ name="vmm_dummy", executable="one_vmm_dummy", type="xml" ]
#-------------------------------------------------------------------------------
#*******************************************************************************
# Transfer Manager Driver Configuration
#*******************************************************************************
# You can add more transfer managers with different configurations but make
# sure it has different names.
# name : name for this transfer driver
#
# executable: path of the transfer driver executable, can be an
# absolute path or relative to $ONE_LOCATION/lib/mads (or
# /usr/lib/one/mads/ if OpenNebula was installed in /)
#
# arguments : for the driver executable, usually a commands configuration file
# , can be an absolute path or relative to $ONE_LOCATION/etc (or
# /etc/one/ if OpenNebula was installed in /)
#*******************************************************************************
#-------------------------------------------------------------------------------
# SHARED Transfer Manager Driver Configuration
#-------------------------------------------------------------------------------
#TM_MAD = [
# name = "tm_shared",
# executable = "one_tm",
# arguments = "tm_shared/tm_shared.conf" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# SSH Transfer Manager Driver Configuration
#-------------------------------------------------------------------------------
#TM_MAD = [
# name = "tm_ssh",
# executable = "one_tm",
# arguments = "tm_ssh/tm_ssh.conf" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Dummy Transfer Manager Driver Configuration
#-------------------------------------------------------------------------------
TM_MAD = [
name = "tm_dummy",
executable = "one_tm",
arguments = "tm_dummy/tm_dummy.conf" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# LVM Transfer Manager Driver Configuration
#-------------------------------------------------------------------------------
#TM_MAD = [
# name = "tm_lvm",
# executable = "one_tm",
# arguments = "tm_lvm/tm_lvm.conf" ]
#-------------------------------------------------------------------------------
#*******************************************************************************
# Image Manager Driver Configuration
#*******************************************************************************
# Drivers to manage the image repository, specialized for the storage backend
# executable: path of the transfer driver executable, can be an
# absolute path or relative to $ONE_LOCATION/lib/mads (or
# /usr/lib/one/mads/ if OpenNebula was installed in /)
#
# arguments : for the driver executable
#*******************************************************************************
#-------------------------------------------------------------------------------
# FS based Image Manager Driver Configuration
# -t number of threads, i.e. number of repo operations at the same time
#-------------------------------------------------------------------------------
IMAGE_MAD = [
executable = "one_image",
arguments = "fs -t 15" ]
#-------------------------------------------------------------------------------
#*******************************************************************************
# Hook Manager Configuration
#*******************************************************************************
# The Driver (HM_MAD), used to execute the Hooks
# executable: path of the hook driver executable, can be an
# absolute path or relative to $ONE_LOCATION/lib/mads (or
# /usr/lib/one/mads/ if OpenNebula was installed in /)
#
# arguments : for the driver executable, can be an absolute path or relative
# to $ONE_LOCATION/etc (or /etc/one/ if OpenNebula was installed
# in /)
#
# Virtual Machine Hooks (VM_HOOK) defined by:
# name : for the hook, useful to track the hook (OPTIONAL)
# on : when the hook should be executed,
# - CREATE, when the VM is created (onevm create)
# - RUNNING, after the VM is successfully booted
# - SHUTDOWN, after the VM is shutdown
# - STOP, after the VM is stopped (including VM image transfers)
# - DONE, after the VM is deleted or shutdown
# - FAILED, when the VM enters the failed state
# command : path can be absolute or relative to $ONE_LOCATION/share/hooks
# case of self-contained installation or relative to
# /usr/share/one/hooks in case of system-wide installation
# arguments : for the hook. You can access to VM information with $
# - $VMID, the ID of the virtual machine
# - $TEMPLATE, the VM template in xml and base64 encoded
# remote : values,
# - YES, The hook is executed in the host where the VM was
# allocated
# - NO, The hook is executed in the OpenNebula server (default)
#
#
# Host Hooks (HOST_HOOK) defined by:
# name : for the hook, useful to track the hook (OPTIONAL)
# on : when the hook should be executed,
# - CREATE, when the Host is created (onehost create)
# - ERROR, when the Host enters the error state
# - DISABLE, when the Host is disabled
# command : path can be absolute or relative to $ONE_LOCATION/share/hooks
# case of self-contained installation or relative to
# /usr/share/one/hooks in case of system-wide installation
# arguments : for the hook. You can use the following Host information:
# - $HID, the ID of the host
# - $TEMPLATE, the Host template in xml and base64 encoded
# remote : values,
# - YES, The hook is executed in the host
# - NO, The hook is executed in the OpenNebula server (default)
#-------------------------------------------------------------------------------
HM_MAD = [
executable = "one_hm" ]
#-------------------------------------------------------------------------------
#------------------------------ Fault Tolerance Hooks --------------------------
# This hook is used to perform recovery actions when a host fails. The VMs
# running in the host can be deleted (use -d option) or resubmitted (-r) in
# other host
# Last argument (force) can be "y", so suspended VMs in the host will be
# resubmitted/deleted, or "n", so suspended VMs in the host will be ignored
#
#HOST_HOOK = [
# name = "error",
# on = "ERROR",
# command = "host_error.rb",
# arguments = "$HID -r n",
# remote = "no" ]
#-------------------------------------------------------------------------------
# This two hooks can be used to automatically delete or resubmit VMs that reach
# the "failed" state. This way, the administrator doesn't have to interact
# manually to release its resources or retry the deployment.
#
# Only one of them should be uncommented.
#-------------------------------------------------------------------------------
#
#VM_HOOK = [
# name = "on_failure_delete",
# on = "FAILED",
# command = "/usr/bin/env onevm delete",
# arguments = "$VMID" ]
#
#VM_HOOK = [
# name = "on_failure_resubmit",
# on = "FAILED",
# command = "/usr/bin/env onevm resubmit",
# arguments = "$VMID" ]
#-------------------------------------------------------------------------------
#-------------------------------- ebtables Hook---------------------------------
# You can use these two hooks to isolate networks at the ethernet level so the
# traffic generated in different virtual networks can not be seen in others.
#
# All the network configuration will be done in the cluster nodes, these are the
# additional requisites:
# - ebtables package installed
# - sudoers configured so oneadmin can execute ebtables without password
#
# NOTE: Change the first command for ebtables-xen if you are using Xen
#
#VM_HOOK = [
# name = "ebtables-start",
# on = "running",
# command = "ebtables-kvm", # or ebtables-xen
# arguments = "one-$VMID",
# remote = "yes" ]
#
#VM_HOOK = [
# name = "ebtables-flush",
# on = "done",
# command = "ebtables-flush",
# arguments = "",
# remote = "yes" ]
#-------------------------------------------------------------------------------
#*******************************************************************************
# Auth Manager Configuration
#*******************************************************************************
# The Driver (AUTHM_MAD) that will be used to authenticate and authorize
# OpenNebula requests. If not defined OpenNebula will use the built-in auth
# policies
# executable: path of the auth driver executable, can be an
# absolute path or relative to $ONE_LOCATION/lib/mads (or
# /usr/lib/one/mads/ if OpenNebula was installed in /)
#
# arguments : for the driver executable, can be an absolute path or relative
# to $ONE_LOCATION/etc (or /etc/one/ if OpenNebula was installed
# in /)
#-------------------------------------------------------------------------------
#AUTH_MAD = [
# executable = "one_auth_mad" ]

View File

@ -245,12 +245,12 @@ VM_MAD = [ name="vmm_dummy", executable="one_vmm_dummy", type="xml" ]
#*******************************************************************************
#-------------------------------------------------------------------------------
# NFS Transfer Manager Driver Configuration
# SHARED Transfer Manager Driver Configuration
#-------------------------------------------------------------------------------
#TM_MAD = [
# name = "tm_nfs",
# name = "tm_shared",
# executable = "one_tm",
# arguments = "tm_nfs/tm_nfs.conf" ]
# arguments = "tm_shared/tm_shared.conf" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------

204
src/onedb/test/test_mysql.sh Executable file
View File

@ -0,0 +1,204 @@
#!/bin/bash
################################################################################
# Initialization
################################################################################
if [ -z $ONE_LOCATION ]; then
echo "ONE_LOCATION not defined."
exit -1
fi
ONEDCONF_LOCATION="$ONE_LOCATION/etc/oned.conf"
if [ -f $ONEDCONF_LOCATION ]; then
echo "$ONEDCONF_LOCATION has to be overwritten, move it to a safe place."
exit -1
fi
VAR_LOCATION="$ONE_LOCATION/var"
# Clean DB
mysql -u oneadmin -poneadmin -h localhost -P 0 -e "DROP DATABASE IF EXISTS onedb_test;"
cp oned_mysql.conf $ONEDCONF_LOCATION
echo "oneadmin:oneadmin" > oneadmin_auth
export ONE_XMLRPC=http://localhost:2889/RPC2
export PATH=$ONE_LOCATION/bin:$PATH
export ONE_AUTH="`pwd`/oneadmin_auth"
PID=$$
mkdir results
################################################################################
# Start OpenNebula and populate a DB
################################################################################
echo "Starting oned, some resources will be created"
oned -f &
sleep 2s;
./create.sh
pkill -P $PID oned
sleep 2s;
pkill -9 -P $PID oned
################################################################################
# Upgrade the 2.2 sample DB, and compare schemas
################################################################################
echo "All resources created, now 2.2 DB will be upgraded."
# dump current DB and schema
onedb backup results/mysqldb.3.0 -v
if [ $? -ne 0 ]; then
exit -1
fi
mysqldump -u oneadmin -poneadmin -h localhost -P 0 --no-data onedb_test > results/mysqldb.3.0.tmpschema
if [ $? -ne 0 ]; then
exit -1
fi
# restore 2.2
onedb restore -v -f 2.2/mysqldb.sql
if [ $? -ne 0 ]; then
exit -1
fi
# upgrade
onedb upgrade -v --backup results/mysqldb.backup
if [ $? -ne 0 ]; then
exit -1
fi
# dump upgraded DB schema
mysqldump -u oneadmin -poneadmin -h localhost -P 0 --no-data onedb_test > results/mysqldb.upgraded.tmpschema
echo "Done. Upgraded DB and the one just created will be compared."
# Sort the files contents, to avoid false diff errors
sort results/mysqldb.upgraded.tmpschema > results/mysqldb.upgraded.schema
sort results/mysqldb.3.0.tmpschema > results/mysqldb.3.0.schema
rm results/mysqldb.upgraded.tmpschema
rm results/mysqldb.3.0.tmpschema
# Perform a diff
FILE=results/schema.diff
diff <(grep -v -e "Dump completed on" results/mysqldb.upgraded.schema) <(grep -v -e "Dump completed on" results/mysqldb.3.0.schema) > $FILE
if [[ -s $FILE ]] ; then
echo "Error: Schemas do not match. Check file $FILE"
exit -1
fi
################################################################################
# Start oned using the upgraded DB and compare objects XMLs
################################################################################
echo "Schemas match. OpenNebula 3.0 will be started with the upgraded 2.2 DB."
oned -f &
sleep 2s;
for obj in host vnet image vm user; do
for i in 0 1 2 3 4; do
one$obj show -x $i > results/xml_files/$obj-$i-upgraded.xml
done
done
for i in 0 1; do
onegroup show -x $i > results/xml_files/group-$i-upgraded.xml
done
for obj in vnet image vm; do
one$obj list a -x > results/xml_files/$obj-pool-upgraded.xml
done
for obj in host acl group user; do
one$obj list -x > results/xml_files/$obj-pool-upgraded.xml
done
pkill -P $PID oned
sleep 2s;
pkill -9 -P $PID oned
echo "XML output collected. A diff will be performed."
mkdir results/diff_files
# TODO: fix. The pool elements are returned in different order.
#diff <(grep -v -e "<LAST_MON_TIME>" -e "<CLUSTER>" -e "NAME>" results/xml_files/host-pool.xml) <(grep -v -e "<LAST_MON_TIME>" -e "<CLUSTER>" -e "NAME>" results/xml_files/host-pool-upgraded.xml) > results/diff_files/host-pool.diff
#diff <(grep -v -e "<REGTIME>" -e "<SOURCE>" -e "<SIZE>" results/xml_files/image-pool.xml) <(grep -v -e "<REGTIME>" -e "<SOURCE>" -e "<SIZE>" results/xml_files/image-pool-upgraded.xml) > results/diff_files/image-pool.diff
diff <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" results/xml_files/vm-pool.xml) <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" results/xml_files/vm-pool-upgraded.xml) > results/diff_files/vm-pool.diff
for obj in vnet acl group user; do
diff <(cat results/xml_files/$obj-pool.xml) <(cat results/xml_files/$obj-pool-upgraded.xml) > results/diff_files/$obj-pool.diff
done
for i in 0 1 2 3 4; do
diff <(grep -v -e "<LAST_MON_TIME>" -e "<CLUSTER>" -e "NAME>" results/xml_files/host-$i.xml) <(grep -v -e "<LAST_MON_TIME>" -e "<CLUSTER>" -e "NAME>" results/xml_files/host-$i-upgraded.xml) > results/diff_files/host-$i.diff
diff <(cat results/xml_files/vnet-$i.xml) <(cat results/xml_files/vnet-$i-upgraded.xml) > results/diff_files/vnet-$i.diff
diff <(grep -v -e "<REGTIME>" -e "<SOURCE>" -e "<SIZE>" results/xml_files/image-$i.xml) <(grep -v -e "<REGTIME>" -e "<SOURCE>" -e "<SIZE>" results/xml_files/image-$i-upgraded.xml) > results/diff_files/image-$i.diff
diff <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" -e "<NET_TX>" results/xml_files/vm-$i.xml) <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" -e "<NET_TX>" results/xml_files/vm-$i-upgraded.xml) > results/diff_files/vm-$i.diff
diff <(cat results/xml_files/user-$i.xml) <(cat results/xml_files/user-$i-upgraded.xml) > results/diff_files/user-$i.diff
done
for i in 0 1; do
diff <(cat results/xml_files/group-$i.xml) <(cat results/xml_files/group-$i-upgraded.xml) > results/diff_files/group-$i.diff
done
CODE=0
for obj in host vnet image vm user; do
for i in 0 1 2 3 4; do
FILE=results/diff_files/$obj-$i.diff
if [[ -s $FILE ]] ; then
echo "Error: diff file $FILE is not empty."
CODE=-1
fi
done
done
for i in 0 1; do
FILE=results/diff_files/group-$i.diff
if [[ -s $FILE ]] ; then
echo "Error: diff file $FILE is not empty."
CODE=-1
fi
done
for obj in host vnet image vm acl group user; do
FILE=results/diff_files/$obj-pool.diff
if [[ -s $FILE ]] ; then
echo "Error: diff file $FILE is not empty."
CODE=-1
fi
done
if [ $CODE -eq 0 ]; then
echo "Done, all tests passed."
fi
rm oneadmin_auth
exit $CODE

View File

@ -24,7 +24,7 @@ if [ -f $VAR_LOCATION/one.db ]; then
fi
cp oned.conf $ONEDCONF_LOCATION
cp oned_sqlite.conf $ONEDCONF_LOCATION
echo "oneadmin:oneadmin" > oneadmin_auth
@ -63,6 +63,10 @@ cp 2.2/one.db results/one.db.upgraded
onedb upgrade -v --sqlite results/one.db.upgraded --backup results/one.db.backup
if [ $? -ne 0 ]; then
exit -1
fi
echo "Done. Upgraded DB and the one just created will be compared."
# Dump both DB schemas
@ -106,10 +110,18 @@ for obj in host vnet image vm user; do
done
done
for obj in host vnet image vm acl group user; do
for i in 0 1; do
onegroup show -x $i > results/xml_files/group-$i-upgraded.xml
done
for obj in vnet image vm; do
one$obj list a -x > results/xml_files/$obj-pool-upgraded.xml
done
for obj in host acl group user; do
one$obj list -x > results/xml_files/$obj-pool-upgraded.xml
done
pkill -P $PID oned
sleep 2s;
@ -139,6 +151,9 @@ for i in 0 1 2 3 4; do
diff <(cat results/xml_files/user-$i.xml) <(cat results/xml_files/user-$i-upgraded.xml) > results/diff_files/user-$i.diff
done
for i in 0 1; do
diff <(cat results/xml_files/group-$i.xml) <(cat results/xml_files/group-$i-upgraded.xml) > results/diff_files/group-$i.diff
done
CODE=0
@ -152,6 +167,14 @@ for obj in host vnet image vm user; do
done
done
for i in 0 1; do
FILE=results/diff_files/group-$i.diff
if [[ -s $FILE ]] ; then
echo "Error: diff file $FILE is not empty."
CODE=-1
fi
done
for obj in host vnet image vm acl group user; do
FILE=results/diff_files/$obj-pool.diff
if [[ -s $FILE ]] ; then

View File

@ -27,7 +27,7 @@ else
OZONES_PID=$ONE_LOCATION/var/ozones.pid
OZONES_LOCATION=$ONE_LOCATION/lib/ozones
OZONES_SERVER=$OZONES_LOCATION/config.ru
OZONES_LOCK_FILE=$ONE_LOCATION/var/.lock
OZONES_LOCK_FILE=$ONE_LOCATION/var/.ozones.lock
OZONES_LOG=$ONE_LOCATION/var/ozones-server.log
OZONES_CONF=$ONE_LOCATION/etc/ozones-server.conf
fi

View File

@ -19,8 +19,7 @@ require 'JSONUtils'
class OzonesServer
include JSONUtils
include OpenNebulaJSON::JSONUtils
def initialize
@ocaInt = OCAInteraction.new

View File

@ -122,10 +122,9 @@ int PoolSQL::allocate(
else
{
rc = lastOID;
do_hooks(objsql, Hook::ALLOCATE);
}
do_hooks(objsql, Hook::ALLOCATE);
objsql->unlock();
delete objsql;

View File

@ -32,11 +32,6 @@ void RequestManagerChown::request_execute(xmlrpc_c::paramList const& paramList,
string nuname;
string ngname;
// TODO: Move these to constructor?
Nebula& nd = Nebula::instance();
GroupPool * gpool = nd.get_gpool();
UserPool * upool = nd.get_upool();
PoolObjectSQL * object;
if ( basic_authorization(oid, att) == false )
@ -123,10 +118,6 @@ void UserChown::request_execute(xmlrpc_c::paramList const& paramList,
string ngname;
Nebula& nd = Nebula::instance();
GroupPool * gpool = nd.get_gpool();
UserPool * upool = static_cast<UserPool *>(pool);
User * user;
Group * group;

View File

@ -266,7 +266,7 @@ const string FriendHostPool::xmls[] =
<STATE>2</STATE>\
<IM_MAD>im_kvm</IM_MAD>\
<VM_MAD>vmm_kvm</VM_MAD>\
<TM_MAD>tm_nfs</TM_MAD>\
<TM_MAD>tm_shared</TM_MAD>\
<LAST_MON_TIME>1274107238</LAST_MON_TIME>\
<HOST_SHARE>\
<HID>1</HID>\
@ -307,7 +307,7 @@ const string FriendHostPool::xmls[] =
<STATE>2</STATE>\
<IM_MAD>im_kvm</IM_MAD>\
<VM_MAD>vmm_kvm</VM_MAD>\
<TM_MAD>tm_nfs</TM_MAD>\
<TM_MAD>tm_shared</TM_MAD>\
<LAST_MON_TIME>1274107299</LAST_MON_TIME>\
<HOST_SHARE>\
<HID>2</HID>\
@ -350,7 +350,7 @@ const string FriendHostPool::xmls[] =
<STATE>2</STATE>\
<IM_MAD>im_kvm</IM_MAD>\
<VM_MAD>vmm_kvm</VM_MAD>\
<TM_MAD>tm_nfs</TM_MAD>\
<TM_MAD>tm_shared</TM_MAD>\
<LAST_MON_TIME>1274107328</LAST_MON_TIME>\
<HOST_SHARE>\
<HID>4</HID>\
@ -391,7 +391,7 @@ const string FriendHostPool::xmls[] =
<STATE>2</STATE>\
<IM_MAD>im_kvm</IM_MAD>\
<VM_MAD>vmm_kvm</VM_MAD>\
<TM_MAD>tm_nfs</TM_MAD>\
<TM_MAD>tm_shared</TM_MAD>\
<LAST_MON_TIME>1274107300</LAST_MON_TIME>\
<HOST_SHARE>\
<HID>5</HID>\
@ -428,6 +428,6 @@ const string FriendHostPool::xmls[] =
};
const string FriendHostPool::host_dump =
"<HOST_POOL> <HOST> <ID>1</ID> <NAME>ursa12</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107145</LAST_MON_TIME> <HOST_SHARE> <HID>1</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7955180</FREE_MEM> <FREE_CPU>800</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>535848</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>2</ID> <NAME>ursa</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107206</LAST_MON_TIME> <HOST_SHARE> <HID>2</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>4280320</MEM_USAGE> <CPU_USAGE>700</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>16468252</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>9109156</FREE_MEM> <FREE_CPU>628</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>13891232</USED_MEM> <USED_CPU>172</USED_CPU> <RUNNING_VMS>7</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>4</ID> <NAME>ursa11</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107145</LAST_MON_TIME> <HOST_SHARE> <HID>4</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7958684</FREE_MEM> <FREE_CPU>800</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>621616</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>5</ID> <NAME>ursa10</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107207</LAST_MON_TIME> <HOST_SHARE> <HID>5</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7870776</FREE_MEM> <FREE_CPU>796</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>2192424</USED_MEM> <USED_CPU>4</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>6</ID> <NAME>ursa08</NAME> <STATE>3</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107176</LAST_MON_TIME> <HOST_SHARE> <HID>6</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>0</MAX_MEM> <MAX_CPU>0</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>6585200</FREE_MEM> <FREE_CPU>0</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>1132608</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>7</ID> <NAME>ursa09</NAME> <STATE>3</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107146</LAST_MON_TIME> <HOST_SHARE> <HID>7</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>524288</MEM_USAGE> <CPU_USAGE>100</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7286128</FREE_MEM> <FREE_CPU>798</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>8011908</USED_MEM> <USED_CPU>1</USED_CPU> <RUNNING_VMS>1</RUNNING_VMS> </HOST_SHARE> </HOST> </HOST_POOL> ";
"<HOST_POOL> <HOST> <ID>1</ID> <NAME>ursa12</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107145</LAST_MON_TIME> <HOST_SHARE> <HID>1</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7955180</FREE_MEM> <FREE_CPU>800</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>535848</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>2</ID> <NAME>ursa</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107206</LAST_MON_TIME> <HOST_SHARE> <HID>2</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>4280320</MEM_USAGE> <CPU_USAGE>700</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>16468252</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>9109156</FREE_MEM> <FREE_CPU>628</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>13891232</USED_MEM> <USED_CPU>172</USED_CPU> <RUNNING_VMS>7</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>4</ID> <NAME>ursa11</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107145</LAST_MON_TIME> <HOST_SHARE> <HID>4</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7958684</FREE_MEM> <FREE_CPU>800</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>621616</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>5</ID> <NAME>ursa10</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107207</LAST_MON_TIME> <HOST_SHARE> <HID>5</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7870776</FREE_MEM> <FREE_CPU>796</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>2192424</USED_MEM> <USED_CPU>4</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>6</ID> <NAME>ursa08</NAME> <STATE>3</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107176</LAST_MON_TIME> <HOST_SHARE> <HID>6</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>0</MAX_MEM> <MAX_CPU>0</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>6585200</FREE_MEM> <FREE_CPU>0</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>1132608</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>7</ID> <NAME>ursa09</NAME> <STATE>3</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107146</LAST_MON_TIME> <HOST_SHARE> <HID>7</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>524288</MEM_USAGE> <CPU_USAGE>100</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7286128</FREE_MEM> <FREE_CPU>798</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>8011908</USED_MEM> <USED_CPU>1</USED_CPU> <RUNNING_VMS>1</RUNNING_VMS> </HOST_SHARE> </HOST> </HOST_POOL> ";

View File

@ -333,7 +333,7 @@ const string FriendHostPool::xmls[] =
<STATE>2</STATE>\
<IM_MAD>im_kvm</IM_MAD>\
<VM_MAD>vmm_kvm</VM_MAD>\
<TM_MAD>tm_nfs</TM_MAD>\
<TM_MAD>tm_shared</TM_MAD>\
<LAST_MON_TIME>1274107238</LAST_MON_TIME>\
<HOST_SHARE>\
<HID>1</HID>\
@ -374,7 +374,7 @@ const string FriendHostPool::xmls[] =
<STATE>2</STATE>\
<IM_MAD>im_kvm</IM_MAD>\
<VM_MAD>vmm_kvm</VM_MAD>\
<TM_MAD>tm_nfs</TM_MAD>\
<TM_MAD>tm_shared</TM_MAD>\
<LAST_MON_TIME>1274107299</LAST_MON_TIME>\
<HOST_SHARE>\
<HID>2</HID>\
@ -417,7 +417,7 @@ const string FriendHostPool::xmls[] =
<STATE>2</STATE>\
<IM_MAD>im_kvm</IM_MAD>\
<VM_MAD>vmm_kvm</VM_MAD>\
<TM_MAD>tm_nfs</TM_MAD>\
<TM_MAD>tm_shared</TM_MAD>\
<LAST_MON_TIME>1274107328</LAST_MON_TIME>\
<HOST_SHARE>\
<HID>4</HID>\
@ -458,7 +458,7 @@ const string FriendHostPool::xmls[] =
<STATE>2</STATE>\
<IM_MAD>im_kvm</IM_MAD>\
<VM_MAD>vmm_kvm</VM_MAD>\
<TM_MAD>tm_nfs</TM_MAD>\
<TM_MAD>tm_shared</TM_MAD>\
<LAST_MON_TIME>1274107300</LAST_MON_TIME>\
<HOST_SHARE>\
<HID>5</HID>\
@ -495,6 +495,6 @@ const string FriendHostPool::xmls[] =
};
const string FriendHostPool::host_dump =
"<HOST_POOL> <HOST> <ID>1</ID> <NAME>ursa12</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107145</LAST_MON_TIME> <HOST_SHARE> <HID>1</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7955180</FREE_MEM> <FREE_CPU>800</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>535848</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>2</ID> <NAME>ursa</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107206</LAST_MON_TIME> <HOST_SHARE> <HID>2</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>4280320</MEM_USAGE> <CPU_USAGE>700</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>16468252</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>9109156</FREE_MEM> <FREE_CPU>628</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>13891232</USED_MEM> <USED_CPU>172</USED_CPU> <RUNNING_VMS>7</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>4</ID> <NAME>ursa11</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107145</LAST_MON_TIME> <HOST_SHARE> <HID>4</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7958684</FREE_MEM> <FREE_CPU>800</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>621616</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>5</ID> <NAME>ursa10</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107207</LAST_MON_TIME> <HOST_SHARE> <HID>5</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7870776</FREE_MEM> <FREE_CPU>796</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>2192424</USED_MEM> <USED_CPU>4</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>6</ID> <NAME>ursa08</NAME> <STATE>3</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107176</LAST_MON_TIME> <HOST_SHARE> <HID>6</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>0</MAX_MEM> <MAX_CPU>0</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>6585200</FREE_MEM> <FREE_CPU>0</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>1132608</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>7</ID> <NAME>ursa09</NAME> <STATE>3</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_nfs</TM_MAD> <LAST_MON_TIME>1274107146</LAST_MON_TIME> <HOST_SHARE> <HID>7</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>524288</MEM_USAGE> <CPU_USAGE>100</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7286128</FREE_MEM> <FREE_CPU>798</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>8011908</USED_MEM> <USED_CPU>1</USED_CPU> <RUNNING_VMS>1</RUNNING_VMS> </HOST_SHARE> </HOST> </HOST_POOL> ";
"<HOST_POOL> <HOST> <ID>1</ID> <NAME>ursa12</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107145</LAST_MON_TIME> <HOST_SHARE> <HID>1</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7955180</FREE_MEM> <FREE_CPU>800</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>535848</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>2</ID> <NAME>ursa</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107206</LAST_MON_TIME> <HOST_SHARE> <HID>2</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>4280320</MEM_USAGE> <CPU_USAGE>700</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>16468252</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>9109156</FREE_MEM> <FREE_CPU>628</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>13891232</USED_MEM> <USED_CPU>172</USED_CPU> <RUNNING_VMS>7</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>4</ID> <NAME>ursa11</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107145</LAST_MON_TIME> <HOST_SHARE> <HID>4</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7958684</FREE_MEM> <FREE_CPU>800</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>621616</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>5</ID> <NAME>ursa10</NAME> <STATE>2</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107207</LAST_MON_TIME> <HOST_SHARE> <HID>5</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7870776</FREE_MEM> <FREE_CPU>796</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>2192424</USED_MEM> <USED_CPU>4</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>6</ID> <NAME>ursa08</NAME> <STATE>3</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107176</LAST_MON_TIME> <HOST_SHARE> <HID>6</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>0</MEM_USAGE> <CPU_USAGE>0</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>0</MAX_MEM> <MAX_CPU>0</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>6585200</FREE_MEM> <FREE_CPU>0</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>1132608</USED_MEM> <USED_CPU>0</USED_CPU> <RUNNING_VMS>0</RUNNING_VMS> </HOST_SHARE> </HOST> <HOST> <ID>7</ID> <NAME>ursa09</NAME> <STATE>3</STATE> <IM_MAD>im_kvm</IM_MAD> <VM_MAD>vmm_kvm</VM_MAD> <TM_MAD>tm_shared</TM_MAD> <LAST_MON_TIME>1274107146</LAST_MON_TIME> <HOST_SHARE> <HID>7</HID> <DISK_USAGE>0</DISK_USAGE> <MEM_USAGE>524288</MEM_USAGE> <CPU_USAGE>100</CPU_USAGE> <MAX_DISK>0</MAX_DISK> <MAX_MEM>8194368</MAX_MEM> <MAX_CPU>800</MAX_CPU> <FREE_DISK>0</FREE_DISK> <FREE_MEM>7286128</FREE_MEM> <FREE_CPU>798</FREE_CPU> <USED_DISK>0</USED_DISK> <USED_MEM>8011908</USED_MEM> <USED_CPU>1</USED_CPU> <RUNNING_VMS>1</RUNNING_VMS> </HOST_SHARE> </HOST> </HOST_POOL> ";

View File

@ -83,7 +83,7 @@ var create_host_tmpl =
<div class="manager clear" id="tm_mads">\
<label>Transfer Manager:</label>\
<select id="tm_mad" name="tm">\
<option value="tm_nfs">NFS</option>\
<option value="tm_shared">SHARED</option>\
<option value="tm_ssh">SSH</option>\
<option value="tm_dummy">Dummy</option>\
</select>\

View File

@ -14,10 +14,10 @@
# limitations under the License. #
#--------------------------------------------------------------------------- #
CLONE = nfs/tm_clone.sh
LN = nfs/tm_ln.sh
MKSWAP = nfs/tm_mkswap.sh
MKIMAGE = nfs/tm_mkimage.sh
DELETE = nfs/tm_delete.sh
MV = nfs/tm_mv.sh
CONTEXT = nfs/tm_context.sh
CLONE = shared/tm_clone.sh
LN = shared/tm_ln.sh
MKSWAP = shared/tm_mkswap.sh
MKIMAGE = shared/tm_mkimage.sh
DELETE = shared/tm_delete.sh
MV = shared/tm_mv.sh
CONTEXT = shared/tm_context.sh

View File

@ -220,7 +220,7 @@ int VirtualMachine::insert(SqlDB * db, string& error_str)
if ( rc != 0 )
{
goto error_leases;
goto error_leases_rollback;
}
// ------------------------------------------------------------------------
@ -231,7 +231,9 @@ int VirtualMachine::insert(SqlDB * db, string& error_str)
if ( rc != 0 )
{
goto error_images;
// The get_disk_images method has an internal rollback for
// the acquired images, release_disk_images() would release all disks
goto error_leases_rollback;
}
// -------------------------------------------------------------------------
@ -269,26 +271,24 @@ int VirtualMachine::insert(SqlDB * db, string& error_str)
error_update:
error_str = "Can not insert VM in the database.";
goto error_common;
error_leases:
NebulaLog::log("ONE",Log::ERROR, error_str);
release_network_leases();
return -1;
error_images:
goto error_common;
goto error_rollback;
error_context:
goto error_common;
goto error_rollback;
error_requirements:
goto error_common;
goto error_rollback;
error_rollback:
release_disk_images();
error_leases_rollback:
release_network_leases();
goto error_common; // just to avoid compilation warnings
error_common:
NebulaLog::log("ONE",Log::ERROR, error_str);
release_network_leases();
release_disk_images();
return -1;
}
@ -663,11 +663,13 @@ int VirtualMachine::get_disk_images(string& error_str)
vector<Attribute * > disks;
ImagePool * ipool;
VectorAttribute * disk;
vector<int> acquired_images;
int n_os = 0; // Number of OS images
int n_cd = 0; // Number of CDROMS
int n_db = 0; // Number of DATABLOCKS
string type;
int image_id;
ostringstream oss;
Image::ImageType img_type;
@ -686,10 +688,12 @@ int VirtualMachine::get_disk_images(string& error_str)
continue;
}
rc = ipool->disk_attribute(disk, i, &index, &img_type, uid);
rc = ipool->disk_attribute(disk, i, &index, &img_type, uid, image_id);
if (rc == 0 )
{
acquired_images.push_back(image_id);
switch(img_type)
{
case Image::OS:
@ -728,6 +732,10 @@ int VirtualMachine::get_disk_images(string& error_str)
{
goto error_name;
}
else if ( rc != -2 ) // The only known code left
{
goto error_unknown;
}
}
return 0;
@ -750,8 +758,23 @@ error_image:
error_name:
error_str = "IMAGE is not supported for DISK. Use IMAGE_ID instead.";
goto error_common;
error_unknown:
error_str = "Unknown error code.";
error_common:
ImageManager * imagem = nd.get_imagem();
vector<int>::iterator it;
for ( it=acquired_images.begin() ; it < acquired_images.end(); it++ )
{
// Set disk_path and save_id to empty string, this way the image manager
// won't try to move any files
imagem->release_image(*it,"",-1,"");
}
return -1;
}

0
src/vmm_mad/remotes/kvm/migrate_local Normal file → Executable file
View File

View File

@ -0,0 +1 @@
../poll_xen_kvm.rb

View File

@ -0,0 +1 @@
../poll_ganglia.rb

View File

@ -0,0 +1 @@
../poll_xen_kvm.rb

View File

@ -0,0 +1 @@
../poll_ganglia.rb

View File

@ -62,7 +62,7 @@
<STIME>1304502543</STIME>
<ETIME>0</ETIME>
<VMMMAD>vmm_kvm</VMMMAD>
<TMMAD>tm_nfs</TMMAD>
<TMMAD>tm_shared</TMMAD>
<PSTIME>1304502543</PSTIME>
<PETIME>1304502544</PETIME>
<RSTIME>1304502544</RSTIME>

View File

@ -434,7 +434,7 @@ const string ObjectXMLTest::host =
"<STATE>2</STATE>"
"<IM_MAD>im_kvm</IM_MAD>"
"<VM_MAD>vmm_kvm</VM_MAD>"
"<TM_MAD>tm_nfs</TM_MAD>"
"<TM_MAD>tm_shared</TM_MAD>"
"<LAST_MON_TIME>1273799044</LAST_MON_TIME>"
"<CLUSTER>cluster A</CLUSTER>"
"<HOST_SHARE>"