/**
* Copyright (c) 2009--2015 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package com.redhat.rhn.taskomatic.task;
import com.redhat.rhn.domain.action.Action;
import com.redhat.rhn.domain.action.ActionFactory;
import com.redhat.rhn.domain.action.config.ConfigAction;
import com.redhat.rhn.domain.action.config.ConfigRevisionAction;
import com.redhat.rhn.domain.config.ConfigFile;
import com.redhat.rhn.domain.config.ConfigRevision;
import com.redhat.rhn.domain.config.ConfigurationFactory;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.server.ServerFactory;
import com.redhat.rhn.frontend.dto.ConfigFileNameDto;
import com.redhat.rhn.manager.configuration.ConfigurationManager;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.util.Set;
/**
* Compare Config Files
* Schedules a comparison of config files on all systems
*
* @version $Rev$
*/
public class CompareConfigFilesTask extends RhnJavaJob {
/**
* Default constructor
*/
public CompareConfigFilesTask() {
}
/**
* {@inheritDoc}
*/
public void execute(JobExecutionContext context)
throws JobExecutionException {
log.info("running config compare");
ConfigurationManager cm = ConfigurationManager.getInstance();
for (Server server : ServerFactory.listConfigDiffEnabledSystems()) {
if (server.isInactive()) {
continue;
}
Action act = ActionFactory.createAction(ActionFactory.TYPE_CONFIGFILES_DIFF);
ConfigAction cfact = (ConfigAction) act;
// set up needed fields for the action
act.setName(act.getActionType().getName());
act.setOrg(server.getOrg());
// add the server to the action
ActionFactory.addServerToAction(server, act);
// add file revisions to the action
for (ConfigFileNameDto cfn : cm.listAllFileNamesForSystem(server)) {
Long cfid = cfn.getConfigFileId();
ConfigFile cf = ConfigurationFactory.lookupConfigFileById(cfid);
ConfigRevision crev = cf.getLatestConfigRevision();
ActionFactory.addConfigRevisionToAction(crev, server, cfact);
}
if (act.getServerActions() == null || act.getServerActions().size() < 1) {
continue;
}
Set<ConfigRevisionAction> cra = cfact.getConfigRevisionActions();
if (cra == null || cra.size() < 1) {
continue;
}
log.info(" saving comparison for " + server.getId());
ActionFactory.save(act);
}
}
}