Tomas Jelinek has uploaded a new change for review. Change subject: userportal,webadmin: call GetVmCustomProperties only once ......................................................................
userportal,webadmin: call GetVmCustomProperties only once It did not make sense to call this query in the models since it is a configuration value. Solved by using this value the same way as all the other configuration values are used (e.g. get once in AsyncDataProvider and use it from there). This patch also refactores all the code to use AsyncDataProvider to get the value. Change-Id: I36a472bcf4cd8719967c29626ece4a6afa1fa619 Bug-Url: https://bugzilla.redhat.com/1089938 Signed-off-by: Tomas Jelinek <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalRunOnceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/WebadminRunOnceModel.java 9 files changed, 61 insertions(+), 153 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/26944/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index f386e24..fd1a50d 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -214,6 +214,9 @@ // cached architecture support for VM suspend private static Map<ArchitectureType, Map<Version, Boolean>> suspendSupport; + // cached custom properties + private static Map<Version, List<String>> customPropertiesList; + public static String getDefaultConfigurationVersion() { return _defaultConfigurationVersion; } @@ -258,6 +261,45 @@ initMigrationSupportMap(); initMemorySnapshotSupportMap(); initSuspendSupportMap(); + initCustomPropertiesList(); + } + + private static void initCustomPropertiesList() { + AsyncQuery callback = new AsyncQuery(); + callback.asyncCallback = new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + customPropertiesList = (Map<Version, List<String>>) returnValue; + } + }; + + callback.converterCallback = new IAsyncConverter() { + @Override + public Object Convert(Object source, AsyncQuery _asyncQuery) { + Map<Version, String> map = + source != null ? (HashMap<Version, String>) source : new HashMap<Version, String>(); + Map<Version, ArrayList<String>> retMap = new HashMap<Version, ArrayList<String>>(); + + for (Map.Entry<Version, String> keyValuePair : map.entrySet()) { + String[] split = keyValuePair.getValue().split("[;]", -1); //$NON-NLS-1$ + if (split.length == 1 && (split[0] == null || split[0].isEmpty())) { + retMap.put(keyValuePair.getKey(), + null); + } else { + retMap.put(keyValuePair.getKey(), + new ArrayList<String>()); + for (String s : split) { + retMap.get(keyValuePair.getKey()).add(s); + } + } + } + return retMap; + } + + + }; + Frontend.getInstance().runQuery(VdcQueryType.GetVmCustomProperties, + new VdcQueryParametersBase().withoutRefresh(), callback); } public static void initDefaultOSes() { @@ -1646,33 +1688,8 @@ aQuery); } - public static void getCustomPropertiesList(AsyncQuery aQuery) { - aQuery.converterCallback = new IAsyncConverter() { - @Override - public Object Convert(Object source, AsyncQuery _asyncQuery) - { - Map<Version, String> map = - source != null ? (HashMap<Version, String>) source : new HashMap<Version, String>(); - Map<Version, ArrayList<String>> retMap = new HashMap<Version, ArrayList<String>>(); - - for (Map.Entry<Version, String> keyValuePair : map.entrySet()) { - String[] split = keyValuePair.getValue().split("[;]", -1); //$NON-NLS-1$ - if (split.length == 1 && (split[0] == null || split[0].isEmpty())) { - retMap.put(keyValuePair.getKey(), - null); - } else { - retMap.put(keyValuePair.getKey(), - new ArrayList<String>()); - for (String s : split) { - retMap.get(keyValuePair.getKey()).add(s); - } - } - } - return retMap; - } - }; - Frontend.getInstance().runQuery(VdcQueryType.GetVmCustomProperties, - new VdcQueryParametersBase().withoutRefresh(), aQuery); + public static Map<Version, List<String>> getCustomPropertiesList() { + return customPropertiesList; } public static void getPermissionsByAdElementId(AsyncQuery aQuery, Guid userId) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java index e115ba0..673f9d5 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import org.ovirt.engine.core.common.VdcActionUtils; @@ -23,7 +22,6 @@ import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.StringHelper; -import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.searchbackend.SearchObjects; import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; @@ -101,16 +99,6 @@ privateRemoveCommand = value; } - private HashMap<Version, ArrayList<String>> privateCustomPropertiesKeysList; - - private HashMap<Version, ArrayList<String>> getCustomPropertiesKeysList() { - return privateCustomPropertiesKeysList; - } - - private void setCustomPropertiesKeysList(HashMap<Version, ArrayList<String>> value) { - privateCustomPropertiesKeysList = value; - } - private SystemTreeItemModel systemTreeSelectedItem; @Override @@ -159,18 +147,6 @@ getSearchNextPageCommand().setIsAvailable(true); getSearchPreviousPageCommand().setIsAvailable(true); - if (getCustomPropertiesKeysList() == null) { - AsyncDataProvider.getCustomPropertiesList(new AsyncQuery(this, - new INewAsyncCallback() { - @Override - public void onSuccess(Object target, Object returnValue) { - PoolListModel model = (PoolListModel) target; - if (returnValue != null) { - model.setCustomPropertiesKeysList((HashMap<Version, ArrayList<String>>) returnValue); - } - } - })); - } } @Override @@ -214,7 +190,7 @@ PoolModel model = new PoolModel(new NewPoolModelBehavior()); model.setIsNew(true); - model.setCustomPropertiesKeysList(getCustomPropertiesKeysList()); + model.setCustomPropertiesKeysList(AsyncDataProvider.getCustomPropertiesList()); model.setIsAdvancedModeLocalStorageKey("wa_pool_dialog"); //$NON-NLS-1$ setWindow(model); model.setTitle(ConstantsManager.getInstance().getConstants().newPoolTitle()); @@ -304,7 +280,7 @@ }); PoolModel model = new PoolModel(behavior); - model.setCustomPropertiesKeysList(getCustomPropertiesKeysList()); + model.setCustomPropertiesKeysList(AsyncDataProvider.getCustomPropertiesList()); model.startProgress(""); model.setIsAdvancedModeLocalStorageKey("wa_pool_dialog"); //$NON-NLS-1$ setWindow(model); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java index 59aeca2..615ce67 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java @@ -27,7 +27,6 @@ import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.StringHelper; -import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; @@ -89,7 +88,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -264,16 +262,6 @@ privatestorageDomain = value; } - private HashMap<Version, ArrayList<String>> CustomPropertiesKeysList; - - public HashMap<Version, ArrayList<String>> getCustomPropertiesKeysList() { - return CustomPropertiesKeysList; - } - - public void setCustomPropertiesKeysList(HashMap<Version, ArrayList<String>> customPropertiesKeysList) { - CustomPropertiesKeysList = customPropertiesKeysList; - } - static { searchCompletedEventDefinition = new EventDefinition("SearchCompleted", UserPortalListModel.class); //$NON-NLS-1$ @@ -296,19 +284,6 @@ updateActionAvailability(); consoleModelsCache = new ConsoleModelsCache(ConsoleContext.UP_EXTENDED, this); - - if (getCustomPropertiesKeysList() == null) { - AsyncDataProvider.getCustomPropertiesList(new AsyncQuery(this, - new INewAsyncCallback() { - @Override - public void onSuccess(Object target, Object returnValue) { - UserPortalListModel model = (UserPortalListModel) target; - if (returnValue != null) { - model.setCustomPropertiesKeysList((HashMap<Version, ArrayList<String>>) returnValue); - } - } - })); - } } @Override @@ -720,7 +695,6 @@ @Override public void onSuccess(Object model, Object result) { RunOnceModel runOnceModel = new UserPortalRunOnceModel((VM) result, - getCustomPropertiesKeysList().get(((VM) result).getVdsGroupCompatibilityVersion()), UserPortalListModel.this); setWindow(runOnceModel); runOnceModel.init(); @@ -776,7 +750,7 @@ model.setHelpTag(HelpTag.new_vm); model.setHashName("new_vm"); //$NON-NLS-1$ model.setIsNew(true); - model.setCustomPropertiesKeysList(CustomPropertiesKeysList); + model.setCustomPropertiesKeysList(AsyncDataProvider.getCustomPropertiesList()); model.setIsAdvancedModeLocalStorageKey("up_vm_dialog"); //$NON-NLS-1$ setWindow(model); @@ -832,7 +806,7 @@ model.setHelpTag(HelpTag.edit_vm); model.setHashName("edit_vm"); //$NON-NLS-1$ model.getVmType().setSelectedItem(vm.getVmType()); - model.setCustomPropertiesKeysList(CustomPropertiesKeysList); + model.setCustomPropertiesKeysList(AsyncDataProvider.getCustomPropertiesList()); model.setIsAdvancedModeLocalStorageKey("up_vm_dialog"); //$NON-NLS-1$ setWindow(model); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java index d5d420c..a6dad7f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java @@ -47,8 +47,7 @@ /** The VM that is about to run */ protected final VM vm; - /** Custom properties for the running */ - protected final ArrayList<String> customPropertiesKeysList; + /** Listener for events that are triggered by this model */ protected ICommandTarget commandTarget; @@ -537,22 +536,9 @@ } } - private ArrayList<String> privateCustomPropertiesKeysList; - - public ArrayList<String> getCustomPropertiesKeysList() - { - return privateCustomPropertiesKeysList; - } - - public void setCustomPropertiesKeysList(ArrayList<String> value) - { - privateCustomPropertiesKeysList = value; - } - - public RunOnceModel(VM vm, ArrayList<String> customPropertiesKeysList, ICommandTarget commandTarget) + public RunOnceModel(VM vm, ICommandTarget commandTarget) { this.vm = vm; - this.customPropertiesKeysList = customPropertiesKeysList; this.commandTarget = commandTarget; // Boot Options tab @@ -664,8 +650,6 @@ initVmInitEnabled(vm.getVmInit(), vm.isInitialized()); getVmInit().init(vm.getStaticData()); - - setCustomPropertiesKeysList(customPropertiesKeysList); updateDomainList(); updateIsoList(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java index 7e76502..7aff0d8 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java @@ -1036,14 +1036,14 @@ this.customPropertySheet = customPropertySheet; } - private HashMap<Version, ArrayList<String>> privateCustomPropertiesKeysList; + private Map<Version, List<String>> privateCustomPropertiesKeysList; - public HashMap<Version, ArrayList<String>> getCustomPropertiesKeysList() + public Map<Version, List<String>> getCustomPropertiesKeysList() { return privateCustomPropertiesKeysList; } - public void setCustomPropertiesKeysList(HashMap<Version, ArrayList<String>> value) + public void setCustomPropertiesKeysList(Map<Version, List<String>> value) { privateCustomPropertiesKeysList = value; } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalRunOnceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalRunOnceModel.java index e806a32..024c0e9 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalRunOnceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalRunOnceModel.java @@ -1,6 +1,5 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; -import java.util.ArrayList; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.ui.frontend.Frontend; @@ -10,8 +9,8 @@ public class UserPortalRunOnceModel extends RunOnceModel { - public UserPortalRunOnceModel(VM vm, ArrayList<String> customPropertiesKeysList, ICommandTarget commandTarget) { - super(vm, customPropertiesKeysList, commandTarget); + public UserPortalRunOnceModel(VM vm, ICommandTarget commandTarget) { + super(vm, commandTarget); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index c096ee4..94782e7 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -420,10 +420,6 @@ private HashMap<Version, ArrayList<String>> privateCustomPropertiesKeysList; - private HashMap<Version, ArrayList<String>> getCustomPropertiesKeysList() { - return privateCustomPropertiesKeysList; - } - private void setCustomPropertiesKeysList(HashMap<Version, ArrayList<String>> value) { privateCustomPropertiesKeysList = value; } @@ -477,18 +473,6 @@ getSearchNextPageCommand().setIsAvailable(true); getSearchPreviousPageCommand().setIsAvailable(true); - if (getCustomPropertiesKeysList() == null) { - AsyncDataProvider.getCustomPropertiesList(new AsyncQuery(this, - new INewAsyncCallback() { - @Override - public void onSuccess(Object target, Object returnValue) { - VmListModel model = (VmListModel) target; - if (returnValue != null) { - model.setCustomPropertiesKeysList((HashMap<Version, ArrayList<String>>) returnValue); - } - } - })); - } // Call 'IsCommandCompatible' for precaching AsyncDataProvider.isCommandCompatible(new AsyncQuery(this, @@ -721,7 +705,7 @@ model.setHashName("new_vm"); //$NON-NLS-1$ model.setIsNew(true); model.getVmType().setSelectedItem(VmType.Server); - model.setCustomPropertiesKeysList(getCustomPropertiesKeysList()); + model.setCustomPropertiesKeysList(AsyncDataProvider.getCustomPropertiesList()); model.setIsAdvancedModeLocalStorageKey("wa_vm_dialog"); //$NON-NLS-1$ setWindow(model); @@ -801,7 +785,7 @@ .getConstants().editVmTitle()); model.setHelpTag(HelpTag.edit_vm); model.setHashName("edit_vm"); //$NON-NLS-1$ - model.setCustomPropertiesKeysList(getCustomPropertiesKeysList()); + model.setCustomPropertiesKeysList(AsyncDataProvider.getCustomPropertiesList()); model.initialize(this.getSystemTreeSelectedItem()); @@ -1280,7 +1264,6 @@ @Override public void onSuccess(Object model, Object result) { RunOnceModel runOnceModel = new WebadminRunOnceModel((VM) result, - getCustomPropertiesKeysList().get(((VM) result).getVdsGroupCompatibilityVersion()), VmListModel.this); setWindow(runOnceModel); runOnceModel.init(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java index e0fdf9d..bf55e82 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java @@ -157,18 +157,6 @@ onPropertyChanged(new PropertyChangedEventArgs("SystemTreeSelectedItem")); //$NON-NLS-1$ } - private HashMap<Version, ArrayList<String>> privateCustomPropertiesKeysList; - - private HashMap<Version, ArrayList<String>> getCustomPropertiesKeysList() - { - return privateCustomPropertiesKeysList; - } - - private void setCustomPropertiesKeysList(HashMap<Version, ArrayList<String>> value) - { - privateCustomPropertiesKeysList = value; - } - private HashMap<Guid, SnapshotModel> snapshotsMap; public HashMap<Guid, SnapshotModel> getSnapshotsMap() @@ -232,19 +220,6 @@ getCanSelectSnapshot().setEntity(true); setSnapshotsMap(new HashMap<Guid, SnapshotModel>()); - - if (getCustomPropertiesKeysList() == null) { - AsyncDataProvider.getCustomPropertiesList(new AsyncQuery(this, - new INewAsyncCallback() { - @Override - public void onSuccess(Object target, Object returnValue) { - VmSnapshotListModel model = (VmSnapshotListModel) target; - if (returnValue != null) { - model.setCustomPropertiesKeysList((HashMap<Version, ArrayList<String>>) returnValue); - } - } - })); - } } @Override @@ -570,7 +545,7 @@ model.setTitle(ConstantsManager.getInstance().getConstants().cloneVmFromSnapshotTitle()); model.setHelpTag(HelpTag.clone_vm_from_snapshot); model.setHashName("clone_vm_from_snapshot"); //$NON-NLS-1$ - model.setCustomPropertiesKeysList(getCustomPropertiesKeysList()); + model.setCustomPropertiesKeysList(AsyncDataProvider.getCustomPropertiesList()); model.initialize(vmSnapshotListModel.getSystemTreeSelectedItem()); VmBasedWidgetSwitchModeCommand switchModeCommand = new VmBasedWidgetSwitchModeCommand(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/WebadminRunOnceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/WebadminRunOnceModel.java index 095ced9..8b43073 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/WebadminRunOnceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/WebadminRunOnceModel.java @@ -15,8 +15,8 @@ public class WebadminRunOnceModel extends RunOnceModel { - public WebadminRunOnceModel(VM vm, ArrayList<String> customPropertiesKeysList, ICommandTarget commandTarget) { - super(vm, customPropertiesKeysList, commandTarget); + public WebadminRunOnceModel(VM vm, ICommandTarget commandTarget) { + super(vm, commandTarget); } @Override @@ -26,7 +26,7 @@ getIsAutoAssign().setEntity(true); // Custom Properties - getCustomPropertySheet().setKeyValueString(customPropertiesKeysList); + getCustomPropertySheet().setKeyValueString(AsyncDataProvider.getCustomPropertiesList().get(vm.getVdsGroupCompatibilityVersion())); getCustomPropertySheet().deserialize(vm.getCustomProperties()); loadHosts(); -- To view, visit http://gerrit.ovirt.org/26944 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I36a472bcf4cd8719967c29626ece4a6afa1fa619 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
