java/code/src/com/redhat/rhn/domain/kickstart/KickstartData.java | 25
++++++++--
java/code/src/com/redhat/rhn/manager/kickstart/KickstartEditCommand.java | 12 ++++
2 files changed, 34 insertions(+), 3 deletions(-)
New commits:
commit 3dcc601181e12b62e0c9c55b474544e52a3a4f75
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Jan 28 12:08:08 2010 -0500
538435 - fixing issue where cloning a channel wouldnt properly clone the activation
keys, and wouldnt update the default session key properly
diff --git a/java/code/src/com/redhat/rhn/domain/kickstart/KickstartData.java
b/java/code/src/com/redhat/rhn/domain/kickstart/KickstartData.java
index 41363e6..9cde4a6 100644
--- a/java/code/src/com/redhat/rhn/domain/kickstart/KickstartData.java
+++ b/java/code/src/com/redhat/rhn/domain/kickstart/KickstartData.java
@@ -21,9 +21,12 @@ import com.redhat.rhn.domain.channel.Channel;
import com.redhat.rhn.domain.common.FileList;
import com.redhat.rhn.domain.kickstart.crypto.CryptoKey;
import
com.redhat.rhn.domain.org.Org;
+import com.redhat.rhn.domain.token.ActivationKey;
+import com.redhat.rhn.domain.token.ActivationKeyFactory;
import com.redhat.rhn.domain.token.Token;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.manager.kickstart.KickstartFormatter;
+import com.redhat.rhn.manager.kickstart.KickstartSessionCreateCommand;
import com.redhat.rhn.manager.kickstart.cobbler.CobblerCommand;
import com.redhat.rhn.manager.kickstart.cobbler.CobblerXMLRPCHelper;
@@ -1227,9 +1230,7 @@ public class KickstartData {
cloned.setCryptoKeys(new HashSet(this.getCryptoKeys()));
}
- if (this.getDefaultRegTokens() != null) {
- cloned.setDefaultRegTokens(new HashSet(this.getDefaultRegTokens()));
- }
+
// NOTE: Make sure we *DONT* clone isOrgDefault
cloned.setIsOrgDefault(Boolean.FALSE);
@@ -1256,6 +1257,24 @@ public class KickstartData {
cloned.addScript(ksscloned);
}
}
+
+ //copy all of the non-session related kickstarts
+ Set<Token> newTokens = new HashSet<Token>();
+ if (this.getDefaultRegTokens() != null) {
+ for (Token tok : this.getDefaultRegTokens()) {
+ ActivationKey key = ActivationKeyFactory.lookupByToken(tok);
+ if (key == null || key.getKickstartSession() == null) {
+ newTokens.add(tok);
+ }
+ }
+ }
+ cloned.setDefaultRegTokens(newTokens);
+
+ //create a new session one
+ KickstartSessionCreateCommand cmd = new KickstartSessionCreateCommand(
+ user.getOrg(), cloned);
+ cmd.store();
+
}
// Helper method to copy KickstartCommands
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartEditCommand.java
b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartEditCommand.java
index a0a45f5..9baa1e3 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartEditCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartEditCommand.java
@@ -25,6 +25,9 @@ import com.redhat.rhn.domain.kickstart.KickstartableTree;
import com.redhat.rhn.domain.kickstart.RepoInfo;
import com.redhat.rhn.domain.kickstart.builder.KickstartBuilder;
import
com.redhat.rhn.domain.org.Org;
+import com.redhat.rhn.domain.token.ActivationKey;
+import com.redhat.rhn.domain.token.ActivationKeyFactory;
+import com.redhat.rhn.domain.token.Token;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.manager.channel.ChannelManager;
@@ -202,6 +205,15 @@ public class KickstartEditCommand extends BaseKickstartCommand {
KickstartableTree tree = KickstartFactory.findTreeById(treeId, orgId);
KickstartWizardHelper helper = new KickstartWizardHelper(getUser());
+
+
+ for (Token token : ksdata.getDefaultRegTokens()) {
+ ActivationKey key = ActivationKeyFactory.lookupByToken(token);
+ if (key != null && key.getKickstartSession() != null) {
+ token.setBaseChannel(tree.getChannel());
+ }
+ }
+
if (tree != null) {
this.ksdata.getKickstartDefaults().setKstree(tree);