java/code/src/com/redhat/rhn/common/db/datasource/WriteMode.java | 2
java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml | 11
java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml | 48 ++--
java/code/src/com/redhat/rhn/domain/action/Action.java | 34 +-
java/code/src/com/redhat/rhn/domain/action/ActionFactory.java | 2
java/code/src/com/redhat/rhn/domain/action/ActionType.java | 2
java/code/src/com/redhat/rhn/domain/server/ServerFactory.java | 46 +++
java/code/src/com/redhat/rhn/domain/server/Server_legacyUser.hbm.xml | 41 ++-
java/code/src/com/redhat/rhn/domain/server/test/ServerFactoryTest.java | 30 ++
java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageRemoveAction.java | 25 +-
java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageVerifyAction.java | 2
java/code/src/com/redhat/rhn/frontend/events/SsmInstallPackagesAction.java | 41 +--
java/code/src/com/redhat/rhn/frontend/events/SsmRemovePackagesAction.java | 36 +--
java/code/src/com/redhat/rhn/frontend/events/SsmUpgradePackagesAction.java | 21 -
java/code/src/com/redhat/rhn/manager/action/ActionManager.java | 119 +++++-----
java/code/src/com/redhat/rhn/manager/system/SystemManager.java | 20 +
java/code/src/com/redhat/rhn/manager/system/test/SystemManagerTest.java | 2
17 files changed, 318 insertions(+), 164 deletions(-)
New commits:
commit 087f2b34edfc7b6e526281cf5adea6672e1a1706
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 18:37:53 2009 -0400
bug fix test
diff --git a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
index 4969ac3..2fcbdd3 100644
--- a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
+++ b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
@@ -1318,7 +1318,7 @@ public class ActionManager extends BaseManager {
private static Action scheduleAction(User scheduler, ActionType type, String name,
Date earliestAction, Set<Long> serverIds) {
- type = (ActionType) ActionFactory.reload(type);
+ type = ActionFactory.lookupActionTypeByLabel(type.getLabel());
Action action = createScheduledAction(scheduler, type, name, earliestAction);
ActionFactory.save(action);
action = (Action) ActionFactory.reload(action);
commit a8db51009e8cf2ceea586b3f8bc79934a23917eb
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 18:27:57 2009 -0400
bug fix test
diff --git a/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java b/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java
index 2a0b728..26876cf 100644
--- a/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java
@@ -484,7 +484,7 @@ public class ActionFactory extends HibernateFactory {
Map params = new HashMap();
params.put("label", label);
return (ActionType)
- singleton.lookupObjectByNamedQuery("ActionType.findByLabel", params, false);
+ singleton.lookupObjectByNamedQuery("ActionType.findByLabel", params, true);
}
/**
diff --git a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
index ec15a66..4969ac3 100644
--- a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
+++ b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
@@ -1318,7 +1318,7 @@ public class ActionManager extends BaseManager {
private static Action scheduleAction(User scheduler, ActionType type, String name,
Date earliestAction, Set<Long> serverIds) {
-
+ type = (ActionType) ActionFactory.reload(type);
Action action = createScheduledAction(scheduler, type, name, earliestAction);
ActionFactory.save(action);
action = (Action) ActionFactory.reload(action);
commit 8dac1b59be6e4059155763c7a8a918f71135524a
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 18:16:26 2009 -0400
bug fix test
diff --git a/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java b/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java
index 26876cf..2a0b728 100644
--- a/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java
@@ -484,7 +484,7 @@ public class ActionFactory extends HibernateFactory {
Map params = new HashMap();
params.put("label", label);
return (ActionType)
- singleton.lookupObjectByNamedQuery("ActionType.findByLabel", params, true);
+ singleton.lookupObjectByNamedQuery("ActionType.findByLabel", params, false);
}
/**
diff --git a/java/code/src/com/redhat/rhn/domain/server/test/ServerFactoryTest.java b/java/code/src/com/redhat/rhn/domain/server/test/ServerFactoryTest.java
index c3c89ae..edbb939 100644
--- a/java/code/src/com/redhat/rhn/domain/server/test/ServerFactoryTest.java
+++ b/java/code/src/com/redhat/rhn/domain/server/test/ServerFactoryTest.java
@@ -68,7 +68,9 @@ import com.redhat.rhn.testing.UserTestUtils;
import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -963,5 +965,33 @@ public class ServerFactoryTest extends RhnBaseTestCase {
}
+ public void testListLinuxSystems() throws Exception {
+
+ Long[] longs = new Long[11818];
+ List<Long> systemIds = Arrays.asList(longs);
+
+
+ ArrayList<Long> tmpList = new ArrayList<Long>();
+ List<Long> toRet = new ArrayList<Long>();
+ tmpList.addAll(systemIds);
+
+
+ int total = 0;
+
+ for (int i = 0; i < systemIds.size();) {
+ int initial = i;
+ int fin = i + 500 < systemIds.size() ? i + 500 : systemIds.size();
+ List<Long> sublist = tmpList.subList(i, fin);
+
+
+ total += fin-initial;
+ i = fin;
+ }
+ System.out.println(total);
+
+ }
+
+
+
}
diff --git a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
index 5c23650..ec15a66 100644
--- a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
+++ b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
@@ -1268,8 +1268,8 @@ public class ActionManager extends BaseManager {
public static PackageAction schedulePackageVerify(User scheduler,
Server srvr, List<Map<String, Long>> pkgs, Date earliest) {
return (PackageAction) schedulePackageAction(scheduler, pkgs,
- //ActionFactory.TYPE_PACKAGES_VERIFY, earliest, srvr);
- ActionFactory.lookupActionTypeByLabel("packages.verify"), earliest, srvr);
+ ActionFactory.TYPE_PACKAGES_VERIFY, earliest, srvr);
+ // ActionFactory.lookupActionTypeByLabel("packages.verify"), earliest, srvr);
}
/**
* Schedules one or more package installation actions for the given server.
commit 41b8b8132d3011b3348ece9aec983b48d037b650
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 17:39:02 2009 -0400
bug fix test
diff --git a/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java b/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java
index 1cda1ae..26876cf 100644
--- a/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/action/ActionFactory.java
@@ -480,7 +480,7 @@ public class ActionFactory extends HibernateFactory {
* @return Returns the ActionType corresponding to label
* @throws Exception
*/
- private static ActionType lookupActionTypeByLabel(String label) {
+ public static ActionType lookupActionTypeByLabel(String label) {
Map params = new HashMap();
params.put("label", label);
return (ActionType)
diff --git a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
index ee8268f..5c23650 100644
--- a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
+++ b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
@@ -1268,7 +1268,8 @@ public class ActionManager extends BaseManager {
public static PackageAction schedulePackageVerify(User scheduler,
Server srvr, List<Map<String, Long>> pkgs, Date earliest) {
return (PackageAction) schedulePackageAction(scheduler, pkgs,
- ActionFactory.TYPE_PACKAGES_VERIFY, earliest, srvr);
+ //ActionFactory.TYPE_PACKAGES_VERIFY, earliest, srvr);
+ ActionFactory.lookupActionTypeByLabel("packages.verify"), earliest, srvr);
}
/**
* Schedules one or more package installation actions for the given server.
@@ -1320,7 +1321,6 @@ public class ActionManager extends BaseManager {
Action action = createScheduledAction(scheduler, type, name, earliestAction);
ActionFactory.save(action);
-
action = (Action) ActionFactory.reload(action);
commit a0cc7f2be5a3b42d2544398328e3c1375e94f0d5
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 17:23:27 2009 -0400
fixing some broken hibernate objects
diff --git a/java/code/src/com/redhat/rhn/domain/action/Action.java b/java/code/src/com/redhat/rhn/domain/action/Action.java
index 38db34e..9afcf98 100644
--- a/java/code/src/com/redhat/rhn/domain/action/Action.java
+++ b/java/code/src/com/redhat/rhn/domain/action/Action.java
@@ -331,16 +331,16 @@ public class Action extends BaseDomainHelper implements Serializable {
return false;
}
Action castOther = (Action) other;
- return new EqualsBuilder().append(id, castOther.getId())
- .append(org, castOther.getOrg())
- .append(name, castOther.getName())
- .append(earliestAction, castOther.getEarliestAction())
- .append(version, castOther.getVersion())
- .append(archived, castOther.getArchived())
- .append(created, castOther.getCreated())
- .append(modified, castOther.getModified())
- .append(prerequisite, castOther.getPrerequisite())
- .append(actionType, castOther.getActionType())
+ return new EqualsBuilder().append(this.getId(), castOther.getId())
+ .append(this.getOrg(), castOther.getOrg())
+ .append(this.getName(), castOther.getName())
+ .append(this.getEarliestAction(), castOther.getEarliestAction())
+ .append(this.getVersion(), castOther.getVersion())
+ .append(this.getArchived(), castOther.getArchived())
+ .append(this.getCreated(), castOther.getCreated())
+ .append(this.getModified(), castOther.getModified())
+ .append(this.getPrerequisite(), castOther.getPrerequisite())
+ .append(this.getActionType(), castOther.getActionType())
.isEquals();
}
@@ -348,11 +348,15 @@ public class Action extends BaseDomainHelper implements Serializable {
* {@inheritDoc}
*/
public int hashCode() {
- return new HashCodeBuilder().append(id).append(org).append(name)
- .append(earliestAction).append(version)
- .append(archived).append(created)
- .append(modified).append(prerequisite)
- .append(actionType).toHashCode();
+ return new HashCodeBuilder().append(this.getId()).append(this.getOrg())
+ .append(this.getName())
+ .append(this.getEarliestAction())
+ .append(this.getVersion())
+ .append(this.getArchived())
+ .append(this.getCreated())
+ .append(this.getModified())
+ .append(this.getPrerequisite())
+ .append(this.getActionType()).toHashCode();
}
/**
commit 74c4adf65eb84c65ab3a695fefb0b9ffefe90a6d
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 17:22:31 2009 -0400
revert of change
diff --git a/java/code/src/com/redhat/rhn/domain/action/ActionType.java b/java/code/src/com/redhat/rhn/domain/action/ActionType.java
index 6d8b404..527686c 100644
--- a/java/code/src/com/redhat/rhn/domain/action/ActionType.java
+++ b/java/code/src/com/redhat/rhn/domain/action/ActionType.java
@@ -102,11 +102,7 @@ public class ActionType {
/**
* {@inheritDoc}
*/
- public boolean equals(Object o) {
- if (o == this) {
- return true;
- }
-
+ public boolean equals(Object o) {
if (o == null || !(o instanceof ActionType)) {
return false;
}
commit 4240dd4b6395ab2f8d53e1733e24e93e3badad10
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 17:04:16 2009 -0400
test fix
diff --git a/java/code/src/com/redhat/rhn/domain/action/ActionType.java b/java/code/src/com/redhat/rhn/domain/action/ActionType.java
index 162d89f..6d8b404 100644
--- a/java/code/src/com/redhat/rhn/domain/action/ActionType.java
+++ b/java/code/src/com/redhat/rhn/domain/action/ActionType.java
@@ -103,6 +103,10 @@ public class ActionType {
* {@inheritDoc}
*/
public boolean equals(Object o) {
+ if (o == this) {
+ return true;
+ }
+
if (o == null || !(o instanceof ActionType)) {
return false;
}
commit b18cb1986829f686047de7e10fb007a8efe5ae5d
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 15:43:11 2009 -0400
fixing an off by one error in writeMode
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/WriteMode.java b/java/code/src/com/redhat/rhn/common/db/datasource/WriteMode.java
index 4858144..dcfa291 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/WriteMode.java
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/WriteMode.java
@@ -49,7 +49,7 @@ public class WriteMode extends BaseMode {
inClause.size() - subStart : CachedStatement.BATCH_SIZE;
List subClause = inClause.subList(subStart, subStart + subLength);
toReturn += getQuery().executeUpdate(parameters, subClause);
- subStart += subLength + 1;
+ subStart += subLength;
}
return toReturn;
}
commit b1660bf8c4a528369772e1054b936deec9026129
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 15:14:44 2009 -0400
fixing a small off by one error in loop calulcation
diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
index fbacee5..3a01bcc 100644
--- a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
@@ -791,7 +791,7 @@ public class ServerFactory extends HibernateFactory {
List<Long> sublist = tmpList.subList(i, fin);
toRet.addAll(ServerFactory.getSession().getNamedQuery(query).
setParameterList("sids", sublist).list());
- i = fin+1;
+ i = fin;
}
return toRet;
commit 439f6678c6f9c4187e7ec2009faf464c503f35a6
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Tue Sep 29 17:14:53 2009 -0400
workaround for hibernate not handling in caluses of more than 1000
diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
index 06787c9..fbacee5 100644
--- a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
@@ -771,12 +771,31 @@ public class ServerFactory extends HibernateFactory {
* @return list of system ids that are solaris systems
*/
public static List<Long> listSolarisSystems(Collection<Long> systemIds) {
+ return listGenericSystems(systemIds, "Server.listSolarisSystems");
+ }
+
+
+
+ private static List<Long> listGenericSystems(Collection<Long> systemIds, String query) {
//Hibernate can't handle empty lists for in clauses, silly hibernate
if (systemIds.isEmpty()) {
return Collections.EMPTY_LIST;
}
- return ServerFactory.getSession().getNamedQuery("Server.listSolarisSystems").
- setParameterList("sids", systemIds).list();
+ ArrayList<Long> tmpList = new ArrayList<Long>();
+ List<Long> toRet = new ArrayList<Long>();
+ tmpList.addAll(systemIds);
+
+ for (int i = 0; i < systemIds.size();) {
+ int initial = i;
+ int fin = i + 500 < systemIds.size() ? i + 500 : systemIds.size();
+ List<Long> sublist = tmpList.subList(i, fin);
+ toRet.addAll(ServerFactory.getSession().getNamedQuery(query).
+ setParameterList("sids", sublist).list());
+ i = fin+1;
+ }
+
+ return toRet;
+
}
/**
@@ -786,13 +805,7 @@ public class ServerFactory extends HibernateFactory {
* @return list of system ids that are linux systems
*/
public static List<Long> listLinuxSystems(Collection<Long> systemIds) {
- //Hibernate can't handle empty lists for in clauses, silly hibernate
- if (systemIds.isEmpty()) {
- return Collections.EMPTY_LIST;
- }
- return ServerFactory.getSession().getNamedQuery("Server.listRedHatSystems").
- setParameterList("sids", systemIds).list();
-
+ return listGenericSystems(systemIds, "Server.listRedHatSystems");
}
}
commit 124fc7cfada4b29b636f157d83e0687f2bc4f554
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Tue Sep 29 11:53:47 2009 -0400
adding workaround for hibernate oddity/bug
diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
index 7ce8f0b..06787c9 100644
--- a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
@@ -40,6 +40,7 @@ import org.hibernate.Session;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -770,6 +771,10 @@ public class ServerFactory extends HibernateFactory {
* @return list of system ids that are solaris systems
*/
public static List<Long> listSolarisSystems(Collection<Long> systemIds) {
+ //Hibernate can't handle empty lists for in clauses, silly hibernate
+ if (systemIds.isEmpty()) {
+ return Collections.EMPTY_LIST;
+ }
return ServerFactory.getSession().getNamedQuery("Server.listSolarisSystems").
setParameterList("sids", systemIds).list();
}
@@ -781,6 +786,10 @@ public class ServerFactory extends HibernateFactory {
* @return list of system ids that are linux systems
*/
public static List<Long> listLinuxSystems(Collection<Long> systemIds) {
+ //Hibernate can't handle empty lists for in clauses, silly hibernate
+ if (systemIds.isEmpty()) {
+ return Collections.EMPTY_LIST;
+ }
return ServerFactory.getSession().getNamedQuery("Server.listRedHatSystems").
setParameterList("sids", systemIds).list();
commit 68a978e87adb6b06b45c9dbc6f782e56728fb02e
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 13:34:05 2009 -0400
adjusting query to be a bit faster
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
index 6f5d4e8..3c59835 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
@@ -586,16 +586,10 @@ ORDER BY UPPER(NVL(S.NAME, '(none)')), S.ID
<query name="system_set_remove_package_query" />
<elaborator params="user_id, package_set_label" multiple="t">
SELECT DISTINCT SP.server_id id,
- PN.id || '|' || PE.id || '|' || PA.id AS ID_COMBO
- FROM rhnPackageEVR PE,
- rhnPackageName PN,
- rhnServerPackage SP,
- rhnPackageArch PA
+ SP.name_id || '|' || SP.evr_id || '|' || SP.package_arch_id AS ID_COMBO
+ FROM rhnServerPackage SP
WHERE SP.server_id IN (%s)
- AND SP.name_id = PN.id
- AND PN.id || '|' || PE.id || '|' || PA.id IN (SELECT element || '|' || element_two || '|' || element_three FROM rhnSet WHERE user_id = :user_id AND label = :package_set_label)
- AND SP.evr_id = PE.id
- AND SP.package_arch_id = PA.id
+ AND SP.name_id || '|' || SP.evr_id || '|' || SP.package_arch_id IN (SELECT element || '|' || element_two || '|' || element_three FROM rhnSet WHERE user_id = :user_id AND label = :package_set_label)
</elaborator>
</mode>
commit ec6f716d8a2cff17fa1e6f758bb0d9159a59f639
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Oct 5 13:00:50 2009 -0400
REVERT -- adding debugging
diff --git a/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageRemoveAction.java b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageRemoveAction.java
index 0b241f9..f4b6b61 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageRemoveAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageRemoveAction.java
@@ -145,18 +145,26 @@ public class SchedulePackageRemoveAction extends RhnListAction implements Listab
HttpServletRequest request,
HttpServletResponse response) {
+ Logger log = Logger.getLogger(this.getClass());
+
RequestContext context = new RequestContext(request);
StrutsDelegate strutsDelegate = getStrutsDelegate();
User user = context.getLoggedInUser();
-
+ log.fatal("A");
// Load the date selected by the user
Date earliest = getStrutsDelegate().readDatePicker((DynaActionForm) formIn,
"date", DatePicker.YEAR_RANGE_POSITIVE);
log.debug("Getting package removal data.");
+
+
+
// Parse through all of the results
- DataResult result = (DataResult) getResult(context, true);
+ log.fatal("B");
+ DataResult result = (DataResult) getResult(context, true);
+ log.fatal("C");
result.elaborate();
+ log.fatal("D");
log.debug("Publishing schedule package remove event to message queue.");
SsmRemovePackagesEvent event = new SsmRemovePackagesEvent(user.getId(), earliest,
commit 95596ce0a9de626a25f99a4556e017abd7af68ac
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Sep 28 20:23:18 2009 -0400
525549 - fixing issue where SSM package operations would run out of memory
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml
index 32e63d1..1fbb305 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml
@@ -294,4 +294,15 @@ SELECT 1
</query>
</mode>
+<write-mode name="insert_server_actions">
+ <query params="parent_id, status_id, tries">
+INSERT INTO rhnServerAction (server_id, action_id, status, REMAINING_TRIES)
+ select s.id as server_id, :parent_id as action_id,
+ :status_id as status, :tries as REMAINING_TRIES
+ from rhnServer s
+ where s.id in (%s)
+ </query>
+</write-mode>
+
+
</datasource_modes>
diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
index 9f691e1..7ce8f0b 100644
--- a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
@@ -39,6 +39,7 @@ import org.hibernate.Session;
import java.sql.Types;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -762,4 +763,27 @@ public class ServerFactory extends HibernateFactory {
"ServerSnapshot.findTags", params);
return snaps;
}
+
+ /**
+ * Filter out a list of systemIds with ones that are solaris systems
+ * @param systemIds list of system ids
+ * @return list of system ids that are solaris systems
+ */
+ public static List<Long> listSolarisSystems(Collection<Long> systemIds) {
+ return ServerFactory.getSession().getNamedQuery("Server.listSolarisSystems").
+ setParameterList("sids", systemIds).list();
+ }
+
+ /**
+ * Filter out a list of systemIds with ones that are linux systems
+ * (i.e. not solaris systems)
+ * @param systemIds list of system ids
+ * @return list of system ids that are linux systems
+ */
+ public static List<Long> listLinuxSystems(Collection<Long> systemIds) {
+ return ServerFactory.getSession().getNamedQuery("Server.listRedHatSystems").
+ setParameterList("sids", systemIds).list();
+
+ }
+
}
diff --git a/java/code/src/com/redhat/rhn/domain/server/Server_legacyUser.hbm.xml b/java/code/src/com/redhat/rhn/domain/server/Server_legacyUser.hbm.xml
index 0dbadcd..d1ea620 100644
--- a/java/code/src/com/redhat/rhn/domain/server/Server_legacyUser.hbm.xml
+++ b/java/code/src/com/redhat/rhn/domain/server/Server_legacyUser.hbm.xml
@@ -89,36 +89,36 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
</set>
<many-to-one name="org" class="com.redhat.rhn.domain.org.OrgImpl"
- column="org_id"/>
+ column="org_id" lazy="proxy"/>
<many-to-one name="creator" class="com.redhat.rhn.domain.user.legacy.LegacyRhnUserImpl"
- column="creator_id"/>
+ column="creator_id" lazy="proxy"/>
<many-to-one name="serverArch"
class="com.redhat.rhn.domain.server.ServerArch"
- column="server_arch_id"/>
+ column="server_arch_id" lazy="proxy"/>
<many-to-one name="provisionState"
class="com.redhat.rhn.domain.common.ProvisionState"
- column="provision_state_id" cascade="save-update"/>
+ column="provision_state_id" cascade="save-update" lazy="proxy"/>
<one-to-one name="serverInfo"
- class="com.redhat.rhn.domain.server.ServerInfo" cascade="all"/>
+ class="com.redhat.rhn.domain.server.ServerInfo" cascade="all" lazy="proxy"/>
<one-to-one name="cpu" class="com.redhat.rhn.domain.server.CPU"
- property-ref="server" cascade="all"/>
+ property-ref="server" cascade="all" lazy="proxy"/>
<one-to-one name="lock" class="com.redhat.rhn.domain.server.ServerLock"
- cascade="all"/>
+ cascade="all" lazy="proxy"/>
<one-to-one name="serverUuid" class="com.redhat.rhn.domain.server.ServerUuid"
- cascade="all"/>
+ cascade="all" lazy="proxy"/>
<one-to-one name="proxyInfo" class="com.redhat.rhn.domain.server.ProxyInfo"
- cascade="all"/>
+ cascade="all" lazy="proxy"/>
<one-to-one name="pushClient" class="com.redhat.rhn.domain.server.PushClient"
- property-ref="server" />
+ property-ref="server" lazy="proxy" />
<!--
we want to access the ram object via the field directly.
@@ -127,16 +127,16 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
create a RAM object on a server.
-->
<one-to-one name="ram" class="com.redhat.rhn.domain.server.Ram"
- property-ref="server" cascade="all" access="field"/>
+ property-ref="server" cascade="all" access="field" lazy="proxy"/>
<one-to-one name="dmi" class="com.redhat.rhn.domain.server.Dmi"
- property-ref="server" cascade="all"/>
+ property-ref="server" cascade="all" lazy="proxy"/>
<one-to-one name="location" class="com.redhat.rhn.domain.server.Location"
- property-ref="server" cascade="all"/>
+ property-ref="server" cascade="all" lazy="proxy" />
<one-to-one name="virtualInstance"
class="com.redhat.rhn.domain.server.VirtualInstance"
property-ref="guestSystem"
- cascade="save-update"/>
+ cascade="save-update" lazy="proxy"/>
<set name="history" cascade="all" lazy="true" inverse="true">
<key column="server_id"/>
@@ -179,6 +179,19 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<query name="Server.findByIdsAndOrgId">
<![CDATA[from com.redhat.rhn.domain.server.Server as s where ORG_ID = :orgId and s.id in (:serverIds)]]>
</query>
+
+ <query name="Server.listRedHatSystems">
+ <![CDATA[ select s.id
+ from com.redhat.rhn.domain.server.Server as s
+ where s.id in (:sids) and s.serverArch.archType.label != 'sysv-solaris']]>
+ </query>
+
+ <query name="Server.listSolarisSystems">
+ <![CDATA[ select s.id
+ from com.redhat.rhn.domain.server.Server as s
+ where s.id in (:sids) and s.serverArch.archType.label = 'sysv-solaris']]>
+ </query>
+
<sql-query name="Server.findVirtPlatformHostsByOrg">
<![CDATA[select s.id as id, s.name as name, count(vi.id) as count
diff --git a/java/code/src/com/redhat/rhn/frontend/events/SsmInstallPackagesAction.java b/java/code/src/com/redhat/rhn/frontend/events/SsmInstallPackagesAction.java
index 77c4024..09441fc 100644
--- a/java/code/src/com/redhat/rhn/frontend/events/SsmInstallPackagesAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/events/SsmInstallPackagesAction.java
@@ -14,28 +14,27 @@
*/
package com.redhat.rhn.frontend.events;
+import com.redhat.rhn.common.localization.LocalizationService;
+import com.redhat.rhn.common.messaging.EventMessage;
+import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.domain.user.UserFactory;
+import com.redhat.rhn.frontend.action.SetLabels;
+import com.redhat.rhn.frontend.dto.EssentialServerDto;
+import com.redhat.rhn.frontend.dto.PackageListItem;
+import com.redhat.rhn.manager.action.ActionManager;
+import com.redhat.rhn.manager.rhnset.RhnSetDecl;
+import com.redhat.rhn.manager.ssm.SsmOperationManager;
+import com.redhat.rhn.manager.system.SystemManager;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
-import java.util.Set;
-import java.util.List;
import java.util.ArrayList;
-import java.util.Map;
import java.util.Date;
import java.util.LinkedList;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import com.redhat.rhn.common.messaging.EventMessage;
-import com.redhat.rhn.common.localization.LocalizationService;
-import com.redhat.rhn.manager.ssm.SsmOperationManager;
-import com.redhat.rhn.manager.action.ActionManager;
-import com.redhat.rhn.manager.rhnset.RhnSetDecl;
-import com.redhat.rhn.manager.system.SystemManager;
-import com.redhat.rhn.domain.user.User;
-import com.redhat.rhn.domain.server.Server;
-import com.redhat.rhn.domain.server.ServerFactory;
-import com.redhat.rhn.frontend.dto.PackageListItem;
-import com.redhat.rhn.frontend.dto.EssentialServerDto;
-import com.redhat.rhn.frontend.action.SetLabels;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* Schedules package installations on systems in the SSM.
@@ -92,17 +91,13 @@ public class SsmInstallPackagesAction extends AbstractDatabaseAction {
PackageListItem.toKeyMaps(packageListItems);
// Create one action for all servers to which the packages are installed
- List<Server> actionServers = new ArrayList<Server>(servers.size());
List<Long> serverIds = new LinkedList<Long>();
for (EssentialServerDto dto : servers) {
serverIds.add(dto.getId());
}
- log.debug("Looking up server objects.");
- actionServers.addAll(ServerFactory.lookupByIdsAndUser(serverIds, user));
- log.debug("Scheduling actions.");
-
- ActionManager.schedulePackageInstall(user, actionServers,
+ log.debug("Scheduling actions.");
+ ActionManager.schedulePackageInstall(user, serverIds,
packageListData, earliest);
log.debug("Done scheduling package installations.");
diff --git a/java/code/src/com/redhat/rhn/frontend/events/SsmRemovePackagesAction.java b/java/code/src/com/redhat/rhn/frontend/events/SsmRemovePackagesAction.java
index 55ee1dc..ee3fafa 100644
--- a/java/code/src/com/redhat/rhn/frontend/events/SsmRemovePackagesAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/events/SsmRemovePackagesAction.java
@@ -14,26 +14,25 @@
*/
package com.redhat.rhn.frontend.events;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.apache.log4j.Logger;
import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.common.localization.LocalizationService;
import com.redhat.rhn.common.messaging.EventMessage;
-import com.redhat.rhn.domain.server.Server;
-import com.redhat.rhn.domain.server.ServerFactory;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.domain.user.UserFactory;
import com.redhat.rhn.frontend.dto.PackageListItem;
import com.redhat.rhn.manager.action.ActionManager;
-import com.redhat.rhn.manager.ssm.SsmOperationManager;
import com.redhat.rhn.manager.rhnset.RhnSetDecl;
+import com.redhat.rhn.manager.ssm.SsmOperationManager;
+
+import org.apache.log4j.Logger;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* Handles removing packages from servers in the SSM.
@@ -91,8 +90,8 @@ public class SsmRemovePackagesAction extends AbstractDatabaseAction {
// total of all packages selected
Set<PackageListItem> allPackages = new HashSet<PackageListItem>();
- // Looking up all the server objects in Hibernate was *brutally* slow here:
- List<Long> allServerIds = new LinkedList<Long>();
+
+ Set<Long> allServerIds = new HashSet<Long>();
// Iterate the data, which is essentially each unique package/server combination
// to remove. Note that this is only for servers that we have marked as having the
@@ -118,16 +117,17 @@ public class SsmRemovePackagesAction extends AbstractDatabaseAction {
}
}
- List<Server> allServers = new ArrayList<Server>(result.size());
- allServers.addAll(ServerFactory.lookupByIdsAndUser(allServerIds, user));
log.debug("Converting data to maps.");
- List<PackageListItem> allPackagesList = new ArrayList<PackageListItem>(allPackages);
+ List<PackageListItem> allPackagesList =
+ new ArrayList<PackageListItem>(allPackages);
List<Map<String, Long>> packageListData =
PackageListItem.toKeyMaps(allPackagesList);
log.debug("Scheduling package removals.");
- ActionManager.schedulePackageRemoval(user, allServers, packageListData, earliest);
+ ActionManager.schedulePackageRemoval(user, allServerIds,
+ packageListData, earliest);
+
log.debug("Done.");
}
diff --git a/java/code/src/com/redhat/rhn/frontend/events/SsmUpgradePackagesAction.java b/java/code/src/com/redhat/rhn/frontend/events/SsmUpgradePackagesAction.java
index 5647b81..af22b5b 100644
--- a/java/code/src/com/redhat/rhn/frontend/events/SsmUpgradePackagesAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/events/SsmUpgradePackagesAction.java
@@ -14,22 +14,22 @@
*/
package com.redhat.rhn.frontend.events;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import org.apache.log4j.Logger;
import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.common.localization.LocalizationService;
import com.redhat.rhn.common.messaging.EventMessage;
-import com.redhat.rhn.domain.server.Server;
-import com.redhat.rhn.domain.server.ServerFactory;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.domain.user.UserFactory;
import com.redhat.rhn.manager.action.ActionManager;
-import com.redhat.rhn.manager.ssm.SsmOperationManager;
import com.redhat.rhn.manager.rhnset.RhnSetDecl;
+import com.redhat.rhn.manager.ssm.SsmOperationManager;
+
+import org.apache.log4j.Logger;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
/**
* Handles removing packages from servers in the SSM.
@@ -103,8 +103,7 @@ public class SsmUpgradePackagesAction extends AbstractDatabaseAction {
serverIds.add(serverId);
}
- List<Server> serverList = ServerFactory.lookupByIdsAndUser(serverIds, user);
- ActionManager.schedulePackageUpgrades(user, serverList, packageListItems, earliest);
+ ActionManager.schedulePackageUpgrades(user, serverIds, packageListItems, earliest);
if (log.isDebugEnabled()) {
log.debug("Time to schedule all actions: " +
diff --git a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
index b98c1a2..ee8268f 100644
--- a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
+++ b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
@@ -54,6 +54,7 @@ import com.redhat.rhn.domain.rhnpackage.PatchSet;
import com.redhat.rhn.domain.rhnset.RhnSet;
import com.redhat.rhn.domain.rhnset.RhnSetElement;
import com.redhat.rhn.domain.server.Server;
+import com.redhat.rhn.domain.server.ServerFactory;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.dto.PackageMetadata;
import com.redhat.rhn.frontend.listview.PageControl;
@@ -1103,41 +1104,32 @@ public class ActionManager extends BaseManager {
* Schedules one or more package removal actions on one or more servers.
*
* @param scheduler user scheduling the action.
- * @param servers servers from which to remove the packages
+ * @param serverIds servers from which to remove the packages
* @param pkgs list of packages to be removed.
* @param earliestAction date of earliest action to be executed
*/
public static void schedulePackageRemoval(User scheduler,
- List<Server> servers, List<Map<String, Long>> pkgs, Date earliestAction) {
+ Collection<Long> serverIds, List<Map<String, Long>> pkgs, Date earliestAction) {
// Different handling for package removal on solaris v. rhel, so split out
// the servers first in case the list is mixed.
- List<Server> rhelServers = new ArrayList<Server>();
- List<Server> solarisServers = new ArrayList<Server>();
-
- for (Server server : servers) {
- if (server.isSolaris()) {
- solarisServers.add(server);
- }
- else {
- rhelServers.add(server);
- }
- }
+ Set<Long> rhelServers = new HashSet<Long>();
+ rhelServers.addAll(ServerFactory.listLinuxSystems(serverIds));
+ Set<Long> solarisServers = new HashSet<Long>();
+ solarisServers.addAll(ServerFactory.listSolarisSystems(serverIds));
// Since the solaris v. rhel distinction results in a different action type,
// we'll end up with 2 actions created if the server list is mixed
if (!rhelServers.isEmpty()) {
- Server[] s = rhelServers.toArray(new Server[rhelServers.size()]);
schedulePackageAction(scheduler, pkgs, ActionFactory.TYPE_PACKAGES_REMOVE,
- earliestAction, s);
+ earliestAction, rhelServers);
}
if (!solarisServers.isEmpty()) {
- Server[] s = solarisServers.toArray(new Server[solarisServers.size()]);
schedulePackageAction(scheduler, pkgs, ActionFactory.TYPE_SOLARISPKGS_REMOVE,
- earliestAction, s);
+ earliestAction, solarisServers);
}
- }
+ }
/**
* Schedules one or more package upgrade actions for the given server.
@@ -1157,13 +1149,13 @@ public class ActionManager extends BaseManager {
* Schedules one or more package upgrade actions for the given servers.
* Note: package upgrade = package install
* @param scheduler User scheduling the action.
- * @param srvr list of servers on which the action affects.
+ * @param sids list of server ids on which the action affects.
* @param pkgs The set of packages to be removed.
* @param earliestAction Date of earliest action to be executed
*/
public static void schedulePackageUpgrades(User scheduler,
- List<Server> srvr, List<Map<String, Long>> pkgs, Date earliestAction) {
- schedulePackageInstall(scheduler, srvr, pkgs, earliestAction);
+ List<Long> sids, List<Map<String, Long>> pkgs, Date earliestAction) {
+ schedulePackageInstall(scheduler, sids, pkgs, earliestAction);
}
/**
@@ -1203,39 +1195,30 @@ public class ActionManager extends BaseManager {
/**
* Schedules one or more package installation actions on one or more servers.
* @param scheduler user scheduling the action.
- * @param servers servers for which the packages should be installed
+ * @param serverIds server ids for which the packages should be installed
* @param pkgs set of packages to be removed.
* @param earliestAction date of earliest action to be executed
*/
public static void schedulePackageInstall(User scheduler,
- List<Server> servers, List pkgs, Date earliestAction) {
+ Collection<Long> serverIds, List pkgs, Date earliestAction) {
// Different handling for package installs on solaris v. rhel, so split out
// the servers first in case the list is mixed.
- List<Server> rhelServers = new ArrayList<Server>();
- List<Server> solarisServers = new ArrayList<Server>();
-
- for (Server server : servers) {
- if (server.isSolaris()) {
- solarisServers.add(server);
- }
- else {
- rhelServers.add(server);
- }
- }
+ Set<Long> rhelServers = new HashSet<Long>();
+ rhelServers.addAll(ServerFactory.listLinuxSystems(serverIds));
+ Set<Long> solarisServers = new HashSet<Long>();
+ solarisServers.addAll(ServerFactory.listSolarisSystems(serverIds));
// Since the solaris v. rhel distinction results in a different action type,
// we'll end up with 2 actions created if the server list is mixed
if (!rhelServers.isEmpty()) {
- Server[] s = rhelServers.toArray(new Server[rhelServers.size()]);
schedulePackageAction(scheduler, pkgs, ActionFactory.TYPE_PACKAGES_UPDATE,
- earliestAction, s);
+ earliestAction, rhelServers);
}
if (!solarisServers.isEmpty()) {
- Server[] s = solarisServers.toArray(new Server[solarisServers.size()]);
schedulePackageAction(scheduler, pkgs, ActionFactory.TYPE_SOLARISPKGS_INSTALL,
- earliestAction, s);
+ earliestAction, solarisServers);
}
}
@@ -1285,8 +1268,7 @@ public class ActionManager extends BaseManager {
public static PackageAction schedulePackageVerify(User scheduler,
Server srvr, List<Map<String, Long>> pkgs, Date earliest) {
return (PackageAction) schedulePackageAction(scheduler, pkgs,
- ActionFactory.TYPE_PACKAGES_VERIFY, earliest, srvr
- );
+ ActionFactory.TYPE_PACKAGES_VERIFY, earliest, srvr);
}
/**
* Schedules one or more package installation actions for the given server.
@@ -1334,19 +1316,28 @@ public class ActionManager extends BaseManager {
}
private static Action scheduleAction(User scheduler, ActionType type, String name,
- Date earliestAction, Server... servers) {
+ Date earliestAction, Set<Long> serverIds) {
Action action = createScheduledAction(scheduler, type, name, earliestAction);
+ ActionFactory.save(action);
- for (Server server : servers) {
- ServerAction sa = new ServerAction();
- sa.setStatus(ActionFactory.STATUS_QUEUED);
- sa.setRemainingTries(REMAINING_TRIES);
- sa.setServer(server);
+ action = (Action) ActionFactory.reload(action);
+
+
+ Map params = new HashMap();
+ params.put("status_id", ActionFactory.STATUS_QUEUED.getId());
+ params.put("tries", REMAINING_TRIES);
+ params.put("parent_id", action.getId());
+ //params.put("sid", sid);
+
+ WriteMode m = ModeFactory.getWriteMode("Action_queries",
+ "insert_server_actions");
+ List<Long> sidList = new ArrayList<Long>();
+ sidList.addAll(serverIds);
+ m.executeUpdate(params, sidList);
- action.addServerAction(sa);
- sa.setParentAction(action);
- }
+
+ //action.addServerAction(sa);
return action;
}
@@ -1612,10 +1603,34 @@ public class ActionManager extends BaseManager {
* @return The action that has been scheduled.
*/
public static Action schedulePackageAction(User scheduler,
+ List pkgs,
+ ActionType type,
+ Date earliestAction,
+ Server...servers) {
+ Set<Long> serverIds = new HashSet<Long>();
+ for (Server s : servers) {
+ serverIds.add(s.getId());
+ }
+ return schedulePackageAction(scheduler, pkgs, type, earliestAction, serverIds);
+ }
+
+ /**
+ * Schedules a package action of the given type for the given server with the
+ * packages given as a list.
+ * @param scheduler The user scheduling the action.
+ * @param pkgs A list of maps containing keys 'name_id', 'evr_id' and
+ * optional 'arch_id' with Long values.
+ * @param type The type of the package action. One of the static types found in
+ * ActionFactory
+ * @param earliestAction The earliest time that this action could happen.
+ * @param serverIds The server ids that this action is for.
+ * @return The action that has been scheduled.
+ */
+ public static Action schedulePackageAction(User scheduler,
List pkgs,
ActionType type,
Date earliestAction,
- Server... servers) {
+ Set<Long> serverIds) {
String name = "";
if (type.equals(ActionFactory.TYPE_PACKAGES_REMOVE) ||
@@ -1633,7 +1648,7 @@ public class ActionManager extends BaseManager {
name = "Package Synchronization";
}
- Action action = scheduleAction(scheduler, type, name, earliestAction, servers);
+ Action action = scheduleAction(scheduler, type, name, earliestAction, serverIds);
ActionFactory.save(action);
if (pkgs != null) {
commit 26fe0e3f7232671ff7eafb4f051eaeaebb2afc6b
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Fri Oct 2 11:02:12 2009 -0400
a couple fixes
diff --git a/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageVerifyAction.java b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageVerifyAction.java
index 44994b1..9a5b537 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageVerifyAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageVerifyAction.java
@@ -138,7 +138,7 @@ public class SchedulePackageVerifyAction extends RhnAction implements Listable {
}
DataResult results = SystemManager.ssmSystemPackagesToRemove(user,
- RhnSetDecl.SSM_VERIFY_PACKAGES_LIST.getLabel());
+ RhnSetDecl.SSM_VERIFY_PACKAGES_LIST.getLabel(), false);
TagHelper.bindElaboratorTo("groupList", results.getElaborator(), request);
diff --git a/java/code/src/com/redhat/rhn/manager/system/test/SystemManagerTest.java b/java/code/src/com/redhat/rhn/manager/system/test/SystemManagerTest.java
index ac2f86b..bb210d2 100644
--- a/java/code/src/com/redhat/rhn/manager/system/test/SystemManagerTest.java
+++ b/java/code/src/com/redhat/rhn/manager/system/test/SystemManagerTest.java
@@ -1169,7 +1169,7 @@ public class SystemManagerTest extends RhnBaseTestCase {
// Test
DataResult result =
- SystemManager.ssmSystemPackagesToRemove(admin, packagesSet.getLabel());
+ SystemManager.ssmSystemPackagesToRemove(admin, packagesSet.getLabel(), false);
assertNotNull(result);
// Need explicit elaborate call here; list tag will do this in the UI
commit c48192d903512c63211d2f55c63e6ac088e3c6ea
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Fri Oct 2 10:51:04 2009 -0400
increasing speed of SSM package remove confirmation by using a slightly different elaborator
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
index c96d9ce..6f5d4e8 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
@@ -564,22 +564,43 @@ ORDER BY UPPER(NVL(S.NAME, '(none)')), S.ID
<elaborator name="system_overview" />
</mode>
-<mode name="system_set_remove_or_verify_packages_conf">
- <query params="user_id, set_label, package_set_label">
-SELECT DISTINCT S.id,
- S.name SYSTEM_NAME
- FROM rhnServer S,
- rhnServerPackage SP,
- rhnSet ST2
- WHERE ST2.user_id = :user_id
- AND ST2.label= :package_set_label
- AND SP.server_id in (select element from rhnSet where label = :set_label and user_id = :user_id)
- AND SP.name_id = ST2.element
- AND SP.evr_id = ST2.element_two
- AND SP.package_arch_id = ST2.element_three
- AND SP.server_id = S.id
-ORDER BY UPPER(S.name), S.id
+
+<query name="system_set_remove_package_query" params="user_id, set_label, package_set_label">
+ SELECT DISTINCT S.id,
+ S.name SYSTEM_NAME
+ FROM rhnServer S,
+ rhnServerPackage SP,
+ rhnSet ST2
+ WHERE ST2.user_id = :user_id
+ AND ST2.label= :package_set_label
+ AND SP.server_id in (select element from rhnSet where label = :set_label and user_id = :user_id)
+ AND SP.name_id = ST2.element
+ AND SP.evr_id = ST2.element_two
+ AND SP.package_arch_id = ST2.element_three
+ AND SP.server_id = S.id
+ ORDER BY UPPER(S.name), S.id
</query>
+
+
+<mode name="system_set_remove_or_verify_packages_conf_short">
+ <query name="system_set_remove_package_query" />
+ <elaborator params="user_id, package_set_label" multiple="t">
+SELECT DISTINCT SP.server_id id,
+ PN.id || '|' || PE.id || '|' || PA.id AS ID_COMBO
+ FROM rhnPackageEVR PE,
+ rhnPackageName PN,
+ rhnServerPackage SP,
+ rhnPackageArch PA
+ WHERE SP.server_id IN (%s)
+ AND SP.name_id = PN.id
+ AND PN.id || '|' || PE.id || '|' || PA.id IN (SELECT element || '|' || element_two || '|' || element_three FROM rhnSet WHERE user_id = :user_id AND label = :package_set_label)
+ AND SP.evr_id = PE.id
+ AND SP.package_arch_id = PA.id
+ </elaborator>
+</mode>
+
+<mode name="system_set_remove_or_verify_packages_conf">
+ <query name="system_set_remove_package_query" />
<elaborator params="user_id, package_set_label" multiple="t">
SELECT DISTINCT SP.server_id id,
PN.name || '-' || PE.evr.as_vre_simple() || '-' || PA.label NVRE,
diff --git a/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageRemoveAction.java b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageRemoveAction.java
index b13e0f8..0b241f9 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageRemoveAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ssm/SchedulePackageRemoveAction.java
@@ -92,7 +92,18 @@ public class SchedulePackageRemoveAction extends RhnListAction implements Listab
/** {@inheritDoc} */
public List getResult(RequestContext context) {
+ return getResult(context, false);
+ }
+
+ /**
+ * Provide the data result
+ * @param context The request context
+ * @param shorten whether to return a DataResult with the full ealborator
+ * or a shortened much faster ones
+ * @return the List
+ */
+ public List getResult(RequestContext context, boolean shorten) {
HttpServletRequest request = context.getRequest();
User user = context.getLoggedInUser();
@@ -113,7 +124,7 @@ public class SchedulePackageRemoveAction extends RhnListAction implements Listab
}
DataResult results = SystemManager.ssmSystemPackagesToRemove(user,
- RhnSetDecl.SSM_REMOVE_PACKAGES_LIST.getLabel());
+ RhnSetDecl.SSM_REMOVE_PACKAGES_LIST.getLabel(), shorten);
TagHelper.bindElaboratorTo("groupList", results.getElaborator(), request);
@@ -144,7 +155,7 @@ public class SchedulePackageRemoveAction extends RhnListAction implements Listab
log.debug("Getting package removal data.");
// Parse through all of the results
- DataResult result = (DataResult) getResult(context);
+ DataResult result = (DataResult) getResult(context, true);
result.elaborate();
log.debug("Publishing schedule package remove event to message queue.");
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 eb4da6f..b393eee 100644
--- a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
+++ b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
@@ -2406,13 +2406,23 @@ public class SystemManager extends BaseManager {
* @param packageSetLabel identifies the RhnSet used to store the packages selected
* by the user (this is needed for the query). This must be
* established by the caller prior to calling this method
+ * @param shortened whether or not to include the full elaborator, or a shortened
+ * one that is much much faster, but doesn't provide a displayed
+ * string for the package (only the id combo)
* @return description of server information as well as a list of relevant packages
*/
public static DataResult ssmSystemPackagesToRemove(User user,
- String packageSetLabel) {
- SelectMode m =
- ModeFactory.getMode("System_queries",
- "system_set_remove_or_verify_packages_conf");
+ String packageSetLabel,
+ boolean shortened) {
+ SelectMode m;
+ if (shortened) {
+ m = ModeFactory.getMode("System_queries",
+ "system_set_remove_or_verify_packages_conf_short");
+ }
+ else {
+ m = ModeFactory.getMode("System_queries",
+ "system_set_remove_or_verify_packages_conf");
+ }
Map<String, Object> params = new HashMap<String, Object>(3);
params.put("user_id", user.getId());
@@ -2438,7 +2448,7 @@ public class SystemManager extends BaseManager {
// The query for this operation is the same as remove, so simply chain to
// that method; this method is to make the verify code not look like it
// erronuously calls a remove query.
- return ssmSystemPackagesToRemove(user, packageSetLabel);
+ return ssmSystemPackagesToRemove(user, packageSetLabel, false);
}
/**
commit 7001c6d38eb090a4b147dee7cfc2f7477c14b8e4
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Oct 1 14:13:07 2009 -0400
query fix for SSM package remove confirm list timing out
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
index 940b191..c96d9ce 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
@@ -570,13 +570,10 @@ SELECT DISTINCT S.id,
S.name SYSTEM_NAME
FROM rhnServer S,
rhnServerPackage SP,
- rhnSet ST2,
- rhnSet St
- WHERE St.user_id = :user_id
- AND St.label = :set_label
- AND ST2.user_id = :user_id
+ rhnSet ST2
+ WHERE ST2.user_id = :user_id
AND ST2.label= :package_set_label
- AND St.element = SP.server_id
+ AND SP.server_id in (select element from rhnSet where label = :set_label and user_id = :user_id)
AND SP.name_id = ST2.element
AND SP.evr_id = ST2.element_two
AND SP.package_arch_id = ST2.element_three