java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/domain/server/ServerFactory.java | 9 +++++++++
1 file changed, 9 insertions(+)
New commits:
commit 0f97ba4eb098c579dfb0488f5283451490d0b5d8
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 1b40a33..a6092dc 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.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -747,6 +748,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();
}
@@ -758,6 +763,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();
14 years, 9 months
Branch 'VADER' - java/code schema/spacewalk
by Justin Sherrill
java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml | 11
java/code/src/com/redhat/rhn/domain/server/ServerFactory.java | 24 ++
java/code/src/com/redhat/rhn/domain/server/Server_legacyUser.hbm.xml | 41 ++-
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 | 117 +++++-----
schema/spacewalk/upgrade/rhn-satellite-schema-5.1-to-spacewalk-schema-0.2 | 1
schema/spacewalk/upgrade/spacewalk-schema-0.2-to-spacewalk-schema-0.3 | 1
schema/spacewalk/upgrade/spacewalk-schema-0.3-to-spacewalk-schema-0.4 | 1
schema/spacewalk/upgrade/spacewalk-schema-0.4-to-spacewalk-schema-0.5 | 1
11 files changed, 174 insertions(+), 121 deletions(-)
New commits:
commit e312aadf24c0eba765fb16838ae1fdc908d91b9c
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) {
diff --git a/schema/spacewalk/upgrade/rhn-satellite-schema-5.1-to-spacewalk-schema-0.2 b/schema/spacewalk/upgrade/rhn-satellite-schema-5.1-to-spacewalk-schema-0.2
deleted file mode 120000
index f612f22..0000000
--- a/schema/spacewalk/upgrade/rhn-satellite-schema-5.1-to-spacewalk-schema-0.2
+++ /dev/null
@@ -1 +0,0 @@
-satellite-5.1-spacewalk-0.2
\ No newline at end of file
diff --git a/schema/spacewalk/upgrade/spacewalk-schema-0.2-to-spacewalk-schema-0.3 b/schema/spacewalk/upgrade/spacewalk-schema-0.2-to-spacewalk-schema-0.3
deleted file mode 120000
index b48bb8a..0000000
--- a/schema/spacewalk/upgrade/spacewalk-schema-0.2-to-spacewalk-schema-0.3
+++ /dev/null
@@ -1 +0,0 @@
-spacewalk-0.2-spacewalk-0.3
\ No newline at end of file
diff --git a/schema/spacewalk/upgrade/spacewalk-schema-0.3-to-spacewalk-schema-0.4 b/schema/spacewalk/upgrade/spacewalk-schema-0.3-to-spacewalk-schema-0.4
deleted file mode 120000
index 64b32f3..0000000
--- a/schema/spacewalk/upgrade/spacewalk-schema-0.3-to-spacewalk-schema-0.4
+++ /dev/null
@@ -1 +0,0 @@
-spacewalk-0.3-spacewalk-0.4
\ No newline at end of file
diff --git a/schema/spacewalk/upgrade/spacewalk-schema-0.4-to-spacewalk-schema-0.5 b/schema/spacewalk/upgrade/spacewalk-schema-0.4-to-spacewalk-schema-0.5
deleted file mode 120000
index a9f7adb..0000000
--- a/schema/spacewalk/upgrade/spacewalk-schema-0.4-to-spacewalk-schema-0.5
+++ /dev/null
@@ -1 +0,0 @@
-spacewalk-0.4-spacewalk-0.5
\ No newline at end of file
14 years, 9 months
backend/server
by Jan Pazdziora
backend/server/rhnServer/server_packages.py | 3 ---
1 file changed, 3 deletions(-)
New commits:
commit 58f5b315e06d1057f306f7f258a1f3a3d3d1baf7
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Tue Sep 29 11:48:14 2009 +0200
No commit in processPackageKeyAssociations.
This change is based on the following communication:
Date: Wed, 16 Sep 2009 13:23:43 +0200
Subject: Is there a reason to have commit in processPackageKeyAssociations?
Hello,
looking at the source of processPackageKeyAssociations in
server/rhnServer/server_packages.py, I can see rhnSQL.commit() there.
Other functions in that file, even if they do inserts, do not commit
-- I assume a higher level calls take care of committing.
Why do we commit in processPackageKeyAssociations?
It seems to break the expectation that the most top-level function
decides whether to commit or rollback. Actually, we've just spent
about two hours hunting through a testing Satellite, trying to figure
out why something which has commit only at the end of the loop
(updatePackages.py) behaves as if run in auto commit.
Pradeep, guys: do we have some documentation about what the
recommended approach / coding style WRT transactions is?
--
Jan Pazdziora
---
The usual approach I would suggest is include all the dependent
transactions into one commit, that way a rollback accounts for any
anomolies. In processPackageKeyAssociations case its its own transaction
as the package id is already created in the db and all we're doing is
looking up the signature and associating it to a key and hence this method
has its own commit as its an independent transaction. But if this is being
called from updatePackages then the commit should happen at the end of the
loop. I think we should be ok if we remove the rhnSQL.commit from
processPackageKeyAssociations.
But in usual sense, always stack all the dependent transactions and commit
or rollback at the end. Thats the recommended approach.
--
Pradeep Kilambi
---
So you think other pieces of code (satellite-sync, rhnpush handler) do
their own commits anyway, so we should be fine?
--
Jan Pazdziora
---
Correct. Eventually, in the push_packages call we do commit at the end
anyway. Which is after this call. Also for satsync we do commit in
ChannelPackageSubscriptions which is again after this call. So I think we
should be jus fine if we nuke this commit.
~ Prad
diff --git a/backend/server/rhnServer/server_packages.py b/backend/server/rhnServer/server_packages.py
index 63ffd3e..b5a5156 100644
--- a/backend/server/rhnServer/server_packages.py
+++ b/backend/server/rhnServer/server_packages.py
@@ -436,7 +436,6 @@ def processPackageKeyAssociations(header, md5sum):
lookup_keytype_id.execute()
key_type_id = lookup_keytype_id.fetchone_dict()
insert_keyid_sql.execute(key_id = key_id, key_type_id = key_type_id['id'])
- rhnSQL.commit()
lookup_keyid_sql.execute(key_id = key_id)
keyid = lookup_keyid_sql.fetchall_dict()
@@ -447,8 +446,6 @@ def processPackageKeyAssociations(header, md5sum):
if not exists_check:
provider_sql.execute(key_id=keyid[0]['id'], package_id=pkg_id[0]['id'])
- rhnSQL.commit()
-
# Compares list1 and list2 (each list is a tuple (n, v, r, e)
# returns two lists
14 years, 9 months
Changes to 'refs/tags/yum-rhn-plugin-0.7.4-1'
by Miroslav Suchý
Tag 'yum-rhn-plugin-0.7.4-1' created by Miroslav Suchý <msuchy(a)redhat.com> at 2009-09-29 08:46 +0000
Tagging package [yum-rhn-plugin] version [0.7.4-1] in directory [client/rhel/yum-rhn-plugin/].
Changes since yum-rhn-plugin-0.7.3-1:
Miroslav Suchý (2):
525453 - clean %files section
Automatic commit of package [yum-rhn-plugin] release [0.7.4-1].
---
client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec | 21 ++++++---------------
rel-eng/packages/yum-rhn-plugin | 2 +-
2 files changed, 7 insertions(+), 16 deletions(-)
---
14 years, 9 months
2 commits - client/rhel rel-eng/packages
by Miroslav Suchý
client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec | 21 ++++++---------------
rel-eng/packages/yum-rhn-plugin | 2 +-
2 files changed, 7 insertions(+), 16 deletions(-)
New commits:
commit caa5900ed73eb8d1337ecd1521fefba4ea2b932c
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Tue Sep 29 10:46:48 2009 +0200
Automatic commit of package [yum-rhn-plugin] release [0.7.4-1].
diff --git a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
index fca865a..8e859b9 100644
--- a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
+++ b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
@@ -1,6 +1,6 @@
Summary: RHN support for yum
Name: yum-rhn-plugin
-Version: 0.7.3
+Version: 0.7.4
Release: 1%{?dist}
License: GPLv2
Group: System Environment/Base
@@ -50,7 +50,7 @@ rm -rf $RPM_BUILD_ROOT
%changelog
-* Tue Sep 29 2009 Miroslav Suchý <msuchy(a)redhat.com> 0.7.3-1
+* Tue Sep 29 2009 Miroslav Suchý <msuchy(a)redhat.com> 0.7.4-1
- add source url
- add fix version in provides
- clean %%files section
diff --git a/rel-eng/packages/yum-rhn-plugin b/rel-eng/packages/yum-rhn-plugin
index dee993e..c8358ef 100644
--- a/rel-eng/packages/yum-rhn-plugin
+++ b/rel-eng/packages/yum-rhn-plugin
@@ -1 +1 @@
-0.7.3-1 client/rhel/yum-rhn-plugin/
+0.7.4-1 client/rhel/yum-rhn-plugin/
commit cc83d3cf82d99f438c004b43d2035bed041d7999
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Tue Sep 29 10:46:28 2009 +0200
525453 - clean %files section
diff --git a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
index 2fb99e7..fca865a 100644
--- a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
+++ b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
@@ -43,26 +43,17 @@ rm -rf $RPM_BUILD_ROOT
%files -f %{name}.lang
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/yum/pluginconf.d/rhnplugin.conf
-
%dir /var/lib/up2date
-
-%{_mandir}/man5/rhnplugin.conf.5*
-%{_mandir}/man8/rhnplugin.8*
-%{_mandir}/man8/yum-rhn-plugin.8*
-
-%{_datadir}/yum-plugins/rhnplugin.py
-%{_datadir}/yum-plugins/rhnplugin.pyc
-%{_datadir}/yum-plugins/rhnplugin.pyo
-
-%{_datadir}/rhn/actions/packages.py
-%{_datadir}/rhn/actions/packages.pyc
-%{_datadir}/rhn/actions/packages.pyo
+%{_mandir}/man*/*
+%{_datadir}/yum-plugins/*
+%{_datadir}/rhn/actions/*
%changelog
* Tue Sep 29 2009 Miroslav Suchý <msuchy(a)redhat.com> 0.7.3-1
- add source url
- add fix version in provides
+- clean %%files section
* Thu Sep 17 2009 Miroslav Suchý <msuchy(a)redhat.com> 0.7.2-1
- Rhpl was removed from rhel client packages
14 years, 9 months
Changes to 'refs/tags/yum-rhn-plugin-0.7.3-1'
by Miroslav Suchý
Tag 'yum-rhn-plugin-0.7.3-1' created by Miroslav Suchý <msuchy(a)redhat.com> at 2009-09-29 06:38 +0000
Tagging package [yum-rhn-plugin] version [0.7.3-1] in directory [client/rhel/yum-rhn-plugin/].
Changes since rhnsd-4.5.14-1:
Justin Sherrill (2):
525549 - fixing issue where SSM package operations would run out of memory
checkstyle fixes
Miroslav Suchý (2):
525453 - add source url and fix version in provides
Automatic commit of package [yum-rhn-plugin] release [0.7.3-1].
---
client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec | 14 -
java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml | 11
java/code/src/com/redhat/rhn/domain/server/ServerFactory.java | 24 ++
java/code/src/com/redhat/rhn/domain/server/Server_legacyUser.hbm.xml | 41 ++-
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 | 117 +++++-----
java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java | 1
java/code/src/com/redhat/rhn/taskomatic/task/errata/ErrataCacheDriver.java | 1
rel-eng/packages/yum-rhn-plugin | 2
11 files changed, 184 insertions(+), 125 deletions(-)
---
14 years, 9 months
2 commits - client/rhel rel-eng/packages
by Miroslav Suchý
client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec | 14 +++++++++-----
rel-eng/packages/yum-rhn-plugin | 2 +-
2 files changed, 10 insertions(+), 6 deletions(-)
New commits:
commit 3a58f15be90e6b7fd157d0fc590f940431a96d85
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Tue Sep 29 08:38:38 2009 +0200
Automatic commit of package [yum-rhn-plugin] release [0.7.3-1].
diff --git a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
index 7170bc9..2fb99e7 100644
--- a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
+++ b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
@@ -1,6 +1,6 @@
Summary: RHN support for yum
Name: yum-rhn-plugin
-Version: 0.7.2
+Version: 0.7.3
Release: 1%{?dist}
License: GPLv2
Group: System Environment/Base
@@ -60,7 +60,7 @@ rm -rf $RPM_BUILD_ROOT
%changelog
-* Tue Sep 29 2009 Miroslav Suchý <msuchy(a)redhat.com>
+* Tue Sep 29 2009 Miroslav Suchý <msuchy(a)redhat.com> 0.7.3-1
- add source url
- add fix version in provides
diff --git a/rel-eng/packages/yum-rhn-plugin b/rel-eng/packages/yum-rhn-plugin
index b0f3af5..dee993e 100644
--- a/rel-eng/packages/yum-rhn-plugin
+++ b/rel-eng/packages/yum-rhn-plugin
@@ -1 +1 @@
-0.7.2-1 client/rhel/yum-rhn-plugin/
+0.7.3-1 client/rhel/yum-rhn-plugin/
commit 6fc61fca7d5a15ff0cacd5f7c7f19094c3942e96
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Tue Sep 29 08:38:17 2009 +0200
525453 - add source url and fix version in provides
diff --git a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
index ab35375..7170bc9 100644
--- a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
+++ b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec
@@ -1,11 +1,11 @@
Summary: RHN support for yum
Name: yum-rhn-plugin
-Source: %{name}-%{version}.tar.gz
Version: 0.7.2
Release: 1%{?dist}
License: GPLv2
Group: System Environment/Base
-Url: http://rhn.redhat.com
+Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
+URL: https://fedorahosted.org/spacewalk
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
BuildRequires: python
@@ -19,7 +19,7 @@ Requires: m2crypto >= 0.16-6
# Not really, but for upgrades we need these
Requires: rhn-setup
Obsoletes: up2date < 5.0.0
-Provides: up2date = %{version}
+Provides: up2date = 5.0.0
%description
This yum plugin provides support for yum to access a Red Hat Network server for
@@ -38,7 +38,7 @@ make -f Makefile.yum-rhn-plugin install VERSION=%{version}-%{release} PREFIX=$RP
%find_lang %{name}
%clean
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
+rm -rf $RPM_BUILD_ROOT
%files -f %{name}.lang
%defattr(-,root,root,-)
@@ -60,6 +60,10 @@ make -f Makefile.yum-rhn-plugin install VERSION=%{version}-%{release} PREFIX=$RP
%changelog
+* Tue Sep 29 2009 Miroslav Suchý <msuchy(a)redhat.com>
+- add source url
+- add fix version in provides
+
* Thu Sep 17 2009 Miroslav Suchý <msuchy(a)redhat.com> 0.7.2-1
- Rhpl was removed from rhel client packages
- use macros in spec file
14 years, 9 months
java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java | 1 -
java/code/src/com/redhat/rhn/taskomatic/task/errata/ErrataCacheDriver.java | 1 -
2 files changed, 2 deletions(-)
New commits:
commit fc942be4d851fe1b48781123e0d932c6cd7fbd1c
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Sep 28 20:24:00 2009 -0400
checkstyle fixes
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java b/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
index 7037ef6..a7e4b60 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
@@ -16,7 +16,6 @@ package com.redhat.rhn.taskomatic.task;
import com.redhat.rhn.common.conf.Config;
import com.redhat.rhn.common.conf.ConfigDefaults;
-import com.redhat.rhn.common.hibernate.HibernateFactory;
import com.redhat.rhn.domain.channel.ChannelFactory;
import com.redhat.rhn.domain.channel.ContentSource;
import com.redhat.rhn.domain.task.Task;
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/errata/ErrataCacheDriver.java b/java/code/src/com/redhat/rhn/taskomatic/task/errata/ErrataCacheDriver.java
index b8642dd..e3ec064 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/errata/ErrataCacheDriver.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/errata/ErrataCacheDriver.java
@@ -24,7 +24,6 @@ import com.redhat.rhn.taskomatic.task.threaded.QueueWorker;
import org.apache.log4j.Logger;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
14 years, 9 months
java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml | 11
java/code/src/com/redhat/rhn/domain/server/ServerFactory.java | 24 ++
java/code/src/com/redhat/rhn/domain/server/Server_legacyUser.hbm.xml | 41 ++-
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 | 117 +++++-----
7 files changed, 174 insertions(+), 117 deletions(-)
New commits:
commit 98bc6fc9f6dd8d5c41f734e77a100bdf1197505f
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 28e62c6..1b40a33 100644
--- a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
@@ -38,6 +38,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;
@@ -739,4 +740,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 2c833df..1fe9135 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) {
14 years, 9 months
Changes to 'refs/tags/rhnsd-4.5.14-1'
by Tomas Lestach
Tag 'rhnsd-4.5.14-1' created by Tomas Lestach <tlestach(a)redhat.com> at 2009-09-25 12:44 +0000
Tagging package [rhnsd] version [4.5.14-1] in directory [client/rhel/rhnsd/].
Changes since spacewalk-ssl-cert-check-1.9-1:
Milan Zazrivec (1):
Don't indent sql upgrade code in resulting script
Tomas Lestach (2):
removed hardcoded systemid path
Automatic commit of package [rhnsd] release [4.5.14-1].
---
client/rhel/rhnsd/rhnsd.c | 57 +++++++++++++++++++++++++++---
client/rhel/rhnsd/rhnsd.init | 5 ++
client/rhel/rhnsd/rhnsd.spec | 5 ++
rel-eng/packages/rhnsd | 2 -
schema/spacewalk/spacewalk-schema-upgrade | 34 ++++++++---------
5 files changed, 79 insertions(+), 24 deletions(-)
---
14 years, 9 months