http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPApiException.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPApiException.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPApiException.java new file mode 100644 index 0000000..884b543 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPApiException.java @@ -0,0 +1,33 @@ +/* + * + * 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.data.manager.core.remote.client.scp; + +public class SCPApiException extends Exception { + + public SCPApiException(String message) { + super(message); + } + + public SCPApiException(String message, Exception e) { + super(message, e); + } + +}
http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPStorageClient.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPStorageClient.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPStorageClient.java new file mode 100644 index 0000000..db85c28 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPStorageClient.java @@ -0,0 +1,405 @@ +/* + * + * 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.data.manager.core.remote.client.scp; + +import com.jcraft.jsch.*; +import org.apache.airavata.data.manager.core.remote.client.RemoteStorageClient; +import org.apache.airavata.model.data.transfer.LSEntryModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.util.List; +import java.util.Properties; +import java.util.UUID; + +public class SCPStorageClient implements RemoteStorageClient { + private final static Logger logger = LoggerFactory.getLogger(SCPStorageClient.class); + + private JSch jSch; + private Session session; + + /** + * Constructor + * @param hostName + * @param port + * @param loginUsername + * @param password + * @throws JSchException + */ + public SCPStorageClient(String hostName, int port, String loginUsername, String password) throws JSchException { + Properties config = new java.util.Properties(); + config.put("StrictHostKeyChecking", "no"); + jSch = new JSch(); + jSch.addIdentity(loginUsername, password); + session = jSch.getSession(loginUsername, hostName, port); + session.setConfig(config); + session.connect(); + } + + /** + * Constructor + * @param hostName + * @param port + * @param loginUsername + * @param privateKey + * @param publicKey + * @param passPhrase + * @throws JSchException + */ + public SCPStorageClient(String hostName, int port, String loginUsername, byte[] privateKey, byte[] publicKey, + byte[] passPhrase) throws JSchException { + Properties config = new java.util.Properties(); + config.put("StrictHostKeyChecking", "no"); + jSch = new JSch(); + jSch.addIdentity(UUID.randomUUID().toString(), privateKey, publicKey, passPhrase); + session = jSch.getSession(loginUsername, hostName, port); + session.setConfig(config); + session.connect(); + } + + + /** + * Reads a remote file, write it to local temporary directory and returns a File + * + * @param filePath + * @return + * @throws Exception + */ + @Override + public File readFile(String filePath) throws Exception { + if (!session.isConnected()) + session.connect(); + + FileOutputStream fos; + String localFile = System.getProperty("java.io.tmpdir") + File.separator + UUID.randomUUID().toString(); + String prefix = null; + if (new File(localFile).isDirectory()) { + prefix = localFile + File.separator; + } + + // exec 'scp -f remotefile' remotely + String command = "scp -f " + filePath; + Channel channel = session.openChannel("exec"); + ((ChannelExec) channel).setCommand(command); + + StandardOutReader stdOutReader = new StandardOutReader(); + ((ChannelExec) channel).setErrStream(stdOutReader.getStandardError()); + // get I/O streams for remote scp + OutputStream out = channel.getOutputStream(); + InputStream in = channel.getInputStream(); + + if (!channel.isClosed()) { + channel.connect(); + } + + byte[] buf = new byte[1024]; + + // send '\0' + buf[0] = 0; + out.write(buf, 0, 1); + out.flush(); + + while (true) { + int c = checkAck(in); + if (c != 'C') { + break; + } + + // read '0644 ' + in.read(buf, 0, 5); + + long filesize = 0L; + while (true) { + if (in.read(buf, 0, 1) < 0) { + // error + break; + } + if (buf[0] == ' ') break; + filesize = filesize * 10L + (long) (buf[0] - '0'); + } + + String file = null; + for (int i = 0; ; i++) { + in.read(buf, i, 1); + if (buf[i] == (byte) 0x0a) { + file = new String(buf, 0, i); + break; + } + } + + // send '\0' + buf[0] = 0; + out.write(buf, 0, 1); + out.flush(); + + // read a content of lfile + localFile = prefix == null ? localFile : prefix + file; + fos = new FileOutputStream(localFile); + int foo; + while (true) { + if (buf.length < filesize) foo = buf.length; + else foo = (int) filesize; + foo = in.read(buf, 0, foo); + if (foo < 0) { + // error + break; + } + fos.write(buf, 0, foo); + filesize -= foo; + if (filesize == 0L) break; + } + fos.close(); + fos = null; + + if (checkAck(in) != 0) { + String error = "Error transferring the file content"; + logger.error(error); + throw new SCPApiException(error); + } + + // send '\0' + buf[0] = 0; + out.write(buf, 0, 1); + out.flush(); + } + stdOutReader.onOutput(channel); + if (stdOutReader.getStdErrorString().contains("scp:")) { + throw new SCPApiException(stdOutReader.getStdErrorString()); + } + + return new File(localFile); + } + + /** + * Writes the source file in the local storage to specified path in the remote storage + * + * @param sourceFile + * @param filePath + * @return + * @throws Exception + */ + @Override + public void writeFile(File sourceFile, String filePath) throws Exception { + if (!session.isConnected()) + session.connect(); + + FileInputStream fis; + String localFile = sourceFile.getAbsolutePath(); + boolean ptimestamp = true; + + // exec 'scp -t rfile' remotely + String command = "scp " + (ptimestamp ? "-p" : "") + " -t " + filePath; + Channel channel = session.openChannel("exec"); + + StandardOutReader stdOutReader = new StandardOutReader(); + ((ChannelExec) channel).setErrStream(stdOutReader.getStandardError()); + ((ChannelExec) channel).setCommand(command); + + // get I/O streams for remote scp + OutputStream out = channel.getOutputStream(); + InputStream in = channel.getInputStream(); + + channel.connect(); + + if (checkAck(in) != 0) { + String error = "Error Reading input Stream"; + logger.error(error); + throw new SCPApiException(error); + } + + File _lfile = new File(localFile); + + if (ptimestamp) { + command = "T" + (_lfile.lastModified() / 1000) + " 0"; + // The access time should be sent here, + // but it is not accessible with JavaAPI ;-< + command += (" " + (_lfile.lastModified() / 1000) + " 0\n"); + out.write(command.getBytes()); + out.flush(); + if (checkAck(in) != 0) { + String error = "Error Reading input Stream"; + logger.error(error); + throw new SCPApiException(error); + } + } + + // send "C0644 filesize filename", where filename should not include '/' + long filesize = _lfile.length(); + command = "C0644 " + filesize + " "; + if (localFile.lastIndexOf('/') > 0) { + command += localFile.substring(localFile.lastIndexOf('/') + 1); + } else { + command += localFile; + } + command += "\n"; + out.write(command.getBytes()); + out.flush(); + if (checkAck(in) != 0) { + String error = "Error Reading input Stream"; + logger.error(error); + throw new SCPApiException(error); + } + + // send a content of localFile + fis = new FileInputStream(localFile); + byte[] buf = new byte[1024]; + while (true) { + int len = fis.read(buf, 0, buf.length); + if (len <= 0) break; + out.write(buf, 0, len); //out.flush(); + } + fis.close(); + fis = null; + // send '\0' + buf[0] = 0; + out.write(buf, 0, 1); + out.flush(); + if (checkAck(in) != 0) { + String error = "Error Reading input Stream"; + logger.error(error); + throw new SCPApiException(error); + } + out.close(); + stdOutReader.onOutput(channel); + + + channel.disconnect(); + if (stdOutReader.getStdErrorString().contains("scp:")) { + throw new SCPApiException(stdOutReader.getStdErrorString()); + } + } + + /** + * Returns a directory listing of the specified directory + * + * @param directoryPath + * @return + * @throws Exception + */ + @Override + public List<LSEntryModel> getDirectoryListing(String directoryPath) throws Exception { + return null; + } + + /** + * Move the specified file from source to destination within the same storage resource + * + * @param currentPath + * @param newPath + * @throws Exception + */ + @Override + public void moveFile(String currentPath, String newPath) throws Exception { + + } + + /** + * @param sourcePath + * @param destinationPath + * @throws Exception + */ + @Override + public void copyFile(String sourcePath, String destinationPath) throws Exception { + + } + + /** + * Rename file with the given name + * + * @param filePath + * @param newFileName + * @throws Exception + */ + @Override + public void renameFile(String filePath, String newFileName) throws Exception { + + } + + /** + * Delete the specified file + * + * @param filePath + * @throws Exception + */ + @Override + public void deleteFile(String filePath) throws Exception { + + } + + /** + * Create new directory in the specified file + * + * @param newDirPath + * @throws Exception + */ + @Override + public void mkdir(String newDirPath) throws Exception { + + } + + /** + * Checks whether specified file exists in the remote storage system + * + * @param filePath + * @return + * @throws Exception + */ + @Override + public boolean checkFileExists(String filePath) throws Exception { + return false; + } + + /** + * Checks whether the given path is a directory + * + * @param filePath + * @return + * @throws Exception + */ + @Override + public boolean checkIsDirectory(String filePath) throws Exception { + return false; + } + + private int checkAck(InputStream in) throws IOException { + int b = in.read(); + if (b == 0) return b; + if (b == -1) return b; + + if (b == 1 || b == 2) { + StringBuffer sb = new StringBuffer(); + int c; + do { + c = in.read(); + sb.append((char) c); + } + while (c != '\n'); + if (b == 1) { // error + System.out.print(sb.toString()); + } + if (b == 2) { // fatal error + System.out.print(sb.toString()); + } + } + return b; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/StandardOutReader.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/StandardOutReader.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/StandardOutReader.java new file mode 100644 index 0000000..f7c7d43 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/StandardOutReader.java @@ -0,0 +1,86 @@ +/* + * + * 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.data.manager.core.remote.client.scp; + +import com.jcraft.jsch.Channel; + +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(); + private int exitCode; + + 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); + this.exitCode = code; + } + + @Override + public int getExitCode() { + return exitCode; + } + + 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/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/sftp/SFTPStorageClient.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/sftp/SFTPStorageClient.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/sftp/SFTPStorageClient.java new file mode 100644 index 0000000..c802498 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/sftp/SFTPStorageClient.java @@ -0,0 +1,209 @@ +/* + * + * 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.data.manager.core.remote.client.sftp; + +import com.jcraft.jsch.ChannelSftp; +import com.jcraft.jsch.JSch; +import com.jcraft.jsch.JSchException; +import com.jcraft.jsch.Session; +import org.apache.airavata.data.manager.core.remote.client.RemoteStorageClient; +import org.apache.airavata.model.data.transfer.LSEntryModel; +import org.apache.airavata.model.data.transfer.LSEntryType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.util.*; + +public class SFTPStorageClient implements RemoteStorageClient { + private final static Logger logger = LoggerFactory.getLogger(SFTPStorageClient.class); + + private JSch jSch; + private Session session; + private ChannelSftp sftpChannel; + private final String hostName; + + public SFTPStorageClient(String hostName, int port, String loginUsername, String password) throws JSchException { + this.hostName = hostName; + Properties config = new java.util.Properties(); + config.put("StrictHostKeyChecking", "no"); + jSch = new JSch(); + jSch.addIdentity(loginUsername, password); + session = jSch.getSession(loginUsername, hostName, port); + session.setConfig(config); + session.connect(); + sftpChannel = (ChannelSftp) session.openChannel("sftp"); + } + + public SFTPStorageClient(String hostName, int port, String loginUsername, byte[] privateKey, byte[] publicKey, + byte[] passPhrase) throws JSchException { + this.hostName = hostName; + Properties config = new java.util.Properties(); + config.put("StrictHostKeyChecking", "no"); + jSch = new JSch(); + jSch.addIdentity(UUID.randomUUID().toString(), privateKey, publicKey, passPhrase); + session = jSch.getSession(loginUsername, hostName, port); + session.setConfig(config); + session.connect(); + sftpChannel = (ChannelSftp) session.openChannel("sftp"); + } + + /** + * Reads a remote file, write it to local temporary directory and returns a file pointer to it + * + * @param filePath + * @return + * @throws Exception + */ + @Override + public File readFile(String filePath) throws Exception { + String localFile = System.getProperty("java.io.tmpdir") + File.separator + UUID.randomUUID().toString(); + return null; + } + + /** + * Writes the source file in the local storage to specified path in the remote storage + * + * @param sourceFile + * @param filePath + * @return + * @throws Exception + */ + @Override + public void writeFile(File sourceFile, String filePath) throws Exception { + + } + + /** + * Returns a directory listing of the specified directory + * + * @param directoryPath + * @return + * @throws Exception + */ + @Override + public List<LSEntryModel> getDirectoryListing(String directoryPath) throws Exception { + if(directoryPath.endsWith(File.separator)){ + directoryPath = directoryPath.substring(0, directoryPath.length() -1); + } + final String finalDirPath = directoryPath; + //channel may get timeout + if(sftpChannel.isClosed()){ + sftpChannel.connect(); + } + sftpChannel.cd(directoryPath); + Vector<ChannelSftp.LsEntry> lsEntryVector = sftpChannel.ls(directoryPath); + ArrayList<LSEntryModel> fileNodeList = new ArrayList<>(); + lsEntryVector.stream().forEach(lsEntry -> { + LSEntryModel fileNode = new LSEntryModel(); + fileNode.setName(lsEntry.getFilename()); + fileNode.setPath(finalDirPath + File.separator + lsEntry.getFilename()); + fileNode.setStorageHostName(hostName); + fileNode.setSize(lsEntry.getAttrs().getSize()); + if(lsEntry.getAttrs().isDir()) + fileNode.setType(LSEntryType.DIRECTORY); + else + fileNode.setType(LSEntryType.FILE); + fileNodeList.add(fileNode); + }); + return fileNodeList; + } + + /** + * Move the specified file from source to destination within the same storage resource + * + * @param currentPath + * @param newPath + * @throws Exception + */ + @Override + public void moveFile(String currentPath, String newPath) throws Exception { + + } + + /** + * @param sourcePath + * @param destinationPath + * @throws Exception + */ + @Override + public void copyFile(String sourcePath, String destinationPath) throws Exception { + + } + + /** + * Rename file with the given name + * + * @param filePath + * @param newFileName + * @throws Exception + */ + @Override + public void renameFile(String filePath, String newFileName) throws Exception { + + } + + /** + * Delete the specified file + * + * @param filePath + * @throws Exception + */ + @Override + public void deleteFile(String filePath) throws Exception { + + } + + /** + * Create new directory in the specified file + * + * @param newDirPath + * @throws Exception + */ + @Override + public void mkdir(String newDirPath) throws Exception { + + } + + /** + * Checks whether specified file exists in the remote storage system + * + * @param filePath + * @return + * @throws Exception + */ + @Override + public boolean checkFileExists(String filePath) throws Exception { + return false; + } + + /** + * Checks whether the given path is a directory + * + * @param filePath + * @return + * @throws Exception + */ + @Override + public boolean checkIsDirectory(String filePath) throws Exception { + return false; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/utils/FileManagerConstants.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/utils/FileManagerConstants.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/utils/FileManagerConstants.java new file mode 100644 index 0000000..a182037 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/utils/FileManagerConstants.java @@ -0,0 +1,33 @@ +/* + * + * 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.data.manager.core.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FileManagerConstants { + private final static Logger logger = LoggerFactory.getLogger(FileManagerConstants.class); + + public static String MONGODB_HOST = "mongodb.host"; + public static String MONGODB_PORT = "mongodb.port"; + public static String MONGODB_DB_NAME = "mongodb.db.name"; + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/utils/FileManagerProperties.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/utils/FileManagerProperties.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/utils/FileManagerProperties.java new file mode 100644 index 0000000..1e5e45b --- /dev/null +++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/utils/FileManagerProperties.java @@ -0,0 +1,55 @@ +/* + * + * 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.data.manager.core.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.Properties; + +public class FileManagerProperties { + private final static Logger logger = LoggerFactory.getLogger(FileManagerProperties.class); + + private static FileManagerProperties instance; + + private Properties properties; + + private FileManagerProperties() throws IOException { + properties = new Properties(); + properties.load(FileManagerProperties.class.getClassLoader().getResourceAsStream("file-manager.properties")); + } + + public static FileManagerProperties getInstance() throws IOException { + if(instance == null){ + instance = new FileManagerProperties(); + } + return instance; + } + + public String getProperty(String field, String defaultVal){ + String returnVal = properties.getProperty(field); + if(returnVal == null) + return defaultVal; + else + return returnVal; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/resources/file-manager.properties ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/main/resources/file-manager.properties b/modules/data-manager/data-manager-core/src/main/resources/file-manager.properties new file mode 100644 index 0000000..ad4157e --- /dev/null +++ b/modules/data-manager/data-manager-core/src/main/resources/file-manager.properties @@ -0,0 +1,24 @@ +# +# +# 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. +# + + +mongodb.host=localhost +mongodb.port=27017 +mongodb.db.name=file-manager-db \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/resources/gridftp-client.properties ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/main/resources/gridftp-client.properties b/modules/data-manager/data-manager-core/src/main/resources/gridftp-client.properties new file mode 100644 index 0000000..7d8a757 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/main/resources/gridftp-client.properties @@ -0,0 +1,30 @@ +trustedCertsFile=/Users/supun/Work/airavata-sandbox/grid-tools/certificates/ +myproxyServer=myproxy.teragrid.org +myproxy_lifetime=17280000 +myproxyUserName= +myproxyPasswd= +myproxyPort=7512 + + +testing.host=trestles +#testing.host=stampede +#testing.host=lonestar + +## TACC Lonestar +lonestar.gridftp.endpoint=gsiftp://gridftp1.ls4.tacc.utexas.edu:2811/ + +## TACC Stampede +stampede.gridftp.endpoint=gsiftp://gridftp.stampede.tacc.utexas.edu:2811/ + +## SDSC Trestles +trestles.gridftp.endpoint=gsiftp://trestles.sdsc.edu:2811/ + +gridftpserverSource=gsiftp://trestles-dm.sdsc.xsede.org:2811/ +gridftpSourcePath=/oasis/projects/nsf/sds128/ogce/file-transfer-tests/source/sample_wrfout.netcdf +gridftpUploadingFilePath = /oasis/projects/nsf/sds128/ogce/file-transfer-tests/source/dummy1 + +#gridftpserverDest=gsiftp://trestles-dm.sdsc.xsede.org:2811/ +#gridftpDestPath=/oasis/projects/nsf/sds128/ogce/file-transfer-tests/gf + +gridftpserverDest=gsiftp://gridftp.stampede.tacc.utexas.edu:2811/ +gridftpDestPath=/scratch/01437/ogce/file-transfer-tests/dest/xx \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/db/dao/FileTransferRequestDaoTest.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/db/dao/FileTransferRequestDaoTest.java b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/db/dao/FileTransferRequestDaoTest.java new file mode 100644 index 0000000..327a603 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/db/dao/FileTransferRequestDaoTest.java @@ -0,0 +1,45 @@ +/* + * + * 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.data.manager.core.db.dao; + +import org.apache.airavata.model.data.transfer.FileTransferRequestModel; +import org.junit.Ignore; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +@Ignore +public class FileTransferRequestDaoTest { + private final static Logger logger = LoggerFactory.getLogger(FileTransferRequestDaoTest.class); + + @Test + public void testFileTransferRequestDao() throws IOException { + FileTransferRequestModel fileTransferRequestModel = new FileTransferRequestModel(); + fileTransferRequestModel.setSrcHostCredToken("djkalbsbdaslfbalsfbslf"); + fileTransferRequestModel.setSrcFilePath("test-file-path"); + FileTransferRequestDao fileTransferRequestDao = new FileTransferRequestDao(); + String transferId = fileTransferRequestDao.createFileTransferRequest(fileTransferRequestModel); + fileTransferRequestModel = fileTransferRequestDao.getFileTransferRequest(transferId); + System.out.println("Transfer Id:" + fileTransferRequestModel.getTransferId()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/gridftp/CertFileReadTest.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/gridftp/CertFileReadTest.java b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/gridftp/CertFileReadTest.java new file mode 100644 index 0000000..26931aa --- /dev/null +++ b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/gridftp/CertFileReadTest.java @@ -0,0 +1,126 @@ +/* + * + * 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.data.manager.core.remote.client.gridftp; + +import junit.framework.Assert; +import junit.framework.TestCase; +import org.globus.gsi.SigningPolicy; +import org.globus.gsi.SigningPolicyParser; +import org.globus.gsi.util.CertificateIOUtil; +import org.globus.util.GlobusResource; +import org.junit.Ignore; +import org.junit.Test; + +import javax.security.auth.x500.X500Principal; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.security.MessageDigest; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.Map; + + +@Ignore("This test case used to debug JGlobus-102. No need to run this test with other gridftp tests.") +public class CertFileReadTest extends TestCase { + + private static MessageDigest md5; + + private static String CERT_FILE_LOCATION = "/Users/supun/Work/airavata-sandbox/grid-tools/certificates/"; + + @Test + public void testCertFileRead() throws Exception { + + String path1 = CERT_FILE_LOCATION + "ffc3d59b"; + String path2 = CERT_FILE_LOCATION + "e5cc84c2"; + + + GlobusResource globusResource1 = new GlobusResource(path1 + ".signing_policy"); + GlobusResource globusResource2 = new GlobusResource(path2 + ".signing_policy"); + + // ===== Testing globusResource1 - This should pass (cos no DC components) ================ // + X509Certificate crt1 = readCertificate(path1 + ".0"); + X500Principal policySubjectCert1 = getPrincipal(globusResource1); + + String certHash1 = CertificateIOUtil.nameHash(crt1.getSubjectX500Principal()); + String principalHash1 = CertificateIOUtil.nameHash(policySubjectCert1); + + System.out.println("======== Printing hashes for 1 ================"); + System.out.println(certHash1); + System.out.println(principalHash1); + + Assert.assertEquals("Certificate hash value does not match with the hash value generated using principal name.", + certHash1, principalHash1); + + // ===== Testing globusResource1 - This should fail (cos we have DC components) ================ // + X509Certificate crt2 = readCertificate(path2 + ".0"); + X500Principal policySubjectCert2 = getPrincipal(globusResource2); + + String certHash2 = CertificateIOUtil.nameHash(crt2.getSubjectX500Principal()); + String principalHash2 = CertificateIOUtil.nameHash(policySubjectCert2); + + System.out.println("======== Printing hashes for 2 ================"); + System.out.println(certHash2); + System.out.println(principalHash2); + + Assert.assertEquals("Certificate hash value does not match with the hash value generated using principal name.", + certHash2, principalHash2); + } + + private X500Principal getPrincipal(GlobusResource globusResource) throws Exception{ + + SigningPolicyParser parser = new SigningPolicyParser(); + + Reader reader = new InputStreamReader(globusResource.getInputStream()); + + Map<X500Principal, SigningPolicy> policies = parser.parse(reader); + + return policies.keySet().iterator().next(); + + } + + private X509Certificate readCertificate(String certPath) { + try { + FileInputStream fr = new FileInputStream(certPath); + CertificateFactory cf = + CertificateFactory.getInstance("X509"); + X509Certificate crt = (X509Certificate) + cf.generateCertificate(fr); + System.out.println("Read certificate:"); + System.out.println("\tCertificate for: " + + crt.getSubjectDN()); + System.out.println("\tCertificate issued by: " + + crt.getIssuerDN()); + System.out.println("\tCertificate is valid from " + + crt.getNotBefore() + " to " + crt.getNotAfter()); + System.out.println("\tCertificate SN# " + + crt.getSerialNumber()); + System.out.println("\tGenerated with " + + crt.getSigAlgName()); + + return crt; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/gridftp/FileTransferTest.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/gridftp/FileTransferTest.java b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/gridftp/FileTransferTest.java new file mode 100644 index 0000000..ff482c4 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/gridftp/FileTransferTest.java @@ -0,0 +1,168 @@ +/* + * + * 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.data.manager.core.remote.client.gridftp; + + +import junit.framework.Assert; +import junit.framework.TestCase; +import org.apache.airavata.data.manager.core.remote.client.gridftp.myproxy.SecurityContext; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.ietf.jgss.GSSCredential; +import org.junit.Ignore; + +import java.io.*; +import java.net.URI; + + +@Ignore +public class FileTransferTest extends TestCase { + + private GSSCredential gssCredential; + + private ExecutionContext executionContext; + + private static final Logger log = Logger.getLogger(FileTransferTest.class); + + + public void setUp() throws Exception { + + String userName = System.getProperty("myproxy.user"); + String password = System.getProperty("myproxy.password"); + + SecurityContext context = null; + + if (userName == null || password == null || userName.trim().equals("") || password.trim().equals("")) { + log.error("myproxy.user and myproxy.password system properties are not set. Example :- " + + "> mvn clean install -Dmyproxy.user=u1 -Dmyproxy.password=xxx"); + + Assert.fail("Please set myproxy.user and myproxy.password system properties."); + + } else { + context = new SecurityContext(userName, password); + } + + log.info("Using my proxy user name - " + userName); + + BasicConfigurator.configure(); + Logger logger = Logger.getLogger("GridFTPClient"); + Level lev = Level.toLevel("DEBUG"); + logger.setLevel(lev); + + + context.login(); + executionContext = new ExecutionContext(); + + + String targeterp = executionContext.getGridFTPServerDestination(); + String remoteDestFile = executionContext.getDestinationDataLocation(); + + URI dirLocation = GridFTP.createGsiftpURI(targeterp, + remoteDestFile.substring(0, remoteDestFile.lastIndexOf("/"))); + gssCredential = context.getGssCredential(); + System.out.println(dirLocation); + + } + + public void testMakeDir() throws Exception { + + String targetErp = executionContext.getGridFTPServerDestination(); + String remoteDestinationFile = executionContext.getDestinationDataLocation(); + + URI dirLocation = GridFTP.createGsiftpURI(targetErp, + remoteDestinationFile.substring(0, remoteDestinationFile.lastIndexOf("/"))); + + GridFTP ftp = new GridFTP(); + ftp.makeDir(dirLocation, gssCredential); + + Assert.assertTrue(ftp.exists(dirLocation, gssCredential)); + + } + + public void testTransferData() throws Exception { + + String sourceERP = executionContext.getGridFTPServerSource(); + String remoteSrcFile = executionContext.getSourceDataLocation(); + + String targetErp = executionContext.getGridFTPServerDestination(); + String remoteDestinationFile = executionContext.getDestinationDataLocation(); + + URI srcURI = GridFTP.createGsiftpURI(sourceERP, remoteSrcFile); + URI destURI = GridFTP.createGsiftpURI(targetErp, remoteDestinationFile); + + GridFTP ftp = new GridFTP(); + ftp.transfer(srcURI, destURI, gssCredential, true); + + Assert.assertTrue(ftp.exists(destURI, gssCredential)); + + } + + public void testDownloadFile() throws Exception { + + String fileName = "./downloaded"; + + File deleteFile = new File(fileName); + + if (deleteFile.exists()) { + if (!deleteFile.delete()) + throw new RuntimeException("Unable to delete file " + fileName); + } + + File f = new File(fileName); + + GridFTP ftp = new GridFTP(); + ftp.downloadFile(executionContext.getSourceDataFileUri(), + gssCredential, f); + + Assert.assertTrue(f.exists()); + + } + + public void testFileExists() throws Exception { + + GridFTP ftp = new GridFTP(); + Assert.assertTrue(ftp.exists(executionContext.getSourceDataFileUri(), gssCredential)); + } + + public void testUpdateFile() throws Exception { + + String currentDir = System.getProperty("projectDirectory"); + + if (currentDir == null) + currentDir = "src/test/resources"; + else + currentDir = currentDir + "/src/test/resources"; + + String file = currentDir + "/dummy"; + + System.out.println("File to upload is " + file); + + File fileToUpload = new File(file); + + Assert.assertTrue(fileToUpload.canRead()); + + GridFTP ftp = new GridFTP(); + ftp.updateFile(executionContext.getUploadingFilePathUri(), gssCredential, fileToUpload); + + Assert.assertTrue(ftp.exists(executionContext.getUploadingFilePathUri(), gssCredential)); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/http/HTTPStorageClientTest.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/http/HTTPStorageClientTest.java b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/http/HTTPStorageClientTest.java new file mode 100644 index 0000000..9190a93 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/http/HTTPStorageClientTest.java @@ -0,0 +1,45 @@ +/* + * + * 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.data.manager.core.remote.client.http; + +import junit.framework.Assert; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; + +public class HTTPStorageClientTest { + private final static Logger logger = LoggerFactory.getLogger(HTTPStorageClientTest.class); + + @Test + public void testHTTPStorageClient(){ + try { + HTTPStorageClient httpStorageClient = new HTTPStorageClient(HTTPStorageClient.Protocol.HTTPS, + "www.google.lk", 443); + File file = httpStorageClient.readFile("/"); + Assert.assertTrue(file.exists()); + } catch (Exception e) { + e.printStackTrace(); + Assert.fail(); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPStorageClientTest.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPStorageClientTest.java b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPStorageClientTest.java new file mode 100644 index 0000000..b5773e2 --- /dev/null +++ b/modules/data-manager/data-manager-core/src/test/java/org/apache/airavata/data/manager/core/remote/client/scp/SCPStorageClientTest.java @@ -0,0 +1,55 @@ +/* + * + * 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.data.manager.core.remote.client.scp; + +import org.apache.commons.io.IOUtils; +import org.junit.Ignore; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.FileInputStream; + +@Ignore +public class SCPStorageClientTest { + private final static Logger logger = LoggerFactory.getLogger(SCPStorageClientTest.class); + + @Test + public void testSCPStorageClient() throws Exception { + File privateKey = new File("/Users/supun/.ssh/id_rsa"); + byte[] privateKeyBytes = IOUtils.toByteArray(new FileInputStream(privateKey)); + + File publicKey = new File("/Users/supun/.ssh/id_rsa.pub"); + byte[] publicKeyBytes = IOUtils.toByteArray(new FileInputStream(publicKey)); + + String passPhrase = ""; + byte[] passPhraseBytes = passPhrase.getBytes(); + + SCPStorageClient scpStorageClient = new SCPStorageClient("gw75.iu.xsede.org", 22, "pga", privateKeyBytes, + publicKeyBytes, passPhraseBytes); + File file = scpStorageClient.readFile("/var/www/portals/gateway-user-data/testdrive/test.txt"); + System.out.println("File exists ? " + file.exists()); + scpStorageClient.writeFile(file, "/var/www/portals/gateway-user-data/testdrive/test2.txt"); + file.delete(); + System.out.println("File exists ? " + file.exists()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/test/resources/airavata-myproxy-client.properties ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/test/resources/airavata-myproxy-client.properties b/modules/data-manager/data-manager-core/src/test/resources/airavata-myproxy-client.properties new file mode 100644 index 0000000..407f09d --- /dev/null +++ b/modules/data-manager/data-manager-core/src/test/resources/airavata-myproxy-client.properties @@ -0,0 +1,28 @@ +#Download trusted certificates from - https://software.xsede.org/security/xsede-certs.tar.gz +trustedCertsFile=../certificates +myproxyServer=myproxy.teragrid.org +myproxy_lifetime=17280000 +myproxyPort=7512 + +testing.host=trestles +#testing.host=stampede +#testing.host=lonestar + +## TACC Lonestar +lonestar.gridftp.endpoint=gsiftp://gridftp1.ls4.tacc.utexas.edu:2811/ + +## TACC Stampede +stampede.gridftp.endpoint=gsiftp://gridftp.stampede.tacc.utexas.edu:2811/ + +## SDSC Trestles +trestles.gridftp.endpoint=gsiftp://trestles.sdsc.edu:2811/ + +gridftpserverSource=gsiftp://trestles-dm.sdsc.xsede.org:2811/ +gridftpSourcePath=/oasis/projects/nsf/sds128/ogce/file-transfer-tests/source/sample_wrfout.netcdf +gridftpUploadingFilePath = /oasis/projects/nsf/sds128/ogce/file-transfer-tests/source/dummy1 + +#gridftpserverDest=gsiftp://trestles-dm.sdsc.xsede.org:2811/ +#gridftpDestPath=/oasis/projects/nsf/sds128/ogce/file-transfer-tests/gf + +gridftpserverDest=gsiftp://gridftp.stampede.tacc.utexas.edu:2811/ +gridftpDestPath=/scratch/01437/ogce/file-transfer-tests/dest/xx \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/test/resources/dummy ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-core/src/test/resources/dummy b/modules/data-manager/data-manager-core/src/test/resources/dummy new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-cpi/pom.xml ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-cpi/pom.xml b/modules/data-manager/data-manager-cpi/pom.xml new file mode 100644 index 0000000..ef08821 --- /dev/null +++ b/modules/data-manager/data-manager-cpi/pom.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>data-manager</artifactId> + <groupId>org.apache.airavata</groupId> + <version>0.16-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <modelVersion>4.0.0</modelVersion> + <artifactId>data-manager-cpi</artifactId> + <packaging>jar</packaging> + <name>Airavata File Manager CPI</name> + <url>http://airavata.apache.org/</url> + + <dependencies> + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>airavata-data-models</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>airavata-commons</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManager.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManager.java b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManager.java new file mode 100644 index 0000000..47965f6 --- /dev/null +++ b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManager.java @@ -0,0 +1,42 @@ +/* + * + * 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.data.manager.cpi; + +public interface DataManager { + + /** + * Return file transfer service instance + * @return + */ + FileTransferService getFileTransferService() throws DataManagerException; + + /** + * Return replica catalog service instance + * @return + */ + ReplicaCatalogService getReplicaCatalogService() throws DataManagerException; + + /** + * Return metadata catalog service + * @return + */ + MetadataCatalogService getMetadataCatalogService() throws DataManagerException; +} http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManagerConstants.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManagerConstants.java b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManagerConstants.java new file mode 100644 index 0000000..c2407a5 --- /dev/null +++ b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManagerConstants.java @@ -0,0 +1,32 @@ +/* + * + * 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.data.manager.cpi; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class DataManagerConstants { + private final static Logger logger = LoggerFactory.getLogger(DataManagerConstants.class); + + public static String AIRAVATA_FILE_ID_PREFIX = "airavata-file://"; + public static String AIRAVATA_COLLECTION_ID_PREFIX = "airavata-collection://"; + public static final String AIRAVATA_METADATA_ID_PREFIX = "airavata-metadata://"; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManagerException.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManagerException.java b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManagerException.java new file mode 100644 index 0000000..b1c1cb8 --- /dev/null +++ b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/DataManagerException.java @@ -0,0 +1,35 @@ +/** + * 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.data.manager.cpi; + +public class DataManagerException extends Exception{ + + public DataManagerException(Throwable e) { + super(e); + } + + public DataManagerException(String message) { + super(message, null); + } + + public DataManagerException(String message, Throwable e) { + super(message, e); + } +} http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/FileTransferService.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/FileTransferService.java b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/FileTransferService.java new file mode 100644 index 0000000..676bcb1 --- /dev/null +++ b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/FileTransferService.java @@ -0,0 +1,212 @@ +/* + * + * 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.data.manager.cpi; + +import org.apache.airavata.model.data.transfer.FileTransferRequestModel; +import org.apache.airavata.model.data.transfer.LSEntryModel; +import org.apache.airavata.model.data.transfer.StorageResourceProtocol; + +import java.util.List; + +public interface FileTransferService { + + /** + * Method to upload the give bytes to the destination storage system + * @param gatewayId + * @param username + * @param fileData + * @param destHostname + * @param destLoginName + * @param destPort + * @param destProtocol + * @param destinationPath + * @param destHostCredToken + * @return + * @throws DataManagerException + */ + String uploadFile(String gatewayId, String username, byte[] fileData, String destHostname, String destLoginName, int destPort, + StorageResourceProtocol destProtocol, String destinationPath, String destHostCredToken) + throws DataManagerException; + + /** + * Transfer file between two storage resources synchronously. Returns the file transfer request id + * @param gatewayId + * @param username + * @param srcHostname + * @param srcPort + * @param srcLoginName + * @param srcProtocol + * @param srcPath + * @param srcHostCredToken + * @param destHostname + * @param destLoginName + * @param destPort + * @param destProtocol + * @param destinationPath + * @param destHostCredToken + * @return + * @throws DataManagerException + */ + String transferFile(String gatewayId, String username, String srcHostname, String srcLoginName, int srcPort, + StorageResourceProtocol srcProtocol, String srcPath, String srcHostCredToken, + String destHostname, String destLoginName, int destPort, + StorageResourceProtocol destProtocol, String destinationPath, String destHostCredToken) + throws DataManagerException; + + /** + * Transfer file between two storage resources asynchronously. Returns the file transfer request id + * @param gatewayId + * @param username + * @param srcHostname + * @param srcLoginName + * @param srcPort + * @param srcProtocol + * @param srcPath + * @param srcHostCredToken + * @param destHostname + * @param destLoginName + * @param destPort + * @param destProtocol + * @param destinationPath + * @param destHostCredToken + * @param callbackEmails + * @return + * @throws DataManagerException + */ + String transferFileAsync(String gatewayId, String username, String srcHostname, String srcLoginName, int srcPort, + StorageResourceProtocol srcProtocol, String srcPath, String srcHostCredToken, + String destHostname, String destLoginName, int destPort, + StorageResourceProtocol destProtocol, String destinationPath, String destHostCredToken, + String[] callbackEmails) + throws DataManagerException; + + /** + * Get a directory listing of the specified source directory + * @param hostname + * @param loginName + * @param port + * @param protocol + * @param path + * @param hostCredential + * @return + * @throws DataManagerException + */ + List<LSEntryModel> getDirectoryListing(String hostname, String loginName, int port, + StorageResourceProtocol protocol, String path, String hostCredential) + throws DataManagerException; + + /** + * Move file from one place to another inside the same storage resource + * @param hostname + * @param loginName + * @param port + * @param protocol + * @param hostCredential + * @param sourcePath + * @param destinationPath + * @throws DataManagerException + */ + void moveFile(String hostname, String loginName, int port, + StorageResourceProtocol protocol, String hostCredential, String sourcePath, String destinationPath) + throws DataManagerException; + + /** + * Rename a file + * @param hostname + * @param loginName + * @param port + * @param protocol + * @param hostCredential + * @param sourcePath + * @param newName + * @throws DataManagerException + */ + void renameFile(String hostname, String loginName, int port, + StorageResourceProtocol protocol, String hostCredential, String sourcePath, String newName) + throws DataManagerException; + + /** + * Create new directory + * @param hostname + * @param loginName + * @param port + * @param protocol + * @param hostCredential + * @param dirPath + * @throws DataManagerException + */ + void mkdir(String hostname, String loginName, int port, + StorageResourceProtocol protocol, String hostCredential, String dirPath) + throws DataManagerException; + + /** + * Delete File in storage resource + * @param hostname + * @param loginName + * @param port + * @param protocol + * @param hostCredential + * @param filePath + * @throws DataManagerException + */ + void deleteFile(String hostname, String loginName, int port, + StorageResourceProtocol protocol, String hostCredential, String filePath) + throws DataManagerException; + + /** + * Check whether the specified file exists + * @param hostname + * @param loginName + * @param port + * @param protocol + * @param hostCredential + * @param filePath + * @return + * @throws DataManagerException + */ + boolean isExists(String hostname, String loginName, int port, + StorageResourceProtocol protocol, String hostCredential, String filePath) + throws DataManagerException; + + /** + * Check whether the path points to a directory + * @param hostname + * @param loginName + * @param port + * @param protocol + * @param hostCredential + * @param filePath + * @return + * @throws DataManagerException + */ + boolean isDirectory(String hostname, String loginName, int port, + StorageResourceProtocol protocol, String hostCredential, String filePath) + throws DataManagerException; + + /** + * Method to retrieve file transfer status giving transfer id + * @param transferId + * @return + * @throws DataManagerException + */ + FileTransferRequestModel getFileTransferRequestStatus(String transferId) + throws DataManagerException; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/MetadataCatalogService.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/MetadataCatalogService.java b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/MetadataCatalogService.java new file mode 100644 index 0000000..a75e0d4 --- /dev/null +++ b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/MetadataCatalogService.java @@ -0,0 +1,56 @@ +/* + * + * 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.data.manager.cpi; + +import org.apache.airavata.model.data.metadata.MetadataModel; + +public interface MetadataCatalogService { + + /** + * Create new metadata model + * @param metadataModel + * @return + * @throws DataManagerException + */ + String createMetadata(MetadataModel metadataModel) throws DataManagerException; + + /** + * Update exisiting metadata model + * @param metadataModel + * @throws DataManagerException + */ + void updateMetadata(MetadataModel metadataModel) throws DataManagerException; + + /** + * Delete existing metadata model + * @param metadataId + * @throws DataManagerException + */ + void deleteMetadata(String metadataId) throws DataManagerException; + + /** + * Retrieve metadata model + * @param metadataId + * @return + * @throws DataManagerException + */ + MetadataModel getMetadata(String metadataId) throws DataManagerException; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/ReplicaCatalogService.java ---------------------------------------------------------------------- diff --git a/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/ReplicaCatalogService.java b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/ReplicaCatalogService.java new file mode 100644 index 0000000..b136c1c --- /dev/null +++ b/modules/data-manager/data-manager-cpi/src/main/java/org/apache/airavata/data/manager/cpi/ReplicaCatalogService.java @@ -0,0 +1,86 @@ +/* + * + * 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.data.manager.cpi; + +import org.apache.airavata.model.data.replica.FileCollectionModel; +import org.apache.airavata.model.data.replica.FileModel; + +public interface ReplicaCatalogService { + + /** + * Creates a new file entry in the replica catalog + * @param fileModel + * @return + */ + String registerFileDetails(FileModel fileModel) throws DataManagerException; + + /** + * Updates an existing file information + * @param fileModel + */ + void updateFileDetails(FileModel fileModel) throws DataManagerException; + + + /** + * Deletes the specified file details entry + * @param fileId + */ + void deleteFileDetails(String fileId) throws DataManagerException; + + + /** + * Retrieves file details for the specified file id + * @param fileId + * @return + */ + FileModel getFileDetails(String fileId) throws DataManagerException; + + + /** + * Create new file collection entry + * @param fileCollectionModel + * @return + * @throws DataManagerException + */ + String registerFileCollection(FileCollectionModel fileCollectionModel) throws DataManagerException; + + /** + * Update existing file collection + * @param fileCollectionModel + * @throws DataManagerException + */ + void updateFileCollection(FileCollectionModel fileCollectionModel) throws DataManagerException; + + /** + * Delete exisiting file collection + * @param collectionId + * @throws DataManagerException + */ + void deleteFileCollection(String collectionId) throws DataManagerException; + + /** + * Retrieve file collection specifying the collection id + * @param collectionId + * @return + * @throws DataManagerException + */ + FileCollectionModel getFileCollection(String collectionId) throws DataManagerException; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/pom.xml ---------------------------------------------------------------------- diff --git a/modules/data-manager/pom.xml b/modules/data-manager/pom.xml new file mode 100644 index 0000000..eb81d40 --- /dev/null +++ b/modules/data-manager/pom.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>airavata</artifactId> + <groupId>org.apache.airavata</groupId> + <version>0.16-SNAPSHOT</version> + <relativePath>../../pom.xml</relativePath> + </parent> + + <modelVersion>4.0.0</modelVersion> + <artifactId>data-manager</artifactId> + <packaging>pom</packaging> + <name>Airavata Data Manager</name> + <url>http://airavata.apache.org/</url> + + <modules> + <module>data-manager-cpi</module> + <module>data-manager-core</module> + </modules> + <dependencies> + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>airavata-data-models</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>airavata-registry-core</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>airavata-registry-cpi</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.7</version> + <scope>test</scope> + </dependency> + </dependencies> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/file-manager/file-manager-core/pom.xml ---------------------------------------------------------------------- diff --git a/modules/file-manager/file-manager-core/pom.xml b/modules/file-manager/file-manager-core/pom.xml deleted file mode 100644 index b8e98e2..0000000 --- a/modules/file-manager/file-manager-core/pom.xml +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>file-manager</artifactId> - <groupId>org.apache.airavata</groupId> - <version>0.16-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <modelVersion>4.0.0</modelVersion> - <artifactId>file-manager-core</artifactId> - <packaging>jar</packaging> - <name>Airavata File Manager Core</name> - <url>http://airavata.apache.org/</url> - - <dependencies> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-data-models</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-registry-core</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-registry-cpi</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-commons</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-server-configuration</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>file-manager-cpi</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-registry-core</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-registry-cpi</artifactId> - <version>${project.version}</version> - </dependency> - - <dependency> - <groupId>org.jglobus</groupId> - <artifactId>gss</artifactId> - <version>${jglobus.version}</version> - </dependency> - <dependency> - <groupId>org.jglobus</groupId> - <artifactId>gridftp</artifactId> - <version>${jglobus.version}</version> - </dependency> - <dependency> - <groupId>org.jglobus</groupId> - <artifactId>myproxy</artifactId> - <version>2.1.0</version> - </dependency> - - <dependency> - <groupId>org.bouncycastle</groupId> - <artifactId>bcprov-jdk16</artifactId> - <version>1.44</version> - </dependency> - - - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-databind</artifactId> - <version>2.5.3</version> - </dependency> - <dependency> - <groupId>org.mongodb</groupId> - <artifactId>mongo-java-driver</artifactId> - <version>3.0.0</version> - </dependency> - </dependencies> -</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/FileManagerFactory.java ---------------------------------------------------------------------- diff --git a/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/FileManagerFactory.java b/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/FileManagerFactory.java deleted file mode 100644 index 52c76cb..0000000 --- a/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/FileManagerFactory.java +++ /dev/null @@ -1,34 +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.file.manager.core; - -import org.apache.airavata.file.manager.cpi.FileManager; -import org.apache.airavata.file.manager.cpi.FileManagerException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class FileManagerFactory { - private final static Logger logger = LoggerFactory.getLogger(FileManagerFactory.class); - - public static FileManager getFileManager() throws FileManagerException { - return new FileManagerImpl(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/FileManagerImpl.java ---------------------------------------------------------------------- diff --git a/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/FileManagerImpl.java b/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/FileManagerImpl.java deleted file mode 100644 index dee470a..0000000 --- a/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/FileManagerImpl.java +++ /dev/null @@ -1,75 +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.file.manager.core; - -import org.apache.airavata.file.manager.cpi.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -public class FileManagerImpl implements FileManager { - private final static Logger logger = LoggerFactory.getLogger(FileManagerImpl.class); - - /** - * Return file transfer service instance - * - * @return - */ - @Override - public FileTransferService getFileTransferService() throws FileManagerException { - try{ - return new FileTransferServiceImpl(); - }catch (Exception e){ - logger.error(e.getMessage(), e); - throw new FileManagerException(e); - } - } - - /** - * Return replica catalog service instance - * - * @return - */ - @Override - public ReplicaCatalogService getReplicaCatalogService() throws FileManagerException{ - try{ - return new ReplicaCatalogServiceImpl(); - }catch (Exception e){ - logger.error(e.getMessage(), e); - throw new FileManagerException(e); - } - } - - /** - * Return metadata catalog service - * - * @return - */ - @Override - public MetadataCatalogService getMetadataCatalogService() throws FileManagerException{ - try{ - return new MetadataCatalogServiceImpl(); - }catch (Exception e){ - logger.error(e.getMessage(), e); - throw new FileManagerException(e); - } - } -} \ No newline at end of file
