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