/** * @param prereqAction the prerequisite for this action * @return Returns the KickstartAction */ public Action scheduleKickstartAction(Action prereqAction) { // We will schedule the kickstart action against the host server, since the host // server is the liason for the target server. Set fileList = Collections.EMPTY_SET; if (!isCobblerOnly()) { fileList = ksdata.getPreserveFileLists(); } String server = this.getKickstartServerName(); if (this.getProxyHost() != null) { server = this.getProxyHost(); } KickstartAction ksAction = ActionManager.scheduleKickstartAction( fileList, this.getUser(), this.getHostServer(), this.getScheduleDate(), this.getExtraOptions(), server); if (prereqAction != null) { ksAction.setPrerequisite(prereqAction); } if (!isDhcp) { ksAction.getKickstartActionDetails().setStaticDevice(networkInterface); } return ksAction; }
/** {@inheritDoc} */ public ValidatorError store() { ValidatorError e = this.doValidation(); if (e != null) { return e; } Server hostServer = getHostServer(); log.debug("** Server we are operating on: " + hostServer); // rhn-kickstart-virtualization conflicts with this package, so we have to // remove it List<Map<String, Long>> installed = SystemManager.listInstalledPackage(PACKAGE_TO_REMOVE, hostServer); Action removal = null; if (!installed.isEmpty()) { removal = ActionManager.schedulePackageRemoval(user, hostServer, installed, scheduleDate); } // Install packages on the host server. log.debug("** Creating packageAction"); Action packageAction = ActionManager.schedulePackageInstall( this.user, hostServer, this.packagesToInstall, scheduleDate); packageAction.setPrerequisite(removal); log.debug("** Created packageAction ? " + packageAction.getId()); log.debug("** Cancelling existing sessions."); cancelExistingSessions(); // Make sure we fail all existing sessions for this server since // we are scheduling a new one if (!cobblerOnly) { kickstartSession = this.setupKickstartSession(packageAction); storeActivationKeyInfo(); } Action kickstartAction = this.scheduleKickstartAction(packageAction); ActionFactory.save(packageAction); scheduleRebootAction(kickstartAction); String host = this.getKickstartServerName(); if (!StringUtils.isEmpty(this.getProxyHost())) { host = this.getProxyHost(); } CobblerSystemCreateCommand cmd = null; if (!cobblerOnly) { // Setup Cobbler system profile KickstartUrlHelper uhelper = new KickstartUrlHelper(ksdata); String tokenList; if (ksdata.getRegistrationType(null).equals(RegistrationType.REACTIVATION)) { tokenList = KickstartFormatter.generateActivationKeyString(ksdata, kickstartSession); } else { // RegistrationType.DELETION && RegistrationType.NONE CobblerConnection connection = CobblerXMLRPCHelper.getConnection(ConfigDefaults.get().getCobblerAutomatedUser()); tokenList = org.cobbler.Profile.lookupById(connection, ksdata.getCobblerId()) .getRedHatManagementKey(); } cmd = getCobblerSystemCreateCommand( user, server, ksdata, uhelper.getKickstartMediaPath(kickstartSession, scheduleDate), tokenList); cmd.setKernelOptions(getExtraOptions()); } else { cmd = new CobblerSystemCreateCommand(user, server, cobblerProfileLabel); cmd.setKernelOptions(kernelOptions); } cmd.setKickstartHost(host); cmd.setPostKernelOptions(postKernelOptions); cmd.setScheduledAction(kickstartAction); cmd.setNetworkInfo( isDhcp, networkInterface, this.useIpv6Gateway(), ksdata.getInstallType().getLabel()); cmd.setBridgeInfo( createBond, bondInterface, bondSlaveInterfaces, bondOptions, isBondDhcp, bondAddress, bondNetmask, bondGateway); ValidatorError cobblerError = cmd.store(); if (cobblerError != null) { return cobblerError; } SystemRecord rec = SystemRecord.lookupById( CobblerXMLRPCHelper.getConnection(this.getUser().getLogin()), this.getServer().getCobblerId()); // This is a really really crappy way of doing this, but i don't want to restructure // the actions too much at this point :/ // We only want to do this for the non-guest action if (kickstartAction instanceof KickstartAction) { ((KickstartAction) kickstartAction) .getKickstartActionDetails() .setCobblerSystemName(rec.getName()); } ActionFactory.save(kickstartAction); log.debug("** Created ksaction: " + kickstartAction.getId()); this.scheduledAction = kickstartAction; log.debug("** Done scheduling kickstart session"); return null; }