Liron Aravot has posted comments on this change.

Change subject: core: perform ovf update for domain when it's deactivated
......................................................................


Patch Set 6:

(19 comments)

http://gerrit.ovirt.org/#/c/33158/6//COMMIT_MSG
Commit Message:

Line 12: 
Line 13: Ovf stores are created for a domain according to the config
Line 14: value StorageDomainOvfStoreCount on each OvfDataUpdater run, so the 
same
Line 15: case should be supported on deactivation of domain (OVF stores will be
Line 16:         created if needed).
> remove redundant spaces
Done
Line 17: 
Line 18: Change-Id: I54cc929937d3b14dc49a2edab9e763cbe603a9c3
Line 19: Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1138124


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java:

Line 736:     }
Line 737: 
Line 738:     protected boolean hasParentCommand() {
Line 739:         return getParameters().getParentCommand() != 
VdcActionType.Unknown;
Line 740:     }
> This is only used for the OVF, won't it be more appropriate to put it in so
it's used in multiple commands and it's a general 'utility' method, hence it 
belongs here imo.
Line 741: 
Line 742:     private boolean internalCanDoAction() {
Line 743:         boolean returnValue = false;
Line 744:         try {


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateOvfStoresForStorageDomainCommand.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateOvfStoresForStorageDomainCommand.java:

Line 18: import 
org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
Line 19: import org.ovirt.engine.core.dao.StorageDomainOvfInfoDao;
Line 20: 
Line 21: @InternalCommandAttribute
Line 22: @NonTransactiveCommandAttribute
> I think it will be better it will extend StorageDomainCommandBase as Create
let's discuss it out of this patch scope, as the hierarchy wasn't changed in 
this patch.
Line 23: public class CreateOvfStoresForStorageDomainCommand<T extends 
CreateOvfStoresForStorageDomainCommandParameters> extends CommandBase<T> {
Line 24: 
Line 25:     public CreateOvfStoresForStorageDomainCommand(T parameters) {
Line 26:         this(parameters, null);


Line 41:                 
parameters.setParentParameters(getParameters().getParentParameters());
Line 42:             } else {
Line 43:                 parameters.setParentCommand(getActionType());
Line 44:                 parameters.setParentParameters(getParameters());
Line 45:             }
> Please extract this to a seperate method, called getCreateOvfVolumeForStora
Done
Line 46: 
Line 47:             VdcReturnValueBase vdcReturnValueBase =
Line 48:                     
runInternalAction(VdcActionType.CreateOvfVolumeForStorageDomain,
Line 49:                             parameters);


Line 113:     private ProcessOvfUpdateForStorageDomainCommandParameters 
createProcessOvfUpdateForDomainParams() {
Line 114:         ProcessOvfUpdateForStorageDomainCommandParameters params = 
new 
ProcessOvfUpdateForStorageDomainCommandParameters(getParameters().getStoragePoolId(),
 getParameters().getStorageDomainId());
Line 115:         
params.setSkipDomainChecks(getParameters().isSkipDomainChecks());
Line 116:         params.setParentCommand(getParameters().getParentCommand());
Line 117:         
params.setSkipDomainChecks(getParameters().isSkipDomainChecks());
> This set was done already in line 115
Done
Line 118:         
params.setParentParameters(getParameters().getParentParameters());
Line 119:         return params;
Line 120:     }
Line 121: 


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImageSpmCommand.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImageSpmCommand.java:

Line 53
Line 54
Line 55
Line 56
Line 57
> What about uploadStreamCommand, doesn't it need to verify the storage pool 
the caller is responsible for doing that.


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunnersFactory.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunnersFactory.java:

Line 20:                                                                     
ArrayList<VdcActionParametersBase> parameters,
Line 21:                                                                     
boolean isInternal, CommandContext commandContext) {
Line 22:         MultipleActionsRunner runner;
Line 23:         switch (actionType) {
Line 24:         case DeactivateStorageDomainWithOvfUpdate: {
> can this (and the GUI part) be seperated into a different patch? to make th
i prefer to keep it in the same patch..the changes are minimal (just name 
change).
Line 25:             runner = new 
DeactivateStorageDomainsMultipleActionRunner(actionType, parameters, 
commandContext, isInternal);
Line 26:             break;
Line 27:         }
Line 28:         case AttachStorageDomainToPool: {


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainWithOvfUpdateCommand.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainWithOvfUpdateCommand.java:

Line 55:                                 getParameters().getStoragePoolId()));
Line 56:         changeDomainStatusWithCompensation(map, 
StorageDomainStatus.Unknown, StorageDomainStatus.Locked);
Line 57: 
Line 58:         if (shouldPerformOvfUpdate()) {
Line 59:             
Backend.getInstance().runInternalAction(VdcActionType.ProcessOvfUpdateForStoragePool,
 new StoragePoolParametersBase(getStoragePoolId()));
> use runInternalAction (remove Backend.getInstance())
Done
Line 60: 
Line 61:             VdcReturnValueBase tmpRetValue = 
runInternalActionWithTasksContext(VdcActionType.ProcessOvfUpdateForStorageDomain,
Line 62:                     createProcessOvfUpdateForDomainParams(), 
getLock());
Line 63:             
getReturnValue().getVdsmTaskIdList().addAll(tmpRetValue.getInternalVdsmTaskIdList());


Line 112: 
Line 113:         List<Guid> createdTasks = new LinkedList<>();
Line 114: 
Line 115:         for (VdcActionParametersBase parametersBase : 
getParameters().getImagesParameters()) {
Line 116:             if (parametersBase.getCommandType() == 
VdcActionType.AddImageFromScratch) {
> Please move this if before the for loop, and get the type from the first im
i prefer to have it that way than assume that there's always an element (which 
is breakable). therefore i leave this as is.
Line 117:                 CreateOvfStoresForStorageDomainCommandParameters 
parameters = new 
CreateOvfStoresForStorageDomainCommandParameters(getParameters().getStoragePoolId(),
Line 118:                         getParameters().getStorageDomainId(), 0);
Line 119:                 
parameters.getImagesParameters().addAll(getParameters().getImagesParameters());
Line 120:                 parameters.setParentParameters(getParameters());


Line 154:                         waitForTasksToBeCleared();
Line 155:                         executeDeactivateCommnad();
Line 156:                     } catch (Exception e) {
Line 157:                         setSucceeded(false);
Line 158:                         log.errorFormat("Error when attempting to 
deactivate storage domain {0}", getStorageDomainId(), e);
> This should be changed to log.error instead of log.errorFormat (after rebas
why?
Line 159:                         compensate();
Line 160:                     }
Line 161:                 }
Line 162:             });


Line 166:     }
Line 167: 
Line 168:     protected void waitForTasksToBeCleared() throws 
InterruptedException {
Line 169:         while (true) {
Line 170:             Thread.sleep(3000);
> please use TimeUnit.SECONDS.sleep(x), it is more readable that way
Done
Line 171:             List<Guid> tasks = 
getDbFacade().getAsyncTaskDao().getAsyncTaskIdsByEntity(getStorageDomainId());
Line 172:             if (tasks.isEmpty()) {
Line 173:                 return;
Line 174:             }


Line 169:         while (true) {
Line 170:             Thread.sleep(3000);
Line 171:             List<Guid> tasks = 
getDbFacade().getAsyncTaskDao().getAsyncTaskIdsByEntity(getStorageDomainId());
Line 172:             if (tasks.isEmpty()) {
Line 173:                 return;
> Please add a log here
Done
Line 174:             }
Line 175:         }
Line 176:     }


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddDiskParameters.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddDiskParameters.java:

Line 8:     private Guid vmSnapshotId;
Line 9:     private Guid storageDomainId;
Line 10:     private Boolean plugDiskToVm;
Line 11:     private boolean shouldRemainIllegalOnFailedExecution;
Line 12:     private boolean skipDomainCheck;
> /s/skipDomainCheck/skipDomainValidation
i prefer to keep the name as is.
Line 13: 
Line 14:     public AddDiskParameters() {
Line 15:         storageDomainId = Guid.Empty;
Line 16:     }


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateOvfStoresForStorageDomainCommandParameters.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateOvfStoresForStorageDomainCommandParameters.java:

Line 3: import org.ovirt.engine.core.compat.Guid;
Line 4: 
Line 5: public class CreateOvfStoresForStorageDomainCommandParameters extends 
StorageDomainParametersBase {
Line 6:     private int storesCount;
Line 7:     private boolean skipDomainChecks;
> /s/skipDomainChecks/skipDomainValidation
prefer to keep as is
Line 8: 
Line 9:     public CreateOvfStoresForStorageDomainCommandParameters() {
Line 10:     }
Line 11: 


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateOvfVolumeForStorageDomainCommandParameters.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateOvfVolumeForStorageDomainCommandParameters.java:

Line 2: 
Line 3: import org.ovirt.engine.core.compat.Guid;
Line 4: 
Line 5: public class CreateOvfVolumeForStorageDomainCommandParameters extends 
StorageDomainParametersBase {
Line 6:     private boolean skipDomainChecks;
> /s/skipDomainChecks/skipDomainValidation
prefer to keep as is
Line 7: 
Line 8:     public CreateOvfVolumeForStorageDomainCommandParameters() {
Line 9:         super();
Line 10:     }


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ProcessOvfUpdateForStorageDomainCommandParameters.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ProcessOvfUpdateForStorageDomainCommandParameters.java:

Line 1: package org.ovirt.engine.core.common.action;
Line 2: 
Line 3: import org.ovirt.engine.core.compat.Guid;
Line 4: 
Line 5: public class ProcessOvfUpdateForStorageDomainCommandParameters extends 
StorageDomainParametersBase {
> Why add a new class, why not using the same parameter class as CreateOvfVol
I prefer to have different classes for the different commands.
Line 6:     private boolean skipDomainChecks;
Line 7: 
Line 8:     public ProcessOvfUpdateForStorageDomainCommandParameters() {
Line 9:         super();


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/StorageDomainPoolParametersBase.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/StorageDomainPoolParametersBase.java:

Line 6:     private static final long serialVersionUID = 6248101174739394633L;
Line 7: 
Line 8:     private boolean runSilent;
Line 9:     private boolean inactive;
Line 10:     private boolean skipChecks;
> /s/skipChecks/skipValidation
prefer to keep as is
Line 11: 
Line 12:     public boolean isInactive() {
Line 13:         return inactive;
Line 14:     }


http://gerrit.ovirt.org/#/c/33158/6/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
File 
backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties:

Line 455
Line 456
Line 457
Line 458
Line 459
> why removing this?
because we don't have the user name after the tasks execution end (in the end 
method), which leads to audit log with placerholder.


Line 456
Line 457
Line 458
Line 459
Line 460
> why removing this?
because we don't have the user name after the tasks execution end (in the end 
method), which leads to audit log with placerholder.


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

Gerrit-MessageType: comment
Gerrit-Change-Id: I54cc929937d3b14dc49a2edab9e763cbe603a9c3
Gerrit-PatchSet: 6
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Liron Aravot <lara...@redhat.com>
Gerrit-Reviewer: Allon Mureinik <amure...@redhat.com>
Gerrit-Reviewer: Liron Aravot <lara...@redhat.com>
Gerrit-Reviewer: Maor Lipchuk <mlipc...@redhat.com>
Gerrit-Reviewer: automat...@ovirt.org
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to