All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.airavata.client.tools.UltrascanDocumentCreator Maven / Gradle / Ivy

/**
 * 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.client.tools;

import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.apache.airavata.client.api.AiravataAPI;
import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
import org.apache.airavata.commons.gfac.type.ApplicationDescription;
import org.apache.airavata.commons.gfac.type.HostDescription;
import org.apache.airavata.commons.gfac.type.ServiceDescription;
import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
import org.apache.airavata.schemas.gfac.DataType;
import org.apache.airavata.schemas.gfac.GsisshHostType;
import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
import org.apache.airavata.schemas.gfac.InputParameterType;
import org.apache.airavata.schemas.gfac.JobTypeType;
import org.apache.airavata.schemas.gfac.OutputParameterType;
import org.apache.airavata.schemas.gfac.ParameterType;
import org.apache.airavata.schemas.gfac.ProjectAccountType;
import org.apache.airavata.schemas.gfac.QueueType;

public class UltrascanDocumentCreator {

	private AiravataAPI airavataAPI = null;
    private String hpcHostAddress = "trestles.sdsc.edu";
    private String gsiSshHostNameTrestles = "gsissh-trestles";
    private String gsiSshHostNameStampede = "gsissh-stampede";
  

    public UltrascanDocumentCreator(AiravataAPI airavataAPI) {
        this.airavataAPI = airavataAPI;
    }
    
    public void createEchoPBSDocsforTestles() {
        HostDescription host = new HostDescription(GsisshHostType.type);
        host.getType().setHostAddress(hpcHostAddress);
        host.getType().setHostName(gsiSshHostNameTrestles);
        ((GsisshHostType) host.getType()).setPort(22);
        ((GsisshHostType) host.getType()).setInstalledPath("/opt/torque/bin/");

        try {
            airavataAPI.getApplicationManager().saveHostDescription(host);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        /*
        * Service Description creation and saving
        */
        String serviceName = "US3EchoTrestles";
        ServiceDescription serv = new ServiceDescription();
        serv.getType().setName(serviceName);

        List inputList = new ArrayList();
        List outputList = new ArrayList();


        InputParameterType input = InputParameterType.Factory.newInstance();
        input.setParameterName("echo_input");
        ParameterType parameterType = input.addNewParameterType();
        parameterType.setType(DataType.STRING);
        parameterType.setName("String");

        OutputParameterType output = OutputParameterType.Factory.newInstance();
        output.setParameterName("echo_output");
        ParameterType parameterType1 = output.addNewParameterType();
        parameterType1.setType(DataType.STRING);
        parameterType1.setName("String");

        inputList.add(input);
        outputList.add(output);

        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);

        serv.getType().setInputParametersArray(inputParamList);
        serv.getType().setOutputParametersArray(outputParamList);
        try {
            airavataAPI.getApplicationManager().saveServiceDescription(serv);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

        /*
            Application descriptor creation and saving
         */
        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
        name.setStringValue(serviceName);
        app.setApplicationName(name);
        ProjectAccountType projectAccountType = app.addNewProjectAccount();
        projectAccountType.setProjectAccountNumber("uot111");

        QueueType queueType = app.addNewQueue();
        queueType.setQueueName("normal");

        app.setCpuCount(1);
        app.setJobType(JobTypeType.SERIAL);
        app.setNodeCount(1);
        app.setProcessorsPerNode(1);
        app.setMaxWallTime(10);
        /*
           * Use bat file if it is compiled on Windows
           */
        app.setExecutableLocation("/bin/echo");

        /*
           * Default tmp location
           */
        String tempDir = "/oasis/projects/nsf/uot111/us3/airavata-workdirs/";

        app.setScratchWorkingDirectory(tempDir);
        app.setInstalledParentPath("/opt/torque/bin/");

        try {
            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, gsiSshHostNameTrestles, appDesc);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }

    public void createMPIPBSDocsTrestles() {
        HostDescription host = new HostDescription(GsisshHostType.type);
        host.getType().setHostAddress(hpcHostAddress);
        host.getType().setHostName(gsiSshHostNameTrestles);
        ((GsisshHostType) host.getType()).setPort(22);
        ((GsisshHostType) host.getType()).setInstalledPath("/opt/torque/bin/");

        try {
            airavataAPI.getApplicationManager().saveHostDescription(host);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        /*
        * Service Description creation and saving
        */
        String serviceName = "US3AppTrestles";
        ServiceDescription serv = new ServiceDescription();
        serv.getType().setName(serviceName);

        List inputList = new ArrayList();
        List outputList = new ArrayList();


        InputParameterType input = InputParameterType.Factory.newInstance();
        input.setParameterName("input");
        ParameterType parameterType = input.addNewParameterType();
        parameterType.setType(DataType.URI);
        parameterType.setName("URI");

        OutputParameterType output = OutputParameterType.Factory.newInstance();
        output.setParameterName("output");
        ParameterType parameterType1 = output.addNewParameterType();
        parameterType1.setType(DataType.URI);
        parameterType1.setName("URI");
        
        OutputParameterType output1 = OutputParameterType.Factory.newInstance();
        output1.setParameterName("stdout");
        ParameterType parameterType2 = output1.addNewParameterType();
        parameterType2.setType(DataType.STD_OUT);
        parameterType2.setName("StdOut");
        
        OutputParameterType output2 = OutputParameterType.Factory.newInstance();
        output2.setParameterName("stderr");
        ParameterType parameterType3 = output2.addNewParameterType();
        parameterType3.setType(DataType.STD_ERR);
        parameterType3.setName("StdErr");

        inputList.add(input);
        outputList.add(output);
        outputList.add(output1);
        outputList.add(output2);
        
        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);

        serv.getType().setInputParametersArray(inputParamList);
        serv.getType().setOutputParametersArray(outputParamList);
        try {
            airavataAPI.getApplicationManager().saveServiceDescription(serv);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

        /*
            Application descriptor creation and saving
         */
        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
        name.setStringValue(serviceName);
        app.setApplicationName(name);
        ProjectAccountType projectAccountType = app.addNewProjectAccount();
        projectAccountType.setProjectAccountNumber("uot111");

        QueueType queueType = app.addNewQueue();
        queueType.setQueueName("normal");

        app.setCpuCount(1);
        app.setJobType(JobTypeType.MPI);
        app.setNodeCount(32);
        app.setProcessorsPerNode(2);
        app.setMaxWallTime(10);
        /*
           * Use bat file if it is compiled on Windows
           */
        app.setExecutableLocation("/home/us3/trestles/bin/us_mpi_analysis");

        /*
           * Default tmp location
           */
        String tempDir = "/oasis/projects/nsf/uot111/us3/airavata-workdirs/";
        app.setScratchWorkingDirectory(tempDir);
        app.setInstalledParentPath("/opt/torque/bin/");
        app.setJobSubmitterCommand("/opt/mvapich2/pgi/ib/bin/mpiexec");
        try {
            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, gsiSshHostNameTrestles, appDesc);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }
    public void createMPISLURMDocsStampede() {
        HostDescription host = new HostDescription(GsisshHostType.type);
        host.getType().setHostAddress("stampede.tacc.xsede.org");
        host.getType().setHostName("gsissh-stampede");
        ((GsisshHostType) host.getType()).setJobManager("slurm");
        ((GsisshHostType) host.getType()).setInstalledPath("/usr/bin/");
        ((GsisshHostType) host.getType()).setPort(2222);
      
        try {
            airavataAPI.getApplicationManager().saveHostDescription(host);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        /*
        * Service Description creation and saving
        */
        String serviceName = "US3AppStampede";
        ServiceDescription serv = new ServiceDescription();
        serv.getType().setName(serviceName);

        List inputList = new ArrayList();
        List outputList = new ArrayList();


        InputParameterType input = InputParameterType.Factory.newInstance();
        input.setParameterName("input");
        ParameterType parameterType = input.addNewParameterType();
        parameterType.setType(DataType.URI);
        parameterType.setName("URI");

        OutputParameterType output = OutputParameterType.Factory.newInstance();
        output.setParameterName("output");
        ParameterType parameterType1 = output.addNewParameterType();
        parameterType1.setType(DataType.URI);
        parameterType1.setName("URI");
        
        OutputParameterType output1 = OutputParameterType.Factory.newInstance();
        output1.setParameterName("stdout");
        ParameterType parameterType2 = output1.addNewParameterType();
        parameterType2.setType(DataType.STD_OUT);
        parameterType2.setName("StdOut");
        
        OutputParameterType output2 = OutputParameterType.Factory.newInstance();
        output2.setParameterName("stderr");
        ParameterType parameterType3 = output2.addNewParameterType();
        parameterType3.setType(DataType.STD_ERR);
        parameterType3.setName("StdErr");

        inputList.add(input);
        outputList.add(output);
        outputList.add(output1);
        outputList.add(output2);
        
        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);

        serv.getType().setInputParametersArray(inputParamList);
        serv.getType().setOutputParametersArray(outputParamList);
        try {
            airavataAPI.getApplicationManager().saveServiceDescription(serv);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

        /*
            Application descriptor creation and saving
         */
        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
        name.setStringValue(serviceName);
        app.setApplicationName(name);
        ProjectAccountType projectAccountType = app.addNewProjectAccount();
        projectAccountType.setProjectAccountNumber("TG-MCB070039N");

        QueueType queueType = app.addNewQueue();
        queueType.setQueueName("normal");

        app.setCpuCount(1);
        app.setJobType(JobTypeType.MPI);
        app.setNodeCount(32);
        app.setProcessorsPerNode(2);
        app.setMaxWallTime(10);
        /*
           * Use bat file if it is compiled on Windows
           */
        app.setExecutableLocation("/home1/01623/us3/bin/us_mpi_analysis");

        /*
           * Default tmp location
           */
        String tempDir = "/home1/01623/us3";
        app.setScratchWorkingDirectory(tempDir);
        app.setInstalledParentPath("/usr/bin/");
        app.setJobSubmitterCommand("/usr/local/bin/ibrun");
        try {
            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, gsiSshHostNameStampede, appDesc);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }
    public void createEchoSlurmDocsofStampede() {
        HostDescription host = new HostDescription(GsisshHostType.type);
        host.getType().setHostAddress("stampede.tacc.xsede.org");
        host.getType().setHostName("stampede-host");
        ((GsisshHostType) host.getType()).setJobManager("slurm");
        ((GsisshHostType) host.getType()).setInstalledPath("/usr/bin/");
        ((GsisshHostType) host.getType()).setPort(2222);
        ((GsisshHostType) host.getType()).setMonitorMode("push");
//        ((GsisshHostType) host.getType()).setMo(2222);


        try {
            airavataAPI.getApplicationManager().saveHostDescription(host);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        /*
        * Service Description creation and saving
        */
        String serviceName = "US3EchoStampede";
        ServiceDescription serv = new ServiceDescription();
        serv.getType().setName(serviceName);

        List inputList = new ArrayList();
        List outputList = new ArrayList();


        InputParameterType input = InputParameterType.Factory.newInstance();
        input.setParameterName("echo_input");
        ParameterType parameterType = input.addNewParameterType();
        parameterType.setType(DataType.STRING);
        parameterType.setName("String");

        OutputParameterType output = OutputParameterType.Factory.newInstance();
        output.setParameterName("echo_output");
        ParameterType parameterType1 = output.addNewParameterType();
        parameterType1.setType(DataType.STRING);
        parameterType1.setName("String");

        inputList.add(input);
        outputList.add(output);

        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);

        serv.getType().setInputParametersArray(inputParamList);
        serv.getType().setOutputParametersArray(outputParamList);
        try {
            airavataAPI.getApplicationManager().saveServiceDescription(serv);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

        /*
           Application descriptor creation and saving
        */
        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
        name.setStringValue(serviceName);
        app.setApplicationName(name);
        ProjectAccountType projectAccountType = app.addNewProjectAccount();
        projectAccountType.setProjectAccountNumber("TG-MCB070039N");

        QueueType queueType = app.addNewQueue();
        queueType.setQueueName("normal");

        app.setCpuCount(1);
        app.setJobType(JobTypeType.SERIAL);
        app.setNodeCount(1);
        app.setProcessorsPerNode(1);
        app.setMaxWallTime(10);
        /*
        * Use bat file if it is compiled on Windows
        */
        app.setExecutableLocation("/bin/echo");

        /*
        * Default tmp location
        */
        String tempDir = "/home1/01623/us3";
       
        app.setScratchWorkingDirectory(tempDir);
        app.setInstalledParentPath("/usr/bin/");

        try {
            airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, gsiSshHostNameStampede, appDesc);
        } catch (AiravataAPIInvocationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }

    public AiravataAPI getAiravataAPI() {
        return airavataAPI;
    }

    public void setAiravataAPI(AiravataAPI airavataAPI) {
        this.airavataAPI = airavataAPI;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy