Package org.apache.airavata.xbaya.ui.dialogs.amazon

Source Code of org.apache.airavata.xbaya.ui.dialogs.amazon.AmazonEC2InvokerWindow$MyHandler

/*
*
* 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.xbaya.ui.dialogs.amazon;

import edu.indiana.extreme.amazonec2webservice.AmazonEC2WebserviceCallbackHandler;
import edu.indiana.extreme.amazonec2webservice.AmazonEC2WebserviceStub;
import edu.indiana.extreme.amazonec2webservice.AmazonEC2WebserviceStub.JobStatusResponse;
import edu.indiana.extreme.amazonec2webservice.AmazonEC2WebserviceStub.JobSubmissionReceipt;
import edu.indiana.extreme.amazonec2webservice.AmazonEC2WebserviceStub.JobSubmitOperation;
import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
import org.apache.airavata.xbaya.XBayaEngine;
import org.apache.airavata.xbaya.ui.dialogs.XBayaDialog;
import org.apache.airavata.xbaya.ui.widgets.GridPanel;
import org.apache.airavata.xbaya.ui.widgets.XBayaLabel;
import org.apache.airavata.xbaya.ui.widgets.XBayaTextField;
import org.apache.axis2.AxisFault;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.rmi.RemoteException;

public class AmazonEC2InvokerWindow {
    private XBayaEngine engine;

    private XBayaTextField accessKeyIDTextField;
    private XBayaTextField secretAccessKeyTextField;
    private XBayaTextField keyPairNameTextField;
    private XBayaTextField numOfInstancesTextField;
    private XBayaTextField jobFlowNameTextField;
    private XBayaTextField logLocationOnS3TextField;
    private XBayaTextField inputLocationOnS3TextField;
    private XBayaTextField outputLocationOnS3TextField;
    private XBayaTextField jarFilePathOnS3TextField;
    private XBayaTextField mainClassNameTextField;
    private XBayaDialog dialog;

    /**
     * Constructs a PegasusInvokerWindow.
     */
    public AmazonEC2InvokerWindow(XBayaEngine engine) {
        this.engine = engine;
        initGUI();
    }

    @SuppressWarnings("serial")
  protected void initGUI() {

        this.accessKeyIDTextField = new XBayaTextField();
        XBayaLabel accessKeyIDLabel = new XBayaLabel("Access Key", this.accessKeyIDTextField);

        this.secretAccessKeyTextField = new XBayaTextField();
        XBayaLabel secretAccessKeyLabel = new XBayaLabel("Secret Access Key", this.secretAccessKeyTextField);

        this.keyPairNameTextField = new XBayaTextField();
        XBayaLabel keyPairNameLabel = new XBayaLabel("Key Pair Name", this.keyPairNameTextField);

        this.numOfInstancesTextField = new XBayaTextField();
        XBayaLabel numOfInstancesLabel = new XBayaLabel("Number of Instances", this.numOfInstancesTextField);

        this.jobFlowNameTextField = new XBayaTextField();
        XBayaLabel jobFlowNameLabel = new XBayaLabel("Job Flow Name", this.jobFlowNameTextField);

        this.logLocationOnS3TextField = new XBayaTextField();
        XBayaLabel logLocationOnS3Label = new XBayaLabel("Log Location(S3)", this.logLocationOnS3TextField);

        this.inputLocationOnS3TextField = new XBayaTextField();
        XBayaLabel inputLocationOnS3Label = new XBayaLabel("Input Location(S3)", this.inputLocationOnS3TextField);

        this.outputLocationOnS3TextField = new XBayaTextField();
        XBayaLabel outputLocationOnS3Label = new XBayaLabel("Output Location(S3)", this.outputLocationOnS3TextField);

        this.jarFilePathOnS3TextField = new XBayaTextField();
        XBayaLabel jarFilePathOnS3Label = new XBayaLabel("Jar File Location(S3)", this.jarFilePathOnS3TextField);

        this.mainClassNameTextField = new XBayaTextField();
        XBayaLabel mainClassNameLabel = new XBayaLabel("Main Class Name", this.mainClassNameTextField);

        this.accessKeyIDTextField.setText("AKIAI3GNMQVYA5LSQNEQ");
        this.secretAccessKeyTextField.setText("CcdJtCELevu03nIsyho6bb0pZv6aRi034OoXFYWl");
        this.keyPairNameTextField.setText("XbayaHadoopTest");
        this.numOfInstancesTextField.setText("4");
        this.jobFlowNameTextField.setText("Test-job-flow");
        this.logLocationOnS3TextField.setText("s3n://xbaya-ec2-test/logs");
        this.inputLocationOnS3TextField.setText("s3n://xbaya-ec2-test/input/");
        this.outputLocationOnS3TextField.setText("s3n://xbaya-ec2-test/output/");
        this.jarFilePathOnS3TextField.setText("s3n://xbaya-ec2-test/jars/Hadoopv400.jar");
        this.mainClassNameTextField.setText("edu.indiana.extreme.HadoopRayTracer");

        GridPanel infoPanel = new GridPanel();
        infoPanel.add(accessKeyIDLabel);
        infoPanel.add(this.accessKeyIDTextField);
        infoPanel.add(secretAccessKeyLabel);
        infoPanel.add(this.secretAccessKeyTextField);
        infoPanel.add(keyPairNameLabel);
        infoPanel.add(this.keyPairNameTextField);
        infoPanel.add(numOfInstancesLabel);
        infoPanel.add(this.numOfInstancesTextField);
        infoPanel.add(jobFlowNameLabel);
        infoPanel.add(this.jobFlowNameTextField);
        infoPanel.add(logLocationOnS3Label);
        infoPanel.add(this.logLocationOnS3TextField);
        infoPanel.add(inputLocationOnS3Label);
        infoPanel.add(this.inputLocationOnS3TextField);
        infoPanel.add(outputLocationOnS3Label);
        infoPanel.add(this.outputLocationOnS3TextField);
        infoPanel.add(jarFilePathOnS3Label);
        infoPanel.add(this.jarFilePathOnS3TextField);
        infoPanel.add(mainClassNameLabel);
        infoPanel.add(this.mainClassNameTextField);

        infoPanel.layout(10, 2, GridPanel.WEIGHT_NONE, 1);

        GridPanel mainPanel = new GridPanel();
        mainPanel.add(infoPanel);
        mainPanel.layout(1, 1, 0, 0);

        JButton invokeButton = new JButton("Invoke");
        invokeButton.addActionListener(new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                execute();
            }

        });

        JButton cancelButton = new JButton("Cancel");
        cancelButton.addActionListener(new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                hide();
            }
        });

        JPanel buttonPanel = new JPanel();
        buttonPanel.add(invokeButton);
        buttonPanel.add(cancelButton);

        this.dialog = new XBayaDialog(this.engine.getGUI(), "Deploy Workflow", mainPanel, buttonPanel);
    }

    /**
     * Deploy Work Flow to Amazon EC2
     */
    protected void execute() {
        try {
            AmazonEC2WebserviceStub stub = new AmazonEC2WebserviceStub();
            JobSubmitOperation jobInfo = new JobSubmitOperation();
            jobInfo.setAccessKeyID(this.accessKeyIDTextField.getText());
            jobInfo.setSecretAccessKey(this.secretAccessKeyTextField.getText());
            jobInfo.setKeyPairName(this.keyPairNameTextField.getText());
            jobInfo.setNumOfInstances(this.numOfInstancesTextField.getText());
            jobInfo.setJobFlowName(this.jobFlowNameTextField.getText());
            jobInfo.setLogLocationOnS3(this.logLocationOnS3TextField.getText());
            jobInfo.setInputLocationOnS3(this.inputLocationOnS3TextField.getText());
            jobInfo.setOutputLocationOnS3(this.outputLocationOnS3TextField.getText());
            jobInfo.setJarFilePathOnS3(this.jarFilePathOnS3TextField.getText());
            jobInfo.setMainClassName(this.mainClassNameTextField.getText());
            stub.startjobSubmitOperation(jobInfo, new MyHandler());
            this.hide();
        } catch (AxisFault e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

    /**
     * hide the dialog (when user clicked on cancel)
     */
    public void hide() {
        this.dialog.hide();
    }

    /**
     * show the dialog (when user clicked on invoke)
     */
    public void show() {
        this.dialog.show();
    }

    class MyHandler extends AmazonEC2WebserviceCallbackHandler {

        @Override
        public void receiveResultjobSubmitOperation(JobSubmissionReceipt result) {
            JOptionPane.showMessageDialog(null, "Job Submitted, ID: " + result.getJobFlowID(), "",
                    JOptionPane.INFORMATION_MESSAGE);
        }

        @Override
        public void receiveErrorjobSubmitOperation(java.lang.Exception e) {
            JOptionPane.showMessageDialog(null, "Job Submit Failed!", "", JOptionPane.ERROR_MESSAGE);
        }

        @Override
        public void receiveResultjobStatus(JobStatusResponse result) {
            System.out.println("In call back, response is: " + result.getStatus());
        }

        @Override
        public void receiveErrorjobStatus(java.lang.Exception e) {
            throw new WorkflowRuntimeException(e);
        }

    }
}
TOP

Related Classes of org.apache.airavata.xbaya.ui.dialogs.amazon.AmazonEC2InvokerWindow$MyHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.