Alissa Bonas has posted comments on this change.

Change subject: core: add canDoAction to remove storage connection
......................................................................


Patch Set 4: (14 inline comments)

....................................................
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageServerConnectionCommand.java
Line 32:     protected boolean canDoAction() {
Line 33:         String connectionId = getConnection().getid();
Line 34:         List<StorageDomain> domains = new ArrayList<>();
Line 35:         if(StringUtils.isEmpty(connectionId) ) {
Line 36:            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_ID_EMPTY);
Annotating that will not be good because:
1. minor reason : currently it's only used in this command, so it's not very 
interesting to annotate just for this.
2. major reason: the same connection object is used also by 
AddStorageServerConnectionCommand, which actually checks the opposite - it 
requires the id to be empty, and fails if it's not empty. So the annotation 
will be wrong in this case.
Line 37:         }
Line 38:         StorageServerConnections connection = 
getStorageServerConnectionDao().get(connectionId);
Line 39:         StorageType storageType = connection.getstorage_type();
Line 40:         if(storageType.isFileDomain()) {


Line 34:         List<StorageDomain> domains = new ArrayList<>();
Line 35:         if(StringUtils.isEmpty(connectionId) ) {
Line 36:            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_ID_EMPTY);
Line 37:         }
Line 38:         StorageServerConnections connection = 
getStorageServerConnectionDao().get(connectionId);
Currently, the backend cannot trust the GUI to fill all needed fields (needed 
by the command), thus it's brought from db. In the long term, I agree that it's 
better to get just id from the client in the case of deletion , because it's 
really all we need from the client in this case. However, I wouldn't do it in 
scope of this patch.
Line 39:         StorageType storageType = connection.getstorage_type();
Line 40:         if(storageType.isFileDomain()) {
Line 41:             //go to storage domain static, get all storage domains 
where storage field  = storage connection id
Line 42:            domains = getStorageDomainsByConnId(connectionId);


Line 46:            }
Line 47:         }
Line 48:         else if(storageType.equals(StorageType.ISCSI)) {
Line 49:            List<String> domainNames = new ArrayList<>();
Line 50:            List<String> diskNames = new ArrayList<>();
why linked?
Line 51:            //go to luns to storage connections map table, get it from 
there
Line 52:            List<LUNs> luns = 
getLunDao().getAllForStorageServerConnection(connectionId);
Line 53:            if(luns.size() > 0) {
Line 54:                 String volumeGroupId = null;


Line 65:                         diskNames.add(lunDiskName);
Line 66:                     }
Line 67:                   }
Line 68:                 String domainNamesForMessage = null;
Line 69:                 if(domainNames.size() > 0 ) {
Done
Line 70:                     // Build domain names list to display in the error
Line 71:                     domainNamesForMessage = 
prepareEntityNamesForMessage(domainNames);
Line 72:                     if(diskNames.size() < 1) {
Line 73:                         return 
prepareFailureMessageForDomains(domainNamesForMessage)  ;


Line 68:                 String domainNamesForMessage = null;
Line 69:                 if(domainNames.size() > 0 ) {
Line 70:                     // Build domain names list to display in the error
Line 71:                     domainNamesForMessage = 
prepareEntityNamesForMessage(domainNames);
Line 72:                     if(diskNames.size() < 1) {
Done
Line 73:                         return 
prepareFailureMessageForDomains(domainNamesForMessage)  ;
Line 74:                      }
Line 75:                      else {
Line 76:                         String diskNamesForMessage = 
prepareEntityNamesForMessage(diskNames);


Line 71:                     domainNamesForMessage = 
prepareEntityNamesForMessage(domainNames);
Line 72:                     if(diskNames.size() < 1) {
Line 73:                         return 
prepareFailureMessageForDomains(domainNamesForMessage)  ;
Line 74:                      }
Line 75:                      else {
sorry, didn't understand your comment - what do you mean by unwrap this?
Line 76:                         String diskNamesForMessage = 
prepareEntityNamesForMessage(diskNames);
Line 77:                         return 
prepareFailureMessageForDomainsAndDisks(domainNamesForMessage,diskNamesForMessage);
Line 78:                     }
Line 79:                 }


Line 76:                         String diskNamesForMessage = 
prepareEntityNamesForMessage(diskNames);
Line 77:                         return 
prepareFailureMessageForDomainsAndDisks(domainNamesForMessage,diskNamesForMessage);
Line 78:                     }
Line 79:                 }
Line 80:                 else if(diskNames.size() > 0 ) {
Done
Line 81:                     String diskNamesForMessage = 
prepareEntityNamesForMessage(diskNames);
Line 82:                     return 
prepareFailureMessageForDisks(diskNamesForMessage);
Line 83:                 }
Line 84: 


Line 99:             domainNamesForMessage.append(",");
Line 100:         }
Line 101:         // Remove the last "," after the last domain
Line 102:         
domainNamesForMessage.deleteCharAt(domainNamesForMessage.length() - 1);
Line 103:         return domainNamesForMessage.toString();
Done
Line 104:     }
Line 105: 
Line 106:     @Override
Line 107:     protected void executeCommand() {


Line 132:     protected Map<String, Pair<String, String>> getExclusiveLocks() {
Line 133:         return 
Collections.singletonMap(getConnection().getconnection(),
Line 134:                 
LockMessagesMatchUtil.makeLockingPair(LockingGroup.STORAGE_CONNECTION,
Line 135:                         
VdcBllMessages.ACTION_TYPE_FAILED_OBJECT_LOCKED));
Line 136:     }
Done
Line 137: 
Line 138:     protected String 
createDomainNamesListFromStorageDomains(List<StorageDomain> domains) {
Line 139:         // Build domain names list to display in the error
Line 140:         StringBuilder domainNames = new StringBuilder();


....................................................
File 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/RemoveStorageServerConnectionCommandTest.java
Line 28: import static org.mockito.Mockito.when;
Line 29: 
Line 30: @RunWith(MockitoJUnitRunner.class)
Line 31: public class RemoveStorageServerConnectionCommandTest {
Line 32:     @ClassRule
reformatted again.
Line 33:        public static MockEJBStrategyRule ejbRule = new 
MockEJBStrategyRule();
Line 34: 
Line 35:        private RemoveStorageServerConnectionCommand command = null;
Line 36: 


Line 86:         Guid id = Guid.NewGuid();
Line 87:         StorageServerConnections connectionDetails = 
populateBasicConnectionDetails(id, connection, type);
Line 88:         connectionDetails.setNfsVersion(version);
Line 89:         connectionDetails.setNfsTimeo((short) timeout);
Line 90:         connectionDetails.setNfsRetrans((short) retrans);
because then it has to be passed as Short, otherwise putting inline  primitive 
numbers makes the compiler not match it to the method signature,
Line 91:         return connectionDetails;
Line 92:     }
Line 93: 
Line 94:      private StorageServerConnections createIscsiConnection(String 
connection,


....................................................
File 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
Line 453:     ACTION_TYPE_FAILED_STORAGE_CONNECTION_ALREADY_EXISTS,
Line 454:     
ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_ACTION_FOR_STORAGE,
Line 455:     
ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL_STORAGE_DOMAINS,
Line 456:     
ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL_STORAGE_DOMAINS_AND_DISKS,
Line 457:     ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL__DISKS,
yes, already saw it myself, but good catch, thanks
Line 458:     
ACTION_TYPE_FAILED_STORAGE_CONNECTION_WRONG_PARAMETERS_FOR_STORAGE_TYPE,
Line 459:     
ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_CHANGE_STORAGE_TYPE,
Line 460:     ACTION_TYPE_FAILED_STORAGE_DOMAIN_STATUS_ILLEGAL,
Line 461:     ACTION_TYPE_FAILED_STORAGE_DOMAIN_STATUS_ILLEGAL2,


....................................................
File backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
Line 343: ACTION_TYPE_FAILED_STORAGE_CONNECTION_NOT_EXIST=Cannot ${action} 
${type}. Storage connection doesn't exist.
Line 344: ACTION_TYPE_FAILED_STORAGE_CONNECTION_ID_EMPTY=Cannot ${action} 
${type}. Storage connection id is empty.
Line 345: ACTION_TYPE_FAILED_STORAGE_CONNECTION_ALREADY_EXISTS=Cannot ${action} 
${type}. Storage connection already exists.
Line 346: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_ACTION_FOR_STORAGE=Cannot 
${action} ${type}. Storage connection parameters can be edited only for NFS 
data domains in maintenance.
Line 347: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL_STORAGE_DOMAINS=Cannot 
${action} ${type}. Cannot ${action} ${type}. Storage connection parameters are 
related to the following storage domains : ${domainNames}.
Done
Line 348: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL_STORAGE_DOMAINS_AND_DISKS=Cannot
 ${action} ${type}. Storage connection parameters are related to the following 
storage domains : ${domainNames} and disks: ${diskNames}.
Line 349: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL__DISKS=Cannot 
${action} ${type}. Storage connection parameters are related to the following 
disks : ${diskNames}.
Line 350: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_WRONG_PARAMETERS_FOR_STORAGE_TYPE=Cannot 
${action} ${type}. Connection parameters are invalid for this storage type.
Line 351: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_CHANGE_STORAGE_TYPE=Cannot 
${action} ${type}. Storage type cannot be edited.


Line 344: ACTION_TYPE_FAILED_STORAGE_CONNECTION_ID_EMPTY=Cannot ${action} 
${type}. Storage connection id is empty.
Line 345: ACTION_TYPE_FAILED_STORAGE_CONNECTION_ALREADY_EXISTS=Cannot ${action} 
${type}. Storage connection already exists.
Line 346: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_ACTION_FOR_STORAGE=Cannot 
${action} ${type}. Storage connection parameters can be edited only for NFS 
data domains in maintenance.
Line 347: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL_STORAGE_DOMAINS=Cannot 
${action} ${type}. Cannot ${action} ${type}. Storage connection parameters are 
related to the following storage domains : ${domainNames}.
Line 348: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL_STORAGE_DOMAINS_AND_DISKS=Cannot
 ${action} ${type}. Storage connection parameters are related to the following 
storage domains : ${domainNames} and disks: ${diskNames}.
Done
Line 349: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL__DISKS=Cannot 
${action} ${type}. Storage connection parameters are related to the following 
disks : ${diskNames}.
Line 350: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_WRONG_PARAMETERS_FOR_STORAGE_TYPE=Cannot 
${action} ${type}. Connection parameters are invalid for this storage type.
Line 351: 
ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_CHANGE_STORAGE_TYPE=Cannot 
${action} ${type}. Storage type cannot be edited.
Line 352: ACTION_TYPE_FAILED_STORAGE_DOMAIN_NOT_EXIST=Cannot ${action} ${type}. 
Storage Domain doesn't exist.


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

Gerrit-MessageType: comment
Gerrit-Change-Id: Ib7a633b06195a7b8ca1cd4fc5023c05010a3161d
Gerrit-PatchSet: 4
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alissa Bonas <abo...@redhat.com>
Gerrit-Reviewer: Alissa Bonas <abo...@redhat.com>
Gerrit-Reviewer: Allon Mureinik <amure...@redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to