Hi all Attached is a patch to implement this API call.
Comments/criticisms welcome. CC -- RHCE#805007969328369
From cd3e390a1b16b35d999860231577fe74f641a093 Mon Sep 17 00:00:00 2001 From: Colin Coe <[email protected]> Date: Fri, 26 Mar 2010 21:48:46 +0800 Subject: [PATCH] Implement 'channel.software.listChildren' API call --- .../common/db/datasource/xml/Channel_queries.xml | 9 ++++++- .../channel/software/ChannelSoftwareHandler.java | 27 ++++++++++++++++++++ .../redhat/rhn/manager/channel/ChannelManager.java | 14 ++++++++++ 3 files changed, 49 insertions(+), 1 deletions(-) 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 e3e2330..e38086d 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 @@ -1172,7 +1172,14 @@ GROUP BY C.id, C.name </query> </mode> - +<mode name="child_channels_of_channel" class="com.redhat.rhn.frontend.dto.ChildChannelDto"> + <query params="cid"> + SELECT DISTINCT id, label + FROM rhnChannel + WHERE parent_channel = :cid + ORDER BY id + </query> +</mode> </datasource_modes> diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java index de46f02..bf3faa8 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java @@ -1987,4 +1987,31 @@ public class ChannelSoftwareHandler extends BaseHandler { } + /** + * List the children of a channel + * @param sessionKey the session key + * @param channelLabel the channel label + * @return list of channel id's and labels + * + * @xmlrpc.doc List the children of a channel + * @xmlrpc.param #session_key() + * @xmlrpc.param #param_desc("string", "channelLabel", "the label of the channel") + * @xmlrpc.returntype + * #array() + * string + * string + * #array_end() + * + */ + + public Object[] listChildren(String sessionKey, String channelLabel) { + // Get Logged in user + User loggedInUser = getLoggedInUser(sessionKey); + channelAdminPermCheck(loggedInUser); + Channel chan = lookupChannelByLabel(loggedInUser, channelLabel); + + DataResult dr = ChannelManager.childChannels(chan.getId()); + return dr.toArray(); + } + } 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 66a51ee..f191786 100644 --- a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java +++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java @@ -2813,4 +2813,18 @@ public class ChannelManager extends BaseManager { return logPath + possibleList.get(possibleList.size() - 1); } + /** + * Returns a DataResult containing maps representing the child channels of a + * particular channel. + * @param channelId The server in question. + * @return Returns a DataResult of maps representing the child channels a + * particular channel. + */ + public static DataResult childChannels(Long channelId) { + Map params = new HashMap(); + params.put("cid", channelId); + SelectMode m = ModeFactory.getMode("Channel_queries", "child_channels_of_channel", Map.class); + return m.execute(params); + } + } -- 1.5.5.6
_______________________________________________ Spacewalk-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/spacewalk-devel
