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

Reply via email to