List of usage examples for org.apache.commons.configuration BaseConfiguration getString
public String getString(String key)
From source file:uk.ac.sanger.cgp.wwdocker.workflow.DEWorkflow.java
@Override public boolean provisionHost(String host, BaseConfiguration config, File thisJar, File tmpConf, String mode, Map<String, String> envs) throws InterruptedException { boolean provisioned = false; String remoteWorkflowDir = config.getString("workflowDir"); String localSeqwareJar = config.getString("seqware"); String localWorkflowZip = config.getString("workflow"); File jreDist = Utils.expandUserFile(config, "jreDist", true); File remoteSeqwareJar = new File( remoteWorkflowDir.concat("/").concat(localSeqwareJar.replaceAll(".*/", ""))); File remoteWorkflowZip = new File( remoteWorkflowDir.concat("/").concat(localWorkflowZip.replaceAll(".*/", ""))); String[] pullDockerImages = config.getStringArray("pullDockerImages"); String[] curlDockerImages = config.getStringArray("curlDockerImages"); String[] pushDockerImages = config.getStringArray("pushDockerImages"); String optDir = "/opt/wwdocker"; String workerLog = config.getString("log4-worker"); File localTmp = Utils.expandUserDirPath(config, "primaryLargeTmp", true); List<String> createPaths = new ArrayList(); createPaths.add("/opt/wwdocker"); createPaths.add("/opt/wwdocker/jre"); createPaths.add(remoteWorkflowDir);//from ww w .j a va 2 s . c om createPaths.add(config.getString("datastoreDir")); Session ssh = Remote.getSession(config, host); Remote.createPaths(ssh, createPaths); Remote.chmodPaths(ssh, "a+wrx", createPaths, true); Remote.cleanFiles(ssh, new String[] { config.getString("log4-delete") }); Remote.cleanupOldImages(ssh); // incase lots of stale ones are already present if (Local.pushFileSetToHost(pushDockerImages, host, "/opt/wwdocker", envs, ssh, null) != 0) { return provisioned; } String[] pushedDockerImages = new String[pushDockerImages.length]; for (int i = 0; i < pushDockerImages.length; i++) { pushedDockerImages[i] = Paths.get("/opt/wwdocker", new File(pushDockerImages[i]).getName()).toFile() .getPath(); } if (Remote.dockerPull(ssh, pullDockerImages) != 0 || Remote.dockerLoad(ssh, curlDockerImages, remoteWorkflowDir) != 0 || Remote.dockerLoad(ssh, pushedDockerImages, remoteWorkflowDir) != 0) { return provisioned; } Remote.cleanupOldImages(ssh); // incase lots of stale ones are already present if (Remote.curl(ssh, localSeqwareJar, remoteWorkflowDir) == null) { return provisioned; } Local.pushToHost(jreDist.getAbsolutePath(), host, optDir, envs, ssh, localTmp); if (Remote.expandJre(ssh, jreDist) != 0) { return provisioned; } Remote.curl(ssh, localWorkflowZip, remoteWorkflowDir); if (Remote.expandWorkflow(ssh, remoteWorkflowZip, remoteSeqwareJar, remoteWorkflowDir) != 0) { return provisioned; } //String workflowBase = remoteWorkflowZip.getName().replaceAll("\\.zip$", ""); //Path gnosDest = Paths.get(remoteWorkflowDir, workflowBase); if (Local.pushToHost(thisJar.getAbsolutePath(), host, optDir, envs, ssh, localTmp) != 0 // this jar file || Local.pushToHost(workerLog, host, optDir, envs, ssh, localTmp) != 0 // worker log config || Local.pushToHost(tmpConf.getAbsolutePath(), host, optDir, envs, ssh, localTmp) != 0 // config file || Remote.chmodPath(ssh, "go-wrx", optDir.concat("/*"), true) != 0 // file will have passwords || Local.pushFileSetToHost(Utils.getGnosKeys(config), host, config.getString("datastoreDir"), envs, ssh, localTmp) != 0 // GNOS keys, note DATASTORE || Remote.chmodPath(ssh, "a+r", config.getString("datastoreDir").concat("/*.pem"), false) != 0 // need to ensure these are readable within the image || Remote.startWorkerDaemon(ssh, thisJar.getName(), tmpConf.getName(), mode) != 0) { return provisioned; } provisioned = true; return provisioned; }
From source file:uk.ac.sanger.cgp.wwdocker.workflow.DEWorkflow.java
@Override public int cleanDockerPath(BaseConfiguration config) { String command = baseDockerCommand(config, null); String datastore = config.getString("datastoreDir"); List<String> args = new ArrayList(Arrays.asList(command.split(" "))); args.add("/bin/bash"); args.add("-c"); args.add("rm -rf " + datastore + "/oozie-* " + datastore + "/*.ini " + datastore + "/logs.tar.gz " + datastore + "/toInclude.lst" + datastore + "/DEWorkflowData/dkfz/gtdownload-*.log"); ProcessBuilder pb = new ProcessBuilder(args); Map<String, String> pEnv = pb.environment(); pEnv.putAll(Config.getEnvs(config)); logger.info("Executing: " + String.join(" ", args)); int exitCode = -1; Process p = null;//ww w . ja v a 2 s . com try { p = pb.start(); String progErr = IOUtils.toString(p.getErrorStream()); String progOut = IOUtils.toString(p.getInputStream()); exitCode = p.waitFor(); Utils.logOutput(progErr, Level.ERROR); Utils.logOutput(progOut, Level.TRACE); } catch (InterruptedException | IOException e) { logger.error(e.getMessage(), e); } finally { if (p != null) { p.destroy(); exitCode = p.exitValue(); } } return exitCode; }
From source file:uk.ac.sanger.cgp.wwdocker.workflow.SangerWorkflow.java
@Override public String baseDockerCommand(BaseConfiguration config, String extras) { File workflow = Paths.get(config.getString("workflowDir"), config.getString("workflow").replaceAll(".*/", "").replaceAll("\\.zip$", "")).toFile(); // probably want to clean the data store before we write the ini file //docker run --rm -h master -v /cgp/datastore:/datastore -v /cgp/workflows/Workflow_Bundle_SangerPancancerCgpCnIndelSnvStr_1.0.5.1_SeqWare_1.1.0-alpha.5:/workflow -i seqware/seqware_whitestar_pancancer rm -rf /datastore/ String command = "docker run --rm -h master"; command = command.concat(" -v ").concat(config.getString("datastoreDir")).concat(":/datastore"); command = command.concat(" -v ").concat(workflow.getAbsolutePath()).concat(":/workflow"); command = command.concat(" ").concat(seqwareWhiteStarImage(config)); return command; }
From source file:uk.ac.sanger.cgp.wwdocker.workflow.SangerWorkflow.java
@Override public boolean provisionHost(String host, BaseConfiguration config, File thisJar, File tmpConf, String mode, Map<String, String> envs) throws InterruptedException { boolean provisioned = false; String remoteWorkflowDir = config.getString("workflowDir"); String localSeqwareJar = config.getString("seqware"); String localWorkflowZip = config.getString("workflow"); File jreDist = Utils.expandUserFile(config, "jreDist", true); File remoteSeqwareJar = new File( remoteWorkflowDir.concat("/").concat(localSeqwareJar.replaceAll(".*/", ""))); File remoteWorkflowZip = new File( remoteWorkflowDir.concat("/").concat(localWorkflowZip.replaceAll(".*/", ""))); String[] pullDockerImages = config.getStringArray("pullDockerImages"); String optDir = "/opt/wwdocker"; String workerLog = config.getString("log4-worker"); File localTmp = Utils.expandUserDirPath(config, "primaryLargeTmp", true); List<String> createPaths = new ArrayList(); createPaths.add("/opt/wwdocker"); createPaths.add("/opt/wwdocker/jre"); createPaths.add(remoteWorkflowDir);//from w w w.j a v a2 s. c o m createPaths.add(config.getString("datastoreDir")); Session ssh = Remote.getSession(config, host); Remote.createPaths(ssh, createPaths); Remote.chmodPaths(ssh, "a+wrx", createPaths, true); Remote.cleanFiles(ssh, new String[] { config.getString("log4-delete") }); if (Remote.dockerPull(ssh, pullDockerImages) != 0) { return provisioned; } if (Remote.curl(ssh, localSeqwareJar, remoteWorkflowDir) == null) { return provisioned; } Local.pushToHost(jreDist.getAbsolutePath(), host, optDir, envs, ssh, localTmp); if (Remote.expandJre(ssh, jreDist) != 0) { return provisioned; } if (Remote.curl(ssh, localWorkflowZip, remoteWorkflowDir) == null || Remote.expandWorkflow(ssh, remoteWorkflowZip, remoteSeqwareJar, remoteWorkflowDir) != 0) { return provisioned; } String workflowBase = remoteWorkflowZip.getName().replaceAll("\\.zip$", ""); Path gnosDest = Paths.get(remoteWorkflowDir, workflowBase); if (Local.pushToHost(thisJar.getAbsolutePath(), host, optDir, envs, ssh, localTmp) != 0 // this jar file || Local.pushToHost(workerLog, host, optDir, envs, ssh, localTmp) != 0 // worker log config || Local.pushToHost(tmpConf.getAbsolutePath(), host, optDir, envs, ssh, localTmp) != 0 // config file || Remote.chmodPath(ssh, "go-wrx", optDir.concat("/*"), true) != 0 // file will have passwords || Local.pushFileSetToHost(Utils.getGnosKeys(config), host, gnosDest.toString(), envs, ssh, localTmp) != 0 // GNOS keys || Remote.startWorkerDaemon(ssh, thisJar.getName(), tmpConf.getName(), mode) != 0) { return provisioned; } provisioned = true; return provisioned; }
From source file:uk.ac.sanger.cgp.wwdocker.workflow.TestWorkflow.java
@Override public String baseDockerCommand(BaseConfiguration config, String extras) { File workflow = Paths.get(config.getString("workflowDir"), config.getString("workflow").replaceAll(".*/", "").replaceAll("\\.zip$", "")).toFile(); // probably want to clean the data store before we write the ini file //docker run --rm -h master -v /cgp/datastore:/datastore -v /cgp/workflows/Workflow_Bundle_SangerPancancerCgpCnIndelSnvStr_1.0.5.1_SeqWare_1.1.0-alpha.5:/workflow -i seqware/seqware_whitestar_pancancer rm -rf /datastore/ String command = "docker run --rm -h master"; command = command.concat(" -v ").concat(config.getString("datastoreDir")).concat(":/datastore"); // command = command.concat(" -v ").concat(workflow.getAbsolutePath()).concat(":/workflow"); command = command.concat(" ").concat(seqwareWhiteStarImage(config)); return command; }
From source file:uk.ac.sanger.cgp.wwdocker.workflow.TestWorkflow.java
@Override public boolean provisionHost(String host, BaseConfiguration config, File thisJar, File tmpConf, String mode, Map<String, String> envs) throws InterruptedException { boolean provisioned = false; String remoteWorkflowDir = config.getString("workflowDir"); String localSeqwareJar = config.getString("seqware"); File jreDist = Utils.expandUserFile(config, "jreDist", true); String[] pullDockerImages = config.getStringArray("pullDockerImages"); String optDir = "/opt/wwdocker"; String workerLog = config.getString("log4-worker"); File localTmp = Utils.expandUserDirPath(config, "primaryLargeTmp", true); List<String> createPaths = new ArrayList(); createPaths.add("/opt/wwdocker"); createPaths.add("/opt/wwdocker/jre"); createPaths.add(remoteWorkflowDir);/*from w w w. j a v a2s. c om*/ createPaths.add(config.getString("datastoreDir")); Session ssh = Remote.getSession(config, host); Remote.createPaths(ssh, createPaths); Remote.chmodPaths(ssh, "a+wrx", createPaths, true); Remote.cleanFiles(ssh, new String[] { config.getString("log4-delete") }); if (Remote.dockerPull(ssh, pullDockerImages) != 0) { return provisioned; } if (Remote.curl(ssh, localSeqwareJar, remoteWorkflowDir) == null) { return provisioned; } Local.pushToHost(jreDist.getAbsolutePath(), host, optDir, envs, ssh, localTmp); if (Remote.expandJre(ssh, jreDist) != 0) { return provisioned; } Local.pushToHost("testData/run.pl", host, config.getString("datastoreDir"), envs, ssh, localTmp); if (Local.pushToHost(thisJar.getAbsolutePath(), host, optDir, envs, ssh, localTmp) != 0 // this jar file || Local.pushToHost(workerLog, host, optDir, envs, ssh, localTmp) != 0 // worker log config || Local.pushToHost(tmpConf.getAbsolutePath(), host, optDir, envs, ssh, localTmp) != 0 // config file || Remote.chmodPath(ssh, "go-wrx", optDir.concat("/*"), true) != 0 // file will have passwords || Remote.startWorkerDaemon(ssh, thisJar.getName(), tmpConf.getName(), mode) != 0) { return provisioned; } provisioned = true; return provisioned; }