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

Reply via email to