On 03/22/2013 02:55 PM, Michael Calmer wrote:
> Hi,
> 
> please do not apply these patches. I found out, that it is not correct.
> It removes the channels at more places than needed.

I guess the initial patch would be fine, as long as we add some additional
small fixes on top. Here is another single patch containing everything.

Basically what we are doing is to distinguish between "kickstartable" and
"autoinstallable" channels. It would be really helpful though to get some
feedback from you about using the anaconda package as a filter criteria.

Thank you,
Johannes

-- 
SUSE LINUX Products GmbH, HRB 16746 (AG Nürnberg)
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer
>From 3420bb7304b4522984b3d26871ca7a3f9106575a Mon Sep 17 00:00:00 2001
From: Johannes Renner <jren...@suse.de>
Date: Thu, 4 Apr 2013 14:45:27 +0200
Subject: [PATCH] Kickstartable vs. autoinstallable channels

---
 .../com/redhat/rhn/common/conf/ConfigDefaults.java |    1 +
 .../redhat/rhn/domain/channel/ChannelFactory.java  |   23 ++++++++++++++++++++
 .../kickstart/tree/BaseTreeEditOperation.java      |    2 +-
 3 files changed, 25 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 ccb27db..103f60f 100644
--- a/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
+++ b/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
@@ -111,6 +111,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 b37c19a..f057088 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;
@@ -26,6 +27,7 @@ import com.redhat.rhn.domain.kickstart.crypto.SslCryptoKey;
 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;
@@ -34,6 +36,7 @@ import org.hibernate.criterion.CriteriaSpecification;
 import org.hibernate.criterion.Projections;
 import org.hibernate.criterion.Restrictions;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -673,6 +676,26 @@ public class ChannelFactory extends HibernateFactory {
      * @return List of Channel objects
      */
     public static List<Channel> getKickstartableChannels(Org org) {
+        List<Channel> ret = new ArrayList<Channel>();
+        List<Channel> channels = getAutoinstallableChannels(org);
+        // 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) {
+                ret.add(c);
+            }
+        }
+        return ret;
+    }
+
+    /**
+     * Get the List of channels that are autoinstallable to the
+     * Org passed in.
+     * @param org who you want to get autoinstallable channels
+     * @return List of Channel objects
+     */
+    public static List<Channel> getAutoinstallableChannels(Org org) {
         Map params = new HashMap();
         params.put("org_id", org.getId());
         return singleton.listObjectsByNamedQuery(
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/tree/BaseTreeEditOperation.java b/java/code/src/com/redhat/rhn/manager/kickstart/tree/BaseTreeEditOperation.java
index c23e7f9..9ab68ad 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/tree/BaseTreeEditOperation.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/tree/BaseTreeEditOperation.java
@@ -235,7 +235,7 @@ public abstract class BaseTreeEditOperation extends BasePersistOperation {
      */
     public List getKickstartableChannels() {
         return ChannelFactory.
-            getKickstartableChannels(user.getOrg());
+            getAutoinstallableChannels(user.getOrg());
     }
 
     /**
-- 
1.7.10.4

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

Reply via email to