Hey,

attached is a patch that should take care that only kickstartable channels are 
actually
returned by the getKickstartableChannels() method in the ChannelFactory class.

In addition to the existing query, it is checked if the 'anaconda' package is 
included
in all of the returned channels. If that's not the right package to check for 
or not the
way to go in general, then we can fix it of course.

Regards,
Johannes

-- 
SUSE LINUX Products GmbH, HRB 16746 (AG Nürnberg)
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer
>From 0457b2ae9ed9dd83ef18df3dafa2885598038291 Mon Sep 17 00:00:00 2001
From: Johannes Renner <jren...@suse.de>
Date: Wed, 13 Mar 2013 17:00:01 +0100
Subject: [PATCH] Kickstartable channels should contain the anaconda
 package

---
 .../src/com/redhat/rhn/common/conf/ConfigDefaults.java    |    1 +
 .../src/com/redhat/rhn/domain/channel/ChannelFactory.java |   13 ++++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java b/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
index 651afe1..653c18e 100644
--- a/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
+++ b/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
@@ -114,6 +114,7 @@ public class ConfigDefaults {
 
     public static final String DEFAULT_KICKSTART_PACKAGE_NAME = "spacewalk-koan";
     public static final String KICKSTART_PACKAGE_NAME = "kickstart_package";
+    public static final String DEFAULT_ANACONDA_PACKAGE_NAME = "anaconda";
 
     public static final String MOUNT_POINT = "mount_point";
     public static final String KICKSTART_MOUNT_POINT = "kickstart_mount_point";
diff --git a/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java b/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java
index 3c47018..5509f2b 100644
--- a/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java
@@ -14,6 +14,7 @@
  */
 package com.redhat.rhn.domain.channel;
 
+import com.redhat.rhn.common.conf.ConfigDefaults;
 import com.redhat.rhn.common.db.datasource.CallableMode;
 import com.redhat.rhn.common.db.datasource.DataResult;
 import com.redhat.rhn.common.db.datasource.ModeFactory;
@@ -25,6 +26,7 @@ import com.redhat.rhn.domain.kickstart.KickstartableTree;
 import com.redhat.rhn.domain.org.Org;
 import com.redhat.rhn.domain.rhnpackage.Package;
 import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.manager.channel.ChannelManager;
 
 import org.apache.log4j.Logger;
 import org.hibernate.Criteria;
@@ -631,8 +633,17 @@ public class ChannelFactory extends HibernateFactory {
     public static List<Channel> getKickstartableChannels(Org org) {
         Map params = new HashMap();
         params.put("org_id", org.getId());
-        return singleton.listObjectsByNamedQuery(
+        List<Channel> channels = singleton.listObjectsByNamedQuery(
                 "Channel.kickstartableChannels", params, false);
+        // Only return channels containing the anaconda package
+        for (Channel c : channels) {
+            List packages = ChannelManager.listLatestPackagesEqual(c.getId(),
+                    ConfigDefaults.DEFAULT_ANACONDA_PACKAGE_NAME);
+            if (packages.size() <= 0) {
+                channels.remove(c);
+            }
+        }
+        return channels;
     }
 
     /**
-- 
1.7.10.4

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

Reply via email to