Mike Kolesnik has uploaded a new change for review.

Change subject: core: Support removing external networks
......................................................................

core: Support removing external networks

Add ability to remove an external network from an external networks
provider when removing a network from the system.

Change-Id: I123076564188945753f62c445e684d9f1901e1df
Signed-off-by: Mike Kolesnik <mkole...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/NetworkCommon.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/NetworkModification.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/RemoveNetworkCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/NetworkProviderProxy.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/openstack/OpenstackNetworkProviderProxy.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoveNetworkParameters.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworksModel.java
9 files changed, 119 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/13/22613/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
index 7b0286b..7da70da 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
@@ -23,7 +23,7 @@
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 
 @LockIdNameAttribute
-public class AddNetworkCommand<T extends AddNetworkStoragePoolParameters> 
extends NetworkCommon<T> {
+public class AddNetworkCommand<T extends AddNetworkStoragePoolParameters> 
extends NetworkModification<T> {
     public AddNetworkCommand(T parameters) {
         super(parameters);
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/NetworkCommon.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/NetworkCommon.java
index 38c7b70..4bf65c2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/NetworkCommon.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/NetworkCommon.java
@@ -6,21 +6,18 @@
 import org.ovirt.engine.core.bll.CommandBase;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.common.VdcObjectType;
-import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters;
+import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.businessentities.network.VnicProfile;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.compat.Guid;
 
-public abstract class NetworkCommon<T extends AddNetworkStoragePoolParameters> 
extends CommandBase<T> {
+public abstract class NetworkCommon<T extends VdcActionParametersBase> extends 
CommandBase<T> {
     public NetworkCommon(T parameters) {
         super(parameters);
-        this.setStoragePoolId(getNetwork().getDataCenterId());
     }
 
-    protected Network getNetwork() {
-        return getParameters().getNetwork();
-    }
+    protected abstract Network getNetwork();
 
     public String getNetworkName() {
         return getNetwork().getName();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/NetworkModification.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/NetworkModification.java
new file mode 100644
index 0000000..772cb26
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/NetworkModification.java
@@ -0,0 +1,16 @@
+package org.ovirt.engine.core.bll.network.dc;
+
+import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters;
+import org.ovirt.engine.core.common.businessentities.network.Network;
+
+public abstract class NetworkModification<T extends 
AddNetworkStoragePoolParameters> extends NetworkCommon<T> {
+    public NetworkModification(T parameters) {
+        super(parameters);
+        this.setStoragePoolId(getNetwork().getDataCenterId());
+    }
+
+    @Override
+    protected Network getNetwork() {
+        return getParameters().getNetwork();
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/RemoveNetworkCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/RemoveNetworkCommand.java
index a02b561..66ab586 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/RemoveNetworkCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/RemoveNetworkCommand.java
@@ -1,22 +1,57 @@
 package org.ovirt.engine.core.bll.network.dc;
 
+import org.ovirt.engine.core.bll.provider.ProviderProxyFactory;
+import org.ovirt.engine.core.bll.provider.network.NetworkProviderProxy;
 import org.ovirt.engine.core.bll.validator.NetworkValidator;
 import org.ovirt.engine.core.common.AuditLogType;
-import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters;
+import org.ovirt.engine.core.common.action.RemoveNetworkParameters;
+import org.ovirt.engine.core.common.businessentities.Provider;
+import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 
-public class RemoveNetworkCommand<T extends AddNetworkStoragePoolParameters> 
extends NetworkCommon<T> {
+public class RemoveNetworkCommand<T extends RemoveNetworkParameters> extends 
NetworkCommon<T> {
+    private Network network;
+
+    private Provider<?> provider;
+
     public RemoveNetworkCommand(T parameters) {
         super(parameters);
     }
 
     @Override
+    protected Network getNetwork() {
+        if (network == null) {
+            network = getNetworkDAO().get(getParameters().getId());
+        }
+
+        return network;
+    }
+
+    private Provider<?> getProvider() {
+        if (provider == null) {
+            provider = 
getDbFacade().getProviderDao().get(getNetwork().getProvidedBy().getProviderId());
+        }
+
+        return provider;
+    }
+
+    @Override
     protected void executeCommand() {
+        setStoragePoolId(getNetwork().getDataCenterId());
+        if 
(Boolean.TRUE.equals(getParameters().getRemoveFromNetworkProvider()) && 
getNetwork().isExternal()) {
+            removeExternalNetwork();
+        }
+
         removeVnicProfiles();
         getNetworkDAO().remove(getNetwork().getId());
         setSucceeded(true);
     }
 
+    private void removeExternalNetwork() {
+        NetworkProviderProxy proxy = 
ProviderProxyFactory.getInstance().create(getProvider());
+        proxy.remove(getNetwork().getProvidedBy().getExternalId());
+    }
+
     @Override
     protected void setActionMessageParameters() {
         super.setActionMessageParameters();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
index 28859d6..ba940c3 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
@@ -36,7 +36,7 @@
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
 
 @NonTransactiveCommandAttribute
-public class UpdateNetworkCommand<T extends AddNetworkStoragePoolParameters> 
extends NetworkCommon<T> implements RenamedEntityInfoProvider{
+public class UpdateNetworkCommand<T extends AddNetworkStoragePoolParameters> 
extends NetworkModification<T> implements RenamedEntityInfoProvider {
     private Network oldNetwork;
 
     public UpdateNetworkCommand(T parameters) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/NetworkProviderProxy.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/NetworkProviderProxy.java
index 3c2930a..c27c558 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/NetworkProviderProxy.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/NetworkProviderProxy.java
@@ -19,6 +19,14 @@
     String add(Network network);
 
     /**
+     * Remove the network from the external provider.
+     *
+     * @param id
+     *            The external ID of the network to remove.
+     */
+    void remove(String id);
+
+    /**
      * Retrieve a list of all the networks that this provider can provide.
      *
      * @return A list of the networks available from the provider.
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/openstack/OpenstackNetworkProviderProxy.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/openstack/OpenstackNetworkProviderProxy.java
index 8acb6e2..4bd2cf8 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/openstack/OpenstackNetworkProviderProxy.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/openstack/OpenstackNetworkProviderProxy.java
@@ -92,6 +92,15 @@
     }
 
     @Override
+    public void remove(String id) {
+        try {
+            getClient().networks().delete(id).execute();
+        } catch (RuntimeException e) {
+            throw new VdcBLLException(VdcBllErrors.PROVIDER_FAILURE, e);
+        }
+    }
+
+    @Override
     public List<Network> getAll() {
         try {
             Networks networks = getClient().networks().list().execute();
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoveNetworkParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoveNetworkParameters.java
new file mode 100644
index 0000000..fcf159b
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoveNetworkParameters.java
@@ -0,0 +1,42 @@
+package org.ovirt.engine.core.common.action;
+
+import javax.validation.constraints.NotNull;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class RemoveNetworkParameters extends VdcActionParametersBase {
+    private static final long serialVersionUID = -7392121807419409051L;
+
+    @NotNull
+    private Guid id;
+
+    private Boolean removeFromNetworkProvider;
+
+    public RemoveNetworkParameters() {
+    }
+
+    public RemoveNetworkParameters(Guid id) {
+        this.id = id;
+    }
+
+    public RemoveNetworkParameters(Guid id, Boolean removeFromNetworkProvider) 
{
+        this.id = id;
+        this.removeFromNetworkProvider = removeFromNetworkProvider;
+    }
+
+    public Guid getId() {
+        return id;
+    }
+
+    public void setId(Guid id) {
+        this.id = id;
+    }
+
+    public Boolean getRemoveFromNetworkProvider() {
+        return removeFromNetworkProvider;
+    }
+
+    public void setRemoveFromNetworkProvider(Boolean 
removeFromNetworkProvider) {
+        this.removeFromNetworkProvider = removeFromNetworkProvider;
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworksModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworksModel.java
index 80a1bee..7392294 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworksModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworksModel.java
@@ -2,7 +2,7 @@
 
 import java.util.ArrayList;
 
-import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters;
+import org.ovirt.engine.core.common.action.RemoveNetworkParameters;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.network.Network;
@@ -75,7 +75,7 @@
         for (Object a : sourceListModel.getSelectedItems())
         {
             Network network = (Network) a;
-            pb.add(new 
AddNetworkStoragePoolParameters(network.getDataCenterId(), network));
+            pb.add(new RemoveNetworkParameters(network.getId()));
         }
         Frontend.getInstance().runMultipleAction(VdcActionType.RemoveNetwork, 
pb);
 


-- 
To view, visit http://gerrit.ovirt.org/22613
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I123076564188945753f62c445e684d9f1901e1df
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Mike Kolesnik <mkole...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to