Mike Kolesnik has posted comments on this change.

Change subject: core: MacPool related Commands
......................................................................


Patch Set 16: Code-Review-1

(31 comments)

http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java:

Line 26: 
Line 27:     @Override
Line 28:     public List<PermissionSubject> getPermissionCheckSubjects() {
Line 29:         return Collections.singletonList(new 
PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID,
Line 30:                 VdcObjectType.System,       //TODO MM: fix?
The TODO should be in separate line..
Line 31:                 ActionGroup.CONFIGURE_ENGINE));
Line 32:     }
Line 33: 
Line 34:     @Override


Line 37:             return false;
Line 38:         }
Line 39: 
Line 40:         final MacPoolValidator validator = new MacPoolValidator(null, 
getMacPool());
Line 41:         return validate(validator.defaultPoolFlagIsNotSet()) && 
validate(validator.hasUniqueName());        //TODO MM: improve.
What do you intend to improve?
Line 42:     }
Line 43: 
Line 44:     private MacPool getMacPool() {
Line 45:         return getParameters().getMacPool();


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MacPoolValidator.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MacPoolValidator.java:

Line 6: import org.ovirt.engine.core.common.errors.VdcBllMessages;
Line 7: import org.ovirt.engine.core.dal.dbbroker.DbFacade;
Line 8: import org.ovirt.engine.core.dao.MacPoolDao;
Line 9: 
Line 10: public class MacPoolValidator {
You should add tests to cover the functionality of the class and in redgards 
with different combinations of old & new mac pool (including null values)
Line 11: 
Line 12:     private final MacPool macPoolFromDb;
Line 13:     private final MacPool newMacPool;
Line 14: 


Line 17:         this.newMacPool = newMacPool;
Line 18:     }
Line 19: 
Line 20:     public ValidationResult defaultPoolFlagIsNotSet() {
Line 21:         if (newMacPool.isDefaultPool()) {
Please use the new fluent syntax to validate things, see: 
http://gerrit.ovirt.org/#/c/29414/2 or ValidationResult.failWith for an example 
(this goes for most of the methods here)
Line 22:             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CHANGING_DEFAULT_MAC_POOL_IS_NOT_SUPPORTED);
Line 23:         } else {
Line 24:             return ValidationResult.VALID;
Line 25:         }


Line 18:     }
Line 19: 
Line 20:     public ValidationResult defaultPoolFlagIsNotSet() {
Line 21:         if (newMacPool.isDefaultPool()) {
Line 22:             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CHANGING_DEFAULT_MAC_POOL_IS_NOT_SUPPORTED);
If I'm not mistaken you're not changing the default pool when calling this 
check but creating a new one, so I'm not sure this is the right error message 
for that occasion.
Line 23:         } else {
Line 24:             return ValidationResult.VALID;
Line 25:         }
Line 26:     }


Line 25:         }
Line 26:     }
Line 27: 
Line 28:     public ValidationResult hasUniqueName() {
Line 29:         if (!macPoolNameUnique(newMacPool.getName())) {
Why pass in parameter? It's already a field in the class..
Line 30:             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_MAC_POOL_OF_THIS_NAME_ALREADY_EXIST);
Line 31:         } else {
Line 32:             return ValidationResult.VALID;
Line 33:         }


Line 26:     }
Line 27: 
Line 28:     public ValidationResult hasUniqueName() {
Line 29:         if (!macPoolNameUnique(newMacPool.getName())) {
Line 30:             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_MAC_POOL_OF_THIS_NAME_ALREADY_EXIST);
You should use ACTION_TYPE_FAILED_NAME_ALREADY_USED
Line 31:         } else {
Line 32:             return ValidationResult.VALID;
Line 33:         }
Line 34:     }


Line 35: 
Line 36:     private boolean macPoolNameUnique(String name) {
Line 37:         final List<MacPool> macPools = getMacPoolDao().getAll();
Line 38:         for (MacPool pool : macPools) {
Line 39:             if (pool.getName().equals(name)) {
I suspect that in case of updating the mac pool this would fail, as it already 
exists in the DB with same name. You should only consider it non-unique if id 
is not the same as the one you updating.
Line 40:                 return false;
Line 41:             }
Line 42:         }
Line 43: 


Line 43: 
Line 44:         return true;
Line 45:     }
Line 46: 
Line 47:     public ValidationResult oldMacPoolIsNotDefault() {
Should be named "notRemovingDefaultPool" since the error you give refers to the 
removal of the pool explicitly.
Line 48:         if (macPoolFromDb.isDefaultPool()) {
Line 49:             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_REMOVE_DEFAULT_MAC_POOL);
Line 50:         } else {
Line 51:             return ValidationResult.VALID;


Line 51:             return ValidationResult.VALID;
Line 52:         }
Line 53:     }
Line 54: 
Line 55:     public ValidationResult isNotUsed() {
Should be named "notRemovingUsedPool" since the error you give refers to the 
removal of the pool explicitly.
Line 56:         final int dcUsageCount = 
getMacPoolDao().getDCUsageCount(macPoolFromDb.getId());
Line 57:         if (dcUsageCount != 0) {
Line 58:             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_REMOVE_STILL_USED_MAC_POOL);
Line 59:         } else {


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java:

Line 12: import org.ovirt.engine.core.common.errors.VdcBllMessages;
Line 13: import org.ovirt.engine.core.compat.Guid;
Line 14: import org.ovirt.engine.core.utils.transaction.RollbackHandler;
Line 15: 
Line 16: public class RemoveMacPoolCommand extends 
MacPoolCommandBase<RemoveMacPoolByIdParameters> implements RollbackHandler {
Again no need to explicitly implement RollbackHandler
Line 17: 
Line 18:     private MacPool oldMacPool;
Line 19: 
Line 20:     public RemoveMacPoolCommand(RemoveMacPoolByIdParameters 
parameters) {


Line 53: 
Line 54:     @Override
Line 55:     public List<PermissionSubject> getPermissionCheckSubjects() {
Line 56:         return Collections.singletonList(new 
PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID,
Line 57:                 VdcObjectType.System/* VdcObjectType.MacPool */, 
ActionGroup.CONFIGURE_ENGINE)); // TODO MM: fix?
Please don't save VdcObjectType.MacPool comment and also the TODO should be in 
separate line..
Line 58:     }
Line 59: 
Line 60: 
Line 61:     @Override


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java:

Line 59: 
Line 60:     @Override
Line 61:     public List<PermissionSubject> getPermissionCheckSubjects() {
Line 62:         return Collections.singletonList(new 
PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID,
Line 63:                 VdcObjectType.System/* VdcObjectType.MacPool */, 
ActionGroup.CONFIGURE_ENGINE)); // TODO MM: fix?
Please don't save VdcObjectType.MacPool comment and also the TODO should be in 
separate line..
Line 64:     }
Line 65: 
Line 66:     @Override
Line 67:     public void rollback() {


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java:

Line 26:         super(parameters);
Line 27:     }
Line 28: 
Line 29:     protected void addStoragePoolToDb() {
Line 30:         final StoragePool storagePool = getStoragePool();
No need to extract to variable
Line 31:         storagePool.setId(Guid.newGuid());
Line 32:         storagePool.setStatus(StoragePoolStatus.Uninitialized);
Line 33: 
Line 34:         Guid requestedMacPoolId = storagePool.getMacPoolId();


Line 31:         storagePool.setId(Guid.newGuid());
Line 32:         storagePool.setStatus(StoragePoolStatus.Uninitialized);
Line 33: 
Line 34:         Guid requestedMacPoolId = storagePool.getMacPoolId();
Line 35:         Guid macPoolIdToUse = requestedMacPoolId == null ?
The ? and : operators should be in the start of the new line, this makes the 
code easier to read and understand since you don't have to look at it in the 
end of the previous line, but you see it right there with the indentation
Line 36:                 getMacPoolDao().getDefaultPool().getId() :
Line 37:                 requestedMacPoolId;
Line 38: 
Line 39:         storagePool.setMacPoolId(macPoolIdToUse);


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoveMacPoolByIdParameters.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoveMacPoolByIdParameters.java:

Line 4: 
Line 5: import org.ovirt.engine.core.common.validation.group.UpdateEntity;
Line 6: import org.ovirt.engine.core.compat.Guid;
Line 7: 
Line 8: public class RemoveMacPoolByIdParameters extends 
VdcActionParametersBase {
No need for this class, you should use IdParameters
Line 9: 
Line 10:     @NotNull(groups = {UpdateEntity.class })
Line 11:     private Guid macPoolId;
Line 12: 


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ActionGroup.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ActionGroup.java:

Line 134:     // affinity group CRUD commands
Line 135:     MANIPULATE_AFFINITY_GROUPS(1550, RoleType.ADMIN, true, 
ApplicationMode.VirtOnly),
Line 136: 
Line 137:     // MAC pool actions groups
Line 138:     CREATE_MAC_POOL(1660, RoleType.ADMIN, true, 
ApplicationMode.VirtOnly),
These aren't used currently so shouldn't be part of this patch set
Line 139:     EDIT_MAC_POOL(1661, RoleType.ADMIN, true, 
ApplicationMode.VirtOnly),
Line 140:     DELETE_MAC_POOL(1662, RoleType.ADMIN, true, 
ApplicationMode.VirtOnly);
Line 141: 
Line 142:     private int id;


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/MacPool.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/MacPool.java:

Line 63
Line 64
Line 65
Line 66
Line 67
This removal should happen in the patch that introduces this, since it's not 
merged yet..


Line 14: public class MacPool extends IVdcQueryable implements 
BusinessEntity<Guid>, Serializable{
Line 15:     @NotNull(groups = { UpdateEntity.class })
Line 16:     private Guid id;
Line 17: 
Line 18:     @NotEmpty(message = "ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_NAME")
You should use ACTION_TYPE_FAILED_NAME_MAY_NOT_BE_EMPTY
Line 19:     private String name;
Line 20: 
Line 21:     private boolean allowDuplicateMacAddresses;
Line 22: 


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/MacRange.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/MacRange.java:

Line 9: 
Line 10: public class MacRange implements Serializable{
Line 11:     private Guid macPoolId;
Line 12: 
Line 13:     @Pattern(regexp = "^[a-fA-F0-9][02468aAcCeE](:[a-fA-F0-9]{2}){5}$")
You should use VmNic.UNICAST_MAC_ADDRESS_FORMAT

And probably VmNic.VALIDATION_MESSAGE_MAC_ADDRESS_INVALID for message
Line 14:     @NotNull
Line 15:     private String macFrom;
Line 16: 
Line 17:     @Pattern(regexp = "^[a-fA-F0-9][02468aAcCeE](:[a-fA-F0-9]{2}){5}$")


Line 10: public class MacRange implements Serializable{
Line 11:     private Guid macPoolId;
Line 12: 
Line 13:     @Pattern(regexp = "^[a-fA-F0-9][02468aAcCeE](:[a-fA-F0-9]{2}){5}$")
Line 14:     @NotNull
You should use VmNic.VALIDATION_MESSAGE_MAC_ADDRESS_NOT_NULL for message
Line 15:     private String macFrom;
Line 16: 
Line 17:     @Pattern(regexp = "^[a-fA-F0-9][02468aAcCeE](:[a-fA-F0-9]{2}){5}$")
Line 18:     @NotNull


Line 13:     @Pattern(regexp = "^[a-fA-F0-9][02468aAcCeE](:[a-fA-F0-9]{2}){5}$")
Line 14:     @NotNull
Line 15:     private String macFrom;
Line 16: 
Line 17:     @Pattern(regexp = "^[a-fA-F0-9][02468aAcCeE](:[a-fA-F0-9]{2}){5}$")
Same here
Line 18:     @NotNull
Line 19:     private String macTo;
Line 20: 
Line 21:     public String getMacFrom() {


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java:

Line 365:     
ACTION_TYPE_FAILED_CANNOT_REMOVE_DEFAULT_MAC_POOL(ErrorType.CONFLICT),
Line 366:     
ACTION_TYPE_FAILED_CANNOT_REMOVE_STILL_USED_MAC_POOL(ErrorType.CONFLICT),
Line 367:     
ACTION_TYPE_FAILED_MAC_POOL_DOES_NOT_EXIST(ErrorType.BAD_PARAMETERS),
Line 368:     
ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_NAME(ErrorType.BAD_PARAMETERS),
Line 369:     
ACTION_TYPE_FAILED_CHANGING_DEFAULT_MAC_POOL_IS_NOT_SUPPORTED(ErrorType.BAD_PARAMETERS),
ErrorType.NOT_SUPPORTED is more suitable
Line 370:     
ACTION_TYPE_FAILED_MAC_POOL_OF_THIS_NAME_ALREADY_EXIST(ErrorType.BAD_PARAMETERS),
Line 371:     
ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_RANGE(ErrorType.BAD_PARAMETERS),
Line 372:     
VM_CANNOT_MOVE_TO_CLUSTER_IN_OTHER_STORAGE_POOL(ErrorType.CONFLICT),
Line 373:     VM_CLUSTER_IS_NOT_VALID(ErrorType.BAD_PARAMETERS),


Line 367:     
ACTION_TYPE_FAILED_MAC_POOL_DOES_NOT_EXIST(ErrorType.BAD_PARAMETERS),
Line 368:     
ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_NAME(ErrorType.BAD_PARAMETERS),
Line 369:     
ACTION_TYPE_FAILED_CHANGING_DEFAULT_MAC_POOL_IS_NOT_SUPPORTED(ErrorType.BAD_PARAMETERS),
Line 370:     
ACTION_TYPE_FAILED_MAC_POOL_OF_THIS_NAME_ALREADY_EXIST(ErrorType.BAD_PARAMETERS),
Line 371:     
ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_RANGE(ErrorType.BAD_PARAMETERS),
This isn't used..
Line 372:     
VM_CANNOT_MOVE_TO_CLUSTER_IN_OTHER_STORAGE_POOL(ErrorType.CONFLICT),
Line 373:     VM_CLUSTER_IS_NOT_VALID(ErrorType.BAD_PARAMETERS),
Line 374:     VM_CANNOT_REMOVE_VM_WHEN_STATUS_IS_NOT_DOWN(ErrorType.CONFLICT),
Line 375:     
VM_CANNOT_REMOVE_WITH_DETACH_DISKS_SNAPSHOTS_EXIST(ErrorType.CONFLICT),


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
File 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java:

Line 570:     public StoragePoolDAO getStoragePoolDAO() {
Line 571:         return getDbFacade().getStoragePoolDao();
Line 572:     }
Line 573: 
Line 574:     public MacPoolDao getMacPoolDao() {
Since you introduced MacPoolBaseCommand then this should probably reside there
Line 575:         return getDbFacade().getMacPoolDao();
Line 576:     }
Line 577: 
Line 578:     public StorageDomainStaticDAO getStorageDomainStaticDAO() {


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
File 
backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties:

Line 8: IRS_NETWORK_ERROR=Storage Manager Service not responding.
Line 9: IRS_PROTOCOL_ERROR=Storage Manager protocol error.
Line 10: IRS_RESPONSE_ERROR=Storage Manager response error.
Line 11: MAC_POOL_NOT_ENOUGH_MAC_ADDRESSES=Not enough MAC addresses left in MAC 
Address Pool.
Line 12: ACTION_TYPE_FAILED_CANNOT_REMOVE_STILL_USED_MAC_POOL=Cannot ${action} 
${type}. Mac pool cannot be removed, because some DataCenter is still using it.
s/Mac Pool/${type}/
s/DataCenter/data center/
Line 13: ACTION_TYPE_FAILED_CANNOT_REMOVE_DEFAULT_MAC_POOL=Cannot ${action} 
${type}. Default MAC Pool cannot be removed.
Line 14: ACTION_TYPE_FAILED_MAC_POOL_DOES_NOT_EXIST=Cannot ${action} ${type}. 
Mac pool does not exist.
Line 15: ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_NAME=Cannot ${action} ${type}. 
Mac pool cannot be created. Shared MAC pools must have names.
Line 16: ACTION_TYPE_FAILED_CHANGING_DEFAULT_MAC_POOL_IS_NOT_SUPPORTED=Cannot 
${action} ${type}. Changing default MAC Pool is not supported.


Line 9: IRS_PROTOCOL_ERROR=Storage Manager protocol error.
Line 10: IRS_RESPONSE_ERROR=Storage Manager response error.
Line 11: MAC_POOL_NOT_ENOUGH_MAC_ADDRESSES=Not enough MAC addresses left in MAC 
Address Pool.
Line 12: ACTION_TYPE_FAILED_CANNOT_REMOVE_STILL_USED_MAC_POOL=Cannot ${action} 
${type}. Mac pool cannot be removed, because some DataCenter is still using it.
Line 13: ACTION_TYPE_FAILED_CANNOT_REMOVE_DEFAULT_MAC_POOL=Cannot ${action} 
${type}. Default MAC Pool cannot be removed.
s/Mac Pool/${type}/
Line 14: ACTION_TYPE_FAILED_MAC_POOL_DOES_NOT_EXIST=Cannot ${action} ${type}. 
Mac pool does not exist.
Line 15: ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_NAME=Cannot ${action} ${type}. 
Mac pool cannot be created. Shared MAC pools must have names.
Line 16: ACTION_TYPE_FAILED_CHANGING_DEFAULT_MAC_POOL_IS_NOT_SUPPORTED=Cannot 
${action} ${type}. Changing default MAC Pool is not supported.
Line 17: ACTION_TYPE_FAILED_MAC_POOL_OF_THIS_NAME_ALREADY_EXIST=Cannot 
${action} ${type}. MAC Pool of this name already exist.


Line 10: IRS_RESPONSE_ERROR=Storage Manager response error.
Line 11: MAC_POOL_NOT_ENOUGH_MAC_ADDRESSES=Not enough MAC addresses left in MAC 
Address Pool.
Line 12: ACTION_TYPE_FAILED_CANNOT_REMOVE_STILL_USED_MAC_POOL=Cannot ${action} 
${type}. Mac pool cannot be removed, because some DataCenter is still using it.
Line 13: ACTION_TYPE_FAILED_CANNOT_REMOVE_DEFAULT_MAC_POOL=Cannot ${action} 
${type}. Default MAC Pool cannot be removed.
Line 14: ACTION_TYPE_FAILED_MAC_POOL_DOES_NOT_EXIST=Cannot ${action} ${type}. 
Mac pool does not exist.
s/Mac Pool/${type}/
Line 15: ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_NAME=Cannot ${action} ${type}. 
Mac pool cannot be created. Shared MAC pools must have names.
Line 16: ACTION_TYPE_FAILED_CHANGING_DEFAULT_MAC_POOL_IS_NOT_SUPPORTED=Cannot 
${action} ${type}. Changing default MAC Pool is not supported.
Line 17: ACTION_TYPE_FAILED_MAC_POOL_OF_THIS_NAME_ALREADY_EXIST=Cannot 
${action} ${type}. MAC Pool of this name already exist.
Line 18: ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_RANGE=Cannot ${action} ${type}. 
MacPool must contain at least one mac range.


Line 12: ACTION_TYPE_FAILED_CANNOT_REMOVE_STILL_USED_MAC_POOL=Cannot ${action} 
${type}. Mac pool cannot be removed, because some DataCenter is still using it.
Line 13: ACTION_TYPE_FAILED_CANNOT_REMOVE_DEFAULT_MAC_POOL=Cannot ${action} 
${type}. Default MAC Pool cannot be removed.
Line 14: ACTION_TYPE_FAILED_MAC_POOL_DOES_NOT_EXIST=Cannot ${action} ${type}. 
Mac pool does not exist.
Line 15: ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_NAME=Cannot ${action} ${type}. 
Mac pool cannot be created. Shared MAC pools must have names.
Line 16: ACTION_TYPE_FAILED_CHANGING_DEFAULT_MAC_POOL_IS_NOT_SUPPORTED=Cannot 
${action} ${type}. Changing default MAC Pool is not supported.
s/MAC Pool/${type}/
Line 17: ACTION_TYPE_FAILED_MAC_POOL_OF_THIS_NAME_ALREADY_EXIST=Cannot 
${action} ${type}. MAC Pool of this name already exist.
Line 18: ACTION_TYPE_FAILED_MAC_POOL_MUST_HAVE_RANGE=Cannot ${action} ${type}. 
MacPool must contain at least one mac range.
Line 19: VMT_CANNOT_REMOVE_DETECTED_DERIVED_VM=Cannot delete Template. Template 
is being used by the following VMs: ${vmsList}.
Line 20: VMT_CANNOT_REMOVE_BASE_WITH_VERSIONS=Cannot delete Base Template that 
has Template Versions, please first remove all Template Versions for this 
Template: ${versionsList}.


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java
File 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java:

No need to touch this file in this patch
Line 1: /*
Line 2: * Copyright (c) 2010 Red Hat, Inc.
Line 3: *
Line 4: * Licensed under the Apache License, Version 2.0 (the "License");


http://gerrit.ovirt.org/#/c/28705/16/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermitMapper.java
File 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermitMapper.java:

No need to touch this file in this patch
Line 1: package org.ovirt.engine.api.restapi.types;
Line 2: 
Line 3: import org.ovirt.engine.api.model.Permit;
Line 4: import org.ovirt.engine.api.model.PermitType;


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

Gerrit-MessageType: comment
Gerrit-Change-Id: I9c0c3657e3e53699bcafa375befdce848b01a2f3
Gerrit-PatchSet: 16
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Mucha <[email protected]>
Gerrit-Reviewer: Martin Mucha <[email protected]>
Gerrit-Reviewer: Mike Kolesnik <[email protected]>
Gerrit-Reviewer: Moti Asayag <[email protected]>
Gerrit-Reviewer: [email protected]
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to