Leonardo Bianconi has uploaded a new change for review.

Change subject: userportal, webadmin: Prevent snapshot in ppc64
......................................................................

userportal, webadmin: Prevent snapshot in ppc64

This change disables memory snapshot in the frontend for clusters
with architecture that doesn't support it. The option for create
memory snapshot is now hidden for these cases.
All logic was added in conjunction with the snapshot validation from
the parameter ConfigurationValues.MemorySnapshotSupported.

Change-Id: I148f0a9356086b31e66d4f5dd6eab6afc642cada
Signed-off-by: Leonardo Bianconi <leonardo.bianc...@eldorado.org.br>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetArchitectureCapabilitiesQuery.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ArchCapabilitiesParameters.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
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/vms/VmSnapshotListModel.java
6 files changed, 68 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/58/21658/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetArchitectureCapabilitiesQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetArchitectureCapabilitiesQuery.java
index 6bfb448..fd3076c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetArchitectureCapabilitiesQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetArchitectureCapabilitiesQuery.java
@@ -3,6 +3,7 @@
 import java.util.HashMap;
 
 import org.ovirt.engine.core.bll.architecture.IsMigrationSupported;
+import org.ovirt.engine.core.bll.architecture.IsSnapshotSupported;
 import org.ovirt.engine.core.common.archstrategy.ArchStrategyFactory;
 import org.ovirt.engine.core.common.businessentities.ArchitectureType;
 import org.ovirt.engine.core.common.queries.ArchCapabilitiesParameters;
@@ -18,6 +19,9 @@
         switch (getParameters().getArchCapabilitiesVerb()) {
         case GetMigrationSupport:
             setReturnValue(getMigrationMap());
+            break;
+        case GetSnapshotSupport:
+            setReturnValue(getSnapshotMap());
             break;
         }
     }
@@ -49,4 +53,36 @@
 
         return migrationMap;
     }
+
+    /**
+     * Creates the snapshot support map
+     * @return
+     */
+    private HashMap<ArchitectureType, HashMap<Version, Boolean>> 
getSnapshotMap() {
+
+        HashMap<ArchitectureType, HashMap<Version, Boolean>> snapshotMap =
+                new HashMap<ArchitectureType, HashMap<Version, Boolean>>();
+
+        for (ArchitectureType arch : ArchitectureType.values()) {
+            HashMap<Version, Boolean> snapshotArchMap = new HashMap<Version, 
Boolean>();
+
+            for (Version version : Version.ALL) {
+                boolean isSnapshotSupported = true;
+
+                if (!arch.equals(ArchitectureType.undefined)) {
+                    isSnapshotSupported =
+                            ArchStrategyFactory.getStrategy(arch)
+                                    .run(new IsSnapshotSupported(version))
+                                    .returnValue();
+
+                }
+
+                snapshotArchMap.put(version, isSnapshotSupported);
+            }
+
+            snapshotMap.put(arch, snapshotArchMap);
+        }
+
+        return snapshotMap;
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ArchCapabilitiesParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ArchCapabilitiesParameters.java
index ae114cf..b5d3e72 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ArchCapabilitiesParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ArchCapabilitiesParameters.java
@@ -19,6 +19,7 @@
     }
 
     public enum ArchCapabilitiesVerb {
-        GetMigrationSupport
+        GetMigrationSupport,
+        GetSnapshotSupport
     }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
index b6cee4c..c2b0d54 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
@@ -92,10 +92,11 @@
                     return;
                 }
 
+                boolean archSnapshotSupported = 
AsyncDataProvider.isSnapshotSupported(vm.getClusterArch(), 
vm.getVdsGroupCompatibilityVersion());
                 boolean memorySnapshotSupported =
-                        (Boolean) AsyncDataProvider.getConfigValuePreConverted(
+                        ((Boolean) 
AsyncDataProvider.getConfigValuePreConverted(
                                 ConfigurationValues.MemorySnapshotSupported,
-                                
vm.getVdsGroupCompatibilityVersion().toString());
+                                
vm.getVdsGroupCompatibilityVersion().toString())) && archSnapshotSupported;
                 memoryEditor.setVisible(memorySnapshotSupported && 
vm.isRunning());
                 // The memory option is enabled by default, so in case its 
checkbox
                 // is not visible, we should disable it explicitly
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
index 3ce4bf7..a2c85eb 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
@@ -113,10 +113,11 @@
         getTable().ensureColumnPresent(SnapshotsViewColumns.statusColumn,
                 constants.statusSnapshot(), true, "75px"); //$NON-NLS-1$
 
+        boolean archSnapshotSupported = 
AsyncDataProvider.isSnapshotSupported(vm.getClusterArch(), 
vm.getVdsGroupCompatibilityVersion());
         boolean memorySnapshotSupported =
-                (Boolean) AsyncDataProvider.getConfigValuePreConverted(
+                ((Boolean) AsyncDataProvider.getConfigValuePreConverted(
                         ConfigurationValues.MemorySnapshotSupported,
-                        vm.getVdsGroupCompatibilityVersion().toString());
+                        vm.getVdsGroupCompatibilityVersion().toString())) && 
archSnapshotSupported;
 
         getTable().ensureColumnPresent(SnapshotsViewColumns.memoryColumn,
                 constants.memorySnapshot(), memorySnapshotSupported, "55px"); 
//$NON-NLS-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 e94f7f4..438b27e 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
@@ -186,6 +186,9 @@
     // cached architecture support for live migration
     private static HashMap<ArchitectureType, HashMap<Version, Boolean>> 
migrationSupport;
 
+    // cached architecture support for snapshot
+    private static HashMap<ArchitectureType, HashMap<Version, Boolean>> 
snapshotSupport;
+
     public static String getDefaultConfigurationVersion() {
         return _defaultConfigurationVersion;
     }
@@ -226,6 +229,7 @@
         initNicHotplugSupportMap();
         initDiskHotpluggableInterfacesMap();
         initMigrationSupportMap();
+        initSnapshotSupportMap();
     }
 
     public static void initNicHotplugSupportMap() {
@@ -3233,6 +3237,10 @@
         return migrationSupport.get(architecture).get(version);
     }
 
+    public static Boolean isSnapshotSupported(ArchitectureType architecture, 
Version version) {
+        return snapshotSupport.get(architecture).get(version);
+    }
+
     private static void initMigrationSupportMap() {
         AsyncQuery callback = new AsyncQuery();
         callback.asyncCallback = new INewAsyncCallback() {
@@ -3246,6 +3254,19 @@
                 callback);
     }
 
+    private static void initSnapshotSupportMap() {
+        AsyncQuery callback = new AsyncQuery();
+        callback.asyncCallback = new INewAsyncCallback() {
+            @Override
+            public void onSuccess(Object model, Object returnValue) {
+                snapshotSupport = ((VdcQueryReturnValue) 
returnValue).getReturnValue();
+            }
+        };
+        Frontend.RunQuery(VdcQueryType.GetArchitectureCapabilities,
+                new 
ArchCapabilitiesParameters(ArchCapabilitiesVerb.GetSnapshotSupport),
+                callback);
+    }
+
     public static List<Integer> getOsIds() {
         return osIds;
     }
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 b1bec42..3bec1e0 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
@@ -808,10 +808,11 @@
         }
 
         VM vm = (VM) getEntity();
+        boolean archSnapshotSupported = 
AsyncDataProvider.isSnapshotSupported(vm.getClusterArch(), 
vm.getVdsGroupCompatibilityVersion());
 
-        return  (Boolean) AsyncDataProvider.getConfigValuePreConverted(
+        return  ((Boolean) AsyncDataProvider.getConfigValuePreConverted(
                 ConfigurationValues.MemorySnapshotSupported,
-                vm.getVdsGroupCompatibilityVersion().toString());
+                vm.getVdsGroupCompatibilityVersion().toString())) && 
archSnapshotSupported;
     }
 
     @Override


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I148f0a9356086b31e66d4f5dd6eab6afc642cada
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Leonardo Bianconi <leonardo.bianc...@eldorado.org.br>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to