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