java/code/src/com/redhat/rhn/frontend/action/ssm/RebootSystemAction.java | 135
+++-------
java/code/src/com/redhat/rhn/frontend/action/ssm/RebootSystemConfirmAction.java | 115
++++++++
java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml | 13
java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf | 4
java/code/webapp/WEB-INF/pages/ssm/systems/misc/reboot-system-confirm.jsp | 34
++
java/code/webapp/WEB-INF/pages/ssm/systems/misc/reboot-system.jsp | 27
--
java/code/webapp/WEB-INF/struts-config.xml | 33
++
7 files changed, 242 insertions(+), 119 deletions(-)
New commits:
commit eea3c6320bfc3dae8532844a7c0e71dcc5712c39
Author: Matej Kollar <mkollar(a)redhat.com>
Date: Thu Jan 30 07:04:49 2014 +0100
Fixed ssm reboot scheduling.
Recent rewrite to Java missed several things that are now fied:
* Added some localization strings (instead of reuse of unrelated
* ones).
* Addec confirmation page.
* Fixed scheduling so date in the future can be used.
* Minor style usability issues.
Additionally code was simplified, mostly due to
split to two pages and usage of ListSessionSetHelper.
diff --git a/java/code/src/com/redhat/rhn/frontend/action/ssm/RebootSystemAction.java
b/java/code/src/com/redhat/rhn/frontend/action/ssm/RebootSystemAction.java
index c8f81c7..31b1722 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/ssm/RebootSystemAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/ssm/RebootSystemAction.java
@@ -15,33 +15,25 @@
package com.redhat.rhn.frontend.action.ssm;
-import com.redhat.rhn.common.db.datasource.DataResult;
-import com.redhat.rhn.common.messaging.MessageQueue;
-import com.redhat.rhn.common.util.DatePicker;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
import com.redhat.rhn.domain.rhnset.RhnSet;
import com.redhat.rhn.frontend.dto.SystemOverview;
-import com.redhat.rhn.frontend.events.SsmSystemRebootEvent;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.struts.RhnHelper;
import com.redhat.rhn.frontend.struts.RhnListAction;
-import com.redhat.rhn.frontend.struts.RhnListSetHelper;
-import com.redhat.rhn.frontend.taglibs.list.ListTagHelper;
-import com.redhat.rhn.frontend.taglibs.list.TagHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.ListSessionSetHelper;
import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
import com.redhat.rhn.manager.rhnset.RhnSetDecl;
+import com.redhat.rhn.manager.rhnset.RhnSetManager;
import com.redhat.rhn.manager.system.SystemManager;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.struts.action.ActionErrors;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-import org.apache.struts.action.ActionMessage;
-import org.apache.struts.action.ActionMessages;
-import org.apache.struts.action.DynaActionForm;
/**
@@ -53,95 +45,54 @@ public class RebootSystemAction
extends RhnListAction
implements Listable {
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
+ @Override
public ActionForward execute(ActionMapping mapping,
- ActionForm actionForm,
- HttpServletRequest request,
- HttpServletResponse response) {
- RequestContext context = new RequestContext(request);
- List result = this.getResult(context);
- DynaActionForm form = (DynaActionForm) actionForm;
- RhnSet set = RhnSetDecl.SSM_SYSTEMS_REBOOT.get(context.getCurrentUser());
- RhnListSetHelper helper = new RhnListSetHelper(request);
- String forwardPageId = RhnHelper.DEFAULT_FORWARD;
- ActionMessages actionMessages = new ActionMessages();
- ActionErrors actionErrors = new ActionErrors();
-
- if (ListTagHelper.getListAction("systemList", request) != null) {
- helper.execute(set, "systemList", result);
+ ActionForm formIn,
+ HttpServletRequest request,
+ HttpServletResponse response) {
+
+ ListSessionSetHelper helper = new ListSessionSetHelper(this, request);
+ helper.setDataSetName(RequestContext.PAGE_LIST);
+ helper.setListName("systemList");
+ helper.execute();
+
+ if (helper.isDispatched()) {
+ ActionForward forward =
+ handleDispatch(helper, mapping, request);
+ return forward;
}
+ return mapping.findForward(RhnHelper.DEFAULT_FORWARD);
+ }
- if (!set.isEmpty()) {
- helper.syncSelections(set, result);
- ListTagHelper.setSelectedAmount("systemList", set.size(),
request);
- }
-
- request.setAttribute(RequestContext.PAGE_LIST, result);
- ListTagHelper.bindSetDeclTo("systemList",
- RhnSetDecl.SSM_SYSTEMS_REBOOT,
- request);
- request.setAttribute(RequestContext.PAGE_LIST, result);
- request.setAttribute(ListTagHelper.PARENT_URL, request.getRequestURI());
- TagHelper.bindElaboratorTo("systemList",
- ((DataResult) result).getElaborator(),
- request);
-
- if ((request.getParameter("dispatch") != null) &&
- (context.wasDispatched("installconfirm.jsp.confirm"))) {
- List<Long> serverIdsToReboot = new ArrayList<Long>();
- Iterator<Long> sysIds = set.getElementValues().iterator();
- while (sysIds.hasNext()) {
- serverIdsToReboot.add(sysIds.next());
- }
-
- if (!serverIdsToReboot.isEmpty()) {
- // Make an event
- MessageQueue.publish(new SsmSystemRebootEvent(
- context.getLoggedInUser().getId(),
- this.getStrutsDelegate().readDatePicker(form,
- "date",
-
DatePicker.YEAR_RANGE_POSITIVE),
- serverIdsToReboot));
- actionMessages.add(
- ActionMessages.GLOBAL_MESSAGE,
- new
ActionMessage("ssm.misc.reboot.message.success.default"));
+ private ActionForward handleDispatch(
+ ListSessionSetHelper helper,
+ ActionMapping mapping,
+ HttpServletRequest request) {
- // Clear the selection from the form
- set.clear();
- RhnSetDecl.SSM_SYSTEMS_REBOOT.clear(context.getLoggedInUser());
+ RequestContext context = new RequestContext(request);
+ RhnSet set = RhnSetDecl.SSM_SYSTEMS_REBOOT.get(context.getCurrentUser());
- forwardPageId = "confirm";
- }
- else {
- actionErrors.add(
- ActionMessages.GLOBAL_MESSAGE,
- new
ActionMessage("ssm.misc.reboot.message.error.noselect"));
- }
+ set.clear();
+ for (String item : helper.getSet()) {
+ set.addElement(item);
}
-
- request.setAttribute("date",
this.getStrutsDelegate().prepopulateDatePicker(
- request, form, "date", DatePicker.YEAR_RANGE_POSITIVE));
-
- this.getStrutsDelegate().saveMessages(request, actionMessages);
- this.getStrutsDelegate().saveMessages(request, actionErrors);
-
- return mapping.findForward(forwardPageId);
+ RhnSetManager.store(set);
+ return mapping.findForward("confirm");
}
-
/**
* Get the dataset result.
*
* @param context Request context.
* @return List of SystemOverview objects.
*/
+ @SuppressWarnings("rawtypes")
public List getResult(RequestContext context) {
List<SystemOverview> systems =
SystemManager.inSet(context.getCurrentUser(),
-
RhnSetDecl.SYSTEMS.getLabel());
- for (Iterator<SystemOverview> itr = systems.iterator(); itr.hasNext();) {
- itr.next().setSelectable(1);
+ RhnSetDecl.SYSTEMS.getLabel());
+ for (SystemOverview systemOverview : systems) {
+ systemOverview.setSelectable(1);
}
return systems;
diff --git
a/java/code/src/com/redhat/rhn/frontend/action/ssm/RebootSystemConfirmAction.java
b/java/code/src/com/redhat/rhn/frontend/action/ssm/RebootSystemConfirmAction.java
new file mode 100644
index 0000000..141f74d
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/frontend/action/ssm/RebootSystemConfirmAction.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2014 Red Hat, Inc.
+ *
+ * This software is licensed to you under the GNU General Public License,
+ * version 2 (GPLv2). There is NO WARRANTY for this software, express or
+ * implied, including the implied warranties of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
+ * along with this software; if not, see
+ *
http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ *
+ * Red Hat trademarks are not licensed under GPLv2. No permission is
+ * granted to use or replicate Red Hat trademarks that are incorporated
+ * in this software or its documentation.
+ */
+package com.redhat.rhn.frontend.action.ssm;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.DynaActionForm;
+
+import com.redhat.rhn.common.localization.LocalizationService;
+import com.redhat.rhn.common.messaging.MessageQueue;
+import com.redhat.rhn.common.util.DatePicker;
+import com.redhat.rhn.domain.rhnset.RhnSet;
+import com.redhat.rhn.frontend.events.SsmSystemRebootEvent;
+import com.redhat.rhn.frontend.struts.RequestContext;
+import com.redhat.rhn.frontend.struts.RhnAction;
+import com.redhat.rhn.frontend.struts.RhnHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.ListRhnSetHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
+import com.redhat.rhn.manager.rhnset.RhnSetDecl;
+import com.redhat.rhn.manager.rhnset.RhnSetManager;
+import com.redhat.rhn.manager.system.SystemManager;
+
+/**
+ * Confirm reboot of given systems
+ */
+public class RebootSystemConfirmAction extends RhnAction implements Listable {
+
+ /** {@inheritDoc} */
+ @Override
+ public ActionForward execute(ActionMapping mapping,
+ ActionForm formIn,
+ HttpServletRequest request,
+ HttpServletResponse response) {
+
+
+ ListRhnSetHelper helper = new ListRhnSetHelper(this, request, getSetDecl());
+ helper.setWillClearSet(false);
+ helper.setDataSetName(RequestContext.PAGE_LIST);
+ helper.setListName("systemList");
+ helper.execute();
+ if (helper.isDispatched()) {
+ return handleDispatch(mapping, (DynaActionForm) formIn, request);
+ }
+
+ getStrutsDelegate().prepopulateDatePicker(request,
+ (DynaActionForm) formIn, "date",
DatePicker.YEAR_RANGE_POSITIVE);
+
+ return mapping.findForward(RhnHelper.DEFAULT_FORWARD);
+ }
+
+ /** {@inheritDoc} */
+ protected RhnSetDecl getSetDecl() {
+ return RhnSetDecl.SSM_SYSTEMS_REBOOT;
+ }
+
+ private ActionForward handleDispatch(
+ ActionMapping mapping,
+ DynaActionForm formIn,
+ HttpServletRequest request) {
+
+ RequestContext context = new RequestContext(request);
+ RhnSet set = getSetDecl().get(context.getCurrentUser());
+ List<Long> systemsToReboot = new ArrayList<Long>();
+ systemsToReboot.addAll(set.getElementValues());
+
+ Date earliest = getStrutsDelegate().readDatePicker(formIn,
+ "date", DatePicker.YEAR_RANGE_POSITIVE);
+
+ MessageQueue.publish(new SsmSystemRebootEvent(
+ context.getLoggedInUser().getId(),
+ earliest, systemsToReboot));
+
+ int n = set.size();
+ if (n == 1) {
+ createSuccessMessage(request,
"ssm.misc.reboot.message.success.singular",
+ LocalizationService.getInstance().formatNumber(new Integer(n)));
+ }
+ else {
+ createSuccessMessage(request,
"ssm.misc.reboot.message.success.plural",
+ LocalizationService.getInstance().formatNumber(new Integer(n)));
+ }
+
+ set.clear();
+ RhnSetManager.store(set);
+
+ return mapping.findForward("confirm");
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("rawtypes")
+ public List getResult(RequestContext context) {
+ return SystemManager.inSet(context.getCurrentUser(),
+ getSetDecl().getLabel());
+ }
+}
diff --git a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
index 21618c6..ba6a15c 100644
--- a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
+++ b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
@@ -4658,12 +4658,21 @@ value for this entitlement, excluding the default
organization's consumption.</s
<trans-unit id="ssm.misc.reboot.operationname">
<source>Schedule Systems Reboot</source>
</trans-unit>
- <trans-unit id="ssm.misc.reboot.message.success.default">
- <source>Systems reboot has been scheduled.</source>
+ <trans-unit id="ssm.misc.reboot.message.success.singular">
+ <source>{0} system reboot has been scheduled.</source>
+ </trans-unit>
+ <trans-unit id="ssm.misc.reboot.message.success.plural">
+ <source>{0} systems reboot has been scheduled.</source>
</trans-unit>
<trans-unit id="ssm.misc.reboot.message.error.noselect">
<source>Please select at least one system for reboot.</source>
</trans-unit>
+ <trans-unit id="ssm.misc.reboot.no-system">
+ <source>There are no selected systems.</source>
+ </trans-unit>
+ <trans-unit id="ssm.misc.reboot.confirm">
+ <source>Confirm</source>
+ </trans-unit>
<trans-unit id="ssm.misc.lockunlock.tabtitle">
<source>Lock/Unlock</source>
</trans-unit>
diff --git a/java/code/webapp/WEB-INF/pages/ssm/systems/misc/reboot-system-confirm.jsp
b/java/code/webapp/WEB-INF/pages/ssm/systems/misc/reboot-system-confirm.jsp
new file mode 100644
index 0000000..95d1b38
--- /dev/null
+++ b/java/code/webapp/WEB-INF/pages/ssm/systems/misc/reboot-system-confirm.jsp
@@ -0,0 +1,34 @@
+<%@taglib
uri="http://java.sun.com/jsp/jstl/core" prefix="c"
%>
+<%@taglib
uri="http://rhn.redhat.com/rhn" prefix="rhn" %>
+<%@taglib
uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
+<%@taglib
uri="http://struts.apache.org/tags-bean" prefix="bean"
%>
+<%@taglib
uri="http://struts.apache.org/tags-html" prefix="html"
%>
+
+<html>
+<body>
+<%@ include file="/WEB-INF/pages/common/fragments/ssm/header.jspf" %>
+
+following systems will get rebooted...
+<rl:listset name="systemListSet">
+ <c:set var="notSelectable" value="True"/>
+ <c:set var="noCsv" value="1" />
+ <c:set var="noAddToSsm" value="1" />
+ <%@ include
file="/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf" %>
+ <hr />
+
+ <div style="text-align: center">
+ <bean:message key="scheduleremote.jsp.nosoonerthan" />
+ <jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
+ <jsp:param name="widget" value="date" />
+ </jsp:include>
+ </div>
+ <rhn:submitted />
+ <div class="text-right">
+ <html:submit property="dispatch">
+ <bean:message key="ssm.misc.reboot.confirm" />
+ </html:submit>
+ </div>
+
+</rl:listset>
+</body>
+</html>
diff --git a/java/code/webapp/WEB-INF/pages/ssm/systems/misc/reboot-system.jsp
b/java/code/webapp/WEB-INF/pages/ssm/systems/misc/reboot-system.jsp
index b74ff4e..243c74a 100644
--- a/java/code/webapp/WEB-INF/pages/ssm/systems/misc/reboot-system.jsp
+++ b/java/code/webapp/WEB-INF/pages/ssm/systems/misc/reboot-system.jsp
@@ -3,7 +3,6 @@
Created on : Jul 16, 2013, 2:35:54 PM
Author : Bo Maryniuk <bo(a)suse.de>
--%>
-
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib
uri="http://rhn.redhat.com/rhn" prefix="rhn" %>
@@ -12,10 +11,6 @@
<%@taglib
uri="http://struts.apache.org/tags-bean" prefix="bean"
%>
<%@taglib
uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
-
-
<html>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/ssm/header.jspf"
%>
@@ -23,24 +18,14 @@
<p><bean:message key="ssm.misc.reboot.summary"
/></p>
<rl:listset name="systemsListSet" legend="system">
- <c:set var="noCsv" value="1"/>
+ <c:set var="noCsv" value="1" />
+ <c:set var="noAddToSsm" value="1" />
<%@ include
file="/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf" %>
+ <hr />
<div class="text-right">
- <div align="left">
- <p><bean:message
key="installconfirm.jsp.widgetsummary"/></p>
- <table class="details" align="center">
- <tr>
- <th><label
for="radio_use_date_than"><bean:message
key="confirm.jsp.than"/></label></th>
- <td>
- <jsp:include
page="/WEB-INF/pages/common/fragments/date-picker.jsp">
- <jsp:param name="widget"
value="date"/>
- </jsp:include>
- </td>
- </tr>
- </table>
- </div>
- <hr/>
- <input type="submit" name="dispatch"
value='<bean:message key="installconfirm.jsp.confirm"/>'/>
+ <html:submit property="dispatch">
+ <bean:message key="ssm.misc.reboot.operationname" />
+ </html:submit>
</div>
</rl:listset>
</body>
diff --git a/java/code/webapp/WEB-INF/struts-config.xml
b/java/code/webapp/WEB-INF/struts-config.xml
index f7d358c..99e9d59 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -1132,6 +1132,17 @@
<form-property name="submitted"
type="java.lang.Boolean"/>
</form-bean>
+ <form-bean name="ssmRebootForm"
+ type="com.redhat.rhn.frontend.struts.ScrubbingDynaActionForm"
>
+ <form-property name="submitted"
type="java.lang.Boolean"/>
+ <form-property name="date_year"
type="java.lang.Integer"/>
+ <form-property name="date_month"
type="java.lang.Integer"/>
+ <form-property name="date_day"
type="java.lang.Integer"/>
+ <form-property name="date_hour"
type="java.lang.Integer"/>
+ <form-property name="date_minute"
type="java.lang.Integer"/>
+ <form-property name="date_am_pm"
type="java.lang.Integer"/>
+ </form-bean>
+
<form-bean name="ssmMigrateForm"
type="com.redhat.rhn.frontend.struts.ScrubbingDynaActionForm"
>
<form-property name="org" type="java.lang.String"/>
@@ -5257,12 +5268,28 @@
scope="request"
input="/WEB-INF/pages/ssm/systems/misc/reboot-system.jsp"
type="com.redhat.rhn.frontend.action.ssm.RebootSystemAction"
- name="ssmPreferencesForm"
+ name="ssmRebootForm"
className="com.redhat.rhn.frontend.struts.RhnActionMapping">
- <forward name="confirm"
- path="/WEB-INF/pages/ssm/systems/misc/index.jsp" />
+ <set-property property="postRequiredIfSubmitted"
value="true" />
<forward name="default"
path="/WEB-INF/pages/ssm/systems/misc/reboot-system.jsp"
/>
+ <forward name="confirm"
+ path="/systems/ssm/misc/RebootSystemConfirm.do"
+ redirect="true" />
+ </action>
+
+ <action path="/systems/ssm/misc/RebootSystemConfirm"
+ scope="request"
+ input="/WEB-INF/pages/ssm/systems/misc/reboot-system-confirm.jsp"
+
type="com.redhat.rhn.frontend.action.ssm.RebootSystemConfirmAction"
+ name="ssmRebootForm"
+ className="com.redhat.rhn.frontend.struts.RhnActionMapping">
+ <set-property property="postRequiredIfSubmitted"
value="true" />
+ <forward name="default"
+
path="/WEB-INF/pages/ssm/systems/misc/reboot-system-confirm.jsp" />
+ <forward name="confirm"
+ path="/systems/ssm/misc/RebootSystem.do"
+ redirect="true" />
</action>
<action path="/systems/ssm/misc/Index"
commit 4b79a4145751a85b90715ae6a01e677ae301aa5b
Author: Matej Kollar <mkollar(a)redhat.com>
Date: Thu Jan 30 07:03:27 2014 +0100
Sometimes we don't want "add to ssm" option...
diff --git
a/java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf
b/java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf
index 8c6907b..e9c8ff8 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf
@@ -23,7 +23,9 @@
<rl:decorator name="ElaborationDecorator"/>
<rl:decorator name="SystemIconDecorator"/>
<rl:decorator name="PageSizeDecorator"/>
- <rl:decorator name="AddToSsmDecorator" />
+ <c:if test = "${empty noAddToSsm}">
+ <rl:decorator name="AddToSsmDecorator" />
+ </c:if>
<c:if test = "${empty notSelectable}">
<rl:decorator name="SelectableDecorator"/>