Tomas Jelinek has uploaded a new change for review.

Change subject: core: remove vds_groups_vm_static
......................................................................

core: remove vds_groups_vm_static

WIP do not review

Change-Id: Ifaebd849061efa1637f9fa21d8584212ba0e51f2
Signed-off-by: Tomas Jelinek <tjeli...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractVmWatchdogCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddWatchdogCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateWatchdogCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmManagementCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/VnicProfileHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AffinityGroupCRUDCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateInterfaceListModel.java
A 
packaging/dbscripts/upgrade/03_04_0610_remove_vds_groups_vm_static_constraint.sql
17 files changed, 61 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/28/23828/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractVmWatchdogCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractVmWatchdogCommand.java
index d188aee..2b35742 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractVmWatchdogCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractVmWatchdogCommand.java
@@ -69,7 +69,7 @@
         }
     }
 
-    protected VmWatchdogValidator getVmWatchdogValidator() {
+    private VmWatchdogValidator getVmWatchdogValidator() {
         VmWatchdogValidator vmWatchdogValidator = null;
         VmWatchdog watchdog = new VmWatchdog();
         watchdog.setAction(getParameters().getAction());
@@ -80,11 +80,22 @@
             vmWatchdogValidator = new VmWatchdogValidator(getVm().getOs(), 
watchdog,
                     getVm().getVdsGroupCompatibilityVersion());
         } else {
-            vmWatchdogValidator = new 
VmWatchdogValidator(getVmTemplate().getOsId(), watchdog,
-                    
(getVdsGroupDAO().get(getVmTemplate().getVdsGroupId())).getcompatibility_version());
+            if (getVmTemplate().getVdsGroupId() != null) {
+                vmWatchdogValidator = new 
VmWatchdogValidator(getVmTemplate().getOsId(), watchdog,
+                        
(getVdsGroupDAO().get(getVmTemplate().getVdsGroupId())).getcompatibility_version());
+            }
         }
 
         return vmWatchdogValidator;
     }
 
+    protected ValidationResult validateModelCompatibleWithOs() {
+        VmWatchdogValidator validator = getVmWatchdogValidator();
+        if (validator != null) {
+            return validator.isModelCompatibleWithOs();
+        } else {
+            return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_TEMPLATE_DOES_NOT_EXIST_ON_ANY_CLUSTER);
+        }
+    }
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
index 4b0c812..9e72e7e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
@@ -745,7 +745,11 @@
 
     protected static boolean isLegalClusterId(Guid clusterId, List<String> 
reasons) {
         // check given cluster id
-        VDSGroup vdsGroup = 
DbFacade.getInstance().getVdsGroupDao().get(clusterId);
+        VDSGroup vdsGroup = null;
+        if (clusterId != null) {
+            vdsGroup = DbFacade.getInstance().getVdsGroupDao().get(clusterId);
+        }
+
         boolean legalClusterId = (vdsGroup != null);
         if (!legalClusterId) {
             reasons.add(VdcBllErrors.VM_INVALID_SERVER_CLUSTER_ID.toString());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommand.java
index a32ac34..037f839 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommand.java
@@ -75,9 +75,12 @@
     @Override
     public List<PermissionSubject> getPermissionCheckSubjects() {
         List<PermissionSubject> permissionList = new 
ArrayList<PermissionSubject>();
-        permissionList.add(new 
PermissionSubject(getParameters().getVmStaticData().getVdsGroupId(),
-                VdcObjectType.VdsGroups,
-                getActionType().getActionGroup()));
+        if (getParameters().getVmStaticData().getVdsGroupId() != null) {
+            permissionList.add(new 
PermissionSubject(getParameters().getVmStaticData().getVdsGroupId(),
+                    VdcObjectType.VdsGroups,
+                    getActionType().getActionGroup()));
+        }
+
         permissionList.add(new PermissionSubject(getVmTemplateId(), 
VdcObjectType.VmTemplate,
                 getActionType().getActionGroup()));
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddWatchdogCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddWatchdogCommand.java
index dfb6c12..315bd42 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddWatchdogCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddWatchdogCommand.java
@@ -53,7 +53,7 @@
             return failCanDoAction(VdcBllMessages.WATCHDOG_ALREADY_EXISTS);
         }
 
-        if (!validate(getVmWatchdogValidator().isModelCompatibleWithOs())) {
+        if (!validate(validateModelCompatibleWithOs())) {
             return false;
         }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
index c202300..f5592c1 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
@@ -203,7 +203,7 @@
 
     private void UpdateVmNetworks() {
         // check if the cluster has changed
-        if 
(!getVm().getVdsGroupId().equals(getParameters().getVmStaticData().getVdsGroupId()))
 {
+        if (!ObjectUtils.equals(getVm().getVdsGroupId(), 
getParameters().getVmStaticData().getVdsGroupId())) {
             List<Network> networks =
                     
getNetworkDAO().getAllForCluster(getParameters().getVmStaticData().getVdsGroupId());
             List<VmNic> interfaces = 
getVmNicDao().getAllForVm(getParameters().getVmStaticData().getId());
@@ -549,6 +549,10 @@
     public List<QuotaConsumptionParameter> getQuotaVdsConsumptionParameters() {
         List<QuotaConsumptionParameter> list = new 
ArrayList<QuotaConsumptionParameter>();
 
+        if (getVdsGroupId() == null) {
+            return list;
+        }
+
         // The cases must be persistent with the create_functions_sp
         if (!getQuotaManager().isVmStatusQuotaCountable(getVm().getStatus())) {
             list.add(new 
QuotaSanityParameter(getParameters().getVmStaticData().getQuotaId(), null));
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateWatchdogCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateWatchdogCommand.java
index 3839a63..cf9974c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateWatchdogCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateWatchdogCommand.java
@@ -32,7 +32,7 @@
             return failCanDoAction(VdcBllMessages.WATCHDOG_NOT_FOUND);
         }
 
-        if (!validate(getVmWatchdogValidator().isModelCompatibleWithOs())) {
+        if (!validate(validateModelCompatibleWithOs())) {
             return false;
         }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmManagementCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmManagementCommandBase.java
index 1e19fe3..6e553cf 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmManagementCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmManagementCommandBase.java
@@ -7,6 +7,7 @@
 import java.util.List;
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.common.action.VmManagementParametersBase;
 import org.ovirt.engine.core.common.businessentities.MigrationSupport;
@@ -53,7 +54,7 @@
             Guid guid = vm.getDedicatedVmForVds();
             // get dedicated host cluster and comparing it to VM cluster
             VDS vds = getVdsDAO().get(guid);
-            result = vds != null && 
(vm.getVdsGroupId().equals(vds.getVdsGroupId()));
+            result = vds != null && (ObjectUtils.equals(vm.getVdsGroupId(), 
vds.getVdsGroupId()));
         }
         if (!result) {
             getReturnValue().getCanDoActionMessages()
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java
index 8b3d759..1d38506 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkHelper.java
@@ -94,6 +94,10 @@
     }
 
     public static boolean isNetworkInCluster(Network network, Guid clusterId) {
+        if (clusterId == null) {
+            return false;
+        }
+
         List<Network> networks = 
DbFacade.getInstance().getNetworkDao().getAllForCluster(clusterId);
         for (Network clusterNetwork : networks) {
             if (clusterNetwork.getId().equals(network.getId())) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/VnicProfileHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/VnicProfileHelper.java
index 44308b4..6faa68f1 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/VnicProfileHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/VnicProfileHelper.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.core.bll.network.vm;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -174,6 +175,10 @@
             }
         }
 
+        if (vm.getVdsGroupId() == null) {
+            return new 
ValidationResult(VdcBllMessages.NETWORK_NOT_EXISTS_IN_CLUSTER);
+        }
+
         Network network = getNetworkDao().getByNameAndCluster(networkName, 
vm.getVdsGroupId());
         if (network == null) {
             return new 
ValidationResult(VdcBllMessages.NETWORK_NOT_EXISTS_IN_CLUSTER);
@@ -192,7 +197,11 @@
 
     private Map<String, Network> getNetworksInCluster() {
         if (networksInClusterByName == null) {
-            networksInClusterByName = 
Entities.entitiesByName(getNetworkDao().getAllForCluster(clusterId));
+            if (clusterId != null) {
+                networksInClusterByName = 
Entities.entitiesByName(getNetworkDao().getAllForCluster(clusterId));
+            } else {
+                networksInClusterByName = new HashMap<>();
+            }
         }
 
         return networksInClusterByName;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AffinityGroupCRUDCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AffinityGroupCRUDCommand.java
index 1a78d1a..ea8353f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AffinityGroupCRUDCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/commands/AffinityGroupCRUDCommand.java
@@ -5,6 +5,7 @@
 import java.util.List;
 import java.util.Set;
 
+import org.apache.commons.lang.ObjectUtils;
 import org.ovirt.engine.core.bll.CommandBase;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -40,7 +41,7 @@
                 if (vmStatic == null) {
                     return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_INVALID_VM_FOR_AFFINITY_GROUP);
                 }
-                if (!vmStatic.getVdsGroupId().equals(getVdsGroupId())) {
+                if (!ObjectUtils.equals(vmStatic.getVdsGroupId(), 
getVdsGroupId())) {
                     return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_IN_AFFINITY_GROUP_CLUSTER);
                 }
                 if (vmSet.contains(vmStatic.getId())) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java
index 69f695e..976ab0a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java
@@ -518,7 +518,7 @@
             // It is necessary to fetch the vm static from the Db, in order to 
get this information
             VmStatic vmStaticFromDb = getVmStaticDao().get(vm.getId());
             if (vmStaticFromDb != null) {
-                VDSGroup vdsGroup = 
getVdsGroupDao().get(vmStaticFromDb.getVdsGroupId());
+                VDSGroup vdsGroup = vmStaticFromDb.getVdsGroupId() != null ? 
getVdsGroupDao().get(vmStaticFromDb.getVdsGroupId()) : null;
                 if (vdsGroup != null) {
                     vm.setStoragePoolId(vdsGroup.getStoragePoolId());
                     
vm.setVdsGroupCompatibilityVersion(vdsGroup.getcompatibility_version());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
index 25bc3a8..b074c96 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
@@ -391,7 +391,7 @@
             if (isVm) {
                 addSoundCard(vm.getStaticData(), 
vm.getVdsGroupCompatibilityVersion());
             } else {
-                VDSGroup cluster = 
DbFacade.getInstance().getVdsGroupDao().get(vmBase.getVdsGroupId());
+                VDSGroup cluster = vmBase.getVdsGroupId() != null ? 
DbFacade.getInstance().getVdsGroupDao().get(vmBase.getVdsGroupId()) : null;
                 if (cluster != null) {
                     addSoundCard(vmBase, cluster.getcompatibility_version());
                 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index 43a16b7..baf2809 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -213,6 +213,7 @@
     ACTION_TYPE_FAILED_CANNOT_REMOVE_ACTIVE_IMAGE(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_CPU_NOT_FOUND(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_TEMPLATE_DOES_NOT_EXIST(ErrorType.BAD_PARAMETERS),
+    
ACTION_TYPE_FAILED_TEMPLATE_DOES_NOT_EXIST_ON_ANY_CLUSTER(ErrorType.DATA_CORRUPTION),
     
ACTION_TYPE_FAILED_TEMPLATE_VERSION_CANNOT_BE_BASE_TEMPLATE(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_INSTANCE_TYPE_DOES_NOT_EXIST(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_IMAGE_TYPE_DOES_NOT_EXIST(ErrorType.BAD_PARAMETERS),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
index 1426fd5..cbac720 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
@@ -417,7 +417,9 @@
                 mVdsGroup = getVdsGroupDAO().get(mVdsGroupId);
             } else if (getVmTemplate() != null) {
                 mVdsGroupId = getVmTemplate().getVdsGroupId();
-                mVdsGroup = getVdsGroupDAO().get(mVdsGroupId);
+                if (mVdsGroupId != null) {
+                    mVdsGroup = getVdsGroupDAO().get(mVdsGroupId);
+                }
             }
         }
         return mVdsGroup;
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
index 0c27695..7352163 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
@@ -92,6 +92,9 @@
 
     @Override
     public List<Network> getAllForCluster(Guid id) {
+        if (id == null) {
+            return new ArrayList<>();
+        }
         return getAllForCluster(id, null, false);
     }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateInterfaceListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateInterfaceListModel.java
index d92d0da..5121913 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateInterfaceListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateInterfaceListModel.java
@@ -211,7 +211,7 @@
         cluster = null;
         super.setEntity(value);
 
-        if (getEntity() != null) {
+        if (getEntity() != null && ((VmTemplate) getEntity()).getVdsGroupId() 
!= null) {
             AsyncDataProvider.getClusterById(new AsyncQuery(this, new 
INewAsyncCallback() {
 
                 @Override
diff --git 
a/packaging/dbscripts/upgrade/03_04_0610_remove_vds_groups_vm_static_constraint.sql
 
b/packaging/dbscripts/upgrade/03_04_0610_remove_vds_groups_vm_static_constraint.sql
new file mode 100644
index 0000000..b5dad12
--- /dev/null
+++ 
b/packaging/dbscripts/upgrade/03_04_0610_remove_vds_groups_vm_static_constraint.sql
@@ -0,0 +1 @@
+ALTER TABLE vm_static DROP CONSTRAINT vds_groups_vm_static;


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifaebd849061efa1637f9fa21d8584212ba0e51f2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Tomas Jelinek <tjeli...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to