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