java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml | 23 ++ java/code/src/com/redhat/rhn/frontend/action/groups/ErrataListAction.java | 69 ++++++++ java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml | 6 java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java | 13 + java/code/webapp/WEB-INF/nav/system_group_detail.xml | 6 java/code/webapp/WEB-INF/pages/common/fragments/systems/group_listdisplay.jspf | 2 java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/systemGroups.jsp | 2 java/code/webapp/WEB-INF/pages/groups/detail.jsp | 4 java/code/webapp/WEB-INF/pages/groups/erratalist.jsp | 78 ++++++++++ java/code/webapp/WEB-INF/struts-config.xml | 8 + java/docs/webtesting/simple-stress-plan.jmx | 2 11 files changed, 204 insertions(+), 9 deletions(-)
New commits: commit 0e950fb1904fea42149fe5f3b7b04f8f216b8f5d Author: Matej Kollar mkollar@redhat.com Date: Tue Dec 10 13:27:06 2013 +0100
Rewrite of errata_list.pxt to Java
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml index ccce0a1..bf964c3 100644 --- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml +++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Errata_queries.xml @@ -120,6 +120,29 @@ SELECT DISTINCT E.id, E.update_date, E.synopsis as advisory_synopsis <elaborator name="errata_overview" /> </mode>
+<mode name="relevant_to_server_group" class="com.redhat.rhn.frontend.dto.ErrataOverview"> + <query params="sgid"> +SELECT DISTINCT E.id, E.advisory, E.advisory_name, E.advisory_type, E.synopsis AS ADVISORY_SYNOPSIS, + E.update_date, + (SELECT COUNT(Distinct SGM2.server_id) + FROM rhnServerNeededErrataCache SNEC, + rhnServerGroupMembers SGM2 + WHERE SNEC.errata_id = E.id + AND SNEC.server_id = SGM2.server_id + AND SGM2.server_group_id = :sgid) AS AFFECTED_SYSTEM_COUNT + FROM rhnErrata E, + rhnServerNeededErrataCache SNEC, + rhnServerGroupMembers SGM, + rhnServerFeaturesView SFV + WHERE SGM.server_id = SNEC.server_id + AND SNEC.errata_id = E.id + AND SFV.server_id = SGM.server_id + AND SFV.label = 'ftr_system_grouping' + AND SGM.server_group_id = :sgid +ORDER BY E.update_date DESC, E.id + </query> +</mode> + <mode name="relevant_to_system" class="com.redhat.rhn.frontend.dto.ErrataOverview"> <query params="user_id, sid"> SELECT DISTINCT E.id, E.update_date, diff --git a/java/code/src/com/redhat/rhn/frontend/action/groups/ErrataListAction.java b/java/code/src/com/redhat/rhn/frontend/action/groups/ErrataListAction.java new file mode 100644 index 0000000..1bd5a5b --- /dev/null +++ b/java/code/src/com/redhat/rhn/frontend/action/groups/ErrataListAction.java @@ -0,0 +1,69 @@ +/** + * Copyright (c) 2013 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.groups; + +import com.redhat.rhn.domain.server.ManagedServerGroup; +import com.redhat.rhn.frontend.action.common.BadParameterException; +import com.redhat.rhn.frontend.struts.RequestContext; +import com.redhat.rhn.frontend.struts.RhnAction; +import com.redhat.rhn.frontend.struts.StrutsDelegate; +import com.redhat.rhn.frontend.taglibs.list.helper.ListHelper; +import com.redhat.rhn.frontend.taglibs.list.helper.Listable; +import com.redhat.rhn.manager.errata.ErrataManager; + +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; + +import java.util.List; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +/** + * List Errata for server group + */ +public class ErrataListAction extends RhnAction implements Listable { + + /** {@inheritDoc} */ + public ActionForward execute(ActionMapping actionMapping, + ActionForm formIn, + HttpServletRequest request, + HttpServletResponse response) { + + RequestContext requestContext = new RequestContext(request); + ManagedServerGroup serverGroup = requestContext.lookupAndBindServerGroup(); + if (serverGroup == null) { + throw new BadParameterException("Invalid " + RequestContext.SERVER_GROUP_ID + + " parameter:" + serverGroup.getId()); + } + + ListHelper helper = new ListHelper(this, request); + helper.execute(); + + Map params = makeParamMap(request); + params.put(RequestContext.SERVER_GROUP_ID, serverGroup.getId()); + + return StrutsDelegate.getInstance().forwardParams( + actionMapping.findForward("default"), params); + } + + /** {@inheritDoc} */ + public List getResult(RequestContext context) { + ManagedServerGroup currentGroup = context.lookupAndBindServerGroup(); + return ErrataManager.relevantErrata(currentGroup); + } +} 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 0c032ad..c88ef07 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 @@ -5249,6 +5249,12 @@ value for this entitlement, excluding the default organization's consumption.</s <trans-unit id="systemgroup.admins.updated"> <source>Admin list for system group <strong>{0}</strong> updated.</source> </trans-unit> + <trans-unit id="systemgroup.erratalist.title"> + <source>Relevant Errata </source> + </trans-unit> + <trans-unit id="systemgroup.erratalist.summary"> + <source>The following errata apply to one or more of the systems in this group.</source> + </trans-unit> <trans-unit id="systemgroup.target-systems.summary"> <source>The following are systems that may be added to this group.</source> </trans-unit> diff --git a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java index ba98a9c..54aa37a 100644 --- a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java +++ b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java @@ -39,6 +39,7 @@ import com.redhat.rhn.domain.errata.ErrataFile; import com.redhat.rhn.domain.org.Org; import com.redhat.rhn.domain.rhnset.RhnSet; import com.redhat.rhn.domain.role.RoleFactory; +import com.redhat.rhn.domain.server.ManagedServerGroup; import com.redhat.rhn.domain.user.User; import com.redhat.rhn.frontend.action.channel.manage.PublishErrataHelper; import com.redhat.rhn.frontend.dto.ChannelOverview; @@ -350,6 +351,18 @@ public class ErrataManager extends BaseManager { return ErrataManager.getRelevantErrata(user, false); }
+ /** Returns errata relevant to given server group. + * @param serverGroup Server group. + * @return Relevant errata for ... + */ + public static DataResult relevantErrata(ManagedServerGroup serverGroup) { + SelectMode m = ModeFactory.getMode("Errata_queries", "relevant_to_server_group"); + Map params = new HashMap(); + params.put("sgid", serverGroup.getId()); + DataResult res = makeDataResultNoPagination(params, null, m); + return res; + } + /** * Returns the relevant errata to the system set (used in SSM). * diff --git a/java/code/webapp/WEB-INF/nav/system_group_detail.xml b/java/code/webapp/WEB-INF/nav/system_group_detail.xml index f6953e1..d3f9588 100644 --- a/java/code/webapp/WEB-INF/nav/system_group_detail.xml +++ b/java/code/webapp/WEB-INF/nav/system_group_detail.xml @@ -9,10 +9,8 @@ <rhn-tab name="Target Systems" acl="user_role(system_group_admin)"> <rhn-tab-url>/rhn/groups/AddSystems.do</rhn-tab-url> </rhn-tab> - <rhn-tab name="Errata" on-click="Sniglets::Lists->navi_empty_set" node-id="system_group_errata_list"> - <rhn-tab-url>/network/systems/groups/errata_list.pxt</rhn-tab-url> - <rhn-tab-url>/network/systems/groups/systems_affected_by_errata.pxt</rhn-tab-url> - <rhn-tab-url>/network/systems/groups/apply_errata_confirm.pxt</rhn-tab-url> + <rhn-tab name="Errata"> + <rhn-tab-url>/rhn/groups/ListErrata.do</rhn-tab-url> </rhn-tab>
<rhn-tab name="Admins" url="/rhn/groups/AdminList.do" acl="user_role(system_group_admin)" /> diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/systems/group_listdisplay.jspf b/java/code/webapp/WEB-INF/pages/common/fragments/systems/group_listdisplay.jspf index 0eb96f4..9493d3b 100644 --- a/java/code/webapp/WEB-INF/pages/common/fragments/systems/group_listdisplay.jspf +++ b/java/code/webapp/WEB-INF/pages/common/fragments/systems/group_listdisplay.jspf @@ -28,7 +28,7 @@ styleclass="center" headerclass="thin-column">
- <c:out value="<a href="/network/systems/groups/errata_list.pxt?sgid=${current.id}">" escapeXml="false"/> + <c:out value="<a href="/rhn/groups/ListErrata.do?sgid=${current.id}">" escapeXml="false"/>
<c:choose> <c:when test="${current.mostSevereErrata == 'Security Advisory'}"> diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/systemGroups.jsp b/java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/systemGroups.jsp index 77f7dac..a3eaccc 100644 --- a/java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/systemGroups.jsp +++ b/java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/systemGroups.jsp @@ -15,7 +15,7 @@ emptykey="yourrhn.jsp.systemgroups.none">
<rl:column headerkey="grouplist.jsp.status"> - <a href="/network/systems/groups/errata_list.pxt?sgid=${current.id}"> + <a href="/rhn/groups/ListErrata.do?sgid=${current.id}"> <c:choose> <c:when test="${current.mostSevereErrata == 'Security Advisory'}"> <rhn:icon type="system-crit" title="<bean:message key='grouplist.jsp.security' />" /> diff --git a/java/code/webapp/WEB-INF/pages/groups/detail.jsp b/java/code/webapp/WEB-INF/pages/groups/detail.jsp index 2816f20..1740f13 100644 --- a/java/code/webapp/WEB-INF/pages/groups/detail.jsp +++ b/java/code/webapp/WEB-INF/pages/groups/detail.jsp @@ -28,12 +28,12 @@ <c:if test="${errata_counts['se'] > 0}"> <rhn:icon type="system-crit" /> <span class="system-status-critical-updates"><bean:message key="systemgroup.details.criticalupdates"/></span> - <a class="btn btn-danger" href="/network/systems/groups/errata_list.pxt?sgid=${id}">${errata_counts['se']} <rhn:icon type="nav-right" /></a> + <a class="btn btn-danger" href="/rhn/groups/ListErrata.do?sgid=${id}">${errata_counts['se']} <rhn:icon type="nav-right" /></a> </c:if> <c:if test="${(errata_counts['se'] == 0) && ((errata_counts['be'] > 0) || (errata_counts['ee'] > 0))}"> <rhn:icon type="system-warn" /> <span class="system-status-updates"><bean:message key="systemgroup.details.someupdates"/></span> - <a class="btn btn-warning" href="/network/systems/groups/errata_list.pxt?sgid=${id}"><rhn:icon type="nav-right" /></a> + <a class="btn btn-warning" href="/rhn/groups/ListErrata.do?sgid=${id}"><rhn:icon type="nav-right" /></a> </c:if> <c:if test="${(errata_counts['se'] == 0) && (errata_counts['be'] == 0) && (errata_counts['ee'] == 0)}"> <rhn:icon type="system-ok" /> diff --git a/java/code/webapp/WEB-INF/pages/groups/erratalist.jsp b/java/code/webapp/WEB-INF/pages/groups/erratalist.jsp new file mode 100644 index 0000000..7f3fd52 --- /dev/null +++ b/java/code/webapp/WEB-INF/pages/groups/erratalist.jsp @@ -0,0 +1,78 @@ +<%@ 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> +<head> + <meta name="page-decorator" content="none" /> +</head> +<body> + +<%@ include file="/WEB-INF/pages/common/fragments/groups/header.jspf" %> + +<h2> + <bean:message key="systemgroup.erratalist.title" /> +</h2> + +<div class="page-summary"> +<bean:message key="systemgroup.erratalist.summary" /> +</div> + +<rl:listset name="groupSet" legend="errata"> + <rhn:csrf /> + <input type="hidden" name="sgid" value="${systemgroup.id}" /> + + <rl:list emptykey="erratalist.jsp.noerrata"> + + <rl:decorator name="PageSizeDecorator" /> + <rl:decorator name="ElaborationDecorator" /> + + <rl:column headerkey="erratalist.jsp.type" styleclass="text-align: left;"> + <c:if test="${current.securityAdvisory}"> + <rhn:icon type="errata-security" title="<bean:message key='erratalist.jsp.securityadvisory' />" /> + </c:if> + <c:if test="${current.bugFix}"> + <rhn:icon type="errata-bugfix" title="<bean:message key='erratalist.jsp.bugadvisory' />" /> + </c:if> + <c:if test="${current.productEnhancement}"> + <rhn:icon type="errata-enhance" title="<bean:message key='erratalist.jsp.productenhancementadvisory' />" /> + </c:if> + </rl:column> + <rl:column headerkey="erratalist.jsp.advisory"> + <a href="/rhn/errata/details/Details.do?eid=${current.id}">${current.advisoryName}</a> + </rl:column> + <rl:column headerkey="erratalist.jsp.synopsis" + sortable="true" + sortattr="advisorySynopsis" + filterattr="advisorySynopsis"> + ${current.advisorySynopsis} + </rl:column> + <rl:column headerkey="erratalist.jsp.systems" + styleclass="text-align: center;"> + <a href="/rhn/errata/details/SystemsAffected.do?eid=${current.id}">${current.affectedSystemCount}</a> + </rl:column> + <c:if test="${displayCves}"> + <rl:column headerkey="erratalist.jsp.updated" + sortable="true" + sortattr="updateDateObj" + styleclass="text-align: center;"> + ${current.updateDate} + </rl:column> + </c:if> + <c:if test="${not displayCves}"> + <rl:column headerkey="erratalist.jsp.updated" + sortable="true" + sortattr="updateDateObj" + styleclass="text-align: center;"> + ${current.updateDate} + </rl:column> + </c:if> + + </rl:list> +</rl:listset> + +</body> +</html> diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml index 47e5539..20509c3 100644 --- a/java/code/webapp/WEB-INF/struts-config.xml +++ b/java/code/webapp/WEB-INF/struts-config.xml @@ -3917,6 +3917,14 @@ redirect="true" /> </action>
+ <action path="/groups/ListErrata" + scope="request" + type="com.redhat.rhn.frontend.action.groups.ErrataListAction" + className="com.redhat.rhn.frontend.struts.RhnActionMapping"> + <forward name="default" + path="/WEB-INF/pages/groups/erratalist.jsp" /> + </action> + <action path="/groups/EditGroup" scope="request" type="com.redhat.rhn.frontend.action.groups.EditGroupAction" diff --git a/java/docs/webtesting/simple-stress-plan.jmx b/java/docs/webtesting/simple-stress-plan.jmx index ec8e824..2d55d1b 100644 --- a/java/docs/webtesting/simple-stress-plan.jmx +++ b/java/docs/webtesting/simple-stress-plan.jmx @@ -869,7 +869,7 @@ </node> <node> <testelement class="org.apache.jmeter.protocol.http.sampler.HTTPSampler"> -<property xml:space="preserve" propType="org.apache.jmeter.testelement.property.StringProperty" name="HTTPSampler.path">/network/systems/details/errata_list.pxt</property> +<property xml:space="preserve" propType="org.apache.jmeter.testelement.property.StringProperty" name="HTTPSampler.path">/rhn/groups/ListErrata.do</property> <property xml:space="preserve" propType="org.apache.jmeter.testelement.property.StringProperty" name="TestElement.test_class">org.apache.jmeter.protocol.http.sampler.HTTPSampler</property> <property xml:space="preserve" propType="org.apache.jmeter.testelement.property.StringProperty" name="HTTPSampler.method">GET</property> <property xml:space="preserve" propType="org.apache.jmeter.testelement.property.BooleanProperty" name="HTTPSampler.use_keepalive">true</property>