Alissa Bonas has uploaded a new change for review. Change subject: core: fix redundant storage server conn in db ......................................................................
core: fix redundant storage server conn in db Fix several problems related to "orphan" storage server connections in db. The redundant entries entered when AddStorageServerConnectionCommand succeeded, but another command that ran after it failed. Adding a new command that in case of failure deletes the connection from db fixes the problem. As part of the fix, add assignment of the connection id in UI in StorageListModel -because otherwise it would not know which connection to delete. In addition, add upgrade script that will delete all redundant entries in the db from previous versions. Change-Id: Iea5468371514bd2c7bc043a6c5520e2864a09fe8 Bug-Url: https://bugzilla.redhat.com/815083 Signed-off-by: Alissa Bonas <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectStorageServerConnectionCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageServerConnectionCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java M backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java 5 files changed, 48 insertions(+), 11 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/36/11936/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectStorageServerConnectionCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectStorageServerConnectionCommand.java index c77c535..887f804 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectStorageServerConnectionCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectStorageServerConnectionCommand.java @@ -20,15 +20,7 @@ @Override protected void executeCommand() { - setSucceeded(Backend - .getInstance() - .getResourceManager() - .RunVdsCommand( - VDSCommandType.DisconnectStorageServer, - new ConnectStorageServerVDSCommandParameters(getParameters().getVdsId(), getParameters() - .getStoragePoolId(), getParameters().getStorageServerConnection().getstorage_type(), - new java.util.ArrayList<StorageServerConnections>(java.util.Arrays - .asList(new StorageServerConnections[] { getConnection() })))).getSucceeded()); + setSucceeded(disconnectStorage()); } @Override @@ -47,4 +39,15 @@ return returnValue; } + protected boolean disconnectStorage() { + return Backend.getInstance() + .getResourceManager() + .RunVdsCommand( + VDSCommandType.DisconnectStorageServer, + new ConnectStorageServerVDSCommandParameters(getParameters().getVdsId(), getParameters() + .getStoragePoolId(), getParameters().getStorageServerConnection().getstorage_type(), + new java.util.ArrayList<StorageServerConnections>(java.util.Arrays + .asList(new StorageServerConnections[] { getConnection() })))).getSucceeded() ; + } + } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageServerConnectionCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageServerConnectionCommand.java new file mode 100644 index 0000000..285b608 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageServerConnectionCommand.java @@ -0,0 +1,30 @@ +package org.ovirt.engine.core.bll.storage; + +import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.core.bll.InternalCommandAttribute; +import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; +import org.ovirt.engine.core.common.action.StorageServerConnectionParametersBase; + +@NonTransactiveCommandAttribute +@InternalCommandAttribute +public class RemoveStorageServerConnectionCommand<T extends StorageServerConnectionParametersBase> extends DisconnectStorageServerConnectionCommand { + + public RemoveStorageServerConnectionCommand(T parameters) { + super(parameters); + } + + @Override + protected void executeCommand() { + //disconnect the connection from vdsm + boolean isStorageDisconnectSucceeded = disconnectStorage(); + + if(isStorageDisconnectSucceeded) { + String connectionId = getConnection().getid(); + if(StringUtils.isNotEmpty(connectionId)) { + //remove the connection record from db + getDbFacade().getStorageServerConnectionDao().remove(connectionId); + setSucceeded(true); + } + } + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java index ed6cd19..5483a38 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java @@ -217,6 +217,7 @@ AddExistingSANStorageDomain(961, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), AddStorageServerConnection(1000, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), DisconnectStorageServerConnection(1002, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), + RemoveStorageServerConnection(1003, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), ConnectHostToStoragePoolServers(1004, QuotaDependency.NONE), DisconnectHostFromStoragePoolServers(1005, QuotaDependency.NONE), ConnectStorageToVds(1006, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), diff --git a/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties b/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties index 237817b..0cb600c 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties @@ -61,6 +61,7 @@ job.AddExistingSANStorageDomain=Adding SAN Storage Domain ${Storage} job.AddStorageServerConnection=Connecting Host ${VDS} to Storage server job.DisconnectStorageServerConnection=Disconnecting from Storage server on ${VDS} +job.RemoveStorageServerConnection=Disconnecting from Storage server on ${VDS} and removing its connection from db job.ConnectStorageToVds=Connecting Host ${VDS} to Storage server job.AddVmPoolWithVms=Creating VM Pool ${VmPool} from template ${VmTemplate} job.ChangeDisk=Changing CD-ROM for VM ${VM} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java index f3f5ecd..17fc6d1 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java @@ -699,8 +699,7 @@ } private void CleanConnection(StorageServerConnections connection, Guid hostId) { - - Frontend.RunAction(VdcActionType.DisconnectStorageServerConnection, new StorageServerConnectionParametersBase(connection, hostId), + Frontend.RunAction(VdcActionType.RemoveStorageServerConnection, new StorageServerConnectionParametersBase(connection, hostId), null, this); } @@ -1212,6 +1211,7 @@ StorageListModel storageListModel = (StorageListModel) result.getState(); VdcReturnValueBase vdcReturnValueBase = result.getReturnValue(); storageListModel.storageDomain.setstorage((String) vdcReturnValueBase.getActionReturnValue()); + storageListModel.connection.setid((String)vdcReturnValueBase.getActionReturnValue()); } }; @@ -1349,6 +1349,7 @@ StorageListModel storageListModel = (StorageListModel) result.getState(); VdcReturnValueBase vdcReturnValueBase = result.getReturnValue(); storageListModel.storageDomain.setstorage((String) vdcReturnValueBase.getActionReturnValue()); + storageListModel.connection.setid((String)vdcReturnValueBase.getActionReturnValue()); } }; @@ -1530,6 +1531,7 @@ VdcReturnValueBase vdcReturnValueBase = result.getReturnValue(); storageListModel.storageDomain.setstorage((String) vdcReturnValueBase.getActionReturnValue()); + storageListModel.connection.setid((String)vdcReturnValueBase.getActionReturnValue()); } }; -- To view, visit http://gerrit.ovirt.org/11936 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iea5468371514bd2c7bc043a6c5520e2864a09fe8 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alissa Bonas <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
