Branch 'VADER' - java/code
by Mike McCune
java/code/src/com/redhat/rhn/common/conf/Config.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
New commits:
commit 85f9811cc5b03f188e9be3b7e950cfbf445b8908
Author: Mike McCune <mmccune(a)gibson.pdx.redhat.com>
Date: Tue Jun 30 16:24:34 2009 -0700
508790 - switch to /var/lib/libvirt/images for our default path
Instead of having /var/lib/xen which is xen specific we now create
all our guests in /var/lib/libvirt/images which is always there
and created/owned by libvirt.
diff --git a/java/code/src/com/redhat/rhn/common/conf/Config.java b/java/code/src/com/redhat/rhn/common/conf/Config.java
index 5106870..04b5947 100644
--- a/java/code/src/com/redhat/rhn/common/conf/Config.java
+++ b/java/code/src/com/redhat/rhn/common/conf/Config.java
@@ -175,7 +175,7 @@ public class Config {
private static final String DEFAULT_COBBLER_SNIPPET_DIR = "/var/lib/cobbler/snippets";
public static final String VIRT_PATH_DIR = "kickstart.virt_storage_path";
- private static final String DEFAULT_VIRT_PATH = "/var/lib/xen";
+ private static final String DEFAULT_VIRT_PATH = "/var/lib/libvirt/images";
public static final String VIRT_BRIDGE = "kickstart.virt_bridge";
public static final String VIRT_MEM = "kickstart.virt_mem_size_mb";
public static final String VIRT_CPU = "kickstart.virt_cpus";
@@ -786,7 +786,7 @@ public class Config {
public File getVirtPath() {
return new File(getString(VIRT_PATH_DIR, DEFAULT_VIRT_PATH));
}
-
+
/**
* Returns the default value for the xen virt bridge
* @return the value for virt bridge.
13 years, 11 months
java/code
by Mike McCune
java/code/src/com/redhat/rhn/common/conf/Config.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
New commits:
commit 135c27d0c96bcbcc72b1a9a071a1ba8f1c69a248
Author: Mike McCune <mmccune(a)gibson.pdx.redhat.com>
Date: Tue Jun 30 16:24:34 2009 -0700
508790 - switch to /var/lib/libvirt/images for our default path
Instead of having /var/lib/xen which is xen specific we now create
all our guests in /var/lib/libvirt/images which is always there
and created/owned by libvirt.
diff --git a/java/code/src/com/redhat/rhn/common/conf/Config.java b/java/code/src/com/redhat/rhn/common/conf/Config.java
index 5106870..04b5947 100644
--- a/java/code/src/com/redhat/rhn/common/conf/Config.java
+++ b/java/code/src/com/redhat/rhn/common/conf/Config.java
@@ -175,7 +175,7 @@ public class Config {
private static final String DEFAULT_COBBLER_SNIPPET_DIR = "/var/lib/cobbler/snippets";
public static final String VIRT_PATH_DIR = "kickstart.virt_storage_path";
- private static final String DEFAULT_VIRT_PATH = "/var/lib/xen";
+ private static final String DEFAULT_VIRT_PATH = "/var/lib/libvirt/images";
public static final String VIRT_BRIDGE = "kickstart.virt_bridge";
public static final String VIRT_MEM = "kickstart.virt_mem_size_mb";
public static final String VIRT_CPU = "kickstart.virt_cpus";
@@ -786,7 +786,7 @@ public class Config {
public File getVirtPath() {
return new File(getString(VIRT_PATH_DIR, DEFAULT_VIRT_PATH));
}
-
+
/**
* Returns the default value for the xen virt bridge
* @return the value for virt bridge.
13 years, 11 months
Branch 'ssm-kickstart' - java/code
by Partha Aji
java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml | 18 ++
java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKSScheduleAction.java | 26 +++
java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKickstartableSystemsAction.java | 68 ++++++++++
java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java | 24 +++
java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf | 9 -
java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp | 23 +++
java/code/webapp/WEB-INF/struts-config.xml | 22 +++
7 files changed, 186 insertions(+), 4 deletions(-)
New commits:
commit ec47b3f86f2b9bfded604eab6a5b96e70e2ad7b3
Author: Partha Aji <paji(a)redhat.com>
Date: Tue Jun 30 18:22:20 2009 -0400
508980 - Initial cut of the SSM kickstart work
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
index 3b335d3..2ce6af8 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
@@ -36,6 +36,24 @@ ORDER BY UPPER(NVL(S.name, '(none)')), S.id
<elaborator name="system_overview" />
</mode>
+<!-- system_feature(ftr_kickstart); not is_solaris() -->
+<mode name="ssm_kickstartable" class="com.redhat.rhn.frontend.dto.SystemOverview">
+ <query params="user_id">
+SELECT S.id,
+ S.name
+ FROM rhnServer S
+ inner join rhnSet ST on S.id = ST.element
+ inner join rhnUserServerPerms USP on USP.server_id = S.id
+ WHERE USP.user_id = :user_id
+ AND ST.user_id = :user_id
+ AND ST.label = 'system_list'
+ AND EXISTS(SELECT 1 FROM rhnServerFeaturesView SFV WHERE SFV.server_id = ST.element AND SFV.label = 'ftr_kickstart')
+ AND USP.server_id = S.id
+ORDER BY UPPER(NVL(S.NAME, '(none)')), S.ID
+ </query>
+ <elaborator name="system_overview" />
+</mode>
+
<mode name="ssm_remote_commandable">
<query params="user_id">
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKSScheduleAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKSScheduleAction.java
new file mode 100644
index 0000000..46937df
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKSScheduleAction.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2009 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.kickstart.ssm;
+
+import com.redhat.rhn.frontend.struts.RhnAction;
+
+
+/**
+ * ScheduleKickstartAction
+ * @version $Rev$
+ */
+public class SsmKSScheduleAction extends RhnAction {
+
+}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKickstartableSystemsAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKickstartableSystemsAction.java
new file mode 100644
index 0000000..6c6d9d0
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKickstartableSystemsAction.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2009 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.kickstart.ssm;
+
+import com.redhat.rhn.domain.user.User;
+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.ListHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
+import com.redhat.rhn.manager.kickstart.KickstartManager;
+
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+
+/**
+ * SsmKickstartableSystemsAction
+ * @version $Rev$
+ */
+public class SsmKickstartableSystemsAction extends RhnAction implements Listable {
+
+ /**
+ * ${@inheritDoc}
+ */
+ public ActionForward execute(ActionMapping mapping, ActionForm form,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+ ListHelper helper = new ListHelper(this, request);
+ helper.setDataSetName(getDataSetName());
+ helper.execute();
+ return mapping.findForward(RhnHelper.DEFAULT_FORWARD);
+ }
+
+ /**
+ * ${@inheritDoc}
+ */
+ public String getDataSetName() {
+ return "pageList";
+ }
+
+
+ /**
+ * ${@inheritDoc}
+ */
+ public List getResult(RequestContext context) {
+ User user = context.getLoggedInUser();
+ return KickstartManager.getInstance().kickstartableSystemsInSsm(user);
+ }
+
+}
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java
index 255769c..8a0f0da 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java
@@ -15,12 +15,21 @@
package com.redhat.rhn.manager.kickstart;
import com.redhat.rhn.common.conf.Config;
+import com.redhat.rhn.common.db.datasource.DataResult;
+import com.redhat.rhn.common.db.datasource.ModeFactory;
+import com.redhat.rhn.common.db.datasource.SelectMode;
import com.redhat.rhn.common.util.download.DownloadException;
import com.redhat.rhn.common.util.download.DownloadUtils;
import com.redhat.rhn.common.validator.ValidatorException;
import com.redhat.rhn.domain.kickstart.KickstartData;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.dto.SystemOverview;
import com.redhat.rhn.manager.BaseManager;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
/**
*
* KickstartManager
@@ -81,5 +90,18 @@ public class KickstartManager extends BaseManager {
ValidatorException.raiseException("kickstart.jsp.error.template_generation",
KickstartUrlHelper.getFileDowloadPageUrl(ksdata));
}
- }
+ }
+
+ /**
+ * returns a list of systems in SSM
+ * that are kickstartable
+ * @param user the user for access info
+ * @return the list of kickstartable systems
+ */
+ public DataResult<SystemOverview> kickstartableSystemsInSsm(User user) {
+ SelectMode m = ModeFactory.getMode("System_queries", "ssm_kickstartable");
+ Map params = new HashMap();
+ params.put("user_id", user.getId());
+ return makeDataResult(params, Collections.EMPTY_MAP, null, m);
+ }
}
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 87fc451..23c68e4 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
@@ -50,6 +50,7 @@
<%@ include file="monitoring_status_systems.jspf" %>
</c:if>
+ <c:if test = "${empty noErrata}">
<!-- errata Column -->
<rl:column sortable="false"
bound="false"
@@ -65,7 +66,8 @@
</c:otherwise>
</c:choose>
</rl:column>
-
+ </c:if>
+ <c:if test = "${empty noPackages}">
<!-- Packages Column -->
<rl:column sortable="false"
bound="false"
@@ -82,7 +84,7 @@
</c:otherwise>
</c:choose>
</rl:column>
-
+ </c:if>
<!-- Name Channel Column -->
<rl:column sortable="true"
@@ -112,8 +114,9 @@
</rl:list>
+ <c:if test = "${empty noCsv}">
<rl:csv dataset="pageList"
name="systemList"
exportColumns="name,id,securityErrata,bugErrata,enhancementErrata,outdatedPackages,lastCheckin,entitlement"/>
-
+ </c:if>
<rhn:submitted/>
diff --git a/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp b/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp
new file mode 100644
index 0000000..9aa54a2
--- /dev/null
+++ b/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp
@@ -0,0 +1,23 @@
+<%@ taglib uri="http://rhn.redhat.com/rhn" prefix="rhn" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
+<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
+<html:xhtml/>
+<html>
+<head>
+ <meta name="page-decorator" content="none" />
+</head>
+<body>
+ <%@ include file="/WEB-INF/pages/common/fragments/ssm/header.jspf" %>
+<c:set var="noUpdates" value="true"/>
+<c:set var="notSelectable" value="true"/>
+<c:set var="noMonitoring" value="true"/>
+<c:set var="noErrata" value="true"/>
+<c:set var="noPackages" value="true"/>
+
+<rl:listset name="systemListSet" legend="system">
+ <%@ include file="/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf" %>
+</rl:listset>
+</body>
+</html>
\ No newline at end of file
diff --git a/java/code/webapp/WEB-INF/pages/kickstart/ssm/schedule.jsp b/java/code/webapp/WEB-INF/pages/kickstart/ssm/schedule.jsp
new file mode 100644
index 0000000..e69de29
diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml
index 6baa745..cec2db1 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -4603,6 +4603,28 @@
<forward name="deleted" path="/profiles/List.do" redirect="true" />
</action>
+ <!-- Kickstart Pages SSM -->
+ <action path="/ssm/kickstart/KickstartableSystems"
+ scope="request"
+ input="/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp"
+ type="com.redhat.rhn.frontend.action.kickstart.ssm.SsmKickstartableSystemsAction"
+ className="com.redhat.rhn.frontend.struts.RhnActionMapping">
+ <set-property property="acls" value="org_entitlement(rhn_provisioning); user_role(config_admin)"/>
+ <forward name="default"
+ path="/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp"/>
+ <forward name="success"
+ path="/ssm/kickstart/Schedule.do"/>
+ </action>
+ <action path="/ssm/kickstart/Schedule"
+ scope="request"
+ input="/WEB-INF/pages/kickstart/ssm/schedule.jsp"
+ type="com.redhat.rhn.frontend.action.kickstart.ssm.SsmKSScheduleAction"
+ className="com.redhat.rhn.frontend.struts.RhnActionMapping">
+ <set-property property="acls" value="org_entitlement(rhn_provisioning); user_role(config_admin)"/>
+ <forward name="default"
+ path="/WEB-INF/pages/kickstart/ssm/schedule.jsp"/>
+ </action>
+
<!-- Kickstart Pages -->
<action path="/kickstart/Kickstarts"
13 years, 11 months
Branch 'VADER' - java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java | 95 ++++-
java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSubmitAction.java | 177 ----------
java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java | 4
java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java | 19 +
java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld | 5
java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp | 51 +-
java/code/webapp/WEB-INF/struts-config.xml | 15
7 files changed, 127 insertions(+), 239 deletions(-)
New commits:
commit 5bf6274e4a85e6f024dea18c6ddef629f5acdc7e
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Tue Jun 30 17:33:00 2009 -0400
508966 - fixed issue where could not set package profile for a kickstart, rewrote to new list tag
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java
index cbaf6f3..bcf5302 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java
@@ -14,53 +14,104 @@
*/
package com.redhat.rhn.frontend.action.kickstart;
-import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
-import com.redhat.rhn.frontend.listview.PageControl;
+import com.redhat.rhn.domain.rhnpackage.profile.Profile;
import com.redhat.rhn.frontend.struts.RequestContext;
+import com.redhat.rhn.frontend.struts.RhnAction;
+import com.redhat.rhn.frontend.taglibs.list.ListTagHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.ListHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
import com.redhat.rhn.manager.profile.ProfileManager;
-import com.redhat.rhn.manager.rhnset.RhnSetDecl;
-import java.util.Iterator;
-import java.util.LinkedList;
+import org.apache.commons.lang.StringUtils;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
/**
* KickstartPackageProfilesEditAction - setup for listing the profiles available
* for selection.
* @version $Rev: 1 $
*/
-public class KickstartPackageProfileSetupAction extends BaseKickstartListSetupAction {
+public class KickstartPackageProfileSetupAction extends RhnAction implements Listable {
+
+
+ public static final String UPDATE_METHOD = "kickstart.packageprofile.jsp.submit";
+ public static final String CLEAR_METHOD = "kickstart.packageprofile.jsp.clear";
/**
+ *
* {@inheritDoc}
*/
- protected Iterator getCurrentItemsIterator(KickstartData ksdata) {
- List l = new LinkedList();
- if (ksdata.getKickstartDefaults().getProfile() != null) {
- l.add(ksdata.getKickstartDefaults().getProfile());
+ public ActionForward execute(ActionMapping mapping,
+ ActionForm formIn,
+ HttpServletRequest request,
+ HttpServletResponse response) {
+
+ RequestContext context = new RequestContext(request);
+
+
+
+ KickstartData ks = KickstartFactory.lookupKickstartDataByIdAndOrg(
+ context.getCurrentUser().getOrg(), context.getRequiredParam("ksid"));
+
+
+ ListHelper helper = new ListHelper(this, request);
+ helper.execute();
+
+ if (context.wasDispatched("kickstart.packageprofile.jsp.submit")) {
+ String selected = ListTagHelper.getRadioSelection(helper.getListName(),
+ request);
+ if (StringUtils.isNumeric(selected)) {
+ Profile prof = ProfileManager.lookupByIdAndOrg(new Long(selected),
+ context.getCurrentUser().getOrg());
+ ks.getKickstartDefaults().setProfile(prof);
+
+ Map params = new HashMap();
+ params.put("ksid", ks.getId());
+ getStrutsDelegate().saveMessage(UPDATE_METHOD, request);
+ return getStrutsDelegate().forwardParams(mapping.findForward("success"),
+ params);
+ }
}
- return l.iterator();
- }
+ else if (context.wasDispatched("kickstart.packageprofile.jsp.clear")) {
+ ks.getKickstartDefaults().setProfile(null);
+ KickstartFactory.saveKickstartData(ks);
+ request.setAttribute("ksid", ks.getId());
+ Map params = new HashMap();
+ params.put("ksid", ks.getId());
+ getStrutsDelegate().saveMessage(CLEAR_METHOD, request);
+ return getStrutsDelegate().forwardParams(mapping.findForward("success"),
+ params);
- /**
- * {@inheritDoc}
- */
- public RhnSetDecl getSetDecl() {
- return RhnSetDecl.PACKAGE_PROFILES;
+ }
+ if (ks.getKickstartDefaults().getProfile() != null) {
+ ListTagHelper.selectRadioValue(helper.getListName(),
+ ks.getKickstartDefaults().getProfile().getId().toString(), request);
+ }
+ return mapping.findForward("default");
}
/**
+ *
* {@inheritDoc}
*/
- protected DataResult getDataResult(RequestContext rctx, PageControl pc) {
+ public List getResult(RequestContext rctx) {
KickstartData ksdata = KickstartFactory
- .lookupKickstartDataByIdAndOrg(rctx.getCurrentUser().getOrg(),
- rctx.getRequiredParam(RequestContext.KICKSTART_ID));
+ .lookupKickstartDataByIdAndOrg(rctx.getCurrentUser().getOrg(),
+ rctx.getRequiredParam(RequestContext.KICKSTART_ID));
return ProfileManager.compatibleWithChannel(
- ksdata.getKickstartDefaults().getKstree().getChannel(),
- rctx.getCurrentUser().getOrg(), pc);
+ ksdata.getKickstartDefaults().getKstree().getChannel(),
+ rctx.getCurrentUser().getOrg(), null);
}
+
}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSubmitAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSubmitAction.java
deleted file mode 100644
index df9dc12..0000000
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSubmitAction.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * Copyright (c) 2009 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.kickstart;
-
-import com.redhat.rhn.common.db.datasource.DataResult;
-import com.redhat.rhn.domain.kickstart.KickstartData;
-import com.redhat.rhn.domain.kickstart.KickstartFactory;
-import com.redhat.rhn.domain.rhnpackage.profile.Profile;
-import com.redhat.rhn.domain.rhnpackage.profile.ProfileFactory;
-import com.redhat.rhn.domain.rhnset.RhnSet;
-import com.redhat.rhn.domain.rhnset.RhnSetElement;
-import com.redhat.rhn.domain.user.User;
-import com.redhat.rhn.frontend.struts.RequestContext;
-import com.redhat.rhn.manager.kickstart.KickstartPackageProfileCommand;
-import com.redhat.rhn.manager.profile.ProfileManager;
-import com.redhat.rhn.manager.rhnset.RhnSetDecl;
-import com.redhat.rhn.manager.rhnset.RhnSetManager;
-
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * KickstartPackageProfileSubmitAction
- * @version $Rev$
- */
-public class KickstartPackageProfileSubmitAction extends
- BaseKickstartListSubmitAction {
-
- public static final String UPDATE_METHOD = "kickstart.packageprofile.jsp.submit";
- public static final String CLEAR_METHOD = "kickstart.packageprofile.jsp.clear";
-
- /**
- * {@inheritDoc}
- */
- protected void operateOnRemovedElements(List elements,
- HttpServletRequest request) {
-
- if (elements.size() > 0) {
- RequestContext rctx = new RequestContext(request);
- KickstartPackageProfileCommand cmd = new
- KickstartPackageProfileCommand(
- rctx.getRequiredParam(RequestContext.KICKSTART_ID),
- rctx.getCurrentUser());
- cmd.setProfile(null);
- cmd.store();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected void operateOnAddedElements(List elements,
- HttpServletRequest request) {
-
- RequestContext rctx = new RequestContext(request);
- KickstartPackageProfileCommand cmd = new
- KickstartPackageProfileCommand(
- rctx.getRequiredParam(RequestContext.KICKSTART_ID),
- rctx.getCurrentUser());
- Long pid = null;
- if (elements.size() > 0) {
- pid = ((RhnSetElement) elements.get(0)).getElement();
- Profile p = ProfileFactory.lookupByIdAndOrg(pid,
- rctx.getCurrentUser().getOrg());
- cmd.setProfile(p);
- cmd.store();
- }
-
- }
-
- /**
- * {@inheritDoc}
- */
- public RhnSetDecl getSetDecl() {
- return RhnSetDecl.PACKAGE_PROFILES;
- }
-
- /**
- * {@inheritDoc}
- */
- protected DataResult getDataResult(User user,
- ActionForm formIn,
- HttpServletRequest request) {
-
- RequestContext rctx = new RequestContext(request);
- KickstartData ksdata = KickstartFactory
- .lookupKickstartDataByIdAndOrg(rctx.getCurrentUser().getOrg(),
- rctx.getRequiredParam(RequestContext.KICKSTART_ID));
-
- DataResult dr = ProfileManager.compatibleWithChannel(
- ksdata.getKickstartDefaults().getKstree().getChannel(),
- rctx.getCurrentUser().getOrg(), null);
- return dr;
- }
-
- /**
- * {@inheritDoc}
- */
- protected void processMethodKeys(Map map) {
- map.put(UPDATE_METHOD, "operateOnDiff");
- map.put(CLEAR_METHOD, "clearSelection");
- }
-
- protected Iterator getCurrentItemsIterator(RequestContext ctx) {
- KickstartData ksdata = KickstartFactory
- .lookupKickstartDataByIdAndOrg(ctx.getCurrentUser().getOrg(),
- ctx.getRequiredParam(RequestContext.KICKSTART_ID));
-
- List l = new LinkedList();
- if (ksdata.getKickstartDefaults().getProfile() != null) {
- l.add(ksdata.getKickstartDefaults().getProfile());
- }
- return l.iterator();
-
- }
-
- /**
- * This is executed if the clear button is pushed. Clears all associated package
- * profiles from from the selected kickstart
- *
- * @param mapping The ActionMapping used to select this instance
- * @param formIn The optional ActionForm bean for this request (if any)
- * @param request The HTTP request we are processing
- * @param response The HTTP response we are creating
- * @return Describes where and how control should be forwarded.
- */
- public ActionForward clearSelection(ActionMapping mapping,
- ActionForm formIn,
- HttpServletRequest request,
- HttpServletResponse response) {
-
- RequestContext rctx = new RequestContext(request);
- KickstartPackageProfileCommand cmd = new
- KickstartPackageProfileCommand(
- rctx.getRequiredParam(RequestContext.KICKSTART_ID),
- rctx.getCurrentUser());
- cmd.setProfile(null);
- cmd.store();
-
- ArrayList added = new ArrayList();
- ArrayList removed = new ArrayList();
-
- RhnSet currentSet = updateSet(request);
- for (Iterator it = currentSet.getElements().iterator(); it.hasNext();) {
- removed.add(it.next());
- }
- currentSet.clear();
- RhnSetManager.store(currentSet);
-
- generateUserMessage(added, removed, request);
- Map params = makeParamMap(formIn, request);
- return getStrutsDelegate().forwardParams(mapping.findForward("default"), params);
- }
-
-}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java
index bd2bd4f..2d8d53a 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java
@@ -19,7 +19,7 @@ import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.kickstart.test.KickstartDataTest;
import com.redhat.rhn.domain.rhnpackage.profile.Profile;
import com.redhat.rhn.domain.role.RoleFactory;
-import com.redhat.rhn.frontend.action.kickstart.KickstartPackageProfileSubmitAction;
+import com.redhat.rhn.frontend.action.kickstart.KickstartPackageProfileSetupAction;
import com.redhat.rhn.frontend.dto.ProfileDto;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.manager.profile.test.ProfileManagerTest;
@@ -61,7 +61,7 @@ public class KickstartPackageProfileActionTest extends RhnMockStrutsTestCase {
user.addRole(RoleFactory.ORG_ADMIN);
Profile p = ProfileManagerTest.createProfileWithServer(user);
addSelectedItem(p.getId());
- addDispatchCall(KickstartPackageProfileSubmitAction.UPDATE_METHOD);
+ addDispatchCall(KickstartPackageProfileSetupAction.UPDATE_METHOD);
setRequestPathInfo("/kickstart/KickstartPackageProfileEditSubmit");
actionPerform();
// Gotta make sure we can update the profile to the same entry twice
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java
index 8f63ec0..64a3f51 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java
@@ -45,6 +45,7 @@ public class RadioColumnTag extends TagSupport {
private String valueExpr;
private String headerStyle;
private String headerKey;
+ private boolean useDefault = true;
/**
* Sets the column width
@@ -135,7 +136,7 @@ public class RadioColumnTag extends TagSupport {
radio.setAttribute("type", "radio");
radio.setAttribute("name", getRadioName(listName));
radio.setAttribute("value", value);
- if (StringUtils.isBlank(getRadioValue())) {
+ if (StringUtils.isBlank(getRadioValue()) && useDefault) {
pageContext.getRequest().setAttribute(getRadioName(listName), value);
}
if (isSelected()) {
@@ -229,4 +230,20 @@ public class RadioColumnTag extends TagSupport {
width = "20px";
headerStyle = null;
}
+
+
+ /**
+ * @return Returns the setDefault.
+ */
+ public boolean isUseDefault() {
+ return useDefault;
+ }
+
+
+ /**
+ * @param setDefaultIn The setDefault to set.
+ */
+ public void setUseDefault(boolean setDefaultIn) {
+ this.useDefault = setDefaultIn;
+ }
}
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld b/java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld
index 95e8598..2450ad1 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld
@@ -242,6 +242,11 @@
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
+ <attribute>
+ <name>useDefault</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
</tag>
<tag>
<name>csv</name>
diff --git a/java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp b/java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp
index a63ee9c..ec64d49 100644
--- a/java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp
+++ b/java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp
@@ -2,6 +2,8 @@
<%@ taglib uri="http://rhn.redhat.com/rhn" prefix="rhn" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
+
<html:html xhtml="true">
<body>
@@ -25,34 +27,31 @@
</p>
<c:set var="pageList" value="${requestScope.pageList}" />
- <form method="post" name="rhn_list" action="/rhn/kickstart/KickstartPackageProfileEditSubmit.do">
- <rhn:submitted />
- <rhn:list pageList="${pageList}" noDataText="kickstart.packageprofiles.jsp.noprofiles">
-
- <rhn:listdisplay set="${requestScope.set}" hiddenvars="${requestScope.newset}">
- <rhn:set type="radio" value="${current.id}" buttons="false"/>
+<rl:listset name="profiles" >
+ <rl:list emptykey="kickstart.packageprofiles.jsp.noprofiles">
+ <rl:decorator name = "PageSizeDecorator"/>
+ <rl:radiocolumn value="${current.id}" styleclass="first-column" useDefault='false'/>
- <rhn:column header="kickstart.packageprofiles.jsp.description">
+ <rl:column headerkey="kickstart.packageprofiles.jsp.description" filterattr="name">
${current.name}
- </rhn:column>
- </rhn:listdisplay>
- </rhn:list>
-<p>
-<bean:message key="kickstart.packageprofiles.jsp.tip" arg0="${ksdata.id}"/>
-</p>
-<hr />
-<input type="hidden" name="ksid" value="<c:out value="${param.ksid}"/>" />
-<div align="right">
- <html:submit property="dispatch">
- <bean:message key="kickstart.packageprofile.jsp.clear"/>
- </html:submit>
- <html:submit property="dispatch">
- <bean:message key="kickstart.packageprofile.jsp.submit"/>
- </html:submit>
-
-</div>
-
- </form>
+ </rl:column>
+ </rl:list>
+ <p>
+ <bean:message key="kickstart.packageprofiles.jsp.tip" arg0="${ksdata.id}"/>
+ </p>
+ <hr />
+ <input type="hidden" name="ksid" value="<c:out value="${param.ksid}"/>" />
+ <div align="right">
+ <html:submit property="dispatch">
+ <bean:message key="kickstart.packageprofile.jsp.clear"/>
+ </html:submit>
+ <html:submit property="dispatch">
+ <bean:message key="kickstart.packageprofile.jsp.submit"/>
+ </html:submit>
+
+ </div>
+ <rhn:submitted />
+ </rl:listset>
</div>
</body>
diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml
index 5bd6f16..6baa745 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -5160,17 +5160,10 @@
scope="request"
input="/WEB-INF/pages/kickstart/packageprofiles.jsp"
type="com.redhat.rhn.frontend.action.kickstart.KickstartPackageProfileSetupAction">
- <forward name="default"
- path="/WEB-INF/pages/kickstart/packageprofiles.jsp"/>
- </action>
-
- <action path="/kickstart/KickstartPackageProfileEditSubmit"
- scope="request"
- input="/WEB-INF/pages/kickstart/packageprofiles.jsp"
- type="com.redhat.rhn.frontend.action.kickstart.KickstartPackageProfileSubmitAction"
- parameter="dispatch">
- <forward name="default"
- path="/kickstart/KickstartPackageProfileEdit.do"/>
+ <forward name="default"
+ path="/WEB-INF/pages/kickstart/packageprofiles.jsp" />
+ <forward name="success"
+ path="/kickstart/KickstartPackageProfileEdit.do" redirect="true"/>
</action>
<action path="/kickstart/DownloadLog"
13 years, 11 months
java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java | 95 ++++-
java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSubmitAction.java | 177 ----------
java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java | 4
java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java | 19 +
java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld | 5
java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp | 51 +-
java/code/webapp/WEB-INF/struts-config.xml | 15
7 files changed, 127 insertions(+), 239 deletions(-)
New commits:
commit b99361d53f3a3ef256cf4f3be9360bdd08d57409
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Tue Jun 30 17:33:00 2009 -0400
508966 - fixed issue where could not set package profile for a kickstart, rewrote to new list tag
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java
index cbaf6f3..bcf5302 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSetupAction.java
@@ -14,53 +14,104 @@
*/
package com.redhat.rhn.frontend.action.kickstart;
-import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
-import com.redhat.rhn.frontend.listview.PageControl;
+import com.redhat.rhn.domain.rhnpackage.profile.Profile;
import com.redhat.rhn.frontend.struts.RequestContext;
+import com.redhat.rhn.frontend.struts.RhnAction;
+import com.redhat.rhn.frontend.taglibs.list.ListTagHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.ListHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
import com.redhat.rhn.manager.profile.ProfileManager;
-import com.redhat.rhn.manager.rhnset.RhnSetDecl;
-import java.util.Iterator;
-import java.util.LinkedList;
+import org.apache.commons.lang.StringUtils;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
/**
* KickstartPackageProfilesEditAction - setup for listing the profiles available
* for selection.
* @version $Rev: 1 $
*/
-public class KickstartPackageProfileSetupAction extends BaseKickstartListSetupAction {
+public class KickstartPackageProfileSetupAction extends RhnAction implements Listable {
+
+
+ public static final String UPDATE_METHOD = "kickstart.packageprofile.jsp.submit";
+ public static final String CLEAR_METHOD = "kickstart.packageprofile.jsp.clear";
/**
+ *
* {@inheritDoc}
*/
- protected Iterator getCurrentItemsIterator(KickstartData ksdata) {
- List l = new LinkedList();
- if (ksdata.getKickstartDefaults().getProfile() != null) {
- l.add(ksdata.getKickstartDefaults().getProfile());
+ public ActionForward execute(ActionMapping mapping,
+ ActionForm formIn,
+ HttpServletRequest request,
+ HttpServletResponse response) {
+
+ RequestContext context = new RequestContext(request);
+
+
+
+ KickstartData ks = KickstartFactory.lookupKickstartDataByIdAndOrg(
+ context.getCurrentUser().getOrg(), context.getRequiredParam("ksid"));
+
+
+ ListHelper helper = new ListHelper(this, request);
+ helper.execute();
+
+ if (context.wasDispatched("kickstart.packageprofile.jsp.submit")) {
+ String selected = ListTagHelper.getRadioSelection(helper.getListName(),
+ request);
+ if (StringUtils.isNumeric(selected)) {
+ Profile prof = ProfileManager.lookupByIdAndOrg(new Long(selected),
+ context.getCurrentUser().getOrg());
+ ks.getKickstartDefaults().setProfile(prof);
+
+ Map params = new HashMap();
+ params.put("ksid", ks.getId());
+ getStrutsDelegate().saveMessage(UPDATE_METHOD, request);
+ return getStrutsDelegate().forwardParams(mapping.findForward("success"),
+ params);
+ }
}
- return l.iterator();
- }
+ else if (context.wasDispatched("kickstart.packageprofile.jsp.clear")) {
+ ks.getKickstartDefaults().setProfile(null);
+ KickstartFactory.saveKickstartData(ks);
+ request.setAttribute("ksid", ks.getId());
+ Map params = new HashMap();
+ params.put("ksid", ks.getId());
+ getStrutsDelegate().saveMessage(CLEAR_METHOD, request);
+ return getStrutsDelegate().forwardParams(mapping.findForward("success"),
+ params);
- /**
- * {@inheritDoc}
- */
- public RhnSetDecl getSetDecl() {
- return RhnSetDecl.PACKAGE_PROFILES;
+ }
+ if (ks.getKickstartDefaults().getProfile() != null) {
+ ListTagHelper.selectRadioValue(helper.getListName(),
+ ks.getKickstartDefaults().getProfile().getId().toString(), request);
+ }
+ return mapping.findForward("default");
}
/**
+ *
* {@inheritDoc}
*/
- protected DataResult getDataResult(RequestContext rctx, PageControl pc) {
+ public List getResult(RequestContext rctx) {
KickstartData ksdata = KickstartFactory
- .lookupKickstartDataByIdAndOrg(rctx.getCurrentUser().getOrg(),
- rctx.getRequiredParam(RequestContext.KICKSTART_ID));
+ .lookupKickstartDataByIdAndOrg(rctx.getCurrentUser().getOrg(),
+ rctx.getRequiredParam(RequestContext.KICKSTART_ID));
return ProfileManager.compatibleWithChannel(
- ksdata.getKickstartDefaults().getKstree().getChannel(),
- rctx.getCurrentUser().getOrg(), pc);
+ ksdata.getKickstartDefaults().getKstree().getChannel(),
+ rctx.getCurrentUser().getOrg(), null);
}
+
}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSubmitAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSubmitAction.java
deleted file mode 100644
index df9dc12..0000000
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartPackageProfileSubmitAction.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * Copyright (c) 2009 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.kickstart;
-
-import com.redhat.rhn.common.db.datasource.DataResult;
-import com.redhat.rhn.domain.kickstart.KickstartData;
-import com.redhat.rhn.domain.kickstart.KickstartFactory;
-import com.redhat.rhn.domain.rhnpackage.profile.Profile;
-import com.redhat.rhn.domain.rhnpackage.profile.ProfileFactory;
-import com.redhat.rhn.domain.rhnset.RhnSet;
-import com.redhat.rhn.domain.rhnset.RhnSetElement;
-import com.redhat.rhn.domain.user.User;
-import com.redhat.rhn.frontend.struts.RequestContext;
-import com.redhat.rhn.manager.kickstart.KickstartPackageProfileCommand;
-import com.redhat.rhn.manager.profile.ProfileManager;
-import com.redhat.rhn.manager.rhnset.RhnSetDecl;
-import com.redhat.rhn.manager.rhnset.RhnSetManager;
-
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * KickstartPackageProfileSubmitAction
- * @version $Rev$
- */
-public class KickstartPackageProfileSubmitAction extends
- BaseKickstartListSubmitAction {
-
- public static final String UPDATE_METHOD = "kickstart.packageprofile.jsp.submit";
- public static final String CLEAR_METHOD = "kickstart.packageprofile.jsp.clear";
-
- /**
- * {@inheritDoc}
- */
- protected void operateOnRemovedElements(List elements,
- HttpServletRequest request) {
-
- if (elements.size() > 0) {
- RequestContext rctx = new RequestContext(request);
- KickstartPackageProfileCommand cmd = new
- KickstartPackageProfileCommand(
- rctx.getRequiredParam(RequestContext.KICKSTART_ID),
- rctx.getCurrentUser());
- cmd.setProfile(null);
- cmd.store();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected void operateOnAddedElements(List elements,
- HttpServletRequest request) {
-
- RequestContext rctx = new RequestContext(request);
- KickstartPackageProfileCommand cmd = new
- KickstartPackageProfileCommand(
- rctx.getRequiredParam(RequestContext.KICKSTART_ID),
- rctx.getCurrentUser());
- Long pid = null;
- if (elements.size() > 0) {
- pid = ((RhnSetElement) elements.get(0)).getElement();
- Profile p = ProfileFactory.lookupByIdAndOrg(pid,
- rctx.getCurrentUser().getOrg());
- cmd.setProfile(p);
- cmd.store();
- }
-
- }
-
- /**
- * {@inheritDoc}
- */
- public RhnSetDecl getSetDecl() {
- return RhnSetDecl.PACKAGE_PROFILES;
- }
-
- /**
- * {@inheritDoc}
- */
- protected DataResult getDataResult(User user,
- ActionForm formIn,
- HttpServletRequest request) {
-
- RequestContext rctx = new RequestContext(request);
- KickstartData ksdata = KickstartFactory
- .lookupKickstartDataByIdAndOrg(rctx.getCurrentUser().getOrg(),
- rctx.getRequiredParam(RequestContext.KICKSTART_ID));
-
- DataResult dr = ProfileManager.compatibleWithChannel(
- ksdata.getKickstartDefaults().getKstree().getChannel(),
- rctx.getCurrentUser().getOrg(), null);
- return dr;
- }
-
- /**
- * {@inheritDoc}
- */
- protected void processMethodKeys(Map map) {
- map.put(UPDATE_METHOD, "operateOnDiff");
- map.put(CLEAR_METHOD, "clearSelection");
- }
-
- protected Iterator getCurrentItemsIterator(RequestContext ctx) {
- KickstartData ksdata = KickstartFactory
- .lookupKickstartDataByIdAndOrg(ctx.getCurrentUser().getOrg(),
- ctx.getRequiredParam(RequestContext.KICKSTART_ID));
-
- List l = new LinkedList();
- if (ksdata.getKickstartDefaults().getProfile() != null) {
- l.add(ksdata.getKickstartDefaults().getProfile());
- }
- return l.iterator();
-
- }
-
- /**
- * This is executed if the clear button is pushed. Clears all associated package
- * profiles from from the selected kickstart
- *
- * @param mapping The ActionMapping used to select this instance
- * @param formIn The optional ActionForm bean for this request (if any)
- * @param request The HTTP request we are processing
- * @param response The HTTP response we are creating
- * @return Describes where and how control should be forwarded.
- */
- public ActionForward clearSelection(ActionMapping mapping,
- ActionForm formIn,
- HttpServletRequest request,
- HttpServletResponse response) {
-
- RequestContext rctx = new RequestContext(request);
- KickstartPackageProfileCommand cmd = new
- KickstartPackageProfileCommand(
- rctx.getRequiredParam(RequestContext.KICKSTART_ID),
- rctx.getCurrentUser());
- cmd.setProfile(null);
- cmd.store();
-
- ArrayList added = new ArrayList();
- ArrayList removed = new ArrayList();
-
- RhnSet currentSet = updateSet(request);
- for (Iterator it = currentSet.getElements().iterator(); it.hasNext();) {
- removed.add(it.next());
- }
- currentSet.clear();
- RhnSetManager.store(currentSet);
-
- generateUserMessage(added, removed, request);
- Map params = makeParamMap(formIn, request);
- return getStrutsDelegate().forwardParams(mapping.findForward("default"), params);
- }
-
-}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java
index bd2bd4f..2d8d53a 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartPackageProfileActionTest.java
@@ -19,7 +19,7 @@ import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.kickstart.test.KickstartDataTest;
import com.redhat.rhn.domain.rhnpackage.profile.Profile;
import com.redhat.rhn.domain.role.RoleFactory;
-import com.redhat.rhn.frontend.action.kickstart.KickstartPackageProfileSubmitAction;
+import com.redhat.rhn.frontend.action.kickstart.KickstartPackageProfileSetupAction;
import com.redhat.rhn.frontend.dto.ProfileDto;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.manager.profile.test.ProfileManagerTest;
@@ -61,7 +61,7 @@ public class KickstartPackageProfileActionTest extends RhnMockStrutsTestCase {
user.addRole(RoleFactory.ORG_ADMIN);
Profile p = ProfileManagerTest.createProfileWithServer(user);
addSelectedItem(p.getId());
- addDispatchCall(KickstartPackageProfileSubmitAction.UPDATE_METHOD);
+ addDispatchCall(KickstartPackageProfileSetupAction.UPDATE_METHOD);
setRequestPathInfo("/kickstart/KickstartPackageProfileEditSubmit");
actionPerform();
// Gotta make sure we can update the profile to the same entry twice
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java
index 8f63ec0..64a3f51 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/RadioColumnTag.java
@@ -45,6 +45,7 @@ public class RadioColumnTag extends TagSupport {
private String valueExpr;
private String headerStyle;
private String headerKey;
+ private boolean useDefault = true;
/**
* Sets the column width
@@ -135,7 +136,7 @@ public class RadioColumnTag extends TagSupport {
radio.setAttribute("type", "radio");
radio.setAttribute("name", getRadioName(listName));
radio.setAttribute("value", value);
- if (StringUtils.isBlank(getRadioValue())) {
+ if (StringUtils.isBlank(getRadioValue()) && useDefault) {
pageContext.getRequest().setAttribute(getRadioName(listName), value);
}
if (isSelected()) {
@@ -229,4 +230,20 @@ public class RadioColumnTag extends TagSupport {
width = "20px";
headerStyle = null;
}
+
+
+ /**
+ * @return Returns the setDefault.
+ */
+ public boolean isUseDefault() {
+ return useDefault;
+ }
+
+
+ /**
+ * @param setDefaultIn The setDefault to set.
+ */
+ public void setUseDefault(boolean setDefaultIn) {
+ this.useDefault = setDefaultIn;
+ }
}
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld b/java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld
index 95e8598..2450ad1 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/rhn-list.tld
@@ -242,6 +242,11 @@
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
+ <attribute>
+ <name>useDefault</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
</tag>
<tag>
<name>csv</name>
diff --git a/java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp b/java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp
index 42fc4fb..f9652fe 100644
--- a/java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp
+++ b/java/code/webapp/WEB-INF/pages/kickstart/packageprofiles.jsp
@@ -2,6 +2,8 @@
<%@ taglib uri="http://rhn.redhat.com/rhn" prefix="rhn" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
+
<html:html xhtml="true">
<body>
@@ -19,34 +21,31 @@
</p>
<c:set var="pageList" value="${requestScope.pageList}" />
- <form method="post" name="rhn_list" action="/rhn/kickstart/KickstartPackageProfileEditSubmit.do">
- <rhn:submitted />
- <rhn:list pageList="${pageList}" noDataText="kickstart.packageprofiles.jsp.noprofiles">
-
- <rhn:listdisplay set="${requestScope.set}" hiddenvars="${requestScope.newset}">
- <rhn:set type="radio" value="${current.id}" buttons="false"/>
+<rl:listset name="profiles" >
+ <rl:list emptykey="kickstart.packageprofiles.jsp.noprofiles">
+ <rl:decorator name = "PageSizeDecorator"/>
+ <rl:radiocolumn value="${current.id}" styleclass="first-column" useDefault='false'/>
- <rhn:column header="kickstart.packageprofiles.jsp.description">
+ <rl:column headerkey="kickstart.packageprofiles.jsp.description" filterattr="name">
${current.name}
- </rhn:column>
- </rhn:listdisplay>
- </rhn:list>
-<p>
-<bean:message key="kickstart.packageprofiles.jsp.tip" arg0="${ksdata.id}"/>
-</p>
-<hr />
-<input type="hidden" name="ksid" value="<c:out value="${param.ksid}"/>" />
-<div align="right">
- <html:submit property="dispatch">
- <bean:message key="kickstart.packageprofile.jsp.clear"/>
- </html:submit>
- <html:submit property="dispatch">
- <bean:message key="kickstart.packageprofile.jsp.submit"/>
- </html:submit>
-
-</div>
-
- </form>
+ </rl:column>
+ </rl:list>
+ <p>
+ <bean:message key="kickstart.packageprofiles.jsp.tip" arg0="${ksdata.id}"/>
+ </p>
+ <hr />
+ <input type="hidden" name="ksid" value="<c:out value="${param.ksid}"/>" />
+ <div align="right">
+ <html:submit property="dispatch">
+ <bean:message key="kickstart.packageprofile.jsp.clear"/>
+ </html:submit>
+ <html:submit property="dispatch">
+ <bean:message key="kickstart.packageprofile.jsp.submit"/>
+ </html:submit>
+
+ </div>
+ <rhn:submitted />
+ </rl:listset>
</div>
</body>
diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml
index 5bd6f16..6baa745 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -5160,17 +5160,10 @@
scope="request"
input="/WEB-INF/pages/kickstart/packageprofiles.jsp"
type="com.redhat.rhn.frontend.action.kickstart.KickstartPackageProfileSetupAction">
- <forward name="default"
- path="/WEB-INF/pages/kickstart/packageprofiles.jsp"/>
- </action>
-
- <action path="/kickstart/KickstartPackageProfileEditSubmit"
- scope="request"
- input="/WEB-INF/pages/kickstart/packageprofiles.jsp"
- type="com.redhat.rhn.frontend.action.kickstart.KickstartPackageProfileSubmitAction"
- parameter="dispatch">
- <forward name="default"
- path="/kickstart/KickstartPackageProfileEdit.do"/>
+ <forward name="default"
+ path="/WEB-INF/pages/kickstart/packageprofiles.jsp" />
+ <forward name="success"
+ path="/kickstart/KickstartPackageProfileEdit.do" redirect="true"/>
</action>
<action path="/kickstart/DownloadLog"
13 years, 11 months
Branch 'sha256-support' - backend/satellite_tools backend/server
by Pradeep Kilambi
backend/satellite_tools/satsync.py | 8 +++++---
backend/server/importlib/backend.py | 26 +++++++++++++++++++++-----
backend/server/importlib/backendOracle.py | 19 +++++++++++++++----
backend/server/importlib/importLib.py | 7 +++++++
backend/server/importlib/packageImport.py | 4 ++++
5 files changed, 52 insertions(+), 12 deletions(-)
New commits:
commit 7fce9af210678744fa15e59a2ebcf8d95d327e15
Author: Pradeep Kilambi <pkilambi(a)redhat.com>
Date: Tue Jun 30 16:32:17 2009 -0400
prilimary work to get the importer to handle checksum changes. More changes on the way once I have exporter done.
diff --git a/backend/satellite_tools/satsync.py b/backend/satellite_tools/satsync.py
index 4504517..f4d0d37 100644
--- a/backend/satellite_tools/satsync.py
+++ b/backend/satellite_tools/satsync.py
@@ -830,15 +830,17 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
self._diff_packages()
_query_compare_packages = """
- select p.id, p.md5sum, p.path, p.package_size,
+ select p.id, pc.checksum md5sum, p.path, p.package_size,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
- from rhnPackage p
+ from rhnPackage p,
+ rhnPackageChecksum pc
where p.name_id = lookup_package_name(:name)
and p.evr_id = lookup_evr(:epoch, :version, :release)
and p.package_arch_id = lookup_package_arch(:arch)
and (p.org_id = :org_id or
(p.org_id is null and :org_id is null))
- and p.md5sum =: md5sum
+ and pc.package_id = p.id
+ and pc.checksum =: md5sum
"""
# XXX the "is null" condition will have to change in multiorg satellites
def _diff_packages(self):
diff --git a/backend/server/importlib/backend.py b/backend/server/importlib/backend.py
index 1d39047..55d0390 100644
--- a/backend/server/importlib/backend.py
+++ b/backend/server/importlib/backend.py
@@ -686,9 +686,9 @@ class Backend:
# Insert/update the packages
tbs = self.tables['rhnPackage']
- if CFG.ENABLE_NVREA:
+ #if CFG.ENABLE_NVREA:
# Add md5sum as a primarykey if nevra is enabled
- tbs.pk.append('md5sum')
+ # tbs.pk.append('md5sum')
childTables = {
'rhnPackageProvides': 'package_id',
@@ -1132,6 +1132,7 @@ class Backend:
UPDATE rhnChannel
SET channel_product_id = :channel_product_id
WHERE id = :id
+ AND channel_product_id <> :channel_product_id
""")
statement.execute(id = channel.id,
@@ -1209,7 +1210,20 @@ class Backend:
beta = channel['channel_product_beta'])
return id
-
+
+ def processPackageChecksum(self, packages):
+ sql_checksum = self.dbmodule.prepare("""
+ insert into rhnPackageChecksum
+ (package_id, checksum_type_id, checksum)
+ values (:package_id, :checksum_type_id, :checksum)
+ """)
+ for package in packages:
+ #TODO: replace checksum_type_id once exporter sets it
+ sql_checksum.execute(package_id = package.id,
+ checksum_type_id= 1,
+ checksum = package['md5sum'])
+
+
def subscribeToChannels(self, packages, strict=0):
hash = {
'package_id' : [],
@@ -1796,10 +1810,11 @@ class Backend:
pe.evr.release release,
pa.label arch,
p.org_id,
- p.md5sum
+ pc.checksum as md5sum
from rhnChannel c,
rhnChannelPackage cp,
rhnPackage p,
+ rhnPackageChecksum pc,
rhnPackageName pn,
rhnPackageEVR pe,
rhnPackageArch pa
@@ -1807,6 +1822,7 @@ class Backend:
and p.package_arch_id = pa.id
and cp.channel_id = c.id
and cp.package_id = p.id
+ and pc.package_id = p.id
and p.name_id = pn.id
and p.evr_id = pe.id
"""
@@ -2009,7 +2025,7 @@ def _buildExternalValue(dict, entry, tableObj):
def computeDiff(hash1, hash2, diffHash, diffobj, prefix=None):
# Compare if the key-values of hash1 are a subset of hash2's
difference = 0
- ignore_keys = ['last_modified']
+ ignore_keys = ['last_modified', 'channel_product_id']
for k, v in hash1.items():
if k in ignore_keys:
diff --git a/backend/server/importlib/backendOracle.py b/backend/server/importlib/backendOracle.py
index a967676..a032478 100644
--- a/backend/server/importlib/backendOracle.py
+++ b/backend/server/importlib/backendOracle.py
@@ -79,6 +79,17 @@ class OracleBackend(Backend):
pk = ['package_id', 'name', 'text', 'time'],
attribute = 'changelog',
),
+
+ Table('rhnPackageChecksum',
+ fields = {
+ 'package_id' : DBint(),
+ 'checksum_type_id' : DBint(),
+ 'checksum' : DBstring(128)
+ },
+ pk = ['package_id', 'checksum_type_id'],
+ attribute = 'checksum',
+ ),
+
Table('rhnPackageFile',
fields = {
'package_id' : DBint(),
@@ -91,7 +102,7 @@ class OracleBackend(Backend):
'rdev' : DBint(),
'file_size' : DBint(),
'mtime' : DBdateTime(),
- 'md5' : DBstring(32),
+ 'checksum' : DBstring(32),
'linkto' : DBstring(256),
'flags' : DBint(),
'verifyflags' : DBint(),
@@ -102,7 +113,7 @@ class OracleBackend(Backend):
severityHash = {
'mtime' : 0,
'file_size' : 4,
- 'md5' : 4,
+ 'checksum' : 4,
},
),
Table('rhnPackage',
@@ -121,7 +132,7 @@ class OracleBackend(Backend):
'build_host' : DBstring(256),
'build_time' : DBdateTime(),
'source_rpm_id' : DBint(),
- 'md5sum' : DBstring(64),
+ #'md5sum' : DBstring(64),
'vendor' : DBstring(64),
'payload_format': DBstring(32),
'path' : DBstring(1000),
@@ -135,7 +146,7 @@ class OracleBackend(Backend):
nullable = ['org_id'],
severityHash = {
'path' : 1,
- 'md5sum' : 2,
+ #'md5sum' : 2,
'package_size' : 2,
'build_time' : 3,
'build_host' : 3,
diff --git a/backend/server/importlib/importLib.py b/backend/server/importlib/importLib.py
index ab9138c..1900cb6 100644
--- a/backend/server/importlib/importLib.py
+++ b/backend/server/importlib/importLib.py
@@ -260,6 +260,12 @@ class ChangeLog(Item):
def __init__(self):
Item.__init__(self, self.attributeTypes)
+class Checksum(Information):
+ attributeTypes = {
+ 'checksum_type_id' : StringType,
+ 'checksum' : StringType,
+ }
+
class IncompletePackage(BaseInformation):
attributeTypes = {
@@ -342,6 +348,7 @@ class Package(IncompletePackage):
'obsoletes' : [Dependency],
'changelog' : [ChangeLog],
'channels' : [StringType],
+ #'checksum' : [Checksum],
}
def __init__(self):
# Inherit from IncompletePackage
diff --git a/backend/server/importlib/packageImport.py b/backend/server/importlib/packageImport.py
index 90ba02e..a1fb009 100644
--- a/backend/server/importlib/packageImport.py
+++ b/backend/server/importlib/packageImport.py
@@ -112,6 +112,8 @@ class ChannelPackageSubscription(GenericPackageImport):
def submit(self):
self.backend.lookupPackages(self.batch)
+
+ self.backend.processPackageChecksum(self.batch)
try:
affected_channels = self.backend.subscribeToChannels(self.batch,
strict=self._strict_subscription)
@@ -121,6 +123,8 @@ class ChannelPackageSubscription(GenericPackageImport):
self.compute_affected_channels(affected_channels)
self.backend.update_newest_package_cache(caller=self.caller,
affected_channels=self.affected_channel_packages)
+ taskomatic.add_to_repodata_queue_for_channel_package_subscription(
+ self.affected_channels, self.batch, self.caller)
self.backend.commit()
def compute_affected_channels(self, affected_channels):
13 years, 11 months
Branch 'VADER' - java/code
by Mike McCune
java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java | 22 +++++-----
1 file changed, 12 insertions(+), 10 deletions(-)
New commits:
commit 82b73745bb76a79dc24b3d060f382a9b0d597346
Author: Mike McCune <mmccune(a)gibson.pdx.redhat.com>
Date: Tue Jun 30 13:12:18 2009 -0700
508790 - fixing tabs
diff --git a/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java b/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java
index 317055d..e3f966a 100644
--- a/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java
+++ b/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java
@@ -759,15 +759,17 @@ public class KickstartDataTest extends BaseTestCaseWithUser {
}
public void testDefaultBridge() throws Exception {
- KickstartData k = createKickstartWithChannel(user.getOrg());
- k.getKickstartDefaults().
- setVirtualizationType(KickstartVirtualizationType.kvmGuest());
-
- assertTrue(k.getDefaultVirtBridge().equals(Config.get().getDefaultKVMVirtBridge()));
-
- k.getKickstartDefaults().
- setVirtualizationType(KickstartVirtualizationType.xenPV());
-
- assertTrue(k.getDefaultVirtBridge().equals(Config.get().getDefaultXenVirtBridge()));
+ KickstartData k = createKickstartWithChannel(user.getOrg());
+ k.getKickstartDefaults().setVirtualizationType(
+ KickstartVirtualizationType.kvmGuest());
+
+ assertTrue(k.getDefaultVirtBridge().equals(
+ Config.get().getDefaultKVMVirtBridge()));
+
+ k.getKickstartDefaults().setVirtualizationType(
+ KickstartVirtualizationType.xenPV());
+
+ assertTrue(k.getDefaultVirtBridge().equals(
+ Config.get().getDefaultXenVirtBridge()));
}
}
13 years, 11 months
java/code
by Mike McCune
java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java | 22 +++++-----
1 file changed, 12 insertions(+), 10 deletions(-)
New commits:
commit 5a8020f3d83c09bb9acbd5c65cf66758a499c98e
Author: Mike McCune <mmccune(a)gibson.pdx.redhat.com>
Date: Tue Jun 30 13:12:18 2009 -0700
508790 - fixing tabs
diff --git a/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java b/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java
index 317055d..e3f966a 100644
--- a/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java
+++ b/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java
@@ -759,15 +759,17 @@ public class KickstartDataTest extends BaseTestCaseWithUser {
}
public void testDefaultBridge() throws Exception {
- KickstartData k = createKickstartWithChannel(user.getOrg());
- k.getKickstartDefaults().
- setVirtualizationType(KickstartVirtualizationType.kvmGuest());
-
- assertTrue(k.getDefaultVirtBridge().equals(Config.get().getDefaultKVMVirtBridge()));
-
- k.getKickstartDefaults().
- setVirtualizationType(KickstartVirtualizationType.xenPV());
-
- assertTrue(k.getDefaultVirtBridge().equals(Config.get().getDefaultXenVirtBridge()));
+ KickstartData k = createKickstartWithChannel(user.getOrg());
+ k.getKickstartDefaults().setVirtualizationType(
+ KickstartVirtualizationType.kvmGuest());
+
+ assertTrue(k.getDefaultVirtBridge().equals(
+ Config.get().getDefaultKVMVirtBridge()));
+
+ k.getKickstartDefaults().setVirtualizationType(
+ KickstartVirtualizationType.xenPV());
+
+ assertTrue(k.getDefaultVirtBridge().equals(
+ Config.get().getDefaultXenVirtBridge()));
}
}
13 years, 11 months
Branch 'VADER' - java/code
by Devan Goodwin
java/code/src/com/redhat/rhn/frontend/action/user/DeleteUserAction.java | 16 ++-
java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml | 7 +
java/code/src/com/redhat/rhn/frontend/xmlrpc/DeleteUserException.java | 40 +++++++
java/code/src/com/redhat/rhn/frontend/xmlrpc/user/UserHandler.java | 12 ++
java/code/src/com/redhat/rhn/manager/user/DeleteSatAdminException.java | 52 ++++++++++
java/code/src/com/redhat/rhn/manager/user/UserManager.java | 11 ++
6 files changed, 136 insertions(+), 2 deletions(-)
New commits:
commit 2d5f5fa328b2461ae4884bca56be2ce5615e6722
Author: Devan Goodwin <dgoodwin(a)redhat.com>
Date: Tue Jun 30 15:57:48 2009 -0300
508789 - Block deletion of last remaining Satellite Administrator.
diff --git a/java/code/src/com/redhat/rhn/frontend/action/user/DeleteUserAction.java b/java/code/src/com/redhat/rhn/frontend/action/user/DeleteUserAction.java
index 809f4c1..d17484b 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/user/DeleteUserAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/user/DeleteUserAction.java
@@ -21,6 +21,7 @@ import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.struts.RhnAction;
import com.redhat.rhn.manager.acl.AclManager;
+import com.redhat.rhn.manager.user.DeleteSatAdminException;
import com.redhat.rhn.manager.user.UserManager;
import org.apache.struts.action.ActionErrors;
@@ -83,7 +84,20 @@ public class DeleteUserAction extends RhnAction {
return getStrutsDelegate().forwardParams(mapping.findForward("failure"),
params);
}
- UserManager.deleteUser(loggedInUser, uid);
+
+ try {
+ UserManager.deleteUser(loggedInUser, uid);
+ }
+ catch (DeleteSatAdminException e) {
+ errors.add(ActionMessages.GLOBAL_MESSAGE,
+ new ActionMessage("user.cannot.delete.last.sat.admin"));
+ Map params = new HashMap();
+ params.put("uid", uid);
+ addErrors(request, errors);
+ return getStrutsDelegate().forwardParams(mapping.findForward("failure"),
+ params);
+ }
+
ActionMessages msg = new ActionMessages();
msg.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("user.delete", user.getLogin()));
diff --git a/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml b/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
index a1d65ac..32fafc1 100644
--- a/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
+++ b/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
@@ -1085,6 +1085,13 @@ http://www.oasis-open.org/committees/xliff/documents/xliff-core-1.1.xsd"
</context-group>
</trans-unit>
+ <trans-unit id="user.cannot.delete.last.sat.admin">
+<source>Cannot delete the last remaining satellite administrator.</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/rhn/users/DeleteUser</context>
+ </context-group>
+ </trans-unit>
+
<trans-unit id="Users/Servers">
<source>Users/Servers</source>
<context-group name="ctx">
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/DeleteUserException.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/DeleteUserException.java
new file mode 100644
index 0000000..4d5b2c8
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/DeleteUserException.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2009 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.xmlrpc;
+
+import com.redhat.rhn.FaultException;
+import com.redhat.rhn.common.localization.LocalizationService;
+
+/**
+ * Delete User Exception
+ *
+ * Thrown whenever a problem occurs deleting a user.
+ *
+ * @version $Rev$
+ */
+public class DeleteUserException extends FaultException {
+
+ /**
+ * Constructor
+ * @param resourceKey Resource bundle key for error message to return.
+ */
+ public DeleteUserException(String resourceKey) {
+ super(2601, "Error deleting user", LocalizationService.getInstance().
+ getMessage(resourceKey, new Object [] {}));
+ }
+
+}
+
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/user/UserHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/user/UserHandler.java
index 15ae77f..71fcd0c 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/user/UserHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/user/UserHandler.java
@@ -14,6 +14,10 @@
*/
package com.redhat.rhn.frontend.xmlrpc.user;
+import com.redhat.rhn.frontend.xmlrpc.DeleteUserException;
+
+import com.redhat.rhn.manager.user.DeleteSatAdminException;
+
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -535,7 +539,13 @@ public class UserHandler extends BaseHandler {
User loggedInUser = getLoggedInUser(sessionKey);
ensureOrgAdmin(loggedInUser);
User target = XmlRpcUserHelper.getInstance().lookupTargetUser(loggedInUser, login);
- UserManager.deleteUser(loggedInUser, target.getId());
+
+ try {
+ UserManager.deleteUser(loggedInUser, target.getId());
+ }
+ catch (DeleteSatAdminException e) {
+ throw new DeleteUserException("user.cannot.delete.last.sat.admin");
+ }
return 1;
}
diff --git a/java/code/src/com/redhat/rhn/manager/user/DeleteSatAdminException.java b/java/code/src/com/redhat/rhn/manager/user/DeleteSatAdminException.java
new file mode 100644
index 0000000..c1d4482
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/manager/user/DeleteSatAdminException.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2009 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.manager.user;
+
+import com.redhat.rhn.common.RhnRuntimeException;
+
+import com.redhat.rhn.domain.user.User;
+
+/**
+ * DeleteSatAdminException
+ *
+ * Exception thrown when we cannot delete a Satellite administrator. (presumably because
+ * they are the last remaining)
+ *
+ * @version $Rev$
+ */
+public class DeleteSatAdminException extends RhnRuntimeException {
+
+ private User targetUser;
+
+ /**
+ * Constructor
+ *
+ * @param targetUserIn User we could not delete.
+ */
+ public DeleteSatAdminException(User targetUserIn) {
+ super();
+ this.targetUser = targetUserIn;
+ }
+
+ /**
+ * Return the target user we could not delete.
+ *
+ * @return target user
+ */
+ public User getTargetUser() {
+ return targetUser;
+ }
+
+}
diff --git a/java/code/src/com/redhat/rhn/manager/user/UserManager.java b/java/code/src/com/redhat/rhn/manager/user/UserManager.java
index b2c26e1..ae9208f 100644
--- a/java/code/src/com/redhat/rhn/manager/user/UserManager.java
+++ b/java/code/src/com/redhat/rhn/manager/user/UserManager.java
@@ -40,6 +40,7 @@ import com.redhat.rhn.frontend.dto.SystemSearchResult;
import com.redhat.rhn.frontend.listview.PageControl;
import com.redhat.rhn.frontend.taglibs.list.decorators.PageSizeDecorator;
import com.redhat.rhn.manager.BaseManager;
+import com.redhat.rhn.manager.SatManager;
import org.apache.commons.lang.BooleanUtils;
import org.apache.log4j.Logger;
@@ -450,6 +451,16 @@ public class UserManager extends BaseManager {
pex.setLocalizedSummary(ls.getMessage("permission.jsp.summary.deleteuser"));
throw pex;
}
+
+ // Do not allow deletion of the last Satellite Administrator:
+ User toDelete = UserFactory.lookupById(loggedInUser, targetUid);
+ if (toDelete.hasRole(RoleFactory.SAT_ADMIN)) {
+ if (SatManager.getActiveSatAdmins().size() == 1) {
+ log.warn("Cannot delete the last Satellite Administrator");
+ throw new DeleteSatAdminException(toDelete);
+ }
+ }
+
CallableMode m = ModeFactory.getCallableMode("User_queries",
"delete_user");
Map inParams = new HashMap();
13 years, 11 months