Vitor de Lima has uploaded a new change for review. Change subject: ui, core: Prevent architecture mismatches in the frontend ......................................................................
ui, core: Prevent architecture mismatches in the frontend This patch introduces some changes in the frontend in order to prevent the user from making mistakes and receive errors from the backend commands. These changes include: * Show only CPUs compatible with the cluster's current CPU when editing clusters * Show only clusters with the same architecture as the host when editing hosts * Show only clusters with the same architecture as the VM, Pool or Template when editing them * Show only clusters with the same architecture as the VM used as a model when creating a template * Hide clusters without a CPU name in the 'New VM' and 'New Pool' dialogs Change-Id: I0033c399061108c4495029ae2bca3f62e75fac68 Signed-off-by: Vitor de Lima <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllowedServerCpuListQuery.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVdsGroupsByStoragePoolIdAndFlagsQuery.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAllowedServerCpuListParameters.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/IdAndStringQueryParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.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/clusters/ClusterModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java 16 files changed, 275 insertions(+), 10 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/32/19132/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllowedServerCpuListQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllowedServerCpuListQuery.java new file mode 100644 index 0000000..76572b8 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllowedServerCpuListQuery.java @@ -0,0 +1,44 @@ +package org.ovirt.engine.core.bll; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.core.common.businessentities.ServerCpu; +import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.queries.GetAllowedServerCpuListParameters; + +public class GetAllowedServerCpuListQuery<P extends GetAllowedServerCpuListParameters> extends QueriesCommandBase<P> { + public GetAllowedServerCpuListQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + VDSGroup cluster = getDbFacade().getVdsGroupDao().get(getParameters().getClusterId()); + + List<VDS> allVdsForVdsGroup = getDbFacade().getVdsDao().getAllForVdsGroup(cluster.getId()); + + List<VM> allVmsForVdsGroup = getDbFacade().getVmDao().getAllForVdsGroup(cluster.getId()); + + List<ServerCpu> cpuList = CpuFlagsManagerHandler.AllServerCpuList(getParameters().getVersion()); + + if ((allVdsForVdsGroup.isEmpty() && allVmsForVdsGroup.isEmpty()) || StringUtils.isEmpty(cluster.getcpu_name())) + { + getQueryReturnValue().setReturnValue(cpuList); + } else { + ArrayList<ServerCpu> filteredList = new ArrayList<ServerCpu>(); + + for (ServerCpu sc : cpuList) { + + if (cluster.getArchitecture().equals(sc.getArchitecture())) { + filteredList.add(sc); + } + } + + getQueryReturnValue().setReturnValue(filteredList); + } + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVdsGroupsByStoragePoolIdAndFlagsQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVdsGroupsByStoragePoolIdAndFlagsQuery.java new file mode 100644 index 0000000..14a468a --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVdsGroupsByStoragePoolIdAndFlagsQuery.java @@ -0,0 +1,41 @@ +package org.ovirt.engine.core.bll; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.core.common.businessentities.ServerCpu; +import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.queries.IdAndStringQueryParameters; + +public class GetVdsGroupsByStoragePoolIdAndFlagsQuery<P extends IdAndStringQueryParameters> extends QueriesCommandBase<P> { + + public GetVdsGroupsByStoragePoolIdAndFlagsQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + List<VDSGroup> clusterList = getDbFacade().getVdsGroupDao().getAllForStoragePool( + getParameters().getId(), + getUserID(), + getParameters().isFiltered()); + + ArrayList<VDSGroup> filteredList = new ArrayList<VDSGroup>(); + + for (VDSGroup cluster : clusterList) { + ServerCpu sc = + CpuFlagsManagerHandler.FindMaxServerCpuByFlags(getParameters().getString(), + cluster.getcompatibility_version()); + + if (sc != null) { + if (StringUtils.isEmpty(cluster.getcpu_name()) + || sc.getArchitecture().equals(cluster.getArchitecture())) { + filteredList.add(cluster); + } + } + } + + getQueryReturnValue().setReturnValue(filteredList); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAllowedServerCpuListParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAllowedServerCpuListParameters.java new file mode 100644 index 0000000..ae76ec1 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAllowedServerCpuListParameters.java @@ -0,0 +1,28 @@ +package org.ovirt.engine.core.common.queries; + +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.compat.Version; + +public class GetAllowedServerCpuListParameters extends VdcQueryParametersBase { + private static final long serialVersionUID = -6048741913142095068L; + + public GetAllowedServerCpuListParameters(Guid clusterId, Version version) { + _version = version; + _clusterId = clusterId; + } + + private Version _version; + + public Version getVersion() { + return _version; + } + + private Guid _clusterId; + + public Guid getClusterId() { + return _clusterId; + } + + public GetAllowedServerCpuListParameters() { + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/IdAndStringQueryParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/IdAndStringQueryParameters.java new file mode 100644 index 0000000..bf07e94 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/IdAndStringQueryParameters.java @@ -0,0 +1,29 @@ +package org.ovirt.engine.core.common.queries; + +import org.ovirt.engine.core.compat.Guid; + +/** + * Parameter class for the "GetById" queries + */ +public class IdAndStringQueryParameters extends VdcQueryParametersBase { + + private static final long serialVersionUID = -4601447036978553847L; + private Guid id; + private String string; + + public IdAndStringQueryParameters() { + } + + public IdAndStringQueryParameters(Guid id, String string) { + this.id = id; + this.string = string; + } + + public Guid getId() { + return id; + } + + public String getString() { + return string; + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java index cd67bbe..400270b 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java @@ -81,6 +81,7 @@ GetVdsGroupById(VdcQueryAuthType.User), GetVdsGroupByName(VdcQueryAuthType.User), GetVdsGroupsByStoragePoolId(VdcQueryAuthType.User), + GetVdsGroupsByStoragePoolIdAndFlags(VdcQueryAuthType.User), // Certificate GetCACertificate(VdcQueryAuthType.User), @@ -170,6 +171,7 @@ // License queries GetAllServerCpuList, + GetAllowedServerCpuList, // Multi Level Administration queries GetAllRoles(VdcQueryAuthType.User), 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 c450bc8..3b4deee 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 @@ -18,6 +18,7 @@ import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.ActionGroup; +import org.ovirt.engine.core.common.businessentities.ArchitectureType; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DiskImage; @@ -71,6 +72,7 @@ import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters; import org.ovirt.engine.core.common.queries.GetAllProvidersParameters; import org.ovirt.engine.core.common.queries.GetAllServerCpuListParameters; +import org.ovirt.engine.core.common.queries.GetAllowedServerCpuListParameters; import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters; import org.ovirt.engine.core.common.queries.GetDataCentersWithPermittedActionOnClustersParameters; import org.ovirt.engine.core.common.queries.GetDomainListParameters; @@ -88,6 +90,7 @@ import org.ovirt.engine.core.common.queries.GetTagsByVdsIdParameters; import org.ovirt.engine.core.common.queries.GetTagsByVmIdParameters; import org.ovirt.engine.core.common.queries.GetVmTemplateParameters; +import org.ovirt.engine.core.common.queries.IdAndStringQueryParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.InterfaceAndIdQueryParameters; import org.ovirt.engine.core.common.queries.MultilevelAdministrationsQueriesParameters; @@ -599,6 +602,25 @@ getConfigFromCache(tempVar, aQuery); } + public static void getClusterListByFlags(AsyncQuery aQuery, Guid dataCenterId, String vdsFlags) { + aQuery.converterCallback = new IAsyncConverter() { + @Override + public Object Convert(Object source, AsyncQuery _asyncQuery) + { + if (source != null) + { + ArrayList<VDSGroup> list = (ArrayList<VDSGroup>) source; + Collections.sort(list, new NameableComparator()); + return list; + } + return new ArrayList<VDSGroup>(); + } + }; + Frontend.RunQuery(VdcQueryType.GetVdsGroupsByStoragePoolIdAndFlags, + new IdAndStringQueryParameters(dataCenterId, vdsFlags), + aQuery); + } + public static void getClusterList(AsyncQuery aQuery, Guid dataCenterId) { aQuery.converterCallback = new IAsyncConverter() { @Override @@ -616,6 +638,28 @@ Frontend.RunQuery(VdcQueryType.GetVdsGroupsByStoragePoolId, new IdQueryParameters(dataCenterId), aQuery); + } + + public static List<VDSGroup> filterByArchitecture(List<VDSGroup> clusters, ArchitectureType targetArchitecture) { + List<VDSGroup> filteredClusters = new ArrayList<VDSGroup>(); + + for (VDSGroup cluster : clusters) { + if (cluster.getArchitecture().equals(targetArchitecture)) { + filteredClusters.add(cluster); + } + } + return filteredClusters; + } + + public static List<VDSGroup> filterClustersWithoutCpuName(List<VDSGroup> clusters) { + List<VDSGroup> filteredClusters = new ArrayList<VDSGroup>(); + + for (VDSGroup cluster : clusters) { + if (!cluster.getArchitecture().equals(ArchitectureType.undefined)) { + filteredClusters.add(cluster); + } + } + return filteredClusters; } public static void getClusterByServiceList(AsyncQuery aQuery, Guid dataCenterId, @@ -1656,6 +1700,18 @@ Frontend.RunQuery(VdcQueryType.GetAllServerCpuList, new GetAllServerCpuListParameters(version), aQuery); } + public static void getAllowedCPUList(AsyncQuery aQuery, Guid clusterId, Version version) { + aQuery.converterCallback = new IAsyncConverter() { + @Override + public Object Convert(Object source, AsyncQuery _asyncQuery) + { + return source != null ? (ArrayList<ServerCpu>) source : new ArrayList<ServerCpu>(); + } + }; + Frontend.RunQuery(VdcQueryType.GetAllowedServerCpuList, new GetAllowedServerCpuListParameters(clusterId, + version), aQuery); + } + public static void getPmTypeList(AsyncQuery aQuery, Version version) { aQuery.converterCallback = new IAsyncConverter() { @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java index a41a690..010c81a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java @@ -1134,7 +1134,12 @@ } } }; - AsyncDataProvider.getCPUList(_asyncQuery, version); + + if (getIsEdit()) { + AsyncDataProvider.getAllowedCPUList(_asyncQuery, getEntity().getId(), version); + } else { + AsyncDataProvider.getCPUList(_asyncQuery, version); + } // CPU Thread support is only available for clusters of version 3.2 or greater getVersionSupportsCpuThreads().setEntity(version.compareTo(Version.v3_2) >= 0); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java index b7ccc9d..bfd06f7 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java @@ -124,6 +124,16 @@ privateName = value; } + String privateVdsFlags; + + public String getVdsFlags() { + return privateVdsFlags; + } + + public void setVdsFlags(String vdsFlags) { + privateVdsFlags = vdsFlags; + } + private EntityModel privateUserName; public EntityModel getUserName() @@ -1210,7 +1220,11 @@ } }; - AsyncDataProvider.getClusterList(_asyncQuery, dataCenter.getId()); + if (getIsNew()) { + AsyncDataProvider.getClusterList(_asyncQuery, dataCenter.getId()); + } else { + AsyncDataProvider.getClusterListByFlags(_asyncQuery, dataCenter.getId(), getVdsFlags()); + } } } @@ -1584,6 +1598,7 @@ SystemTreeItemModel selectedSystemTreeItem) { setHostId(vds.getId()); + setVdsFlags(vds.getCpuFlags()); getOverrideIpTables().setIsAvailable(showInstallationProperties()); setSpmPriorityValue(vds.getVdsSpmPriority()); setOriginalName(vds.getName()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java index af8fcd7..d819855 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java @@ -8,6 +8,7 @@ import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmBase; import org.ovirt.engine.core.common.businessentities.VmStatic; @@ -133,4 +134,9 @@ return parentValidation; } + + @Override + protected List<VDSGroup> filterClusters(List<VDSGroup> clusters) { + return AsyncDataProvider.filterByArchitecture(clusters, pool.getArchitecture()); + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java index 2429b68..3f6bfc4 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java @@ -117,9 +117,15 @@ @Override public void onSuccess(Object target, Object returnValue) { UnitVmModel model = (UnitVmModel) target; + + List<VDSGroup> clusters = (List<VDSGroup>) returnValue; + + List<VDSGroup> filteredClusters = + AsyncDataProvider.filterByArchitecture(clusters, vm.getArchitecture()); + model.setDataCentersAndClusters(model, dataCenters, - (List<VDSGroup>) returnValue, vm.getVdsGroupId()); + filteredClusters, vm.getVdsGroupId()); initTemplate(); initCdImage(); initSoundCard(vm.getId()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java index ac30fbf8..a3ca389 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java @@ -3,9 +3,11 @@ import java.util.List; import org.ovirt.engine.core.common.businessentities.DisplayType; +import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VmBase; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.ui.uicommonweb.Linq; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; @@ -63,4 +65,9 @@ return parentValidation; } + + @Override + protected List<VDSGroup> filterClusters(List<VDSGroup> clusters) { + return AsyncDataProvider.filterClustersWithoutCpuName(clusters); + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java index a9c7cb7..6f698ba 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java @@ -74,9 +74,14 @@ UnitVmModel model = (UnitVmModel) target; List<VDSGroup> clusters = (List<VDSGroup>) returnValue; + + List<VDSGroup> filteredClusters = + AsyncDataProvider.filterByArchitecture(clusters, + vm.getArchitecture()); + model.setDataCentersAndClusters(model, Arrays.asList(dataCenter), - clusters, + filteredClusters, vm.getVdsGroupId()); initTemplate(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java index 2edf060..f8c2851 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java @@ -52,9 +52,15 @@ @Override public void onSuccess(Object target, Object returnValue) { UnitVmModel model = (UnitVmModel) target; + + List<VDSGroup> clusterList = (List<VDSGroup>) returnValue; + + List<VDSGroup> filteredClusterList = + AsyncDataProvider.filterClustersWithoutCpuName(clusterList); + model.setDataCentersAndClusters(model, dataCenters, - (List<VDSGroup>) returnValue, null); + filteredClusterList, null); initCdImage(); } }, getModel().getHash()), diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java index c400317..57754ca 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java @@ -66,9 +66,14 @@ @Override public void onSuccess(Object target, Object returnValue) { UnitVmModel model = (UnitVmModel) target; + + List<VDSGroup> clusters = (List<VDSGroup>) returnValue; + + List<VDSGroup> filteredClusters = filterClusters(clusters); + model.setDataCentersAndClusters(model, dataCenters, - (List<VDSGroup>) returnValue, null); + filteredClusters, null); initCdImage(); getPoolModelBehaviorInitializedEvent().raise(this, EventArgs.Empty); } @@ -78,6 +83,8 @@ }, getModel().getHash()), true, false); } + protected abstract List<VDSGroup> filterClusters(List<VDSGroup> clusters); + protected void setupWindowModelFrom(VmBase vmBase) { if (vmBase != null) { updateQuotaByCluster(vmBase.getQuotaId(), vmBase.getQuotaName()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java index 2c49da7..4838d91 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.List; import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.StoragePool; @@ -51,13 +52,18 @@ UnitVmModel model = (UnitVmModel) target; ArrayList<VDSGroup> clusters = (ArrayList<VDSGroup>) returnValue; - ArrayList<VDSGroup> filteredClusters = new ArrayList<VDSGroup>(); + ArrayList<VDSGroup> clustersSupportingVirt = new ArrayList<VDSGroup>(); // filter clusters supporting virt service only for (VDSGroup cluster : clusters) { if (cluster.supportsVirtService()) { - filteredClusters.add(cluster); + clustersSupportingVirt.add(cluster); } } + + List<VDSGroup> filteredClusters = + AsyncDataProvider.filterByArchitecture(clustersSupportingVirt, + template.getArchitecture()); + model.setDataCentersAndClusters(model, new ArrayList<StoragePool>(Arrays.asList(new StoragePool[] { dataCenter })), filteredClusters, 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 16d18b6..808a429 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 @@ -1963,8 +1963,10 @@ new ArrayList<DataCenterWithCluster>(); for (StoragePool dataCenter : dataCenters) { - for (VDSGroup cluster : dataCenterToCluster.get(dataCenter.getId())) { - dataCentersWithClusters.add(new DataCenterWithCluster(dataCenter, cluster)); + if (dataCenterToCluster.containsKey(dataCenter.getId())) { + for (VDSGroup cluster : dataCenterToCluster.get(dataCenter.getId())) { + dataCentersWithClusters.add(new DataCenterWithCluster(dataCenter, cluster)); + } } } getDataCenterWithClustersList().setItems(dataCentersWithClusters); -- To view, visit http://gerrit.ovirt.org/19132 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0033c399061108c4495029ae2bca3f62e75fac68 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Vitor de Lima <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
