/* * Copyright (C) 2007-2012 Argeo GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.argeo.slc.lib.linux; import org.argeo.slc.SlcException; import org.argeo.slc.core.deploy.LocalFilesDeployment; import org.argeo.slc.core.deploy.ResourceSet; import org.argeo.slc.core.execution.tasks.SystemCall; import org.argeo.slc.jsch.RemoteExec; import org.argeo.slc.jsch.SshFilesDeployment; import org.argeo.slc.jsch.SshTarget; public class RedhatHostManager { private SimpleLinuxHost host; // SSH private Boolean useSsh = true; private SshTarget sshTarget = null; public void installPackages() { StringBuffer cmd = new StringBuffer("yum --nogpgcheck -y install"); for (String pkg : ((RpmDistribution) host.getDistribution()) .getAdditionalPackages()) { cmd.append(' ').append(pkg); } executeCommand(cmd.toString()); RedhatDeploymentData rdd = (RedhatDeploymentData) host .getDeploymentData(); executeCommand(rdd.getRunlevelsScript()); } public void deployConfig() { RedhatDeploymentData rdd = (RedhatDeploymentData) host .getDeploymentData(); deploy(rdd.getConfigurationFiles()); executeCommand(rdd.getPermissionsScript()); } // GENERIC? protected void deploy(ResourceSet resourceSet) { if (useSsh) new SshFilesDeployment(getSshTarget(), resourceSet).run(); else new LocalFilesDeployment(resourceSet).run(); } protected void executeCommand(String command) { if (command == null) return; if (useSsh) { RemoteExec rExec = new RemoteExec(getSshTarget(), command); rExec.setFailOnBadExitStatus(false); rExec.run(); } else new SystemCall(command).run(); } protected SshTarget getSshTarget() { if (sshTarget == null) throw new SlcException("No SSH target defined"); return sshTarget; } public void setHost(SimpleLinuxHost host) { this.host = host; } public void setUseSsh(Boolean useSsh) { this.useSsh = useSsh; } public void setSshTarget(SshTarget sshTarget) { this.sshTarget = sshTarget; } }