/**
* Copyright (c) 2015 Genome Research Ltd.
*
* Author: Cancer Genome Project cgpit@sanger.ac.uk
*
* This file is part of WwDocker.
*
* WwDocker is free software: you can redistribute it and/or modify it under the
* terms of the GNU Affero General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* 1. The usage of a range of years within a copyright statement contained
* within this distribution should be interpreted as being equivalent to a list
* of years including the first and last year specified and all consecutive
* years between them. For example, a copyright statement that reads 'Copyright
* (c) 2005, 2007- 2009, 2011-2012' should be interpreted as being identical to
* a statement that reads 'Copyright (c) 2005, 2007, 2008, 2009, 2011, 2012' and
* a copyright statement that reads "Copyright (c) 2005-2012' should be
* interpreted as being identical to a statement that reads 'Copyright (c) 2005,
* 2006, 2007, 2008, 2009, 2010, 2011, 2012'."
*/
package uk.ac.sanger.cgp.wwdocker.callable;
import com.jcraft.jsch.Session;
import java.io.File;
import java.nio.file.Files;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import org.apache.commons.configuration.BaseConfiguration;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import uk.ac.sanger.cgp.wwdocker.actions.Local;
import uk.ac.sanger.cgp.wwdocker.actions.Remote;
/**
*
* @author kr2
*/
public class PushWork implements Callable<Integer> {
private static final Logger logger = LogManager.getLogger();
private Thread t;
private String threadName;
private BaseConfiguration config;
private String host;
private List<File> toPush;
private Map<String,String> envs;
public PushWork(String threadName, BaseConfiguration config, String host, List<File> toPush, Map<String,String> envs) {
this.threadName = threadName;
this.config = config;
this.host = host;
this.toPush = toPush;
this.envs = envs;
System.out.println("Creating " + threadName);
}
public Integer call() {
Integer result = new Integer(-1);
logger.info("Running " + threadName);
Session ssh = Remote.getSession(config, host);
Local.pushFileSetToHost(toPush, host, config.getString("datastoreDir"), envs, ssh, null);
Remote.closeSsh(ssh);
result++;
logger.info("Thread " + threadName + " exiting ("+result+").");
return result;
}
public String getHost() {
return host;
}
}