Allon Mureinik has posted comments on this change. Change subject: core: Add storage space thresholds support ......................................................................
Patch Set 23: Code-Review-1 (26 comments) I'm all for the idea generally, but see specific comments inline. Also, adding Juan to review the REST parts. https://gerrit.ovirt.org/#/c/35277/23//COMMIT_MSG Commit Message: Line 10: LowSpaceThreshold (Percentage) and CriticalSpaceThreshold (absolute value in GB). Line 11: The initial and default values for these thresholds are taken from Line 12: configuration/vdc_options table. Line 13: These replace the previously named FreeSpaceLow and Line 14: FreeSpaceCriticalLowInGB configuration values. Worth mentioning that these conf values still exist, and act as a "default of defaults" for when you create a new domain Line 15: Line 16: Change-Id: I19621dfc770c69003d731a7593d037d7d4040a82 Line 17: Bug-Url: https://bugzilla.redhat.com/679070 Line 18: Bug-Url: https://bugzilla.redhat.com/1185839 https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageDomainCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageDomainCommand.java: Line 54: props.remove("description"); Line 55: props.remove("comment"); Line 56: props.remove("wipeAfterDelete"); Line 57: props.remove("lowSpaceThreshold"); Line 58: props.remove("criticalSpaceThreshold"); This is becoming way too cumbersome. We need to find a better solution for this logic, although I don't think THIS patch is the place to do it. Line 59: if (!props.isEmpty()) { Line 60: log.warn("There was an attempt to update the following fields although they are not allowed to be updated: {}", Line 61: StringUtils.join(props, ",")); Line 62: return failCanDoAction(VdcBllMessages.ERROR_CANNOT_CHANGE_STORAGE_DOMAIN_FIELDS); https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskCommandTest.java File backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskCommandTest.java: Line 72: Line 73: @ClassRule Line 74: public static MockConfigRule mcr = new MockConfigRule( Line 75: mockConfig(ConfigValues.MaxBlockDiskSize, MAX_BLOCK_SIZE), Line 76: mockConfig(ConfigValues.CriticalSpaceThreshold, CRITICAL_SPACE_THRESHOLD), The command should now take this value from the domain - hence this mocking should be removed. Line 77: mockConfig(ConfigValues.ShareableDiskEnabled, Version.v3_1.toString(), true), Line 78: mockConfig(ConfigValues.VirtIoScsiEnabled, Version.v3_3.toString(), true) Line 79: ); Line 80: https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java File backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java: Line 607: mcr.mockConfigValue(ConfigValues.IsMigrationSupported, Version.v3_3, migrationMap); Line 608: } Line 609: Line 610: private void mockConfigSizeRequirements(int requiredSpaceBufferInGB) { Line 611: mcr.mockConfigValue(ConfigValues.CriticalSpaceThreshold, requiredSpaceBufferInGB); The command should now take this value from the domain - hence this mocking should be removed. If the test still requires it, it should be set on the domain object. Line 612: } Line 613: Line 614: private void mockConfigSizeDefaults() { Line 615: int requiredSpaceBufferInGB = 5; https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java File backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java: Line 68: mockConfig(ConfigValues.MaxVmNameLengthNonWindows, 64), Line 69: mockConfig(ConfigValues.MaxVmsInPool, 87), Line 70: mockConfig(ConfigValues.VM32BitMaxMemorySizeInMB, 2048), Line 71: mockConfig(ConfigValues.VM64BitMaxMemorySizeInMB, 262144), Line 72: mockConfig(ConfigValues.CriticalSpaceThreshold, 1), The command should now take this value from the domain - hence this mocking should be removed. Line 73: mockConfig(ConfigValues.InitStorageSparseSizeInGB, 1), Line 74: mockConfig(ConfigValues.ValidNumOfMonitors, Arrays.asList("1,2,4".split(","))) Line 75: ); Line 76: https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommandTest.java File backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommandTest.java: Line 50: private final static int CRITICAL_SPACE_THRESHOLD = 0; Line 51: Line 52: @ClassRule Line 53: public static MockConfigRule mcr = new MockConfigRule( Line 54: mockConfig(ConfigValues.CriticalSpaceThreshold, CRITICAL_SPACE_THRESHOLD)); The command should now take this value from the domain - hence this mocking should be removed. Line 55: Line 56: @Mock Line 57: private DiskImageDAO diskImageDao; Line 58: @Mock https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveSnapshotCommandTest.java File backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveSnapshotCommandTest.java: Line 122: doReturn(snapshot).when(snapshotDao).get(snapshot.getId()); Line 123: } Line 124: Line 125: private void mockConfigSizeRequirements(int requiredSpaceBufferInGB) { Line 126: mcr.mockConfigValue(ConfigValues.CriticalSpaceThreshold, requiredSpaceBufferInGB); The command should now take this value from the domain - hence this mocking should be removed. Line 127: } Line 128: Line 129: private void mockConfigSizeDefaults() { Line 130: int requiredSpaceBufferInGB = 5; https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java File backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java: Line 52: public class RestoreAllSnapshotCommandTest { Line 53: @ClassRule Line 54: public static MockConfigRule mcr = Line 55: new MockConfigRule( Line 56: mockConfig(ConfigValues.CriticalSpaceThreshold, 5) The command should now take this value from the domain - hence this mocking should be removed. Line 57: ); Line 58: Line 59: @Mock Line 60: private VDSBrokerFrontend vdsBrokerFrontend; https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/VmHandlerTest.java File backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/VmHandlerTest.java: Line 50: public static final int VM_SPACE_IN_MB = 2000; Line 51: Line 52: @Rule Line 53: public MockConfigRule mcr = new MockConfigRule( Line 54: mockConfig(ConfigValues.CriticalSpaceThreshold, THRESHOLD_IN_GB)); The command should now take this value from the domain - hence this mocking should be removed. Line 55: Line 56: @Before Line 57: public void setUp() { Line 58: VmHandler.init(); https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/storage/MultipleStorageDomainsValidatorTest.java File backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/storage/MultipleStorageDomainsValidatorTest.java: Line 40: Line 41: private final static int CRITICAL_SPACE_THRESHOLD = 5; Line 42: Line 43: @ClassRule Line 44: public static MockConfigRule mcr = new MockConfigRule(mockConfig(ConfigValues.CriticalSpaceThreshold, 10)); The command should now take this value from the domain - hence this mocking should be removed. Line 45: Line 46: @Mock Line 47: private StorageDomainDAO dao; Line 48: https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/storage/StorageDomainValidatorTest.java File backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/storage/StorageDomainValidatorTest.java: Line 28: private final static int CRITICAL_SPACE_THRESHOLD = 5; Line 29: Line 30: @ClassRule Line 31: public static MockConfigRule mcr = new MockConfigRule( Line 32: mockConfig(ConfigValues.CriticalSpaceThreshold, CRITICAL_SPACE_THRESHOLD) The command should now take this value from the domain - hence this mocking should be removed. Line 33: ); Line 34: Line 35: @Before Line 36: public void setUp() { https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomain.java File backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomain.java: Line 137: Integer availableSize = getAvailableDiskSize(); Line 138: return availableSize != null ? availableSize * SizeConverter.BYTES_IN_GB : null; Line 139: } Line 140: Line 141: public Integer getLowSpaceThreshold() { This should be a primitive int - symmetrically to setLowSpaceThreshold Line 142: return staticData.getLowSpaceThreshold(); Line 143: } Line 144: Line 145: public void setLowSpaceThreshold(int lowSpaceThreshold) { Line 145: public void setLowSpaceThreshold(int lowSpaceThreshold) { Line 146: staticData.setLowSpaceThreshold(lowSpaceThreshold); Line 147: } Line 148: Line 149: public Integer getCriticalSpaceThreshold() { Same here Line 150: return staticData.getCriticalSpaceThreshold(); Line 151: } Line 152: Line 153: public void setCriticalSpaceThreshold(int criticalSpaceThreshold) { https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties File backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties: Line 571: ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL=Cannot ${action} ${type}. Storage Domain format ${storageFormat} is illegal. Line 572: ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL_HOST=Cannot ${action} ${type}. Storage format ${storageFormat} is not supported on the selected host version. Line 573: ERROR_CANNOT_EXTEND_NON_DATA_DOMAIN=Cannot extend Storage Domain. Extend operation is supported only on Data Storage Domain. Line 574: ERROR_CANNOT_EXTEND_CONNECTION_FAILED=Cannot extend Storage Domain. Storage device ${lun} is unreachable on ${hostName}. Line 575: ERROR_CANNOT_CHANGE_STORAGE_DOMAIN_FIELDS=Cannot ${action} ${type}. Can only update the following fields: name, description, comment, wipe after delete, low space threshold, critical space threshold. use "and" instead of a comma before the last field in the list Line 576: ERROR_CANNOT_UPDATE_STORAGE_POOL_COMPATIBILITY_VERSION_BIGGER_THAN_CLUSTERS=Cannot update Data Center compatibility version to a value that is greater than its Cluster's version. The following clusters should be upgraded ${ClustersList}. Line 577: ERROR_CANNOT_ADD_EXISTING_STORAGE_DOMAIN_CONNECTION_DATA_ILLEGAL=Cannot import Storage Domain. Internal Error: The connection data is illegal. Line 578: ERROR_CANNOT_ADD_DEPRECATED_EXISTING_SAN_EXPORT_STORAGE_DOMAIN=Cannot import SAN Export Storage Domain as it is no longer supported. Line 579: NETWORK_MAC_ADDRESS_IN_USE=MAC Address is already in use. https://gerrit.ovirt.org/#/c/35277/23/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java File backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java: Line 58: } Line 59: if (model.isSetLowSpaceThreshold()) { Line 60: entity.setLowSpaceThreshold((model.getLowSpaceThreshold())); Line 61: } else if (entity.getLowSpaceThreshold() == -1) { Line 62: entity.setLowSpaceThreshold(Config.<Integer>getValue(ConfigValues.LowSpaceThreshold)); Formatter - you're missing a space after <Integer> Line 63: } Line 64: if (model.isSetCriticalSpaceThreshold()) { Line 65: entity.setCriticalSpaceThreshold((model.getCriticalSpaceThreshold())); Line 66: } else if (entity.getCriticalSpaceThreshold() == -1) { Line 63: } Line 64: if (model.isSetCriticalSpaceThreshold()) { Line 65: entity.setCriticalSpaceThreshold((model.getCriticalSpaceThreshold())); Line 66: } else if (entity.getCriticalSpaceThreshold() == -1) { Line 67: entity.setCriticalSpaceThreshold(Config.<Integer>getValue(ConfigValues.CriticalSpaceThreshold)); here too Line 68: } Line 69: return entity; Line 70: } Line 71: Line 64: if (model.isSetCriticalSpaceThreshold()) { Line 65: entity.setCriticalSpaceThreshold((model.getCriticalSpaceThreshold())); Line 66: } else if (entity.getCriticalSpaceThreshold() == -1) { Line 67: entity.setCriticalSpaceThreshold(Config.<Integer>getValue(ConfigValues.CriticalSpaceThreshold)); Line 68: } Also - why is this entire block here? Should it be in the Add command itself? Seems like backend logic to me. Line 69: return entity; Line 70: } Line 71: Line 72: @Mapping(from = StorageDomain.class, to = StorageServerConnections.class) https://gerrit.ovirt.org/#/c/35277/23/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java File frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java: Line 1578: Line 1579: @DefaultStringValue("Cannot extend Storage Domain. Storage device ${lun} is unreachable from ${hostName}.") Line 1580: String ERROR_CANNOT_EXTEND_CONNECTION_FAILED(); Line 1581: Line 1582: @DefaultStringValue("Cannot ${action} ${type}. Cannot ${action} ${type}. Can only update the following fields: name, description, comment, wipe after delete, low space threshold, critical space threshold.") You should use an "and" instead of a comma before the last field in the list. Line 1583: String ERROR_CANNOT_CHANGE_STORAGE_DOMAIN_FIELDS(); Line 1584: Line 1585: @DefaultStringValue("Cannot update Data Center compatibility version to a value that is greater than its Cluster's version. The following clusters should be upgraded ${ClustersList}.") Line 1586: String ERROR_CANNOT_UPDATE_STORAGE_POOL_COMPATIBILITY_VERSION_BIGGER_THAN_CLUSTERS(); https://gerrit.ovirt.org/#/c/35277/23/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java File frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java: Line 448: model.getOverride().setEntity( Line 449: connection.getNfsVersion() != null || Line 450: connection.getNfsRetrans() != null || Line 451: connection.getNfsTimeo() != null || Line 452: connection.getMountOptions() != null); Removing the empty line here is unrelated to the patch. If you want to get rid of it, please do so in a separate patch. Line 453: } Line 454: }), storage.getStorage(), true); Line 455: Line 456: return model; Line 1189: onSaveSanStorage(); Line 1190: } Line 1191: } Line 1192: Line 1193: private void saveMostStorageProperties(StorageModel model) { Can we find a better name for this method please? Line 1194: boolean isNew = model.getStorage() == null; Line 1195: storageDomain.setStorageType(isNew ? storageModel.getType() : storageDomain.getStorageType()); Line 1196: storageDomain.setStorageDomainType(isNew ? storageModel.getRole() : storageDomain.getStorageDomainType()); Line 1197: storageDomain.setDescription(model.getDescription().getEntity()); https://gerrit.ovirt.org/#/c/35277/23/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties File frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties: Line 525: ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL=Cannot ${action} ${type}. Storage Domain format ${storageFormat} is illegal. Line 526: ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL_HOST=Cannot ${action} ${type}. Storage format ${storageFormat} is not supported on the selected host version. Line 527: ERROR_CANNOT_EXTEND_NON_DATA_DOMAIN=Cannot extend Storage Domain. Extend operation is supported only on Data Storage Domain. Line 528: ERROR_CANNOT_EXTEND_CONNECTION_FAILED=Cannot extend Storage Domain. Storage device ${lun} is unreachable from ${hostName}. Line 529: ERROR_CANNOT_CHANGE_STORAGE_DOMAIN_FIELDS=Cannot ${action} ${type}. Can only update the following fields: name, description, comment, wipe after delete, low space threshold, critical space threshold. You should use an "and" instead of a comma before the last field in the list. Line 530: ERROR_CANNOT_UPDATE_STORAGE_POOL_COMPATIBILITY_VERSION_BIGGER_THAN_CLUSTERS=Cannot update Data Center compatibility version to a value that is greater than its Cluster's version. The following clusters should be upgraded ${ClustersList}. Line 531: ERROR_CANNOT_ADD_EXISTING_STORAGE_DOMAIN_CONNECTION_DATA_ILLEGAL=Cannot import Storage Domain. Internal Error: The connection data is illegal. Line 532: ERROR_CANNOT_ADD_DEPRECATED_EXISTING_SAN_EXPORT_STORAGE_DOMAIN=Cannot import SAN Export Storage Domain as it is no longer supported. Line 533: ERROR_CANNOT_ADD_EXISTING_STORAGE_DOMAIN_LUNS_PROBLEM=Cannot import Storage Domain. Not all LUNs connected to Storage Domain. https://gerrit.ovirt.org/#/c/35277/23/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.java File frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.java: Line 211: setElementVisibility(retransmissionsLabel, object.getRetransmissions().getIsAvailable()); Line 212: setElementVisibility(timeoutLabel, object.getTimeout().getIsAvailable()); Line 213: setElementVisibility(mountOptionsLabel, object.getMountOptions().getIsAvailable()); Line 214: Line 215: // When all advanced fields are unavailable - hide the expander. Why? Line 216: boolean anyField = object.getVersion().getIsAvailable() Line 217: || object.getRetransmissions().getIsAvailable() Line 218: || object.getTimeout().getIsAvailable() Line 219: || object.getMountOptions().getIsAvailable(); https://gerrit.ovirt.org/#/c/35277/23/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties File frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties: Line 576: ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL=Cannot ${action} ${type}. Storage Domain format ${storageFormat} is illegal. Line 577: ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL_HOST=Cannot ${action} ${type}. Storage format ${storageFormat} is not supported on the selected host version. Line 578: ERROR_CANNOT_EXTEND_NON_DATA_DOMAIN=Cannot extend Storage Domain. Extend operation is supported only on Data Storage Domain. Line 579: ERROR_CANNOT_EXTEND_CONNECTION_FAILED=Cannot extend Storage Domain. Storage device ${lun} is unreachable from ${hostName}. Line 580: ERROR_CANNOT_CHANGE_STORAGE_DOMAIN_FIELDS=Cannot ${action} ${type}. Can only update the following fields: name, description, comment, wipe after delete, low space threshold, critical space threshold. You should use an "and" instead of a comma before the last field in the list. Line 581: ERROR_CANNOT_UPDATE_STORAGE_POOL_COMPATIBILITY_VERSION_BIGGER_THAN_CLUSTERS=Cannot update Data Center compatibility version to a value that is greater than its Cluster's version. The following clusters should be upgraded ${ClustersList}. Line 582: ERROR_CANNOT_ADD_EXISTING_STORAGE_DOMAIN_CONNECTION_DATA_ILLEGAL=Cannot import Storage Domain. Internal Error: The connection data is illegal. Line 583: ERROR_CANNOT_ADD_DEPRECATED_EXISTING_SAN_EXPORT_STORAGE_DOMAIN=Cannot import SAN Export Storage Domain as it is no longer supported. Line 584: NETWORK_MAC_ADDRESS_IN_USE=MAC Address is already in use. https://gerrit.ovirt.org/#/c/35277/23/packaging/dbscripts/inst_sp.sql File packaging/dbscripts/inst_sp.sql: Line 14: Line 15: Line 16: Line 17: -- This function calls insert_server_connections, insertstorage_domain_static,insertstorage_domain_dynamic Line 18: -- Any change to these functions may effect correctness of the installation. This fix, although correct, is not related to this patch - please do it in a separate patch. Line 19: Line 20: Create or replace FUNCTION inst_add_iso_storage_domain(v_storage_domain_id UUID, v_name VARCHAR(250), v_connection_id uuid, v_connection VARCHAR(250),v_available int, v_used int) Line 21: RETURNS VOID Line 22: AS $procedure$ https://gerrit.ovirt.org/#/c/35277/23/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql File packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql: Line 873: select fn_db_delete_config_value('FreeSpaceCriticalLow','general'); Line 874: select fn_db_delete_config_value('GlusterRefreshRateGeoRepStatus', 'general'); Line 875: select fn_db_delete_config_value('GlusterRefreshRateGeoRepDiscovery', 'general'); Line 876: select fn_db_delete_config_value('FreeSpaceCriticalLowInGB','general'); Line 877: select fn_db_delete_config_value('FreeSpaceLow','general'); This will lose all the prexisting values. If you want to rename a conf value, just update it Line 878: select fn_db_delete_config_value('HotPlugUnsupportedOsList','general'); Line 879: select fn_db_delete_config_value('HotPlugSupportedOsList','general'); Line 880: select fn_db_delete_config_value('ImagesSyncronizationTimeout','general'); Line 881: select fn_db_delete_config_value('keystorePass','general'); https://gerrit.ovirt.org/#/c/35277/23/packaging/etc/engine-config/engine-config.properties File packaging/etc/engine-config/engine-config.properties: Line 47: CriticalSpaceThreshold.type=Integer Line 48: CriticalSpaceThreshold.validValues=0..2147483647 Line 49: LowSpaceThreshold.description="Default limit of % free disk-space, below which it is considered low" Line 50: LowSpaceThreshold.type=Integer Line 51: LowSpaceThreshold.validValues=0..100 Nice catch! Line 52: HighUtilizationForEvenlyDistribute.description="High Utilization Limit For Evenly Distribute selection algorithm" Line 53: HighUtilizationForEvenlyDistribute.type=Integer Line 54: HighUtilizationForPowerSave.description="High Utilization Limit For Power Save selection algorithm" Line 55: HighUtilizationForPowerSave.type=Integer -- To view, visit https://gerrit.ovirt.org/35277 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I19621dfc770c69003d731a7593d037d7d4040a82 Gerrit-PatchSet: 23 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Vered Volansky <[email protected]> Gerrit-Reviewer: Allon Mureinik <[email protected]> Gerrit-Reviewer: Daniel Erez <[email protected]> Gerrit-Reviewer: Eli Mesika <[email protected]> Gerrit-Reviewer: Idan Shaby <[email protected]> Gerrit-Reviewer: Juan Hernandez <[email protected]> Gerrit-Reviewer: Tal Nisan <[email protected]> Gerrit-Reviewer: Vered Volansky <[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
