You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2015/11/23 20:22:03 UTC

[02/14] airavata git commit: moving data movement structs to common thrift file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ca89eaee/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
new file mode 100644
index 0000000..66ebba8
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
@@ -0,0 +1,746 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model.data.movement;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+/**
+ * Data Movement through Secured Copy
+ * 
+ * alternativeSCPHostName:
+ *  If the login to scp is different than the hostname itself, specify it here
+ * 
+ * sshPort:
+ *  If a non-default port needs to used, specify it.
+ */
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-11-23")
+public class SCPDataMovement implements org.apache.thrift.TBase<SCPDataMovement, SCPDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<SCPDataMovement> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SCPDataMovement");
+
+  private static final org.apache.thrift.protocol.TField DATA_MOVEMENT_INTERFACE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("dataMovementInterfaceId", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField SECURITY_PROTOCOL_FIELD_DESC = new org.apache.thrift.protocol.TField("securityProtocol", org.apache.thrift.protocol.TType.I32, (short)2);
+  private static final org.apache.thrift.protocol.TField ALTERNATIVE_SCPHOST_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("alternativeSCPHostName", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField SSH_PORT_FIELD_DESC = new org.apache.thrift.protocol.TField("sshPort", org.apache.thrift.protocol.TType.I32, (short)4);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new SCPDataMovementStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new SCPDataMovementTupleSchemeFactory());
+  }
+
+  private String dataMovementInterfaceId; // required
+  private SecurityProtocol securityProtocol; // required
+  private String alternativeSCPHostName; // optional
+  private int sshPort; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    DATA_MOVEMENT_INTERFACE_ID((short)1, "dataMovementInterfaceId"),
+    /**
+     * 
+     * @see SecurityProtocol
+     */
+    SECURITY_PROTOCOL((short)2, "securityProtocol"),
+    ALTERNATIVE_SCPHOST_NAME((short)3, "alternativeSCPHostName"),
+    SSH_PORT((short)4, "sshPort");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // DATA_MOVEMENT_INTERFACE_ID
+          return DATA_MOVEMENT_INTERFACE_ID;
+        case 2: // SECURITY_PROTOCOL
+          return SECURITY_PROTOCOL;
+        case 3: // ALTERNATIVE_SCPHOST_NAME
+          return ALTERNATIVE_SCPHOST_NAME;
+        case 4: // SSH_PORT
+          return SSH_PORT;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __SSHPORT_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.ALTERNATIVE_SCPHOST_NAME,_Fields.SSH_PORT};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.DATA_MOVEMENT_INTERFACE_ID, new org.apache.thrift.meta_data.FieldMetaData("dataMovementInterfaceId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.SECURITY_PROTOCOL, new org.apache.thrift.meta_data.FieldMetaData("securityProtocol", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, SecurityProtocol.class)));
+    tmpMap.put(_Fields.ALTERNATIVE_SCPHOST_NAME, new org.apache.thrift.meta_data.FieldMetaData("alternativeSCPHostName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.SSH_PORT, new org.apache.thrift.meta_data.FieldMetaData("sshPort", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(SCPDataMovement.class, metaDataMap);
+  }
+
+  public SCPDataMovement() {
+    this.dataMovementInterfaceId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.sshPort = 22;
+
+  }
+
+  public SCPDataMovement(
+    String dataMovementInterfaceId,
+    SecurityProtocol securityProtocol)
+  {
+    this();
+    this.dataMovementInterfaceId = dataMovementInterfaceId;
+    this.securityProtocol = securityProtocol;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public SCPDataMovement(SCPDataMovement other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetDataMovementInterfaceId()) {
+      this.dataMovementInterfaceId = other.dataMovementInterfaceId;
+    }
+    if (other.isSetSecurityProtocol()) {
+      this.securityProtocol = other.securityProtocol;
+    }
+    if (other.isSetAlternativeSCPHostName()) {
+      this.alternativeSCPHostName = other.alternativeSCPHostName;
+    }
+    this.sshPort = other.sshPort;
+  }
+
+  public SCPDataMovement deepCopy() {
+    return new SCPDataMovement(this);
+  }
+
+  @Override
+  public void clear() {
+    this.dataMovementInterfaceId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.securityProtocol = null;
+    this.alternativeSCPHostName = null;
+    this.sshPort = 22;
+
+  }
+
+  public String getDataMovementInterfaceId() {
+    return this.dataMovementInterfaceId;
+  }
+
+  public void setDataMovementInterfaceId(String dataMovementInterfaceId) {
+    this.dataMovementInterfaceId = dataMovementInterfaceId;
+  }
+
+  public void unsetDataMovementInterfaceId() {
+    this.dataMovementInterfaceId = null;
+  }
+
+  /** Returns true if field dataMovementInterfaceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetDataMovementInterfaceId() {
+    return this.dataMovementInterfaceId != null;
+  }
+
+  public void setDataMovementInterfaceIdIsSet(boolean value) {
+    if (!value) {
+      this.dataMovementInterfaceId = null;
+    }
+  }
+
+  /**
+   * 
+   * @see SecurityProtocol
+   */
+  public SecurityProtocol getSecurityProtocol() {
+    return this.securityProtocol;
+  }
+
+  /**
+   * 
+   * @see SecurityProtocol
+   */
+  public void setSecurityProtocol(SecurityProtocol securityProtocol) {
+    this.securityProtocol = securityProtocol;
+  }
+
+  public void unsetSecurityProtocol() {
+    this.securityProtocol = null;
+  }
+
+  /** Returns true if field securityProtocol is set (has been assigned a value) and false otherwise */
+  public boolean isSetSecurityProtocol() {
+    return this.securityProtocol != null;
+  }
+
+  public void setSecurityProtocolIsSet(boolean value) {
+    if (!value) {
+      this.securityProtocol = null;
+    }
+  }
+
+  public String getAlternativeSCPHostName() {
+    return this.alternativeSCPHostName;
+  }
+
+  public void setAlternativeSCPHostName(String alternativeSCPHostName) {
+    this.alternativeSCPHostName = alternativeSCPHostName;
+  }
+
+  public void unsetAlternativeSCPHostName() {
+    this.alternativeSCPHostName = null;
+  }
+
+  /** Returns true if field alternativeSCPHostName is set (has been assigned a value) and false otherwise */
+  public boolean isSetAlternativeSCPHostName() {
+    return this.alternativeSCPHostName != null;
+  }
+
+  public void setAlternativeSCPHostNameIsSet(boolean value) {
+    if (!value) {
+      this.alternativeSCPHostName = null;
+    }
+  }
+
+  public int getSshPort() {
+    return this.sshPort;
+  }
+
+  public void setSshPort(int sshPort) {
+    this.sshPort = sshPort;
+    setSshPortIsSet(true);
+  }
+
+  public void unsetSshPort() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SSHPORT_ISSET_ID);
+  }
+
+  /** Returns true if field sshPort is set (has been assigned a value) and false otherwise */
+  public boolean isSetSshPort() {
+    return EncodingUtils.testBit(__isset_bitfield, __SSHPORT_ISSET_ID);
+  }
+
+  public void setSshPortIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SSHPORT_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case DATA_MOVEMENT_INTERFACE_ID:
+      if (value == null) {
+        unsetDataMovementInterfaceId();
+      } else {
+        setDataMovementInterfaceId((String)value);
+      }
+      break;
+
+    case SECURITY_PROTOCOL:
+      if (value == null) {
+        unsetSecurityProtocol();
+      } else {
+        setSecurityProtocol((SecurityProtocol)value);
+      }
+      break;
+
+    case ALTERNATIVE_SCPHOST_NAME:
+      if (value == null) {
+        unsetAlternativeSCPHostName();
+      } else {
+        setAlternativeSCPHostName((String)value);
+      }
+      break;
+
+    case SSH_PORT:
+      if (value == null) {
+        unsetSshPort();
+      } else {
+        setSshPort((Integer)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case DATA_MOVEMENT_INTERFACE_ID:
+      return getDataMovementInterfaceId();
+
+    case SECURITY_PROTOCOL:
+      return getSecurityProtocol();
+
+    case ALTERNATIVE_SCPHOST_NAME:
+      return getAlternativeSCPHostName();
+
+    case SSH_PORT:
+      return Integer.valueOf(getSshPort());
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case DATA_MOVEMENT_INTERFACE_ID:
+      return isSetDataMovementInterfaceId();
+    case SECURITY_PROTOCOL:
+      return isSetSecurityProtocol();
+    case ALTERNATIVE_SCPHOST_NAME:
+      return isSetAlternativeSCPHostName();
+    case SSH_PORT:
+      return isSetSshPort();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof SCPDataMovement)
+      return this.equals((SCPDataMovement)that);
+    return false;
+  }
+
+  public boolean equals(SCPDataMovement that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_dataMovementInterfaceId = true && this.isSetDataMovementInterfaceId();
+    boolean that_present_dataMovementInterfaceId = true && that.isSetDataMovementInterfaceId();
+    if (this_present_dataMovementInterfaceId || that_present_dataMovementInterfaceId) {
+      if (!(this_present_dataMovementInterfaceId && that_present_dataMovementInterfaceId))
+        return false;
+      if (!this.dataMovementInterfaceId.equals(that.dataMovementInterfaceId))
+        return false;
+    }
+
+    boolean this_present_securityProtocol = true && this.isSetSecurityProtocol();
+    boolean that_present_securityProtocol = true && that.isSetSecurityProtocol();
+    if (this_present_securityProtocol || that_present_securityProtocol) {
+      if (!(this_present_securityProtocol && that_present_securityProtocol))
+        return false;
+      if (!this.securityProtocol.equals(that.securityProtocol))
+        return false;
+    }
+
+    boolean this_present_alternativeSCPHostName = true && this.isSetAlternativeSCPHostName();
+    boolean that_present_alternativeSCPHostName = true && that.isSetAlternativeSCPHostName();
+    if (this_present_alternativeSCPHostName || that_present_alternativeSCPHostName) {
+      if (!(this_present_alternativeSCPHostName && that_present_alternativeSCPHostName))
+        return false;
+      if (!this.alternativeSCPHostName.equals(that.alternativeSCPHostName))
+        return false;
+    }
+
+    boolean this_present_sshPort = true && this.isSetSshPort();
+    boolean that_present_sshPort = true && that.isSetSshPort();
+    if (this_present_sshPort || that_present_sshPort) {
+      if (!(this_present_sshPort && that_present_sshPort))
+        return false;
+      if (this.sshPort != that.sshPort)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_dataMovementInterfaceId = true && (isSetDataMovementInterfaceId());
+    list.add(present_dataMovementInterfaceId);
+    if (present_dataMovementInterfaceId)
+      list.add(dataMovementInterfaceId);
+
+    boolean present_securityProtocol = true && (isSetSecurityProtocol());
+    list.add(present_securityProtocol);
+    if (present_securityProtocol)
+      list.add(securityProtocol.getValue());
+
+    boolean present_alternativeSCPHostName = true && (isSetAlternativeSCPHostName());
+    list.add(present_alternativeSCPHostName);
+    if (present_alternativeSCPHostName)
+      list.add(alternativeSCPHostName);
+
+    boolean present_sshPort = true && (isSetSshPort());
+    list.add(present_sshPort);
+    if (present_sshPort)
+      list.add(sshPort);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(SCPDataMovement other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetDataMovementInterfaceId()).compareTo(other.isSetDataMovementInterfaceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDataMovementInterfaceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dataMovementInterfaceId, other.dataMovementInterfaceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSecurityProtocol()).compareTo(other.isSetSecurityProtocol());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSecurityProtocol()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.securityProtocol, other.securityProtocol);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAlternativeSCPHostName()).compareTo(other.isSetAlternativeSCPHostName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAlternativeSCPHostName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.alternativeSCPHostName, other.alternativeSCPHostName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSshPort()).compareTo(other.isSetSshPort());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSshPort()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sshPort, other.sshPort);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("SCPDataMovement(");
+    boolean first = true;
+
+    sb.append("dataMovementInterfaceId:");
+    if (this.dataMovementInterfaceId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.dataMovementInterfaceId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("securityProtocol:");
+    if (this.securityProtocol == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.securityProtocol);
+    }
+    first = false;
+    if (isSetAlternativeSCPHostName()) {
+      if (!first) sb.append(", ");
+      sb.append("alternativeSCPHostName:");
+      if (this.alternativeSCPHostName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.alternativeSCPHostName);
+      }
+      first = false;
+    }
+    if (isSetSshPort()) {
+      if (!first) sb.append(", ");
+      sb.append("sshPort:");
+      sb.append(this.sshPort);
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetDataMovementInterfaceId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'dataMovementInterfaceId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetSecurityProtocol()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'securityProtocol' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bitfield = 0;
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class SCPDataMovementStandardSchemeFactory implements SchemeFactory {
+    public SCPDataMovementStandardScheme getScheme() {
+      return new SCPDataMovementStandardScheme();
+    }
+  }
+
+  private static class SCPDataMovementStandardScheme extends StandardScheme<SCPDataMovement> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, SCPDataMovement struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // DATA_MOVEMENT_INTERFACE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.dataMovementInterfaceId = iprot.readString();
+              struct.setDataMovementInterfaceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // SECURITY_PROTOCOL
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.securityProtocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
+              struct.setSecurityProtocolIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // ALTERNATIVE_SCPHOST_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.alternativeSCPHostName = iprot.readString();
+              struct.setAlternativeSCPHostNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // SSH_PORT
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.sshPort = iprot.readI32();
+              struct.setSshPortIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, SCPDataMovement struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.dataMovementInterfaceId != null) {
+        oprot.writeFieldBegin(DATA_MOVEMENT_INTERFACE_ID_FIELD_DESC);
+        oprot.writeString(struct.dataMovementInterfaceId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.securityProtocol != null) {
+        oprot.writeFieldBegin(SECURITY_PROTOCOL_FIELD_DESC);
+        oprot.writeI32(struct.securityProtocol.getValue());
+        oprot.writeFieldEnd();
+      }
+      if (struct.alternativeSCPHostName != null) {
+        if (struct.isSetAlternativeSCPHostName()) {
+          oprot.writeFieldBegin(ALTERNATIVE_SCPHOST_NAME_FIELD_DESC);
+          oprot.writeString(struct.alternativeSCPHostName);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetSshPort()) {
+        oprot.writeFieldBegin(SSH_PORT_FIELD_DESC);
+        oprot.writeI32(struct.sshPort);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class SCPDataMovementTupleSchemeFactory implements SchemeFactory {
+    public SCPDataMovementTupleScheme getScheme() {
+      return new SCPDataMovementTupleScheme();
+    }
+  }
+
+  private static class SCPDataMovementTupleScheme extends TupleScheme<SCPDataMovement> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, SCPDataMovement struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeString(struct.dataMovementInterfaceId);
+      oprot.writeI32(struct.securityProtocol.getValue());
+      BitSet optionals = new BitSet();
+      if (struct.isSetAlternativeSCPHostName()) {
+        optionals.set(0);
+      }
+      if (struct.isSetSshPort()) {
+        optionals.set(1);
+      }
+      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetAlternativeSCPHostName()) {
+        oprot.writeString(struct.alternativeSCPHostName);
+      }
+      if (struct.isSetSshPort()) {
+        oprot.writeI32(struct.sshPort);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, SCPDataMovement struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.dataMovementInterfaceId = iprot.readString();
+      struct.setDataMovementInterfaceIdIsSet(true);
+      struct.securityProtocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
+      struct.setSecurityProtocolIsSet(true);
+      BitSet incoming = iprot.readBitSet(2);
+      if (incoming.get(0)) {
+        struct.alternativeSCPHostName = iprot.readString();
+        struct.setAlternativeSCPHostNameIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.sshPort = iprot.readI32();
+        struct.setSshPortIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/ca89eaee/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SecurityProtocol.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SecurityProtocol.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SecurityProtocol.java
new file mode 100644
index 0000000..c1f5469
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SecurityProtocol.java
@@ -0,0 +1,88 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model.data.movement;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+/**
+ * Enumeration of security authentication and authorization mechanisms supported by Airavata. This enumeration just
+ *  describes the supported mechanism. The corresponding security credentials are registered with Airavata Credential
+ *  store.
+ * 
+ * USERNAME_PASSWORD:
+ *  A User Name.
+ * 
+ * SSH_KEYS:
+ *  SSH Keys
+ * 
+ * FIXME: Change GSI to a more precise generic security protocol - X509
+ * 
+ */
+public enum SecurityProtocol implements org.apache.thrift.TEnum {
+  USERNAME_PASSWORD(0),
+  SSH_KEYS(1),
+  GSI(2),
+  KERBEROS(3),
+  OAUTH(4),
+  LOCAL(5);
+
+  private final int value;
+
+  private SecurityProtocol(int value) {
+    this.value = value;
+  }
+
+  /**
+   * Get the integer value of this enum value, as defined in the Thrift IDL.
+   */
+  public int getValue() {
+    return value;
+  }
+
+  /**
+   * Find a the enum type by its integer value, as defined in the Thrift IDL.
+   * @return null if the value is not found.
+   */
+  public static SecurityProtocol findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return USERNAME_PASSWORD;
+      case 1:
+        return SSH_KEYS;
+      case 2:
+        return GSI;
+      case 3:
+        return KERBEROS;
+      case 4:
+        return OAUTH;
+      case 5:
+        return LOCAL;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/ca89eaee/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
new file mode 100644
index 0000000..32a5f7a
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
@@ -0,0 +1,629 @@
+/**
+ * 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.
+ */
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model.data.movement;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+/**
+ * Data Movement through UnicoreStorage
+ * 
+ * unicoreEndPointURL:
+ *  unicoreGateway End Point. The provider will query this service to fetch required service end points.
+ */
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-11-23")
+public class UnicoreDataMovement implements org.apache.thrift.TBase<UnicoreDataMovement, UnicoreDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<UnicoreDataMovement> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UnicoreDataMovement");
+
+  private static final org.apache.thrift.protocol.TField DATA_MOVEMENT_INTERFACE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("dataMovementInterfaceId", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField SECURITY_PROTOCOL_FIELD_DESC = new org.apache.thrift.protocol.TField("securityProtocol", org.apache.thrift.protocol.TType.I32, (short)2);
+  private static final org.apache.thrift.protocol.TField UNICORE_END_POINT_URL_FIELD_DESC = new org.apache.thrift.protocol.TField("unicoreEndPointURL", org.apache.thrift.protocol.TType.STRING, (short)3);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new UnicoreDataMovementStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new UnicoreDataMovementTupleSchemeFactory());
+  }
+
+  private String dataMovementInterfaceId; // required
+  private SecurityProtocol securityProtocol; // required
+  private String unicoreEndPointURL; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    DATA_MOVEMENT_INTERFACE_ID((short)1, "dataMovementInterfaceId"),
+    /**
+     * 
+     * @see SecurityProtocol
+     */
+    SECURITY_PROTOCOL((short)2, "securityProtocol"),
+    UNICORE_END_POINT_URL((short)3, "unicoreEndPointURL");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // DATA_MOVEMENT_INTERFACE_ID
+          return DATA_MOVEMENT_INTERFACE_ID;
+        case 2: // SECURITY_PROTOCOL
+          return SECURITY_PROTOCOL;
+        case 3: // UNICORE_END_POINT_URL
+          return UNICORE_END_POINT_URL;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.DATA_MOVEMENT_INTERFACE_ID, new org.apache.thrift.meta_data.FieldMetaData("dataMovementInterfaceId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.SECURITY_PROTOCOL, new org.apache.thrift.meta_data.FieldMetaData("securityProtocol", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, SecurityProtocol.class)));
+    tmpMap.put(_Fields.UNICORE_END_POINT_URL, new org.apache.thrift.meta_data.FieldMetaData("unicoreEndPointURL", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UnicoreDataMovement.class, metaDataMap);
+  }
+
+  public UnicoreDataMovement() {
+    this.dataMovementInterfaceId = "DO_NOT_SET_AT_CLIENTS";
+
+  }
+
+  public UnicoreDataMovement(
+    String dataMovementInterfaceId,
+    SecurityProtocol securityProtocol,
+    String unicoreEndPointURL)
+  {
+    this();
+    this.dataMovementInterfaceId = dataMovementInterfaceId;
+    this.securityProtocol = securityProtocol;
+    this.unicoreEndPointURL = unicoreEndPointURL;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public UnicoreDataMovement(UnicoreDataMovement other) {
+    if (other.isSetDataMovementInterfaceId()) {
+      this.dataMovementInterfaceId = other.dataMovementInterfaceId;
+    }
+    if (other.isSetSecurityProtocol()) {
+      this.securityProtocol = other.securityProtocol;
+    }
+    if (other.isSetUnicoreEndPointURL()) {
+      this.unicoreEndPointURL = other.unicoreEndPointURL;
+    }
+  }
+
+  public UnicoreDataMovement deepCopy() {
+    return new UnicoreDataMovement(this);
+  }
+
+  @Override
+  public void clear() {
+    this.dataMovementInterfaceId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.securityProtocol = null;
+    this.unicoreEndPointURL = null;
+  }
+
+  public String getDataMovementInterfaceId() {
+    return this.dataMovementInterfaceId;
+  }
+
+  public void setDataMovementInterfaceId(String dataMovementInterfaceId) {
+    this.dataMovementInterfaceId = dataMovementInterfaceId;
+  }
+
+  public void unsetDataMovementInterfaceId() {
+    this.dataMovementInterfaceId = null;
+  }
+
+  /** Returns true if field dataMovementInterfaceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetDataMovementInterfaceId() {
+    return this.dataMovementInterfaceId != null;
+  }
+
+  public void setDataMovementInterfaceIdIsSet(boolean value) {
+    if (!value) {
+      this.dataMovementInterfaceId = null;
+    }
+  }
+
+  /**
+   * 
+   * @see SecurityProtocol
+   */
+  public SecurityProtocol getSecurityProtocol() {
+    return this.securityProtocol;
+  }
+
+  /**
+   * 
+   * @see SecurityProtocol
+   */
+  public void setSecurityProtocol(SecurityProtocol securityProtocol) {
+    this.securityProtocol = securityProtocol;
+  }
+
+  public void unsetSecurityProtocol() {
+    this.securityProtocol = null;
+  }
+
+  /** Returns true if field securityProtocol is set (has been assigned a value) and false otherwise */
+  public boolean isSetSecurityProtocol() {
+    return this.securityProtocol != null;
+  }
+
+  public void setSecurityProtocolIsSet(boolean value) {
+    if (!value) {
+      this.securityProtocol = null;
+    }
+  }
+
+  public String getUnicoreEndPointURL() {
+    return this.unicoreEndPointURL;
+  }
+
+  public void setUnicoreEndPointURL(String unicoreEndPointURL) {
+    this.unicoreEndPointURL = unicoreEndPointURL;
+  }
+
+  public void unsetUnicoreEndPointURL() {
+    this.unicoreEndPointURL = null;
+  }
+
+  /** Returns true if field unicoreEndPointURL is set (has been assigned a value) and false otherwise */
+  public boolean isSetUnicoreEndPointURL() {
+    return this.unicoreEndPointURL != null;
+  }
+
+  public void setUnicoreEndPointURLIsSet(boolean value) {
+    if (!value) {
+      this.unicoreEndPointURL = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case DATA_MOVEMENT_INTERFACE_ID:
+      if (value == null) {
+        unsetDataMovementInterfaceId();
+      } else {
+        setDataMovementInterfaceId((String)value);
+      }
+      break;
+
+    case SECURITY_PROTOCOL:
+      if (value == null) {
+        unsetSecurityProtocol();
+      } else {
+        setSecurityProtocol((SecurityProtocol)value);
+      }
+      break;
+
+    case UNICORE_END_POINT_URL:
+      if (value == null) {
+        unsetUnicoreEndPointURL();
+      } else {
+        setUnicoreEndPointURL((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case DATA_MOVEMENT_INTERFACE_ID:
+      return getDataMovementInterfaceId();
+
+    case SECURITY_PROTOCOL:
+      return getSecurityProtocol();
+
+    case UNICORE_END_POINT_URL:
+      return getUnicoreEndPointURL();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case DATA_MOVEMENT_INTERFACE_ID:
+      return isSetDataMovementInterfaceId();
+    case SECURITY_PROTOCOL:
+      return isSetSecurityProtocol();
+    case UNICORE_END_POINT_URL:
+      return isSetUnicoreEndPointURL();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof UnicoreDataMovement)
+      return this.equals((UnicoreDataMovement)that);
+    return false;
+  }
+
+  public boolean equals(UnicoreDataMovement that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_dataMovementInterfaceId = true && this.isSetDataMovementInterfaceId();
+    boolean that_present_dataMovementInterfaceId = true && that.isSetDataMovementInterfaceId();
+    if (this_present_dataMovementInterfaceId || that_present_dataMovementInterfaceId) {
+      if (!(this_present_dataMovementInterfaceId && that_present_dataMovementInterfaceId))
+        return false;
+      if (!this.dataMovementInterfaceId.equals(that.dataMovementInterfaceId))
+        return false;
+    }
+
+    boolean this_present_securityProtocol = true && this.isSetSecurityProtocol();
+    boolean that_present_securityProtocol = true && that.isSetSecurityProtocol();
+    if (this_present_securityProtocol || that_present_securityProtocol) {
+      if (!(this_present_securityProtocol && that_present_securityProtocol))
+        return false;
+      if (!this.securityProtocol.equals(that.securityProtocol))
+        return false;
+    }
+
+    boolean this_present_unicoreEndPointURL = true && this.isSetUnicoreEndPointURL();
+    boolean that_present_unicoreEndPointURL = true && that.isSetUnicoreEndPointURL();
+    if (this_present_unicoreEndPointURL || that_present_unicoreEndPointURL) {
+      if (!(this_present_unicoreEndPointURL && that_present_unicoreEndPointURL))
+        return false;
+      if (!this.unicoreEndPointURL.equals(that.unicoreEndPointURL))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_dataMovementInterfaceId = true && (isSetDataMovementInterfaceId());
+    list.add(present_dataMovementInterfaceId);
+    if (present_dataMovementInterfaceId)
+      list.add(dataMovementInterfaceId);
+
+    boolean present_securityProtocol = true && (isSetSecurityProtocol());
+    list.add(present_securityProtocol);
+    if (present_securityProtocol)
+      list.add(securityProtocol.getValue());
+
+    boolean present_unicoreEndPointURL = true && (isSetUnicoreEndPointURL());
+    list.add(present_unicoreEndPointURL);
+    if (present_unicoreEndPointURL)
+      list.add(unicoreEndPointURL);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(UnicoreDataMovement other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetDataMovementInterfaceId()).compareTo(other.isSetDataMovementInterfaceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDataMovementInterfaceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dataMovementInterfaceId, other.dataMovementInterfaceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSecurityProtocol()).compareTo(other.isSetSecurityProtocol());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSecurityProtocol()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.securityProtocol, other.securityProtocol);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetUnicoreEndPointURL()).compareTo(other.isSetUnicoreEndPointURL());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetUnicoreEndPointURL()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.unicoreEndPointURL, other.unicoreEndPointURL);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("UnicoreDataMovement(");
+    boolean first = true;
+
+    sb.append("dataMovementInterfaceId:");
+    if (this.dataMovementInterfaceId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.dataMovementInterfaceId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("securityProtocol:");
+    if (this.securityProtocol == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.securityProtocol);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("unicoreEndPointURL:");
+    if (this.unicoreEndPointURL == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.unicoreEndPointURL);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetDataMovementInterfaceId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'dataMovementInterfaceId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetSecurityProtocol()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'securityProtocol' is unset! Struct:" + toString());
+    }
+
+    if (!isSetUnicoreEndPointURL()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'unicoreEndPointURL' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class UnicoreDataMovementStandardSchemeFactory implements SchemeFactory {
+    public UnicoreDataMovementStandardScheme getScheme() {
+      return new UnicoreDataMovementStandardScheme();
+    }
+  }
+
+  private static class UnicoreDataMovementStandardScheme extends StandardScheme<UnicoreDataMovement> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, UnicoreDataMovement struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // DATA_MOVEMENT_INTERFACE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.dataMovementInterfaceId = iprot.readString();
+              struct.setDataMovementInterfaceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // SECURITY_PROTOCOL
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.securityProtocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
+              struct.setSecurityProtocolIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // UNICORE_END_POINT_URL
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.unicoreEndPointURL = iprot.readString();
+              struct.setUnicoreEndPointURLIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, UnicoreDataMovement struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.dataMovementInterfaceId != null) {
+        oprot.writeFieldBegin(DATA_MOVEMENT_INTERFACE_ID_FIELD_DESC);
+        oprot.writeString(struct.dataMovementInterfaceId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.securityProtocol != null) {
+        oprot.writeFieldBegin(SECURITY_PROTOCOL_FIELD_DESC);
+        oprot.writeI32(struct.securityProtocol.getValue());
+        oprot.writeFieldEnd();
+      }
+      if (struct.unicoreEndPointURL != null) {
+        oprot.writeFieldBegin(UNICORE_END_POINT_URL_FIELD_DESC);
+        oprot.writeString(struct.unicoreEndPointURL);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class UnicoreDataMovementTupleSchemeFactory implements SchemeFactory {
+    public UnicoreDataMovementTupleScheme getScheme() {
+      return new UnicoreDataMovementTupleScheme();
+    }
+  }
+
+  private static class UnicoreDataMovementTupleScheme extends TupleScheme<UnicoreDataMovement> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, UnicoreDataMovement struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeString(struct.dataMovementInterfaceId);
+      oprot.writeI32(struct.securityProtocol.getValue());
+      oprot.writeString(struct.unicoreEndPointURL);
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, UnicoreDataMovement struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.dataMovementInterfaceId = iprot.readString();
+      struct.setDataMovementInterfaceIdIsSet(true);
+      struct.securityProtocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
+      struct.setSecurityProtocolIsSet(true);
+      struct.unicoreEndPointURL = iprot.readString();
+      struct.setUnicoreEndPointURLIsSet(true);
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/ca89eaee/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
index f5d0f0f..0daa5ce 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
@@ -67,6 +67,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
   private static final org.apache.thrift.protocol.TField THROTTLE_RESOURCES_FIELD_DESC = new org.apache.thrift.protocol.TField("throttleResources", org.apache.thrift.protocol.TType.BOOL, (short)5);
   private static final org.apache.thrift.protocol.TField USER_DN_FIELD_DESC = new org.apache.thrift.protocol.TField("userDN", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField GENERATE_CERT_FIELD_DESC = new org.apache.thrift.protocol.TField("generateCert", org.apache.thrift.protocol.TType.BOOL, (short)7);
+  private static final org.apache.thrift.protocol.TField STORAGE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageId", org.apache.thrift.protocol.TType.STRING, (short)8);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -81,6 +82,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
   private boolean throttleResources; // optional
   private String userDN; // optional
   private boolean generateCert; // optional
+  private String storageId; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -90,7 +92,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     COMPUTATIONAL_RESOURCE_SCHEDULING((short)4, "computationalResourceScheduling"),
     THROTTLE_RESOURCES((short)5, "throttleResources"),
     USER_DN((short)6, "userDN"),
-    GENERATE_CERT((short)7, "generateCert");
+    GENERATE_CERT((short)7, "generateCert"),
+    STORAGE_ID((short)8, "storageId");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -119,6 +122,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
           return USER_DN;
         case 7: // GENERATE_CERT
           return GENERATE_CERT;
+        case 8: // STORAGE_ID
+          return STORAGE_ID;
         default:
           return null;
       }
@@ -165,7 +170,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
   private static final int __THROTTLERESOURCES_ISSET_ID = 3;
   private static final int __GENERATECERT_ISSET_ID = 4;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.SHARE_EXPERIMENT_PUBLICLY,_Fields.COMPUTATIONAL_RESOURCE_SCHEDULING,_Fields.THROTTLE_RESOURCES,_Fields.USER_DN,_Fields.GENERATE_CERT};
+  private static final _Fields optionals[] = {_Fields.SHARE_EXPERIMENT_PUBLICLY,_Fields.COMPUTATIONAL_RESOURCE_SCHEDULING,_Fields.THROTTLE_RESOURCES,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.STORAGE_ID};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -183,6 +188,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.GENERATE_CERT, new org.apache.thrift.meta_data.FieldMetaData("generateCert", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.STORAGE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UserConfigurationDataModel.class, metaDataMap);
   }
@@ -227,6 +234,9 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       this.userDN = other.userDN;
     }
     this.generateCert = other.generateCert;
+    if (other.isSetStorageId()) {
+      this.storageId = other.storageId;
+    }
   }
 
   public UserConfigurationDataModel deepCopy() {
@@ -247,6 +257,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     this.userDN = null;
     this.generateCert = false;
 
+    this.storageId = null;
   }
 
   public boolean isAiravataAutoSchedule() {
@@ -405,6 +416,29 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __GENERATECERT_ISSET_ID, value);
   }
 
+  public String getStorageId() {
+    return this.storageId;
+  }
+
+  public void setStorageId(String storageId) {
+    this.storageId = storageId;
+  }
+
+  public void unsetStorageId() {
+    this.storageId = null;
+  }
+
+  /** Returns true if field storageId is set (has been assigned a value) and false otherwise */
+  public boolean isSetStorageId() {
+    return this.storageId != null;
+  }
+
+  public void setStorageIdIsSet(boolean value) {
+    if (!value) {
+      this.storageId = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case AIRAVATA_AUTO_SCHEDULE:
@@ -463,6 +497,14 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       }
       break;
 
+    case STORAGE_ID:
+      if (value == null) {
+        unsetStorageId();
+      } else {
+        setStorageId((String)value);
+      }
+      break;
+
     }
   }
 
@@ -489,6 +531,9 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     case GENERATE_CERT:
       return Boolean.valueOf(isGenerateCert());
 
+    case STORAGE_ID:
+      return getStorageId();
+
     }
     throw new IllegalStateException();
   }
@@ -514,6 +559,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       return isSetUserDN();
     case GENERATE_CERT:
       return isSetGenerateCert();
+    case STORAGE_ID:
+      return isSetStorageId();
     }
     throw new IllegalStateException();
   }
@@ -594,6 +641,15 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         return false;
     }
 
+    boolean this_present_storageId = true && this.isSetStorageId();
+    boolean that_present_storageId = true && that.isSetStorageId();
+    if (this_present_storageId || that_present_storageId) {
+      if (!(this_present_storageId && that_present_storageId))
+        return false;
+      if (!this.storageId.equals(that.storageId))
+        return false;
+    }
+
     return true;
   }
 
@@ -636,6 +692,11 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     if (present_generateCert)
       list.add(generateCert);
 
+    boolean present_storageId = true && (isSetStorageId());
+    list.add(present_storageId);
+    if (present_storageId)
+      list.add(storageId);
+
     return list.hashCode();
   }
 
@@ -717,6 +778,16 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetStorageId()).compareTo(other.isSetStorageId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStorageId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageId, other.storageId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -782,6 +853,16 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       sb.append(this.generateCert);
       first = false;
     }
+    if (isSetStorageId()) {
+      if (!first) sb.append(", ");
+      sb.append("storageId:");
+      if (this.storageId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.storageId);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -895,6 +976,14 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 8: // STORAGE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.storageId = iprot.readString();
+              struct.setStorageIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -943,6 +1032,13 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         oprot.writeBool(struct.generateCert);
         oprot.writeFieldEnd();
       }
+      if (struct.storageId != null) {
+        if (struct.isSetStorageId()) {
+          oprot.writeFieldBegin(STORAGE_ID_FIELD_DESC);
+          oprot.writeString(struct.storageId);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -978,7 +1074,10 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       if (struct.isSetGenerateCert()) {
         optionals.set(4);
       }
-      oprot.writeBitSet(optionals, 5);
+      if (struct.isSetStorageId()) {
+        optionals.set(5);
+      }
+      oprot.writeBitSet(optionals, 6);
       if (struct.isSetShareExperimentPublicly()) {
         oprot.writeBool(struct.shareExperimentPublicly);
       }
@@ -994,6 +1093,9 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       if (struct.isSetGenerateCert()) {
         oprot.writeBool(struct.generateCert);
       }
+      if (struct.isSetStorageId()) {
+        oprot.writeString(struct.storageId);
+      }
     }
 
     @Override
@@ -1003,7 +1105,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       struct.setAiravataAutoScheduleIsSet(true);
       struct.overrideManualScheduledParams = iprot.readBool();
       struct.setOverrideManualScheduledParamsIsSet(true);
-      BitSet incoming = iprot.readBitSet(5);
+      BitSet incoming = iprot.readBitSet(6);
       if (incoming.get(0)) {
         struct.shareExperimentPublicly = iprot.readBool();
         struct.setShareExperimentPubliclyIsSet(true);
@@ -1025,6 +1127,10 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         struct.generateCert = iprot.readBool();
         struct.setGenerateCertIsSet(true);
       }
+      if (incoming.get(5)) {
+        struct.storageId = iprot.readString();
+        struct.setStorageIdIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/ca89eaee/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
index 597124d..cecd6f5 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
@@ -82,6 +82,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final org.apache.thrift.protocol.TField GATEWAY_EXECUTION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayExecutionId", org.apache.thrift.protocol.TType.STRING, (short)16);
   private static final org.apache.thrift.protocol.TField ENABLE_EMAIL_NOTIFICATION_FIELD_DESC = new org.apache.thrift.protocol.TField("enableEmailNotification", org.apache.thrift.protocol.TType.BOOL, (short)17);
   private static final org.apache.thrift.protocol.TField EMAIL_ADDRESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("emailAddresses", org.apache.thrift.protocol.TType.LIST, (short)18);
+  private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)19);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -107,6 +108,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private String gatewayExecutionId; // optional
   private boolean enableEmailNotification; // optional
   private List<String> emailAddresses; // optional
+  private String storageResourceId; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -127,7 +129,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     PROCESS_ERROR((short)15, "processError"),
     GATEWAY_EXECUTION_ID((short)16, "gatewayExecutionId"),
     ENABLE_EMAIL_NOTIFICATION((short)17, "enableEmailNotification"),
-    EMAIL_ADDRESSES((short)18, "emailAddresses");
+    EMAIL_ADDRESSES((short)18, "emailAddresses"),
+    STORAGE_RESOURCE_ID((short)19, "storageResourceId");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -178,6 +181,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           return ENABLE_EMAIL_NOTIFICATION;
         case 18: // EMAIL_ADDRESSES
           return EMAIL_ADDRESSES;
+        case 19: // STORAGE_RESOURCE_ID
+          return STORAGE_RESOURCE_ID;
         default:
           return null;
       }
@@ -222,7 +227,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final int __LASTUPDATETIME_ISSET_ID = 1;
   private static final int __ENABLEEMAILNOTIFICATION_ISSET_ID = 2;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES};
+  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -266,6 +271,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     tmpMap.put(_Fields.EMAIL_ADDRESSES, new org.apache.thrift.meta_data.FieldMetaData("emailAddresses", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+    tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ProcessModel.class, metaDataMap);
   }
@@ -350,6 +357,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       List<String> __this__emailAddresses = new ArrayList<String>(other.emailAddresses);
       this.emailAddresses = __this__emailAddresses;
     }
+    if (other.isSetStorageResourceId()) {
+      this.storageResourceId = other.storageResourceId;
+    }
   }
 
   public ProcessModel deepCopy() {
@@ -380,6 +390,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     setEnableEmailNotificationIsSet(false);
     this.enableEmailNotification = false;
     this.emailAddresses = null;
+    this.storageResourceId = null;
   }
 
   public String getProcessId() {
@@ -853,6 +864,29 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
   }
 
+  public String getStorageResourceId() {
+    return this.storageResourceId;
+  }
+
+  public void setStorageResourceId(String storageResourceId) {
+    this.storageResourceId = storageResourceId;
+  }
+
+  public void unsetStorageResourceId() {
+    this.storageResourceId = null;
+  }
+
+  /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetStorageResourceId() {
+    return this.storageResourceId != null;
+  }
+
+  public void setStorageResourceIdIsSet(boolean value) {
+    if (!value) {
+      this.storageResourceId = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case PROCESS_ID:
@@ -999,6 +1033,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       break;
 
+    case STORAGE_RESOURCE_ID:
+      if (value == null) {
+        unsetStorageResourceId();
+      } else {
+        setStorageResourceId((String)value);
+      }
+      break;
+
     }
   }
 
@@ -1058,6 +1100,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     case EMAIL_ADDRESSES:
       return getEmailAddresses();
 
+    case STORAGE_RESOURCE_ID:
+      return getStorageResourceId();
+
     }
     throw new IllegalStateException();
   }
@@ -1105,6 +1150,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       return isSetEnableEmailNotification();
     case EMAIL_ADDRESSES:
       return isSetEmailAddresses();
+    case STORAGE_RESOURCE_ID:
+      return isSetStorageResourceId();
     }
     throw new IllegalStateException();
   }
@@ -1284,6 +1331,15 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return false;
     }
 
+    boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
+    boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
+    if (this_present_storageResourceId || that_present_storageResourceId) {
+      if (!(this_present_storageResourceId && that_present_storageResourceId))
+        return false;
+      if (!this.storageResourceId.equals(that.storageResourceId))
+        return false;
+    }
+
     return true;
   }
 
@@ -1381,6 +1437,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     if (present_emailAddresses)
       list.add(emailAddresses);
 
+    boolean present_storageResourceId = true && (isSetStorageResourceId());
+    list.add(present_storageResourceId);
+    if (present_storageResourceId)
+      list.add(storageResourceId);
+
     return list.hashCode();
   }
 
@@ -1572,6 +1633,16 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStorageResourceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1755,6 +1826,16 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       first = false;
     }
+    if (isSetStorageResourceId()) {
+      if (!first) sb.append(", ");
+      sb.append("storageResourceId:");
+      if (this.storageResourceId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.storageResourceId);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -2007,6 +2088,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 19: // STORAGE_RESOURCE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.storageResourceId = iprot.readString();
+              struct.setStorageResourceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -2164,6 +2253,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldEnd();
         }
       }
+      if (struct.storageResourceId != null) {
+        if (struct.isSetStorageResourceId()) {
+          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
+          oprot.writeString(struct.storageResourceId);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -2232,7 +2328,10 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetEmailAddresses()) {
         optionals.set(15);
       }
-      oprot.writeBitSet(optionals, 16);
+      if (struct.isSetStorageResourceId()) {
+        optionals.set(16);
+      }
+      oprot.writeBitSet(optionals, 17);
       if (struct.isSetCreationTime()) {
         oprot.writeI64(struct.creationTime);
       }
@@ -2305,6 +2404,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           }
         }
       }
+      if (struct.isSetStorageResourceId()) {
+        oprot.writeString(struct.storageResourceId);
+      }
     }
 
     @Override
@@ -2314,7 +2416,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       struct.setProcessIdIsSet(true);
       struct.experimentId = iprot.readString();
       struct.setExperimentIdIsSet(true);
-      BitSet incoming = iprot.readBitSet(16);
+      BitSet incoming = iprot.readBitSet(17);
       if (incoming.get(0)) {
         struct.creationTime = iprot.readI64();
         struct.setCreationTimeIsSet(true);
@@ -2421,6 +2523,10 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         }
         struct.setEmailAddressesIsSet(true);
       }
+      if (incoming.get(16)) {
+        struct.storageResourceId = iprot.readString();
+        struct.setStorageResourceIdIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/ca89eaee/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
index 90b7242..72442f9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
@@ -69,14 +69,14 @@ public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<Enviro
   }
 
   private String location; // required
-  private org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol protocol; // required
+  private org.apache.airavata.model.data.movement.SecurityProtocol protocol; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     LOCATION((short)1, "location"),
     /**
      * 
-     * @see org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol
+     * @see org.apache.airavata.model.data.movement.SecurityProtocol
      */
     PROTOCOL((short)2, "protocol");
 
@@ -143,7 +143,7 @@ public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<Enviro
     tmpMap.put(_Fields.LOCATION, new org.apache.thrift.meta_data.FieldMetaData("location", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.PROTOCOL, new org.apache.thrift.meta_data.FieldMetaData("protocol", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol.class)));
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, org.apache.airavata.model.data.movement.SecurityProtocol.class)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(EnvironmentSetupTaskModel.class, metaDataMap);
   }
@@ -153,7 +153,7 @@ public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<Enviro
 
   public EnvironmentSetupTaskModel(
     String location,
-    org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol protocol)
+    org.apache.airavata.model.data.movement.SecurityProtocol protocol)
   {
     this();
     this.location = location;
@@ -207,17 +207,17 @@ public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<Enviro
 
   /**
    * 
-   * @see org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol
+   * @see org.apache.airavata.model.data.movement.SecurityProtocol
    */
-  public org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol getProtocol() {
+  public org.apache.airavata.model.data.movement.SecurityProtocol getProtocol() {
     return this.protocol;
   }
 
   /**
    * 
-   * @see org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol
+   * @see org.apache.airavata.model.data.movement.SecurityProtocol
    */
-  public void setProtocol(org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol protocol) {
+  public void setProtocol(org.apache.airavata.model.data.movement.SecurityProtocol protocol) {
     this.protocol = protocol;
   }
 
@@ -250,7 +250,7 @@ public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<Enviro
       if (value == null) {
         unsetProtocol();
       } else {
-        setProtocol((org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol)value);
+        setProtocol((org.apache.airavata.model.data.movement.SecurityProtocol)value);
       }
       break;
 
@@ -459,7 +459,7 @@ public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<Enviro
             break;
           case 2: // PROTOCOL
             if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-              struct.protocol = org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol.findByValue(iprot.readI32());
+              struct.protocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
               struct.setProtocolIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -514,7 +514,7 @@ public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<Enviro
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.location = iprot.readString();
       struct.setLocationIsSet(true);
-      struct.protocol = org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol.findByValue(iprot.readI32());
+      struct.protocol = org.apache.airavata.model.data.movement.SecurityProtocol.findByValue(iprot.readI32());
       struct.setProtocolIsSet(true);
     }
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/ca89eaee/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/DataTransferTaskConfig.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/DataTransferTaskConfig.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/DataTransferTaskConfig.java
index 76728f0..532a75d 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/DataTransferTaskConfig.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/DataTransferTaskConfig.java
@@ -20,7 +20,7 @@
  */
 package org.apache.airavata.gfac.core.config;
 
-import org.apache.airavata.model.appcatalog.computeresource.DataMovementProtocol;
+import org.apache.airavata.model.data.movement.DataMovementProtocol;
 
 import java.util.HashMap;
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/airavata/blob/ca89eaee/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/GFacYamlConfigruation.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/GFacYamlConfigruation.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/GFacYamlConfigruation.java
index dfd396a..12d969e 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/GFacYamlConfigruation.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/config/GFacYamlConfigruation.java
@@ -21,9 +21,9 @@
 package org.apache.airavata.gfac.core.config;
 
 import org.apache.airavata.gfac.core.GFacException;
-import org.apache.airavata.model.appcatalog.computeresource.DataMovementProtocol;
 import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
 import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType;
+import org.apache.airavata.model.data.movement.DataMovementProtocol;
 import org.yaml.snakeyaml.Yaml;
 
 import java.io.InputStream;

http://git-wip-us.apache.org/repos/asf/airavata/blob/ca89eaee/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
index f470461..88bd178 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
@@ -28,12 +28,14 @@ import org.apache.airavata.messaging.core.Publisher;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
 import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.DataMovementProtocol;
 import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
 import org.apache.airavata.model.appcatalog.computeresource.MonitorMode;
 import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference;
+import org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription;
+import org.apache.airavata.model.data.movement.DataMovementProtocol;
 import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.process.ProcessModel;
 import org.apache.airavata.model.status.ProcessState;
@@ -78,6 +80,8 @@ public class ProcessContext {
 	private DataMovementProtocol dataMovementProtocol;
 	private JobModel jobModel;
 	private ComputeResourcePreference computeResourcePreference;
+    private StoragePreference storagePreference;
+    private StorageResourceDescription storageResource;
 	private MonitorMode monitorMode;
 	private ResourceJobManager resourceJobManager;
 	private boolean handOver;
@@ -462,4 +466,20 @@ public class ProcessContext {
     public void setCurrentExecutingTaskModel(TaskModel currentExecutingTaskModel) {
         this.currentExecutingTaskModel = currentExecutingTaskModel;
     }
+
+    public StoragePreference getStoragePreference() {
+        return storagePreference;
+    }
+
+    public void setStoragePreference(StoragePreference storagePreference) {
+        this.storagePreference = storagePreference;
+    }
+
+    public StorageResourceDescription getStorageResource() {
+        return storageResource;
+    }
+
+    public void setStorageResource(StorageResourceDescription storageResource) {
+        this.storageResource = storageResource;
+    }
 }