on Thursday 10 March 2011 Justin Sherrill wrote:

> > ---
> > a/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAct
> >ion.java +++
> > b/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAct
> >ion.java @@ -30,6 +30,7 @@ import org.apache.struts.util.LabelValueBean;
> >
> >   import java.util.Iterator;
> >   import java.util.List;
> > +import java.net.*;
> 
> We generally don't include entire packages without our code.  Please
> only include  the specific classes that you are using.

I have attached a new patch. The new patch does not have that import anymore.

> While this works, typically we would prefer to use the request to get
> the hostname.  HttpServletRequest.getLocalName() should get you the
> hostname that the request comes in on.  You would have to change the
> method signature of processCommandSetters to accept the request, but
> that is a better way to get the hostname IMHO.

I did it like you suggested. I hope I'll find some time to enhance cobbler in 
the future to parse kopts and replaces variables but for the moment we can 
live with the solution I have attached I think.

Patch attached.
 
-- 
ciao, Uwe Gansert

Uwe Gansert
SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg)
Business: http://www.suse.de/~ug
From 9628facefd3201c5b85cfc0934eba9d496e02df4 Mon Sep 17 00:00:00 2001
From: Uwe Gansert <u...@suse.de>
Date: Thu, 28 Oct 2010 16:59:04 +0200
Subject: [PATCH] * added support for SUSE autoinstallation and some cleanup
 - added support for SUSE autoinstallation
 - fixed some indentations and java import
 - add request to method signature

---
 .../rhn/domain/kickstart/KickstartInstallType.java |    8 ++++++++
 .../rhn/domain/kickstart/KickstartableTree.java    |    8 ++++++++
 .../redhat/rhn/frontend/action/BaseEditAction.java |    4 ++--
 .../action/kickstart/tree/BaseTreeAction.java      |   20 ++++++++++++++++++--
 .../BasePreservationListEditAction.java            |    5 ++++-
 .../cobbler/CobblerDistroCreateCommand.java        |    4 ++++
 java/code/src/org/cobbler/Distro.java              |    3 +++
 7 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/java/code/src/com/redhat/rhn/domain/kickstart/KickstartInstallType.java b/java/code/src/com/redhat/rhn/domain/kickstart/KickstartInstallType.java
index a3f613a..ef92ce6 100644
--- a/java/code/src/com/redhat/rhn/domain/kickstart/KickstartInstallType.java
+++ b/java/code/src/com/redhat/rhn/domain/kickstart/KickstartInstallType.java
@@ -31,6 +31,7 @@ public class KickstartInstallType extends BaseDomainHelper {
     public static final String RHEL_6 = "rhel_6";
     public static final String FEDORA = "fedora";
     public static final String GENERIC = "generic";
+    public static final String SUSE = "suse";
 
     private Long id;
     private String label;
@@ -94,6 +95,13 @@ public class KickstartInstallType extends BaseDomainHelper {
     }
 
     /**
+     * @return true if the installer type is suse.
+     */
+    public boolean isSUSE() {
+        return SUSE.equals(getLabel());
+    }
+
+    /**
      * @return Returns the id.
      */
     public Long getId() {
diff --git a/java/code/src/com/redhat/rhn/domain/kickstart/KickstartableTree.java b/java/code/src/com/redhat/rhn/domain/kickstart/KickstartableTree.java
index 41e3202..510609f 100644
--- a/java/code/src/com/redhat/rhn/domain/kickstart/KickstartableTree.java
+++ b/java/code/src/com/redhat/rhn/domain/kickstart/KickstartableTree.java
@@ -277,6 +277,10 @@ public class KickstartableTree extends BaseDomainHelper {
         else if (arch.equals("channel-ppc")) {
             return StringUtil.addPath(getAbsolutePath(), "/ppc/ppc64/vmlinuz");
         }
+        else if ( this.installType.isSUSE() )
+        {
+            return StringUtil.addPath(getAbsolutePath(), "/boot/" + this.getChannel().getChannelArch().getName() + "/loader/linux");
+        }
         else {
             return StringUtil.addPath(getAbsolutePath(), "/images/pxeboot/vmlinuz");
         }
@@ -296,6 +300,10 @@ public class KickstartableTree extends BaseDomainHelper {
         else if (arch.equals("channel-ppc")) {
             return StringUtil.addPath(getAbsolutePath(), "/ppc/ppc64/ramdisk.image.gz");
         }
+        else if ( this.installType.isSUSE() )
+        {
+            return StringUtil.addPath(getAbsolutePath(), "/boot/" + this.getChannel().getChannelArch().getName() + "/loader/initrd");
+        }
         else {
             return StringUtil.addPath(getAbsolutePath(), "/images/pxeboot/initrd.img");
         }
diff --git a/java/code/src/com/redhat/rhn/frontend/action/BaseEditAction.java b/java/code/src/com/redhat/rhn/frontend/action/BaseEditAction.java
index fb72fee..8851a8e 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/BaseEditAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/BaseEditAction.java
@@ -58,7 +58,7 @@ public abstract class BaseEditAction extends RhnAction {
                 getStrutsDelegate().saveMessages(request, errors);
             }
             else {
-                ValidatorError verrors = processCommandSetters(opr, form);
+                ValidatorError verrors = processCommandSetters(opr, form, request);
 
                 if (verrors == null) {
                     verrors = opr.store();
@@ -114,7 +114,7 @@ public abstract class BaseEditAction extends RhnAction {
      * @return TODO
      */
     protected abstract ValidatorError processCommandSetters(PersistOperation opr,
-            DynaActionForm form);
+            DynaActionForm form, HttpServletRequest request);
 
 
     /**
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAction.java
index a2cbbdd..79603dd 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAction.java
@@ -12,6 +12,9 @@
  * granted to use or replicate Red Hat trademarks that are incorporated
  * in this software or its documentation.
  */
+/*
+ * Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
+ */
 package com.redhat.rhn.frontend.action.kickstart.tree;
 
 import com.redhat.rhn.common.validator.ValidatorError;
@@ -31,6 +34,8 @@ import org.apache.struts.util.LabelValueBean;
 import java.util.Iterator;
 import java.util.List;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * TreeCreate class for creating Kickstart Trees
  * @version $Rev: 1 $
@@ -81,7 +86,8 @@ public abstract class BaseTreeAction extends BaseEditAction {
     }
 
     protected ValidatorError processCommandSetters(PersistOperation operation,
-                                                            DynaActionForm form) {
+                                                            DynaActionForm form,
+                                                            HttpServletRequest request) {
         BaseTreeEditOperation bte = (BaseTreeEditOperation) operation;
 
         String label = form.getString(LABEL);
@@ -103,7 +109,17 @@ public abstract class BaseTreeAction extends BaseEditAction {
             lookupKickstartInstallTypeByLabel(form.getString(INSTALL_TYPE));
         bte.setInstallType(type);
 
-        bte.setKernelOptions(form.getString(KERNEL_OPTS));
+        if (type.isSUSE()) {
+            String kopts = form.getString(POST_KERNEL_OPTS);
+            if (kopts.contains("install=")) {
+                kopts = kopts + " install=http://"; + request.getLocalName() +
+                    "/ks/dist/" + form.getString(LABEL);
+            }
+            bte.setKernelOptions(kopts);
+        }
+        else {
+            bte.setKernelOptions(form.getString(KERNEL_OPTS));
+        }
         bte.setPostKernelOptions(form.getString(POST_KERNEL_OPTS));
 
         return null;
diff --git a/java/code/src/com/redhat/rhn/frontend/action/systems/provisioning/BasePreservationListEditAction.java b/java/code/src/com/redhat/rhn/frontend/action/systems/provisioning/BasePreservationListEditAction.java
index 6535db8..2570984 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/systems/provisioning/BasePreservationListEditAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/systems/provisioning/BasePreservationListEditAction.java
@@ -14,6 +14,8 @@
  */
 package com.redhat.rhn.frontend.action.systems.provisioning;
 
+import javax.servlet.http.HttpServletRequest;
+
 import com.redhat.rhn.common.validator.ValidatorError;
 import com.redhat.rhn.frontend.action.BaseEditAction;
 import com.redhat.rhn.frontend.struts.RequestContext;
@@ -43,7 +45,8 @@ public abstract class BasePreservationListEditAction extends BaseEditAction {
     }
 
     protected ValidatorError processCommandSetters(PersistOperation opr,
-                                                        DynaActionForm form) {
+                                                        DynaActionForm form,
+                                                        HttpServletRequest request) {
         BaseFileListEditCommand bopr = (BaseFileListEditCommand) opr;
         bopr.setLabel(form.getString(LABEL));
         bopr.updateFiles(form.getString(FILES_STRING));
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/cobbler/CobblerDistroCreateCommand.java b/java/code/src/com/redhat/rhn/manager/kickstart/cobbler/CobblerDistroCreateCommand.java
index 5f1a4f6..f7e405d 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/cobbler/CobblerDistroCreateCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/cobbler/CobblerDistroCreateCommand.java
@@ -83,6 +83,10 @@ public class CobblerDistroCreateCommand extends CobblerDistroCommand {
             ksmeta.put("org", tree.getOrgId().toString());
         }
 
+        if( tree.getInstallType().isSUSE() ) {
+            ksmeta.put("autoyast", "true");
+        }
+
         Distro distro = Distro.create(CobblerXMLRPCHelper.getConnection(user),
                 tree.getCobblerDistroName(), tree.getKernelPath(),
                 tree.getInitrdPath(), ksmeta);
diff --git a/java/code/src/org/cobbler/Distro.java b/java/code/src/org/cobbler/Distro.java
index ff4940b..f12ced8 100644
--- a/java/code/src/org/cobbler/Distro.java
+++ b/java/code/src/org/cobbler/Distro.java
@@ -53,6 +53,9 @@ public class Distro extends CobblerObject {
         distro.modify(NAME, name);
         distro.setKernel(kernel);
         distro.setInitrd(initrd);
+        if( ksmeta.containsKey( "autoyast" ) ) {
+            distro.setBreed( "suse" );
+        }
         distro.setKsMeta(ksmeta);
         distro.save();
         distro = lookupByName(client, name);
-- 
1.6.4.2

_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to