java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml | 13 ++++++----
java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java | 7 +++--
java/code/src/com/redhat/rhn/manager/token/ActivationKeyManager.java | 2 -
3 files changed, 15 insertions(+), 7 deletions(-)
New commits:
commit 0fa36ec1156540598204caa51dd24ff98d158545
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Tue Jun 30 20:01:16 2009 -0400
509037 - fixing issue where looking for packages in child channels would result in base channels
this was seen when a base channel existed with rhncfg packages in it and config deployment was enabled for an activation key
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
index 88cecb1..6dc72be 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
@@ -1046,14 +1046,19 @@ SELECT DISTINCT C.id
</query>
</mode>
-<mode name="channels_with_package">
- <query params="package">
+<mode name="child_channels_with_package">
+ <query params="package, org_id">
SELECT DISTINCT CP.channel_id as id
- FROM rhnChannelPackage CP
+ FROM rhnChannelPackage CP
inner join rhnPackage P on CP.package_id = P.id
inner join rhnPackageName PN on P.name_id = PN.id
+ inner join rhnChannel C on C.id = CP.channel_id
+ inner join rhnAvailableChannels AC on AC.channel_id = C.id
WHERE
- PN.name = :package
+ PN.name = :package and
+ C.parent_channel is not null and
+ AC.org_id = :org_id
+
</query>
</mode>
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
index bb51633..83e8d73 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
@@ -1507,12 +1507,15 @@ public class ChannelManager extends BaseManager {
* Finds the ids of all child channels that contain
* a package with the given name. Will only all the child channels.
* @param packageName The exact name of the package sought for.
+ * @param org the org this is in
* @return The list of ids
*/
- public static List<Long> findChildChannelsWithPackage(String packageName) {
- SelectMode m = ModeFactory.getMode("Channel_queries", "channels_with_package");
+ public static List<Long> findChildChannelsWithPackage(String packageName, Org org) {
+ SelectMode m = ModeFactory.getMode("Channel_queries",
+ "child_channels_with_package");
Map params = new HashMap();
params.put("package", packageName);
+ params.put("org_id", org.getId());
//whittle down until we have the piece we want.
DataResult<Map<String, Long>> dr = m.execute(params);
diff --git a/java/code/src/com/redhat/rhn/manager/token/ActivationKeyManager.java b/java/code/src/com/redhat/rhn/manager/token/ActivationKeyManager.java
index 8467e61..ee4e5b4 100644
--- a/java/code/src/com/redhat/rhn/manager/token/ActivationKeyManager.java
+++ b/java/code/src/com/redhat/rhn/manager/token/ActivationKeyManager.java
@@ -492,7 +492,7 @@ public class ActivationKeyManager {
*/
List <Long> cids;
if (key.getBaseChannel() == null) {
- cids = ChannelManager.findChildChannelsWithPackage(packageName);
+ cids = ChannelManager.findChildChannelsWithPackage(packageName, key.getOrg());
}
else {
//we know its the channel we want if it has the rhncfg package in it.
14 years, 9 months