Muli Salem has uploaded a new change for review. Change subject: engine: Free Mac Addresses in ImportVmCommand (#864346) ......................................................................
engine: Free Mac Addresses in ImportVmCommand (#864346) This patch adds a list of mac addresses that gathers all the macs that are added during ImportVmCommand, in case the command fails and these macs need to be released. Change-Id: I228d747be7e2c456e1777a51fd6fdfeca518bbbb Bug-Url: https://bugzilla.redhat.com/864346 Signed-off-by: Muli Salem <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MacPoolManager.java 2 files changed, 24 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/02/9302/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java index 6cf5074..0835a4b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java @@ -91,6 +91,7 @@ private List<DiskImage> imageList; private List<Guid> diskGuidList = new ArrayList<Guid>(); private List<Guid> imageGuidList = new ArrayList<Guid>(); + private List<String> macsAdded = new ArrayList<String>(); public ImportVmCommand(ImportVmParameters parameters) { super(parameters); @@ -485,15 +486,21 @@ @Override protected void executeCommand() { - addVmToDb(); - VM vm = getVm(); - // if there aren't any images- we can just perform the end - // vm related ops - if (!hasSnappableDisks(vm)) { - endVmRelatedOps(); - } else { - processImages(); + try { + addVmToDb(); + VM vm = getVm(); + // if there aren't any images- we can just perform the end + // vm related ops + if (!hasSnappableDisks(vm)) { + endVmRelatedOps(); + } else { + processImages(); + } + } catch (RuntimeException e) { + MacPoolManager.getInstance().freeMacs(macsAdded); + throw e; } + setSucceeded(true); } @@ -836,6 +843,9 @@ } vmInterfaceManager.add(iface, getCompensationContext(), getParameters().isImportAsNewEntity()); + + // If Exception was not thrown + macsAdded.add(iface.getMacAddress()); } auditInvalidInterfaces(invalidNetworkNames, invalidIfaceNames); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MacPoolManager.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MacPoolManager.java index 1f032d1..8145e9a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MacPoolManager.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MacPoolManager.java @@ -207,5 +207,11 @@ } } + public void freeMacs(List<String> macs) { + for (String mac : macs) { + freeMac(mac); + } + } + private static Log log = LogFactory.getLog(MacPoolManager.class); } -- To view, visit http://gerrit.ovirt.org/9302 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I228d747be7e2c456e1777a51fd6fdfeca518bbbb Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Muli Salem <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
