/** * Copyright (c) 2009--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.kickstart; import com.redhat.rhn.common.validator.ValidatorError; import com.redhat.rhn.frontend.struts.RequestContext; import com.redhat.rhn.manager.kickstart.BaseKickstartCommand; import com.redhat.rhn.manager.kickstart.KickstartTroubleshootingCommand; import org.apache.commons.lang.BooleanUtils; import org.apache.struts.action.DynaActionForm; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; /** * Handles display and update of Kickstart -> System Details -> Troubleshooting * * @version $Rev $ */ public class KickstartTroubleshootingEditAction extends BaseKickstartEditAction { public static final String BOOTLOADER_OPTIONS = "bootloaders"; public static final String KERNEL_PARAMS = "kernelParams"; public static final String BOOTLOADER = "bootloader"; public static final String UPDATE_METHOD = "kickstart.troubleshooting.jsp.updatekickstart"; public static final String NONCHROOTPOST = "nonChrootPost"; public static final String VERBOSEUP2DATE = "verboseUp2date"; /** * * {@inheritDoc} */ protected void setupFormValues(RequestContext ctx, DynaActionForm form, BaseKickstartCommand cmdIn) { KickstartTroubleshootingCommand cmd = (KickstartTroubleshootingCommand) cmdIn; ArrayList bootloaders = getBootLoaders(cmd); ctx.getRequest().setAttribute(BOOTLOADER_OPTIONS, bootloaders); form.set(BOOTLOADER, cmd.getBootloaderType()); form.set(KERNEL_PARAMS, cmd.getKernelParams()); form.set(NONCHROOTPOST, cmd.getNonChrootPost()); form.set(VERBOSEUP2DATE, cmd.getVerboseUp2date()); } /** * * {@inheritDoc} */ protected ValidatorError processFormValues(HttpServletRequest request, DynaActionForm form, BaseKickstartCommand cmd) { ValidatorError retval = null; KickstartTroubleshootingCommand tscmd = (KickstartTroubleshootingCommand) cmd; tscmd.setBootloaderType(form.getString(BOOTLOADER)); String kernelParams = form.getString(KERNEL_PARAMS); if (kernelParams.length() > 128) { retval = new ValidatorError("kickstart.troubleshooting." + "validation.kernelparams.too_long"); } tscmd.setKernelParams(form.getString(KERNEL_PARAMS)); tscmd.getKickstartData().setNonChrootPost( BooleanUtils.toBoolean((Boolean) form.get(NONCHROOTPOST))); tscmd.getKickstartData().setVerboseUp2date( BooleanUtils.toBoolean((Boolean) form.get(VERBOSEUP2DATE))); return retval; } /** * * {@inheritDoc} */ protected String getSuccessKey() { return "kickstart.troubleshooting.success"; } /** * * {@inheritDoc} */ protected BaseKickstartCommand getCommand(RequestContext ctx) { return new KickstartTroubleshootingCommand( ctx.getRequiredParam(RequestContext.KICKSTART_ID), ctx.getCurrentUser()); } /** * Returns formatted and ordered list of bootloaders. (Just GRUB * and LILO for the forseeable future) * @return List of bootloaders. */ private ArrayList getBootLoaders(KickstartTroubleshootingCommand cmd) { /* return [ { display => "GRUB", value => "grub" }, { display => "LILO", value => "lilo " }, ]; */ Map grub = new HashMap(); grub.put("display", "GRUB"); grub.put("value", "grub"); ArrayList displayList = new ArrayList(); displayList.add(grub); if (!cmd.getKickstartData().isRhel5OrGreater()) { Map lilo = new HashMap(); lilo.put("display", "LILO"); lilo.put("value", "lilo"); displayList.add(lilo); } return displayList; } }