Tomas Jelinek has uploaded a new change for review. Change subject: webadmin: Network builders ......................................................................
webadmin: Network builders Instance types Phase 1: extract and merge common code as builders from models. This will be needed by the new/edit instance dialog which will have the functionality to: - create a default NIC to a new VM - assign a logical network to a NIC Change-Id: Icae2963687ad7978c3caa026e7062e7a1937d320 Signed-off-by: Tomas Jelinek <[email protected]> --- A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/AddNullNetworkBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/BaseInitSelectedNetworkBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitEditSelectedNetworkBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitNewSelectedNetworkBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/SetupNetworksBuilder.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceModel.java 9 files changed, 281 insertions(+), 81 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/18/13918/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/AddNullNetworkBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/AddNullNetworkBuilder.java new file mode 100644 index 0000000..c39582b --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/AddNullNetworkBuilder.java @@ -0,0 +1,59 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.queries.ConfigurationValues; +import org.ovirt.engine.ui.uicommonweb.builders.BaseSyncBuilder; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class AddNullNetworkBuilder extends BaseSyncBuilder<List<VmNetworkInterface>, List<? extends ListModel>> { + + private final VDSGroup cluster; + + public AddNullNetworkBuilder(VDSGroup cluster) { + this.cluster = cluster; + } + + @Override + protected void build(List<VmNetworkInterface> source, List<? extends ListModel> destinations) { + if (!isNullNetworkSupported()) { + return; + } + + for (ListModel destination : destinations) { + List<Network> networks = (List<Network>) destination.getItems(); + networks.add(new NullNetwork()); + destination.setItems(networks); + } + } + + private boolean isNullNetworkSupported() { + if (cluster == null || cluster.getcompatibility_version() == null) { + return false; + } + + String clusteVersion = cluster.getcompatibility_version().getValue(); + return (Boolean) AsyncDataProvider.GetConfigValuePreConverted(ConfigurationValues.NetworkLinkingSupported, + clusteVersion); + + } + +} + +/** + * Null object for the network - represents the "no network selected" + */ +class NullNetwork extends Network { + + private static final long serialVersionUID = 1L; + + @Override + public String getName() { + return null; + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/BaseInitSelectedNetworkBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/BaseInitSelectedNetworkBuilder.java new file mode 100644 index 0000000..59b5343 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/BaseInitSelectedNetworkBuilder.java @@ -0,0 +1,18 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.ui.uicommonweb.builders.BaseSyncBuilder; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public abstract class BaseInitSelectedNetworkBuilder extends BaseSyncBuilder<List<VmNetworkInterface>, List<? extends ListModel>> { + @Override + protected void build(List<VmNetworkInterface> source, List<? extends ListModel> destination) { + for (int i = 0; i < source.size(); i++) { + applyForOnePair(source.get(i), destination.get(i)); + } + } + + protected abstract void applyForOnePair(VmNetworkInterface source, ListModel destination); +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitEditSelectedNetworkBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitEditSelectedNetworkBuilder.java new file mode 100644 index 0000000..f0ad10b --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitEditSelectedNetworkBuilder.java @@ -0,0 +1,35 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.compat.StringHelper; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class InitEditSelectedNetworkBuilder extends BaseInitSelectedNetworkBuilder { + + protected void applyForOnePair(VmNetworkInterface source, ListModel destination) { + List<Network> networks = (List<Network>) destination.getItems(); + networks = networks == null ? new ArrayList<Network>() : networks; + for (Network a : networks) + { + String networkName = a == null ? null : a.getName(); + if (StringHelper.stringsEqual(networkName, source.getNetworkName())) + { + destination.setSelectedItem(a); + return; + } + } + + // In some cases, like importVm the network can be deleted from the nic. + // In these cases, the network can be null even if NetworkLinking is not supported. + // If the user doesn't set the network, when he'll try to run the VM or update/hotPlug the nic he will get a + // canDo. + if (source.getNetworkName() == null) { + destination.setSelectedItem(null); + } + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitNewSelectedNetworkBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitNewSelectedNetworkBuilder.java new file mode 100644 index 0000000..920d52f --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitNewSelectedNetworkBuilder.java @@ -0,0 +1,31 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class InitNewSelectedNetworkBuilder extends BaseInitSelectedNetworkBuilder { + + private String engineNetworkName; + + public InitNewSelectedNetworkBuilder(String engineNetworkName) { + super(); + this.engineNetworkName = engineNetworkName; + } + + protected void applyForOnePair(VmNetworkInterface source, ListModel destination) { + List<Network> networks = (List<Network>) destination.getItems(); + networks = networks == null ? new ArrayList<Network>() : networks; + for (Network network : networks) { + if (engineNetworkName != null && network != null && engineNetworkName.equals(network.getName())) { + destination.setSelectedItem(network); + return; + } + } + + destination.setSelectedItem(networks.size() > 0 ? networks.get(0) : null); + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/SetupNetworksBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/SetupNetworksBuilder.java new file mode 100644 index 0000000..9b0d505 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/SetupNetworksBuilder.java @@ -0,0 +1,79 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.utils.LexoNumericComparator; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.builders.Builder; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderList; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class SetupNetworksBuilder<S> implements Builder<S, List<? extends ListModel>> { + + private Guid vdsGroupId; + + private boolean hotUpdateSupported; + + public SetupNetworksBuilder(Guid vdsGroupId, boolean hotUpdateSupported) { + super(); + this.vdsGroupId = vdsGroupId; + this.hotUpdateSupported = hotUpdateSupported; + } + + @Override + public void build(final S source, + final List<? extends ListModel> destination, + final BuilderList<S, List<? extends ListModel>> rest) { + AsyncQuery _asyncQuery = new AsyncQuery(); + _asyncQuery.setModel(this); + _asyncQuery.asyncCallback = new INewAsyncCallback() { + @Override + public void OnSuccess(Object model1, Object result1) + { + ArrayList<Network> networks = new ArrayList<Network>(); + for (Network a : (ArrayList<Network>) result1) + { + if (a.isVmNetwork()) + { + networks.add(a); + } + } + if (hotUpdateSupported) { + networks.add(null); + } + + Collections.sort(networks, new Comparator<Network>() { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(Network net1, Network net2) { + if (net1 == null) { + return net2 == null ? 0 : 1; + } else if (net2 == null) { + return -1; + } + return lexoNumeric.compare(net1.getName(), net2.getName()); + } + + }); + + for (ListModel destModel : destination) { + destModel.setItems(networks); + } + + rest.head().build(source, destination, rest.tail()); + } + }; + + AsyncDataProvider.GetClusterNetworkList(_asyncQuery, vdsGroupId); + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java index 7309eed..50cb838 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java @@ -1,18 +1,19 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.ovirt.engine.core.common.action.AddVmInterfaceParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VmBase; -import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; -import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.ui.uicommonweb.Cloner; +import org.ovirt.engine.ui.uicommonweb.builders.network.BaseInitSelectedNetworkBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.network.InitEditSelectedNetworkBuilder; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; @@ -82,26 +83,13 @@ } @Override - protected void initSelectedNetwork() { - List<Network> networks = (List<Network>) getNetwork().getItems(); - networks = networks == null ? new ArrayList<Network>() : networks; - for (Network a : networks) - { - String networkName = a == null ? null : a.getName(); - if (StringHelper.stringsEqual(networkName, getNic().getNetworkName())) - { - getNetwork().setSelectedItem(a); - return; - } - } + protected List<VmNetworkInterface> getNics() { + return Arrays.asList(nic); + } - // In some cases, like importVm the network can be deleted from the nic. - // In these cases, the network can be null even if NetworkLinking is not supported. - // If the user doesn't set the network, when he'll try to run the VM or update/hotPlug the nic he will get a - // canDo. - if (getNic().getNetworkName() == null) { - getNetwork().setSelectedItem(null); - } + @Override + protected BaseInitSelectedNetworkBuilder getInitSelectedNetworkBuilder() { + return new InitEditSelectedNetworkBuilder(); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java index da30130..23a3e62 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java @@ -1,13 +1,17 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmBase; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; @@ -122,6 +126,13 @@ } } + @SuppressWarnings("unchecked") + protected void initSelectedNetwork() { + new BuilderExecutor<List<VmNetworkInterface>, List<? extends ListModel>>( + getInitSelectedNetworkBuilder() + ).build(getNics(), Arrays.asList(getNetwork())); + } + boolean isVmUp() { return VMStatus.Up.equals(vm.getStatus()); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java index 14f7ee7..418ccaa 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java @@ -7,9 +7,10 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VmBase; -import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.ui.uicommonweb.builders.network.BaseInitSelectedNetworkBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.network.InitNewSelectedNetworkBuilder; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; @@ -19,7 +20,7 @@ public static NewVmInterfaceModel createInstance(VmBase vm, Version clusterCompatibilityVersion, ArrayList<VmNetworkInterface> vmNicList, - EntityModel sourceModel){ + EntityModel sourceModel) { NewVmInterfaceModel instance = new NewVmInterfaceModel(vm, clusterCompatibilityVersion, vmNicList, sourceModel); instance.init(); return instance; @@ -73,16 +74,13 @@ } @Override - protected void initSelectedNetwork() { - List<Network> networks = (List<Network>) getNetwork().getItems(); - networks = networks == null ? new ArrayList<Network>() : networks; - for (Network network : networks) { - if (ENGINE_NETWORK_NAME != null && network != null && ENGINE_NETWORK_NAME.equals(network.getName())) { - getNetwork().setSelectedItem(network); - return; - } - } - getNetwork().setSelectedItem(networks.size() > 0 ? networks.get(0) : null); + protected List<VmNetworkInterface> getNics() { + return null; + } + + @Override + protected BaseInitSelectedNetworkBuilder getInitSelectedNetworkBuilder() { + return new InitNewSelectedNetworkBuilder(ENGINE_NETWORK_NAME); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceModel.java index d1c073a..134fbd8 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceModel.java @@ -1,8 +1,8 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; +import java.util.Arrays; +import java.util.List; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; @@ -12,13 +12,14 @@ import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.queries.ConfigurationValues; -import org.ovirt.engine.core.common.utils.LexoNumericComparator; 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; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor.BuilderExecutionFinished; +import org.ovirt.engine.ui.uicommonweb.builders.network.BaseInitSelectedNetworkBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.network.SetupNetworksBuilder; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; @@ -369,6 +370,7 @@ } protected abstract VmNetworkInterface createBaseNic(); + private void onSave() { VmNetworkInterface nic = createBaseNic(); @@ -435,50 +437,31 @@ protected abstract VdcActionType getVdcActionType(); + @SuppressWarnings("unchecked") protected void initNetworks() { - AsyncQuery _asyncQuery = new AsyncQuery(); - _asyncQuery.setModel(this); - _asyncQuery.asyncCallback = new INewAsyncCallback() { - @Override - public void OnSuccess(Object model1, Object result1) - { - ArrayList<Network> networks = new ArrayList<Network>(); - for (Network a : (ArrayList<Network>) result1) - { - if (a.isVmNetwork()) - { - networks.add(a); - } - } - if (hotUpdateSupported) { - networks.add(null); - } + new BuilderExecutor<List<VmNetworkInterface>, List<? extends ListModel>>( + // when all data is fetched and set up, this is called + new NetworksInitedCallback(), + // fetch the networks + new SetupNetworksBuilder<List<VmNetworkInterface>>(getVm().getVdsGroupId(), hotUpdateSupported), + // setup the selected item + getInitSelectedNetworkBuilder() + ).build(getNics(), Arrays.asList(getNetwork())); - Collections.sort(networks, new Comparator<Network>() { - - private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); - - @Override - public int compare(Network net1, Network net2) { - if (net1 == null) { - return net2 == null ? 0 : 1; - } else if (net2 == null) { - return -1; - } - return lexoNumeric.compare(net1.getName(), net2.getName()); - } - - }); - - getNetwork().setItems(networks); - initSelectedNetwork(); - - // fetch completed - okCommand.setIsExecutionAllowed(true); - } - }; - AsyncDataProvider.GetClusterNetworkList(_asyncQuery, getVm().getVdsGroupId()); } + + class NetworksInitedCallback implements BuilderExecutionFinished<List<VmNetworkInterface>, List<? extends ListModel>> { + + @Override + public void finished(List<VmNetworkInterface> source, List<? extends ListModel> destination) { + okCommand.setIsExecutionAllowed(true); + } + + } + + protected abstract BaseInitSelectedNetworkBuilder getInitSelectedNetworkBuilder(); + + protected abstract List<VmNetworkInterface> getNics(); protected void initCommands() { okCommand = new UICommand("OnSave", this); //$NON-NLS-1$ @@ -492,8 +475,6 @@ cancelCommand.setIsCancel(true); getCommands().add(cancelCommand); } - - protected abstract void initSelectedNetwork(); protected abstract void initSelectedType(); -- To view, visit http://gerrit.ovirt.org/13918 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icae2963687ad7978c3caa026e7062e7a1937d320 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
