Martin Peřina has uploaded a new change for review. Change subject: webadmin: Add FencingPolicy to cluster configuration ......................................................................
webadmin: Add FencingPolicy to cluster configuration Adds Fencing Policy tab to cluster detail. Adds option to skip fencing of host if it's connected to at least one storage domain to Fencing Policy tab. Change-Id: Iaecc1662324ce3d3072c9e850fcf8026ccfab0b2 Bug-Url: https://bugzilla.redhat.com/1090799 Signed-off-by: Martin Perina <mper...@redhat.com> --- M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.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/ClusterListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml M packaging/branding/ovirt.brand/ovirt-patternfly-compat.css 9 files changed, 111 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/33/31233/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml index bc440af..469625a 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml @@ -128,6 +128,7 @@ <include name="common/businessentities/VDSDomainsData.java" /> <include name="common/businessentities/VdsDynamic.java" /> <include name="common/businessentities/VDSGroup.java" /> + <include name="common/businessentities/FencingPolicy.java" /> <include name="common/businessentities/VDSGroupHostsAndVMs.java" /> <include name="common/businessentities/VdsProtocol.java" /> <include name="common/businessentities/VdsSelectionAlgorithm.java" /> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java index b49fad8..16bb71e 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java @@ -5,6 +5,7 @@ import java.util.LinkedHashMap; import java.util.Map.Entry; +import org.ovirt.engine.core.common.businessentities.FencingPolicy; import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VDS; @@ -308,6 +309,7 @@ obj.setArchitecture(instance.getArchitecture()); obj.setSerialNumberPolicy(instance.getSerialNumberPolicy()); obj.setCustomSerialNumber(instance.getCustomSerialNumber()); + obj.setFencingPolicy(new FencingPolicy(instance.getFencingPolicy())); return obj; } 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 2bd09bd..22e6ef1 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 @@ -3671,6 +3671,18 @@ return (Boolean) getConfigValuePreConverted(ConfigurationValues.BootMenuSupported, version); } + public static boolean isSkipFencingIfSDActiveSupported(String version) { + boolean result = false; + if (version != null) { + Boolean b = (Boolean) getConfigValuePreConverted( + ConfigurationValues.SkipFencingIfSDActiveSupported, + version + ); + result = (b != null) && b; + } + return result; + } + public static boolean isSpiceFileTransferToggleSupported(String version) { return (Boolean) getConfigValuePreConverted(ConfigurationValues.SpiceFileTransferToggleSupported, version); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java index 792902d..e56c9e8 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java @@ -755,6 +755,9 @@ if (model.getSpiceProxyEnabled().getEntity()) { cluster.setSpiceProxy(model.getSpiceProxy().getEntity()); } + + cluster.getFencingPolicy().setSkipFencingIfSDActive(model.getSkipFencingIfSDActiveEnabled().getEntity()); + cluster.setSerialNumberPolicy(model.getSerialNumberPolicy().getSelectedSerialNumberPolicy()); cluster.setCustomSerialNumber(model.getSerialNumberPolicy().getCustomSerialNumber().getEntity()); 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 33c750e..8babe4d 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 @@ -772,6 +772,16 @@ } } + private EntityModel<Boolean> skipFencingIfSDActiveEnabled; + + public EntityModel<Boolean> getSkipFencingIfSDActiveEnabled() { + return skipFencingIfSDActiveEnabled; + } + + public void setSkipFencingIfSDActiveEnabled(EntityModel<Boolean> skipFencingIfSDActiveEnabled) { + this.skipFencingIfSDActiveEnabled = skipFencingIfSDActiveEnabled; + } + public ClusterModel() { super(); @@ -803,6 +813,8 @@ setSpiceProxy(new EntityModel<String>()); getSpiceProxy().setIsChangable(false); + setSkipFencingIfSDActiveEnabled(new EntityModel<Boolean>()); + getSkipFencingIfSDActiveEnabled().setEntity(true); setEnableOvirtService(new EntityModel()); setEnableGlusterService(new EntityModel()); @@ -1215,6 +1227,7 @@ getComment().setEntity(getEntity().getComment()); initSpiceProxy(); + getSkipFencingIfSDActiveEnabled().setEntity(getEntity().getFencingPolicy().isSkipFencingIfSDActive()); setMemoryOverCommit(getEntity().getmax_vds_memory_over_commit()); @@ -1403,6 +1416,8 @@ setRngSourcesCheckboxes(version); + updateFencingPolicyContent(version); + boolean isSmallerThanVersion3_4 = version.compareTo(Version.v3_4) < 0; getEnableKsm().setIsChangable(!isSmallerThanVersion3_4); getEnableKsm().setChangeProhibitionReason(ConstantsManager.getInstance().getConstants().ksmNotAvailable()); @@ -1461,6 +1476,21 @@ } } + private void updateFencingPolicyContent(Version ver) { + boolean supported = AsyncDataProvider.isSkipFencingIfSDActiveSupported(ver.getValue()); + getSkipFencingIfSDActiveEnabled().setIsChangable(supported); + if (supported) { + if (getEntity() == null) { + // this can happen when creating new cluster and cluster dialog is shown + getSkipFencingIfSDActiveEnabled().setEntity(true); + } else { + getSkipFencingIfSDActiveEnabled().setEntity(getEntity().getFencingPolicy().isSkipFencingIfSDActive()); + } + } else { + getSkipFencingIfSDActiveEnabled().setEntity(false); + } + } + private void populateCPUList(ClusterModel clusterModel, List<ServerCpu> cpus, boolean canChangeArchitecture) { ServerCpu oldSelectedCpu = clusterModel.getCPU().getSelectedItem(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java index 6fa766b..dda9e3a 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java @@ -800,6 +800,9 @@ @DefaultStringValue("Define SPICE proxy for Cluster") String clusterSpiceProxyEnable(); + @DefaultStringValue("Skip fencing if host has live lease on storage") + String skipFencingIfSDActive(); + @DefaultStringValue("Name") String bookmarkPopupNameLabel(); @@ -3604,6 +3607,9 @@ @DefaultStringValue("Console") String consoleTabLabel(); + @DefaultStringValue("Fencing Policy") + String fencingPolicyTabLabel(); + @DefaultStringValue("Name") String nameAffinityGroup(); @@ -3743,4 +3749,7 @@ @DefaultStringValue("Save As Pdf") String exportToPdf(); + + @DefaultStringValue("This will skip fencing for a Host that has live lease on Storage Domains") + String skipFencingIfSDActiveInfo(); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java index 5cda48e..bc5f9b1 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java @@ -347,6 +347,18 @@ @WithElementId EntityModelCheckBoxOnlyEditor spiceProxyOverrideEnabled; + @UiField + @Ignore + DialogTab fencingPolicyTab; + + @UiField(provided = true) + InfoIcon skipFencingIfSDActiveInfo; + + @UiField(provided = true) + @Path(value = "skipFencingIfSDActiveEnabled.entity") + @WithElementId + EntityModelCheckBoxEditor skipFencingIfSDActiveCheckBox; + private final Driver driver = GWT.create(Driver.class); private final ApplicationMessages messages; @@ -450,6 +462,10 @@ spiceProxyEditor.setLabel(constants.overriddenSpiceProxyAddress()); consoleTab.setLabel(constants.consoleTabLabel()); + + fencingPolicyTab.setLabel(constants.fencingPolicyTabLabel()); + + skipFencingIfSDActiveCheckBox.setLabel(constants.skipFencingIfSDActive()); } private void initRadioButtonEditors() { @@ -531,6 +547,9 @@ rngRandomSourceRequired = new EntityModelCheckBoxEditor(Align.RIGHT); rngHwrngSourceRequired = new EntityModelCheckBoxEditor(Align.RIGHT); + + skipFencingIfSDActiveCheckBox = new EntityModelCheckBoxEditor(Align.RIGHT); + skipFencingIfSDActiveCheckBox.getContentWidgetContainer().setWidth("300px"); //$NON-NLS-1$ } private void initInfoIcons(ApplicationResources resources, ApplicationConstants constants, ApplicationTemplates templates) { @@ -546,6 +565,10 @@ label.setWidth("250px"); //$NON-NLS-1$ spiceProxyOverrideEnabled = new EntityModelCheckBoxOnlyEditor(); spiceProxyEnabledCheckboxWithInfoIcon = new EntityModelWidgetWithInfo<String>(label, spiceProxyOverrideEnabled); + + skipFencingIfSDActiveInfo = new InfoIcon( + templates.italicFixedWidth("400px", constants.skipFencingIfSDActiveInfo()), //$NON-NLS-1$ + resources); } @Override @@ -559,6 +582,7 @@ resiliencePolicyTab.setVisible(false); clusterPolicyTab.setVisible(false); consoleTab.setVisible(false); + fencingPolicyTab.setVisible(false); dataCenterPanel.addStyleName(style.generalTabTopDecoratorEmpty()); } } @@ -658,6 +682,12 @@ } } }); + object.getSkipFencingIfSDActiveEnabled().getPropertyChangedEvent().addListener(new IEventListener() { + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + updateFencingPolicyTabVisibility(object); + } + }); } private void optimizationForServerFormatter(ClusterModel object) { @@ -688,6 +718,12 @@ } } + private void updateFencingPolicyTabVisibility(ClusterModel object) { + fencingPolicyTab.setVisible( + object.getSkipFencingIfSDActiveEnabled().getIsChangable() + ); + } + @Override public void setMessage(String message) { super.setMessage(message); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml index e0fc5dd..21a5f03 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml @@ -268,6 +268,18 @@ </t:content> </t:DialogTab> </t:tab> + <t:tab> + <t:DialogTab ui:field="fencingPolicyTab"> + <t:content> + <g:FlowPanel addStyleNames="cvp_fencingPolicyContent_pfly_fix"> + <g:HorizontalPanel> + <ge:EntityModelCheckBoxEditor ui:field="skipFencingIfSDActiveCheckBox" /> + <d:InfoIcon ui:field="skipFencingIfSDActiveInfo" addStyleNames="cpv_skipFencingIfSDActiveInfo_pfly_fix" /> + </g:HorizontalPanel> + </g:FlowPanel> + </t:content> + </t:DialogTab> + </t:tab> </t:DialogTabPanel> </d:content> </d:SimpleDialogPanel> diff --git a/packaging/branding/ovirt.brand/ovirt-patternfly-compat.css b/packaging/branding/ovirt.brand/ovirt-patternfly-compat.css index 4e0ac35..af162ae 100644 --- a/packaging/branding/ovirt.brand/ovirt-patternfly-compat.css +++ b/packaging/branding/ovirt.brand/ovirt-patternfly-compat.css @@ -208,7 +208,7 @@ top: -32px; } } -.cvp_consoleContent_pfly_fix, .cvp_clusterPolicyContent_pfly_fix { +.cvp_consoleContent_pfly_fix, .cvp_clusterPolicyContent_pfly_fix, .cvp_fencingPolicyContent_pfly_fix { padding-top: 5px; } .cpv_spiceProxyEnabledCheckbox_pfly_fix span.gwt-CheckBox { @@ -420,6 +420,11 @@ top: -3px; left: 5px; } +.cpv_skipFencingIfSDActiveInfo_pfly_fix { + position: relative; + top: 5px; + left: 5px; +} .appv_searchButton_pfly_fix { position: relative !important; top: 2px !important; -- To view, visit http://gerrit.ovirt.org/31233 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iaecc1662324ce3d3072c9e850fcf8026ccfab0b2 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Martin Peřina <mper...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches