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

Reply via email to