Federico Simoncelli has uploaded a new change for review. Change subject: providers: add the onAddition and onRemoval hooks ......................................................................
providers: add the onAddition and onRemoval hooks Some providers need to perform additional operations on addition and on removal, this patch gives the ability to the provider proxies to override the onAddition and onRemoval methods in order to complete the required actions. Change-Id: I4b9a9af042ebd7988d90afeeecec4905a704894b Signed-off-by: Federico Simoncelli <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxy.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java 4 files changed, 51 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/96/15896/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java index 2ee125f..a469558 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/host/provider/foreman/ForemanHostProviderProxy.java @@ -102,6 +102,16 @@ runHttpMethod(httpClient, httpMethod); } + @Override + public void onAddition() { + // nothing to do + } + + @Override + public void onRemoval() { + // nothing to do + } + private void runHttpMethod(HttpClient httpClient, HttpMethod httpMethod) { try { int result = httpClient.executeMethod(httpMethod); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java index 8252a0b..5bbbf99 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java @@ -13,6 +13,8 @@ import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.validation.group.CreateEntity; import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.utils.transaction.TransactionMethod; +import org.ovirt.engine.core.utils.transaction.TransactionSupport; public class AddProviderCommand<P extends ProviderParameters> extends CommandBase<P> { @@ -41,7 +43,22 @@ @Override protected void executeCommand() { getProvider().setId(Guid.NewGuid()); - getDbFacade().getProviderDao().save(getProvider()); + + TransactionSupport.executeInNewTransaction(new TransactionMethod<Object>() { + @Override + public Object runInTransaction() { + getDbFacade().getProviderDao().save(getProvider()); + + ProviderProxy providerProxy = ProviderProxyFactory.getInstance().create(getProvider()); + + if (providerProxy != null) { + providerProxy.onAddition(); + } + + return null; + } + }); + getReturnValue().setActionReturnValue(getProvider().getId()); setSucceeded(true); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxy.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxy.java index 86f3722..4a6d88a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxy.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxy.java @@ -18,4 +18,9 @@ * @return List of Certificate objects */ List<? extends Certificate> getCertificateChain(); + + void onAddition(); + + void onRemoval(); + } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java index 4f54433..46cfaf1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java @@ -14,6 +14,8 @@ import org.ovirt.engine.core.common.validation.group.RemoveEntity; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.provider.ProviderDao; +import org.ovirt.engine.core.utils.transaction.TransactionMethod; +import org.ovirt.engine.core.utils.transaction.TransactionSupport; public class RemoveProviderCommand<P extends ProviderParameters> extends CommandBase<P> { @@ -48,7 +50,22 @@ @Override protected void executeCommand() { - getProviderDao().remove(getParameters().getProvider().getId()); + final Guid providerId = getParameters().getProvider().getId(); + + TransactionSupport.executeInNewTransaction(new TransactionMethod<Object>() { + @Override + public Object runInTransaction() { + ProviderProxy providerProxy = ProviderProxyFactory.getInstance().create(getParameters().getProvider()); + + if (providerProxy != null) { + providerProxy.onRemoval(); + } + + getProviderDao().remove(providerId); + return null; + } + }); + setSucceeded(true); } -- To view, visit http://gerrit.ovirt.org/15896 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4b9a9af042ebd7988d90afeeecec4905a704894b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Federico Simoncelli <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
