java/code/src/com/redhat/rhn/frontend/events/SsmInstallPackagesAction.java | 21 --
java/code/src/com/redhat/rhn/frontend/events/SsmPackagesAction.java | 83
+++++-----
java/code/src/com/redhat/rhn/frontend/events/SsmRemovePackagesAction.java | 33 ---
java/code/src/com/redhat/rhn/frontend/events/SsmUpgradePackagesAction.java | 16 -
4 files changed, 51 insertions(+), 102 deletions(-)
New commits:
commit caac301bfbef1353df6fb8e4b0f7d71bb9fac7b4
Author: Grant Gainey <ggainey(a)redhat.com>
Date: Thu Jul 25 16:09:21 2013 -0400
987977 - Fix there-can-be-solaris issue and make Upgrade behave like everything else
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 1369b99..afa4b68 100644
--- a/java/code/src/com/redhat/rhn/frontend/events/SsmInstallPackagesAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/events/SsmInstallPackagesAction.java
@@ -22,7 +22,6 @@ import java.util.Map;
import java.util.Set;
import com.redhat.rhn.domain.action.Action;
-import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.action.SetLabels;
import com.redhat.rhn.frontend.dto.EssentialServerDto;
@@ -75,24 +74,4 @@ public class SsmInstallPackagesAction extends SsmPackagesAction {
return pkgActions;
}
- protected Action doSchedule(SsmPackageEvent event, User user, Server s, Date
earliest) {
- SsmInstallPackagesEvent sipe = (SsmInstallPackagesEvent) event;
-
- Set<String> data = sipe.getPackages();
- // Convert the package list to domain objects
- List<PackageListItem> pkgListItems = new
ArrayList<PackageListItem>(data.size());
- for (String key : data) {
- pkgListItems.add(PackageListItem.parse(key));
- }
-
- // Convert to list of maps
- List<Map<String, Long>> packageListData = PackageListItem
- .toKeyMaps(pkgListItems);
-
- Action pkgAction = ActionManager.schedulePackageInstall(user, s,
- packageListData, earliest);
-
- return pkgAction;
- }
-
}
diff --git a/java/code/src/com/redhat/rhn/frontend/events/SsmPackagesAction.java
b/java/code/src/com/redhat/rhn/frontend/events/SsmPackagesAction.java
index 70fc767..dc24937 100644
--- a/java/code/src/com/redhat/rhn/frontend/events/SsmPackagesAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/events/SsmPackagesAction.java
@@ -14,7 +14,6 @@
*/
package com.redhat.rhn.frontend.events;
-import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -25,7 +24,6 @@ import com.redhat.rhn.common.messaging.EventMessage;
import com.redhat.rhn.domain.action.Action;
import com.redhat.rhn.domain.action.script.ScriptActionDetails;
import com.redhat.rhn.domain.action.script.ScriptRunAction;
-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;
@@ -107,54 +105,65 @@ public abstract class SsmPackagesAction extends
AbstractDatabaseAction {
log.debug("Scheduling package actions.");
Date earliest = event.getEarliest();
- List<Long> serverIds = getAffectedServers(event, user);
+ List<Long> sids = getAffectedServers(event, user);
+
log.debug("Scheduling actions.");
- // If we have a remote-cmd, have to correctly order it and the package action(s)
+ // If we have a remote-cmd, have to correctly order it and the package
+ // action(s)
if (event.getScriptDetails() != null) {
- for (Long sid : serverIds) {
- Server s = ServerFactory.lookupById(sid);
- List<Long> sidList = new ArrayList<Long>();
- sidList.add(sid);
- ScriptActionDetails sad = event.getScriptDetails();
- if (event.isBefore()) {
- log.debug("Scheduling remote-action BEFORE.");
-
- ScriptRunAction sra = ActionManager.scheduleScriptRun(user, sidList,
- null, sad, earliest);
- ActionManager.storeAction(sra);
+ // It's possible to have non-linux servers in the list, and different
Actions
+ // are created for them. Get the separate lists
+ List<Long> rhelIds = ServerFactory.listLinuxSystems(sids);
+ List<Long> solarisIds = ServerFactory.listSolarisSystems(sids);
- Action pkgAction = doSchedule(event, user, s, earliest);
+ ScriptActionDetails sad = event.getScriptDetails();
+ List<Action> pkgActions = doSchedule(event, user, sids, earliest);
+ for (Action a : pkgActions) {
- Action prevAction = sra;
- pkgAction.setPrerequisite(prevAction);
- ActionManager.storeAction(pkgAction);
- prevAction = pkgAction;
+ if (event.isBefore()) {
+ log.debug("Scheduling remote-action BEFORE.");
+ if (!rhelIds.isEmpty()) {
+ ScriptRunAction sra = ActionManager.scheduleScriptRun(user,
+ rhelIds, null, sad, earliest);
+ ActionManager.storeAction(sra);
+ a.setPrerequisite(sra);
+ ActionManager.storeAction(a);
+ }
+
+ if (!solarisIds.isEmpty()) {
+ ScriptRunAction sra = ActionManager.scheduleScriptRun(user,
+ solarisIds, null, sad, earliest);
+ ActionManager.storeAction(sra);
+ a.setPrerequisite(sra);
+ ActionManager.storeAction(a);
+ }
}
else {
log.debug("Scheduling remote-action AFTER.");
- Action pkgAction = doSchedule(event, user, s, earliest);
- ScriptRunAction sra = ActionManager.scheduleScriptRun(user, sidList,
- null, sad, earliest);
-
- // Might be more than one action from schedPkgActions
- Action prevAction = null;
- if (prevAction != null) {
- pkgAction.setPrerequisite(prevAction);
- }
- ActionManager.storeAction(pkgAction);
- prevAction = pkgAction;
-
- sra.setPrerequisite(prevAction);
- ActionManager.storeAction(sra);
+ if (!rhelIds.isEmpty()) {
+ ScriptRunAction sra = ActionManager.scheduleScriptRun(user,
+ rhelIds, null, sad, earliest);
+ ActionManager.storeAction(a);
+ sra.setPrerequisite(a);
+ ActionManager.storeAction(sra);
+ }
+
+ if (!solarisIds.isEmpty()) {
+ ScriptRunAction sra = ActionManager.scheduleScriptRun(user,
+ solarisIds, null, sad, earliest);
+ ActionManager.storeAction(a);
+ sra.setPrerequisite(a);
+ ActionManager.storeAction(sra);
+ }
}
}
}
else { // No remote-script to schedule
- doSchedule(event, user, serverIds, earliest);
+ doSchedule(event, user, sids, earliest);
}
log.debug("Done scheduling package actions.");
@@ -164,10 +173,6 @@ public abstract class SsmPackagesAction extends
AbstractDatabaseAction {
protected abstract List<Long> getAffectedServers(SsmPackageEvent event, User
u);
- protected abstract Action doSchedule(SsmPackageEvent event,
- User user,
- Server s,
- Date earliest);
protected abstract List<Action> doSchedule(SsmPackageEvent event,
User user,
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 dcfdf92..c17526e 100644
--- a/java/code/src/com/redhat/rhn/frontend/events/SsmRemovePackagesAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/events/SsmRemovePackagesAction.java
@@ -24,7 +24,6 @@ import java.util.Set;
import org.apache.log4j.Logger;
import com.redhat.rhn.domain.action.Action;
-import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.dto.PackageListItem;
import com.redhat.rhn.manager.action.ActionManager;
@@ -117,36 +116,4 @@ public class SsmRemovePackagesAction extends SsmPackagesAction {
return actions;
}
- protected Action doSchedule(SsmPackageEvent event, User user, Server s, Date
earliest) {
-
- SsmRemovePackagesEvent srpe = (SsmRemovePackagesEvent) event;
-
- List<Map> result = srpe.getResult();
-
- Set<PackageListItem> allPackages = new HashSet<PackageListItem>();
-
- for (Map data : result) {
-
- // Get the packages out of the elaborator
- List<Map> elabList = (List<Map>)
data.get("elaborator0");
- if (elabList != null) {
- for (Map elabMap : elabList) {
- String idCombo = (String) elabMap.get("id_combo");
- PackageListItem item = PackageListItem.parse(idCombo);
- allPackages.add(item);
- }
- }
- }
-
- List<PackageListItem> allPackagesList = new
ArrayList<PackageListItem>(allPackages);
- List<Map<String, Long>> packageListData = PackageListItem
- .toKeyMaps(allPackagesList);
-
- Action action = ActionManager.schedulePackageRemoval(user, s,
- packageListData, earliest);
-
- return action;
- }
-
-
}
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 84b9491..36cbde5 100644
--- a/java/code/src/com/redhat/rhn/frontend/events/SsmUpgradePackagesAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/events/SsmUpgradePackagesAction.java
@@ -20,7 +20,6 @@ import java.util.List;
import java.util.Map;
import com.redhat.rhn.domain.action.Action;
-import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.manager.action.ActionManager;
@@ -49,16 +48,15 @@ public class SsmUpgradePackagesAction extends SsmPackagesAction {
SsmUpgradePackagesEvent supe = (SsmUpgradePackagesEvent) event;
Map<Long, List<Map<String, Long>>> packageListItems =
supe.getSysPackageSet();
+ List<Map<String, Long>> pkgs = new ArrayList<Map<String,
Long>>();
+ for (List<Map<String, Long>> pkgList : packageListItems.values()) {
+ for (Map<String, Long> pkg : pkgList) {
+ pkgs.add(pkg);
+ }
+ }
- return ActionManager.schedulePackageUpgrades(user, packageListItems, earliest);
+ return ActionManager.schedulePackageInstall(user, sids, pkgs, earliest);
}
- protected Action doSchedule(SsmPackageEvent event, User user, Server s, Date
earliest) {
-
- SsmUpgradePackagesEvent supe = (SsmUpgradePackagesEvent) event;
- List<Map<String, Long>> packageListItems =
supe.getSysPackageSet().get(s.getId());
-
- return ActionManager.schedulePackageUpgrade(user, s, packageListItems,
earliest);
- }
}