You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2015/06/03 20:14:19 UTC
[02/39] airavata git commit: Refactored gfac sub modules,
merged gfac-ssh, gfac-gsissh, gfac-local,
gfac-monitor and gsissh modules and create gface-impl,
removed implementation from gfac-core to gfac-impl
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAbstractCluster.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAbstractCluster.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAbstractCluster.java
deleted file mode 100644
index 7a04f11..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAbstractCluster.java
+++ /dev/null
@@ -1,768 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.net.URL;
-import java.security.SecureRandom;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.airavata.gsi.ssh.api.Cluster;
-import org.apache.airavata.gsi.ssh.api.CommandExecutor;
-import org.apache.airavata.gsi.ssh.api.SSHApiException;
-import org.apache.airavata.gsi.ssh.api.ServerInfo;
-import org.apache.airavata.gsi.ssh.api.authentication.AuthenticationInfo;
-import org.apache.airavata.gsi.ssh.api.authentication.GSIAuthenticationInfo;
-import org.apache.airavata.gsi.ssh.api.authentication.SSHKeyAuthentication;
-import org.apache.airavata.gsi.ssh.api.authentication.SSHPasswordAuthentication;
-import org.apache.airavata.gsi.ssh.api.authentication.SSHPublicKeyAuthentication;
-import org.apache.airavata.gsi.ssh.api.authentication.SSHPublicKeyFileAuthentication;
-import org.apache.airavata.gsi.ssh.api.job.JobDescriptor;
-import org.apache.airavata.gsi.ssh.api.job.JobManagerConfiguration;
-import org.apache.airavata.gsi.ssh.api.job.OutputParser;
-import org.apache.airavata.gsi.ssh.config.ConfigReader;
-import org.apache.airavata.gsi.ssh.jsch.ExtendedJSch;
-import org.apache.airavata.gsi.ssh.util.CommonUtils;
-import org.apache.airavata.gsi.ssh.util.SSHAPIUIKeyboardInteractive;
-import org.apache.airavata.gsi.ssh.util.SSHKeyPasswordHandler;
-import org.apache.airavata.gsi.ssh.util.SSHUtils;
-import org.apache.commons.io.FileUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.jcraft.jsch.ExtendedSession;
-import com.jcraft.jsch.GSISSHIdentityFile;
-import com.jcraft.jsch.GSISSHIdentityRepository;
-import com.jcraft.jsch.Identity;
-import com.jcraft.jsch.JSch;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.Session;
-
-public class GSISSHAbstractCluster implements Cluster {
-
- private static final Logger log = LoggerFactory.getLogger(GSISSHAbstractCluster.class);
- public static final String X509_CERT_DIR = "X509_CERT_DIR";
- public static final String SSH_SESSION_TIMEOUT = "ssh.session.timeout";
-
- public JobManagerConfiguration jobManagerConfiguration;
-
- private ServerInfo serverInfo;
-
- private AuthenticationInfo authenticationInfo;
-
- private Session session;
-
- private ConfigReader configReader;
-
- private JSch defaultJSch;
-
- private static Identity identityFile = null;
-
- public GSISSHAbstractCluster(ServerInfo serverInfo, AuthenticationInfo authenticationInfo, JobManagerConfiguration config) throws SSHApiException {
- this(serverInfo, authenticationInfo);
- this.jobManagerConfiguration = config;
- }
-
- public GSISSHAbstractCluster(ServerInfo serverInfo, AuthenticationInfo authenticationInfo) throws SSHApiException {
-
- reconnect(serverInfo, authenticationInfo);
- }
-
- public GSISSHAbstractCluster(JobManagerConfiguration config) {
- this.jobManagerConfiguration = config;
- }
- private synchronized void reconnect(ServerInfo serverInfo, AuthenticationInfo authenticationInfo) throws SSHApiException {
- this.serverInfo = serverInfo;
-
- this.authenticationInfo = authenticationInfo;
-
- if (authenticationInfo instanceof GSIAuthenticationInfo) {
- JSch.setConfig("gssapi-with-mic.x509", "org.apache.airavata.gsi.ssh.GSSContextX509");
- JSch.setConfig("userauth.gssapi-with-mic", "com.jcraft.jsch.UserAuthGSSAPIWithMICGSSCredentials");
- System.setProperty(X509_CERT_DIR, (String) ((GSIAuthenticationInfo) authenticationInfo).getProperties().
- get("X509_CERT_DIR"));
- }
-
-
- try {
- this.configReader = new ConfigReader();
- } catch (IOException e) {
- throw new SSHApiException("Unable to load system configurations.", e);
- }
- try {
- if(defaultJSch == null){
- defaultJSch = createJSch(authenticationInfo);
- }
- log.debug("Connecting to server - " + serverInfo.getHost() + ":" + serverInfo.getPort() + " with user name - "
- + serverInfo.getUserName());
-
- session = createSession(defaultJSch,serverInfo.getUserName(), serverInfo.getHost(), serverInfo.getPort());
- }
- catch (Exception e) {
- throw new SSHApiException("An exception occurred while creating SSH session." +
- "Connecting server - " + serverInfo.getHost() + ":" + serverInfo.getPort() +
- " connecting user name - "
- + serverInfo.getUserName(), e);
- }
-
- //=============================================================
- // Handling vanilla SSH pieces
- //=============================================================
- if (authenticationInfo instanceof SSHPasswordAuthentication) {
- String password = ((SSHPasswordAuthentication) authenticationInfo).
- getPassword(serverInfo.getUserName(), serverInfo.getHost());
-
- session.setUserInfo(new SSHAPIUIKeyboardInteractive(password));
-
- // TODO figure out why we need to set password to session
- session.setPassword(password);
-
- } else if (authenticationInfo instanceof SSHPublicKeyFileAuthentication) {
-
- SSHPublicKeyFileAuthentication sshPublicKeyFileAuthentication
- = (SSHPublicKeyFileAuthentication) authenticationInfo;
- String privateKeyFile = sshPublicKeyFileAuthentication.
- getPrivateKeyFile(serverInfo.getUserName(), serverInfo.getHost());
-
- logDebug("The private key file for vanilla SSH " + privateKeyFile);
-
- String publicKeyFile = sshPublicKeyFileAuthentication.
- getPublicKeyFile(serverInfo.getUserName(), serverInfo.getHost());
-
- logDebug("The public key file for vanilla SSH " + publicKeyFile);
-
- try {
- identityFile = GSISSHIdentityFile.newInstance(privateKeyFile, null, defaultJSch);
- } catch (JSchException e) {
- throw new SSHApiException("An exception occurred while initializing keys using files. " +
- "(private key and public key)." +
- "Connecting server - " + serverInfo.getHost() + ":" + serverInfo.getPort() +
- " connecting user name - "
- + serverInfo.getUserName() + " private key file - " + privateKeyFile + ", public key file - " +
- publicKeyFile, e);
- }
-
- // Add identity to identity repository
- GSISSHIdentityRepository identityRepository = new GSISSHIdentityRepository(defaultJSch);
- identityRepository.add(identityFile);
-
- // Set repository to session
- session.setIdentityRepository(identityRepository);
-
- // Set the user info
- SSHKeyPasswordHandler sshKeyPasswordHandler
- = new SSHKeyPasswordHandler((SSHKeyAuthentication) authenticationInfo);
-
- session.setUserInfo(sshKeyPasswordHandler);
-
- } else if (authenticationInfo instanceof SSHPublicKeyAuthentication) {
-
- SSHPublicKeyAuthentication sshPublicKeyAuthentication
- = (SSHPublicKeyAuthentication) authenticationInfo;
- try {
- String name = serverInfo.getUserName() + "_" + serverInfo.getHost();
- identityFile = GSISSHIdentityFile.newInstance(name,
- sshPublicKeyAuthentication.getPrivateKey(serverInfo.getUserName(), serverInfo.getHost()),
- sshPublicKeyAuthentication.getPublicKey(serverInfo.getUserName(), serverInfo.getHost()), defaultJSch);
- } catch (JSchException e) {
- throw new SSHApiException("An exception occurred while initializing keys using byte arrays. " +
- "(private key and public key)." +
- "Connecting server - " + serverInfo.getHost() + ":" + serverInfo.getPort() +
- " connecting user name - "
- + serverInfo.getUserName(), e);
- }
-
- // Add identity to identity repository
- GSISSHIdentityRepository identityRepository = new GSISSHIdentityRepository(defaultJSch);
- identityRepository.add(identityFile);
-
- // Set repository to session
- session.setIdentityRepository(identityRepository);
-
- // Set the user info
- SSHKeyPasswordHandler sshKeyPasswordHandler
- = new SSHKeyPasswordHandler((SSHKeyAuthentication) authenticationInfo);
-
- session.setUserInfo(sshKeyPasswordHandler);
-
- }
-
- // Not a good way, but we dont have any choice
- if (session instanceof ExtendedSession) {
- if (authenticationInfo instanceof GSIAuthenticationInfo) {
- ((ExtendedSession) session).setAuthenticationInfo((GSIAuthenticationInfo) authenticationInfo);
- }
- }
-
- try {
- session.connect(Integer.parseInt(configReader.getConfiguration(SSH_SESSION_TIMEOUT)));
- } catch (Exception e) {
- throw new SSHApiException("An exception occurred while connecting to server." +
- "Connecting server - " + serverInfo.getHost() + ":" + serverInfo.getPort() +
- " connecting user name - "
- + serverInfo.getUserName(), e);
- }
- }
-
- public synchronized JobDescriptor cancelJob(String jobID) throws SSHApiException {
- JobStatus jobStatus = getJobStatus(jobID);
- if (jobStatus == null || jobStatus == JobStatus.U) {
- log.info("Validation before cancel is failed, couldn't found job in remote host to cancel. Job may be already completed|failed|canceled");
- return null;
- }
- RawCommandInfo rawCommandInfo = jobManagerConfiguration.getCancelCommand(jobID);
-
- StandardOutReader stdOutReader = new StandardOutReader();
- log.info("Executing RawCommand : " + rawCommandInfo.getCommand());
- CommandExecutor.executeCommand(rawCommandInfo, this.getSession(), stdOutReader);
- String outputifAvailable = getOutputifAvailable(stdOutReader, "Error reading output of job submission", jobManagerConfiguration.getBaseCancelCommand());
- // this might not be the case for all teh resources, if so Cluster implementation can override this method
- // because here after cancelling we try to get the job description and return it back
- try {
- return this.getJobDescriptorById(jobID);
- } catch (Exception e) {
- //its ok to fail to get status when the job is gone
- return null;
- }
- }
-
- public synchronized String submitBatchJobWithScript(String scriptPath, String workingDirectory) throws SSHApiException {
- this.scpTo(workingDirectory, scriptPath);
-
- // since this is a constant we do not ask users to fill this
-
-// RawCommandInfo rawCommandInfo = new RawCommandInfo(this.installedPath + this.jobManagerConfiguration.getSubmitCommand() + " " +
-// workingDirectory + File.separator + FilenameUtils.getName(scriptPath));
-
- RawCommandInfo rawCommandInfo = jobManagerConfiguration.getSubmitCommand(workingDirectory,scriptPath);
- StandardOutReader standardOutReader = new StandardOutReader();
- log.info("Executing RawCommand : " + rawCommandInfo.getCommand());
- CommandExecutor.executeCommand(rawCommandInfo, this.session, standardOutReader);
-
- //Check whether pbs submission is successful or not, if it failed throw and exception in submitJob method
- // with the error thrown in qsub command
- //
- String outputifAvailable = getOutputifAvailable(standardOutReader,"Error reading output of job submission",jobManagerConfiguration.getBaseSubmitCommand());
- OutputParser outputParser = jobManagerConfiguration.getParser();
- return outputParser.parseJobSubmission(outputifAvailable);
- }
-
- public synchronized String submitBatchJob(JobDescriptor jobDescriptor) throws SSHApiException {
- TransformerFactory factory = TransformerFactory.newInstance();
- URL resource = this.getClass().getClassLoader().getResource(jobManagerConfiguration.getJobDescriptionTemplateName());
-
- if (resource == null) {
- String error = "System configuration file '" + jobManagerConfiguration.getJobDescriptionTemplateName()
- + "' not found in the classpath";
- throw new SSHApiException(error);
- }
-
- Source xslt = new StreamSource(new File(resource.getPath()));
- Transformer transformer;
- StringWriter results = new StringWriter();
- File tempPBSFile = null;
- try {
- // generate the pbs script using xslt
- transformer = factory.newTransformer(xslt);
- Source text = new StreamSource(new ByteArrayInputStream(jobDescriptor.toXML().getBytes()));
- transformer.transform(text, new StreamResult(results));
- String scriptContent = results.toString().replaceAll("^[ |\t]*\n$", "");
- if (scriptContent.startsWith("\n")) {
- scriptContent = scriptContent.substring(1);
- }
-// log.debug("generated PBS:" + results.toString());
-
- // creating a temporary file using pbs script generated above
- int number = new SecureRandom().nextInt();
- number = (number < 0 ? -number : number);
-
- tempPBSFile = new File(Integer.toString(number) + jobManagerConfiguration.getScriptExtension());
- FileUtils.writeStringToFile(tempPBSFile, scriptContent);
-
- //reusing submitBatchJobWithScript method to submit a job
- String jobID = null;
- int retry = 3;
- while(retry>0) {
- try {
- jobID = this.submitBatchJobWithScript(tempPBSFile.getAbsolutePath(),
- jobDescriptor.getWorkingDirectory());
- retry=0;
- } catch (SSHApiException e) {
- retry--;
- if(retry==0) {
- throw e;
- }else{
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- log.error(e1.getMessage(), e1);
- }
- log.error("Error occured during job submission but doing a retry");
- }
- }
- }
- log.debug("Job has successfully submitted, JobID : " + jobID);
- if (jobID != null) {
- return jobID.replace("\n", "");
- } else {
- return null;
- }
- } catch (TransformerConfigurationException e) {
- throw new SSHApiException("Error parsing PBS transformation", e);
- } catch (TransformerException e) {
- throw new SSHApiException("Error generating PBS script", e);
- } catch (IOException e) {
- throw new SSHApiException("An exception occurred while connecting to server." +
- "Connecting server - " + serverInfo.getHost() + ":" + serverInfo.getPort() +
- " connecting user name - "
- + serverInfo.getUserName(), e);
- } finally {
- if (tempPBSFile != null) {
- tempPBSFile.delete();
- }
- }
- }
-
-
- public void generateJobScript(JobDescriptor jobDescriptor) throws SSHApiException {
- TransformerFactory factory = TransformerFactory.newInstance();
- URL resource = this.getClass().getClassLoader().getResource(jobManagerConfiguration.getJobDescriptionTemplateName());
-
- if (resource == null) {
- String error = "System configuration file '" + jobManagerConfiguration.getJobDescriptionTemplateName()
- + "' not found in the classpath";
- throw new SSHApiException(error);
- }
-
- Source xslt = new StreamSource(new File(resource.getPath()));
- Transformer transformer;
- StringWriter results = new StringWriter();
- File tempPBSFile = null;
- try {
- // generate the pbs script using xslt
- transformer = factory.newTransformer(xslt);
- Source text = new StreamSource(new ByteArrayInputStream(jobDescriptor.toXML().getBytes()));
- transformer.transform(text, new StreamResult(results));
- String scriptContent = results.toString().replaceAll("^[ |\t]*\n$", "");
- if (scriptContent.startsWith("\n")) {
- scriptContent = scriptContent.substring(1);
- }
-// log.debug("generated PBS:" + results.toString());
-
- // creating a temporary file using pbs script generated above
- int number = new SecureRandom().nextInt();
- number = (number < 0 ? -number : number);
-
- tempPBSFile = new File(Integer.toString(number) + jobManagerConfiguration.getScriptExtension());
- log.info("File Path: " + tempPBSFile.getAbsolutePath());
- log.info("File Content: " + scriptContent);
- FileUtils.writeStringToFile(tempPBSFile, scriptContent);
- } catch (TransformerConfigurationException e) {
- throw new SSHApiException("Error parsing PBS transformation", e);
- } catch (TransformerException e) {
- throw new SSHApiException("Error generating PBS script", e);
- } catch (IOException e) {
- throw new SSHApiException("An exception occurred while connecting to server." +
- "Connecting server - " + serverInfo.getHost() + ":" + serverInfo.getPort() +
- " connecting user name - "
- + serverInfo.getUserName(), e);
- } finally {
- if (tempPBSFile != null) {
- tempPBSFile.delete();
- }
- }
- }
-
-
-
- public synchronized JobDescriptor getJobDescriptorById(String jobID) throws SSHApiException {
- RawCommandInfo rawCommandInfo = jobManagerConfiguration.getMonitorCommand(jobID);
- StandardOutReader stdOutReader = new StandardOutReader();
- log.info("Executing RawCommand : " + rawCommandInfo.getCommand());
- CommandExecutor.executeCommand(rawCommandInfo, this.getSession(), stdOutReader);
- String result = getOutputifAvailable(stdOutReader, "Error getting job information from the resource !",jobManagerConfiguration.getBaseMonitorCommand());
- JobDescriptor jobDescriptor = new JobDescriptor();
- jobManagerConfiguration.getParser().parseSingleJob(jobDescriptor, result);
- return jobDescriptor;
- }
-
- public synchronized JobStatus getJobStatus(String jobID) throws SSHApiException {
- RawCommandInfo rawCommandInfo = jobManagerConfiguration.getMonitorCommand(jobID);
- StandardOutReader stdOutReader = new StandardOutReader();
- log.info("Executing RawCommand : " + rawCommandInfo.getCommand());
- CommandExecutor.executeCommand(rawCommandInfo, this.getSession(), stdOutReader);
- String result = getOutputifAvailable(stdOutReader, "Error getting job information from the resource !", jobManagerConfiguration.getBaseMonitorCommand());
- return jobManagerConfiguration.getParser().parseJobStatus(jobID, result);
- }
-
- @Override
- public String getJobIdByJobName(String jobName, String userName) throws SSHApiException {
- RawCommandInfo rawCommandInfo = jobManagerConfiguration.getJobIdMonitorCommand(jobName, userName);
- StandardOutReader stdOutReader = new StandardOutReader();
- log.info("Executing RawCommand : " + rawCommandInfo.getCommand());
- CommandExecutor.executeCommand(rawCommandInfo, this.getSession(), stdOutReader);
- String result = getOutputifAvailable(stdOutReader, "Error getting job information from the resource !",
- jobManagerConfiguration.getJobIdMonitorCommand(jobName,userName).getCommand());
- return jobManagerConfiguration.getParser().parseJobId(jobName, result);
- }
-
- private static void logDebug(String message) {
- if (log.isDebugEnabled()) {
- log.debug(message);
- }
- }
-
- public JobManagerConfiguration getJobManagerConfiguration() {
- return jobManagerConfiguration;
- }
-
- public void setJobManagerConfiguration(JobManagerConfiguration jobManagerConfiguration) {
- this.jobManagerConfiguration = jobManagerConfiguration;
- }
-
- public synchronized void scpTo(String remoteFile, String localFile) throws SSHApiException {
- int retry = 3;
- while (retry > 0) {
- try {
- if (!session.isConnected()) {
- session.connect();
- }
- log.info("Transfering file:/" + localFile + " To:" + serverInfo.getHost() + ":" + remoteFile);
- SSHUtils.scpTo(remoteFile, localFile, session);
- retry = 0;
- } catch (IOException e) {
- retry--;
- reconnect(serverInfo, authenticationInfo);
- if (retry == 0) {
- throw new SSHApiException("Failed during scping local file:" + localFile + " to remote file "
- + serverInfo.getHost() + ":rFile : " + remoteFile, e);
- }
- } catch (JSchException e) {
- retry--;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- log.error(e1.getMessage(), e1);
- }
- reconnect(serverInfo, authenticationInfo);
- if (retry == 0) {
- throw new SSHApiException("Failed during scping local file:" + localFile + " to remote file "
- + serverInfo.getHost() + ":rFile : " + remoteFile, e);
- }
- }
- }
- }
-
- public synchronized void scpFrom(String remoteFile, String localFile) throws SSHApiException {
- int retry = 3;
- while(retry>0) {
- try {
- if (!session.isConnected()) {
- session.connect();
- }
- log.info("Transfering from:" + serverInfo.getHost() + ":" + remoteFile + " To:" + "file:/" + localFile);
- SSHUtils.scpFrom(remoteFile, localFile, session);
- retry=0;
- } catch (IOException e) {
- retry--;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- log.error(e1.getMessage(), e1);
- }
- reconnect(serverInfo, authenticationInfo);
- if (retry == 0) {
- throw new SSHApiException("Failed during scping local file:" + localFile + " to remote file "
- + serverInfo.getHost() + ":rFile", e);
- }else{
- log.error("Error performing scp but doing a retry");
- }
- } catch (JSchException e) {
- retry--;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- log.error(e1.getMessage(), e1);
- }
- reconnect(serverInfo, authenticationInfo);
- if(retry==0) {
- throw new SSHApiException("Failed during scping local file:" + localFile + " to remote file "
- + serverInfo.getHost() + ":rFile", e);
- }else{
- log.error("Error performing scp but doing a retry");
- }
- }
- }
- }
-
- public synchronized void scpThirdParty(String remoteFileSource, String remoteFileTarget) throws SSHApiException {
- try {
- if(!session.isConnected()){
- session.connect();
- }
- log.info("Transfering from:" + remoteFileSource + " To: " + remoteFileTarget);
- SSHUtils.scpThirdParty(remoteFileSource, remoteFileTarget, session);
- } catch (IOException e) {
- throw new SSHApiException("Failed during scping file:" + remoteFileSource + " to remote file "
- +remoteFileTarget , e);
- } catch (JSchException e) {
- throw new SSHApiException("Failed during scping file:" + remoteFileSource + " to remote file "
- +remoteFileTarget, e);
- }
- }
-
- public synchronized void makeDirectory(String directoryPath) throws SSHApiException {
- int retry = 3;
- while (retry > 0) {
- try {
- if (!session.isConnected()) {
- session.connect();
- }
- log.info("Creating directory: " + serverInfo.getHost() + ":" + directoryPath);
- SSHUtils.makeDirectory(directoryPath, session);
- retry = 0;
- } catch (IOException e) {
- throw new SSHApiException("Failed during creating directory:" + directoryPath + " to remote file "
- + serverInfo.getHost() + ":rFile", e);
- } catch (JSchException e) {
- retry--;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- log.error(e1.getMessage(), e1);
- }
- reconnect(serverInfo, authenticationInfo);
- if (retry == 0) {
- throw new SSHApiException("Failed during creating directory :" + directoryPath + " to remote file "
- + serverInfo.getHost() + ":rFile", e);
- }
- } catch (SSHApiException e) {
- retry--;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- log.error(e1.getMessage(), e1);
- }
- reconnect(serverInfo, authenticationInfo);
- if (retry == 0) {
- throw new SSHApiException("Failed during creating directory :" + directoryPath + " to remote file "
- + serverInfo.getHost() + ":rFile", e);
- }
- }
- }
- }
-
- public synchronized List<String> listDirectory(String directoryPath) throws SSHApiException {
- int retry = 3;
- List<String> files = null;
- while (retry > 0) {
- try {
- if (!session.isConnected()) {
- session.connect();
- }
- log.info("Listing directory: " + serverInfo.getHost() + ":" + directoryPath);
- files = SSHUtils.listDirectory(directoryPath, session);
- retry=0;
- } catch (IOException e) {
- log.error(e.getMessage(), e);
- retry--;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- log.error(e1.getMessage(), e1);
- }
- reconnect(serverInfo, authenticationInfo);
- if (retry == 0) {
- throw new SSHApiException("Failed during listing directory:" + directoryPath + " to remote file ", e);
- }
- } catch (JSchException e) {
- retry--;
- reconnect(serverInfo, authenticationInfo);
- if (retry == 0) {
- throw new SSHApiException("Failed during listing directory :" + directoryPath + " to remote file ", e);
- }
- }catch (SSHApiException e) {
- retry--;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- log.error(e1.getMessage(), e1);
- }
- reconnect(serverInfo, authenticationInfo);
- if (retry == 0) {
- throw new SSHApiException("Failed during listing directory :" + directoryPath + " to remote file "
- + serverInfo.getHost() + ":rFile", e);
- }
- }
- }
- return files;
- }
-
- public synchronized void getJobStatuses(String userName, Map<String,JobStatus> jobIDs)throws SSHApiException {
- int retry = 3;
- RawCommandInfo rawCommandInfo = jobManagerConfiguration.getUserBasedMonitorCommand(userName);
- StandardOutReader stdOutReader = new StandardOutReader();
- while (retry > 0){
- try {
- log.info("Executing RawCommand : " + rawCommandInfo.getCommand());
- CommandExecutor.executeCommand(rawCommandInfo, this.getSession(), stdOutReader);
- retry=0;
- } catch (SSHApiException e) {
- retry--;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- log.error(e1.getMessage(), e1);
- }
- reconnect(serverInfo, authenticationInfo);
- if (retry == 0) {
- throw new SSHApiException("Failed Getting statuses to remote file", e);
- }
- }
- }
- String result = getOutputifAvailable(stdOutReader, "Error getting job information from the resource !", jobManagerConfiguration.getBaseMonitorCommand());
- jobManagerConfiguration.getParser().parseJobStatuses(userName, jobIDs, result);
- }
-
- public ServerInfo getServerInfo() {
- return serverInfo;
- }
-
- public AuthenticationInfo getAuthenticationInfo() {
- return authenticationInfo;
- }
-
- /**
- * This gaurantee to return a valid session
- *
- * @return
- */
- public Session getSession() {
- return this.session;
- }
-
- /**
- * This method will read standard output and if there's any it will be parsed
- *
- * @param jobIDReaderCommandOutput
- * @param errorMsg
- * @return
- * @throws SSHApiException
- */
- private String getOutputifAvailable(StandardOutReader jobIDReaderCommandOutput, String errorMsg, String command) throws SSHApiException {
- String stdOutputString = jobIDReaderCommandOutput.getStdOutputString();
- String stdErrorString = jobIDReaderCommandOutput.getStdErrorString();
- log.info("StandardOutput Returned:" + stdOutputString);
- log.info("StandardError Returned:" +stdErrorString);
- String[] list = command.split(File.separator);
- command = list[list.length - 1];
- // We are checking for stderr containing the command issued. Thus ignores the verbose logs in stderr.
- if (stdErrorString != null && stdErrorString.contains(command.trim()) && !stdErrorString.contains("Warning")) {
- log.error("Standard Error output : " + stdErrorString);
- throw new SSHApiException(errorMsg + "\n\r StandardOutput: "+ stdOutputString + "\n\r StandardError: "+ stdErrorString);
- }else if(stdOutputString.contains("error")){
- throw new SSHApiException(errorMsg + "\n\r StandardOutput: "+ stdOutputString + "\n\r StandardError: "+ stdErrorString);
- }
- return stdOutputString;
- }
-
- public void disconnect() throws SSHApiException {
- if(getSession().isConnected()){
- getSession().disconnect();
- }
- }
- /**
-
- * the file system abstraction which will be necessary to
- * perform certain file system operations.
- * @return the new default JSch implementation.
- * @throws JSchException
- * known host keys cannot be loaded.
- */
- protected JSch createJSch(AuthenticationInfo authenticationInfo) throws JSchException {
-// final File fs = new File(System.getProperty("user.home"));
- if(authenticationInfo instanceof GSIAuthenticationInfo){
- final JSch jsch = new ExtendedJSch();
-// knownHosts(jsch, fs);
- return jsch;
- }else{
- final JSch jsch = new JSch();
-// knownHosts(jsch, fs);
- return jsch;
- }
-
- }
- /**
- * Create a new remote session for the requested address.
- *
- * @param user
- * login to authenticate as.
- * @param host
- * server name to connect to.
- * @param port
- * port number of the SSH daemon (typically 22).
- * @return new session instance, but otherwise unconfigured.
- * @throws JSchException
- * the session could not be created.
- */
- private Session createSession(JSch jsch, String user, String host, int port) throws JSchException {
- final Session session = jsch.getSession(user, host, port);
- // We retry already in getSession() method. JSch must not retry
- // on its own.
- session.setConfig("MaxAuthTries", "1"); //$NON-NLS-1$ //$NON-NLS-2$
- session.setTimeout(Integer.parseInt(configReader.getConfiguration(SSH_SESSION_TIMEOUT)));
- java.util.Properties config = this.configReader.getProperties();
- session.setConfig(config);
-
- return session;
- }
- private static void knownHosts(final JSch sch,final File home) throws JSchException {
- if (home == null)
- return;
- final File known_hosts = new File(new File(home, ".ssh"), "known_hosts"); //$NON-NLS-1$ //$NON-NLS-2$
- try {
- final FileInputStream in = new FileInputStream(known_hosts);
- try {
- sch.setKnownHosts(in);
- } finally {
- in.close();
- }
- } catch (FileNotFoundException none) {
- // Oh well. They don't have a known hosts in home.
- } catch (IOException err) {
- // Oh well. They don't have a known hosts in home.
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/JobStatus.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/JobStatus.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/JobStatus.java
deleted file mode 100644
index 66c5e62..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/JobStatus.java
+++ /dev/null
@@ -1,112 +0,0 @@
- /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl;
-
- import javax.print.attribute.standard.JobState;
-
- /**
- * This will contains all the PBS specific job statuses.
- * C - Job is completed after having run/
- * E - Job is exiting after having run.
- * H - Job is held.
- * Q - job is queued, eligible to run or routed.
- * R - job is running.
- * T - job is being moved to new location.
- * W - job is waiting for its execution time
- * (-a option) to be reached.
- * S - (Unicos only) job is suspend.
- */
- public enum JobStatus {
- C, E, H, Q, R, T, W, S,U,F,CA,CD,CF,CG,NF,PD,PR,TO,qw,t,r,h,Er,Eqw,PEND,RUN,PSUSP,USUSP,SSUSP,DONE,EXIT,UNKWN,ZOMBI;
-
- public static JobStatus fromString(String status){
- if(status != null){
- if("C".equals(status)){
- return JobStatus.C;
- }else if("E".equals(status)){
- return JobStatus.E;
- }else if("H".equals(status)){
- return JobStatus.H;
- }else if("Q".equals(status)){
- return JobStatus.Q;
- }else if("R".equals(status)){
- return JobStatus.R;
- }else if("T".equals(status)){
- return JobStatus.T;
- }else if("W".equals(status)){
- return JobStatus.W;
- }else if("S".equals(status)){
- return JobStatus.S;
- }else if("F".equals(status)){
- return JobStatus.F;
- }else if("S".equals(status)){
- return JobStatus.S;
- }else if("CA".equals(status)){
- return JobStatus.CA;
- }else if("CF".equals(status)){
- return JobStatus.CF;
- }else if("CD".equals(status)){
- return JobStatus.CD;
- }else if("CG".equals(status)){
- return JobStatus.CG;
- }else if("NF".equals(status)){
- return JobStatus.NF;
- }else if("PD".equals(status)){
- return JobStatus.PD;
- }else if("PR".equals(status)){
- return JobStatus.PR;
- }else if("TO".equals(status)){
- return JobStatus.TO;
- }else if("U".equals(status)){
- return JobStatus.U;
- }else if("qw".equals(status)){
- return JobStatus.qw;
- }else if("t".equals(status)){
- return JobStatus.t;
- }else if("r".equals(status)){
- return JobStatus.r;
- }else if("h".equals(status)){
- return JobStatus.h;
- }else if("Er".equals(status)){
- return JobStatus.Er;
- }else if("Eqw".equals(status)){
- return JobStatus.Er;
- }else if("RUN".equals(status)){ // LSF starts here
- return JobStatus.RUN;
- }else if("PEND".equals(status)){
- return JobStatus.PEND;
- }else if("DONE".equals(status)){
- return JobStatus.DONE;
- }else if("PSUSP".equals(status)){
- return JobStatus.PSUSP;
- }else if("USUSP".equals(status)){
- return JobStatus.USUSP;
- }else if("SSUSP".equals(status)){
- return JobStatus.SSUSP;
- }else if("EXIT".equals(status)){
- return JobStatus.EXIT;
- }else if("ZOMBI".equals(status)){
- return JobStatus.ZOMBI;
- }
- }
- return JobStatus.U;
- }
- }
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/PBSCluster.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/PBSCluster.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/PBSCluster.java
deleted file mode 100644
index 58d6a3f..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/PBSCluster.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl;
-
-import com.jcraft.jsch.*;
-import org.apache.airavata.gsi.ssh.api.*;
-import org.apache.airavata.gsi.ssh.api.authentication.*;
-import org.apache.airavata.gsi.ssh.api.job.JobManagerConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * This is the default implementation of a cluster.
- * this has most of the methods to be used by the end user of the
- * library.
- */
-public class PBSCluster extends GSISSHAbstractCluster {
- private static final Logger log = LoggerFactory.getLogger(PBSCluster.class);
-
-
- public PBSCluster(JobManagerConfiguration jobManagerConfiguration) {
- super(jobManagerConfiguration);
- }
- public PBSCluster(ServerInfo serverInfo, AuthenticationInfo authenticationInfo, JobManagerConfiguration config) throws SSHApiException {
- super(serverInfo, authenticationInfo,config);
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/RawCommandInfo.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/RawCommandInfo.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/RawCommandInfo.java
deleted file mode 100644
index 0e9d16e..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/RawCommandInfo.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl;
-
-import org.apache.airavata.gsi.ssh.api.CommandInfo;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 8/14/13
- * Time: 5:18 PM
- */
-
-/**
- * The raw command information. String returned by getCommand is directly executed in SSH
- * shell. E.g :- getCommand return string set for rawCommand - "/opt/torque/bin/qsub /home/ogce/test.pbs".
- */
-public class RawCommandInfo implements CommandInfo {
-
- private String rawCommand;
-
- public RawCommandInfo(String cmd) {
- this.rawCommand = cmd;
- }
-
- public String getCommand() {
- return this.rawCommand;
- }
-
- public String getRawCommand() {
- return rawCommand;
- }
-
- public void setRawCommand(String rawCommand) {
- this.rawCommand = rawCommand;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/SSHUserInfo.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/SSHUserInfo.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/SSHUserInfo.java
deleted file mode 100644
index 68d7ff7..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/SSHUserInfo.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl;
-
-import com.jcraft.jsch.UserInfo;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 9/20/13
- * Time: 2:31 PM
- */
-
-public class SSHUserInfo implements UserInfo {
-
- private String password;
-
- public SSHUserInfo(String pwd) {
- this.password = pwd;
- }
-
- public String getPassphrase() {
- return this.password;
- }
-
- public String getPassword() {
- return this.password;
- }
-
- public boolean promptPassword(String message) {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean promptPassphrase(String message) {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean promptYesNo(String message) {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void showMessage(String message) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/StandardOutReader.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/StandardOutReader.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/StandardOutReader.java
deleted file mode 100644
index 9f5fa4c..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/StandardOutReader.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl;
-
-import com.jcraft.jsch.Channel;
-import com.jcraft.jsch.ChannelExec;
-
-import org.apache.airavata.gsi.ssh.api.CommandOutput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-public class StandardOutReader implements CommandOutput {
-
- private static final Logger logger = LoggerFactory.getLogger(StandardOutReader.class);
- String stdOutputString = null;
- ByteArrayOutputStream errorStream = new ByteArrayOutputStream();
- public void onOutput(Channel channel) {
- try {
- StringBuffer pbsOutput = new StringBuffer("");
- InputStream inputStream = channel.getInputStream();
- byte[] tmp = new byte[1024];
- do {
- while (inputStream.available() > 0) {
- int i = inputStream.read(tmp, 0, 1024);
- if (i < 0) break;
- pbsOutput.append(new String(tmp, 0, i));
- }
- } while (!channel.isClosed()) ;
- String output = pbsOutput.toString();
- this.setStdOutputString(output);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
-
- }
-
-
- public void exitCode(int code) {
- System.out.println("Program exit code - " + code);
- }
-
- public String getStdOutputString() {
- return stdOutputString;
- }
-
- public void setStdOutputString(String stdOutputString) {
- this.stdOutputString = stdOutputString;
- }
-
- public String getStdErrorString() {
- return errorStream.toString();
- }
-
- public OutputStream getStandardError() {
- return errorStream;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/SystemCommandOutput.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/SystemCommandOutput.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/SystemCommandOutput.java
deleted file mode 100644
index 37e1d69..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/SystemCommandOutput.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl;
-
-import com.jcraft.jsch.Channel;
-import org.apache.airavata.gsi.ssh.api.CommandOutput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 8/15/13
- * Time: 10:44 AM
- */
-
-public class SystemCommandOutput implements CommandOutput {
-
- private static final Logger logger = LoggerFactory.getLogger(SystemCommandOutput.class);
- public void onOutput(Channel channel) {
- try {
- InputStream inputStream = channel.getInputStream();
-
- byte[] tmp = new byte[1024];
- while (true) {
- while (inputStream.available() > 0) {
- int i = inputStream.read(tmp, 0, 1024);
- if (i < 0) break;
- System.out.print(new String(tmp, 0, i));
- }
- if (channel.isClosed()) {
- System.out.println("exit-status: " + channel.getExitStatus());
- break;
- }
- try {
- Thread.sleep(1000);
- } catch (Exception ignored) {
- }
- }
-
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
-
- }
-
- public OutputStream getStandardError() {
- return System.err;
- }
-
- public void exitCode(int code) {
- System.out.println("Program exit code - " + code);
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPasswordAuthenticationInfo.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPasswordAuthenticationInfo.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPasswordAuthenticationInfo.java
deleted file mode 100644
index 2679f57..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPasswordAuthenticationInfo.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl.authentication;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 9/20/13
- * Time: 12:15 PM
- */
-
-import org.apache.airavata.gsi.ssh.api.authentication.GSIAuthenticationInfo;
-import org.apache.airavata.gsi.ssh.api.authentication.SSHPasswordAuthentication;
-import org.ietf.jgss.*;
-
-/**
- * An authenticator used for raw SSH sessions. Gives SSH user name, password
- * directly.
- * This is only an example implementation.
- */
-public class DefaultPasswordAuthenticationInfo implements SSHPasswordAuthentication {
-
- private String password;
-
- public DefaultPasswordAuthenticationInfo(String pwd) {
- this.password = pwd;
- }
-
- public String getPassword(String userName, String hostName) {
- return password;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPublicKeyAuthentication.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPublicKeyAuthentication.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPublicKeyAuthentication.java
deleted file mode 100644
index cadee38..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPublicKeyAuthentication.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl.authentication;
-
-import org.apache.airavata.gsi.ssh.api.authentication.SSHPublicKeyAuthentication;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 10/4/13
- * Time: 11:44 AM
- */
-
-/**
- * Default public key authentication.
- * Note : This is only a sample implementation.
- */
-public class DefaultPublicKeyAuthentication implements SSHPublicKeyAuthentication {
-
- private byte[] privateKey;
- private byte[] publicKey;
- private String passPhrase = null;
-
- public DefaultPublicKeyAuthentication(byte[] priv, byte[] pub) {
- this.privateKey = priv;
- this.publicKey = pub;
- }
-
- public DefaultPublicKeyAuthentication(byte[] priv, byte[] pub, String pass) {
- this.privateKey = priv;
- this.publicKey = pub;
- this.passPhrase = pass;
- }
-
- public String getPassPhrase() {
- return passPhrase;
- }
-
- public void bannerMessage(String message) {
- System.out.println(message);
- }
-
- public byte[] getPrivateKey(String userName, String hostName) {
- return privateKey;
- }
-
- public byte[] getPublicKey(String userName, String hostName) {
- return publicKey;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPublicKeyFileAuthentication.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPublicKeyFileAuthentication.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPublicKeyFileAuthentication.java
deleted file mode 100644
index 495d8e1..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/DefaultPublicKeyFileAuthentication.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl.authentication;
-
-import org.apache.airavata.gsi.ssh.api.authentication.SSHPublicKeyFileAuthentication;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 10/4/13
- * Time: 11:40 AM
- */
-
-/**
- * Default public key authentication using files.
- * Note : This is only a sample implementation.
- */
-public class DefaultPublicKeyFileAuthentication implements SSHPublicKeyFileAuthentication {
-
- private String publicKeyFile;
- private String privateKeyFile;
- private String passPhrase = null;
-
- public DefaultPublicKeyFileAuthentication(String pubFile, String privFile) {
- this.publicKeyFile = pubFile;
- this.privateKeyFile = privFile;
-
- }
-
- public DefaultPublicKeyFileAuthentication(String pubFile, String privFile, String pass) {
- this.publicKeyFile = pubFile;
- this.privateKeyFile = privFile;
- this.passPhrase = pass;
-
- }
-
- public String getPassPhrase() {
- return passPhrase;
- }
-
- public void bannerMessage(String message) {
- System.out.println(message);
- }
-
- public String getPublicKeyFile(String userName, String hostName) {
- return publicKeyFile;
- }
-
- public String getPrivateKeyFile(String userName, String hostName) {
- return privateKeyFile;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/MyProxyAuthenticationInfo.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/MyProxyAuthenticationInfo.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/MyProxyAuthenticationInfo.java
deleted file mode 100644
index b95ae99..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/authentication/MyProxyAuthenticationInfo.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.impl.authentication;
-
-import org.apache.airavata.gsi.ssh.api.authentication.GSIAuthenticationInfo;
-import org.globus.myproxy.MyProxy;
-import org.globus.myproxy.MyProxyException;
-import org.ietf.jgss.GSSCredential;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 8/14/13
- * Time: 5:22 PM
- */
-
-public class MyProxyAuthenticationInfo extends GSIAuthenticationInfo {
-
- public static final String X509_CERT_DIR = "X509_CERT_DIR";
- private String userName;
- private String password;
- private String myProxyUrl;
- private int myProxyPort;
- private int lifeTime;
-
- public MyProxyAuthenticationInfo(String userName, String password, String myProxyUrl, int myProxyPort,
- int life, String certificatePath) {
- this.userName = userName;
- this.password = password;
- this.myProxyUrl = myProxyUrl;
- this.myProxyPort = myProxyPort;
- this.lifeTime = life;
- properties.setProperty(X509_CERT_DIR, certificatePath);
- }
-
- public String getUserName() {
- return userName;
- }
-
- public void setUserName(String userName) {
- this.userName = userName;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public String getMyProxyUrl() {
- return myProxyUrl;
- }
-
- public void setMyProxyUrl(String myProxyUrl) {
- this.myProxyUrl = myProxyUrl;
- }
-
- public int getMyProxyPort() {
- return myProxyPort;
- }
-
- public void setMyProxyPort(int myProxyPort) {
- this.myProxyPort = myProxyPort;
- }
-
- public int getLifeTime() {
- return lifeTime;
- }
-
- public void setLifeTime(int lifeTime) {
- this.lifeTime = lifeTime;
- }
-
- public GSSCredential getCredentials() throws SecurityException {
- return getMyProxyCredentials();
- }
-
- private GSSCredential getMyProxyCredentials() throws SecurityException {
- MyProxy myproxy = new MyProxy(this.myProxyUrl, this.myProxyPort);
- try {
- return myproxy.get(this.getUserName(), this.password, this.lifeTime);
- } catch (MyProxyException e) {
- throw new SecurityException("Error getting proxy credentials", e);
- }
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/jsch/ExtendedJSch.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/jsch/ExtendedJSch.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/jsch/ExtendedJSch.java
deleted file mode 100644
index 047580e..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/jsch/ExtendedJSch.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.jsch;
-
-import com.jcraft.jsch.ExtendedSession;
-import com.jcraft.jsch.JSch;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.Session;
-import org.apache.airavata.gsi.ssh.api.authentication.GSIAuthenticationInfo;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 8/15/13
- * Time: 10:03 AM
- */
-
-/**
- * Extended JSch to incorporate authentication info.
- */
-public class ExtendedJSch extends JSch {
-
- private GSIAuthenticationInfo authenticationInfo;
-
- public ExtendedJSch() {
- super();
- }
-
- public GSIAuthenticationInfo getAuthenticationInfo() {
- return authenticationInfo;
- }
-
- public void setAuthenticationInfo(GSIAuthenticationInfo authenticationInfo) {
- this.authenticationInfo = authenticationInfo;
- }
-
- public Session getSession(String username, String host, int port) throws JSchException {
-
- if(host==null){
- throw new JSchException("host must not be null.");
- }
- Session s = new ExtendedSession(this, username, host, port);
- return s;
-
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/listener/JobSubmissionListener.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/listener/JobSubmissionListener.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/listener/JobSubmissionListener.java
deleted file mode 100644
index 426cf20..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/listener/JobSubmissionListener.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.listener;
-
-import org.apache.airavata.gsi.ssh.api.SSHApiException;
-import org.apache.airavata.gsi.ssh.api.job.JobDescriptor;
-import org.apache.airavata.gsi.ssh.impl.JobStatus;
-
-/**
- * This interface can be implemented by the end user of the API
- * to do desired operations based on the job status change. API has a
- * default joblistener which can be used by the end users, but its
- * configurable and can be parseSingleJob to jobsubmission methods.
- */
-public abstract class JobSubmissionListener {
-
- private JobStatus jobStatus = JobStatus.U;
-
- /**
- * This can be usd to perform some operation during status change
- *
- * @param jobDescriptor
- * @throws SSHApiException
- */
- public abstract void statusChanged(JobDescriptor jobDescriptor) throws SSHApiException;
-
- /**
- * This can be usd to perform some operation during status change
- * @param jobStatus
- * @throws SSHApiException
- */
- public abstract void statusChanged(JobStatus jobStatus) throws SSHApiException;
-
-
- public JobStatus getJobStatus() {
- return jobStatus;
- }
-
- public void setJobStatus(JobStatus jobStatus) {
- this.jobStatus = jobStatus;
- }
-
- /**
- * This method is used to block the process until the currentStatus of the job is DONE or FAILED
- */
- public void waitFor() throws SSHApiException{
- while (!isJobDone()) {
- synchronized (this) {
- try {
- wait();
- } catch (InterruptedException e) {}
- }
- }
- }
-
- /**
- * BAsed on the implementation user can define how to decide the job done
- * scenario
- * @return
- * @throws SSHApiException
- */
- public abstract boolean isJobDone() throws SSHApiException;
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/CommonUtils.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/CommonUtils.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/CommonUtils.java
deleted file mode 100644
index c6cd5c8..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/CommonUtils.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.util;
-
-import org.apache.airavata.gsi.ssh.api.job.*;
-import org.apache.airavata.gsi.ssh.impl.JobStatus;
-
-public class CommonUtils {
- /**
- * This returns true if the give job is finished
- * otherwise false
- *
- * @param job
- * @return
- */
- public static boolean isJobFinished(JobDescriptor job) {
- if (JobStatus.C.toString().equals(job.getStatus())) {
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * This will read
- *
- * @param maxWalltime
- * @return
- */
- public static String maxWallTimeCalculator(int maxWalltime) {
- if (maxWalltime < 60) {
- return "00:" + maxWalltime + ":00";
- } else {
- int minutes = maxWalltime % 60;
- int hours = maxWalltime / 60;
- return hours + ":" + minutes + ":00";
- }
- }
- public static String maxWallTimeCalculatorForLSF(int maxWalltime) {
- if (maxWalltime < 60) {
- return "00:" + maxWalltime;
- } else {
- int minutes = maxWalltime % 60;
- int hours = maxWalltime / 60;
- return hours + ":" + minutes;
- }
- }
- public static JobManagerConfiguration getPBSJobManager(String installedPath) {
- return new PBSJobConfiguration("PBSTemplate.xslt",".pbs", installedPath, new PBSOutputParser());
- }
-
- public static JobManagerConfiguration getSLURMJobManager(String installedPath) {
- return new SlurmJobConfiguration("SLURMTemplate.xslt", ".slurm", installedPath, new SlurmOutputParser());
- }
-
- public static JobManagerConfiguration getUGEJobManager(String installedPath) {
- return new UGEJobConfiguration("UGETemplate.xslt", ".pbs", installedPath, new UGEOutputParser());
- }
-
- public static JobManagerConfiguration getLSFJobManager(String installedPath) {
- return new LSFJobConfiguration("LSFTemplate.xslt", ".lsf", installedPath, new LSFOutputParser());
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHAPIUIKeyboardInteractive.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHAPIUIKeyboardInteractive.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHAPIUIKeyboardInteractive.java
deleted file mode 100644
index e3c0671..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHAPIUIKeyboardInteractive.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.util;
-
-import com.jcraft.jsch.UIKeyboardInteractive;
-import com.jcraft.jsch.UserInfo;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 10/4/13
- * Time: 8:34 AM
- */
-
-/**
- * This is dummy class, the keyboard interactivity is not really used when acting as an API.
- * But to get things working we have this.
- */
-public class SSHAPIUIKeyboardInteractive implements UIKeyboardInteractive, UserInfo {
-
- private String password;
-
- public SSHAPIUIKeyboardInteractive(String pwd) {
- this.password = pwd;
- }
-
- public String[] promptKeyboardInteractive(String destination, String name,
- String instruction, String[] prompt, boolean[] echo) {
- return null;
- }
-
- public String getPassphrase() {
- return password;
- }
-
- public String getPassword() {
- return password;
- }
-
- public boolean promptPassword(String message) {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean promptPassphrase(String message) {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean promptYesNo(String message) {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void showMessage(String message) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/7b809747/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHKeyPasswordHandler.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHKeyPasswordHandler.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHKeyPasswordHandler.java
deleted file mode 100644
index 0e1fc2a..0000000
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHKeyPasswordHandler.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.airavata.gsi.ssh.util;
-
-import com.jcraft.jsch.UserInfo;
-import org.apache.airavata.gsi.ssh.api.authentication.SSHKeyAuthentication;
-import sun.reflect.generics.reflectiveObjects.NotImplementedException;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 10/4/13
- * Time: 2:22 PM
- */
-
-/**
- * This class is used to get the pass phrase to decrypt public/private keys.
- */
-public class SSHKeyPasswordHandler implements UserInfo {
-
- private SSHKeyAuthentication keyAuthenticationHandler;
-
- public SSHKeyPasswordHandler(SSHKeyAuthentication handler) {
- this.keyAuthenticationHandler = handler;
- }
-
- public String getPassphrase() {
- return keyAuthenticationHandler.getPassPhrase();
- }
-
- public String getPassword() {
- throw new NotImplementedException();
- }
-
- public boolean promptPassword(String message) {
- return false;
- }
-
- public boolean promptPassphrase(String message) {
- return true;
- }
-
- public boolean promptYesNo(String message) {
- return false;
- }
-
- public void showMessage(String message) {
- keyAuthenticationHandler.bannerMessage(message);
- }
-}