java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java | 8 ++--
java/code/src/com/redhat/rhn/manager/system/SystemManager.java | 17 ++++++++++
2 files changed, 22 insertions(+), 3 deletions(-)
New commits:
commit 83f534f7dac8430e19c846cbaa698a49b379e848
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Nov 30 17:01:21 2009 -0500
542830 - fixing three api calls that were using very inefficient queries to use the
same queries that were used in sat 5.2
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
index d8b2ca6..7c15aec 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
@@ -521,7 +521,7 @@ public class SystemHandler extends BaseHandler {
*/
public Object[] listSystems(String sessionKey) throws FaultException {
User loggedInUser = getLoggedInUser(sessionKey);
- DataResult<SystemOverview> dr = SystemManager.systemList(loggedInUser,
null);
+ DataResult<SystemOverview> dr = SystemManager.systemListShort(loggedInUser,
null);
dr.elaborate();
return dr.toArray();
}
@@ -1323,7 +1323,7 @@ public class SystemHandler extends BaseHandler {
// Get the logged in user
User loggedInUser = getLoggedInUser(sessionKey);
User target = XmlRpcUserHelper.getInstance().lookupTargetUser(loggedInUser,
login);
- return getUserSystemsList(target);
+ return SystemManager.systemListShort(target, null);
}
/**
@@ -1341,11 +1341,13 @@ public class SystemHandler extends BaseHandler {
public List listUserSystems(String sessionKey) {
// Get the logged in user
User loggedInUser = getLoggedInUser(sessionKey);
- return getUserSystemsList(loggedInUser);
+ return SystemManager.systemListShort(loggedInUser, null);
}
/**
* Private helper method to get a list of systems for a particular user
+ * The query used is very inefficient. Only use it when you need a lot
+ * of information about the systems.
* @param user The user to lookup
* @return An array of SystemOverview objects representing a system
*/
diff --git a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
index 8f2bc99..74a3b2c 100644
--- a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
+++ b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
@@ -287,6 +287,23 @@ public class SystemManager extends BaseManager {
Map elabParams = new HashMap();
return makeDataResult(params, elabParams, pc, m);
}
+
+ /**
+ * Returns list of all systems visible to user.
+ * This is meant to be fast and only gets the id, name, and last checkin
+ * @param user Currently logged in user.
+ * @param pc PageControl
+ * @return list of SystemOverviews.
+ */
+ public static DataResult systemListShort(User user, PageControl pc) {
+ SelectMode m = ModeFactory.getMode("System_queries",
"xmlrpc_visible_to_user",
+ SystemOverview.class);
+ Map params = new HashMap();
+ params.put("user_id", user.getId());
+ Map elabParams = new HashMap();
+
+ return makeDataResult(params, elabParams, pc, m);
+ }
/**
* Returns a list of all systems
Show replies by thread