Moti Asayag has uploaded a new change for review.

Change subject: webadmin: Enable 'Upgrade' action for all host types
......................................................................

webadmin: Enable 'Upgrade' action for all host types

With the UpgradeHost action, also non ovirt-node hosts
can be upgraded. The patch adds the required functionality
for it and adjusts the behavior of ovirt-node upgrade
flow to use the new command.

Change-Id: Ic064f6e8bdefe47fc0a16df2660afcb53782bbec
Bug-Url: https://bugzilla.redhat.com/1157368
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.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/tab/MainTabHostView.java
6 files changed, 133 insertions(+), 75 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/06/40706/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
index ec5bdd8..dc74bcc 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
@@ -40,27 +40,32 @@
                 EnumSet.of(VdcActionType.RemoveVds,
                         VdcActionType.ClearNonResponsiveVdsVms,
                         VdcActionType.ApproveVds,
-                        VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.RefreshHostCapabilities,
+                        VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.Installing,
                 EnumSet.of(VdcActionType.RemoveVds, VdcActionType.ActivateVds,
                         VdcActionType.ClearNonResponsiveVdsVms,
                         VdcActionType.ApproveVds, 
VdcActionType.MaintenanceVds, VdcActionType.StartVds,
-                        VdcActionType.StopVds, 
VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.StopVds, 
VdcActionType.RefreshHostCapabilities,
+                        VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.NonResponsive,
                 EnumSet.of(VdcActionType.RemoveVds, VdcActionType.ActivateVds,
-                        VdcActionType.ApproveVds, 
VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.ApproveVds, 
VdcActionType.RefreshHostCapabilities, VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.PreparingForMaintenance,
                 EnumSet.of(VdcActionType.RemoveVds, 
VdcActionType.MaintenanceVds,
                         VdcActionType.ClearNonResponsiveVdsVms,
-                        VdcActionType.ApproveVds, 
VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.ApproveVds, 
VdcActionType.RefreshHostCapabilities, VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.Reboot,
                 EnumSet.of(VdcActionType.ActivateVds, VdcActionType.RemoveVds,
                         VdcActionType.ClearNonResponsiveVdsVms,
-                        VdcActionType.ApproveVds, 
VdcActionType.MaintenanceVds, VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.ApproveVds,
+                        VdcActionType.MaintenanceVds,
+                        VdcActionType.RefreshHostCapabilities,
+                        VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.Unassigned,
                 EnumSet.of(VdcActionType.ActivateVds,
@@ -68,23 +73,26 @@
                         VdcActionType.MaintenanceVds,
                         VdcActionType.ClearNonResponsiveVdsVms,
                         VdcActionType.ApproveVds,
-                        VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.RefreshHostCapabilities,
+                        VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.Initializing,
                 EnumSet.of(VdcActionType.ActivateVds, VdcActionType.RemoveVds,
                         VdcActionType.ClearNonResponsiveVdsVms, 
VdcActionType.ApproveVds,
-                        VdcActionType.MaintenanceVds, 
VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.MaintenanceVds, 
VdcActionType.RefreshHostCapabilities, VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.NonOperational,
                 EnumSet.of(VdcActionType.RemoveVds,
-                        VdcActionType.ApproveVds));
+                        VdcActionType.ApproveVds,
+                        VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.PendingApproval,
                 EnumSet.of(VdcActionType.UpdateVds,
                         VdcActionType.ActivateVds, 
VdcActionType.MaintenanceVds,
                         VdcActionType.AttachVdsToTag,
                         VdcActionType.ClearNonResponsiveVdsVms,
-                        VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.RefreshHostCapabilities,
+                        VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.InstallingOS,
                 EnumSet.of(VdcActionType.UpdateVds,
@@ -94,17 +102,24 @@
                         VdcActionType.ClearNonResponsiveVdsVms,
                         VdcActionType.RefreshHostCapabilities,
                         VdcActionType.ApproveVds,
-                        VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.RefreshHostCapabilities,
+                        VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.InstallFailed,
                 EnumSet.of(VdcActionType.ApproveVds, 
VdcActionType.RefreshHostCapabilities));
         vdsMatrix.put(
                 VDSStatus.Connecting,
                 EnumSet.of(VdcActionType.MaintenanceVds, 
VdcActionType.RemoveVds,
-                        VdcActionType.ActivateVds, VdcActionType.ApproveVds, 
VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.ActivateVds,
+                        VdcActionType.ApproveVds,
+                        VdcActionType.RefreshHostCapabilities,
+                        VdcActionType.UpgradeHost));
         vdsMatrix.put(
                 VDSStatus.Down,
-                EnumSet.of(VdcActionType.ActivateVds, 
VdcActionType.ApproveVds, VdcActionType.RefreshHostCapabilities));
+                EnumSet.of(VdcActionType.ActivateVds,
+                        VdcActionType.ApproveVds,
+                        VdcActionType.RefreshHostCapabilities,
+                        VdcActionType.UpgradeHost));
 
         vdsMatrix.put(
                 VDSStatus.Kdumping,
@@ -114,7 +129,8 @@
                         VdcActionType.ClearNonResponsiveVdsVms,
                         VdcActionType.MaintenanceVds,
                         VdcActionType.RemoveVds,
-                        VdcActionType.RefreshHostCapabilities));
+                        VdcActionType.RefreshHostCapabilities,
+                        VdcActionType.UpgradeHost));
 
         _matrix.put(VDS.class, vdsMatrix);
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
index 3cc6d7d..1a370bf 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
@@ -242,6 +242,8 @@
 
     install_host("install_host", HelpTagType.WEBADMIN, "Host Tab > General 
Sub-Tab > Install Host"), //$NON-NLS-1$ //$NON-NLS-2$
 
+    upgrade_host("upgrade_host", HelpTagType.WEBADMIN, "Host Tab > General 
Sub-Tab > Upgrade Host"), //$NON-NLS-1$ //$NON-NLS-2$
+
     iscsi_bundles("iscsi_bundles", HelpTagType.UNKNOWN), //$NON-NLS-1$
 
     logical_networks("logical_networks", HelpTagType.UNKNOWN), //$NON-NLS-1$
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java
index 5bd532b..cf72014 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java
@@ -27,6 +27,7 @@
 import org.ovirt.engine.core.common.action.hostdeploy.AddVdsActionParameters;
 import org.ovirt.engine.core.common.action.hostdeploy.ApproveVdsParameters;
 import 
org.ovirt.engine.core.common.action.hostdeploy.UpdateVdsActionParameters;
+import org.ovirt.engine.core.common.action.hostdeploy.UpgradeHostParameters;
 import 
org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions;
 import org.ovirt.engine.core.common.businessentities.ExternalComputeResource;
 import org.ovirt.engine.core.common.businessentities.ExternalDiscoveredHost;
@@ -1495,9 +1496,42 @@
 
     }
 
-    public void upgrade()
-    {
+    public void upgrade() {
         final VDS host = getSelectedItem();
+        if (host.getVdsType() == VDSType.oVirtNode) {
+            upgradeOvirtNode(host);
+        } else {
+            upgradeHost(host);
+        }
+    }
+
+    private void upgradeHost(VDS host) {
+        final UIConstants constants = 
ConstantsManager.getInstance().getConstants();
+        final UIMessages messages = 
ConstantsManager.getInstance().getMessages();
+        ConfirmationModel model = new ConfirmationModel();
+        setConfirmWindow(model);
+        model.setTitle(constants.upgradeHostsTitle());
+        model.setHelpTag(HelpTag.upgrade_host);
+        model.setHashName("upgrade_host"); //$NON-NLS-1$
+
+        VDS vds = (VDS) getSelectedItem();
+        if (vds.getVmCount() > 0) {
+            
model.setMessage(constants.areYouSureYouWantToUpgradeTheFollowingHostWithRunningVmsMsg());
+        } else {
+            
model.setMessage(constants.areYouSureYouWantToUpgradeTheFollowingHostMsg());
+        }
+
+        UICommand tempVar = new UICommand("OnUpgrade", this); //$NON-NLS-1$
+        tempVar.setTitle(constants.ok());
+        tempVar.setIsDefault(true);
+        model.getCommands().add(tempVar);
+        UICommand tempVar2 = new UICommand("Cancel", this); //$NON-NLS-1$
+        tempVar2.setTitle(constants.cancel());
+        tempVar2.setIsCancel(true);
+        model.getCommands().add(tempVar2);
+    }
+
+    private void upgradeOvirtNode(final VDS host) {
         InstallModel model = new InstallModel();
         model.setVds(host);
         setWindow(model);
@@ -1566,59 +1600,48 @@
         model.getCommands().add(command);
     }
 
-    public void onUpgrade()
-    {
+    public void onUpgrade() {
         final VDS host = getSelectedItem();
-        InstallModel model = (InstallModel) getWindow();
-        final boolean isOVirt = host.getVdsType() == VDSType.oVirtNode;
+        if (host.getVdsType() == VDSType.oVirtNode) {
+            onUpgradeOvirtNode(host);
+        } else {
+            onUpgradeHost(host);
+        }
 
-        if (!model.validate(isOVirt))
+    }
+
+    private void onUpgradeOvirtNode(final VDS host) {
+        InstallModel model = (InstallModel) getWindow();
+
+        if (!model.validate(true))
         {
             return;
         }
 
-        UpdateVdsActionParameters param = new UpdateVdsActionParameters();
-        param.setvds(host);
-        param.setVdsId(host.getId());
-        param.setPassword(model.getUserPassword().getEntity());
-        param.setReinstallOrUpgrade(true);
-        param.setInstallHost(true);
-        param.setoVirtIsoFile(isOVirt ? 
model.getOVirtISO().getSelectedItem().getRpmName() : null);
-        param.setOverrideFirewall(model.getOverrideIpTables().getEntity());
-        param.setActivateHost(model.getActivateHostAfterInstall().getEntity());
-        param.setAuthMethod(model.getAuthenticationMethod());
+        UpgradeHostParameters params = new UpgradeHostParameters(host.getId());
+        
params.setoVirtIsoFile(model.getOVirtISO().getSelectedItem().getRpmName());
+        invokeHostUpgrade(params);
+    }
 
-        Provider<?> networkProvider = (Provider<?>) 
model.getNetworkProviders().getSelectedItem();
-        if (networkProvider != null) {
-            param.setNetworkProviderId(networkProvider.getId());
-            param.setNetworkMappings((String) 
model.getInterfaceMappings().getEntity());
+    private void onUpgradeHost(final VDS host) {
+        if (getConfirmWindow() == null) {
+            return;
         }
 
-        AsyncDataProvider.getInstance().getClusterById(new AsyncQuery(param, 
new INewAsyncCallback() {
+        UpgradeHostParameters params = new UpgradeHostParameters(host.getId());
+        invokeHostUpgrade(params);
+    }
 
+    private void invokeHostUpgrade(UpgradeHostParameters params) {
+        Frontend.getInstance().runAction(VdcActionType.UpgradeHost, params, 
new IFrontendActionAsyncCallback() {
             @Override
-            public void onSuccess(Object model, Object returnValue) {
-                VDSGroup cluster = (VDSGroup) returnValue;
-                UpdateVdsActionParameters internalParam = 
(UpdateVdsActionParameters) model;
-
-                
internalParam.setRebootAfterInstallation(cluster.supportsVirtService());
-                Frontend.getInstance().runAction(
-                        VdcActionType.UpgradeOvirtNode,
-                        internalParam,
-                        new IFrontendActionAsyncCallback() {
-                            @Override
-                            public void executed(FrontendActionAsyncResult 
result) {
-                                VdcReturnValueBase returnValue = 
result.getReturnValue();
-                                if (returnValue != null && 
returnValue.getSucceeded()) {
-                                    cancel();
-                                }
-                            }
-                        }
-                );
+            public void executed(FrontendActionAsyncResult result) {
+                VdcReturnValueBase returnValue = result.getReturnValue();
+                if (returnValue != null && returnValue.getSucceeded()) {
+                    cancel();
+                }
             }
-        }), host.getVdsGroupId());
-
-
+        });
     }
 
     public void restart()
@@ -1956,7 +1979,6 @@
 
     private void updateAlerts() {
         final VDS vds = getSelectedItem();
-        final UIConstants constants = 
ConstantsManager.getInstance().getConstants();
         if (vds.getVdsType() == VDSType.oVirtNode) {
             AsyncDataProvider.getInstance().getoVirtISOsList(new 
AsyncQuery(this,
                     new INewAsyncCallback() {
@@ -1972,17 +1994,7 @@
                                 }
 
                                 generalModel.setHasUpgradeAlert(isos, 
hostOsInfo);
-                                boolean executionAllowed = vds.getStatus() != 
VDSStatus.Up
-                                        && vds.getStatus() != 
VDSStatus.Installing
-                                        && vds.getStatus() != 
VDSStatus.PreparingForMaintenance
-                                        && vds.getStatus() != VDSStatus.Reboot
-                                        && vds.getStatus() != 
VDSStatus.PendingApproval;
-
-                                if (!executionAllowed) {
-                                    
getUpgradeCommand().getExecuteProhibitionReasons()
-                                            
.add(constants.switchToMaintenanceModeToEnableUpgradeReason());
-                                }
-                                
getUpgradeCommand().setIsExecutionAllowed(executionAllowed);
+                                setUpgradeActionStatus(vds);
                             }
 
                             generalModel.setHasAnyAlert();
@@ -1991,8 +2003,20 @@
                     }),
                     vds.getId());
         } else if (vds.getVdsType() == VDSType.VDS) {
+            setUpgradeActionStatus(vds);
             generalModel.setHasUpgradeAlert(vds.isUpdateAvailable());
         }
+    }
+
+    private void setUpgradeActionStatus(final VDS vds) {
+        final boolean executionAllowed = canUpgradeHost(vds);
+        if (!executionAllowed) {
+            final UIConstants constants = 
ConstantsManager.getInstance().getConstants();
+            getUpgradeCommand().getExecuteProhibitionReasons()
+                    
.add(constants.switchToMaintenanceModeToEnableUpgradeReason());
+        }
+
+        getUpgradeCommand().setIsExecutionAllowed(executionAllowed);
     }
 
     @Override
@@ -2054,7 +2078,7 @@
         getApproveCommand().setIsExecutionAllowed(approveAvailability);
 
         boolean installAvailability = false;
-        if (items.size() == 1 && items.get(0) instanceof VDS) {
+        if (singleHostSelected(items)) {
             VDS host = items.get(0);
             installAvailability = host.getStatus() == VDSStatus.InstallFailed 
||
                     host.getStatus() == VDSStatus.Maintenance;
@@ -2062,11 +2086,9 @@
         getInstallCommand().setIsExecutionAllowed(installAvailability);
 
         boolean upgradeAvailability = false;
-        if (installAvailability) {
+        if (singleHostSelected(items)) {
             VDS host = items.get(0);
-            if (host.getVdsType() == VDSType.oVirtNode) {
-                upgradeAvailability = true;
-            }
+            upgradeAvailability = canUpgradeHost(host);
         }
         getUpgradeCommand().setIsExecutionAllowed(upgradeAvailability);
 
@@ -2105,6 +2127,15 @@
 
     }
 
+    private boolean canUpgradeHost(VDS host) {
+        return host.isUpdateAvailable()
+                && VdcActionUtils.canExecute(Arrays.asList(host), VDS.class, 
VdcActionType.UpgradeHost);
+    }
+
+    private boolean singleHostSelected(ArrayList<VDS> items) {
+        return items.size() == 1 && items.get(0) instanceof VDS;
+    }
+
     private Boolean hasAdminSystemPermission = null;
 
     public void updateConfigureLocalStorageCommandAvailability() {
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
index eee4431..2120412 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
@@ -531,6 +531,9 @@
     @DefaultStringValue("Install Host")
     String installHostTitle();
 
+    @DefaultStringValue("Upgrade Host")
+    String upgradeHostsTitle();
+
     @DefaultStringValue("Are you sure?")
     String areYouSureTitle();
 
@@ -925,6 +928,12 @@
     @DefaultStringValue("Host must be installed before upgrade.")
     String hostMustBeInstalledBeforeUpgrade();
 
+    @DefaultStringValue("Are you sure you want to Upgrade the Host, running 
VM(s) will be migrated?")
+    String areYouSureYouWantToUpgradeTheFollowingHostWithRunningVmsMsg();
+
+    @DefaultStringValue("Are you sure you want to Upgrade the Host?")
+    String areYouSureYouWantToUpgradeTheFollowingHostMsg();
+
     @DefaultStringValue("Testing in progress. It will take a few seconds. 
Please wait...")
     String testingInProgressItWillTakeFewSecondsPleaseWaitMsg();
 
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 2bc657a..e643db4 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
@@ -1522,7 +1522,7 @@
     String reinstallHost();
 
     @DefaultStringValue("Upgrade")
-    String upgradeOVirtNode();
+    String upgradeHost();
 
     @DefaultStringValue("Configure Local Storage")
     String configureLocalStorageHost();
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
index d40a751..a0fb2e6 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
@@ -318,7 +318,7 @@
                 return getMainModel().getInstallCommand();
             }
         });
-        getTable().addActionButton(new 
WebAdminButtonDefinition<VDS>(constants.upgradeOVirtNode()) {
+        getTable().addActionButton(new 
WebAdminButtonDefinition<VDS>(constants.upgradeHost()) {
             @Override
             protected UICommand resolveCommand() {
                 return getMainModel().getUpgradeCommand();


-- 
To view, visit https://gerrit.ovirt.org/40706
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to