From ae88c280c56c8855a31378b620f94f22f8d19884 Mon Sep 17 00:00:00 2001 From: Tino Vazquez Date: Fri, 29 Jun 2012 19:08:02 +0200 Subject: [PATCH] Fix for rollback bug (in oZones DB) in oZones server. (cherry picked from commit f6bf7fc15189777bea0e34925a8bf2fa460eadd3) --- src/ozones/Server/lib/OZones/VDC.rb | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/ozones/Server/lib/OZones/VDC.rb b/src/ozones/Server/lib/OZones/VDC.rb index 263f11eabc..810fcc056c 100644 --- a/src/ozones/Server/lib/OZones/VDC.rb +++ b/src/ozones/Server/lib/OZones/VDC.rb @@ -170,7 +170,10 @@ module OZones rc = resources_in_cluster?(rsrc) - return rc if OpenNebula.is_error?(rc) + if OpenNebula.is_error?(rc) + @vdc.delete + return rc + end #------------------------------------------------------------------- # Create a group in the zone with the VDC name @@ -178,7 +181,10 @@ module OZones group = OpenNebula::Group.new(OpenNebula::Group.build_xml, @client) rc = group.allocate(@vdc.NAME) - return rc if OpenNebula.is_error?(rc) + if OpenNebula.is_error?(rc) + @vdc.delete + return rc + end @vdc.GROUP_ID = group.id @@ -190,7 +196,11 @@ module OZones user = OpenNebula::User.new(OpenNebula::User.build_xml, @client) rc = user.allocate(@vdc.VDCADMINNAME, vdcpass) - return rollback(group, nil, nil, rc) if OpenNebula.is_error?(rc) + + if OpenNebula.is_error?(rc) + @vdc.delete + return rollback(group, nil, nil, rc) + end @vdc.VDCADMIN_ID = user.id @@ -200,7 +210,11 @@ module OZones # Change primary group of the admin user to the VDC group #------------------------------------------------------------------- rc = user.chgrp(group.id) - return rollback(group, user, nil, rc) if OpenNebula.is_error?(rc) + + if OpenNebula.is_error?(rc) + @vdc.delete + return rollback(group, user, nil, rc) + end #------------------------------------------------------------------- # Add ACLs @@ -210,7 +224,11 @@ module OZones OzonesServer::logger.debug {"Creating ACLs #{rules}..."} rc, acl_ids = create_acls(rules) - return rollback(group, user, acl_ids,rc) if OpenNebula.is_error?(rc) + + if OpenNebula.is_error?(rc) + @vdc.delete + return rollback(group, user, acl_ids,rc) + end OzonesServer::logger.debug {"ACLs #{acl_ids} created"}