You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2016/08/09 18:00:41 UTC

[01/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Repository: airavata-sandbox
Updated Branches:
  refs/heads/master 4231ac353 -> 2352c0ffa


http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/__init__.py
new file mode 100644
index 0000000..1bf6e25
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/__init__.py
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+__all__ = ['TServer', 'TNonblockingServer']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/THttpClient.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/THttpClient.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/THttpClient.py
new file mode 100644
index 0000000..eef0d98
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/THttpClient.py
@@ -0,0 +1,147 @@
+#
+# 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.
+#
+
+import httplib
+import os
+import socket
+import sys
+import urllib
+import urlparse
+import warnings
+
+from thrift.transport.TTransport import *
+
+
+class THttpClient(TTransportBase):
+  """Http implementation of TTransport base."""
+
+  def __init__(self, uri_or_host, port=None, path=None):
+    """THttpClient supports two different types constructor parameters.
+
+    THttpClient(host, port, path) - deprecated
+    THttpClient(uri)
+
+    Only the second supports https.
+    """
+    if port is not None:
+      warnings.warn(
+        "Please use the THttpClient('http://host:port/path') syntax",
+        DeprecationWarning,
+        stacklevel=2)
+      self.host = uri_or_host
+      self.port = port
+      assert path
+      self.path = path
+      self.scheme = 'http'
+    else:
+      parsed = urlparse.urlparse(uri_or_host)
+      self.scheme = parsed.scheme
+      assert self.scheme in ('http', 'https')
+      if self.scheme == 'http':
+        self.port = parsed.port or httplib.HTTP_PORT
+      elif self.scheme == 'https':
+        self.port = parsed.port or httplib.HTTPS_PORT
+      self.host = parsed.hostname
+      self.path = parsed.path
+      if parsed.query:
+        self.path += '?%s' % parsed.query
+    self.__wbuf = StringIO()
+    self.__http = None
+    self.__timeout = None
+    self.__custom_headers = None
+
+  def open(self):
+    if self.scheme == 'http':
+      self.__http = httplib.HTTP(self.host, self.port)
+    else:
+      self.__http = httplib.HTTPS(self.host, self.port)
+
+  def close(self):
+    self.__http.close()
+    self.__http = None
+
+  def isOpen(self):
+    return self.__http is not None
+
+  def setTimeout(self, ms):
+    if not hasattr(socket, 'getdefaulttimeout'):
+      raise NotImplementedError
+
+    if ms is None:
+      self.__timeout = None
+    else:
+      self.__timeout = ms / 1000.0
+
+  def setCustomHeaders(self, headers):
+    self.__custom_headers = headers
+
+  def read(self, sz):
+    return self.__http.file.read(sz)
+
+  def write(self, buf):
+    self.__wbuf.write(buf)
+
+  def __withTimeout(f):
+    def _f(*args, **kwargs):
+      orig_timeout = socket.getdefaulttimeout()
+      socket.setdefaulttimeout(args[0].__timeout)
+      result = f(*args, **kwargs)
+      socket.setdefaulttimeout(orig_timeout)
+      return result
+    return _f
+
+  def flush(self):
+    if self.isOpen():
+      self.close()
+    self.open()
+
+    # Pull data out of buffer
+    data = self.__wbuf.getvalue()
+    self.__wbuf = StringIO()
+
+    # HTTP request
+    self.__http.putrequest('POST', self.path)
+
+    # Write headers
+    self.__http.putheader('Host', self.host)
+    self.__http.putheader('Content-Type', 'application/x-thrift')
+    self.__http.putheader('Content-Length', str(len(data)))
+
+    if not self.__custom_headers or 'User-Agent' not in self.__custom_headers:
+      user_agent = 'Python/THttpClient'
+      script = os.path.basename(sys.argv[0])
+      if script:
+        user_agent = '%s (%s)' % (user_agent, urllib.quote(script))
+      self.__http.putheader('User-Agent', user_agent)
+
+    if self.__custom_headers:
+        for key, val in self.__custom_headers.iteritems():
+            self.__http.putheader(key, val)
+
+    self.__http.endheaders()
+
+    # Write payload
+    self.__http.send(data)
+
+    # Get reply to flush the request
+    self.code, self.message, self.headers = self.__http.getreply()
+
+  # Decorate if we know how to timeout
+  if hasattr(socket, 'getdefaulttimeout'):
+    flush = __withTimeout(flush)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.py
new file mode 100644
index 0000000..81e0984
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.py
@@ -0,0 +1,214 @@
+#
+# 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.
+#
+
+import os
+import socket
+import ssl
+
+from thrift.transport import TSocket
+from thrift.transport.TTransport import TTransportException
+
+
+class TSSLSocket(TSocket.TSocket):
+  """
+  SSL implementation of client-side TSocket
+
+  This class creates outbound sockets wrapped using the
+  python standard ssl module for encrypted connections.
+
+  The protocol used is set using the class variable
+  SSL_VERSION, which must be one of ssl.PROTOCOL_* and
+  defaults to  ssl.PROTOCOL_TLSv1 for greatest security.
+  """
+  SSL_VERSION = ssl.PROTOCOL_TLSv1
+
+  def __init__(self,
+               host='localhost',
+               port=9090,
+               validate=True,
+               ca_certs=None,
+               keyfile=None,
+               certfile=None,
+               unix_socket=None):
+    """Create SSL TSocket
+
+    @param validate: Set to False to disable SSL certificate validation
+    @type validate: bool
+    @param ca_certs: Filename to the Certificate Authority pem file, possibly a
+    file downloaded from: http://curl.haxx.se/ca/cacert.pem  This is passed to
+    the ssl_wrap function as the 'ca_certs' parameter.
+    @type ca_certs: str
+    @param keyfile: The private key
+    @type keyfile: str
+    @param certfile: The cert file
+    @type certfile: str
+    
+    Raises an IOError exception if validate is True and the ca_certs file is
+    None, not present or unreadable.
+    """
+    self.validate = validate
+    self.is_valid = False
+    self.peercert = None
+    if not validate:
+      self.cert_reqs = ssl.CERT_NONE
+    else:
+      self.cert_reqs = ssl.CERT_REQUIRED
+    self.ca_certs = ca_certs
+    self.keyfile = keyfile
+    self.certfile = certfile
+    if validate:
+      if ca_certs is None or not os.access(ca_certs, os.R_OK):
+        raise IOError('Certificate Authority ca_certs file "%s" '
+                      'is not readable, cannot validate SSL '
+                      'certificates.' % (ca_certs))
+    TSocket.TSocket.__init__(self, host, port, unix_socket)
+
+  def open(self):
+    try:
+      res0 = self._resolveAddr()
+      for res in res0:
+        sock_family, sock_type = res[0:2]
+        ip_port = res[4]
+        plain_sock = socket.socket(sock_family, sock_type)
+        self.handle = ssl.wrap_socket(plain_sock,
+                                      ssl_version=self.SSL_VERSION,
+                                      do_handshake_on_connect=True,
+                                      ca_certs=self.ca_certs,
+                                      keyfile=self.keyfile,
+                                      certfile=self.certfile,
+                                      cert_reqs=self.cert_reqs)
+        self.handle.settimeout(self._timeout)
+        try:
+          self.handle.connect(ip_port)
+        except socket.error, e:
+          if res is not res0[-1]:
+            continue
+          else:
+            raise e
+        break
+    except socket.error, e:
+      if self._unix_socket:
+        message = 'Could not connect to secure socket %s: %s' \
+                % (self._unix_socket, e)
+      else:
+        message = 'Could not connect to %s:%d: %s' % (self.host, self.port, e)
+      raise TTransportException(type=TTransportException.NOT_OPEN,
+                                message=message)
+    if self.validate:
+      self._validate_cert()
+
+  def _validate_cert(self):
+    """internal method to validate the peer's SSL certificate, and to check the
+    commonName of the certificate to ensure it matches the hostname we
+    used to make this connection.  Does not support subjectAltName records
+    in certificates.
+
+    raises TTransportException if the certificate fails validation.
+    """
+    cert = self.handle.getpeercert()
+    self.peercert = cert
+    if 'subject' not in cert:
+      raise TTransportException(
+        type=TTransportException.NOT_OPEN,
+        message='No SSL certificate found from %s:%s' % (self.host, self.port))
+    fields = cert['subject']
+    for field in fields:
+      # ensure structure we get back is what we expect
+      if not isinstance(field, tuple):
+        continue
+      cert_pair = field[0]
+      if len(cert_pair) < 2:
+        continue
+      cert_key, cert_value = cert_pair[0:2]
+      if cert_key != 'commonName':
+        continue
+      certhost = cert_value
+      # this check should be performed by some sort of Access Manager
+      if certhost == self.host:
+        # success, cert commonName matches desired hostname
+        self.is_valid = True
+        return
+      else:
+        raise TTransportException(
+          type=TTransportException.UNKNOWN,
+          message='Hostname we connected to "%s" doesn\'t match certificate '
+                  'provided commonName "%s"' % (self.host, certhost))
+    raise TTransportException(
+      type=TTransportException.UNKNOWN,
+      message='Could not validate SSL certificate from '
+              'host "%s".  Cert=%s' % (self.host, cert))
+
+
+class TSSLServerSocket(TSocket.TServerSocket):
+  """SSL implementation of TServerSocket
+
+  This uses the ssl module's wrap_socket() method to provide SSL
+  negotiated encryption.
+  """
+  SSL_VERSION = ssl.PROTOCOL_TLSv1
+
+  def __init__(self,
+               host=None,
+               port=9090,
+               certfile='cert.pem',
+               unix_socket=None):
+    """Initialize a TSSLServerSocket
+
+    @param certfile: filename of the server certificate, defaults to cert.pem
+    @type certfile: str
+    @param host: The hostname or IP to bind the listen socket to,
+                 i.e. 'localhost' for only allowing local network connections.
+                 Pass None to bind to all interfaces.
+    @type host: str
+    @param port: The port to listen on for inbound connections.
+    @type port: int
+    """
+    self.setCertfile(certfile)
+    TSocket.TServerSocket.__init__(self, host, port)
+
+  def setCertfile(self, certfile):
+    """Set or change the server certificate file used to wrap new connections.
+
+    @param certfile: The filename of the server certificate,
+                     i.e. '/etc/certs/server.pem'
+    @type certfile: str
+
+    Raises an IOError exception if the certfile is not present or unreadable.
+    """
+    if not os.access(certfile, os.R_OK):
+      raise IOError('No such certfile found: %s' % (certfile))
+    self.certfile = certfile
+
+  def accept(self):
+    plain_client, addr = self.handle.accept()
+    try:
+      client = ssl.wrap_socket(plain_client, certfile=self.certfile,
+                      server_side=True, ssl_version=self.SSL_VERSION)
+    except ssl.SSLError, ssl_exc:
+      # failed handshake/ssl wrap, close socket to client
+      plain_client.close()
+      # raise ssl_exc
+      # We can't raise the exception, because it kills most TServer derived
+      # serve() methods.
+      # Instead, return None, and let the TServer instance deal with it in
+      # other exception handling.  (but TSimpleServer dies anyway)
+      return None
+    result = TSocket.TSocket()
+    result.setHandle(client)
+    return result

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.pyc
new file mode 100644
index 0000000..291749d
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.py
new file mode 100644
index 0000000..971b526
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.py
@@ -0,0 +1,176 @@
+#
+# 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.
+#
+
+import errno
+import os
+import socket
+import sys
+
+from thrift.transport.TTransport import *
+
+
+class TSocketBase(TTransportBase):
+  def _resolveAddr(self):
+    if self._unix_socket is not None:
+      return [(socket.AF_UNIX, socket.SOCK_STREAM, None, None,
+               self._unix_socket)]
+    else:
+      return socket.getaddrinfo(self.host,
+                                self.port,
+                                socket.AF_UNSPEC,
+                                socket.SOCK_STREAM,
+                                0,
+                                socket.AI_PASSIVE | socket.AI_ADDRCONFIG)
+
+  def close(self):
+    if self.handle:
+      self.handle.close()
+      self.handle = None
+
+
+class TSocket(TSocketBase):
+  """Socket implementation of TTransport base."""
+
+  def __init__(self, host='localhost', port=9090, unix_socket=None):
+    """Initialize a TSocket
+
+    @param host(str)  The host to connect to.
+    @param port(int)  The (TCP) port to connect to.
+    @param unix_socket(str)  The filename of a unix socket to connect to.
+                             (host and port will be ignored.)
+    """
+    self.host = host
+    self.port = port
+    self.handle = None
+    self._unix_socket = unix_socket
+    self._timeout = None
+
+  def setHandle(self, h):
+    self.handle = h
+
+  def isOpen(self):
+    return self.handle is not None
+
+  def setTimeout(self, ms):
+    if ms is None:
+      self._timeout = None
+    else:
+      self._timeout = ms / 1000.0
+
+    if self.handle is not None:
+      self.handle.settimeout(self._timeout)
+
+  def open(self):
+    try:
+      res0 = self._resolveAddr()
+      for res in res0:
+        self.handle = socket.socket(res[0], res[1])
+        self.handle.settimeout(self._timeout)
+        try:
+          self.handle.connect(res[4])
+        except socket.error, e:
+          if res is not res0[-1]:
+            continue
+          else:
+            raise e
+        break
+    except socket.error, e:
+      if self._unix_socket:
+        message = 'Could not connect to socket %s' % self._unix_socket
+      else:
+        message = 'Could not connect to %s:%d' % (self.host, self.port)
+      raise TTransportException(type=TTransportException.NOT_OPEN,
+                                message=message)
+
+  def read(self, sz):
+    try:
+      buff = self.handle.recv(sz)
+    except socket.error, e:
+      if (e.args[0] == errno.ECONNRESET and
+          (sys.platform == 'darwin' or sys.platform.startswith('freebsd'))):
+        # freebsd and Mach don't follow POSIX semantic of recv
+        # and fail with ECONNRESET if peer performed shutdown.
+        # See corresponding comment and code in TSocket::read()
+        # in lib/cpp/src/transport/TSocket.cpp.
+        self.close()
+        # Trigger the check to raise the END_OF_FILE exception below.
+        buff = ''
+      else:
+        raise
+    if len(buff) == 0:
+      raise TTransportException(type=TTransportException.END_OF_FILE,
+                                message='TSocket read 0 bytes')
+    return buff
+
+  def write(self, buff):
+    if not self.handle:
+      raise TTransportException(type=TTransportException.NOT_OPEN,
+                                message='Transport not open')
+    sent = 0
+    have = len(buff)
+    while sent < have:
+      plus = self.handle.send(buff)
+      if plus == 0:
+        raise TTransportException(type=TTransportException.END_OF_FILE,
+                                  message='TSocket sent 0 bytes')
+      sent += plus
+      buff = buff[plus:]
+
+  def flush(self):
+    pass
+
+
+class TServerSocket(TSocketBase, TServerTransportBase):
+  """Socket implementation of TServerTransport base."""
+
+  def __init__(self, host=None, port=9090, unix_socket=None):
+    self.host = host
+    self.port = port
+    self._unix_socket = unix_socket
+    self.handle = None
+
+  def listen(self):
+    res0 = self._resolveAddr()
+    for res in res0:
+      if res[0] is socket.AF_INET6 or res is res0[-1]:
+        break
+
+    # We need remove the old unix socket if the file exists and
+    # nobody is listening on it.
+    if self._unix_socket:
+      tmp = socket.socket(res[0], res[1])
+      try:
+        tmp.connect(res[4])
+      except socket.error, err:
+        eno, message = err.args
+        if eno == errno.ECONNREFUSED:
+          os.unlink(res[4])
+
+    self.handle = socket.socket(res[0], res[1])
+    self.handle.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+    if hasattr(self.handle, 'settimeout'):
+      self.handle.settimeout(None)
+    self.handle.bind(res[4])
+    self.handle.listen(128)
+
+  def accept(self):
+    client, addr = self.handle.accept()
+    result = TSocket()
+    result.setHandle(client)
+    return result

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.pyc
new file mode 100644
index 0000000..fb5939b
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.py
new file mode 100644
index 0000000..4481371
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.py
@@ -0,0 +1,330 @@
+#
+# 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.
+#
+
+from cStringIO import StringIO
+from struct import pack, unpack
+from thrift.Thrift import TException
+
+
+class TTransportException(TException):
+  """Custom Transport Exception class"""
+
+  UNKNOWN = 0
+  NOT_OPEN = 1
+  ALREADY_OPEN = 2
+  TIMED_OUT = 3
+  END_OF_FILE = 4
+
+  def __init__(self, type=UNKNOWN, message=None):
+    TException.__init__(self, message)
+    self.type = type
+
+
+class TTransportBase:
+  """Base class for Thrift transport layer."""
+
+  def isOpen(self):
+    pass
+
+  def open(self):
+    pass
+
+  def close(self):
+    pass
+
+  def read(self, sz):
+    pass
+
+  def readAll(self, sz):
+    buff = ''
+    have = 0
+    while (have < sz):
+      chunk = self.read(sz - have)
+      have += len(chunk)
+      buff += chunk
+
+      if len(chunk) == 0:
+        raise EOFError()
+
+    return buff
+
+  def write(self, buf):
+    pass
+
+  def flush(self):
+    pass
+
+
+# This class should be thought of as an interface.
+class CReadableTransport:
+  """base class for transports that are readable from C"""
+
+  # TODO(dreiss): Think about changing this interface to allow us to use
+  #               a (Python, not c) StringIO instead, because it allows
+  #               you to write after reading.
+
+  # NOTE: This is a classic class, so properties will NOT work
+  #       correctly for setting.
+  @property
+  def cstringio_buf(self):
+    """A cStringIO buffer that contains the current chunk we are reading."""
+    pass
+
+  def cstringio_refill(self, partialread, reqlen):
+    """Refills cstringio_buf.
+
+    Returns the currently used buffer (which can but need not be the same as
+    the old cstringio_buf). partialread is what the C code has read from the
+    buffer, and should be inserted into the buffer before any more reads.  The
+    return value must be a new, not borrowed reference.  Something along the
+    lines of self._buf should be fine.
+
+    If reqlen bytes can't be read, throw EOFError.
+    """
+    pass
+
+
+class TServerTransportBase:
+  """Base class for Thrift server transports."""
+
+  def listen(self):
+    pass
+
+  def accept(self):
+    pass
+
+  def close(self):
+    pass
+
+
+class TTransportFactoryBase:
+  """Base class for a Transport Factory"""
+
+  def getTransport(self, trans):
+    return trans
+
+
+class TBufferedTransportFactory:
+  """Factory transport that builds buffered transports"""
+
+  def getTransport(self, trans):
+    buffered = TBufferedTransport(trans)
+    return buffered
+
+
+class TBufferedTransport(TTransportBase, CReadableTransport):
+  """Class that wraps another transport and buffers its I/O.
+
+  The implementation uses a (configurable) fixed-size read buffer
+  but buffers all writes until a flush is performed.
+  """
+  DEFAULT_BUFFER = 4096
+
+  def __init__(self, trans, rbuf_size=DEFAULT_BUFFER):
+    self.__trans = trans
+    self.__wbuf = StringIO()
+    self.__rbuf = StringIO("")
+    self.__rbuf_size = rbuf_size
+
+  def isOpen(self):
+    return self.__trans.isOpen()
+
+  def open(self):
+    return self.__trans.open()
+
+  def close(self):
+    return self.__trans.close()
+
+  def read(self, sz):
+    ret = self.__rbuf.read(sz)
+    if len(ret) != 0:
+      return ret
+
+    self.__rbuf = StringIO(self.__trans.read(max(sz, self.__rbuf_size)))
+    return self.__rbuf.read(sz)
+
+  def write(self, buf):
+    self.__wbuf.write(buf)
+
+  def flush(self):
+    out = self.__wbuf.getvalue()
+    # reset wbuf before write/flush to preserve state on underlying failure
+    self.__wbuf = StringIO()
+    self.__trans.write(out)
+    self.__trans.flush()
+
+  # Implement the CReadableTransport interface.
+  @property
+  def cstringio_buf(self):
+    return self.__rbuf
+
+  def cstringio_refill(self, partialread, reqlen):
+    retstring = partialread
+    if reqlen < self.__rbuf_size:
+      # try to make a read of as much as we can.
+      retstring += self.__trans.read(self.__rbuf_size)
+
+    # but make sure we do read reqlen bytes.
+    if len(retstring) < reqlen:
+      retstring += self.__trans.readAll(reqlen - len(retstring))
+
+    self.__rbuf = StringIO(retstring)
+    return self.__rbuf
+
+
+class TMemoryBuffer(TTransportBase, CReadableTransport):
+  """Wraps a cStringIO object as a TTransport.
+
+  NOTE: Unlike the C++ version of this class, you cannot write to it
+        then immediately read from it.  If you want to read from a
+        TMemoryBuffer, you must either pass a string to the constructor.
+  TODO(dreiss): Make this work like the C++ version.
+  """
+
+  def __init__(self, value=None):
+    """value -- a value to read from for stringio
+
+    If value is set, this will be a transport for reading,
+    otherwise, it is for writing"""
+    if value is not None:
+      self._buffer = StringIO(value)
+    else:
+      self._buffer = StringIO()
+
+  def isOpen(self):
+    return not self._buffer.closed
+
+  def open(self):
+    pass
+
+  def close(self):
+    self._buffer.close()
+
+  def read(self, sz):
+    return self._buffer.read(sz)
+
+  def write(self, buf):
+    self._buffer.write(buf)
+
+  def flush(self):
+    pass
+
+  def getvalue(self):
+    return self._buffer.getvalue()
+
+  # Implement the CReadableTransport interface.
+  @property
+  def cstringio_buf(self):
+    return self._buffer
+
+  def cstringio_refill(self, partialread, reqlen):
+    # only one shot at reading...
+    raise EOFError()
+
+
+class TFramedTransportFactory:
+  """Factory transport that builds framed transports"""
+
+  def getTransport(self, trans):
+    framed = TFramedTransport(trans)
+    return framed
+
+
+class TFramedTransport(TTransportBase, CReadableTransport):
+  """Class that wraps another transport and frames its I/O when writing."""
+
+  def __init__(self, trans,):
+    self.__trans = trans
+    self.__rbuf = StringIO()
+    self.__wbuf = StringIO()
+
+  def isOpen(self):
+    return self.__trans.isOpen()
+
+  def open(self):
+    return self.__trans.open()
+
+  def close(self):
+    return self.__trans.close()
+
+  def read(self, sz):
+    ret = self.__rbuf.read(sz)
+    if len(ret) != 0:
+      return ret
+
+    self.readFrame()
+    return self.__rbuf.read(sz)
+
+  def readFrame(self):
+    buff = self.__trans.readAll(4)
+    sz, = unpack('!i', buff)
+    self.__rbuf = StringIO(self.__trans.readAll(sz))
+
+  def write(self, buf):
+    self.__wbuf.write(buf)
+
+  def flush(self):
+    wout = self.__wbuf.getvalue()
+    wsz = len(wout)
+    # reset wbuf before write/flush to preserve state on underlying failure
+    self.__wbuf = StringIO()
+    # N.B.: Doing this string concatenation is WAY cheaper than making
+    # two separate calls to the underlying socket object. Socket writes in
+    # Python turn out to be REALLY expensive, but it seems to do a pretty
+    # good job of managing string buffer operations without excessive copies
+    buf = pack("!i", wsz) + wout
+    self.__trans.write(buf)
+    self.__trans.flush()
+
+  # Implement the CReadableTransport interface.
+  @property
+  def cstringio_buf(self):
+    return self.__rbuf
+
+  def cstringio_refill(self, prefix, reqlen):
+    # self.__rbuf will already be empty here because fastbinary doesn't
+    # ask for a refill until the previous buffer is empty.  Therefore,
+    # we can start reading new frames immediately.
+    while len(prefix) < reqlen:
+      self.readFrame()
+      prefix += self.__rbuf.getvalue()
+    self.__rbuf = StringIO(prefix)
+    return self.__rbuf
+
+
+class TFileObjectTransport(TTransportBase):
+  """Wraps a file-like object to make it work as a Thrift transport."""
+
+  def __init__(self, fileobj):
+    self.fileobj = fileobj
+
+  def isOpen(self):
+    return True
+
+  def close(self):
+    self.fileobj.close()
+
+  def read(self, sz):
+    return self.fileobj.read(sz)
+
+  def write(self, buf):
+    self.fileobj.write(buf)
+
+  def flush(self):
+    self.fileobj.flush()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.pyc
new file mode 100644
index 0000000..5e7c2fc
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTwisted.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTwisted.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTwisted.py
new file mode 100644
index 0000000..3ce3eb2
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTwisted.py
@@ -0,0 +1,221 @@
+#
+# 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.
+#
+
+from cStringIO import StringIO
+
+from zope.interface import implements, Interface, Attribute
+from twisted.internet.protocol import Protocol, ServerFactory, ClientFactory, \
+    connectionDone
+from twisted.internet import defer
+from twisted.protocols import basic
+from twisted.python import log
+from twisted.web import server, resource, http
+
+from thrift.transport import TTransport
+
+
+class TMessageSenderTransport(TTransport.TTransportBase):
+
+    def __init__(self):
+        self.__wbuf = StringIO()
+
+    def write(self, buf):
+        self.__wbuf.write(buf)
+
+    def flush(self):
+        msg = self.__wbuf.getvalue()
+        self.__wbuf = StringIO()
+        self.sendMessage(msg)
+
+    def sendMessage(self, message):
+        raise NotImplementedError
+
+
+class TCallbackTransport(TMessageSenderTransport):
+
+    def __init__(self, func):
+        TMessageSenderTransport.__init__(self)
+        self.func = func
+
+    def sendMessage(self, message):
+        self.func(message)
+
+
+class ThriftClientProtocol(basic.Int32StringReceiver):
+
+    MAX_LENGTH = 2 ** 31 - 1
+
+    def __init__(self, client_class, iprot_factory, oprot_factory=None):
+        self._client_class = client_class
+        self._iprot_factory = iprot_factory
+        if oprot_factory is None:
+            self._oprot_factory = iprot_factory
+        else:
+            self._oprot_factory = oprot_factory
+
+        self.recv_map = {}
+        self.started = defer.Deferred()
+
+    def dispatch(self, msg):
+        self.sendString(msg)
+
+    def connectionMade(self):
+        tmo = TCallbackTransport(self.dispatch)
+        self.client = self._client_class(tmo, self._oprot_factory)
+        self.started.callback(self.client)
+
+    def connectionLost(self, reason=connectionDone):
+        for k, v in self.client._reqs.iteritems():
+            tex = TTransport.TTransportException(
+                type=TTransport.TTransportException.END_OF_FILE,
+                message='Connection closed')
+            v.errback(tex)
+
+    def stringReceived(self, frame):
+        tr = TTransport.TMemoryBuffer(frame)
+        iprot = self._iprot_factory.getProtocol(tr)
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+
+        try:
+            method = self.recv_map[fname]
+        except KeyError:
+            method = getattr(self.client, 'recv_' + fname)
+            self.recv_map[fname] = method
+
+        method(iprot, mtype, rseqid)
+
+
+class ThriftServerProtocol(basic.Int32StringReceiver):
+
+    MAX_LENGTH = 2 ** 31 - 1
+
+    def dispatch(self, msg):
+        self.sendString(msg)
+
+    def processError(self, error):
+        self.transport.loseConnection()
+
+    def processOk(self, _, tmo):
+        msg = tmo.getvalue()
+
+        if len(msg) > 0:
+            self.dispatch(msg)
+
+    def stringReceived(self, frame):
+        tmi = TTransport.TMemoryBuffer(frame)
+        tmo = TTransport.TMemoryBuffer()
+
+        iprot = self.factory.iprot_factory.getProtocol(tmi)
+        oprot = self.factory.oprot_factory.getProtocol(tmo)
+
+        d = self.factory.processor.process(iprot, oprot)
+        d.addCallbacks(self.processOk, self.processError,
+            callbackArgs=(tmo,))
+
+
+class IThriftServerFactory(Interface):
+
+    processor = Attribute("Thrift processor")
+
+    iprot_factory = Attribute("Input protocol factory")
+
+    oprot_factory = Attribute("Output protocol factory")
+
+
+class IThriftClientFactory(Interface):
+
+    client_class = Attribute("Thrift client class")
+
+    iprot_factory = Attribute("Input protocol factory")
+
+    oprot_factory = Attribute("Output protocol factory")
+
+
+class ThriftServerFactory(ServerFactory):
+
+    implements(IThriftServerFactory)
+
+    protocol = ThriftServerProtocol
+
+    def __init__(self, processor, iprot_factory, oprot_factory=None):
+        self.processor = processor
+        self.iprot_factory = iprot_factory
+        if oprot_factory is None:
+            self.oprot_factory = iprot_factory
+        else:
+            self.oprot_factory = oprot_factory
+
+
+class ThriftClientFactory(ClientFactory):
+
+    implements(IThriftClientFactory)
+
+    protocol = ThriftClientProtocol
+
+    def __init__(self, client_class, iprot_factory, oprot_factory=None):
+        self.client_class = client_class
+        self.iprot_factory = iprot_factory
+        if oprot_factory is None:
+            self.oprot_factory = iprot_factory
+        else:
+            self.oprot_factory = oprot_factory
+
+    def buildProtocol(self, addr):
+        p = self.protocol(self.client_class, self.iprot_factory,
+            self.oprot_factory)
+        p.factory = self
+        return p
+
+
+class ThriftResource(resource.Resource):
+
+    allowedMethods = ('POST',)
+
+    def __init__(self, processor, inputProtocolFactory,
+        outputProtocolFactory=None):
+        resource.Resource.__init__(self)
+        self.inputProtocolFactory = inputProtocolFactory
+        if outputProtocolFactory is None:
+            self.outputProtocolFactory = inputProtocolFactory
+        else:
+            self.outputProtocolFactory = outputProtocolFactory
+        self.processor = processor
+
+    def getChild(self, path, request):
+        return self
+
+    def _cbProcess(self, _, request, tmo):
+        msg = tmo.getvalue()
+        request.setResponseCode(http.OK)
+        request.setHeader("content-type", "application/x-thrift")
+        request.write(msg)
+        request.finish()
+
+    def render_POST(self, request):
+        request.content.seek(0, 0)
+        data = request.content.read()
+        tmi = TTransport.TMemoryBuffer(data)
+        tmo = TTransport.TMemoryBuffer()
+
+        iprot = self.inputProtocolFactory.getProtocol(tmi)
+        oprot = self.outputProtocolFactory.getProtocol(tmo)
+
+        d = self.processor.process(iprot, oprot)
+        d.addCallback(self._cbProcess, request, tmo)
+        return server.NOT_DONE_YET

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TZlibTransport.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TZlibTransport.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TZlibTransport.py
new file mode 100644
index 0000000..e90586e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TZlibTransport.py
@@ -0,0 +1,249 @@
+#
+# 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.
+#
+
+"""TZlibTransport provides a compressed transport and transport factory
+class, using the python standard library zlib module to implement
+data compression.
+"""
+
+from __future__ import division
+import zlib
+from cStringIO import StringIO
+
+from thrift.transport.TTransport import TTransportBase, CReadableTransport
+
+
+class TZlibTransportFactory(object):
+  """Factory transport that builds zlib compressed transports.
+
+  This factory caches the last single client/transport that it was passed
+  and returns the same TZlibTransport object that was created.
+
+  This caching means the TServer class will get the _same_ transport
+  object for both input and output transports from this factory.
+  (For non-threaded scenarios only, since the cache only holds one object)
+
+  The purpose of this caching is to allocate only one TZlibTransport where
+  only one is really needed (since it must have separate read/write buffers),
+  and makes the statistics from getCompSavings() and getCompRatio()
+  easier to understand.
+  """
+  # class scoped cache of last transport given and zlibtransport returned
+  _last_trans = None
+  _last_z = None
+
+  def getTransport(self, trans, compresslevel=9):
+    """Wrap a transport, trans, with the TZlibTransport
+    compressed transport class, returning a new
+    transport to the caller.
+
+    @param compresslevel: The zlib compression level, ranging
+    from 0 (no compression) to 9 (best compression).  Defaults to 9.
+    @type compresslevel: int
+
+    This method returns a TZlibTransport which wraps the
+    passed C{trans} TTransport derived instance.
+    """
+    if trans == self._last_trans:
+      return self._last_z
+    ztrans = TZlibTransport(trans, compresslevel)
+    self._last_trans = trans
+    self._last_z = ztrans
+    return ztrans
+
+
+class TZlibTransport(TTransportBase, CReadableTransport):
+  """Class that wraps a transport with zlib, compressing writes
+  and decompresses reads, using the python standard
+  library zlib module.
+  """
+  # Read buffer size for the python fastbinary C extension,
+  # the TBinaryProtocolAccelerated class.
+  DEFAULT_BUFFSIZE = 4096
+
+  def __init__(self, trans, compresslevel=9):
+    """Create a new TZlibTransport, wrapping C{trans}, another
+    TTransport derived object.
+
+    @param trans: A thrift transport object, i.e. a TSocket() object.
+    @type trans: TTransport
+    @param compresslevel: The zlib compression level, ranging
+    from 0 (no compression) to 9 (best compression).  Default is 9.
+    @type compresslevel: int
+    """
+    self.__trans = trans
+    self.compresslevel = compresslevel
+    self.__rbuf = StringIO()
+    self.__wbuf = StringIO()
+    self._init_zlib()
+    self._init_stats()
+
+  def _reinit_buffers(self):
+    """Internal method to initialize/reset the internal StringIO objects
+    for read and write buffers.
+    """
+    self.__rbuf = StringIO()
+    self.__wbuf = StringIO()
+
+  def _init_stats(self):
+    """Internal method to reset the internal statistics counters
+    for compression ratios and bandwidth savings.
+    """
+    self.bytes_in = 0
+    self.bytes_out = 0
+    self.bytes_in_comp = 0
+    self.bytes_out_comp = 0
+
+  def _init_zlib(self):
+    """Internal method for setting up the zlib compression and
+    decompression objects.
+    """
+    self._zcomp_read = zlib.decompressobj()
+    self._zcomp_write = zlib.compressobj(self.compresslevel)
+
+  def getCompRatio(self):
+    """Get the current measured compression ratios (in,out) from
+    this transport.
+
+    Returns a tuple of:
+    (inbound_compression_ratio, outbound_compression_ratio)
+
+    The compression ratios are computed as:
+        compressed / uncompressed
+
+    E.g., data that compresses by 10x will have a ratio of: 0.10
+    and data that compresses to half of ts original size will
+    have a ratio of 0.5
+
+    None is returned if no bytes have yet been processed in
+    a particular direction.
+    """
+    r_percent, w_percent = (None, None)
+    if self.bytes_in > 0:
+      r_percent = self.bytes_in_comp / self.bytes_in
+    if self.bytes_out > 0:
+      w_percent = self.bytes_out_comp / self.bytes_out
+    return (r_percent, w_percent)
+
+  def getCompSavings(self):
+    """Get the current count of saved bytes due to data
+    compression.
+
+    Returns a tuple of:
+    (inbound_saved_bytes, outbound_saved_bytes)
+
+    Note: if compression is actually expanding your
+    data (only likely with very tiny thrift objects), then
+    the values returned will be negative.
+    """
+    r_saved = self.bytes_in - self.bytes_in_comp
+    w_saved = self.bytes_out - self.bytes_out_comp
+    return (r_saved, w_saved)
+
+  def isOpen(self):
+    """Return the underlying transport's open status"""
+    return self.__trans.isOpen()
+
+  def open(self):
+    """Open the underlying transport"""
+    self._init_stats()
+    return self.__trans.open()
+
+  def listen(self):
+    """Invoke the underlying transport's listen() method"""
+    self.__trans.listen()
+
+  def accept(self):
+    """Accept connections on the underlying transport"""
+    return self.__trans.accept()
+
+  def close(self):
+    """Close the underlying transport,"""
+    self._reinit_buffers()
+    self._init_zlib()
+    return self.__trans.close()
+
+  def read(self, sz):
+    """Read up to sz bytes from the decompressed bytes buffer, and
+    read from the underlying transport if the decompression
+    buffer is empty.
+    """
+    ret = self.__rbuf.read(sz)
+    if len(ret) > 0:
+      return ret
+    # keep reading from transport until something comes back
+    while True:
+      if self.readComp(sz):
+        break
+    ret = self.__rbuf.read(sz)
+    return ret
+
+  def readComp(self, sz):
+    """Read compressed data from the underlying transport, then
+    decompress it and append it to the internal StringIO read buffer
+    """
+    zbuf = self.__trans.read(sz)
+    zbuf = self._zcomp_read.unconsumed_tail + zbuf
+    buf = self._zcomp_read.decompress(zbuf)
+    self.bytes_in += len(zbuf)
+    self.bytes_in_comp += len(buf)
+    old = self.__rbuf.read()
+    self.__rbuf = StringIO(old + buf)
+    if len(old) + len(buf) == 0:
+      return False
+    return True
+
+  def write(self, buf):
+    """Write some bytes, putting them into the internal write
+    buffer for eventual compression.
+    """
+    self.__wbuf.write(buf)
+
+  def flush(self):
+    """Flush any queued up data in the write buffer and ensure the
+    compression buffer is flushed out to the underlying transport
+    """
+    wout = self.__wbuf.getvalue()
+    if len(wout) > 0:
+      zbuf = self._zcomp_write.compress(wout)
+      self.bytes_out += len(wout)
+      self.bytes_out_comp += len(zbuf)
+    else:
+      zbuf = ''
+    ztail = self._zcomp_write.flush(zlib.Z_SYNC_FLUSH)
+    self.bytes_out_comp += len(ztail)
+    if (len(zbuf) + len(ztail)) > 0:
+      self.__wbuf = StringIO()
+      self.__trans.write(zbuf + ztail)
+    self.__trans.flush()
+
+  @property
+  def cstringio_buf(self):
+    """Implement the CReadableTransport interface"""
+    return self.__rbuf
+
+  def cstringio_refill(self, partialread, reqlen):
+    """Implement the CReadableTransport interface for refill"""
+    retstring = partialread
+    if reqlen < self.DEFAULT_BUFFSIZE:
+      retstring += self.read(self.DEFAULT_BUFFSIZE)
+    while len(retstring) < reqlen:
+      retstring += self.read(reqlen - len(retstring))
+    self.__rbuf = StringIO(retstring)
+    return self.__rbuf

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.py
new file mode 100644
index 0000000..c9596d9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.py
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+__all__ = ['TTransport', 'TSocket', 'THttpClient', 'TZlibTransport']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.pyc
new file mode 100644
index 0000000..6f04147
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.pyc differ


[20/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/ttypes.py
new file mode 100644
index 0000000..a3bba10
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/ttypes.py
@@ -0,0 +1,460 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class Group:
+  """
+  Attributes:
+   - groupName
+   - description
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'groupName', None, None, ), # 1
+    (2, TType.STRING, 'description', None, None, ), # 2
+  )
+
+  def __init__(self, groupName=None, description=None,):
+    self.groupName = groupName
+    self.description = description
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.groupName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.description = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Group')
+    if self.groupName is not None:
+      oprot.writeFieldBegin('groupName', TType.STRING, 1)
+      oprot.writeString(self.groupName)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 2)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.groupName is None:
+      raise TProtocol.TProtocolException(message='Required field groupName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.groupName)
+    value = (value * 31) ^ hash(self.description)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class Project:
+  """
+  Attributes:
+   - projectID
+   - owner
+   - name
+   - description
+   - creationTime
+   - sharedUsers
+   - sharedGroups
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'projectID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'owner', None, None, ), # 2
+    (3, TType.STRING, 'name', None, None, ), # 3
+    (4, TType.STRING, 'description', None, None, ), # 4
+    (5, TType.I64, 'creationTime', None, None, ), # 5
+    (6, TType.LIST, 'sharedUsers', (TType.STRING,None), None, ), # 6
+    (7, TType.LIST, 'sharedGroups', (TType.STRING,None), None, ), # 7
+  )
+
+  def __init__(self, projectID=thrift_spec[1][4], owner=None, name=None, description=None, creationTime=None, sharedUsers=None, sharedGroups=None,):
+    self.projectID = projectID
+    self.owner = owner
+    self.name = name
+    self.description = description
+    self.creationTime = creationTime
+    self.sharedUsers = sharedUsers
+    self.sharedGroups = sharedGroups
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.projectID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.owner = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.name = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.description = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.sharedUsers = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString();
+            self.sharedUsers.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.sharedGroups = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = iprot.readString();
+            self.sharedGroups.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Project')
+    if self.projectID is not None:
+      oprot.writeFieldBegin('projectID', TType.STRING, 1)
+      oprot.writeString(self.projectID)
+      oprot.writeFieldEnd()
+    if self.owner is not None:
+      oprot.writeFieldBegin('owner', TType.STRING, 2)
+      oprot.writeString(self.owner)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 3)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 4)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 5)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.sharedUsers is not None:
+      oprot.writeFieldBegin('sharedUsers', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRING, len(self.sharedUsers))
+      for iter12 in self.sharedUsers:
+        oprot.writeString(iter12)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.sharedGroups is not None:
+      oprot.writeFieldBegin('sharedGroups', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRING, len(self.sharedGroups))
+      for iter13 in self.sharedGroups:
+        oprot.writeString(iter13)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.projectID is None:
+      raise TProtocol.TProtocolException(message='Required field projectID is unset!')
+    if self.owner is None:
+      raise TProtocol.TProtocolException(message='Required field owner is unset!')
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.projectID)
+    value = (value * 31) ^ hash(self.owner)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.sharedUsers)
+    value = (value * 31) ^ hash(self.sharedGroups)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class User:
+  """
+  Attributes:
+   - userName
+   - groupList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'userName', None, None, ), # 1
+    (2, TType.LIST, 'groupList', (TType.STRUCT,(Group, Group.thrift_spec)), None, ), # 2
+  )
+
+  def __init__(self, userName=None, groupList=None,):
+    self.userName = userName
+    self.groupList = groupList
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.LIST:
+          self.groupList = []
+          (_etype17, _size14) = iprot.readListBegin()
+          for _i18 in xrange(_size14):
+            _elem19 = Group()
+            _elem19.read(iprot)
+            self.groupList.append(_elem19)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('User')
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 1)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.groupList is not None:
+      oprot.writeFieldBegin('groupList', TType.LIST, 2)
+      oprot.writeListBegin(TType.STRUCT, len(self.groupList))
+      for iter20 in self.groupList:
+        iter20.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.userName is None:
+      raise TProtocol.TProtocolException(message='Required field userName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.groupList)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class Gateway:
+  """
+  Attributes:
+   - gatewayId
+   - gatewayName
+   - domain
+   - emailAddress
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'gatewayId', None, None, ), # 1
+    (2, TType.STRING, 'gatewayName', None, None, ), # 2
+    (3, TType.STRING, 'domain', None, None, ), # 3
+    (4, TType.STRING, 'emailAddress', None, None, ), # 4
+  )
+
+  def __init__(self, gatewayId=None, gatewayName=None, domain=None, emailAddress=None,):
+    self.gatewayId = gatewayId
+    self.gatewayName = gatewayName
+    self.domain = domain
+    self.emailAddress = emailAddress
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.domain = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.emailAddress = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Gateway')
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 1)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.gatewayName is not None:
+      oprot.writeFieldBegin('gatewayName', TType.STRING, 2)
+      oprot.writeString(self.gatewayName)
+      oprot.writeFieldEnd()
+    if self.domain is not None:
+      oprot.writeFieldBegin('domain', TType.STRING, 3)
+      oprot.writeString(self.domain)
+      oprot.writeFieldEnd()
+    if self.emailAddress is not None:
+      oprot.writeFieldBegin('emailAddress', TType.STRING, 4)
+      oprot.writeString(self.emailAddress)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.gatewayName)
+    value = (value * 31) ^ hash(self.domain)
+    value = (value * 31) ^ hash(self.emailAddress)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/ttypes.pyc
new file mode 100644
index 0000000..a20c81a
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.pyc
index bf85e3f..44b292c 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.py
index dce34d6..1716cdf 100644
--- a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.py
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.py
@@ -33,8 +33,8 @@ class AppCatalog:
 
         transport.open()
         
-        client_id = r'XXXXXXXXXXXX'
-        client_secret = r'XXXXXXXX'
+        client_id = r'XXXXXXXXXX'
+        client_secret = r'XXXXXXXXXXX'
 
         client = BackendApplicationClient(client_id=client_id)
         oauth = OAuth2Session(client=client)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.pyc
index 5774dbf..6fbba45 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.pyc
index b2d149f..5a53b9b 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.pyc
index d44337b..a133987 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.pyc
index 8b7f8b1..c7b8992 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.pyc
index 42aabd6..2759405 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.pyc
index 981be1c..8dfe443 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.pyc
index f56fe4a..642147f 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.pyc
index ca53f73..9075e73 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.pyc
index a94c5e2..7fd3984 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.pyc
index 33fcc1c..060f414 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.pyc
index ef72ead..b8d4301 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.pyc
index 144e9b9..6fa359e 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.pyc
index ba42260..2c81a27 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.pyc
index b3bb83c..73666e6 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.pyc
index f0e0034..14d0f3e 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.pyc
index 4fb8cfc..cfac9f1 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.pyc
index 36167e2..3153b65 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.pyc
index 704ca78..01ca37b 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.pyc
index e54cd41..f27c624 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.pyc
index 638440f..f8f062f 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.pyc
index 744413f..73413cb 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc
index 73048c5..db56b17 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.pyc
index 2afd1e2..16d2dc4 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.pyc
index 3afed92..72a3d82 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.pyc
index 2a2fba7..83b4c49 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.pyc
index 9e3374c..5ab62a8 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc
index c94e072..c3a7783 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc
index a6a29df..584b6d3 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.pyc
index 2577f2b..3294077 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.pyc
index 3485168..c9c21dd 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.pyc
index dc82372..23b91ef 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.pyc
index 3cb2bed..0858f83 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.pyc
index b806d59..1e7e53c 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.pyc
index eb40934..7119cf7 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.pyc
index ad38d28..56c2145 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.pyc
index 78b00cc..a128e34 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.pyc
index 1b27961..3c45c20 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.pyc
index 6a02e2f..2129a98 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.pyc
index b4638db..37bbe5d 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.pyc
index 12a05dd..49ea427 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.pyc
index 1a93a89..d81ac40 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.pyc
index a0eec2f..d523971 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.pyc
index 46e6627..9ff4c25 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.pyc
index c87be3d..62c39c2 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.pyc
index 6dc6d9d..89017bc 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.pyc
index b8c2604..7d500cb 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.pyc
index f7b1956..ab2afab 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.pyc
index 8332279..ff32125 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.pyc
index dfe4eb0..511575c 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.pyc
index 07f7166..c30c6bf 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.pyc
index 6244a8e..54bc9ff 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.pyc
index ad3edc6..cbd08b0 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.pyc
index 23c9673..622721c 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.pyc
index 4ed336e..c7d3beb 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.pyc
index 820528b..de391b4 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.pyc
index 364840e..c44d31d 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.pyc
index 27429d0..18bd481 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.pyc
index e152584..680ac9d 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.pyc
index 6997fb0..4e5300b 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.pyc
index 3a2b6e8..edfaaf8 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.pyc
index 08a1ef8..6c15036 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.pyc
index 18ba5f6..bb15369 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.pyc
index 0203575..01a91e1 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.pyc
index de0c9c1..cad6ffb 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.pyc
index 2748ee1..996737d 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.pyc
index 518db0a..7e61828 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.pyc
index 5b238c6..0b02fd8 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.pyc
index c9050e3..5a618b7 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.pyc
index 829e502..504e288 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.pyc
index f8f5649..b7534b2 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.pyc
index 85a6486..c76987a 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.pyc
index 4e8a9e4..be147d6 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.pyc
index caaf521..90cf0ea 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.pyc
index 291749d..9f0b21d 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSSLSocket.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.pyc
index fb5939b..1d3f379 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TSocket.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.pyc
index 5e7c2fc..985c59e 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/TTransport.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.pyc
index 6f04147..a43fb77 100644
Binary files a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.pyc and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/transport/__init__.pyc differ


[29/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/airavata_cli.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/airavata_cli.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/airavata_cli.py
new file mode 100644
index 0000000..3fdfb83
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/airavata_cli.py
@@ -0,0 +1,134 @@
+import sys,random,time
+import threading
+from expcatalog.expcatalog import ExpCatalog
+from appcatalog.appcatalog import AppCatalog
+
+VERSION = "0.0.1"
+
+BANNER = """
+Welcome to Airavata CLI v%s - Wirtten in python
+
+""" % VERSION
+
+exitMsg = "Bye, See you soon :)"
+cli_prompt = "=> "
+
+
+class AiravataCLI:
+
+    def __init__(self, hostName, port):
+        self.exit = False
+        self.expCatalog = ExpCatalog(hostName, port)
+        self.AppCatalog = AppCatalog(hostName, port)
+        self.experimentState = "Hukarz"
+        self.jobStateMapper = {
+            0: "SUBMITTED",
+            1: "QUEUED",
+            2: "ACTIVE",
+            3: "COMPLETE",
+            4: "CANCELED",
+            5: "FAILED",
+            6: "SUSPENDED",
+            7: "UNKNOWN"
+        }
+
+        self.experimentStateMapper = {
+            0: "CREATED",
+            1: "VALIDATED",
+            2: "SCHEDULED",
+            3: "LAUNCHED",
+            4: "EXECUTING",
+            5: "CANCELLING",
+            6: "CANCELED",
+            7: "COMPLETED",
+            8: "FAILED"
+        }
+
+        # set initial properties
+    def printVersion(self):
+        print (BANNER)
+
+    def start(self):
+        command ='expid gaussianfromclient11_62221967-646d-475c-9c46-ed093d09c610'
+        while not self.exit:
+            cInputs = command.split(" ")
+            if cInputs[0] == 'q' or cInputs[0] == 'quit':
+                print (exitMsg)
+                self.exit = True
+            elif cInputs[0] == 'expid':
+                self.monitorExperiment(cInputs[1])
+            else:
+                print ("not yet implemented")
+
+            if not self.exit:
+                command = raw_input(cli_prompt)
+
+    def monitorExperiment(self, expId):
+        experimentSum = self.expCatalog.getExperimentSummary(expId)  ## get experiment id from input and pass it to this
+        self.experimentState = self.experimentStateMapper.get(experimentSum.status.state, "Hukarz")
+        indent = " |- "
+        print (indent + "name :" + experimentSum.name)
+        print (indent + "Id :" + experimentSum.id)
+        print (indent + "status :" + self.experimentState)
+        indent = "    " + indent
+        for job in experimentSum.jobs:
+            print (indent + "jobId :" + job.jobId)
+            print (indent + "jobStatus :" + self.jobStateMapper.get(job.jobStatus.jobState, "Hukarz"))
+            print (indent + " ---- ")
+
+        return self.experimentState
+
+    def createExperiment(self, applicationName):
+        return self.expCatalog.createExperiment(applicationName)
+
+    def cancelExperiment(self, expId):
+        return self.expCatalog.cancelExperiment(expId)
+    
+    def computer_resources(self):
+        return self.AppCatalog.computer_resources()
+    
+    def list_of_applications(self, gatewayId):
+        return self.AppCatalog.list_of_applications(gatewayId)
+    
+    def application_deployments(self, applicationInterfaceId):
+        return self.AppCatalog.application_deployments(applicationInterfaceId)
+    
+    def module_descriptions(self,gatewayId):
+        return self.AppCatalog.module_descriptions(gatewayId)
+    
+    def get_gatewaylist(self):
+        return self.AppCatalog.get_gatewaylist()
+
+    def launchExperiment(self, expId):
+        self.expCatalog.launchExperiment(expId)
+        # while True:
+        #     self.monitorExperiment(expId)
+        
+
+    def monitorStatus(self, expId):
+        self.sendCancel = False
+        delay = 7
+        while True:
+            state = (self.monitorExperiment(expId))
+            if (state == "EXECUTING"):
+                if (not self.sendCancel):
+                    if delay == 0:
+                        print ("sending cancel request for " + expId)
+                        self.cancelExperiment(expId)
+                        print ("sent cancel request for " + expId)
+                        self.sendCancel = True
+
+                    else:
+                        delay -= 1
+
+            if (state == "COMPLETED" or state == "FAILED" or state == "CANCELLED"):
+                return
+                # airavata_cli.monitorExperiment("Einstein_c33d855b-8c10-4d2a-961a-4b55aff807f7")
+            time.sleep(2)
+           
+    def experiment_statistics(self, gatewayId, fromTime, toTime):
+        return self.expCatalog.experiment_statistics(gatewayId,fromTime,toTime)
+    
+    def createExperiment1(self,authzToken,gatewayId,experiment):
+        return self.expCatalog.create_experiment1(authzToken,gatewayId,experiment)
+    

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/airavata_cli.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/airavata_cli.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/airavata_cli.pyc
new file mode 100644
index 0000000..f5fecc3
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/airavata_cli.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__init__.pyc
new file mode 100644
index 0000000..80ae182
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..0399757
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__init__.pyc
new file mode 100644
index 0000000..cbee7a2
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..5de84f4
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata-remote
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata-remote b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata-remote
new file mode 100644
index 0000000..1e6a3c0
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata-remote
@@ -0,0 +1,955 @@
+#!/usr/bin/env python
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+import sys
+import pprint
+from urlparse import urlparse
+from thrift.transport import TTransport
+from thrift.transport import TSocket
+from thrift.transport import TSSLSocket
+from thrift.transport import THttpClient
+from thrift.protocol import TBinaryProtocol
+
+from apache.airavata.api import Airavata
+from apache.airavata.api.ttypes import *
+
+if len(sys.argv) <= 1 or sys.argv[1] == '--help':
+  print('')
+  print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] function [arg1 [arg2...]]')
+  print('')
+  print('Functions:')
+  print('  string getAPIVersion(AuthzToken authzToken)')
+  print('  string addGateway(AuthzToken authzToken, Gateway gateway)')
+  print('  void updateGateway(AuthzToken authzToken, string gatewayId, Gateway updatedGateway)')
+  print('  Gateway getGateway(AuthzToken authzToken, string gatewayId)')
+  print('  bool deleteGateway(AuthzToken authzToken, string gatewayId)')
+  print('   getAllGateways(AuthzToken authzToken)')
+  print('  bool isGatewayExist(AuthzToken authzToken, string gatewayId)')
+  print('  string generateAndRegisterSSHKeys(AuthzToken authzToken, string gatewayId, string userName)')
+  print('  string getSSHPubKey(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+  print('   getAllUserSSHPubKeys(AuthzToken authzToken, string userName)')
+  print('  string createProject(AuthzToken authzToken, string gatewayId, Project project)')
+  print('  void updateProject(AuthzToken authzToken, string projectId, Project updatedProject)')
+  print('  Project getProject(AuthzToken authzToken, string projectId)')
+  print('  bool deleteProject(AuthzToken authzToken, string projectId)')
+  print('   getUserProjects(AuthzToken authzToken, string gatewayId, string userName, i32 limit, i32 offset)')
+  print('   searchProjectsByProjectName(AuthzToken authzToken, string gatewayId, string userName, string projectName, i32 limit, i32 offset)')
+  print('   searchProjectsByProjectDesc(AuthzToken authzToken, string gatewayId, string userName, string description, i32 limit, i32 offset)')
+  print('   searchExperimentsByName(AuthzToken authzToken, string gatewayId, string userName, string expName, i32 limit, i32 offset)')
+  print('   searchExperimentsByDesc(AuthzToken authzToken, string gatewayId, string userName, string description, i32 limit, i32 offset)')
+  print('   searchExperimentsByApplication(AuthzToken authzToken, string gatewayId, string userName, string applicationId, i32 limit, i32 offset)')
+  print('   searchExperimentsByStatus(AuthzToken authzToken, string gatewayId, string userName, ExperimentState experimentState, i32 limit, i32 offset)')
+  print('   searchExperimentsByCreationTime(AuthzToken authzToken, string gatewayId, string userName, i64 fromTime, i64 toTime, i32 limit, i32 offset)')
+  print('   searchExperiments(AuthzToken authzToken, string gatewayId, string userName,  filters, i32 limit, i32 offset)')
+  print('  ExperimentStatistics getExperimentStatistics(AuthzToken authzToken, string gatewayId, i64 fromTime, i64 toTime)')
+  print('   getExperimentsInProject(AuthzToken authzToken, string projectId, i32 limit, i32 offset)')
+  print('   getUserExperiments(AuthzToken authzToken, string gatewayId, string userName, i32 limit, i32 offset)')
+  print('  string createExperiment(AuthzToken authzToken, string gatewayId, ExperimentModel experiment)')
+  print('  bool deleteExperiment(AuthzToken authzToken, string experimentId)')
+  print('  ExperimentModel getExperiment(AuthzToken authzToken, string airavataExperimentId)')
+  print('  void updateExperiment(AuthzToken authzToken, string airavataExperimentId, ExperimentModel experiment)')
+  print('  void updateExperimentConfiguration(AuthzToken authzToken, string airavataExperimentId, UserConfigurationDataModel userConfiguration)')
+  print('  void updateResourceScheduleing(AuthzToken authzToken, string airavataExperimentId, ComputationalResourceSchedulingModel resourceScheduling)')
+  print('  bool validateExperiment(AuthzToken authzToken, string airavataExperimentId)')
+  print('  void launchExperiment(AuthzToken authzToken, string airavataExperimentId, string gatewayId)')
+  print('  ExperimentStatus getExperimentStatus(AuthzToken authzToken, string airavataExperimentId)')
+  print('   getExperimentOutputs(AuthzToken authzToken, string airavataExperimentId)')
+  print('   getIntermediateOutputs(AuthzToken authzToken, string airavataExperimentId)')
+  print('   getJobStatuses(AuthzToken authzToken, string airavataExperimentId)')
+  print('   getJobDetails(AuthzToken authzToken, string airavataExperimentId)')
+  print('  string cloneExperiment(AuthzToken authzToken, string existingExperimentID, string newExperimentName)')
+  print('  void terminateExperiment(AuthzToken authzToken, string airavataExperimentId, string gatewayId)')
+  print('  string registerApplicationModule(AuthzToken authzToken, string gatewayId, ApplicationModule applicationModule)')
+  print('  ApplicationModule getApplicationModule(AuthzToken authzToken, string appModuleId)')
+  print('  bool updateApplicationModule(AuthzToken authzToken, string appModuleId, ApplicationModule applicationModule)')
+  print('   getAllAppModules(AuthzToken authzToken, string gatewayId)')
+  print('  bool deleteApplicationModule(AuthzToken authzToken, string appModuleId)')
+  print('  string registerApplicationDeployment(AuthzToken authzToken, string gatewayId, ApplicationDeploymentDescription applicationDeployment)')
+  print('  ApplicationDeploymentDescription getApplicationDeployment(AuthzToken authzToken, string appDeploymentId)')
+  print('  bool updateApplicationDeployment(AuthzToken authzToken, string appDeploymentId, ApplicationDeploymentDescription applicationDeployment)')
+  print('  bool deleteApplicationDeployment(AuthzToken authzToken, string appDeploymentId)')
+  print('   getAllApplicationDeployments(AuthzToken authzToken, string gatewayId)')
+  print('   getAppModuleDeployedResources(AuthzToken authzToken, string appModuleId)')
+  print('  string registerApplicationInterface(AuthzToken authzToken, string gatewayId, ApplicationInterfaceDescription applicationInterface)')
+  print('  ApplicationInterfaceDescription getApplicationInterface(AuthzToken authzToken, string appInterfaceId)')
+  print('  bool updateApplicationInterface(AuthzToken authzToken, string appInterfaceId, ApplicationInterfaceDescription applicationInterface)')
+  print('  bool deleteApplicationInterface(AuthzToken authzToken, string appInterfaceId)')
+  print('   getAllApplicationInterfaceNames(AuthzToken authzToken, string gatewayId)')
+  print('   getAllApplicationInterfaces(AuthzToken authzToken, string gatewayId)')
+  print('   getApplicationInputs(AuthzToken authzToken, string appInterfaceId)')
+  print('   getApplicationOutputs(AuthzToken authzToken, string appInterfaceId)')
+  print('   getAvailableAppInterfaceComputeResources(AuthzToken authzToken, string appInterfaceId)')
+  print('  string registerComputeResource(AuthzToken authzToken, ComputeResourceDescription computeResourceDescription)')
+  print('  ComputeResourceDescription getComputeResource(AuthzToken authzToken, string computeResourceId)')
+  print('   getAllComputeResourceNames(AuthzToken authzToken)')
+  print('  bool updateComputeResource(AuthzToken authzToken, string computeResourceId, ComputeResourceDescription computeResourceDescription)')
+  print('  bool deleteComputeResource(AuthzToken authzToken, string computeResourceId)')
+  print('  string addLocalSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, LOCALSubmission localSubmission)')
+  print('  bool updateLocalSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, LOCALSubmission localSubmission)')
+  print('  LOCALSubmission getLocalJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+  print('  string addSSHJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, SSHJobSubmission sshJobSubmission)')
+  print('  string addSSHForkJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, SSHJobSubmission sshJobSubmission)')
+  print('  SSHJobSubmission getSSHJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+  print('  string addUNICOREJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, UnicoreJobSubmission unicoreJobSubmission)')
+  print('  UnicoreJobSubmission getUnicoreJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+  print('  string addCloudJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, CloudJobSubmission cloudSubmission)')
+  print('  CloudJobSubmission getCloudJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+  print('  bool updateSSHJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, SSHJobSubmission sshJobSubmission)')
+  print('  bool updateCloudJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, CloudJobSubmission sshJobSubmission)')
+  print('  bool updateUnicoreJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, UnicoreJobSubmission unicoreJobSubmission)')
+  print('  string addLocalDataMovementDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, LOCALDataMovement localDataMovement)')
+  print('  bool updateLocalDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, LOCALDataMovement localDataMovement)')
+  print('  LOCALDataMovement getLocalDataMovement(AuthzToken authzToken, string dataMovementId)')
+  print('  string addSCPDataMovementDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, SCPDataMovement scpDataMovement)')
+  print('  bool updateSCPDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, SCPDataMovement scpDataMovement)')
+  print('  SCPDataMovement getSCPDataMovement(AuthzToken authzToken, string dataMovementId)')
+  print('  string addUnicoreDataMovementDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, UnicoreDataMovement unicoreDataMovement)')
+  print('  bool updateUnicoreDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, UnicoreDataMovement unicoreDataMovement)')
+  print('  UnicoreDataMovement getUnicoreDataMovement(AuthzToken authzToken, string dataMovementId)')
+  print('  string addGridFTPDataMovementDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, GridFTPDataMovement gridFTPDataMovement)')
+  print('  bool updateGridFTPDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, GridFTPDataMovement gridFTPDataMovement)')
+  print('  GridFTPDataMovement getGridFTPDataMovement(AuthzToken authzToken, string dataMovementId)')
+  print('  bool changeJobSubmissionPriority(AuthzToken authzToken, string jobSubmissionInterfaceId, i32 newPriorityOrder)')
+  print('  bool changeDataMovementPriority(AuthzToken authzToken, string dataMovementInterfaceId, i32 newPriorityOrder)')
+  print('  bool changeJobSubmissionPriorities(AuthzToken authzToken,  jobSubmissionPriorityMap)')
+  print('  bool changeDataMovementPriorities(AuthzToken authzToken,  dataMovementPriorityMap)')
+  print('  bool deleteJobSubmissionInterface(AuthzToken authzToken, string computeResourceId, string jobSubmissionInterfaceId)')
+  print('  bool deleteDataMovementInterface(AuthzToken authzToken, string computeResourceId, string dataMovementInterfaceId)')
+  print('  string registerResourceJobManager(AuthzToken authzToken, ResourceJobManager resourceJobManager)')
+  print('  bool updateResourceJobManager(AuthzToken authzToken, string resourceJobManagerId, ResourceJobManager updatedResourceJobManager)')
+  print('  ResourceJobManager getResourceJobManager(AuthzToken authzToken, string resourceJobManagerId)')
+  print('  bool deleteResourceJobManager(AuthzToken authzToken, string resourceJobManagerId)')
+  print('  bool deleteBatchQueue(AuthzToken authzToken, string computeResourceId, string queueName)')
+  print('  string registerGatewayResourceProfile(AuthzToken authzToken, GatewayResourceProfile gatewayResourceProfile)')
+  print('  GatewayResourceProfile getGatewayResourceProfile(AuthzToken authzToken, string gatewayID)')
+  print('  bool updateGatewayResourceProfile(AuthzToken authzToken, string gatewayID, GatewayResourceProfile gatewayResourceProfile)')
+  print('  bool deleteGatewayResourceProfile(AuthzToken authzToken, string gatewayID)')
+  print('  bool addGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId, ComputeResourcePreference computeResourcePreference)')
+  print('  bool addGatewayDataStoragePreference(AuthzToken authzToken, string gatewayID, string dataMoveId, DataStoragePreference dataStoragePreference)')
+  print('  ComputeResourcePreference getGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId)')
+  print('  DataStoragePreference getGatewayDataStoragePreference(AuthzToken authzToken, string gatewayID, string dataMoveId)')
+  print('   getAllGatewayComputeResourcePreferences(AuthzToken authzToken, string gatewayID)')
+  print('   getAllGatewayDataStoragePreferences(AuthzToken authzToken, string gatewayID)')
+  print('   getAllGatewayResourceProfiles(AuthzToken authzToken)')
+  print('  bool updateGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId, ComputeResourcePreference computeResourcePreference)')
+  print('  bool updateGatewayDataStoragePreference(AuthzToken authzToken, string gatewayID, string dataMoveId, DataStoragePreference dataStoragePreference)')
+  print('  bool deleteGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId)')
+  print('  bool deleteGatewayDataStoragePreference(AuthzToken authzToken, string gatewayID, string dataMoveId)')
+  print('   getAllWorkflows(AuthzToken authzToken, string gatewayId)')
+  print('  Workflow getWorkflow(AuthzToken authzToken, string workflowTemplateId)')
+  print('  void deleteWorkflow(AuthzToken authzToken, string workflowTemplateId)')
+  print('  string registerWorkflow(AuthzToken authzToken, string gatewayId, Workflow workflow)')
+  print('  void updateWorkflow(AuthzToken authzToken, string workflowTemplateId, Workflow workflow)')
+  print('  string getWorkflowTemplateId(AuthzToken authzToken, string workflowName)')
+  print('  bool isWorkflowExistWithName(AuthzToken authzToken, string workflowName)')
+  print('')
+  sys.exit(0)
+
+pp = pprint.PrettyPrinter(indent = 2)
+host = 'localhost'
+port = 9090
+uri = ''
+framed = False
+ssl = False
+http = False
+argi = 1
+
+if sys.argv[argi] == '-h':
+  parts = sys.argv[argi+1].split(':')
+  host = parts[0]
+  if len(parts) > 1:
+    port = int(parts[1])
+  argi += 2
+
+if sys.argv[argi] == '-u':
+  url = urlparse(sys.argv[argi+1])
+  parts = url[1].split(':')
+  host = parts[0]
+  if len(parts) > 1:
+    port = int(parts[1])
+  else:
+    port = 80
+  uri = url[2]
+  if url[4]:
+    uri += '?%s' % url[4]
+  http = True
+  argi += 2
+
+if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed':
+  framed = True
+  argi += 1
+
+if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl':
+  ssl = True
+  argi += 1
+
+cmd = sys.argv[argi]
+args = sys.argv[argi+1:]
+
+if http:
+  transport = THttpClient.THttpClient(host, port, uri)
+else:
+  socket = TSSLSocket.TSSLSocket(host, port, validate=False) if ssl else TSocket.TSocket(host, port)
+  if framed:
+    transport = TTransport.TFramedTransport(socket)
+  else:
+    transport = TTransport.TBufferedTransport(socket)
+protocol = TBinaryProtocol.TBinaryProtocol(transport)
+client = Airavata.Client(protocol)
+transport.open()
+
+if cmd == 'getAPIVersion':
+  if len(args) != 1:
+    print('getAPIVersion requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getAPIVersion(eval(args[0]),))
+
+elif cmd == 'addGateway':
+  if len(args) != 2:
+    print('addGateway requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.addGateway(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'updateGateway':
+  if len(args) != 3:
+    print('updateGateway requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateGateway(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getGateway':
+  if len(args) != 2:
+    print('getGateway requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getGateway(eval(args[0]),args[1],))
+
+elif cmd == 'deleteGateway':
+  if len(args) != 2:
+    print('deleteGateway requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGateway(eval(args[0]),args[1],))
+
+elif cmd == 'getAllGateways':
+  if len(args) != 1:
+    print('getAllGateways requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGateways(eval(args[0]),))
+
+elif cmd == 'isGatewayExist':
+  if len(args) != 2:
+    print('isGatewayExist requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.isGatewayExist(eval(args[0]),args[1],))
+
+elif cmd == 'generateAndRegisterSSHKeys':
+  if len(args) != 3:
+    print('generateAndRegisterSSHKeys requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.generateAndRegisterSSHKeys(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getSSHPubKey':
+  if len(args) != 3:
+    print('getSSHPubKey requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getSSHPubKey(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getAllUserSSHPubKeys':
+  if len(args) != 2:
+    print('getAllUserSSHPubKeys requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllUserSSHPubKeys(eval(args[0]),args[1],))
+
+elif cmd == 'createProject':
+  if len(args) != 3:
+    print('createProject requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.createProject(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateProject':
+  if len(args) != 3:
+    print('updateProject requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateProject(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getProject':
+  if len(args) != 2:
+    print('getProject requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getProject(eval(args[0]),args[1],))
+
+elif cmd == 'deleteProject':
+  if len(args) != 2:
+    print('deleteProject requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteProject(eval(args[0]),args[1],))
+
+elif cmd == 'getUserProjects':
+  if len(args) != 5:
+    print('getUserProjects requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.getUserProjects(eval(args[0]),args[1],args[2],eval(args[3]),eval(args[4]),))
+
+elif cmd == 'searchProjectsByProjectName':
+  if len(args) != 6:
+    print('searchProjectsByProjectName requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.searchProjectsByProjectName(eval(args[0]),args[1],args[2],args[3],eval(args[4]),eval(args[5]),))
+
+elif cmd == 'searchProjectsByProjectDesc':
+  if len(args) != 6:
+    print('searchProjectsByProjectDesc requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.searchProjectsByProjectDesc(eval(args[0]),args[1],args[2],args[3],eval(args[4]),eval(args[5]),))
+
+elif cmd == 'searchExperimentsByName':
+  if len(args) != 6:
+    print('searchExperimentsByName requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByName(eval(args[0]),args[1],args[2],args[3],eval(args[4]),eval(args[5]),))
+
+elif cmd == 'searchExperimentsByDesc':
+  if len(args) != 6:
+    print('searchExperimentsByDesc requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByDesc(eval(args[0]),args[1],args[2],args[3],eval(args[4]),eval(args[5]),))
+
+elif cmd == 'searchExperimentsByApplication':
+  if len(args) != 6:
+    print('searchExperimentsByApplication requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByApplication(eval(args[0]),args[1],args[2],args[3],eval(args[4]),eval(args[5]),))
+
+elif cmd == 'searchExperimentsByStatus':
+  if len(args) != 6:
+    print('searchExperimentsByStatus requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByStatus(eval(args[0]),args[1],args[2],eval(args[3]),eval(args[4]),eval(args[5]),))
+
+elif cmd == 'searchExperimentsByCreationTime':
+  if len(args) != 7:
+    print('searchExperimentsByCreationTime requires 7 args')
+    sys.exit(1)
+  pp.pprint(client.searchExperimentsByCreationTime(eval(args[0]),args[1],args[2],eval(args[3]),eval(args[4]),eval(args[5]),eval(args[6]),))
+
+elif cmd == 'searchExperiments':
+  if len(args) != 6:
+    print('searchExperiments requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.searchExperiments(eval(args[0]),args[1],args[2],eval(args[3]),eval(args[4]),eval(args[5]),))
+
+elif cmd == 'getExperimentStatistics':
+  if len(args) != 4:
+    print('getExperimentStatistics requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.getExperimentStatistics(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getExperimentsInProject':
+  if len(args) != 4:
+    print('getExperimentsInProject requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.getExperimentsInProject(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getUserExperiments':
+  if len(args) != 5:
+    print('getUserExperiments requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.getUserExperiments(eval(args[0]),args[1],args[2],eval(args[3]),eval(args[4]),))
+
+elif cmd == 'createExperiment':
+  if len(args) != 3:
+    print('createExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.createExperiment(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteExperiment':
+  if len(args) != 2:
+    print('deleteExperiment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteExperiment(eval(args[0]),args[1],))
+
+elif cmd == 'getExperiment':
+  if len(args) != 2:
+    print('getExperiment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getExperiment(eval(args[0]),args[1],))
+
+elif cmd == 'updateExperiment':
+  if len(args) != 3:
+    print('updateExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateExperiment(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateExperimentConfiguration':
+  if len(args) != 3:
+    print('updateExperimentConfiguration requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateExperimentConfiguration(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateResourceScheduleing':
+  if len(args) != 3:
+    print('updateResourceScheduleing requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateResourceScheduleing(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'validateExperiment':
+  if len(args) != 2:
+    print('validateExperiment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.validateExperiment(eval(args[0]),args[1],))
+
+elif cmd == 'launchExperiment':
+  if len(args) != 3:
+    print('launchExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.launchExperiment(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getExperimentStatus':
+  if len(args) != 2:
+    print('getExperimentStatus requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getExperimentStatus(eval(args[0]),args[1],))
+
+elif cmd == 'getExperimentOutputs':
+  if len(args) != 2:
+    print('getExperimentOutputs requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getExperimentOutputs(eval(args[0]),args[1],))
+
+elif cmd == 'getIntermediateOutputs':
+  if len(args) != 2:
+    print('getIntermediateOutputs requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getIntermediateOutputs(eval(args[0]),args[1],))
+
+elif cmd == 'getJobStatuses':
+  if len(args) != 2:
+    print('getJobStatuses requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getJobStatuses(eval(args[0]),args[1],))
+
+elif cmd == 'getJobDetails':
+  if len(args) != 2:
+    print('getJobDetails requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getJobDetails(eval(args[0]),args[1],))
+
+elif cmd == 'cloneExperiment':
+  if len(args) != 3:
+    print('cloneExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.cloneExperiment(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'terminateExperiment':
+  if len(args) != 3:
+    print('terminateExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.terminateExperiment(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'registerApplicationModule':
+  if len(args) != 3:
+    print('registerApplicationModule requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.registerApplicationModule(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getApplicationModule':
+  if len(args) != 2:
+    print('getApplicationModule requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationModule(eval(args[0]),args[1],))
+
+elif cmd == 'updateApplicationModule':
+  if len(args) != 3:
+    print('updateApplicationModule requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateApplicationModule(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getAllAppModules':
+  if len(args) != 2:
+    print('getAllAppModules requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllAppModules(eval(args[0]),args[1],))
+
+elif cmd == 'deleteApplicationModule':
+  if len(args) != 2:
+    print('deleteApplicationModule requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteApplicationModule(eval(args[0]),args[1],))
+
+elif cmd == 'registerApplicationDeployment':
+  if len(args) != 3:
+    print('registerApplicationDeployment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.registerApplicationDeployment(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getApplicationDeployment':
+  if len(args) != 2:
+    print('getApplicationDeployment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationDeployment(eval(args[0]),args[1],))
+
+elif cmd == 'updateApplicationDeployment':
+  if len(args) != 3:
+    print('updateApplicationDeployment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateApplicationDeployment(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteApplicationDeployment':
+  if len(args) != 2:
+    print('deleteApplicationDeployment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteApplicationDeployment(eval(args[0]),args[1],))
+
+elif cmd == 'getAllApplicationDeployments':
+  if len(args) != 2:
+    print('getAllApplicationDeployments requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllApplicationDeployments(eval(args[0]),args[1],))
+
+elif cmd == 'getAppModuleDeployedResources':
+  if len(args) != 2:
+    print('getAppModuleDeployedResources requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAppModuleDeployedResources(eval(args[0]),args[1],))
+
+elif cmd == 'registerApplicationInterface':
+  if len(args) != 3:
+    print('registerApplicationInterface requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.registerApplicationInterface(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getApplicationInterface':
+  if len(args) != 2:
+    print('getApplicationInterface requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationInterface(eval(args[0]),args[1],))
+
+elif cmd == 'updateApplicationInterface':
+  if len(args) != 3:
+    print('updateApplicationInterface requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateApplicationInterface(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteApplicationInterface':
+  if len(args) != 2:
+    print('deleteApplicationInterface requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteApplicationInterface(eval(args[0]),args[1],))
+
+elif cmd == 'getAllApplicationInterfaceNames':
+  if len(args) != 2:
+    print('getAllApplicationInterfaceNames requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllApplicationInterfaceNames(eval(args[0]),args[1],))
+
+elif cmd == 'getAllApplicationInterfaces':
+  if len(args) != 2:
+    print('getAllApplicationInterfaces requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllApplicationInterfaces(eval(args[0]),args[1],))
+
+elif cmd == 'getApplicationInputs':
+  if len(args) != 2:
+    print('getApplicationInputs requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationInputs(eval(args[0]),args[1],))
+
+elif cmd == 'getApplicationOutputs':
+  if len(args) != 2:
+    print('getApplicationOutputs requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationOutputs(eval(args[0]),args[1],))
+
+elif cmd == 'getAvailableAppInterfaceComputeResources':
+  if len(args) != 2:
+    print('getAvailableAppInterfaceComputeResources requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAvailableAppInterfaceComputeResources(eval(args[0]),args[1],))
+
+elif cmd == 'registerComputeResource':
+  if len(args) != 2:
+    print('registerComputeResource requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerComputeResource(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'getComputeResource':
+  if len(args) != 2:
+    print('getComputeResource requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getComputeResource(eval(args[0]),args[1],))
+
+elif cmd == 'getAllComputeResourceNames':
+  if len(args) != 1:
+    print('getAllComputeResourceNames requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getAllComputeResourceNames(eval(args[0]),))
+
+elif cmd == 'updateComputeResource':
+  if len(args) != 3:
+    print('updateComputeResource requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateComputeResource(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteComputeResource':
+  if len(args) != 2:
+    print('deleteComputeResource requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteComputeResource(eval(args[0]),args[1],))
+
+elif cmd == 'addLocalSubmissionDetails':
+  if len(args) != 4:
+    print('addLocalSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addLocalSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'updateLocalSubmissionDetails':
+  if len(args) != 3:
+    print('updateLocalSubmissionDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateLocalSubmissionDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getLocalJobSubmission':
+  if len(args) != 2:
+    print('getLocalJobSubmission requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getLocalJobSubmission(eval(args[0]),args[1],))
+
+elif cmd == 'addSSHJobSubmissionDetails':
+  if len(args) != 4:
+    print('addSSHJobSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addSSHJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'addSSHForkJobSubmissionDetails':
+  if len(args) != 4:
+    print('addSSHForkJobSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addSSHForkJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getSSHJobSubmission':
+  if len(args) != 2:
+    print('getSSHJobSubmission requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getSSHJobSubmission(eval(args[0]),args[1],))
+
+elif cmd == 'addUNICOREJobSubmissionDetails':
+  if len(args) != 4:
+    print('addUNICOREJobSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addUNICOREJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getUnicoreJobSubmission':
+  if len(args) != 2:
+    print('getUnicoreJobSubmission requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getUnicoreJobSubmission(eval(args[0]),args[1],))
+
+elif cmd == 'addCloudJobSubmissionDetails':
+  if len(args) != 4:
+    print('addCloudJobSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addCloudJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getCloudJobSubmission':
+  if len(args) != 2:
+    print('getCloudJobSubmission requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getCloudJobSubmission(eval(args[0]),args[1],))
+
+elif cmd == 'updateSSHJobSubmissionDetails':
+  if len(args) != 3:
+    print('updateSSHJobSubmissionDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateSSHJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateCloudJobSubmissionDetails':
+  if len(args) != 3:
+    print('updateCloudJobSubmissionDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateCloudJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateUnicoreJobSubmissionDetails':
+  if len(args) != 3:
+    print('updateUnicoreJobSubmissionDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateUnicoreJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'addLocalDataMovementDetails':
+  if len(args) != 4:
+    print('addLocalDataMovementDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addLocalDataMovementDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'updateLocalDataMovementDetails':
+  if len(args) != 3:
+    print('updateLocalDataMovementDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateLocalDataMovementDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getLocalDataMovement':
+  if len(args) != 2:
+    print('getLocalDataMovement requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getLocalDataMovement(eval(args[0]),args[1],))
+
+elif cmd == 'addSCPDataMovementDetails':
+  if len(args) != 4:
+    print('addSCPDataMovementDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addSCPDataMovementDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'updateSCPDataMovementDetails':
+  if len(args) != 3:
+    print('updateSCPDataMovementDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateSCPDataMovementDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getSCPDataMovement':
+  if len(args) != 2:
+    print('getSCPDataMovement requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getSCPDataMovement(eval(args[0]),args[1],))
+
+elif cmd == 'addUnicoreDataMovementDetails':
+  if len(args) != 4:
+    print('addUnicoreDataMovementDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addUnicoreDataMovementDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'updateUnicoreDataMovementDetails':
+  if len(args) != 3:
+    print('updateUnicoreDataMovementDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateUnicoreDataMovementDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getUnicoreDataMovement':
+  if len(args) != 2:
+    print('getUnicoreDataMovement requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getUnicoreDataMovement(eval(args[0]),args[1],))
+
+elif cmd == 'addGridFTPDataMovementDetails':
+  if len(args) != 4:
+    print('addGridFTPDataMovementDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addGridFTPDataMovementDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'updateGridFTPDataMovementDetails':
+  if len(args) != 3:
+    print('updateGridFTPDataMovementDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateGridFTPDataMovementDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getGridFTPDataMovement':
+  if len(args) != 2:
+    print('getGridFTPDataMovement requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getGridFTPDataMovement(eval(args[0]),args[1],))
+
+elif cmd == 'changeJobSubmissionPriority':
+  if len(args) != 3:
+    print('changeJobSubmissionPriority requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.changeJobSubmissionPriority(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'changeDataMovementPriority':
+  if len(args) != 3:
+    print('changeDataMovementPriority requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.changeDataMovementPriority(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'changeJobSubmissionPriorities':
+  if len(args) != 2:
+    print('changeJobSubmissionPriorities requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.changeJobSubmissionPriorities(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'changeDataMovementPriorities':
+  if len(args) != 2:
+    print('changeDataMovementPriorities requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.changeDataMovementPriorities(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'deleteJobSubmissionInterface':
+  if len(args) != 3:
+    print('deleteJobSubmissionInterface requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteJobSubmissionInterface(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'deleteDataMovementInterface':
+  if len(args) != 3:
+    print('deleteDataMovementInterface requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteDataMovementInterface(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'registerResourceJobManager':
+  if len(args) != 2:
+    print('registerResourceJobManager requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerResourceJobManager(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'updateResourceJobManager':
+  if len(args) != 3:
+    print('updateResourceJobManager requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateResourceJobManager(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getResourceJobManager':
+  if len(args) != 2:
+    print('getResourceJobManager requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getResourceJobManager(eval(args[0]),args[1],))
+
+elif cmd == 'deleteResourceJobManager':
+  if len(args) != 2:
+    print('deleteResourceJobManager requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteResourceJobManager(eval(args[0]),args[1],))
+
+elif cmd == 'deleteBatchQueue':
+  if len(args) != 3:
+    print('deleteBatchQueue requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteBatchQueue(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'registerGatewayResourceProfile':
+  if len(args) != 2:
+    print('registerGatewayResourceProfile requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerGatewayResourceProfile(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'getGatewayResourceProfile':
+  if len(args) != 2:
+    print('getGatewayResourceProfile requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getGatewayResourceProfile(eval(args[0]),args[1],))
+
+elif cmd == 'updateGatewayResourceProfile':
+  if len(args) != 3:
+    print('updateGatewayResourceProfile requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateGatewayResourceProfile(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteGatewayResourceProfile':
+  if len(args) != 2:
+    print('deleteGatewayResourceProfile requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGatewayResourceProfile(eval(args[0]),args[1],))
+
+elif cmd == 'addGatewayComputeResourcePreference':
+  if len(args) != 4:
+    print('addGatewayComputeResourcePreference requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addGatewayComputeResourcePreference(eval(args[0]),args[1],args[2],eval(args[3]),))
+
+elif cmd == 'addGatewayDataStoragePreference':
+  if len(args) != 4:
+    print('addGatewayDataStoragePreference requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addGatewayDataStoragePreference(eval(args[0]),args[1],args[2],eval(args[3]),))
+
+elif cmd == 'getGatewayComputeResourcePreference':
+  if len(args) != 3:
+    print('getGatewayComputeResourcePreference requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getGatewayComputeResourcePreference(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getGatewayDataStoragePreference':
+  if len(args) != 3:
+    print('getGatewayDataStoragePreference requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getGatewayDataStoragePreference(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getAllGatewayComputeResourcePreferences':
+  if len(args) != 2:
+    print('getAllGatewayComputeResourcePreferences requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGatewayComputeResourcePreferences(eval(args[0]),args[1],))
+
+elif cmd == 'getAllGatewayDataStoragePreferences':
+  if len(args) != 2:
+    print('getAllGatewayDataStoragePreferences requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGatewayDataStoragePreferences(eval(args[0]),args[1],))
+
+elif cmd == 'getAllGatewayResourceProfiles':
+  if len(args) != 1:
+    print('getAllGatewayResourceProfiles requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGatewayResourceProfiles(eval(args[0]),))
+
+elif cmd == 'updateGatewayComputeResourcePreference':
+  if len(args) != 4:
+    print('updateGatewayComputeResourcePreference requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.updateGatewayComputeResourcePreference(eval(args[0]),args[1],args[2],eval(args[3]),))
+
+elif cmd == 'updateGatewayDataStoragePreference':
+  if len(args) != 4:
+    print('updateGatewayDataStoragePreference requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.updateGatewayDataStoragePreference(eval(args[0]),args[1],args[2],eval(args[3]),))
+
+elif cmd == 'deleteGatewayComputeResourcePreference':
+  if len(args) != 3:
+    print('deleteGatewayComputeResourcePreference requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGatewayComputeResourcePreference(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'deleteGatewayDataStoragePreference':
+  if len(args) != 3:
+    print('deleteGatewayDataStoragePreference requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGatewayDataStoragePreference(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getAllWorkflows':
+  if len(args) != 2:
+    print('getAllWorkflows requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllWorkflows(eval(args[0]),args[1],))
+
+elif cmd == 'getWorkflow':
+  if len(args) != 2:
+    print('getWorkflow requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getWorkflow(eval(args[0]),args[1],))
+
+elif cmd == 'deleteWorkflow':
+  if len(args) != 2:
+    print('deleteWorkflow requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteWorkflow(eval(args[0]),args[1],))
+
+elif cmd == 'registerWorkflow':
+  if len(args) != 3:
+    print('registerWorkflow requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.registerWorkflow(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateWorkflow':
+  if len(args) != 3:
+    print('updateWorkflow requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateWorkflow(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getWorkflowTemplateId':
+  if len(args) != 2:
+    print('getWorkflowTemplateId requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getWorkflowTemplateId(eval(args[0]),args[1],))
+
+elif cmd == 'isWorkflowExistWithName':
+  if len(args) != 2:
+    print('isWorkflowExistWithName requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.isWorkflowExistWithName(eval(args[0]),args[1],))
+
+else:
+  print('Unrecognized method %s' % cmd)
+  sys.exit(1)
+
+transport.close()


[26/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/ttypes.py
new file mode 100644
index 0000000..2842f36
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/ttypes.py
@@ -0,0 +1,2155 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ResourceJobManagerType:
+  """
+  * Enumeration of local resource job manager types supported by Airavata
+  *
+  * FORK:
+  *  Forking of commands without any job manager
+  *
+  * PBS:
+  *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+  *
+  * SLURM:
+  *  The Simple Linux Utility for Resource Management is a open source workload manager.
+   *
+   * UGE:
+   *  Univa Grid Engine, a variation of PBS implementation.
+   *
+   * LSF:
+   *  IBM Platform Load Sharing Facility is dominantly installed on IBM clusters.
+  *
+  """
+  FORK = 0
+  PBS = 1
+  SLURM = 2
+  LSF = 3
+  UGE = 4
+
+  _VALUES_TO_NAMES = {
+    0: "FORK",
+    1: "PBS",
+    2: "SLURM",
+    3: "LSF",
+    4: "UGE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "FORK": 0,
+    "PBS": 1,
+    "SLURM": 2,
+    "LSF": 3,
+    "UGE": 4,
+  }
+
+class JobManagerCommand:
+  """
+  Enumeration of resource job manager commands
+
+  SUBMISSION:
+   Ex: qsub, sbatch
+
+  JOBMONITORING:
+   Ex: qstat, squeue
+
+  DELETION:
+   Ex: qdel, scancel
+
+  CHECK_JOB:
+   Detailed Status about the Job. Ex: checkjob
+
+  SHOW_QUEUE:
+   List of Queued Job by the schedular. Ex: showq
+
+  SHOW_RESERVATION:
+   List all reservations. Ex:showres, show_res
+
+  SHOW_START:
+   Display the start time of the specified job. Ex: showstart
+
+  """
+  SUBMISSION = 0
+  JOB_MONITORING = 1
+  DELETION = 2
+  CHECK_JOB = 3
+  SHOW_QUEUE = 4
+  SHOW_RESERVATION = 5
+  SHOW_START = 6
+
+  _VALUES_TO_NAMES = {
+    0: "SUBMISSION",
+    1: "JOB_MONITORING",
+    2: "DELETION",
+    3: "CHECK_JOB",
+    4: "SHOW_QUEUE",
+    5: "SHOW_RESERVATION",
+    6: "SHOW_START",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SUBMISSION": 0,
+    "JOB_MONITORING": 1,
+    "DELETION": 2,
+    "CHECK_JOB": 3,
+    "SHOW_QUEUE": 4,
+    "SHOW_RESERVATION": 5,
+    "SHOW_START": 6,
+  }
+
+class FileSystems:
+  """
+  Enumeration of File Systems on the resource
+
+  FORK:
+   Forking of commands without any job manager
+
+  PBS:
+   Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+
+  UGE:
+   Univa Grid Engine, a variation of PBS implementation.
+
+  SLURM:
+   The Simple Linux Utility for Resource Management is a open source workload manager.
+
+  """
+  HOME = 0
+  WORK = 1
+  LOCALTMP = 2
+  SCRATCH = 3
+  ARCHIVE = 4
+
+  _VALUES_TO_NAMES = {
+    0: "HOME",
+    1: "WORK",
+    2: "LOCALTMP",
+    3: "SCRATCH",
+    4: "ARCHIVE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "HOME": 0,
+    "WORK": 1,
+    "LOCALTMP": 2,
+    "SCRATCH": 3,
+    "ARCHIVE": 4,
+  }
+
+class SecurityProtocol:
+  """
+  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
+
+  """
+  USERNAME_PASSWORD = 0
+  SSH_KEYS = 1
+  GSI = 2
+  KERBEROS = 3
+  OAUTH = 4
+  LOCAL = 5
+
+  _VALUES_TO_NAMES = {
+    0: "USERNAME_PASSWORD",
+    1: "SSH_KEYS",
+    2: "GSI",
+    3: "KERBEROS",
+    4: "OAUTH",
+    5: "LOCAL",
+  }
+
+  _NAMES_TO_VALUES = {
+    "USERNAME_PASSWORD": 0,
+    "SSH_KEYS": 1,
+    "GSI": 2,
+    "KERBEROS": 3,
+    "OAUTH": 4,
+    "LOCAL": 5,
+  }
+
+class JobSubmissionProtocol:
+  """
+  Enumeration of Airavata supported Job Submission Mechanisms for High Performance Computing Clusters.
+
+  SSH:
+   Execute remote job submission commands using via secure shell protocol.
+
+  GRAM:
+   Execute remote jobs via Globus GRAM service.
+
+  UNICORE:
+   Execute remote jobs via Unicore services
+
+  """
+  LOCAL = 0
+  SSH = 1
+  GLOBUS = 2
+  UNICORE = 3
+  CLOUD = 4
+  SSH_FORK = 5
+  LOCAL_FORK = 6
+
+  _VALUES_TO_NAMES = {
+    0: "LOCAL",
+    1: "SSH",
+    2: "GLOBUS",
+    3: "UNICORE",
+    4: "CLOUD",
+    5: "SSH_FORK",
+    6: "LOCAL_FORK",
+  }
+
+  _NAMES_TO_VALUES = {
+    "LOCAL": 0,
+    "SSH": 1,
+    "GLOBUS": 2,
+    "UNICORE": 3,
+    "CLOUD": 4,
+    "SSH_FORK": 5,
+    "LOCAL_FORK": 6,
+  }
+
+class MonitorMode:
+  """
+  Monitoring modes
+
+  POLL_JOB_MANAGER:
+  GFac need to pull job status changes.
+
+  XSEDE_AMQP_SUBSCRIBE:
+  Server will publish job status changes to amqp servert.
+
+
+  """
+  POLL_JOB_MANAGER = 0
+  JOB_EMAIL_NOTIFICATION_MONITOR = 1
+  XSEDE_AMQP_SUBSCRIBE = 2
+  FORK = 3
+
+  _VALUES_TO_NAMES = {
+    0: "POLL_JOB_MANAGER",
+    1: "JOB_EMAIL_NOTIFICATION_MONITOR",
+    2: "XSEDE_AMQP_SUBSCRIBE",
+    3: "FORK",
+  }
+
+  _NAMES_TO_VALUES = {
+    "POLL_JOB_MANAGER": 0,
+    "JOB_EMAIL_NOTIFICATION_MONITOR": 1,
+    "XSEDE_AMQP_SUBSCRIBE": 2,
+    "FORK": 3,
+  }
+
+class DataMovementProtocol:
+  """
+  Enumeration of data movement supported by Airavata
+
+  SCP:
+   Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+
+  SFTP:
+   The Simple Linux Utility for Resource Management is a open source workload manager.
+
+  GridFTP:
+   Globus File Transfer Protocol
+
+  UNICORE_STORAGE_SERVICE:
+   Storage Service Provided by Unicore
+
+  """
+  LOCAL = 0
+  SCP = 1
+  SFTP = 2
+  GridFTP = 3
+  UNICORE_STORAGE_SERVICE = 4
+
+  _VALUES_TO_NAMES = {
+    0: "LOCAL",
+    1: "SCP",
+    2: "SFTP",
+    3: "GridFTP",
+    4: "UNICORE_STORAGE_SERVICE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "LOCAL": 0,
+    "SCP": 1,
+    "SFTP": 2,
+    "GridFTP": 3,
+    "UNICORE_STORAGE_SERVICE": 4,
+  }
+
+class ProviderName:
+  """
+  Provider name
+
+  """
+  EC2 = 0
+  AWSEC2 = 1
+  RACKSPACE = 2
+
+  _VALUES_TO_NAMES = {
+    0: "EC2",
+    1: "AWSEC2",
+    2: "RACKSPACE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EC2": 0,
+    "AWSEC2": 1,
+    "RACKSPACE": 2,
+  }
+
+
+class ResourceJobManager:
+  """
+  Resource Job Manager Information
+
+  resourceJobManagerType:
+   A typical HPC cluster has a single Job Manager to manage the resources.
+
+  pushMonitoringEndpoint:
+   If the job manager pushes out state changes to a database or bus, specify the service endpoint.
+    Ex: Moab Web Service, Moab MongoDB URL, AMQP (GLUE2) Broker
+
+  jobManagerBinPath:
+   Path to the Job Manager Installation Binary directory.
+
+  jobManagerCommands:
+   An enumeration of commonly used manager commands.
+
+
+  Attributes:
+   - resourceJobManagerId
+   - resourceJobManagerType
+   - pushMonitoringEndpoint
+   - jobManagerBinPath
+   - jobManagerCommands
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'resourceJobManagerId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'resourceJobManagerType', None, None, ), # 2
+    (3, TType.STRING, 'pushMonitoringEndpoint', None, None, ), # 3
+    (4, TType.STRING, 'jobManagerBinPath', None, None, ), # 4
+    (5, TType.MAP, 'jobManagerCommands', (TType.I32,None,TType.STRING,None), None, ), # 5
+  )
+
+  def __init__(self, resourceJobManagerId=thrift_spec[1][4], resourceJobManagerType=None, pushMonitoringEndpoint=None, jobManagerBinPath=None, jobManagerCommands=None,):
+    self.resourceJobManagerId = resourceJobManagerId
+    self.resourceJobManagerType = resourceJobManagerType
+    self.pushMonitoringEndpoint = pushMonitoringEndpoint
+    self.jobManagerBinPath = jobManagerBinPath
+    self.jobManagerCommands = jobManagerCommands
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.resourceJobManagerId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.resourceJobManagerType = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.pushMonitoringEndpoint = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.jobManagerBinPath = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.MAP:
+          self.jobManagerCommands = {}
+          (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
+          for _i4 in xrange(_size0):
+            _key5 = iprot.readI32();
+            _val6 = iprot.readString();
+            self.jobManagerCommands[_key5] = _val6
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ResourceJobManager')
+    if self.resourceJobManagerId is not None:
+      oprot.writeFieldBegin('resourceJobManagerId', TType.STRING, 1)
+      oprot.writeString(self.resourceJobManagerId)
+      oprot.writeFieldEnd()
+    if self.resourceJobManagerType is not None:
+      oprot.writeFieldBegin('resourceJobManagerType', TType.I32, 2)
+      oprot.writeI32(self.resourceJobManagerType)
+      oprot.writeFieldEnd()
+    if self.pushMonitoringEndpoint is not None:
+      oprot.writeFieldBegin('pushMonitoringEndpoint', TType.STRING, 3)
+      oprot.writeString(self.pushMonitoringEndpoint)
+      oprot.writeFieldEnd()
+    if self.jobManagerBinPath is not None:
+      oprot.writeFieldBegin('jobManagerBinPath', TType.STRING, 4)
+      oprot.writeString(self.jobManagerBinPath)
+      oprot.writeFieldEnd()
+    if self.jobManagerCommands is not None:
+      oprot.writeFieldBegin('jobManagerCommands', TType.MAP, 5)
+      oprot.writeMapBegin(TType.I32, TType.STRING, len(self.jobManagerCommands))
+      for kiter7,viter8 in self.jobManagerCommands.items():
+        oprot.writeI32(kiter7)
+        oprot.writeString(viter8)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.resourceJobManagerId is None:
+      raise TProtocol.TProtocolException(message='Required field resourceJobManagerId is unset!')
+    if self.resourceJobManagerType is None:
+      raise TProtocol.TProtocolException(message='Required field resourceJobManagerType is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.resourceJobManagerId)
+    value = (value * 31) ^ hash(self.resourceJobManagerType)
+    value = (value * 31) ^ hash(self.pushMonitoringEndpoint)
+    value = (value * 31) ^ hash(self.jobManagerBinPath)
+    value = (value * 31) ^ hash(self.jobManagerCommands)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class BatchQueue:
+  """
+  Batch Queue Information on SuperComputers
+
+  maxRunTime:
+   Maximum allowed run time in hours.
+
+  Attributes:
+   - queueName
+   - queueDescription
+   - maxRunTime
+   - maxNodes
+   - maxProcessors
+   - maxJobsInQueue
+   - maxMemory
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'queueName', None, None, ), # 1
+    (2, TType.STRING, 'queueDescription', None, None, ), # 2
+    (3, TType.I32, 'maxRunTime', None, None, ), # 3
+    (4, TType.I32, 'maxNodes', None, None, ), # 4
+    (5, TType.I32, 'maxProcessors', None, None, ), # 5
+    (6, TType.I32, 'maxJobsInQueue', None, None, ), # 6
+    (7, TType.I32, 'maxMemory', None, None, ), # 7
+  )
+
+  def __init__(self, queueName=None, queueDescription=None, maxRunTime=None, maxNodes=None, maxProcessors=None, maxJobsInQueue=None, maxMemory=None,):
+    self.queueName = queueName
+    self.queueDescription = queueDescription
+    self.maxRunTime = maxRunTime
+    self.maxNodes = maxNodes
+    self.maxProcessors = maxProcessors
+    self.maxJobsInQueue = maxJobsInQueue
+    self.maxMemory = maxMemory
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.queueName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.queueDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.maxRunTime = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.maxNodes = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.maxProcessors = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.maxJobsInQueue = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.maxMemory = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('BatchQueue')
+    if self.queueName is not None:
+      oprot.writeFieldBegin('queueName', TType.STRING, 1)
+      oprot.writeString(self.queueName)
+      oprot.writeFieldEnd()
+    if self.queueDescription is not None:
+      oprot.writeFieldBegin('queueDescription', TType.STRING, 2)
+      oprot.writeString(self.queueDescription)
+      oprot.writeFieldEnd()
+    if self.maxRunTime is not None:
+      oprot.writeFieldBegin('maxRunTime', TType.I32, 3)
+      oprot.writeI32(self.maxRunTime)
+      oprot.writeFieldEnd()
+    if self.maxNodes is not None:
+      oprot.writeFieldBegin('maxNodes', TType.I32, 4)
+      oprot.writeI32(self.maxNodes)
+      oprot.writeFieldEnd()
+    if self.maxProcessors is not None:
+      oprot.writeFieldBegin('maxProcessors', TType.I32, 5)
+      oprot.writeI32(self.maxProcessors)
+      oprot.writeFieldEnd()
+    if self.maxJobsInQueue is not None:
+      oprot.writeFieldBegin('maxJobsInQueue', TType.I32, 6)
+      oprot.writeI32(self.maxJobsInQueue)
+      oprot.writeFieldEnd()
+    if self.maxMemory is not None:
+      oprot.writeFieldBegin('maxMemory', TType.I32, 7)
+      oprot.writeI32(self.maxMemory)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.queueName is None:
+      raise TProtocol.TProtocolException(message='Required field queueName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.queueName)
+    value = (value * 31) ^ hash(self.queueDescription)
+    value = (value * 31) ^ hash(self.maxRunTime)
+    value = (value * 31) ^ hash(self.maxNodes)
+    value = (value * 31) ^ hash(self.maxProcessors)
+    value = (value * 31) ^ hash(self.maxJobsInQueue)
+    value = (value * 31) ^ hash(self.maxMemory)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class SCPDataMovement:
+  """
+  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.
+
+  Attributes:
+   - dataMovementInterfaceId
+   - securityProtocol
+   - alternativeSCPHostName
+   - sshPort
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRING, 'alternativeSCPHostName', None, None, ), # 3
+    (4, TType.I32, 'sshPort', None, 22, ), # 4
+  )
+
+  def __init__(self, dataMovementInterfaceId=thrift_spec[1][4], securityProtocol=None, alternativeSCPHostName=None, sshPort=thrift_spec[4][4],):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+    self.securityProtocol = securityProtocol
+    self.alternativeSCPHostName = alternativeSCPHostName
+    self.sshPort = sshPort
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.alternativeSCPHostName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.sshPort = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('SCPDataMovement')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.alternativeSCPHostName is not None:
+      oprot.writeFieldBegin('alternativeSCPHostName', TType.STRING, 3)
+      oprot.writeString(self.alternativeSCPHostName)
+      oprot.writeFieldEnd()
+    if self.sshPort is not None:
+      oprot.writeFieldBegin('sshPort', TType.I32, 4)
+      oprot.writeI32(self.sshPort)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.alternativeSCPHostName)
+    value = (value * 31) ^ hash(self.sshPort)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class GridFTPDataMovement:
+  """
+  Data Movement through GridFTP
+
+  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.
+
+  Attributes:
+   - dataMovementInterfaceId
+   - securityProtocol
+   - gridFTPEndPoints
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.LIST, 'gridFTPEndPoints', (TType.STRING,None), None, ), # 3
+  )
+
+  def __init__(self, dataMovementInterfaceId=thrift_spec[1][4], securityProtocol=None, gridFTPEndPoints=None,):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+    self.securityProtocol = securityProtocol
+    self.gridFTPEndPoints = gridFTPEndPoints
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.LIST:
+          self.gridFTPEndPoints = []
+          (_etype12, _size9) = iprot.readListBegin()
+          for _i13 in xrange(_size9):
+            _elem14 = iprot.readString();
+            self.gridFTPEndPoints.append(_elem14)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('GridFTPDataMovement')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.gridFTPEndPoints is not None:
+      oprot.writeFieldBegin('gridFTPEndPoints', TType.LIST, 3)
+      oprot.writeListBegin(TType.STRING, len(self.gridFTPEndPoints))
+      for iter15 in self.gridFTPEndPoints:
+        oprot.writeString(iter15)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.gridFTPEndPoints is None:
+      raise TProtocol.TProtocolException(message='Required field gridFTPEndPoints is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.gridFTPEndPoints)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class UnicoreDataMovement:
+  """
+  Data Movement through UnicoreStorage
+
+  unicoreEndPointURL:
+   unicoreGateway End Point. The provider will query this service to fetch required service end points.
+
+  Attributes:
+   - dataMovementInterfaceId
+   - securityProtocol
+   - unicoreEndPointURL
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRING, 'unicoreEndPointURL', None, None, ), # 3
+  )
+
+  def __init__(self, dataMovementInterfaceId=thrift_spec[1][4], securityProtocol=None, unicoreEndPointURL=None,):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+    self.securityProtocol = securityProtocol
+    self.unicoreEndPointURL = unicoreEndPointURL
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.unicoreEndPointURL = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UnicoreDataMovement')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.unicoreEndPointURL is not None:
+      oprot.writeFieldBegin('unicoreEndPointURL', TType.STRING, 3)
+      oprot.writeString(self.unicoreEndPointURL)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.unicoreEndPointURL is None:
+      raise TProtocol.TProtocolException(message='Required field unicoreEndPointURL is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.unicoreEndPointURL)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class LOCALSubmission:
+  """
+  Locally Fork Jobs as OS processes
+
+  alternativeSSHHostName:
+   If the login to ssh is different than the hostname itself, specify it here
+
+  sshPort:
+   If a non-default port needs to used, specify it.
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - securityProtocol
+   - resourceJobManager
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRUCT, 'resourceJobManager', (ResourceJobManager, ResourceJobManager.thrift_spec), None, ), # 3
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, resourceJobManager=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
+    self.resourceJobManager = resourceJobManager
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.resourceJobManager = ResourceJobManager()
+          self.resourceJobManager.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('LOCALSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.resourceJobManager is not None:
+      oprot.writeFieldBegin('resourceJobManager', TType.STRUCT, 3)
+      self.resourceJobManager.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.resourceJobManager is None:
+      raise TProtocol.TProtocolException(message='Required field resourceJobManager is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.resourceJobManager)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class LOCALDataMovement:
+  """
+  LOCAL
+
+  alternativeSCPHostName:
+   If the login to scp is different than the hostname itself, specify it here
+
+  sshPort:
+   If a non-defualt port needs to used, specify it.
+
+  Attributes:
+   - dataMovementInterfaceId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+  )
+
+  def __init__(self, dataMovementInterfaceId=thrift_spec[1][4],):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('LOCALDataMovement')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class SSHJobSubmission:
+  """
+  Authenticate using Secured Shell
+
+  alternativeSSHHostName:
+   If the login to ssh is different than the hostname itself, specify it here
+
+  sshPort:
+   If a non-default port needs to used, specify it.
+
+  batchQueueEmailSenders:
+   If a resource always sends the monitoring from a specific address, specify the
+    full email address. If a resource sends emails from multiple addresses (
+     example: based on the submitted login node) then use the wildchar * to indicate
+     the same. Example: *@*.example.com or *@example.com
+
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - securityProtocol
+   - resourceJobManager
+   - alternativeSSHHostName
+   - sshPort
+   - monitorMode
+   - batchQueueEmailSenders
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRUCT, 'resourceJobManager', (ResourceJobManager, ResourceJobManager.thrift_spec), None, ), # 3
+    (4, TType.STRING, 'alternativeSSHHostName', None, None, ), # 4
+    (5, TType.I32, 'sshPort', None, 22, ), # 5
+    (6, TType.I32, 'monitorMode', None, None, ), # 6
+    (7, TType.LIST, 'batchQueueEmailSenders', (TType.STRING,None), None, ), # 7
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, resourceJobManager=None, alternativeSSHHostName=None, sshPort=thrift_spec[5][4], monitorMode=None, batchQueueEmailSenders=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
+    self.resourceJobManager = resourceJobManager
+    self.alternativeSSHHostName = alternativeSSHHostName
+    self.sshPort = sshPort
+    self.monitorMode = monitorMode
+    self.batchQueueEmailSenders = batchQueueEmailSenders
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.resourceJobManager = ResourceJobManager()
+          self.resourceJobManager.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.alternativeSSHHostName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.sshPort = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.monitorMode = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.batchQueueEmailSenders = []
+          (_etype19, _size16) = iprot.readListBegin()
+          for _i20 in xrange(_size16):
+            _elem21 = iprot.readString();
+            self.batchQueueEmailSenders.append(_elem21)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('SSHJobSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.resourceJobManager is not None:
+      oprot.writeFieldBegin('resourceJobManager', TType.STRUCT, 3)
+      self.resourceJobManager.write(oprot)
+      oprot.writeFieldEnd()
+    if self.alternativeSSHHostName is not None:
+      oprot.writeFieldBegin('alternativeSSHHostName', TType.STRING, 4)
+      oprot.writeString(self.alternativeSSHHostName)
+      oprot.writeFieldEnd()
+    if self.sshPort is not None:
+      oprot.writeFieldBegin('sshPort', TType.I32, 5)
+      oprot.writeI32(self.sshPort)
+      oprot.writeFieldEnd()
+    if self.monitorMode is not None:
+      oprot.writeFieldBegin('monitorMode', TType.I32, 6)
+      oprot.writeI32(self.monitorMode)
+      oprot.writeFieldEnd()
+    if self.batchQueueEmailSenders is not None:
+      oprot.writeFieldBegin('batchQueueEmailSenders', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRING, len(self.batchQueueEmailSenders))
+      for iter22 in self.batchQueueEmailSenders:
+        oprot.writeString(iter22)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.resourceJobManager is None:
+      raise TProtocol.TProtocolException(message='Required field resourceJobManager is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.resourceJobManager)
+    value = (value * 31) ^ hash(self.alternativeSSHHostName)
+    value = (value * 31) ^ hash(self.sshPort)
+    value = (value * 31) ^ hash(self.monitorMode)
+    value = (value * 31) ^ hash(self.batchQueueEmailSenders)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class GlobusJobSubmission:
+  """
+  Attributes:
+   - jobSubmissionInterfaceId
+   - securityProtocol
+   - globusGateKeeperEndPoint
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.LIST, 'globusGateKeeperEndPoint', (TType.STRING,None), None, ), # 3
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, globusGateKeeperEndPoint=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
+    self.globusGateKeeperEndPoint = globusGateKeeperEndPoint
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.LIST:
+          self.globusGateKeeperEndPoint = []
+          (_etype26, _size23) = iprot.readListBegin()
+          for _i27 in xrange(_size23):
+            _elem28 = iprot.readString();
+            self.globusGateKeeperEndPoint.append(_elem28)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('GlobusJobSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.globusGateKeeperEndPoint is not None:
+      oprot.writeFieldBegin('globusGateKeeperEndPoint', TType.LIST, 3)
+      oprot.writeListBegin(TType.STRING, len(self.globusGateKeeperEndPoint))
+      for iter29 in self.globusGateKeeperEndPoint:
+        oprot.writeString(iter29)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.globusGateKeeperEndPoint)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class UnicoreJobSubmission:
+  """
+  Unicore Job Submission
+
+  unicoreEndPointURL:
+   unicoreGateway End Point. The provider will query this service to fetch required service end points.
+  authenticationMode
+   The authenticationMode defines the way certificate is fetched.
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - securityProtocol
+   - unicoreEndPointURL
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRING, 'unicoreEndPointURL', None, None, ), # 3
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, unicoreEndPointURL=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
+    self.unicoreEndPointURL = unicoreEndPointURL
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.unicoreEndPointURL = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UnicoreJobSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.unicoreEndPointURL is not None:
+      oprot.writeFieldBegin('unicoreEndPointURL', TType.STRING, 3)
+      oprot.writeString(self.unicoreEndPointURL)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.unicoreEndPointURL is None:
+      raise TProtocol.TProtocolException(message='Required field unicoreEndPointURL is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.unicoreEndPointURL)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class CloudJobSubmission:
+  """
+  Cloud Job Submission
+
+
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - securityProtocol
+   - nodeId
+   - executableType
+   - providerName
+   - userAccountName
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRING, 'nodeId', None, None, ), # 3
+    (4, TType.STRING, 'executableType', None, None, ), # 4
+    (5, TType.I32, 'providerName', None, None, ), # 5
+    (6, TType.STRING, 'userAccountName', None, None, ), # 6
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, nodeId=None, executableType=None, providerName=None, userAccountName=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
+    self.nodeId = nodeId
+    self.executableType = executableType
+    self.providerName = providerName
+    self.userAccountName = userAccountName
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.nodeId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.executableType = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.providerName = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.userAccountName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('CloudJobSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.nodeId is not None:
+      oprot.writeFieldBegin('nodeId', TType.STRING, 3)
+      oprot.writeString(self.nodeId)
+      oprot.writeFieldEnd()
+    if self.executableType is not None:
+      oprot.writeFieldBegin('executableType', TType.STRING, 4)
+      oprot.writeString(self.executableType)
+      oprot.writeFieldEnd()
+    if self.providerName is not None:
+      oprot.writeFieldBegin('providerName', TType.I32, 5)
+      oprot.writeI32(self.providerName)
+      oprot.writeFieldEnd()
+    if self.userAccountName is not None:
+      oprot.writeFieldBegin('userAccountName', TType.STRING, 6)
+      oprot.writeString(self.userAccountName)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.nodeId is None:
+      raise TProtocol.TProtocolException(message='Required field nodeId is unset!')
+    if self.executableType is None:
+      raise TProtocol.TProtocolException(message='Required field executableType is unset!')
+    if self.providerName is None:
+      raise TProtocol.TProtocolException(message='Required field providerName is unset!')
+    if self.userAccountName is None:
+      raise TProtocol.TProtocolException(message='Required field userAccountName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.nodeId)
+    value = (value * 31) ^ hash(self.executableType)
+    value = (value * 31) ^ hash(self.providerName)
+    value = (value * 31) ^ hash(self.userAccountName)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobSubmissionInterface:
+  """
+  Job Submission Interfaces
+
+  jobSubmissionInterfaceId: The Job Submission Interface has to be previously registered and referenced here.
+
+  priorityOrder:
+   For resources with multiple interfaces, the priority order should be selected.
+    Lower the numerical number, higher the priority
+
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - jobSubmissionProtocol
+   - priorityOrder
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, None, ), # 1
+    (2, TType.I32, 'jobSubmissionProtocol', None, None, ), # 2
+    (3, TType.I32, 'priorityOrder', None, 0, ), # 3
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=None, jobSubmissionProtocol=None, priorityOrder=thrift_spec[3][4],):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.jobSubmissionProtocol = jobSubmissionProtocol
+    self.priorityOrder = priorityOrder
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.jobSubmissionProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.priorityOrder = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobSubmissionInterface')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.jobSubmissionProtocol is not None:
+      oprot.writeFieldBegin('jobSubmissionProtocol', TType.I32, 2)
+      oprot.writeI32(self.jobSubmissionProtocol)
+      oprot.writeFieldEnd()
+    if self.priorityOrder is not None:
+      oprot.writeFieldBegin('priorityOrder', TType.I32, 3)
+      oprot.writeI32(self.priorityOrder)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.jobSubmissionProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionProtocol is unset!')
+    if self.priorityOrder is None:
+      raise TProtocol.TProtocolException(message='Required field priorityOrder is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.jobSubmissionProtocol)
+    value = (value * 31) ^ hash(self.priorityOrder)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataMovementInterface:
+  """
+  Data Movement Interfaces
+
+  dataMovementInterfaceId: The Data Movement Interface has to be previously registered and referenced here.
+
+  priorityOrder:
+   For resources with multiple interfaces, the priority order should be selected.
+    Lower the numerical number, higher the priority
+
+
+  Attributes:
+   - dataMovementInterfaceId
+   - dataMovementProtocol
+   - priorityOrder
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, None, ), # 1
+    (2, TType.I32, 'dataMovementProtocol', None, None, ), # 2
+    (3, TType.I32, 'priorityOrder', None, 0, ), # 3
+  )
+
+  def __init__(self, dataMovementInterfaceId=None, dataMovementProtocol=None, priorityOrder=thrift_spec[3][4],):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+    self.dataMovementProtocol = dataMovementProtocol
+    self.priorityOrder = priorityOrder
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.dataMovementProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.priorityOrder = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataMovementInterface')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    if self.dataMovementProtocol is not None:
+      oprot.writeFieldBegin('dataMovementProtocol', TType.I32, 2)
+      oprot.writeI32(self.dataMovementProtocol)
+      oprot.writeFieldEnd()
+    if self.priorityOrder is not None:
+      oprot.writeFieldBegin('priorityOrder', TType.I32, 3)
+      oprot.writeI32(self.priorityOrder)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    if self.dataMovementProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementProtocol is unset!')
+    if self.priorityOrder is None:
+      raise TProtocol.TProtocolException(message='Required field priorityOrder is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    value = (value * 31) ^ hash(self.dataMovementProtocol)
+    value = (value * 31) ^ hash(self.priorityOrder)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ComputeResourceDescription:
+  """
+  Computational Resource Description
+
+  computeResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource.
+
+  hostName:
+    Fully Qualified Host Name.
+
+  hostAliases:
+    Aliases if any.
+
+  ipAddress:
+    IP Addresses of the Resource.
+
+  resourceDescription:
+   A user friendly description of the resource.
+
+  JobSubmissionProtocols:
+   A computational resources may have one or more ways of submitting Jobs. This structure
+     will hold all available mechanisms to interact with the resource.
+   The key is the priority
+
+  DataMovementProtocol:
+   Option to specify a prefered data movement mechanism of the available options.
+
+  fileSystems:
+   Map of file systems type and the path.
+
+
+  Attributes:
+   - computeResourceId
+   - hostName
+   - hostAliases
+   - ipAddresses
+   - resourceDescription
+   - enabled
+   - batchQueues
+   - fileSystems
+   - jobSubmissionInterfaces
+   - dataMovementInterfaces
+   - maxMemoryPerNode
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'computeResourceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'hostName', None, None, ), # 2
+    (3, TType.LIST, 'hostAliases', (TType.STRING,None), None, ), # 3
+    (4, TType.LIST, 'ipAddresses', (TType.STRING,None), None, ), # 4
+    (5, TType.STRING, 'resourceDescription', None, None, ), # 5
+    (6, TType.BOOL, 'enabled', None, None, ), # 6
+    (7, TType.LIST, 'batchQueues', (TType.STRUCT,(BatchQueue, BatchQueue.thrift_spec)), None, ), # 7
+    (8, TType.MAP, 'fileSystems', (TType.I32,None,TType.STRING,None), None, ), # 8
+    (9, TType.LIST, 'jobSubmissionInterfaces', (TType.STRUCT,(JobSubmissionInterface, JobSubmissionInterface.thrift_spec)), None, ), # 9
+    (10, TType.LIST, 'dataMovementInterfaces', (TType.STRUCT,(DataMovementInterface, DataMovementInterface.thrift_spec)), None, ), # 10
+    (11, TType.I32, 'maxMemoryPerNode', None, None, ), # 11
+  )
+
+  def __init__(self, computeResourceId=thrift_spec[1][4], hostName=None, hostAliases=None, ipAddresses=None, resourceDescription=None, enabled=None, batchQueues=None, fileSystems=None, jobSubmissionInterfaces=None, dataMovementInterfaces=None, maxMemoryPerNode=None,):
+    self.computeResourceId = computeResourceId
+    self.hostName = hostName
+    self.hostAliases = hostAliases
+    self.ipAddresses = ipAddresses
+    self.resourceDescription = resourceDescription
+    self.enabled = enabled
+    self.batchQueues = batchQueues
+    self.fileSystems = fileSystems
+    self.jobSubmissionInterfaces = jobSubmissionInterfaces
+    self.dataMovementInterfaces = dataMovementInterfaces
+    self.maxMemoryPerNode = maxMemoryPerNode
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.computeResourceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.hostName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.LIST:
+          self.hostAliases = []
+          (_etype33, _size30) = iprot.readListBegin()
+          for _i34 in xrange(_size30):
+            _elem35 = iprot.readString();
+            self.hostAliases.append(_elem35)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.LIST:
+          self.ipAddresses = []
+          (_etype39, _size36) = iprot.readListBegin()
+          for _i40 in xrange(_size36):
+            _elem41 = iprot.readString();
+            self.ipAddresses.append(_elem41)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.resourceDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.BOOL:
+          self.enabled = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.batchQueues = []
+          (_etype45, _size42) = iprot.readListBegin()
+          for _i46 in xrange(_size42):
+            _elem47 = BatchQueue()
+            _elem47.read(iprot)
+            self.batchQueues.append(_elem47)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.MAP:
+          self.fileSystems = {}
+          (_ktype49, _vtype50, _size48 ) = iprot.readMapBegin()
+          for _i52 in xrange(_size48):
+            _key53 = iprot.readI32();
+            _val54 = iprot.readString();
+            self.fileSystems[_key53] = _val54
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.jobSubmissionInterfaces = []
+          (_etype58, _size55) = iprot.readListBegin()
+          for _i59 in xrange(_size55):
+            _elem60 = JobSubmissionInterface()
+            _elem60.read(iprot)
+            self.jobSubmissionInterfaces.append(_elem60)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.dataMovementInterfaces = []
+          (_etype64, _size61) = iprot.readListBegin()
+          for _i65 in xrange(_size61):
+            _elem66 = DataMovementInterface()
+            _elem66.read(iprot)
+            self.dataMovementInterfaces.append(_elem66)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.I32:
+          self.maxMemoryPerNode = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComputeResourceDescription')
+    if self.computeResourceId is not None:
+      oprot.writeFieldBegin('computeResourceId', TType.STRING, 1)
+      oprot.writeString(self.computeResourceId)
+      oprot.writeFieldEnd()
+    if self.hostName is not None:
+      oprot.writeFieldBegin('hostName', TType.STRING, 2)
+      oprot.writeString(self.hostName)
+      oprot.writeFieldEnd()
+    if self.hostAliases is not None:
+      oprot.writeFieldBegin('hostAliases', TType.LIST, 3)
+      oprot.writeListBegin(TType.STRING, len(self.hostAliases))
+      for iter67 in self.hostAliases:
+        oprot.writeString(iter67)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.ipAddresses is not None:
+      oprot.writeFieldBegin('ipAddresses', TType.LIST, 4)
+      oprot.writeListBegin(TType.STRING, len(self.ipAddresses))
+      for iter68 in self.ipAddresses:
+        oprot.writeString(iter68)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.resourceDescription is not None:
+      oprot.writeFieldBegin('resourceDescription', TType.STRING, 5)
+      oprot.writeString(self.resourceDescription)
+      oprot.writeFieldEnd()
+    if self.enabled is not None:
+      oprot.writeFieldBegin('enabled', TType.BOOL, 6)
+      oprot.writeBool(self.enabled)
+      oprot.writeFieldEnd()
+    if self.batchQueues is not None:
+      oprot.writeFieldBegin('batchQueues', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.batchQueues))
+      for iter69 in self.batchQueues:
+        iter69.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.fileSystems is not None:
+      oprot.writeFieldBegin('fileSystems', TType.MAP, 8)
+      oprot.writeMapBegin(TType.I32, TType.STRING, len(self.fileSystems))
+      for kiter70,viter71 in self.fileSystems.items():
+        oprot.writeI32(kiter70)
+        oprot.writeString(viter71)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.jobSubmissionInterfaces is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaces', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRUCT, len(self.jobSubmissionInterfaces))
+      for iter72 in self.jobSubmissionInterfaces:
+        iter72.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.dataMovementInterfaces is not None:
+      oprot.writeFieldBegin('dataMovementInterfaces', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.dataMovementInterfaces))
+      for iter73 in self.dataMovementInterfaces:
+        iter73.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.maxMemoryPerNode is not None:
+      oprot.writeFieldBegin('maxMemoryPerNode', TType.I32, 11)
+      oprot.writeI32(self.maxMemoryPerNode)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.computeResourceId is None:
+      raise TProtocol.TProtocolException(message='Required field computeResourceId is unset!')
+    if self.hostName is None:
+      raise TProtocol.TProtocolException(message='Required field hostName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.computeResourceId)
+    value = (value * 31) ^ hash(self.hostName)
+    value = (value * 31) ^ hash(self.hostAliases)
+    value = (value * 31) ^ hash(self.ipAddresses)
+    value = (value * 31) ^ hash(self.resourceDescription)
+    value = (value * 31) ^ hash(self.enabled)
+    value = (value * 31) ^ hash(self.batchQueues)
+    value = (value * 31) ^ hash(self.fileSystems)
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaces)
+    value = (value * 31) ^ hash(self.dataMovementInterfaces)
+    value = (value * 31) ^ hash(self.maxMemoryPerNode)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/ttypes.pyc
new file mode 100644
index 0000000..117fe80
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc
new file mode 100644
index 0000000..cb39d90
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[10/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.pyc
new file mode 100644
index 0000000..dc82372
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.py
new file mode 100644
index 0000000..32a9325
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.py
@@ -0,0 +1,167 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.data.movement.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class StorageResourceDescription:
+  """
+  Storage Resource Description
+
+  storageResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource.
+
+  hostName:
+    Fully Qualified Host Name.
+
+  storageResourceDescription:
+   A user friendly description of the resource.
+
+
+  DataMovementProtocol:
+   Option to specify a prefered data movement mechanism of the available options.
+
+
+
+  Attributes:
+   - storageResourceId
+   - hostName
+   - storageResourceDescription
+   - enabled
+   - dataMovementInterfaces
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'storageResourceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'hostName', None, None, ), # 2
+    (3, TType.STRING, 'storageResourceDescription', None, None, ), # 3
+    (4, TType.BOOL, 'enabled', None, None, ), # 4
+    (5, TType.LIST, 'dataMovementInterfaces', (TType.STRUCT,(apache.airavata.model.data.movement.ttypes.DataMovementInterface, apache.airavata.model.data.movement.ttypes.DataMovementInterface.thrift_spec)), None, ), # 5
+  )
+
+  def __init__(self, storageResourceId=thrift_spec[1][4], hostName=None, storageResourceDescription=None, enabled=None, dataMovementInterfaces=None,):
+    self.storageResourceId = storageResourceId
+    self.hostName = hostName
+    self.storageResourceDescription = storageResourceDescription
+    self.enabled = enabled
+    self.dataMovementInterfaces = dataMovementInterfaces
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.hostName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.storageResourceDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.BOOL:
+          self.enabled = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.LIST:
+          self.dataMovementInterfaces = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.data.movement.ttypes.DataMovementInterface()
+            _elem5.read(iprot)
+            self.dataMovementInterfaces.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('StorageResourceDescription')
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 1)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
+    if self.hostName is not None:
+      oprot.writeFieldBegin('hostName', TType.STRING, 2)
+      oprot.writeString(self.hostName)
+      oprot.writeFieldEnd()
+    if self.storageResourceDescription is not None:
+      oprot.writeFieldBegin('storageResourceDescription', TType.STRING, 3)
+      oprot.writeString(self.storageResourceDescription)
+      oprot.writeFieldEnd()
+    if self.enabled is not None:
+      oprot.writeFieldBegin('enabled', TType.BOOL, 4)
+      oprot.writeBool(self.enabled)
+      oprot.writeFieldEnd()
+    if self.dataMovementInterfaces is not None:
+      oprot.writeFieldBegin('dataMovementInterfaces', TType.LIST, 5)
+      oprot.writeListBegin(TType.STRUCT, len(self.dataMovementInterfaces))
+      for iter6 in self.dataMovementInterfaces:
+        iter6.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.storageResourceId is None:
+      raise TProtocol.TProtocolException(message='Required field storageResourceId is unset!')
+    if self.hostName is None:
+      raise TProtocol.TProtocolException(message='Required field hostName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.storageResourceId)
+    value = (value * 31) ^ hash(self.hostName)
+    value = (value * 31) ^ hash(self.storageResourceDescription)
+    value = (value * 31) ^ hash(self.enabled)
+    value = (value * 31) ^ hash(self.dataMovementInterfaces)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.pyc
new file mode 100644
index 0000000..3cb2bed
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.pyc
new file mode 100644
index 0000000..b806d59
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.pyc
new file mode 100644
index 0000000..eb40934
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.py
new file mode 100644
index 0000000..3b255a5
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.py
@@ -0,0 +1,510 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.appcatalog.computeresource.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class DataType:
+  """
+  Data Types supported in Airavata. The primitive data types
+
+  """
+  STRING = 0
+  INTEGER = 1
+  FLOAT = 2
+  URI = 3
+  URI_COLLECTION = 4
+  STDOUT = 5
+  STDERR = 6
+
+  _VALUES_TO_NAMES = {
+    0: "STRING",
+    1: "INTEGER",
+    2: "FLOAT",
+    3: "URI",
+    4: "URI_COLLECTION",
+    5: "STDOUT",
+    6: "STDERR",
+  }
+
+  _NAMES_TO_VALUES = {
+    "STRING": 0,
+    "INTEGER": 1,
+    "FLOAT": 2,
+    "URI": 3,
+    "URI_COLLECTION": 4,
+    "STDOUT": 5,
+    "STDERR": 6,
+  }
+
+
+class InputDataObjectType:
+  """
+  Application Inputs. The paramters describe how inputs are passed to the application.
+
+  name:
+    Name of the parameter.
+
+  value:
+    Value of the parameter. A default value could be set during registration.
+
+  type:
+    Data type of the parameter
+
+  applicationArguement:
+    The argument flag sent to the application. Such as -p pressure.
+
+  standardInput:
+    When this value is set, the parameter is sent as standard input rather than a parameter.
+    Typically this is passed using redirection operator ">".
+
+  userFriendlyDescription:
+    Description to be displayed at the user interface.
+
+  metaData:
+    Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
+
+
+  Attributes:
+   - name
+   - value
+   - type
+   - applicationArgument
+   - standardInput
+   - userFriendlyDescription
+   - metaData
+   - inputOrder
+   - isRequired
+   - requiredToAddedToCommandLine
+   - dataStaged
+   - storageResourceId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'name', None, None, ), # 1
+    (2, TType.STRING, 'value', None, None, ), # 2
+    (3, TType.I32, 'type', None, None, ), # 3
+    (4, TType.STRING, 'applicationArgument', None, None, ), # 4
+    (5, TType.BOOL, 'standardInput', None, None, ), # 5
+    (6, TType.STRING, 'userFriendlyDescription', None, None, ), # 6
+    (7, TType.STRING, 'metaData', None, None, ), # 7
+    (8, TType.I32, 'inputOrder', None, None, ), # 8
+    (9, TType.BOOL, 'isRequired', None, None, ), # 9
+    (10, TType.BOOL, 'requiredToAddedToCommandLine', None, None, ), # 10
+    (11, TType.BOOL, 'dataStaged', None, None, ), # 11
+    (12, TType.STRING, 'storageResourceId', None, None, ), # 12
+  )
+
+  def __init__(self, name=None, value=None, type=None, applicationArgument=None, standardInput=None, userFriendlyDescription=None, metaData=None, inputOrder=None, isRequired=None, requiredToAddedToCommandLine=None, dataStaged=None, storageResourceId=None,):
+    self.name = name
+    self.value = value
+    self.type = type
+    self.applicationArgument = applicationArgument
+    self.standardInput = standardInput
+    self.userFriendlyDescription = userFriendlyDescription
+    self.metaData = metaData
+    self.inputOrder = inputOrder
+    self.isRequired = isRequired
+    self.requiredToAddedToCommandLine = requiredToAddedToCommandLine
+    self.dataStaged = dataStaged
+    self.storageResourceId = storageResourceId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.value = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.type = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.applicationArgument = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.standardInput = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.userFriendlyDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.metaData = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.inputOrder = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.BOOL:
+          self.isRequired = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.BOOL:
+          self.requiredToAddedToCommandLine = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.BOOL:
+          self.dataStaged = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('InputDataObjectType')
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 1)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.value is not None:
+      oprot.writeFieldBegin('value', TType.STRING, 2)
+      oprot.writeString(self.value)
+      oprot.writeFieldEnd()
+    if self.type is not None:
+      oprot.writeFieldBegin('type', TType.I32, 3)
+      oprot.writeI32(self.type)
+      oprot.writeFieldEnd()
+    if self.applicationArgument is not None:
+      oprot.writeFieldBegin('applicationArgument', TType.STRING, 4)
+      oprot.writeString(self.applicationArgument)
+      oprot.writeFieldEnd()
+    if self.standardInput is not None:
+      oprot.writeFieldBegin('standardInput', TType.BOOL, 5)
+      oprot.writeBool(self.standardInput)
+      oprot.writeFieldEnd()
+    if self.userFriendlyDescription is not None:
+      oprot.writeFieldBegin('userFriendlyDescription', TType.STRING, 6)
+      oprot.writeString(self.userFriendlyDescription)
+      oprot.writeFieldEnd()
+    if self.metaData is not None:
+      oprot.writeFieldBegin('metaData', TType.STRING, 7)
+      oprot.writeString(self.metaData)
+      oprot.writeFieldEnd()
+    if self.inputOrder is not None:
+      oprot.writeFieldBegin('inputOrder', TType.I32, 8)
+      oprot.writeI32(self.inputOrder)
+      oprot.writeFieldEnd()
+    if self.isRequired is not None:
+      oprot.writeFieldBegin('isRequired', TType.BOOL, 9)
+      oprot.writeBool(self.isRequired)
+      oprot.writeFieldEnd()
+    if self.requiredToAddedToCommandLine is not None:
+      oprot.writeFieldBegin('requiredToAddedToCommandLine', TType.BOOL, 10)
+      oprot.writeBool(self.requiredToAddedToCommandLine)
+      oprot.writeFieldEnd()
+    if self.dataStaged is not None:
+      oprot.writeFieldBegin('dataStaged', TType.BOOL, 11)
+      oprot.writeBool(self.dataStaged)
+      oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 12)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.type)
+    value = (value * 31) ^ hash(self.applicationArgument)
+    value = (value * 31) ^ hash(self.standardInput)
+    value = (value * 31) ^ hash(self.userFriendlyDescription)
+    value = (value * 31) ^ hash(self.metaData)
+    value = (value * 31) ^ hash(self.inputOrder)
+    value = (value * 31) ^ hash(self.isRequired)
+    value = (value * 31) ^ hash(self.requiredToAddedToCommandLine)
+    value = (value * 31) ^ hash(self.dataStaged)
+    value = (value * 31) ^ hash(self.storageResourceId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class OutputDataObjectType:
+  """
+  Application Outputs. The paramters describe how outputs generated by the application.
+
+  name:
+    Name of the parameter.
+
+  value:
+    Value of the parameter.
+
+  type:
+    Data type of the parameter
+
+  applicationArguement:
+    The argument flag sent to the application. Such as -p pressure.
+
+  standardInput:
+    When this value is set, the parameter is sent as standard input rather than a parameter.
+    Typically this is passed using redirection operator ">".
+
+  userFriendlyDescription:
+    Description to be displayed at the user interface.
+
+  metaData:
+    Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
+
+
+  Attributes:
+   - name
+   - value
+   - type
+   - applicationArgument
+   - isRequired
+   - requiredToAddedToCommandLine
+   - dataMovement
+   - location
+   - searchQuery
+   - outputStreaming
+   - storageResourceId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'name', None, None, ), # 1
+    (2, TType.STRING, 'value', None, None, ), # 2
+    (3, TType.I32, 'type', None, None, ), # 3
+    (4, TType.STRING, 'applicationArgument', None, None, ), # 4
+    (5, TType.BOOL, 'isRequired', None, None, ), # 5
+    (6, TType.BOOL, 'requiredToAddedToCommandLine', None, None, ), # 6
+    (7, TType.BOOL, 'dataMovement', None, None, ), # 7
+    (8, TType.STRING, 'location', None, None, ), # 8
+    (9, TType.STRING, 'searchQuery', None, None, ), # 9
+    (10, TType.BOOL, 'outputStreaming', None, None, ), # 10
+    (11, TType.STRING, 'storageResourceId', None, None, ), # 11
+  )
+
+  def __init__(self, name=None, value=None, type=None, applicationArgument=None, isRequired=None, requiredToAddedToCommandLine=None, dataMovement=None, location=None, searchQuery=None, outputStreaming=None, storageResourceId=None,):
+    self.name = name
+    self.value = value
+    self.type = type
+    self.applicationArgument = applicationArgument
+    self.isRequired = isRequired
+    self.requiredToAddedToCommandLine = requiredToAddedToCommandLine
+    self.dataMovement = dataMovement
+    self.location = location
+    self.searchQuery = searchQuery
+    self.outputStreaming = outputStreaming
+    self.storageResourceId = storageResourceId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.value = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.type = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.applicationArgument = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.isRequired = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.BOOL:
+          self.requiredToAddedToCommandLine = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.BOOL:
+          self.dataMovement = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.location = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.searchQuery = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.BOOL:
+          self.outputStreaming = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('OutputDataObjectType')
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 1)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.value is not None:
+      oprot.writeFieldBegin('value', TType.STRING, 2)
+      oprot.writeString(self.value)
+      oprot.writeFieldEnd()
+    if self.type is not None:
+      oprot.writeFieldBegin('type', TType.I32, 3)
+      oprot.writeI32(self.type)
+      oprot.writeFieldEnd()
+    if self.applicationArgument is not None:
+      oprot.writeFieldBegin('applicationArgument', TType.STRING, 4)
+      oprot.writeString(self.applicationArgument)
+      oprot.writeFieldEnd()
+    if self.isRequired is not None:
+      oprot.writeFieldBegin('isRequired', TType.BOOL, 5)
+      oprot.writeBool(self.isRequired)
+      oprot.writeFieldEnd()
+    if self.requiredToAddedToCommandLine is not None:
+      oprot.writeFieldBegin('requiredToAddedToCommandLine', TType.BOOL, 6)
+      oprot.writeBool(self.requiredToAddedToCommandLine)
+      oprot.writeFieldEnd()
+    if self.dataMovement is not None:
+      oprot.writeFieldBegin('dataMovement', TType.BOOL, 7)
+      oprot.writeBool(self.dataMovement)
+      oprot.writeFieldEnd()
+    if self.location is not None:
+      oprot.writeFieldBegin('location', TType.STRING, 8)
+      oprot.writeString(self.location)
+      oprot.writeFieldEnd()
+    if self.searchQuery is not None:
+      oprot.writeFieldBegin('searchQuery', TType.STRING, 9)
+      oprot.writeString(self.searchQuery)
+      oprot.writeFieldEnd()
+    if self.outputStreaming is not None:
+      oprot.writeFieldBegin('outputStreaming', TType.BOOL, 10)
+      oprot.writeBool(self.outputStreaming)
+      oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 11)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.type)
+    value = (value * 31) ^ hash(self.applicationArgument)
+    value = (value * 31) ^ hash(self.isRequired)
+    value = (value * 31) ^ hash(self.requiredToAddedToCommandLine)
+    value = (value * 31) ^ hash(self.dataMovement)
+    value = (value * 31) ^ hash(self.location)
+    value = (value * 31) ^ hash(self.searchQuery)
+    value = (value * 31) ^ hash(self.outputStreaming)
+    value = (value * 31) ^ hash(self.storageResourceId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.pyc
new file mode 100644
index 0000000..ad38d28
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/application/io/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.pyc
new file mode 100644
index 0000000..78b00cc
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/constants.py
new file mode 100644
index 0000000..abf8bc6
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/constants.py
@@ -0,0 +1,12 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+
+DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.py
new file mode 100644
index 0000000..21ec7e0
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.py
@@ -0,0 +1,335 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ErrorModel:
+  """
+  Attributes:
+   - errorId
+   - creationTime
+   - actualErrorMessage
+   - userFriendlyMessage
+   - transientOrPersistent
+   - rootCauseErrorIdList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'errorId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'actualErrorMessage', None, None, ), # 3
+    (4, TType.STRING, 'userFriendlyMessage', None, None, ), # 4
+    (5, TType.BOOL, 'transientOrPersistent', None, False, ), # 5
+    (6, TType.LIST, 'rootCauseErrorIdList', (TType.STRING,None), None, ), # 6
+  )
+
+  def __init__(self, errorId=thrift_spec[1][4], creationTime=None, actualErrorMessage=None, userFriendlyMessage=None, transientOrPersistent=thrift_spec[5][4], rootCauseErrorIdList=None,):
+    self.errorId = errorId
+    self.creationTime = creationTime
+    self.actualErrorMessage = actualErrorMessage
+    self.userFriendlyMessage = userFriendlyMessage
+    self.transientOrPersistent = transientOrPersistent
+    self.rootCauseErrorIdList = rootCauseErrorIdList
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.errorId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.actualErrorMessage = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.userFriendlyMessage = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.transientOrPersistent = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.rootCauseErrorIdList = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString()
+            self.rootCauseErrorIdList.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ErrorModel')
+    if self.errorId is not None:
+      oprot.writeFieldBegin('errorId', TType.STRING, 1)
+      oprot.writeString(self.errorId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.actualErrorMessage is not None:
+      oprot.writeFieldBegin('actualErrorMessage', TType.STRING, 3)
+      oprot.writeString(self.actualErrorMessage)
+      oprot.writeFieldEnd()
+    if self.userFriendlyMessage is not None:
+      oprot.writeFieldBegin('userFriendlyMessage', TType.STRING, 4)
+      oprot.writeString(self.userFriendlyMessage)
+      oprot.writeFieldEnd()
+    if self.transientOrPersistent is not None:
+      oprot.writeFieldBegin('transientOrPersistent', TType.BOOL, 5)
+      oprot.writeBool(self.transientOrPersistent)
+      oprot.writeFieldEnd()
+    if self.rootCauseErrorIdList is not None:
+      oprot.writeFieldBegin('rootCauseErrorIdList', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRING, len(self.rootCauseErrorIdList))
+      for iter6 in self.rootCauseErrorIdList:
+        oprot.writeString(iter6)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.errorId is None:
+      raise TProtocol.TProtocolException(message='Required field errorId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.errorId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.actualErrorMessage)
+    value = (value * 31) ^ hash(self.userFriendlyMessage)
+    value = (value * 31) ^ hash(self.transientOrPersistent)
+    value = (value * 31) ^ hash(self.rootCauseErrorIdList)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ValidatorResult:
+  """
+  This data structure can be used to store the validation results
+  captured during validation step and during the launchExperiment
+  operation it can be easilly checked to see the errors occured
+  during the experiment launch operation
+
+
+  Attributes:
+   - result
+   - errorDetails
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'result', None, None, ), # 1
+    (2, TType.STRING, 'errorDetails', None, None, ), # 2
+  )
+
+  def __init__(self, result=None, errorDetails=None,):
+    self.result = result
+    self.errorDetails = errorDetails
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.result = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.errorDetails = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ValidatorResult')
+    if self.result is not None:
+      oprot.writeFieldBegin('result', TType.BOOL, 1)
+      oprot.writeBool(self.result)
+      oprot.writeFieldEnd()
+    if self.errorDetails is not None:
+      oprot.writeFieldBegin('errorDetails', TType.STRING, 2)
+      oprot.writeString(self.errorDetails)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.result is None:
+      raise TProtocol.TProtocolException(message='Required field result is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.result)
+    value = (value * 31) ^ hash(self.errorDetails)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ValidationResults:
+  """
+  Attributes:
+   - validationState
+   - validationResultList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'validationState', None, None, ), # 1
+    (2, TType.LIST, 'validationResultList', (TType.STRUCT,(ValidatorResult, ValidatorResult.thrift_spec)), None, ), # 2
+  )
+
+  def __init__(self, validationState=None, validationResultList=None,):
+    self.validationState = validationState
+    self.validationResultList = validationResultList
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.validationState = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.LIST:
+          self.validationResultList = []
+          (_etype10, _size7) = iprot.readListBegin()
+          for _i11 in xrange(_size7):
+            _elem12 = ValidatorResult()
+            _elem12.read(iprot)
+            self.validationResultList.append(_elem12)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ValidationResults')
+    if self.validationState is not None:
+      oprot.writeFieldBegin('validationState', TType.BOOL, 1)
+      oprot.writeBool(self.validationState)
+      oprot.writeFieldEnd()
+    if self.validationResultList is not None:
+      oprot.writeFieldBegin('validationResultList', TType.LIST, 2)
+      oprot.writeListBegin(TType.STRUCT, len(self.validationResultList))
+      for iter13 in self.validationResultList:
+        iter13.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.validationState is None:
+      raise TProtocol.TProtocolException(message='Required field validationState is unset!')
+    if self.validationResultList is None:
+      raise TProtocol.TProtocolException(message='Required field validationResultList is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.validationState)
+    value = (value * 31) ^ hash(self.validationResultList)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.pyc
new file mode 100644
index 0000000..1b27961
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/commons/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.pyc
new file mode 100644
index 0000000..6a02e2f
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.pyc
new file mode 100644
index 0000000..b4638db
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.py
new file mode 100644
index 0000000..01e5c45
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.py
@@ -0,0 +1,625 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class DMType:
+  COMPUTE_RESOURCE = 0
+  STORAGE_RESOURCE = 1
+
+  _VALUES_TO_NAMES = {
+    0: "COMPUTE_RESOURCE",
+    1: "STORAGE_RESOURCE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "COMPUTE_RESOURCE": 0,
+    "STORAGE_RESOURCE": 1,
+  }
+
+class SecurityProtocol:
+  """
+  Enumeration of security sshKeyAuthentication 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
+
+  """
+  USERNAME_PASSWORD = 0
+  SSH_KEYS = 1
+  GSI = 2
+  KERBEROS = 3
+  OAUTH = 4
+  LOCAL = 5
+
+  _VALUES_TO_NAMES = {
+    0: "USERNAME_PASSWORD",
+    1: "SSH_KEYS",
+    2: "GSI",
+    3: "KERBEROS",
+    4: "OAUTH",
+    5: "LOCAL",
+  }
+
+  _NAMES_TO_VALUES = {
+    "USERNAME_PASSWORD": 0,
+    "SSH_KEYS": 1,
+    "GSI": 2,
+    "KERBEROS": 3,
+    "OAUTH": 4,
+    "LOCAL": 5,
+  }
+
+class DataMovementProtocol:
+  """
+  Enumeration of data movement supported by Airavata
+
+  SCP:
+   Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+
+  SFTP:
+   The Simple Linux Utility for Resource Management is a open source workload manager.
+
+  GridFTP:
+   Globus File Transfer Protocol
+
+  UNICORE_STORAGE_SERVICE:
+   Storage Service Provided by Unicore
+
+  """
+  LOCAL = 0
+  SCP = 1
+  SFTP = 2
+  GridFTP = 3
+  UNICORE_STORAGE_SERVICE = 4
+
+  _VALUES_TO_NAMES = {
+    0: "LOCAL",
+    1: "SCP",
+    2: "SFTP",
+    3: "GridFTP",
+    4: "UNICORE_STORAGE_SERVICE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "LOCAL": 0,
+    "SCP": 1,
+    "SFTP": 2,
+    "GridFTP": 3,
+    "UNICORE_STORAGE_SERVICE": 4,
+  }
+
+
+class SCPDataMovement:
+  """
+  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.
+
+  Attributes:
+   - dataMovementInterfaceId
+   - securityProtocol
+   - alternativeSCPHostName
+   - sshPort
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRING, 'alternativeSCPHostName', None, None, ), # 3
+    (4, TType.I32, 'sshPort', None, 22, ), # 4
+  )
+
+  def __init__(self, dataMovementInterfaceId=thrift_spec[1][4], securityProtocol=None, alternativeSCPHostName=None, sshPort=thrift_spec[4][4],):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+    self.securityProtocol = securityProtocol
+    self.alternativeSCPHostName = alternativeSCPHostName
+    self.sshPort = sshPort
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.alternativeSCPHostName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.sshPort = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('SCPDataMovement')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.alternativeSCPHostName is not None:
+      oprot.writeFieldBegin('alternativeSCPHostName', TType.STRING, 3)
+      oprot.writeString(self.alternativeSCPHostName)
+      oprot.writeFieldEnd()
+    if self.sshPort is not None:
+      oprot.writeFieldBegin('sshPort', TType.I32, 4)
+      oprot.writeI32(self.sshPort)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.alternativeSCPHostName)
+    value = (value * 31) ^ hash(self.sshPort)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class GridFTPDataMovement:
+  """
+  Data Movement through GridFTP
+
+  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.
+
+  Attributes:
+   - dataMovementInterfaceId
+   - securityProtocol
+   - gridFTPEndPoints
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.LIST, 'gridFTPEndPoints', (TType.STRING,None), None, ), # 3
+  )
+
+  def __init__(self, dataMovementInterfaceId=thrift_spec[1][4], securityProtocol=None, gridFTPEndPoints=None,):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+    self.securityProtocol = securityProtocol
+    self.gridFTPEndPoints = gridFTPEndPoints
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.LIST:
+          self.gridFTPEndPoints = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString()
+            self.gridFTPEndPoints.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('GridFTPDataMovement')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.gridFTPEndPoints is not None:
+      oprot.writeFieldBegin('gridFTPEndPoints', TType.LIST, 3)
+      oprot.writeListBegin(TType.STRING, len(self.gridFTPEndPoints))
+      for iter6 in self.gridFTPEndPoints:
+        oprot.writeString(iter6)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.gridFTPEndPoints is None:
+      raise TProtocol.TProtocolException(message='Required field gridFTPEndPoints is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.gridFTPEndPoints)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class UnicoreDataMovement:
+  """
+  Data Movement through UnicoreStorage
+
+  unicoreEndPointURL:
+   unicoreGateway End Point. The provider will query this service to fetch required service end points.
+
+  Attributes:
+   - dataMovementInterfaceId
+   - securityProtocol
+   - unicoreEndPointURL
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRING, 'unicoreEndPointURL', None, None, ), # 3
+  )
+
+  def __init__(self, dataMovementInterfaceId=thrift_spec[1][4], securityProtocol=None, unicoreEndPointURL=None,):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+    self.securityProtocol = securityProtocol
+    self.unicoreEndPointURL = unicoreEndPointURL
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.unicoreEndPointURL = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UnicoreDataMovement')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.unicoreEndPointURL is not None:
+      oprot.writeFieldBegin('unicoreEndPointURL', TType.STRING, 3)
+      oprot.writeString(self.unicoreEndPointURL)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.unicoreEndPointURL is None:
+      raise TProtocol.TProtocolException(message='Required field unicoreEndPointURL is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.unicoreEndPointURL)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class LOCALDataMovement:
+  """
+  LOCAL
+
+  alternativeSCPHostName:
+   If the login to scp is different than the hostname itself, specify it here
+
+  sshPort:
+   If a non-defualt port needs to used, specify it.
+
+  Attributes:
+   - dataMovementInterfaceId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+  )
+
+  def __init__(self, dataMovementInterfaceId=thrift_spec[1][4],):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('LOCALDataMovement')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataMovementInterface:
+  """
+  Data Movement Interfaces
+
+  dataMovementInterfaceId: The Data Movement Interface has to be previously registered and referenced here.
+
+  priorityOrder:
+   For resources with multiple interfaces, the priority order should be selected.
+    Lower the numerical number, higher the priority
+
+
+  Attributes:
+   - dataMovementInterfaceId
+   - dataMovementProtocol
+   - priorityOrder
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovementInterfaceId', None, None, ), # 1
+    (2, TType.I32, 'dataMovementProtocol', None, None, ), # 2
+    (3, TType.I32, 'priorityOrder', None, 0, ), # 3
+  )
+
+  def __init__(self, dataMovementInterfaceId=None, dataMovementProtocol=None, priorityOrder=thrift_spec[3][4],):
+    self.dataMovementInterfaceId = dataMovementInterfaceId
+    self.dataMovementProtocol = dataMovementProtocol
+    self.priorityOrder = priorityOrder
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovementInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.dataMovementProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.priorityOrder = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataMovementInterface')
+    if self.dataMovementInterfaceId is not None:
+      oprot.writeFieldBegin('dataMovementInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovementInterfaceId)
+      oprot.writeFieldEnd()
+    if self.dataMovementProtocol is not None:
+      oprot.writeFieldBegin('dataMovementProtocol', TType.I32, 2)
+      oprot.writeI32(self.dataMovementProtocol)
+      oprot.writeFieldEnd()
+    if self.priorityOrder is not None:
+      oprot.writeFieldBegin('priorityOrder', TType.I32, 3)
+      oprot.writeI32(self.priorityOrder)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovementInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementInterfaceId is unset!')
+    if self.dataMovementProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovementProtocol is unset!')
+    if self.priorityOrder is None:
+      raise TProtocol.TProtocolException(message='Required field priorityOrder is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovementInterfaceId)
+    value = (value * 31) ^ hash(self.dataMovementProtocol)
+    value = (value * 31) ^ hash(self.priorityOrder)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.pyc
new file mode 100644
index 0000000..12a05dd
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/movement/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[19/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
adding jupyter note books for Airavata


Project: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/commit/69c259de
Tree: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/tree/69c259de
Diff: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/diff/69c259de

Branch: refs/heads/master
Commit: 69c259de8e868cf17a80e98deb70919a6736821a
Parents: 75eb96c
Author: Pradyut Madhavaram <pr...@gmail.com>
Authored: Fri Aug 5 11:41:18 2016 -0400
Committer: Pradyut Madhavaram <pr...@gmail.com>
Committed: Fri Aug 5 11:41:18 2016 -0400

----------------------------------------------------------------------
 .../Admin-User/Admin User.ipynb                 | 799 +++++++++++++++++++
 1 file changed, 799 insertions(+)
----------------------------------------------------------------------



[09/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/ttypes.py
new file mode 100644
index 0000000..271b9c0
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/product/ttypes.py
@@ -0,0 +1,549 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ReplicaLocationCategory:
+  GATEWAY_DATA_STORE = 0
+  COMPUTE_RESOURCE = 1
+  LONG_TERM_STORAGE_RESOURCE = 2
+  OTHER = 3
+
+  _VALUES_TO_NAMES = {
+    0: "GATEWAY_DATA_STORE",
+    1: "COMPUTE_RESOURCE",
+    2: "LONG_TERM_STORAGE_RESOURCE",
+    3: "OTHER",
+  }
+
+  _NAMES_TO_VALUES = {
+    "GATEWAY_DATA_STORE": 0,
+    "COMPUTE_RESOURCE": 1,
+    "LONG_TERM_STORAGE_RESOURCE": 2,
+    "OTHER": 3,
+  }
+
+class ReplicaPersistentType:
+  TRANSIENT = 0
+  PERSISTENT = 1
+
+  _VALUES_TO_NAMES = {
+    0: "TRANSIENT",
+    1: "PERSISTENT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "TRANSIENT": 0,
+    "PERSISTENT": 1,
+  }
+
+class DataProductType:
+  DIR = 0
+  FILE = 1
+  COLLECTION = 2
+
+  _VALUES_TO_NAMES = {
+    0: "DIR",
+    1: "FILE",
+    2: "COLLECTION",
+  }
+
+  _NAMES_TO_VALUES = {
+    "DIR": 0,
+    "FILE": 1,
+    "COLLECTION": 2,
+  }
+
+
+class DataProductModel:
+  """
+  Attributes:
+   - productUri
+   - gatewayId
+   - parentProductUri
+   - logicalPath
+   - productName
+   - productDescription
+   - ownerName
+   - dataProductType
+   - productSize
+   - creationTime
+   - lastModifiedTime
+   - productMetadata
+   - replicaLocations
+   - childProducts
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'productUri', None, None, ), # 1
+    (2, TType.STRING, 'gatewayId', None, None, ), # 2
+    (3, TType.STRING, 'parentProductUri', None, None, ), # 3
+    (4, TType.STRING, 'logicalPath', None, None, ), # 4
+    (5, TType.STRING, 'productName', None, None, ), # 5
+    (6, TType.STRING, 'productDescription', None, None, ), # 6
+    (7, TType.STRING, 'ownerName', None, None, ), # 7
+    (8, TType.I32, 'dataProductType', None, None, ), # 8
+    (9, TType.I32, 'productSize', None, None, ), # 9
+    (10, TType.I64, 'creationTime', None, None, ), # 10
+    (11, TType.I64, 'lastModifiedTime', None, None, ), # 11
+    (12, TType.MAP, 'productMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 12
+    (13, TType.LIST, 'replicaLocations', (TType.STRUCT,(DataReplicaLocationModel, DataReplicaLocationModel.thrift_spec)), None, ), # 13
+    (14, TType.LIST, 'childProducts', (TType.STRUCT,(DataProductModel, DataProductModel.thrift_spec)), None, ), # 14
+  )
+
+  def __init__(self, productUri=None, gatewayId=None, parentProductUri=None, logicalPath=None, productName=None, productDescription=None, ownerName=None, dataProductType=None, productSize=None, creationTime=None, lastModifiedTime=None, productMetadata=None, replicaLocations=None, childProducts=None,):
+    self.productUri = productUri
+    self.gatewayId = gatewayId
+    self.parentProductUri = parentProductUri
+    self.logicalPath = logicalPath
+    self.productName = productName
+    self.productDescription = productDescription
+    self.ownerName = ownerName
+    self.dataProductType = dataProductType
+    self.productSize = productSize
+    self.creationTime = creationTime
+    self.lastModifiedTime = lastModifiedTime
+    self.productMetadata = productMetadata
+    self.replicaLocations = replicaLocations
+    self.childProducts = childProducts
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.productUri = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.parentProductUri = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.logicalPath = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.productName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.productDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.ownerName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.dataProductType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I32:
+          self.productSize = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.I64:
+          self.lastModifiedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.MAP:
+          self.productMetadata = {}
+          (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
+          for _i4 in xrange(_size0):
+            _key5 = iprot.readString()
+            _val6 = iprot.readString()
+            self.productMetadata[_key5] = _val6
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.LIST:
+          self.replicaLocations = []
+          (_etype10, _size7) = iprot.readListBegin()
+          for _i11 in xrange(_size7):
+            _elem12 = DataReplicaLocationModel()
+            _elem12.read(iprot)
+            self.replicaLocations.append(_elem12)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.LIST:
+          self.childProducts = []
+          (_etype16, _size13) = iprot.readListBegin()
+          for _i17 in xrange(_size13):
+            _elem18 = DataProductModel()
+            _elem18.read(iprot)
+            self.childProducts.append(_elem18)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataProductModel')
+    if self.productUri is not None:
+      oprot.writeFieldBegin('productUri', TType.STRING, 1)
+      oprot.writeString(self.productUri)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.parentProductUri is not None:
+      oprot.writeFieldBegin('parentProductUri', TType.STRING, 3)
+      oprot.writeString(self.parentProductUri)
+      oprot.writeFieldEnd()
+    if self.logicalPath is not None:
+      oprot.writeFieldBegin('logicalPath', TType.STRING, 4)
+      oprot.writeString(self.logicalPath)
+      oprot.writeFieldEnd()
+    if self.productName is not None:
+      oprot.writeFieldBegin('productName', TType.STRING, 5)
+      oprot.writeString(self.productName)
+      oprot.writeFieldEnd()
+    if self.productDescription is not None:
+      oprot.writeFieldBegin('productDescription', TType.STRING, 6)
+      oprot.writeString(self.productDescription)
+      oprot.writeFieldEnd()
+    if self.ownerName is not None:
+      oprot.writeFieldBegin('ownerName', TType.STRING, 7)
+      oprot.writeString(self.ownerName)
+      oprot.writeFieldEnd()
+    if self.dataProductType is not None:
+      oprot.writeFieldBegin('dataProductType', TType.I32, 8)
+      oprot.writeI32(self.dataProductType)
+      oprot.writeFieldEnd()
+    if self.productSize is not None:
+      oprot.writeFieldBegin('productSize', TType.I32, 9)
+      oprot.writeI32(self.productSize)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 10)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastModifiedTime is not None:
+      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 11)
+      oprot.writeI64(self.lastModifiedTime)
+      oprot.writeFieldEnd()
+    if self.productMetadata is not None:
+      oprot.writeFieldBegin('productMetadata', TType.MAP, 12)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.productMetadata))
+      for kiter19,viter20 in self.productMetadata.items():
+        oprot.writeString(kiter19)
+        oprot.writeString(viter20)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.replicaLocations is not None:
+      oprot.writeFieldBegin('replicaLocations', TType.LIST, 13)
+      oprot.writeListBegin(TType.STRUCT, len(self.replicaLocations))
+      for iter21 in self.replicaLocations:
+        iter21.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.childProducts is not None:
+      oprot.writeFieldBegin('childProducts', TType.LIST, 14)
+      oprot.writeListBegin(TType.STRUCT, len(self.childProducts))
+      for iter22 in self.childProducts:
+        iter22.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.productUri)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.parentProductUri)
+    value = (value * 31) ^ hash(self.logicalPath)
+    value = (value * 31) ^ hash(self.productName)
+    value = (value * 31) ^ hash(self.productDescription)
+    value = (value * 31) ^ hash(self.ownerName)
+    value = (value * 31) ^ hash(self.dataProductType)
+    value = (value * 31) ^ hash(self.productSize)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastModifiedTime)
+    value = (value * 31) ^ hash(self.productMetadata)
+    value = (value * 31) ^ hash(self.replicaLocations)
+    value = (value * 31) ^ hash(self.childProducts)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataReplicaLocationModel:
+  """
+  Attributes:
+   - replicaId
+   - productUri
+   - replicaName
+   - replicaDescription
+   - creationTime
+   - lastModifiedTime
+   - validUntilTime
+   - replicaLocationCategory
+   - replicaPersistentType
+   - storageResourceId
+   - filePath
+   - replicaMetadata
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'replicaId', None, None, ), # 1
+    (2, TType.STRING, 'productUri', None, None, ), # 2
+    (3, TType.STRING, 'replicaName', None, None, ), # 3
+    (4, TType.STRING, 'replicaDescription', None, None, ), # 4
+    (5, TType.I64, 'creationTime', None, None, ), # 5
+    (6, TType.I64, 'lastModifiedTime', None, None, ), # 6
+    (7, TType.I64, 'validUntilTime', None, None, ), # 7
+    (8, TType.I32, 'replicaLocationCategory', None, None, ), # 8
+    (9, TType.I32, 'replicaPersistentType', None, None, ), # 9
+    (10, TType.STRING, 'storageResourceId', None, None, ), # 10
+    (11, TType.STRING, 'filePath', None, None, ), # 11
+    (12, TType.MAP, 'replicaMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 12
+  )
+
+  def __init__(self, replicaId=None, productUri=None, replicaName=None, replicaDescription=None, creationTime=None, lastModifiedTime=None, validUntilTime=None, replicaLocationCategory=None, replicaPersistentType=None, storageResourceId=None, filePath=None, replicaMetadata=None,):
+    self.replicaId = replicaId
+    self.productUri = productUri
+    self.replicaName = replicaName
+    self.replicaDescription = replicaDescription
+    self.creationTime = creationTime
+    self.lastModifiedTime = lastModifiedTime
+    self.validUntilTime = validUntilTime
+    self.replicaLocationCategory = replicaLocationCategory
+    self.replicaPersistentType = replicaPersistentType
+    self.storageResourceId = storageResourceId
+    self.filePath = filePath
+    self.replicaMetadata = replicaMetadata
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.replicaId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.productUri = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.replicaName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.replicaDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I64:
+          self.lastModifiedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I64:
+          self.validUntilTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.replicaLocationCategory = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I32:
+          self.replicaPersistentType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.filePath = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.MAP:
+          self.replicaMetadata = {}
+          (_ktype24, _vtype25, _size23 ) = iprot.readMapBegin()
+          for _i27 in xrange(_size23):
+            _key28 = iprot.readString()
+            _val29 = iprot.readString()
+            self.replicaMetadata[_key28] = _val29
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataReplicaLocationModel')
+    if self.replicaId is not None:
+      oprot.writeFieldBegin('replicaId', TType.STRING, 1)
+      oprot.writeString(self.replicaId)
+      oprot.writeFieldEnd()
+    if self.productUri is not None:
+      oprot.writeFieldBegin('productUri', TType.STRING, 2)
+      oprot.writeString(self.productUri)
+      oprot.writeFieldEnd()
+    if self.replicaName is not None:
+      oprot.writeFieldBegin('replicaName', TType.STRING, 3)
+      oprot.writeString(self.replicaName)
+      oprot.writeFieldEnd()
+    if self.replicaDescription is not None:
+      oprot.writeFieldBegin('replicaDescription', TType.STRING, 4)
+      oprot.writeString(self.replicaDescription)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 5)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastModifiedTime is not None:
+      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 6)
+      oprot.writeI64(self.lastModifiedTime)
+      oprot.writeFieldEnd()
+    if self.validUntilTime is not None:
+      oprot.writeFieldBegin('validUntilTime', TType.I64, 7)
+      oprot.writeI64(self.validUntilTime)
+      oprot.writeFieldEnd()
+    if self.replicaLocationCategory is not None:
+      oprot.writeFieldBegin('replicaLocationCategory', TType.I32, 8)
+      oprot.writeI32(self.replicaLocationCategory)
+      oprot.writeFieldEnd()
+    if self.replicaPersistentType is not None:
+      oprot.writeFieldBegin('replicaPersistentType', TType.I32, 9)
+      oprot.writeI32(self.replicaPersistentType)
+      oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 10)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
+    if self.filePath is not None:
+      oprot.writeFieldBegin('filePath', TType.STRING, 11)
+      oprot.writeString(self.filePath)
+      oprot.writeFieldEnd()
+    if self.replicaMetadata is not None:
+      oprot.writeFieldBegin('replicaMetadata', TType.MAP, 12)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.replicaMetadata))
+      for kiter30,viter31 in self.replicaMetadata.items():
+        oprot.writeString(kiter30)
+        oprot.writeString(viter31)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.replicaId)
+    value = (value * 31) ^ hash(self.productUri)
+    value = (value * 31) ^ hash(self.replicaName)
+    value = (value * 31) ^ hash(self.replicaDescription)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastModifiedTime)
+    value = (value * 31) ^ hash(self.validUntilTime)
+    value = (value * 31) ^ hash(self.replicaLocationCategory)
+    value = (value * 31) ^ hash(self.replicaPersistentType)
+    value = (value * 31) ^ hash(self.storageResourceId)
+    value = (value * 31) ^ hash(self.filePath)
+    value = (value * 31) ^ hash(self.replicaMetadata)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.pyc
new file mode 100644
index 0000000..1a93a89
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.py
new file mode 100644
index 0000000..7f85660
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.py
@@ -0,0 +1,511 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ReplicaLocationCategory:
+  GATEWAY_DATA_STORE = 0
+  COMPUTE_RESOURCE = 1
+  LONG_TERM_STORAGE_RESOURCE = 2
+  OTHER = 3
+
+  _VALUES_TO_NAMES = {
+    0: "GATEWAY_DATA_STORE",
+    1: "COMPUTE_RESOURCE",
+    2: "LONG_TERM_STORAGE_RESOURCE",
+    3: "OTHER",
+  }
+
+  _NAMES_TO_VALUES = {
+    "GATEWAY_DATA_STORE": 0,
+    "COMPUTE_RESOURCE": 1,
+    "LONG_TERM_STORAGE_RESOURCE": 2,
+    "OTHER": 3,
+  }
+
+class ReplicaPersistentType:
+  TRANSIENT = 0
+  PERSISTENT = 1
+
+  _VALUES_TO_NAMES = {
+    0: "TRANSIENT",
+    1: "PERSISTENT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "TRANSIENT": 0,
+    "PERSISTENT": 1,
+  }
+
+class DataProductType:
+  FILE = 0
+  COLLECTION = 1
+
+  _VALUES_TO_NAMES = {
+    0: "FILE",
+    1: "COLLECTION",
+  }
+
+  _NAMES_TO_VALUES = {
+    "FILE": 0,
+    "COLLECTION": 1,
+  }
+
+    
+class DataReplicaLocationModel:
+  """
+  Attributes:
+   - replicaId
+   - productUri
+   - replicaName
+   - replicaDescription
+   - creationTime
+   - lastModifiedTime
+   - validUntilTime
+   - replicaLocationCategory
+   - replicaPersistentType
+   - storageResourceId
+   - filePath
+   - replicaMetadata
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'replicaId', None, None, ), # 1
+    (2, TType.STRING, 'productUri', None, None, ), # 2
+    (3, TType.STRING, 'replicaName', None, None, ), # 3
+    (4, TType.STRING, 'replicaDescription', None, None, ), # 4
+    (5, TType.I64, 'creationTime', None, None, ), # 5
+    (6, TType.I64, 'lastModifiedTime', None, None, ), # 6
+    (7, TType.I64, 'validUntilTime', None, None, ), # 7
+    (8, TType.I32, 'replicaLocationCategory', None, None, ), # 8
+    (9, TType.I32, 'replicaPersistentType', None, None, ), # 9
+    (10, TType.STRING, 'storageResourceId', None, None, ), # 10
+    (11, TType.STRING, 'filePath', None, None, ), # 11
+    (12, TType.MAP, 'replicaMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 12
+  )
+
+  def __init__(self, replicaId=None, productUri=None, replicaName=None, replicaDescription=None, creationTime=None, lastModifiedTime=None, validUntilTime=None, replicaLocationCategory=None, replicaPersistentType=None, storageResourceId=None, filePath=None, replicaMetadata=None,):
+    self.replicaId = replicaId
+    self.productUri = productUri
+    self.replicaName = replicaName
+    self.replicaDescription = replicaDescription
+    self.creationTime = creationTime
+    self.lastModifiedTime = lastModifiedTime
+    self.validUntilTime = validUntilTime
+    self.replicaLocationCategory = replicaLocationCategory
+    self.replicaPersistentType = replicaPersistentType
+    self.storageResourceId = storageResourceId
+    self.filePath = filePath
+    self.replicaMetadata = replicaMetadata
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.replicaId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.productUri = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.replicaName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.replicaDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I64:
+          self.lastModifiedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I64:
+          self.validUntilTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.replicaLocationCategory = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I32:
+          self.replicaPersistentType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.filePath = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.MAP:
+          self.replicaMetadata = {}
+          (_ktype17, _vtype18, _size16 ) = iprot.readMapBegin()
+          for _i20 in xrange(_size16):
+            _key21 = iprot.readString()
+            _val22 = iprot.readString()
+            self.replicaMetadata[_key21] = _val22
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataReplicaLocationModel')
+    if self.replicaId is not None:
+      oprot.writeFieldBegin('replicaId', TType.STRING, 1)
+      oprot.writeString(self.replicaId)
+      oprot.writeFieldEnd()
+    if self.productUri is not None:
+      oprot.writeFieldBegin('productUri', TType.STRING, 2)
+      oprot.writeString(self.productUri)
+      oprot.writeFieldEnd()
+    if self.replicaName is not None:
+      oprot.writeFieldBegin('replicaName', TType.STRING, 3)
+      oprot.writeString(self.replicaName)
+      oprot.writeFieldEnd()
+    if self.replicaDescription is not None:
+      oprot.writeFieldBegin('replicaDescription', TType.STRING, 4)
+      oprot.writeString(self.replicaDescription)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 5)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastModifiedTime is not None:
+      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 6)
+      oprot.writeI64(self.lastModifiedTime)
+      oprot.writeFieldEnd()
+    if self.validUntilTime is not None:
+      oprot.writeFieldBegin('validUntilTime', TType.I64, 7)
+      oprot.writeI64(self.validUntilTime)
+      oprot.writeFieldEnd()
+    if self.replicaLocationCategory is not None:
+      oprot.writeFieldBegin('replicaLocationCategory', TType.I32, 8)
+      oprot.writeI32(self.replicaLocationCategory)
+      oprot.writeFieldEnd()
+    if self.replicaPersistentType is not None:
+      oprot.writeFieldBegin('replicaPersistentType', TType.I32, 9)
+      oprot.writeI32(self.replicaPersistentType)
+      oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 10)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
+    if self.filePath is not None:
+      oprot.writeFieldBegin('filePath', TType.STRING, 11)
+      oprot.writeString(self.filePath)
+      oprot.writeFieldEnd()
+    if self.replicaMetadata is not None:
+      oprot.writeFieldBegin('replicaMetadata', TType.MAP, 12)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.replicaMetadata))
+      for kiter23,viter24 in self.replicaMetadata.items():
+        oprot.writeString(kiter23)
+        oprot.writeString(viter24)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.replicaId)
+    value = (value * 31) ^ hash(self.productUri)
+    value = (value * 31) ^ hash(self.replicaName)
+    value = (value * 31) ^ hash(self.replicaDescription)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastModifiedTime)
+    value = (value * 31) ^ hash(self.validUntilTime)
+    value = (value * 31) ^ hash(self.replicaLocationCategory)
+    value = (value * 31) ^ hash(self.replicaPersistentType)
+    value = (value * 31) ^ hash(self.storageResourceId)
+    value = (value * 31) ^ hash(self.filePath)
+    value = (value * 31) ^ hash(self.replicaMetadata)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataProductModel:
+  """
+  Attributes:
+   - productUri
+   - gatewayId
+   - parentProductUri
+   - productName
+   - productDescription
+   - ownerName
+   - dataProductType
+   - productSize
+   - creationTime
+   - lastModifiedTime
+   - productMetadata
+   - replicaLocations
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'productUri', None, None, ), # 1
+    (2, TType.STRING, 'gatewayId', None, None, ), # 2
+    (3, TType.STRING, 'parentProductUri', None, None, ), # 3
+    (4, TType.STRING, 'productName', None, None, ), # 4
+    (5, TType.STRING, 'productDescription', None, None, ), # 5
+    (6, TType.STRING, 'ownerName', None, None, ), # 6
+    (7, TType.I32, 'dataProductType', None, None, ), # 7
+    (8, TType.I32, 'productSize', None, None, ), # 8
+    (9, TType.I64, 'creationTime', None, None, ), # 9
+    (10, TType.I64, 'lastModifiedTime', None, None, ), # 10
+    (11, TType.MAP, 'productMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 11
+    (12, TType.LIST, 'replicaLocations', (TType.STRUCT,(DataReplicaLocationModel, DataReplicaLocationModel.thrift_spec)), None, ), # 12
+  )
+
+  def __init__(self, productUri=None, gatewayId=None, parentProductUri=None, productName=None, productDescription=None, ownerName=None, dataProductType=None, productSize=None, creationTime=None, lastModifiedTime=None, productMetadata=None, replicaLocations=None,):
+    self.productUri = productUri
+    self.gatewayId = gatewayId
+    self.parentProductUri = parentProductUri
+    self.productName = productName
+    self.productDescription = productDescription
+    self.ownerName = ownerName
+    self.dataProductType = dataProductType
+    self.productSize = productSize
+    self.creationTime = creationTime
+    self.lastModifiedTime = lastModifiedTime
+    self.productMetadata = productMetadata
+    self.replicaLocations = replicaLocations
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.productUri = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.parentProductUri = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.productName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.productDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.ownerName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.dataProductType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.productSize = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.I64:
+          self.lastModifiedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.MAP:
+          self.productMetadata = {}
+          (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
+          for _i4 in xrange(_size0):
+            _key5 = iprot.readString()
+            _val6 = iprot.readString()
+            self.productMetadata[_key5] = _val6
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.replicaLocations = []
+          (_etype10, _size7) = iprot.readListBegin()
+          for _i11 in xrange(_size7):
+            _elem12 = DataReplicaLocationModel()
+            _elem12.read(iprot)
+            self.replicaLocations.append(_elem12)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataProductModel')
+    if self.productUri is not None:
+      oprot.writeFieldBegin('productUri', TType.STRING, 1)
+      oprot.writeString(self.productUri)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.parentProductUri is not None:
+      oprot.writeFieldBegin('parentProductUri', TType.STRING, 3)
+      oprot.writeString(self.parentProductUri)
+      oprot.writeFieldEnd()
+    if self.productName is not None:
+      oprot.writeFieldBegin('productName', TType.STRING, 4)
+      oprot.writeString(self.productName)
+      oprot.writeFieldEnd()
+    if self.productDescription is not None:
+      oprot.writeFieldBegin('productDescription', TType.STRING, 5)
+      oprot.writeString(self.productDescription)
+      oprot.writeFieldEnd()
+    if self.ownerName is not None:
+      oprot.writeFieldBegin('ownerName', TType.STRING, 6)
+      oprot.writeString(self.ownerName)
+      oprot.writeFieldEnd()
+    if self.dataProductType is not None:
+      oprot.writeFieldBegin('dataProductType', TType.I32, 7)
+      oprot.writeI32(self.dataProductType)
+      oprot.writeFieldEnd()
+    if self.productSize is not None:
+      oprot.writeFieldBegin('productSize', TType.I32, 8)
+      oprot.writeI32(self.productSize)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 9)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastModifiedTime is not None:
+      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 10)
+      oprot.writeI64(self.lastModifiedTime)
+      oprot.writeFieldEnd()
+    if self.productMetadata is not None:
+      oprot.writeFieldBegin('productMetadata', TType.MAP, 11)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.productMetadata))
+      for kiter13,viter14 in self.productMetadata.items():
+        oprot.writeString(kiter13)
+        oprot.writeString(viter14)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.replicaLocations is not None:
+      oprot.writeFieldBegin('replicaLocations', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRUCT, len(self.replicaLocations))
+      for iter15 in self.replicaLocations:
+        iter15.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.productUri)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.parentProductUri)
+    value = (value * 31) ^ hash(self.productName)
+    value = (value * 31) ^ hash(self.productDescription)
+    value = (value * 31) ^ hash(self.ownerName)
+    value = (value * 31) ^ hash(self.dataProductType)
+    value = (value * 31) ^ hash(self.productSize)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastModifiedTime)
+    value = (value * 31) ^ hash(self.productMetadata)
+    value = (value * 31) ^ hash(self.replicaLocations)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.pyc
new file mode 100644
index 0000000..a0eec2f
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/replica/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/ttypes.py
new file mode 100644
index 0000000..7c4a551
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/data/resource/ttypes.py
@@ -0,0 +1,535 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.data.movement.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ReplicaLocationCategory:
+  GATEWAY_DATA_STORE = 0
+  COMPUTE_RESOURCE = 1
+  LONG_TERM_STORAGE_RESOURCE = 2
+  OTHER = 3
+
+  _VALUES_TO_NAMES = {
+    0: "GATEWAY_DATA_STORE",
+    1: "COMPUTE_RESOURCE",
+    2: "LONG_TERM_STORAGE_RESOURCE",
+    3: "OTHER",
+  }
+
+  _NAMES_TO_VALUES = {
+    "GATEWAY_DATA_STORE": 0,
+    "COMPUTE_RESOURCE": 1,
+    "LONG_TERM_STORAGE_RESOURCE": 2,
+    "OTHER": 3,
+  }
+
+class ReplicaPersistentType:
+  TRANSIENT = 0
+  PERSISTENT = 1
+
+  _VALUES_TO_NAMES = {
+    0: "TRANSIENT",
+    1: "PERSISTENT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "TRANSIENT": 0,
+    "PERSISTENT": 1,
+  }
+
+class DataResourceType:
+  COLLECTION = 0
+  FILE = 1
+
+  _VALUES_TO_NAMES = {
+    0: "COLLECTION",
+    1: "FILE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "COLLECTION": 0,
+    "FILE": 1,
+  }
+
+
+class DataResourceModel:
+  """
+  Attributes:
+   - resourceId
+   - gatewayId
+   - parentResourceId
+   - resourceName
+   - resourceDescription
+   - ownerName
+   - dataResourceType
+   - resourceSize
+   - creationTime
+   - lastModifiedTime
+   - resourceMetadata
+   - replicaLocations
+   - childResources
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'resourceId', None, None, ), # 1
+    (2, TType.STRING, 'gatewayId', None, None, ), # 2
+    (3, TType.STRING, 'parentResourceId', None, None, ), # 3
+    (4, TType.STRING, 'resourceName', None, None, ), # 4
+    (5, TType.STRING, 'resourceDescription', None, None, ), # 5
+    (6, TType.STRING, 'ownerName', None, None, ), # 6
+    (7, TType.I32, 'dataResourceType', None, None, ), # 7
+    (8, TType.I32, 'resourceSize', None, None, ), # 8
+    (9, TType.I64, 'creationTime', None, None, ), # 9
+    (10, TType.I64, 'lastModifiedTime', None, None, ), # 10
+    (11, TType.MAP, 'resourceMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 11
+    (12, TType.LIST, 'replicaLocations', (TType.STRUCT,(DataReplicaLocationModel, DataReplicaLocationModel.thrift_spec)), None, ), # 12
+    (13, TType.LIST, 'childResources', (TType.STRUCT,(DataResourceModel, DataResourceModel.thrift_spec)), None, ), # 13
+  )
+
+  def __init__(self, resourceId=None, gatewayId=None, parentResourceId=None, resourceName=None, resourceDescription=None, ownerName=None, dataResourceType=None, resourceSize=None, creationTime=None, lastModifiedTime=None, resourceMetadata=None, replicaLocations=None, childResources=None,):
+    self.resourceId = resourceId
+    self.gatewayId = gatewayId
+    self.parentResourceId = parentResourceId
+    self.resourceName = resourceName
+    self.resourceDescription = resourceDescription
+    self.ownerName = ownerName
+    self.dataResourceType = dataResourceType
+    self.resourceSize = resourceSize
+    self.creationTime = creationTime
+    self.lastModifiedTime = lastModifiedTime
+    self.resourceMetadata = resourceMetadata
+    self.replicaLocations = replicaLocations
+    self.childResources = childResources
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.resourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.parentResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.resourceName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.resourceDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.ownerName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.dataResourceType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.resourceSize = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.I64:
+          self.lastModifiedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.MAP:
+          self.resourceMetadata = {}
+          (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
+          for _i4 in xrange(_size0):
+            _key5 = iprot.readString()
+            _val6 = iprot.readString()
+            self.resourceMetadata[_key5] = _val6
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.replicaLocations = []
+          (_etype10, _size7) = iprot.readListBegin()
+          for _i11 in xrange(_size7):
+            _elem12 = DataReplicaLocationModel()
+            _elem12.read(iprot)
+            self.replicaLocations.append(_elem12)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.LIST:
+          self.childResources = []
+          (_etype16, _size13) = iprot.readListBegin()
+          for _i17 in xrange(_size13):
+            _elem18 = DataResourceModel()
+            _elem18.read(iprot)
+            self.childResources.append(_elem18)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataResourceModel')
+    if self.resourceId is not None:
+      oprot.writeFieldBegin('resourceId', TType.STRING, 1)
+      oprot.writeString(self.resourceId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.parentResourceId is not None:
+      oprot.writeFieldBegin('parentResourceId', TType.STRING, 3)
+      oprot.writeString(self.parentResourceId)
+      oprot.writeFieldEnd()
+    if self.resourceName is not None:
+      oprot.writeFieldBegin('resourceName', TType.STRING, 4)
+      oprot.writeString(self.resourceName)
+      oprot.writeFieldEnd()
+    if self.resourceDescription is not None:
+      oprot.writeFieldBegin('resourceDescription', TType.STRING, 5)
+      oprot.writeString(self.resourceDescription)
+      oprot.writeFieldEnd()
+    if self.ownerName is not None:
+      oprot.writeFieldBegin('ownerName', TType.STRING, 6)
+      oprot.writeString(self.ownerName)
+      oprot.writeFieldEnd()
+    if self.dataResourceType is not None:
+      oprot.writeFieldBegin('dataResourceType', TType.I32, 7)
+      oprot.writeI32(self.dataResourceType)
+      oprot.writeFieldEnd()
+    if self.resourceSize is not None:
+      oprot.writeFieldBegin('resourceSize', TType.I32, 8)
+      oprot.writeI32(self.resourceSize)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 9)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastModifiedTime is not None:
+      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 10)
+      oprot.writeI64(self.lastModifiedTime)
+      oprot.writeFieldEnd()
+    if self.resourceMetadata is not None:
+      oprot.writeFieldBegin('resourceMetadata', TType.MAP, 11)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.resourceMetadata))
+      for kiter19,viter20 in self.resourceMetadata.items():
+        oprot.writeString(kiter19)
+        oprot.writeString(viter20)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.replicaLocations is not None:
+      oprot.writeFieldBegin('replicaLocations', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRUCT, len(self.replicaLocations))
+      for iter21 in self.replicaLocations:
+        iter21.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.childResources is not None:
+      oprot.writeFieldBegin('childResources', TType.LIST, 13)
+      oprot.writeListBegin(TType.STRUCT, len(self.childResources))
+      for iter22 in self.childResources:
+        iter22.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.resourceId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.parentResourceId)
+    value = (value * 31) ^ hash(self.resourceName)
+    value = (value * 31) ^ hash(self.resourceDescription)
+    value = (value * 31) ^ hash(self.ownerName)
+    value = (value * 31) ^ hash(self.dataResourceType)
+    value = (value * 31) ^ hash(self.resourceSize)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastModifiedTime)
+    value = (value * 31) ^ hash(self.resourceMetadata)
+    value = (value * 31) ^ hash(self.replicaLocations)
+    value = (value * 31) ^ hash(self.childResources)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataReplicaLocationModel:
+  """
+  Attributes:
+   - replicaId
+   - resourceId
+   - replicaName
+   - replicaDescription
+   - creationTime
+   - lastModifiedTime
+   - validUntilTime
+   - replicaLocationCategory
+   - replicaPersistentType
+   - storageResourceId
+   - fileAbsolutePath
+   - replicaMetadata
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'replicaId', None, None, ), # 1
+    (2, TType.STRING, 'resourceId', None, None, ), # 2
+    (3, TType.STRING, 'replicaName', None, None, ), # 3
+    (4, TType.STRING, 'replicaDescription', None, None, ), # 4
+    (5, TType.I64, 'creationTime', None, None, ), # 5
+    (6, TType.I64, 'lastModifiedTime', None, None, ), # 6
+    (7, TType.I64, 'validUntilTime', None, None, ), # 7
+    (8, TType.I32, 'replicaLocationCategory', None, None, ), # 8
+    (9, TType.I32, 'replicaPersistentType', None, None, ), # 9
+    (10, TType.STRING, 'storageResourceId', None, None, ), # 10
+    (11, TType.STRING, 'fileAbsolutePath', None, None, ), # 11
+    (12, TType.MAP, 'replicaMetadata', (TType.STRING,None,TType.STRING,None), None, ), # 12
+  )
+
+  def __init__(self, replicaId=None, resourceId=None, replicaName=None, replicaDescription=None, creationTime=None, lastModifiedTime=None, validUntilTime=None, replicaLocationCategory=None, replicaPersistentType=None, storageResourceId=None, fileAbsolutePath=None, replicaMetadata=None,):
+    self.replicaId = replicaId
+    self.resourceId = resourceId
+    self.replicaName = replicaName
+    self.replicaDescription = replicaDescription
+    self.creationTime = creationTime
+    self.lastModifiedTime = lastModifiedTime
+    self.validUntilTime = validUntilTime
+    self.replicaLocationCategory = replicaLocationCategory
+    self.replicaPersistentType = replicaPersistentType
+    self.storageResourceId = storageResourceId
+    self.fileAbsolutePath = fileAbsolutePath
+    self.replicaMetadata = replicaMetadata
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.replicaId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.resourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.replicaName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.replicaDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I64:
+          self.lastModifiedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I64:
+          self.validUntilTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.replicaLocationCategory = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I32:
+          self.replicaPersistentType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.fileAbsolutePath = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.MAP:
+          self.replicaMetadata = {}
+          (_ktype24, _vtype25, _size23 ) = iprot.readMapBegin()
+          for _i27 in xrange(_size23):
+            _key28 = iprot.readString()
+            _val29 = iprot.readString()
+            self.replicaMetadata[_key28] = _val29
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataReplicaLocationModel')
+    if self.replicaId is not None:
+      oprot.writeFieldBegin('replicaId', TType.STRING, 1)
+      oprot.writeString(self.replicaId)
+      oprot.writeFieldEnd()
+    if self.resourceId is not None:
+      oprot.writeFieldBegin('resourceId', TType.STRING, 2)
+      oprot.writeString(self.resourceId)
+      oprot.writeFieldEnd()
+    if self.replicaName is not None:
+      oprot.writeFieldBegin('replicaName', TType.STRING, 3)
+      oprot.writeString(self.replicaName)
+      oprot.writeFieldEnd()
+    if self.replicaDescription is not None:
+      oprot.writeFieldBegin('replicaDescription', TType.STRING, 4)
+      oprot.writeString(self.replicaDescription)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 5)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastModifiedTime is not None:
+      oprot.writeFieldBegin('lastModifiedTime', TType.I64, 6)
+      oprot.writeI64(self.lastModifiedTime)
+      oprot.writeFieldEnd()
+    if self.validUntilTime is not None:
+      oprot.writeFieldBegin('validUntilTime', TType.I64, 7)
+      oprot.writeI64(self.validUntilTime)
+      oprot.writeFieldEnd()
+    if self.replicaLocationCategory is not None:
+      oprot.writeFieldBegin('replicaLocationCategory', TType.I32, 8)
+      oprot.writeI32(self.replicaLocationCategory)
+      oprot.writeFieldEnd()
+    if self.replicaPersistentType is not None:
+      oprot.writeFieldBegin('replicaPersistentType', TType.I32, 9)
+      oprot.writeI32(self.replicaPersistentType)
+      oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 10)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
+    if self.fileAbsolutePath is not None:
+      oprot.writeFieldBegin('fileAbsolutePath', TType.STRING, 11)
+      oprot.writeString(self.fileAbsolutePath)
+      oprot.writeFieldEnd()
+    if self.replicaMetadata is not None:
+      oprot.writeFieldBegin('replicaMetadata', TType.MAP, 12)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.replicaMetadata))
+      for kiter30,viter31 in self.replicaMetadata.items():
+        oprot.writeString(kiter30)
+        oprot.writeString(viter31)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.replicaId)
+    value = (value * 31) ^ hash(self.resourceId)
+    value = (value * 31) ^ hash(self.replicaName)
+    value = (value * 31) ^ hash(self.replicaDescription)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastModifiedTime)
+    value = (value * 31) ^ hash(self.validUntilTime)
+    value = (value * 31) ^ hash(self.replicaLocationCategory)
+    value = (value * 31) ^ hash(self.replicaPersistentType)
+    value = (value * 31) ^ hash(self.storageResourceId)
+    value = (value * 31) ^ hash(self.fileAbsolutePath)
+    value = (value * 31) ^ hash(self.replicaMetadata)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.pyc
new file mode 100644
index 0000000..46e6627
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[12/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.pyc
new file mode 100644
index 0000000..b3bb83c
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.py
new file mode 100644
index 0000000..e85fb34
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants', 'Airavata']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.pyc
new file mode 100644
index 0000000..f0e0034
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/constants.py
new file mode 100644
index 0000000..fc60574
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/constants.py
@@ -0,0 +1,12 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+
+AIRAVATA_API_VERSION = "0.16.0"

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.pyc
new file mode 100644
index 0000000..4fb8cfc
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.py
new file mode 100644
index 0000000..522cc18
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.py
@@ -0,0 +1,940 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.experiment.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class AiravataErrorType:
+  """
+  A list of Airavata API Error Message Types
+
+   UNKNOWN: No information available about the error
+    
+   PERMISSION_DENIED: Not permitted to perform action
+
+   INTERNAL_ERROR: Unexpected problem with the service
+
+   AUTHENTICATION_FAILURE: The client failed to authenticate.
+
+   INVALID_AUTHORIZATION: Security Token and/or Username and/or password is incorrect
+    
+   AUTHORIZATION_EXPIRED: Authentication token expired
+   
+   UNKNOWN_GATEWAY_ID: The gateway is not registered with Airavata.
+
+   UNSUPPORTED_OPERATION: Operation denied because it is currently unsupported.
+  """
+  UNKNOWN = 0
+  PERMISSION_DENIED = 1
+  INTERNAL_ERROR = 2
+  AUTHENTICATION_FAILURE = 3
+  INVALID_AUTHORIZATION = 4
+  AUTHORIZATION_EXPIRED = 5
+  UNKNOWN_GATEWAY_ID = 6
+  UNSUPPORTED_OPERATION = 7
+
+  _VALUES_TO_NAMES = {
+    0: "UNKNOWN",
+    1: "PERMISSION_DENIED",
+    2: "INTERNAL_ERROR",
+    3: "AUTHENTICATION_FAILURE",
+    4: "INVALID_AUTHORIZATION",
+    5: "AUTHORIZATION_EXPIRED",
+    6: "UNKNOWN_GATEWAY_ID",
+    7: "UNSUPPORTED_OPERATION",
+  }
+
+  _NAMES_TO_VALUES = {
+    "UNKNOWN": 0,
+    "PERMISSION_DENIED": 1,
+    "INTERNAL_ERROR": 2,
+    "AUTHENTICATION_FAILURE": 3,
+    "INVALID_AUTHORIZATION": 4,
+    "AUTHORIZATION_EXPIRED": 5,
+    "UNKNOWN_GATEWAY_ID": 6,
+    "UNSUPPORTED_OPERATION": 7,
+  }
+
+
+class ExperimentNotFoundException(TException):
+  """
+  This exception is thrown when a client asks to perform an operation on an experiment that does not exist.
+
+  identifier:  A description of the experiment that was not found on the server.
+
+  key:  The value passed from the client in the identifier, which was not found.
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentNotFoundException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProjectNotFoundException(TException):
+  """
+  1:  optional  string identifier,
+  2:  optional  string key
+
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProjectNotFoundException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class InvalidRequestException(TException):
+  """
+  This exception is thrown for invalid requests that occur from any reasons like required input parameters are missing,
+   or a parameter is malformed.
+
+   message: contains the associated error message.
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('InvalidRequestException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TimedOutException(TException):
+  """
+  This exception is thrown when RPC timeout gets exceeded.
+  """
+
+  thrift_spec = (
+  )
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TimedOutException')
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AuthenticationException(TException):
+  """
+  This exception is thrown for invalid sshKeyAuthentication requests.
+
+   message: contains the cause of the authorization failure.
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AuthenticationException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AuthorizationException(TException):
+  """
+  This exception is thrown for invalid authorization requests such user does not have acces to an aplication or resource.
+
+   message: contains the authorization failure message
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AuthorizationException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AiravataClientException(TException):
+  """
+  This exception is thrown by Airavata Services when a call fails as a result of
+  a problem that a client may be able to resolve.  For example, if the user
+  attempts to execute an application on a resource gateway does not have access to.
+
+  This exception would not be used for internal system errors that do not
+  reflect user actions, but rather reflect a problem within the service that
+  the client cannot resolve.
+
+  airavataErrorType:  The message type indicating the error that occurred.
+    must be one of the values of AiravataErrorType.
+
+  parameter:  If the error applied to a particular input parameter, this will
+    indicate which parameter.
+
+  Attributes:
+   - airavataErrorType
+   - parameter
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'airavataErrorType', None, None, ), # 1
+    (2, TType.STRING, 'parameter', None, None, ), # 2
+  )
+
+  def __init__(self, airavataErrorType=None, parameter=None,):
+    self.airavataErrorType = airavataErrorType
+    self.parameter = parameter
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.airavataErrorType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.parameter = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AiravataClientException')
+    if self.airavataErrorType is not None:
+      oprot.writeFieldBegin('airavataErrorType', TType.I32, 1)
+      oprot.writeI32(self.airavataErrorType)
+      oprot.writeFieldEnd()
+    if self.parameter is not None:
+      oprot.writeFieldBegin('parameter', TType.STRING, 2)
+      oprot.writeString(self.parameter)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataErrorType is None:
+      raise TProtocol.TProtocolException(message='Required field airavataErrorType is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataErrorType)
+    value = (value * 31) ^ hash(self.parameter)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ValidatorResult:
+  """
+  Attributes:
+   - result
+   - errorDetails
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'result', None, None, ), # 1
+    (2, TType.STRING, 'errorDetails', None, None, ), # 2
+  )
+
+  def __init__(self, result=None, errorDetails=None,):
+    self.result = result
+    self.errorDetails = errorDetails
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.result = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.errorDetails = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ValidatorResult')
+    if self.result is not None:
+      oprot.writeFieldBegin('result', TType.BOOL, 1)
+      oprot.writeBool(self.result)
+      oprot.writeFieldEnd()
+    if self.errorDetails is not None:
+      oprot.writeFieldBegin('errorDetails', TType.STRING, 2)
+      oprot.writeString(self.errorDetails)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.result is None:
+      raise TProtocol.TProtocolException(message='Required field result is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.result)
+    value = (value * 31) ^ hash(self.errorDetails)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ValidationResults:
+  """
+  Attributes:
+   - validationState
+   - validationResultList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'validationState', None, None, ), # 1
+    (2, TType.LIST, 'validationResultList', (TType.STRUCT,(ValidatorResult, ValidatorResult.thrift_spec)), None, ), # 2
+  )
+
+  def __init__(self, validationState=None, validationResultList=None,):
+    self.validationState = validationState
+    self.validationResultList = validationResultList
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.validationState = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.LIST:
+          self.validationResultList = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = ValidatorResult()
+            _elem5.read(iprot)
+            self.validationResultList.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ValidationResults')
+    if self.validationState is not None:
+      oprot.writeFieldBegin('validationState', TType.BOOL, 1)
+      oprot.writeBool(self.validationState)
+      oprot.writeFieldEnd()
+    if self.validationResultList is not None:
+      oprot.writeFieldBegin('validationResultList', TType.LIST, 2)
+      oprot.writeListBegin(TType.STRUCT, len(self.validationResultList))
+      for iter6 in self.validationResultList:
+        iter6.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.validationState is None:
+      raise TProtocol.TProtocolException(message='Required field validationState is unset!')
+    if self.validationResultList is None:
+      raise TProtocol.TProtocolException(message='Required field validationResultList is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.validationState)
+    value = (value * 31) ^ hash(self.validationResultList)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class LaunchValidationException(TException):
+  """
+  Attributes:
+   - validationResult
+   - errorMessage
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'validationResult', (ValidationResults, ValidationResults.thrift_spec), None, ), # 1
+    (2, TType.STRING, 'errorMessage', None, None, ), # 2
+  )
+
+  def __init__(self, validationResult=None, errorMessage=None,):
+    self.validationResult = validationResult
+    self.errorMessage = errorMessage
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRUCT:
+          self.validationResult = ValidationResults()
+          self.validationResult.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.errorMessage = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('LaunchValidationException')
+    if self.validationResult is not None:
+      oprot.writeFieldBegin('validationResult', TType.STRUCT, 1)
+      self.validationResult.write(oprot)
+      oprot.writeFieldEnd()
+    if self.errorMessage is not None:
+      oprot.writeFieldBegin('errorMessage', TType.STRING, 2)
+      oprot.writeString(self.errorMessage)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.validationResult is None:
+      raise TProtocol.TProtocolException(message='Required field validationResult is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.validationResult)
+    value = (value * 31) ^ hash(self.errorMessage)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AiravataSystemException(TException):
+  """
+  This exception is thrown by Airavata Services when a call fails as a result of
+  a problem in the service that could not be changed through client's action.
+
+  airavataErrorType:  The message type indicating the error that occurred.
+    must be one of the values of AiravataErrorType.
+
+  message:  This may contain additional information about the error
+
+
+  Attributes:
+   - airavataErrorType
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'airavataErrorType', None, None, ), # 1
+    (2, TType.STRING, 'message', None, None, ), # 2
+  )
+
+  def __init__(self, airavataErrorType=None, message=None,):
+    self.airavataErrorType = airavataErrorType
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.airavataErrorType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AiravataSystemException')
+    if self.airavataErrorType is not None:
+      oprot.writeFieldBegin('airavataErrorType', TType.I32, 1)
+      oprot.writeI32(self.airavataErrorType)
+      oprot.writeFieldEnd()
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 2)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataErrorType is None:
+      raise TProtocol.TProtocolException(message='Required field airavataErrorType is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataErrorType)
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.pyc
new file mode 100644
index 0000000..36167e2
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/error/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.py
new file mode 100644
index 0000000..ff33544
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.py
@@ -0,0 +1,37 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.api.error.ttypes
+import apache.airavata.model.security.ttypes
+import apache.airavata.model.ttypes
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.job.ttypes
+import apache.airavata.model.experiment.ttypes
+import apache.airavata.model.workspace.ttypes
+import apache.airavata.model.scheduling.ttypes
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.appcatalog.appdeployment.ttypes
+import apache.airavata.model.appcatalog.appinterface.ttypes
+import apache.airavata.model.appcatalog.computeresource.ttypes
+import apache.airavata.model.appcatalog.storageresource.ttypes
+import apache.airavata.model.appcatalog.gatewayprofile.ttypes
+import apache.airavata.model.data.movement.ttypes
+import apache.airavata.model.workflow.ttypes
+import apache.airavata.model.data.replica.ttypes
+import apache.airavata.model.group.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.pyc
new file mode 100644
index 0000000..704ca78
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.pyc
new file mode 100644
index 0000000..e54cd41
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.pyc
new file mode 100644
index 0000000..638440f
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.pyc
new file mode 100644
index 0000000..744413f
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.py
new file mode 100644
index 0000000..14fdbfa
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.py
@@ -0,0 +1,634 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.appcatalog.parallelism.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class SetEnvPaths:
+  """
+  Key Value pairs to be used to set environments
+
+  name:
+    Name of the environment variable such as PATH, LD_LIBRARY_PATH, NETCDF_HOME.
+
+  value:
+    Value of the environment variable to set
+
+  envPathOrder:
+    The order of the setting of the env variables when there are multiple env variables
+
+  Attributes:
+   - name
+   - value
+   - envPathOrder
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'name', None, None, ), # 1
+    (2, TType.STRING, 'value', None, None, ), # 2
+    (3, TType.I32, 'envPathOrder', None, None, ), # 3
+  )
+
+  def __init__(self, name=None, value=None, envPathOrder=None,):
+    self.name = name
+    self.value = value
+    self.envPathOrder = envPathOrder
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.value = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.envPathOrder = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('SetEnvPaths')
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 1)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.value is not None:
+      oprot.writeFieldBegin('value', TType.STRING, 2)
+      oprot.writeString(self.value)
+      oprot.writeFieldEnd()
+    if self.envPathOrder is not None:
+      oprot.writeFieldBegin('envPathOrder', TType.I32, 3)
+      oprot.writeI32(self.envPathOrder)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    if self.value is None:
+      raise TProtocol.TProtocolException(message='Required field value is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.envPathOrder)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class CommandObject:
+  """
+  Job commands to be used in Pre Job, Post Job and Module Load Commands
+
+  command:
+    The actual command in string format
+
+  commandOrder:
+    Order of the command in the multiple command situation
+
+  Attributes:
+   - command
+   - commandOrder
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'command', None, None, ), # 1
+    (2, TType.I32, 'commandOrder', None, None, ), # 2
+  )
+
+  def __init__(self, command=None, commandOrder=None,):
+    self.command = command
+    self.commandOrder = commandOrder
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.command = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.commandOrder = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('CommandObject')
+    if self.command is not None:
+      oprot.writeFieldBegin('command', TType.STRING, 1)
+      oprot.writeString(self.command)
+      oprot.writeFieldEnd()
+    if self.commandOrder is not None:
+      oprot.writeFieldBegin('commandOrder', TType.I32, 2)
+      oprot.writeI32(self.commandOrder)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.command is None:
+      raise TProtocol.TProtocolException(message='Required field command is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.command)
+    value = (value * 31) ^ hash(self.commandOrder)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ApplicationModule:
+  """
+  Application Module Information. A module has to be registered before registering a deployment.
+
+  appModuleId: Airavata Internal Unique Job ID. This is set by the registry.
+
+  appModuleName:
+    Name of the application module.
+
+  appModuleVersion:
+    Version of the application.
+
+  appModuleDescription:
+     Descriprion of the Module
+
+
+  Attributes:
+   - appModuleId
+   - appModuleName
+   - appModuleVersion
+   - appModuleDescription
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'appModuleId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'appModuleName', None, None, ), # 2
+    (3, TType.STRING, 'appModuleVersion', None, None, ), # 3
+    (4, TType.STRING, 'appModuleDescription', None, None, ), # 4
+  )
+
+  def __init__(self, appModuleId=thrift_spec[1][4], appModuleName=None, appModuleVersion=None, appModuleDescription=None,):
+    self.appModuleId = appModuleId
+    self.appModuleName = appModuleName
+    self.appModuleVersion = appModuleVersion
+    self.appModuleDescription = appModuleDescription
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.appModuleId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.appModuleName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.appModuleVersion = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.appModuleDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ApplicationModule')
+    if self.appModuleId is not None:
+      oprot.writeFieldBegin('appModuleId', TType.STRING, 1)
+      oprot.writeString(self.appModuleId)
+      oprot.writeFieldEnd()
+    if self.appModuleName is not None:
+      oprot.writeFieldBegin('appModuleName', TType.STRING, 2)
+      oprot.writeString(self.appModuleName)
+      oprot.writeFieldEnd()
+    if self.appModuleVersion is not None:
+      oprot.writeFieldBegin('appModuleVersion', TType.STRING, 3)
+      oprot.writeString(self.appModuleVersion)
+      oprot.writeFieldEnd()
+    if self.appModuleDescription is not None:
+      oprot.writeFieldBegin('appModuleDescription', TType.STRING, 4)
+      oprot.writeString(self.appModuleDescription)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.appModuleId is None:
+      raise TProtocol.TProtocolException(message='Required field appModuleId is unset!')
+    if self.appModuleName is None:
+      raise TProtocol.TProtocolException(message='Required field appModuleName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.appModuleId)
+    value = (value * 31) ^ hash(self.appModuleName)
+    value = (value * 31) ^ hash(self.appModuleVersion)
+    value = (value * 31) ^ hash(self.appModuleDescription)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ApplicationDeploymentDescription:
+  """
+  Application Deployment Description
+
+  appDeploymentId: Airavata Internal Unique Job ID. This is set by the registry.
+
+  appModuleName:
+    Application Module Name. This has to be precise describing the binary.
+
+  computeHostId:
+    This ID maps application deployment to a particular resource previously described within Airavata.
+    Example: Stampede is first registered and refered when registering WRF.
+
+  moduleLoadCmd:
+   Command string to load modules. This will be placed in the job submisison
+   Ex: module load amber
+
+  libPrependPaths:
+   prepend to a path variable the value
+
+  libAppendPaths:
+   append to a path variable the value
+
+  setEnvironment:
+   assigns to the environment variable "NAME" the value
+
+
+  Attributes:
+   - appDeploymentId
+   - appModuleId
+   - computeHostId
+   - executablePath
+   - parallelism
+   - appDeploymentDescription
+   - moduleLoadCmds
+   - libPrependPaths
+   - libAppendPaths
+   - setEnvironment
+   - preJobCommands
+   - postJobCommands
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'appDeploymentId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'appModuleId', None, None, ), # 2
+    (3, TType.STRING, 'computeHostId', None, None, ), # 3
+    (4, TType.STRING, 'executablePath', None, None, ), # 4
+    (5, TType.I32, 'parallelism', None,     0, ), # 5
+    (6, TType.STRING, 'appDeploymentDescription', None, None, ), # 6
+    (7, TType.LIST, 'moduleLoadCmds', (TType.STRUCT,(CommandObject, CommandObject.thrift_spec)), None, ), # 7
+    (8, TType.LIST, 'libPrependPaths', (TType.STRUCT,(SetEnvPaths, SetEnvPaths.thrift_spec)), None, ), # 8
+    (9, TType.LIST, 'libAppendPaths', (TType.STRUCT,(SetEnvPaths, SetEnvPaths.thrift_spec)), None, ), # 9
+    (10, TType.LIST, 'setEnvironment', (TType.STRUCT,(SetEnvPaths, SetEnvPaths.thrift_spec)), None, ), # 10
+    (11, TType.LIST, 'preJobCommands', (TType.STRUCT,(CommandObject, CommandObject.thrift_spec)), None, ), # 11
+    (12, TType.LIST, 'postJobCommands', (TType.STRUCT,(CommandObject, CommandObject.thrift_spec)), None, ), # 12
+  )
+
+  def __init__(self, appDeploymentId=thrift_spec[1][4], appModuleId=None, computeHostId=None, executablePath=None, parallelism=thrift_spec[5][4], appDeploymentDescription=None, moduleLoadCmds=None, libPrependPaths=None, libAppendPaths=None, setEnvironment=None, preJobCommands=None, postJobCommands=None,):
+    self.appDeploymentId = appDeploymentId
+    self.appModuleId = appModuleId
+    self.computeHostId = computeHostId
+    self.executablePath = executablePath
+    self.parallelism = parallelism
+    self.appDeploymentDescription = appDeploymentDescription
+    self.moduleLoadCmds = moduleLoadCmds
+    self.libPrependPaths = libPrependPaths
+    self.libAppendPaths = libAppendPaths
+    self.setEnvironment = setEnvironment
+    self.preJobCommands = preJobCommands
+    self.postJobCommands = postJobCommands
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.appDeploymentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.appModuleId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.computeHostId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.executablePath = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.parallelism = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.appDeploymentDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.moduleLoadCmds = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = CommandObject()
+            _elem5.read(iprot)
+            self.moduleLoadCmds.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.LIST:
+          self.libPrependPaths = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = SetEnvPaths()
+            _elem11.read(iprot)
+            self.libPrependPaths.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.libAppendPaths = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = SetEnvPaths()
+            _elem17.read(iprot)
+            self.libAppendPaths.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.setEnvironment = []
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = SetEnvPaths()
+            _elem23.read(iprot)
+            self.setEnvironment.append(_elem23)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.LIST:
+          self.preJobCommands = []
+          (_etype27, _size24) = iprot.readListBegin()
+          for _i28 in xrange(_size24):
+            _elem29 = CommandObject()
+            _elem29.read(iprot)
+            self.preJobCommands.append(_elem29)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.postJobCommands = []
+          (_etype33, _size30) = iprot.readListBegin()
+          for _i34 in xrange(_size30):
+            _elem35 = CommandObject()
+            _elem35.read(iprot)
+            self.postJobCommands.append(_elem35)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ApplicationDeploymentDescription')
+    if self.appDeploymentId is not None:
+      oprot.writeFieldBegin('appDeploymentId', TType.STRING, 1)
+      oprot.writeString(self.appDeploymentId)
+      oprot.writeFieldEnd()
+    if self.appModuleId is not None:
+      oprot.writeFieldBegin('appModuleId', TType.STRING, 2)
+      oprot.writeString(self.appModuleId)
+      oprot.writeFieldEnd()
+    if self.computeHostId is not None:
+      oprot.writeFieldBegin('computeHostId', TType.STRING, 3)
+      oprot.writeString(self.computeHostId)
+      oprot.writeFieldEnd()
+    if self.executablePath is not None:
+      oprot.writeFieldBegin('executablePath', TType.STRING, 4)
+      oprot.writeString(self.executablePath)
+      oprot.writeFieldEnd()
+    if self.parallelism is not None:
+      oprot.writeFieldBegin('parallelism', TType.I32, 5)
+      oprot.writeI32(self.parallelism)
+      oprot.writeFieldEnd()
+    if self.appDeploymentDescription is not None:
+      oprot.writeFieldBegin('appDeploymentDescription', TType.STRING, 6)
+      oprot.writeString(self.appDeploymentDescription)
+      oprot.writeFieldEnd()
+    if self.moduleLoadCmds is not None:
+      oprot.writeFieldBegin('moduleLoadCmds', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.moduleLoadCmds))
+      for iter36 in self.moduleLoadCmds:
+        iter36.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.libPrependPaths is not None:
+      oprot.writeFieldBegin('libPrependPaths', TType.LIST, 8)
+      oprot.writeListBegin(TType.STRUCT, len(self.libPrependPaths))
+      for iter37 in self.libPrependPaths:
+        iter37.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.libAppendPaths is not None:
+      oprot.writeFieldBegin('libAppendPaths', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRUCT, len(self.libAppendPaths))
+      for iter38 in self.libAppendPaths:
+        iter38.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.setEnvironment is not None:
+      oprot.writeFieldBegin('setEnvironment', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.setEnvironment))
+      for iter39 in self.setEnvironment:
+        iter39.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.preJobCommands is not None:
+      oprot.writeFieldBegin('preJobCommands', TType.LIST, 11)
+      oprot.writeListBegin(TType.STRUCT, len(self.preJobCommands))
+      for iter40 in self.preJobCommands:
+        iter40.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.postJobCommands is not None:
+      oprot.writeFieldBegin('postJobCommands', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRUCT, len(self.postJobCommands))
+      for iter41 in self.postJobCommands:
+        iter41.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.appDeploymentId is None:
+      raise TProtocol.TProtocolException(message='Required field appDeploymentId is unset!')
+    if self.appModuleId is None:
+      raise TProtocol.TProtocolException(message='Required field appModuleId is unset!')
+    if self.computeHostId is None:
+      raise TProtocol.TProtocolException(message='Required field computeHostId is unset!')
+    if self.executablePath is None:
+      raise TProtocol.TProtocolException(message='Required field executablePath is unset!')
+    if self.parallelism is None:
+      raise TProtocol.TProtocolException(message='Required field parallelism is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.appDeploymentId)
+    value = (value * 31) ^ hash(self.appModuleId)
+    value = (value * 31) ^ hash(self.computeHostId)
+    value = (value * 31) ^ hash(self.executablePath)
+    value = (value * 31) ^ hash(self.parallelism)
+    value = (value * 31) ^ hash(self.appDeploymentDescription)
+    value = (value * 31) ^ hash(self.moduleLoadCmds)
+    value = (value * 31) ^ hash(self.libPrependPaths)
+    value = (value * 31) ^ hash(self.libAppendPaths)
+    value = (value * 31) ^ hash(self.setEnvironment)
+    value = (value * 31) ^ hash(self.preJobCommands)
+    value = (value * 31) ^ hash(self.postJobCommands)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc
new file mode 100644
index 0000000..73048c5
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.pyc
new file mode 100644
index 0000000..2afd1e2
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.py
new file mode 100644
index 0000000..757058a
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.py
@@ -0,0 +1,219 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ApplicationInterfaceDescription:
+  """
+  Application Interface Description
+
+  applicationModules:
+    Associate all application modules with versions which interface is applicable to.
+
+  applicationInputs:
+    Inputs to be passed to the application
+
+  applicationOutputs:
+    Outputs generated from the application
+
+
+  Attributes:
+   - applicationInterfaceId
+   - applicationName
+   - applicationDescription
+   - applicationModules
+   - applicationInputs
+   - applicationOutputs
+   - archiveWorkingDirectory
+   - hasOptionalFileInputs
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'applicationInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'applicationName', None, None, ), # 2
+    (3, TType.STRING, 'applicationDescription', None, None, ), # 3
+    (4, TType.LIST, 'applicationModules', (TType.STRING,None), None, ), # 4
+    (5, TType.LIST, 'applicationInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 5
+    (6, TType.LIST, 'applicationOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 6
+    (7, TType.BOOL, 'archiveWorkingDirectory', None, False, ), # 7
+    (8, TType.BOOL, 'hasOptionalFileInputs', None, None, ), # 8
+  )
+
+  def __init__(self, applicationInterfaceId=thrift_spec[1][4], applicationName=None, applicationDescription=None, applicationModules=None, applicationInputs=None, applicationOutputs=None, archiveWorkingDirectory=thrift_spec[7][4], hasOptionalFileInputs=None,):
+    self.applicationInterfaceId = applicationInterfaceId
+    self.applicationName = applicationName
+    self.applicationDescription = applicationDescription
+    self.applicationModules = applicationModules
+    self.applicationInputs = applicationInputs
+    self.applicationOutputs = applicationOutputs
+    self.archiveWorkingDirectory = archiveWorkingDirectory
+    self.hasOptionalFileInputs = hasOptionalFileInputs
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.applicationInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.applicationName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.applicationDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.LIST:
+          self.applicationModules = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString()
+            self.applicationModules.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.LIST:
+          self.applicationInputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem11.read(iprot)
+            self.applicationInputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.applicationOutputs = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem17.read(iprot)
+            self.applicationOutputs.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.BOOL:
+          self.archiveWorkingDirectory = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.BOOL:
+          self.hasOptionalFileInputs = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ApplicationInterfaceDescription')
+    if self.applicationInterfaceId is not None:
+      oprot.writeFieldBegin('applicationInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.applicationInterfaceId)
+      oprot.writeFieldEnd()
+    if self.applicationName is not None:
+      oprot.writeFieldBegin('applicationName', TType.STRING, 2)
+      oprot.writeString(self.applicationName)
+      oprot.writeFieldEnd()
+    if self.applicationDescription is not None:
+      oprot.writeFieldBegin('applicationDescription', TType.STRING, 3)
+      oprot.writeString(self.applicationDescription)
+      oprot.writeFieldEnd()
+    if self.applicationModules is not None:
+      oprot.writeFieldBegin('applicationModules', TType.LIST, 4)
+      oprot.writeListBegin(TType.STRING, len(self.applicationModules))
+      for iter18 in self.applicationModules:
+        oprot.writeString(iter18)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.applicationInputs is not None:
+      oprot.writeFieldBegin('applicationInputs', TType.LIST, 5)
+      oprot.writeListBegin(TType.STRUCT, len(self.applicationInputs))
+      for iter19 in self.applicationInputs:
+        iter19.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.applicationOutputs is not None:
+      oprot.writeFieldBegin('applicationOutputs', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.applicationOutputs))
+      for iter20 in self.applicationOutputs:
+        iter20.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.archiveWorkingDirectory is not None:
+      oprot.writeFieldBegin('archiveWorkingDirectory', TType.BOOL, 7)
+      oprot.writeBool(self.archiveWorkingDirectory)
+      oprot.writeFieldEnd()
+    if self.hasOptionalFileInputs is not None:
+      oprot.writeFieldBegin('hasOptionalFileInputs', TType.BOOL, 8)
+      oprot.writeBool(self.hasOptionalFileInputs)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.applicationInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field applicationInterfaceId is unset!')
+    if self.applicationName is None:
+      raise TProtocol.TProtocolException(message='Required field applicationName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.applicationInterfaceId)
+    value = (value * 31) ^ hash(self.applicationName)
+    value = (value * 31) ^ hash(self.applicationDescription)
+    value = (value * 31) ^ hash(self.applicationModules)
+    value = (value * 31) ^ hash(self.applicationInputs)
+    value = (value * 31) ^ hash(self.applicationOutputs)
+    value = (value * 31) ^ hash(self.archiveWorkingDirectory)
+    value = (value * 31) ^ hash(self.hasOptionalFileInputs)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.pyc
new file mode 100644
index 0000000..3afed92
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/appinterface/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.pyc
new file mode 100644
index 0000000..2a2fba7
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[16/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.py
new file mode 100644
index 0000000..dc2b095
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.py
@@ -0,0 +1,406 @@
+#
+# 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.
+#
+
+from thrift.Thrift import *
+
+
+class TProtocolException(TException):
+  """Custom Protocol Exception class"""
+
+  UNKNOWN = 0
+  INVALID_DATA = 1
+  NEGATIVE_SIZE = 2
+  SIZE_LIMIT = 3
+  BAD_VERSION = 4
+
+  def __init__(self, type=UNKNOWN, message=None):
+    TException.__init__(self, message)
+    self.type = type
+
+
+class TProtocolBase:
+  """Base class for Thrift protocol driver."""
+
+  def __init__(self, trans):
+    self.trans = trans
+
+  def writeMessageBegin(self, name, ttype, seqid):
+    pass
+
+  def writeMessageEnd(self):
+    pass
+
+  def writeStructBegin(self, name):
+    pass
+
+  def writeStructEnd(self):
+    pass
+
+  def writeFieldBegin(self, name, ttype, fid):
+    pass
+
+  def writeFieldEnd(self):
+    pass
+
+  def writeFieldStop(self):
+    pass
+
+  def writeMapBegin(self, ktype, vtype, size):
+    pass
+
+  def writeMapEnd(self):
+    pass
+
+  def writeListBegin(self, etype, size):
+    pass
+
+  def writeListEnd(self):
+    pass
+
+  def writeSetBegin(self, etype, size):
+    pass
+
+  def writeSetEnd(self):
+    pass
+
+  def writeBool(self, bool_val):
+    pass
+
+  def writeByte(self, byte):
+    pass
+
+  def writeI16(self, i16):
+    pass
+
+  def writeI32(self, i32):
+    pass
+
+  def writeI64(self, i64):
+    pass
+
+  def writeDouble(self, dub):
+    pass
+
+  def writeString(self, str_val):
+    pass
+
+  def readMessageBegin(self):
+    pass
+
+  def readMessageEnd(self):
+    pass
+
+  def readStructBegin(self):
+    pass
+
+  def readStructEnd(self):
+    pass
+
+  def readFieldBegin(self):
+    pass
+
+  def readFieldEnd(self):
+    pass
+
+  def readMapBegin(self):
+    pass
+
+  def readMapEnd(self):
+    pass
+
+  def readListBegin(self):
+    pass
+
+  def readListEnd(self):
+    pass
+
+  def readSetBegin(self):
+    pass
+
+  def readSetEnd(self):
+    pass
+
+  def readBool(self):
+    pass
+
+  def readByte(self):
+    pass
+
+  def readI16(self):
+    pass
+
+  def readI32(self):
+    pass
+
+  def readI64(self):
+    pass
+
+  def readDouble(self):
+    pass
+
+  def readString(self):
+    pass
+
+  def skip(self, ttype):
+    if ttype == TType.STOP:
+      return
+    elif ttype == TType.BOOL:
+      self.readBool()
+    elif ttype == TType.BYTE:
+      self.readByte()
+    elif ttype == TType.I16:
+      self.readI16()
+    elif ttype == TType.I32:
+      self.readI32()
+    elif ttype == TType.I64:
+      self.readI64()
+    elif ttype == TType.DOUBLE:
+      self.readDouble()
+    elif ttype == TType.STRING:
+      self.readString()
+    elif ttype == TType.STRUCT:
+      name = self.readStructBegin()
+      while True:
+        (name, ttype, id) = self.readFieldBegin()
+        if ttype == TType.STOP:
+          break
+        self.skip(ttype)
+        self.readFieldEnd()
+      self.readStructEnd()
+    elif ttype == TType.MAP:
+      (ktype, vtype, size) = self.readMapBegin()
+      for i in xrange(size):
+        self.skip(ktype)
+        self.skip(vtype)
+      self.readMapEnd()
+    elif ttype == TType.SET:
+      (etype, size) = self.readSetBegin()
+      for i in xrange(size):
+        self.skip(etype)
+      self.readSetEnd()
+    elif ttype == TType.LIST:
+      (etype, size) = self.readListBegin()
+      for i in xrange(size):
+        self.skip(etype)
+      self.readListEnd()
+
+  # tuple of: ( 'reader method' name, is_container bool, 'writer_method' name )
+  _TTYPE_HANDLERS = (
+       (None, None, False),  # 0 TType.STOP
+       (None, None, False),  # 1 TType.VOID # TODO: handle void?
+       ('readBool', 'writeBool', False),  # 2 TType.BOOL
+       ('readByte',  'writeByte', False),  # 3 TType.BYTE and I08
+       ('readDouble', 'writeDouble', False),  # 4 TType.DOUBLE
+       (None, None, False),  # 5 undefined
+       ('readI16', 'writeI16', False),  # 6 TType.I16
+       (None, None, False),  # 7 undefined
+       ('readI32', 'writeI32', False),  # 8 TType.I32
+       (None, None, False),  # 9 undefined
+       ('readI64', 'writeI64', False),  # 10 TType.I64
+       ('readString', 'writeString', False),  # 11 TType.STRING and UTF7
+       ('readContainerStruct', 'writeContainerStruct', True),  # 12 *.STRUCT
+       ('readContainerMap', 'writeContainerMap', True),  # 13 TType.MAP
+       ('readContainerSet', 'writeContainerSet', True),  # 14 TType.SET
+       ('readContainerList', 'writeContainerList', True),  # 15 TType.LIST
+       (None, None, False),  # 16 TType.UTF8 # TODO: handle utf8 types?
+       (None, None, False)  # 17 TType.UTF16 # TODO: handle utf16 types?
+      )
+
+  def readFieldByTType(self, ttype, spec):
+    try:
+      (r_handler, w_handler, is_container) = self._TTYPE_HANDLERS[ttype]
+    except IndexError:
+      raise TProtocolException(type=TProtocolException.INVALID_DATA,
+                               message='Invalid field type %d' % (ttype))
+    if r_handler is None:
+      raise TProtocolException(type=TProtocolException.INVALID_DATA,
+                               message='Invalid field type %d' % (ttype))
+    reader = getattr(self, r_handler)
+    if not is_container:
+      return reader()
+    return reader(spec)
+
+  def readContainerList(self, spec):
+    results = []
+    ttype, tspec = spec[0], spec[1]
+    r_handler = self._TTYPE_HANDLERS[ttype][0]
+    reader = getattr(self, r_handler)
+    (list_type, list_len) = self.readListBegin()
+    if tspec is None:
+      # list values are simple types
+      for idx in xrange(list_len):
+        results.append(reader())
+    else:
+      # this is like an inlined readFieldByTType
+      container_reader = self._TTYPE_HANDLERS[list_type][0]
+      val_reader = getattr(self, container_reader)
+      for idx in xrange(list_len):
+        val = val_reader(tspec)
+        results.append(val)
+    self.readListEnd()
+    return results
+
+  def readContainerSet(self, spec):
+    results = set()
+    ttype, tspec = spec[0], spec[1]
+    r_handler = self._TTYPE_HANDLERS[ttype][0]
+    reader = getattr(self, r_handler)
+    (set_type, set_len) = self.readSetBegin()
+    if tspec is None:
+      # set members are simple types
+      for idx in xrange(set_len):
+        results.add(reader())
+    else:
+      container_reader = self._TTYPE_HANDLERS[set_type][0]
+      val_reader = getattr(self, container_reader)
+      for idx in xrange(set_len):
+        results.add(val_reader(tspec))
+    self.readSetEnd()
+    return results
+
+  def readContainerStruct(self, spec):
+    (obj_class, obj_spec) = spec
+    obj = obj_class()
+    obj.read(self)
+    return obj
+
+  def readContainerMap(self, spec):
+    results = dict()
+    key_ttype, key_spec = spec[0], spec[1]
+    val_ttype, val_spec = spec[2], spec[3]
+    (map_ktype, map_vtype, map_len) = self.readMapBegin()
+    # TODO: compare types we just decoded with thrift_spec and
+    # abort/skip if types disagree
+    key_reader = getattr(self, self._TTYPE_HANDLERS[key_ttype][0])
+    val_reader = getattr(self, self._TTYPE_HANDLERS[val_ttype][0])
+    # list values are simple types
+    for idx in xrange(map_len):
+      if key_spec is None:
+        k_val = key_reader()
+      else:
+        k_val = self.readFieldByTType(key_ttype, key_spec)
+      if val_spec is None:
+        v_val = val_reader()
+      else:
+        v_val = self.readFieldByTType(val_ttype, val_spec)
+      # this raises a TypeError with unhashable keys types
+      # i.e. this fails: d=dict(); d[[0,1]] = 2
+      results[k_val] = v_val
+    self.readMapEnd()
+    return results
+
+  def readStruct(self, obj, thrift_spec):
+    self.readStructBegin()
+    while True:
+      (fname, ftype, fid) = self.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      try:
+        field = thrift_spec[fid]
+      except IndexError:
+        self.skip(ftype)
+      else:
+        if field is not None and ftype == field[1]:
+          fname = field[2]
+          fspec = field[3]
+          val = self.readFieldByTType(ftype, fspec)
+          setattr(obj, fname, val)
+        else:
+          self.skip(ftype)
+      self.readFieldEnd()
+    self.readStructEnd()
+
+  def writeContainerStruct(self, val, spec):
+    val.write(self)
+
+  def writeContainerList(self, val, spec):
+    self.writeListBegin(spec[0], len(val))
+    r_handler, w_handler, is_container = self._TTYPE_HANDLERS[spec[0]]
+    e_writer = getattr(self, w_handler)
+    if not is_container:
+      for elem in val:
+        e_writer(elem)
+    else:
+      for elem in val:
+        e_writer(elem, spec[1])
+    self.writeListEnd()
+
+  def writeContainerSet(self, val, spec):
+    self.writeSetBegin(spec[0], len(val))
+    r_handler, w_handler, is_container = self._TTYPE_HANDLERS[spec[0]]
+    e_writer = getattr(self, w_handler)
+    if not is_container:
+      for elem in val:
+        e_writer(elem)
+    else:
+      for elem in val:
+        e_writer(elem, spec[1])
+    self.writeSetEnd()
+
+  def writeContainerMap(self, val, spec):
+    k_type = spec[0]
+    v_type = spec[2]
+    ignore, ktype_name, k_is_container = self._TTYPE_HANDLERS[k_type]
+    ignore, vtype_name, v_is_container = self._TTYPE_HANDLERS[v_type]
+    k_writer = getattr(self, ktype_name)
+    v_writer = getattr(self, vtype_name)
+    self.writeMapBegin(k_type, v_type, len(val))
+    for m_key, m_val in val.iteritems():
+      if not k_is_container:
+        k_writer(m_key)
+      else:
+        k_writer(m_key, spec[1])
+      if not v_is_container:
+        v_writer(m_val)
+      else:
+        v_writer(m_val, spec[3])
+    self.writeMapEnd()
+
+  def writeStruct(self, obj, thrift_spec):
+    self.writeStructBegin(obj.__class__.__name__)
+    for field in thrift_spec:
+      if field is None:
+        continue
+      fname = field[2]
+      val = getattr(obj, fname)
+      if val is None:
+        # skip writing out unset fields
+        continue
+      fid = field[0]
+      ftype = field[1]
+      fspec = field[3]
+      # get the writer method for this value
+      self.writeFieldBegin(fname, ftype, fid)
+      self.writeFieldByTType(ftype, val, fspec)
+      self.writeFieldEnd()
+    self.writeFieldStop()
+    self.writeStructEnd()
+
+  def writeFieldByTType(self, ttype, val, spec):
+    r_handler, w_handler, is_container = self._TTYPE_HANDLERS[ttype]
+    writer = getattr(self, w_handler)
+    if is_container:
+      writer(val, spec)
+    else:
+      writer(val)
+
+
+class TProtocolFactory:
+  def getProtocol(self, trans):
+    pass

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.pyc
new file mode 100644
index 0000000..f56fe4a
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TProtocol.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.py
new file mode 100644
index 0000000..7eefb45
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.py
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+__all__ = ['fastbinary', 'TBase', 'TBinaryProtocol', 'TCompactProtocol', 'TJSONProtocol', 'TProtocol']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.pyc
new file mode 100644
index 0000000..ca53f73
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/fastbinary.c
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/fastbinary.c b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/fastbinary.c
new file mode 100644
index 0000000..2ce5660
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/fastbinary.c
@@ -0,0 +1,1219 @@
+/*
+ * 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.
+ */
+
+#include <Python.h>
+#include "cStringIO.h"
+#include <stdint.h>
+#ifndef _WIN32
+# include <stdbool.h>
+# include <netinet/in.h>
+#else
+# include <WinSock2.h>
+# pragma comment (lib, "ws2_32.lib")
+# define BIG_ENDIAN (4321)
+# define LITTLE_ENDIAN (1234)
+# define BYTE_ORDER LITTLE_ENDIAN
+# if defined(_MSC_VER) && _MSC_VER < 1600
+   typedef int _Bool;
+#  define bool _Bool
+#  define false 0 
+#  define true 1
+# endif
+# define inline __inline
+#endif
+
+/* Fix endianness issues on Solaris */
+#if defined (__SVR4) && defined (__sun)
+ #if defined(__i386) && !defined(__i386__)
+  #define __i386__
+ #endif
+
+ #ifndef BIG_ENDIAN
+  #define BIG_ENDIAN (4321)
+ #endif
+ #ifndef LITTLE_ENDIAN
+  #define LITTLE_ENDIAN (1234)
+ #endif
+
+ /* I386 is LE, even on Solaris */
+ #if !defined(BYTE_ORDER) && defined(__i386__)
+  #define BYTE_ORDER LITTLE_ENDIAN
+ #endif
+#endif
+
+// TODO(dreiss): defval appears to be unused.  Look into removing it.
+// TODO(dreiss): Make parse_spec_args recursive, and cache the output
+//               permanently in the object.  (Malloc and orphan.)
+// TODO(dreiss): Why do we need cStringIO for reading, why not just char*?
+//               Can cStringIO let us work with a BufferedTransport?
+// TODO(dreiss): Don't ignore the rv from cwrite (maybe).
+
+/* ====== BEGIN UTILITIES ====== */
+
+#define INIT_OUTBUF_SIZE 128
+
+// Stolen out of TProtocol.h.
+// It would be a huge pain to have both get this from one place.
+typedef enum TType {
+  T_STOP       = 0,
+  T_VOID       = 1,
+  T_BOOL       = 2,
+  T_BYTE       = 3,
+  T_I08        = 3,
+  T_I16        = 6,
+  T_I32        = 8,
+  T_U64        = 9,
+  T_I64        = 10,
+  T_DOUBLE     = 4,
+  T_STRING     = 11,
+  T_UTF7       = 11,
+  T_STRUCT     = 12,
+  T_MAP        = 13,
+  T_SET        = 14,
+  T_LIST       = 15,
+  T_UTF8       = 16,
+  T_UTF16      = 17
+} TType;
+
+#ifndef __BYTE_ORDER
+# if defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)
+#  define __BYTE_ORDER BYTE_ORDER
+#  define __LITTLE_ENDIAN LITTLE_ENDIAN
+#  define __BIG_ENDIAN BIG_ENDIAN
+# else
+#  error "Cannot determine endianness"
+# endif
+#endif
+
+// Same comment as the enum.  Sorry.
+#if __BYTE_ORDER == __BIG_ENDIAN
+# define ntohll(n) (n)
+# define htonll(n) (n)
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+# if defined(__GNUC__) && defined(__GLIBC__)
+#  include <byteswap.h>
+#  define ntohll(n) bswap_64(n)
+#  define htonll(n) bswap_64(n)
+# else /* GNUC & GLIBC */
+#  define ntohll(n) ( (((unsigned long long)ntohl(n)) << 32) + ntohl(n >> 32) )
+#  define htonll(n) ( (((unsigned long long)htonl(n)) << 32) + htonl(n >> 32) )
+# endif /* GNUC & GLIBC */
+#else /* __BYTE_ORDER */
+# error "Can't define htonll or ntohll!"
+#endif
+
+// Doing a benchmark shows that interning actually makes a difference, amazingly.
+#define INTERN_STRING(value) _intern_ ## value
+
+#define INT_CONV_ERROR_OCCURRED(v) ( ((v) == -1) && PyErr_Occurred() )
+#define CHECK_RANGE(v, min, max) ( ((v) <= (max)) && ((v) >= (min)) )
+
+// Py_ssize_t was not defined before Python 2.5
+#if (PY_VERSION_HEX < 0x02050000)
+typedef int Py_ssize_t;
+#endif
+
+/**
+ * A cache of the spec_args for a set or list,
+ * so we don't have to keep calling PyTuple_GET_ITEM.
+ */
+typedef struct {
+  TType element_type;
+  PyObject* typeargs;
+} SetListTypeArgs;
+
+/**
+ * A cache of the spec_args for a map,
+ * so we don't have to keep calling PyTuple_GET_ITEM.
+ */
+typedef struct {
+  TType ktag;
+  TType vtag;
+  PyObject* ktypeargs;
+  PyObject* vtypeargs;
+} MapTypeArgs;
+
+/**
+ * A cache of the spec_args for a struct,
+ * so we don't have to keep calling PyTuple_GET_ITEM.
+ */
+typedef struct {
+  PyObject* klass;
+  PyObject* spec;
+} StructTypeArgs;
+
+/**
+ * A cache of the item spec from a struct specification,
+ * so we don't have to keep calling PyTuple_GET_ITEM.
+ */
+typedef struct {
+  int tag;
+  TType type;
+  PyObject* attrname;
+  PyObject* typeargs;
+  PyObject* defval;
+} StructItemSpec;
+
+/**
+ * A cache of the two key attributes of a CReadableTransport,
+ * so we don't have to keep calling PyObject_GetAttr.
+ */
+typedef struct {
+  PyObject* stringiobuf;
+  PyObject* refill_callable;
+} DecodeBuffer;
+
+/** Pointer to interned string to speed up attribute lookup. */
+static PyObject* INTERN_STRING(cstringio_buf);
+/** Pointer to interned string to speed up attribute lookup. */
+static PyObject* INTERN_STRING(cstringio_refill);
+
+static inline bool
+check_ssize_t_32(Py_ssize_t len) {
+  // error from getting the int
+  if (INT_CONV_ERROR_OCCURRED(len)) {
+    return false;
+  }
+  if (!CHECK_RANGE(len, 0, INT32_MAX)) {
+    PyErr_SetString(PyExc_OverflowError, "string size out of range");
+    return false;
+  }
+  return true;
+}
+
+static inline bool
+parse_pyint(PyObject* o, int32_t* ret, int32_t min, int32_t max) {
+  long val = PyInt_AsLong(o);
+
+  if (INT_CONV_ERROR_OCCURRED(val)) {
+    return false;
+  }
+  if (!CHECK_RANGE(val, min, max)) {
+    PyErr_SetString(PyExc_OverflowError, "int out of range");
+    return false;
+  }
+
+  *ret = (int32_t) val;
+  return true;
+}
+
+
+/* --- FUNCTIONS TO PARSE STRUCT SPECIFICATOINS --- */
+
+static bool
+parse_set_list_args(SetListTypeArgs* dest, PyObject* typeargs) {
+  if (PyTuple_Size(typeargs) != 2) {
+    PyErr_SetString(PyExc_TypeError, "expecting tuple of size 2 for list/set type args");
+    return false;
+  }
+
+  dest->element_type = PyInt_AsLong(PyTuple_GET_ITEM(typeargs, 0));
+  if (INT_CONV_ERROR_OCCURRED(dest->element_type)) {
+    return false;
+  }
+
+  dest->typeargs = PyTuple_GET_ITEM(typeargs, 1);
+
+  return true;
+}
+
+static bool
+parse_map_args(MapTypeArgs* dest, PyObject* typeargs) {
+  if (PyTuple_Size(typeargs) != 4) {
+    PyErr_SetString(PyExc_TypeError, "expecting 4 arguments for typeargs to map");
+    return false;
+  }
+
+  dest->ktag = PyInt_AsLong(PyTuple_GET_ITEM(typeargs, 0));
+  if (INT_CONV_ERROR_OCCURRED(dest->ktag)) {
+    return false;
+  }
+
+  dest->vtag = PyInt_AsLong(PyTuple_GET_ITEM(typeargs, 2));
+  if (INT_CONV_ERROR_OCCURRED(dest->vtag)) {
+    return false;
+  }
+
+  dest->ktypeargs = PyTuple_GET_ITEM(typeargs, 1);
+  dest->vtypeargs = PyTuple_GET_ITEM(typeargs, 3);
+
+  return true;
+}
+
+static bool
+parse_struct_args(StructTypeArgs* dest, PyObject* typeargs) {
+  if (PyTuple_Size(typeargs) != 2) {
+    PyErr_SetString(PyExc_TypeError, "expecting tuple of size 2 for struct args");
+    return false;
+  }
+
+  dest->klass = PyTuple_GET_ITEM(typeargs, 0);
+  dest->spec = PyTuple_GET_ITEM(typeargs, 1);
+
+  return true;
+}
+
+static int
+parse_struct_item_spec(StructItemSpec* dest, PyObject* spec_tuple) {
+
+  // i'd like to use ParseArgs here, but it seems to be a bottleneck.
+  if (PyTuple_Size(spec_tuple) != 5) {
+    PyErr_SetString(PyExc_TypeError, "expecting 5 arguments for spec tuple");
+    return false;
+  }
+
+  dest->tag = PyInt_AsLong(PyTuple_GET_ITEM(spec_tuple, 0));
+  if (INT_CONV_ERROR_OCCURRED(dest->tag)) {
+    return false;
+  }
+
+  dest->type = PyInt_AsLong(PyTuple_GET_ITEM(spec_tuple, 1));
+  if (INT_CONV_ERROR_OCCURRED(dest->type)) {
+    return false;
+  }
+
+  dest->attrname = PyTuple_GET_ITEM(spec_tuple, 2);
+  dest->typeargs = PyTuple_GET_ITEM(spec_tuple, 3);
+  dest->defval = PyTuple_GET_ITEM(spec_tuple, 4);
+  return true;
+}
+
+/* ====== END UTILITIES ====== */
+
+
+/* ====== BEGIN WRITING FUNCTIONS ====== */
+
+/* --- LOW-LEVEL WRITING FUNCTIONS --- */
+
+static void writeByte(PyObject* outbuf, int8_t val) {
+  int8_t net = val;
+  PycStringIO->cwrite(outbuf, (char*)&net, sizeof(int8_t));
+}
+
+static void writeI16(PyObject* outbuf, int16_t val) {
+  int16_t net = (int16_t)htons(val);
+  PycStringIO->cwrite(outbuf, (char*)&net, sizeof(int16_t));
+}
+
+static void writeI32(PyObject* outbuf, int32_t val) {
+  int32_t net = (int32_t)htonl(val);
+  PycStringIO->cwrite(outbuf, (char*)&net, sizeof(int32_t));
+}
+
+static void writeI64(PyObject* outbuf, int64_t val) {
+  int64_t net = (int64_t)htonll(val);
+  PycStringIO->cwrite(outbuf, (char*)&net, sizeof(int64_t));
+}
+
+static void writeDouble(PyObject* outbuf, double dub) {
+  // Unfortunately, bitwise_cast doesn't work in C.  Bad C!
+  union {
+    double f;
+    int64_t t;
+  } transfer;
+  transfer.f = dub;
+  writeI64(outbuf, transfer.t);
+}
+
+
+/* --- MAIN RECURSIVE OUTPUT FUCNTION -- */
+
+static int
+output_val(PyObject* output, PyObject* value, TType type, PyObject* typeargs) {
+  /*
+   * Refcounting Strategy:
+   *
+   * We assume that elements of the thrift_spec tuple are not going to be
+   * mutated, so we don't ref count those at all. Other than that, we try to
+   * keep a reference to all the user-created objects while we work with them.
+   * output_val assumes that a reference is already held. The *caller* is
+   * responsible for handling references
+   */
+
+  switch (type) {
+
+  case T_BOOL: {
+    int v = PyObject_IsTrue(value);
+    if (v == -1) {
+      return false;
+    }
+
+    writeByte(output, (int8_t) v);
+    break;
+  }
+  case T_I08: {
+    int32_t val;
+
+    if (!parse_pyint(value, &val, INT8_MIN, INT8_MAX)) {
+      return false;
+    }
+
+    writeByte(output, (int8_t) val);
+    break;
+  }
+  case T_I16: {
+    int32_t val;
+
+    if (!parse_pyint(value, &val, INT16_MIN, INT16_MAX)) {
+      return false;
+    }
+
+    writeI16(output, (int16_t) val);
+    break;
+  }
+  case T_I32: {
+    int32_t val;
+
+    if (!parse_pyint(value, &val, INT32_MIN, INT32_MAX)) {
+      return false;
+    }
+
+    writeI32(output, val);
+    break;
+  }
+  case T_I64: {
+    int64_t nval = PyLong_AsLongLong(value);
+
+    if (INT_CONV_ERROR_OCCURRED(nval)) {
+      return false;
+    }
+
+    if (!CHECK_RANGE(nval, INT64_MIN, INT64_MAX)) {
+      PyErr_SetString(PyExc_OverflowError, "int out of range");
+      return false;
+    }
+
+    writeI64(output, nval);
+    break;
+  }
+
+  case T_DOUBLE: {
+    double nval = PyFloat_AsDouble(value);
+    if (nval == -1.0 && PyErr_Occurred()) {
+      return false;
+    }
+
+    writeDouble(output, nval);
+    break;
+  }
+
+  case T_STRING: {
+    Py_ssize_t len = PyString_Size(value);
+
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    writeI32(output, (int32_t) len);
+    PycStringIO->cwrite(output, PyString_AsString(value), (int32_t) len);
+    break;
+  }
+
+  case T_LIST:
+  case T_SET: {
+    Py_ssize_t len;
+    SetListTypeArgs parsedargs;
+    PyObject *item;
+    PyObject *iterator;
+
+    if (!parse_set_list_args(&parsedargs, typeargs)) {
+      return false;
+    }
+
+    len = PyObject_Length(value);
+
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    writeByte(output, parsedargs.element_type);
+    writeI32(output, (int32_t) len);
+
+    iterator =  PyObject_GetIter(value);
+    if (iterator == NULL) {
+      return false;
+    }
+
+    while ((item = PyIter_Next(iterator))) {
+      if (!output_val(output, item, parsedargs.element_type, parsedargs.typeargs)) {
+        Py_DECREF(item);
+        Py_DECREF(iterator);
+        return false;
+      }
+      Py_DECREF(item);
+    }
+
+    Py_DECREF(iterator);
+
+    if (PyErr_Occurred()) {
+      return false;
+    }
+
+    break;
+  }
+
+  case T_MAP: {
+    PyObject *k, *v;
+    Py_ssize_t pos = 0;
+    Py_ssize_t len;
+
+    MapTypeArgs parsedargs;
+
+    len = PyDict_Size(value);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    if (!parse_map_args(&parsedargs, typeargs)) {
+      return false;
+    }
+
+    writeByte(output, parsedargs.ktag);
+    writeByte(output, parsedargs.vtag);
+    writeI32(output, len);
+
+    // TODO(bmaurer): should support any mapping, not just dicts
+    while (PyDict_Next(value, &pos, &k, &v)) {
+      // TODO(dreiss): Think hard about whether these INCREFs actually
+      //               turn any unsafe scenarios into safe scenarios.
+      Py_INCREF(k);
+      Py_INCREF(v);
+
+      if (!output_val(output, k, parsedargs.ktag, parsedargs.ktypeargs)
+          || !output_val(output, v, parsedargs.vtag, parsedargs.vtypeargs)) {
+        Py_DECREF(k);
+        Py_DECREF(v);
+        return false;
+      }
+      Py_DECREF(k);
+      Py_DECREF(v);
+    }
+    break;
+  }
+
+  // TODO(dreiss): Consider breaking this out as a function
+  //               the way we did for decode_struct.
+  case T_STRUCT: {
+    StructTypeArgs parsedargs;
+    Py_ssize_t nspec;
+    Py_ssize_t i;
+
+    if (!parse_struct_args(&parsedargs, typeargs)) {
+      return false;
+    }
+
+    nspec = PyTuple_Size(parsedargs.spec);
+
+    if (nspec == -1) {
+      return false;
+    }
+
+    for (i = 0; i < nspec; i++) {
+      StructItemSpec parsedspec;
+      PyObject* spec_tuple;
+      PyObject* instval = NULL;
+
+      spec_tuple = PyTuple_GET_ITEM(parsedargs.spec, i);
+      if (spec_tuple == Py_None) {
+        continue;
+      }
+
+      if (!parse_struct_item_spec (&parsedspec, spec_tuple)) {
+        return false;
+      }
+
+      instval = PyObject_GetAttr(value, parsedspec.attrname);
+
+      if (!instval) {
+        return false;
+      }
+
+      if (instval == Py_None) {
+        Py_DECREF(instval);
+        continue;
+      }
+
+      writeByte(output, (int8_t) parsedspec.type);
+      writeI16(output, parsedspec.tag);
+
+      if (!output_val(output, instval, parsedspec.type, parsedspec.typeargs)) {
+        Py_DECREF(instval);
+        return false;
+      }
+
+      Py_DECREF(instval);
+    }
+
+    writeByte(output, (int8_t)T_STOP);
+    break;
+  }
+
+  case T_STOP:
+  case T_VOID:
+  case T_UTF16:
+  case T_UTF8:
+  case T_U64:
+  default:
+    PyErr_SetString(PyExc_TypeError, "Unexpected TType");
+    return false;
+
+  }
+
+  return true;
+}
+
+
+/* --- TOP-LEVEL WRAPPER FOR OUTPUT -- */
+
+static PyObject *
+encode_binary(PyObject *self, PyObject *args) {
+  PyObject* enc_obj;
+  PyObject* type_args;
+  PyObject* buf;
+  PyObject* ret = NULL;
+
+  if (!PyArg_ParseTuple(args, "OO", &enc_obj, &type_args)) {
+    return NULL;
+  }
+
+  buf = PycStringIO->NewOutput(INIT_OUTBUF_SIZE);
+  if (output_val(buf, enc_obj, T_STRUCT, type_args)) {
+    ret = PycStringIO->cgetvalue(buf);
+  }
+
+  Py_DECREF(buf);
+  return ret;
+}
+
+/* ====== END WRITING FUNCTIONS ====== */
+
+
+/* ====== BEGIN READING FUNCTIONS ====== */
+
+/* --- LOW-LEVEL READING FUNCTIONS --- */
+
+static void
+free_decodebuf(DecodeBuffer* d) {
+  Py_XDECREF(d->stringiobuf);
+  Py_XDECREF(d->refill_callable);
+}
+
+static bool
+decode_buffer_from_obj(DecodeBuffer* dest, PyObject* obj) {
+  dest->stringiobuf = PyObject_GetAttr(obj, INTERN_STRING(cstringio_buf));
+  if (!dest->stringiobuf) {
+    return false;
+  }
+
+  if (!PycStringIO_InputCheck(dest->stringiobuf)) {
+    free_decodebuf(dest);
+    PyErr_SetString(PyExc_TypeError, "expecting stringio input");
+    return false;
+  }
+
+  dest->refill_callable = PyObject_GetAttr(obj, INTERN_STRING(cstringio_refill));
+
+  if(!dest->refill_callable) {
+    free_decodebuf(dest);
+    return false;
+  }
+
+  if (!PyCallable_Check(dest->refill_callable)) {
+    free_decodebuf(dest);
+    PyErr_SetString(PyExc_TypeError, "expecting callable");
+    return false;
+  }
+
+  return true;
+}
+
+static bool readBytes(DecodeBuffer* input, char** output, int len) {
+  int read;
+
+  // TODO(dreiss): Don't fear the malloc.  Think about taking a copy of
+  //               the partial read instead of forcing the transport
+  //               to prepend it to its buffer.
+
+  read = PycStringIO->cread(input->stringiobuf, output, len);
+
+  if (read == len) {
+    return true;
+  } else if (read == -1) {
+    return false;
+  } else {
+    PyObject* newiobuf;
+
+    // using building functions as this is a rare codepath
+    newiobuf = PyObject_CallFunction(
+        input->refill_callable, "s#i", *output, read, len, NULL);
+    if (newiobuf == NULL) {
+      return false;
+    }
+
+    // must do this *AFTER* the call so that we don't deref the io buffer
+    Py_CLEAR(input->stringiobuf);
+    input->stringiobuf = newiobuf;
+
+    read = PycStringIO->cread(input->stringiobuf, output, len);
+
+    if (read == len) {
+      return true;
+    } else if (read == -1) {
+      return false;
+    } else {
+      // TODO(dreiss): This could be a valid code path for big binary blobs.
+      PyErr_SetString(PyExc_TypeError,
+          "refill claimed to have refilled the buffer, but didn't!!");
+      return false;
+    }
+  }
+}
+
+static int8_t readByte(DecodeBuffer* input) {
+  char* buf;
+  if (!readBytes(input, &buf, sizeof(int8_t))) {
+    return -1;
+  }
+
+  return *(int8_t*) buf;
+}
+
+static int16_t readI16(DecodeBuffer* input) {
+  char* buf;
+  if (!readBytes(input, &buf, sizeof(int16_t))) {
+    return -1;
+  }
+
+  return (int16_t) ntohs(*(int16_t*) buf);
+}
+
+static int32_t readI32(DecodeBuffer* input) {
+  char* buf;
+  if (!readBytes(input, &buf, sizeof(int32_t))) {
+    return -1;
+  }
+  return (int32_t) ntohl(*(int32_t*) buf);
+}
+
+
+static int64_t readI64(DecodeBuffer* input) {
+  char* buf;
+  if (!readBytes(input, &buf, sizeof(int64_t))) {
+    return -1;
+  }
+
+  return (int64_t) ntohll(*(int64_t*) buf);
+}
+
+static double readDouble(DecodeBuffer* input) {
+  union {
+    int64_t f;
+    double t;
+  } transfer;
+
+  transfer.f = readI64(input);
+  if (transfer.f == -1) {
+    return -1;
+  }
+  return transfer.t;
+}
+
+static bool
+checkTypeByte(DecodeBuffer* input, TType expected) {
+  TType got = readByte(input);
+  if (INT_CONV_ERROR_OCCURRED(got)) {
+    return false;
+  }
+
+  if (expected != got) {
+    PyErr_SetString(PyExc_TypeError, "got wrong ttype while reading field");
+    return false;
+  }
+  return true;
+}
+
+static bool
+skip(DecodeBuffer* input, TType type) {
+#define SKIPBYTES(n) \
+  do { \
+    if (!readBytes(input, &dummy_buf, (n))) { \
+      return false; \
+    } \
+  } while(0)
+
+  char* dummy_buf;
+
+  switch (type) {
+
+  case T_BOOL:
+  case T_I08: SKIPBYTES(1); break;
+  case T_I16: SKIPBYTES(2); break;
+  case T_I32: SKIPBYTES(4); break;
+  case T_I64:
+  case T_DOUBLE: SKIPBYTES(8); break;
+
+  case T_STRING: {
+    // TODO(dreiss): Find out if these check_ssize_t32s are really necessary.
+    int len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+    SKIPBYTES(len);
+    break;
+  }
+
+  case T_LIST:
+  case T_SET: {
+    TType etype;
+    int len, i;
+
+    etype = readByte(input);
+    if (etype == -1) {
+      return false;
+    }
+
+    len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    for (i = 0; i < len; i++) {
+      if (!skip(input, etype)) {
+        return false;
+      }
+    }
+    break;
+  }
+
+  case T_MAP: {
+    TType ktype, vtype;
+    int len, i;
+
+    ktype = readByte(input);
+    if (ktype == -1) {
+      return false;
+    }
+
+    vtype = readByte(input);
+    if (vtype == -1) {
+      return false;
+    }
+
+    len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    for (i = 0; i < len; i++) {
+      if (!(skip(input, ktype) && skip(input, vtype))) {
+        return false;
+      }
+    }
+    break;
+  }
+
+  case T_STRUCT: {
+    while (true) {
+      TType type;
+
+      type = readByte(input);
+      if (type == -1) {
+        return false;
+      }
+
+      if (type == T_STOP)
+        break;
+
+      SKIPBYTES(2); // tag
+      if (!skip(input, type)) {
+        return false;
+      }
+    }
+    break;
+  }
+
+  case T_STOP:
+  case T_VOID:
+  case T_UTF16:
+  case T_UTF8:
+  case T_U64:
+  default:
+    PyErr_SetString(PyExc_TypeError, "Unexpected TType");
+    return false;
+
+  }
+
+  return true;
+
+#undef SKIPBYTES
+}
+
+
+/* --- HELPER FUNCTION FOR DECODE_VAL --- */
+
+static PyObject*
+decode_val(DecodeBuffer* input, TType type, PyObject* typeargs);
+
+static bool
+decode_struct(DecodeBuffer* input, PyObject* output, PyObject* spec_seq) {
+  int spec_seq_len = PyTuple_Size(spec_seq);
+  if (spec_seq_len == -1) {
+    return false;
+  }
+
+  while (true) {
+    TType type;
+    int16_t tag;
+    PyObject* item_spec;
+    PyObject* fieldval = NULL;
+    StructItemSpec parsedspec;
+
+    type = readByte(input);
+    if (type == -1) {
+      return false;
+    }
+    if (type == T_STOP) {
+      break;
+    }
+    tag = readI16(input);
+    if (INT_CONV_ERROR_OCCURRED(tag)) {
+      return false;
+    }
+    if (tag >= 0 && tag < spec_seq_len) {
+      item_spec = PyTuple_GET_ITEM(spec_seq, tag);
+    } else {
+      item_spec = Py_None;
+    }
+
+    if (item_spec == Py_None) {
+      if (!skip(input, type)) {
+        return false;
+      } else {
+        continue;
+      }
+    }
+
+    if (!parse_struct_item_spec(&parsedspec, item_spec)) {
+      return false;
+    }
+    if (parsedspec.type != type) {
+      if (!skip(input, type)) {
+        PyErr_SetString(PyExc_TypeError, "struct field had wrong type while reading and can't be skipped");
+        return false;
+      } else {
+        continue;
+      }
+    }
+
+    fieldval = decode_val(input, parsedspec.type, parsedspec.typeargs);
+    if (fieldval == NULL) {
+      return false;
+    }
+
+    if (PyObject_SetAttr(output, parsedspec.attrname, fieldval) == -1) {
+      Py_DECREF(fieldval);
+      return false;
+    }
+    Py_DECREF(fieldval);
+  }
+  return true;
+}
+
+
+/* --- MAIN RECURSIVE INPUT FUCNTION --- */
+
+// Returns a new reference.
+static PyObject*
+decode_val(DecodeBuffer* input, TType type, PyObject* typeargs) {
+  switch (type) {
+
+  case T_BOOL: {
+    int8_t v = readByte(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+
+    switch (v) {
+    case 0: Py_RETURN_FALSE;
+    case 1: Py_RETURN_TRUE;
+    // Don't laugh.  This is a potentially serious issue.
+    default: PyErr_SetString(PyExc_TypeError, "boolean out of range"); return NULL;
+    }
+    break;
+  }
+  case T_I08: {
+    int8_t v = readByte(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+
+    return PyInt_FromLong(v);
+  }
+  case T_I16: {
+    int16_t v = readI16(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+    return PyInt_FromLong(v);
+  }
+  case T_I32: {
+    int32_t v = readI32(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+    return PyInt_FromLong(v);
+  }
+
+  case T_I64: {
+    int64_t v = readI64(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+    // TODO(dreiss): Find out if we can take this fastpath always when
+    //               sizeof(long) == sizeof(long long).
+    if (CHECK_RANGE(v, LONG_MIN, LONG_MAX)) {
+      return PyInt_FromLong((long) v);
+    }
+
+    return PyLong_FromLongLong(v);
+  }
+
+  case T_DOUBLE: {
+    double v = readDouble(input);
+    if (v == -1.0 && PyErr_Occurred()) {
+      return false;
+    }
+    return PyFloat_FromDouble(v);
+  }
+
+  case T_STRING: {
+    Py_ssize_t len = readI32(input);
+    char* buf;
+    if (!readBytes(input, &buf, len)) {
+      return NULL;
+    }
+
+    return PyString_FromStringAndSize(buf, len);
+  }
+
+  case T_LIST:
+  case T_SET: {
+    SetListTypeArgs parsedargs;
+    int32_t len;
+    PyObject* ret = NULL;
+    int i;
+
+    if (!parse_set_list_args(&parsedargs, typeargs)) {
+      return NULL;
+    }
+
+    if (!checkTypeByte(input, parsedargs.element_type)) {
+      return NULL;
+    }
+
+    len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return NULL;
+    }
+
+    ret = PyList_New(len);
+    if (!ret) {
+      return NULL;
+    }
+
+    for (i = 0; i < len; i++) {
+      PyObject* item = decode_val(input, parsedargs.element_type, parsedargs.typeargs);
+      if (!item) {
+        Py_DECREF(ret);
+        return NULL;
+      }
+      PyList_SET_ITEM(ret, i, item);
+    }
+
+    // TODO(dreiss): Consider biting the bullet and making two separate cases
+    //               for list and set, avoiding this post facto conversion.
+    if (type == T_SET) {
+      PyObject* setret;
+#if (PY_VERSION_HEX < 0x02050000)
+      // hack needed for older versions
+      setret = PyObject_CallFunctionObjArgs((PyObject*)&PySet_Type, ret, NULL);
+#else
+      // official version
+      setret = PySet_New(ret);
+#endif
+      Py_DECREF(ret);
+      return setret;
+    }
+    return ret;
+  }
+
+  case T_MAP: {
+    int32_t len;
+    int i;
+    MapTypeArgs parsedargs;
+    PyObject* ret = NULL;
+
+    if (!parse_map_args(&parsedargs, typeargs)) {
+      return NULL;
+    }
+
+    if (!checkTypeByte(input, parsedargs.ktag)) {
+      return NULL;
+    }
+    if (!checkTypeByte(input, parsedargs.vtag)) {
+      return NULL;
+    }
+
+    len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    ret = PyDict_New();
+    if (!ret) {
+      goto error;
+    }
+
+    for (i = 0; i < len; i++) {
+      PyObject* k = NULL;
+      PyObject* v = NULL;
+      k = decode_val(input, parsedargs.ktag, parsedargs.ktypeargs);
+      if (k == NULL) {
+        goto loop_error;
+      }
+      v = decode_val(input, parsedargs.vtag, parsedargs.vtypeargs);
+      if (v == NULL) {
+        goto loop_error;
+      }
+      if (PyDict_SetItem(ret, k, v) == -1) {
+        goto loop_error;
+      }
+
+      Py_DECREF(k);
+      Py_DECREF(v);
+      continue;
+
+      // Yuck!  Destructors, anyone?
+      loop_error:
+      Py_XDECREF(k);
+      Py_XDECREF(v);
+      goto error;
+    }
+
+    return ret;
+
+    error:
+    Py_XDECREF(ret);
+    return NULL;
+  }
+
+  case T_STRUCT: {
+    StructTypeArgs parsedargs;
+	PyObject* ret;
+    if (!parse_struct_args(&parsedargs, typeargs)) {
+      return NULL;
+    }
+
+    ret = PyObject_CallObject(parsedargs.klass, NULL);
+    if (!ret) {
+      return NULL;
+    }
+
+    if (!decode_struct(input, ret, parsedargs.spec)) {
+      Py_DECREF(ret);
+      return NULL;
+    }
+
+    return ret;
+  }
+
+  case T_STOP:
+  case T_VOID:
+  case T_UTF16:
+  case T_UTF8:
+  case T_U64:
+  default:
+    PyErr_SetString(PyExc_TypeError, "Unexpected TType");
+    return NULL;
+  }
+}
+
+
+/* --- TOP-LEVEL WRAPPER FOR INPUT -- */
+
+static PyObject*
+decode_binary(PyObject *self, PyObject *args) {
+  PyObject* output_obj = NULL;
+  PyObject* transport = NULL;
+  PyObject* typeargs = NULL;
+  StructTypeArgs parsedargs;
+  DecodeBuffer input = {0, 0};
+  
+  if (!PyArg_ParseTuple(args, "OOO", &output_obj, &transport, &typeargs)) {
+    return NULL;
+  }
+
+  if (!parse_struct_args(&parsedargs, typeargs)) {
+    return NULL;
+  }
+
+  if (!decode_buffer_from_obj(&input, transport)) {
+    return NULL;
+  }
+
+  if (!decode_struct(&input, output_obj, parsedargs.spec)) {
+    free_decodebuf(&input);
+    return NULL;
+  }
+
+  free_decodebuf(&input);
+
+  Py_RETURN_NONE;
+}
+
+/* ====== END READING FUNCTIONS ====== */
+
+
+/* -- PYTHON MODULE SETUP STUFF --- */
+
+static PyMethodDef ThriftFastBinaryMethods[] = {
+
+  {"encode_binary",  encode_binary, METH_VARARGS, ""},
+  {"decode_binary",  decode_binary, METH_VARARGS, ""},
+
+  {NULL, NULL, 0, NULL}        /* Sentinel */
+};
+
+PyMODINIT_FUNC
+initfastbinary(void) {
+#define INIT_INTERN_STRING(value) \
+  do { \
+    INTERN_STRING(value) = PyString_InternFromString(#value); \
+    if(!INTERN_STRING(value)) return; \
+  } while(0)
+
+  INIT_INTERN_STRING(cstringio_buf);
+  INIT_INTERN_STRING(cstringio_refill);
+#undef INIT_INTERN_STRING
+
+  PycString_IMPORT;
+  if (PycStringIO == NULL) return;
+
+  (void) Py_InitModule("thrift.protocol.fastbinary", ThriftFastBinaryMethods);
+}

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/THttpServer.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/THttpServer.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/THttpServer.py
new file mode 100644
index 0000000..be54bab
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/THttpServer.py
@@ -0,0 +1,87 @@
+#
+# 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.
+#
+
+import BaseHTTPServer
+
+from thrift.server import TServer
+from thrift.transport import TTransport
+
+
+class ResponseException(Exception):
+  """Allows handlers to override the HTTP response
+
+  Normally, THttpServer always sends a 200 response.  If a handler wants
+  to override this behavior (e.g., to simulate a misconfigured or
+  overloaded web server during testing), it can raise a ResponseException.
+  The function passed to the constructor will be called with the
+  RequestHandler as its only argument.
+  """
+  def __init__(self, handler):
+    self.handler = handler
+
+
+class THttpServer(TServer.TServer):
+  """A simple HTTP-based Thrift server
+
+  This class is not very performant, but it is useful (for example) for
+  acting as a mock version of an Apache-based PHP Thrift endpoint.
+  """
+  def __init__(self,
+               processor,
+               server_address,
+               inputProtocolFactory,
+               outputProtocolFactory=None,
+               server_class=BaseHTTPServer.HTTPServer):
+    """Set up protocol factories and HTTP server.
+
+    See BaseHTTPServer for server_address.
+    See TServer for protocol factories.
+    """
+    if outputProtocolFactory is None:
+      outputProtocolFactory = inputProtocolFactory
+
+    TServer.TServer.__init__(self, processor, None, None, None,
+        inputProtocolFactory, outputProtocolFactory)
+
+    thttpserver = self
+
+    class RequestHander(BaseHTTPServer.BaseHTTPRequestHandler):
+      def do_POST(self):
+        # Don't care about the request path.
+        itrans = TTransport.TFileObjectTransport(self.rfile)
+        otrans = TTransport.TFileObjectTransport(self.wfile)
+        itrans = TTransport.TBufferedTransport(
+          itrans, int(self.headers['Content-Length']))
+        otrans = TTransport.TMemoryBuffer()
+        iprot = thttpserver.inputProtocolFactory.getProtocol(itrans)
+        oprot = thttpserver.outputProtocolFactory.getProtocol(otrans)
+        try:
+          thttpserver.processor.process(iprot, oprot)
+        except ResponseException, exn:
+          exn.handler(self)
+        else:
+          self.send_response(200)
+          self.send_header("content-type", "application/x-thrift")
+          self.end_headers()
+          self.wfile.write(otrans.getvalue())
+
+    self.httpd = server_class(server_address, RequestHander)
+
+  def serve(self):
+    self.httpd.serve_forever()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TNonblockingServer.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TNonblockingServer.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TNonblockingServer.py
new file mode 100644
index 0000000..fa478d0
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TNonblockingServer.py
@@ -0,0 +1,346 @@
+#
+# 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.
+#
+"""Implementation of non-blocking server.
+
+The main idea of the server is to receive and send requests
+only from the main thread.
+
+The thread poool should be sized for concurrent tasks, not
+maximum connections
+"""
+import threading
+import socket
+import Queue
+import select
+import struct
+import logging
+
+from thrift.transport import TTransport
+from thrift.protocol.TBinaryProtocol import TBinaryProtocolFactory
+
+__all__ = ['TNonblockingServer']
+
+
+class Worker(threading.Thread):
+    """Worker is a small helper to process incoming connection."""
+
+    def __init__(self, queue):
+        threading.Thread.__init__(self)
+        self.queue = queue
+
+    def run(self):
+        """Process queries from task queue, stop if processor is None."""
+        while True:
+            try:
+                processor, iprot, oprot, otrans, callback = self.queue.get()
+                if processor is None:
+                    break
+                processor.process(iprot, oprot)
+                callback(True, otrans.getvalue())
+            except Exception:
+                logging.exception("Exception while processing request")
+                callback(False, '')
+
+WAIT_LEN = 0
+WAIT_MESSAGE = 1
+WAIT_PROCESS = 2
+SEND_ANSWER = 3
+CLOSED = 4
+
+
+def locked(func):
+    """Decorator which locks self.lock."""
+    def nested(self, *args, **kwargs):
+        self.lock.acquire()
+        try:
+            return func(self, *args, **kwargs)
+        finally:
+            self.lock.release()
+    return nested
+
+
+def socket_exception(func):
+    """Decorator close object on socket.error."""
+    def read(self, *args, **kwargs):
+        try:
+            return func(self, *args, **kwargs)
+        except socket.error:
+            self.close()
+    return read
+
+
+class Connection:
+    """Basic class is represented connection.
+
+    It can be in state:
+        WAIT_LEN --- connection is reading request len.
+        WAIT_MESSAGE --- connection is reading request.
+        WAIT_PROCESS --- connection has just read whole request and
+                         waits for call ready routine.
+        SEND_ANSWER --- connection is sending answer string (including length
+                        of answer).
+        CLOSED --- socket was closed and connection should be deleted.
+    """
+    def __init__(self, new_socket, wake_up):
+        self.socket = new_socket
+        self.socket.setblocking(False)
+        self.status = WAIT_LEN
+        self.len = 0
+        self.message = ''
+        self.lock = threading.Lock()
+        self.wake_up = wake_up
+
+    def _read_len(self):
+        """Reads length of request.
+
+        It's a safer alternative to self.socket.recv(4)
+        """
+        read = self.socket.recv(4 - len(self.message))
+        if len(read) == 0:
+            # if we read 0 bytes and self.message is empty, then
+            # the client closed the connection
+            if len(self.message) != 0:
+                logging.error("can't read frame size from socket")
+            self.close()
+            return
+        self.message += read
+        if len(self.message) == 4:
+            self.len, = struct.unpack('!i', self.message)
+            if self.len < 0:
+                logging.error("negative frame size, it seems client "
+                              "doesn't use FramedTransport")
+                self.close()
+            elif self.len == 0:
+                logging.error("empty frame, it's really strange")
+                self.close()
+            else:
+                self.message = ''
+                self.status = WAIT_MESSAGE
+
+    @socket_exception
+    def read(self):
+        """Reads data from stream and switch state."""
+        assert self.status in (WAIT_LEN, WAIT_MESSAGE)
+        if self.status == WAIT_LEN:
+            self._read_len()
+            # go back to the main loop here for simplicity instead of
+            # falling through, even though there is a good chance that
+            # the message is already available
+        elif self.status == WAIT_MESSAGE:
+            read = self.socket.recv(self.len - len(self.message))
+            if len(read) == 0:
+                logging.error("can't read frame from socket (get %d of "
+                              "%d bytes)" % (len(self.message), self.len))
+                self.close()
+                return
+            self.message += read
+            if len(self.message) == self.len:
+                self.status = WAIT_PROCESS
+
+    @socket_exception
+    def write(self):
+        """Writes data from socket and switch state."""
+        assert self.status == SEND_ANSWER
+        sent = self.socket.send(self.message)
+        if sent == len(self.message):
+            self.status = WAIT_LEN
+            self.message = ''
+            self.len = 0
+        else:
+            self.message = self.message[sent:]
+
+    @locked
+    def ready(self, all_ok, message):
+        """Callback function for switching state and waking up main thread.
+
+        This function is the only function witch can be called asynchronous.
+
+        The ready can switch Connection to three states:
+            WAIT_LEN if request was oneway.
+            SEND_ANSWER if request was processed in normal way.
+            CLOSED if request throws unexpected exception.
+
+        The one wakes up main thread.
+        """
+        assert self.status == WAIT_PROCESS
+        if not all_ok:
+            self.close()
+            self.wake_up()
+            return
+        self.len = ''
+        if len(message) == 0:
+            # it was a oneway request, do not write answer
+            self.message = ''
+            self.status = WAIT_LEN
+        else:
+            self.message = struct.pack('!i', len(message)) + message
+            self.status = SEND_ANSWER
+        self.wake_up()
+
+    @locked
+    def is_writeable(self):
+        """Return True if connection should be added to write list of select"""
+        return self.status == SEND_ANSWER
+
+    # it's not necessary, but...
+    @locked
+    def is_readable(self):
+        """Return True if connection should be added to read list of select"""
+        return self.status in (WAIT_LEN, WAIT_MESSAGE)
+
+    @locked
+    def is_closed(self):
+        """Returns True if connection is closed."""
+        return self.status == CLOSED
+
+    def fileno(self):
+        """Returns the file descriptor of the associated socket."""
+        return self.socket.fileno()
+
+    def close(self):
+        """Closes connection"""
+        self.status = CLOSED
+        self.socket.close()
+
+
+class TNonblockingServer:
+    """Non-blocking server."""
+
+    def __init__(self,
+                 processor,
+                 lsocket,
+                 inputProtocolFactory=None,
+                 outputProtocolFactory=None,
+                 threads=10):
+        self.processor = processor
+        self.socket = lsocket
+        self.in_protocol = inputProtocolFactory or TBinaryProtocolFactory()
+        self.out_protocol = outputProtocolFactory or self.in_protocol
+        self.threads = int(threads)
+        self.clients = {}
+        self.tasks = Queue.Queue()
+        self._read, self._write = socket.socketpair()
+        self.prepared = False
+        self._stop = False
+
+    def setNumThreads(self, num):
+        """Set the number of worker threads that should be created."""
+        # implement ThreadPool interface
+        assert not self.prepared, "Can't change number of threads after start"
+        self.threads = num
+
+    def prepare(self):
+        """Prepares server for serve requests."""
+        if self.prepared:
+            return
+        self.socket.listen()
+        for _ in xrange(self.threads):
+            thread = Worker(self.tasks)
+            thread.setDaemon(True)
+            thread.start()
+        self.prepared = True
+
+    def wake_up(self):
+        """Wake up main thread.
+
+        The server usualy waits in select call in we should terminate one.
+        The simplest way is using socketpair.
+
+        Select always wait to read from the first socket of socketpair.
+
+        In this case, we can just write anything to the second socket from
+        socketpair.
+        """
+        self._write.send('1')
+
+    def stop(self):
+        """Stop the server.
+
+        This method causes the serve() method to return.  stop() may be invoked
+        from within your handler, or from another thread.
+
+        After stop() is called, serve() will return but the server will still
+        be listening on the socket.  serve() may then be called again to resume
+        processing requests.  Alternatively, close() may be called after
+        serve() returns to close the server socket and shutdown all worker
+        threads.
+        """
+        self._stop = True
+        self.wake_up()
+
+    def _select(self):
+        """Does select on open connections."""
+        readable = [self.socket.handle.fileno(), self._read.fileno()]
+        writable = []
+        for i, connection in self.clients.items():
+            if connection.is_readable():
+                readable.append(connection.fileno())
+            if connection.is_writeable():
+                writable.append(connection.fileno())
+            if connection.is_closed():
+                del self.clients[i]
+        return select.select(readable, writable, readable)
+
+    def handle(self):
+        """Handle requests.
+
+        WARNING! You must call prepare() BEFORE calling handle()
+        """
+        assert self.prepared, "You have to call prepare before handle"
+        rset, wset, xset = self._select()
+        for readable in rset:
+            if readable == self._read.fileno():
+                # don't care i just need to clean readable flag
+                self._read.recv(1024)
+            elif readable == self.socket.handle.fileno():
+                client = self.socket.accept().handle
+                self.clients[client.fileno()] = Connection(client,
+                                                           self.wake_up)
+            else:
+                connection = self.clients[readable]
+                connection.read()
+                if connection.status == WAIT_PROCESS:
+                    itransport = TTransport.TMemoryBuffer(connection.message)
+                    otransport = TTransport.TMemoryBuffer()
+                    iprot = self.in_protocol.getProtocol(itransport)
+                    oprot = self.out_protocol.getProtocol(otransport)
+                    self.tasks.put([self.processor, iprot, oprot,
+                                    otransport, connection.ready])
+        for writeable in wset:
+            self.clients[writeable].write()
+        for oob in xset:
+            self.clients[oob].close()
+            del self.clients[oob]
+
+    def close(self):
+        """Closes the server."""
+        for _ in xrange(self.threads):
+            self.tasks.put([None, None, None, None, None])
+        self.socket.close()
+        self.prepared = False
+
+    def serve(self):
+        """Serve requests.
+
+        Serve requests forever, or until stop() is called.
+        """
+        self._stop = False
+        self.prepare()
+        while not self._stop:
+            self.handle()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TProcessPoolServer.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TProcessPoolServer.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TProcessPoolServer.py
new file mode 100644
index 0000000..c665e6d
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TProcessPoolServer.py
@@ -0,0 +1,118 @@
+#
+# 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.
+#
+
+
+import logging
+from multiprocessing import  Process, Value, Condition
+
+from lib.thrift.server import TServer
+from thrift.transport.TTransport import TTransportException
+
+
+class TProcessPoolServer(TServer):
+    """Server with a fixed size pool of worker subprocesses to service requests
+
+    Note that if you need shared state between the handlers - it's up to you!
+    Written by Dvir Volk, doat.com
+    """
+    def __init__(self, *args):
+        TServer.__init__(self, *args)
+        self.numWorkers = 10
+        self.workers = []
+        self.isRunning = Value('b', False)
+        self.stopCondition = Condition()
+        self.postForkCallback = None
+
+    def setPostForkCallback(self, callback):
+        if not callable(callback):
+            raise TypeError("This is not a callback!")
+        self.postForkCallback = callback
+
+    def setNumWorkers(self, num):
+        """Set the number of worker threads that should be created"""
+        self.numWorkers = num
+
+    def workerProcess(self):
+        """Loop getting clients from the shared queue and process them"""
+        if self.postForkCallback:
+            self.postForkCallback()
+
+        while self.isRunning.value:
+            try:
+                client = self.serverTransport.accept()
+                self.serveClient(client)
+            except (KeyboardInterrupt, SystemExit):
+                return 0
+            except Exception, x:
+                logging.exception(x)
+
+    def serveClient(self, client):
+        """Process input/output from a client for as long as possible"""
+        itrans = self.inputTransportFactory.getTransport(client)
+        otrans = self.outputTransportFactory.getTransport(client)
+        iprot = self.inputProtocolFactory.getProtocol(itrans)
+        oprot = self.outputProtocolFactory.getProtocol(otrans)
+
+        try:
+            while True:
+                self.processor.process(iprot, oprot)
+        except TTransportException, tx:
+            pass
+        except Exception, x:
+            logging.exception(x)
+
+        itrans.close()
+        otrans.close()
+
+    def serve(self):
+        """Start workers and put into queue"""
+        # this is a shared state that can tell the workers to exit when False
+        self.isRunning.value = True
+
+        # first bind and listen to the port
+        self.serverTransport.listen()
+
+        # fork the children
+        for i in range(self.numWorkers):
+            try:
+                w = Process(target=self.workerProcess)
+                w.daemon = True
+                w.start()
+                self.workers.append(w)
+            except Exception, x:
+                logging.exception(x)
+
+        # wait until the condition is set by stop()
+        while True:
+            self.stopCondition.acquire()
+            try:
+                self.stopCondition.wait()
+                break
+            except (SystemExit, KeyboardInterrupt):
+                break
+            except Exception, x:
+                logging.exception(x)
+
+        self.isRunning.value = False
+
+    def stop(self):
+        self.isRunning.value = False
+        self.stopCondition.acquire()
+        self.stopCondition.notify()
+        self.stopCondition.release()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TServer.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TServer.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TServer.py
new file mode 100644
index 0000000..2f24842
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/TServer.py
@@ -0,0 +1,269 @@
+#
+# 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.
+#
+
+import Queue
+import logging
+import os
+import sys
+import threading
+import traceback
+
+from thrift.Thrift import TProcessor
+from thrift.protocol import TBinaryProtocol
+from thrift.transport import TTransport
+
+
+class TServer:
+  """Base interface for a server, which must have a serve() method.
+
+  Three constructors for all servers:
+  1) (processor, serverTransport)
+  2) (processor, serverTransport, transportFactory, protocolFactory)
+  3) (processor, serverTransport,
+      inputTransportFactory, outputTransportFactory,
+      inputProtocolFactory, outputProtocolFactory)
+  """
+  def __init__(self, *args):
+    if (len(args) == 2):
+      self.__initArgs__(args[0], args[1],
+                        TTransport.TTransportFactoryBase(),
+                        TTransport.TTransportFactoryBase(),
+                        TBinaryProtocol.TBinaryProtocolFactory(),
+                        TBinaryProtocol.TBinaryProtocolFactory())
+    elif (len(args) == 4):
+      self.__initArgs__(args[0], args[1], args[2], args[2], args[3], args[3])
+    elif (len(args) == 6):
+      self.__initArgs__(args[0], args[1], args[2], args[3], args[4], args[5])
+
+  def __initArgs__(self, processor, serverTransport,
+                   inputTransportFactory, outputTransportFactory,
+                   inputProtocolFactory, outputProtocolFactory):
+    self.processor = processor
+    self.serverTransport = serverTransport
+    self.inputTransportFactory = inputTransportFactory
+    self.outputTransportFactory = outputTransportFactory
+    self.inputProtocolFactory = inputProtocolFactory
+    self.outputProtocolFactory = outputProtocolFactory
+
+  def serve(self):
+    pass
+
+
+class TSimpleServer(TServer):
+  """Simple single-threaded server that just pumps around one transport."""
+
+  def __init__(self, *args):
+    TServer.__init__(self, *args)
+
+  def serve(self):
+    self.serverTransport.listen()
+    while True:
+      client = self.serverTransport.accept()
+      itrans = self.inputTransportFactory.getTransport(client)
+      otrans = self.outputTransportFactory.getTransport(client)
+      iprot = self.inputProtocolFactory.getProtocol(itrans)
+      oprot = self.outputProtocolFactory.getProtocol(otrans)
+      try:
+        while True:
+          self.processor.process(iprot, oprot)
+      except TTransport.TTransportException, tx:
+        pass
+      except Exception, x:
+        logging.exception(x)
+
+      itrans.close()
+      otrans.close()
+
+
+class TThreadedServer(TServer):
+  """Threaded server that spawns a new thread per each connection."""
+
+  def __init__(self, *args, **kwargs):
+    TServer.__init__(self, *args)
+    self.daemon = kwargs.get("daemon", False)
+
+  def serve(self):
+    self.serverTransport.listen()
+    while True:
+      try:
+        client = self.serverTransport.accept()
+        t = threading.Thread(target=self.handle, args=(client,))
+        t.setDaemon(self.daemon)
+        t.start()
+      except KeyboardInterrupt:
+        raise
+      except Exception, x:
+        logging.exception(x)
+
+  def handle(self, client):
+    itrans = self.inputTransportFactory.getTransport(client)
+    otrans = self.outputTransportFactory.getTransport(client)
+    iprot = self.inputProtocolFactory.getProtocol(itrans)
+    oprot = self.outputProtocolFactory.getProtocol(otrans)
+    try:
+      while True:
+        self.processor.process(iprot, oprot)
+    except TTransport.TTransportException, tx:
+      pass
+    except Exception, x:
+      logging.exception(x)
+
+    itrans.close()
+    otrans.close()
+
+
+class TThreadPoolServer(TServer):
+  """Server with a fixed size pool of threads which service requests."""
+
+  def __init__(self, *args, **kwargs):
+    TServer.__init__(self, *args)
+    self.clients = Queue.Queue()
+    self.threads = 10
+    self.daemon = kwargs.get("daemon", False)
+
+  def setNumThreads(self, num):
+    """Set the number of worker threads that should be created"""
+    self.threads = num
+
+  def serveThread(self):
+    """Loop around getting clients from the shared queue and process them."""
+    while True:
+      try:
+        client = self.clients.get()
+        self.serveClient(client)
+      except Exception, x:
+        logging.exception(x)
+
+  def serveClient(self, client):
+    """Process input/output from a client for as long as possible"""
+    itrans = self.inputTransportFactory.getTransport(client)
+    otrans = self.outputTransportFactory.getTransport(client)
+    iprot = self.inputProtocolFactory.getProtocol(itrans)
+    oprot = self.outputProtocolFactory.getProtocol(otrans)
+    try:
+      while True:
+        self.processor.process(iprot, oprot)
+    except TTransport.TTransportException, tx:
+      pass
+    except Exception, x:
+      logging.exception(x)
+
+    itrans.close()
+    otrans.close()
+
+  def serve(self):
+    """Start a fixed number of worker threads and put client into a queue"""
+    for i in range(self.threads):
+      try:
+        t = threading.Thread(target=self.serveThread)
+        t.setDaemon(self.daemon)
+        t.start()
+      except Exception, x:
+        logging.exception(x)
+
+    # Pump the socket for clients
+    self.serverTransport.listen()
+    while True:
+      try:
+        client = self.serverTransport.accept()
+        self.clients.put(client)
+      except Exception, x:
+        logging.exception(x)
+
+
+class TForkingServer(TServer):
+  """A Thrift server that forks a new process for each request
+
+  This is more scalable than the threaded server as it does not cause
+  GIL contention.
+
+  Note that this has different semantics from the threading server.
+  Specifically, updates to shared variables will no longer be shared.
+  It will also not work on windows.
+
+  This code is heavily inspired by SocketServer.ForkingMixIn in the
+  Python stdlib.
+  """
+  def __init__(self, *args):
+    TServer.__init__(self, *args)
+    self.children = []
+
+  def serve(self):
+    def try_close(file):
+      try:
+        file.close()
+      except IOError, e:
+        logging.warning(e, exc_info=True)
+
+    self.serverTransport.listen()
+    while True:
+      client = self.serverTransport.accept()
+      try:
+        pid = os.fork()
+
+        if pid:  # parent
+          # add before collect, otherwise you race w/ waitpid
+          self.children.append(pid)
+          self.collect_children()
+
+          # Parent must close socket or the connection may not get
+          # closed promptly
+          itrans = self.inputTransportFactory.getTransport(client)
+          otrans = self.outputTransportFactory.getTransport(client)
+          try_close(itrans)
+          try_close(otrans)
+        else:
+          itrans = self.inputTransportFactory.getTransport(client)
+          otrans = self.outputTransportFactory.getTransport(client)
+
+          iprot = self.inputProtocolFactory.getProtocol(itrans)
+          oprot = self.outputProtocolFactory.getProtocol(otrans)
+
+          ecode = 0
+          try:
+            try:
+              while True:
+                self.processor.process(iprot, oprot)
+            except TTransport.TTransportException, tx:
+              pass
+            except Exception, e:
+              logging.exception(e)
+              ecode = 1
+          finally:
+            try_close(itrans)
+            try_close(otrans)
+
+          os._exit(ecode)
+
+      except TTransport.TTransportException, tx:
+        pass
+      except Exception, x:
+        logging.exception(x)
+
+  def collect_children(self):
+    while self.children:
+      try:
+        pid, status = os.waitpid(0, os.WNOHANG)
+      except os.error:
+        pid = None
+
+      if pid:
+        self.children.remove(pid)
+      else:
+        break

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/__init__.py
new file mode 100644
index 0000000..1bf6e25
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/server/__init__.py
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+__all__ = ['TServer', 'TNonblockingServer']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/THttpClient.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/THttpClient.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/THttpClient.py
new file mode 100644
index 0000000..c98b966
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/THttpClient.py
@@ -0,0 +1,147 @@
+#
+# 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.
+#
+
+import httplib
+import os
+import socket
+import sys
+import urllib
+import urlparse
+import warnings
+
+from lib.thrift.transport.TTransport import *
+
+
+class THttpClient(TTransportBase):
+  """Http implementation of TTransport base."""
+
+  def __init__(self, uri_or_host, port=None, path=None):
+    """THttpClient supports two different types constructor parameters.
+
+    THttpClient(host, port, path) - deprecated
+    THttpClient(uri)
+
+    Only the second supports https.
+    """
+    if port is not None:
+      warnings.warn(
+        "Please use the THttpClient('http://host:port/path') syntax",
+        DeprecationWarning,
+        stacklevel=2)
+      self.host = uri_or_host
+      self.port = port
+      assert path
+      self.path = path
+      self.scheme = 'http'
+    else:
+      parsed = urlparse.urlparse(uri_or_host)
+      self.scheme = parsed.scheme
+      assert self.scheme in ('http', 'https')
+      if self.scheme == 'http':
+        self.port = parsed.port or httplib.HTTP_PORT
+      elif self.scheme == 'https':
+        self.port = parsed.port or httplib.HTTPS_PORT
+      self.host = parsed.hostname
+      self.path = parsed.path
+      if parsed.query:
+        self.path += '?%s' % parsed.query
+    self.__wbuf = StringIO()
+    self.__http = None
+    self.__timeout = None
+    self.__custom_headers = None
+
+  def open(self):
+    if self.scheme == 'http':
+      self.__http = httplib.HTTP(self.host, self.port)
+    else:
+      self.__http = httplib.HTTPS(self.host, self.port)
+
+  def close(self):
+    self.__http.close()
+    self.__http = None
+
+  def isOpen(self):
+    return self.__http is not None
+
+  def setTimeout(self, ms):
+    if not hasattr(socket, 'getdefaulttimeout'):
+      raise NotImplementedError
+
+    if ms is None:
+      self.__timeout = None
+    else:
+      self.__timeout = ms / 1000.0
+
+  def setCustomHeaders(self, headers):
+    self.__custom_headers = headers
+
+  def read(self, sz):
+    return self.__http.file.read(sz)
+
+  def write(self, buf):
+    self.__wbuf.write(buf)
+
+  def __withTimeout(f):
+    def _f(*args, **kwargs):
+      orig_timeout = socket.getdefaulttimeout()
+      socket.setdefaulttimeout(args[0].__timeout)
+      result = f(*args, **kwargs)
+      socket.setdefaulttimeout(orig_timeout)
+      return result
+    return _f
+
+  def flush(self):
+    if self.isOpen():
+      self.close()
+    self.open()
+
+    # Pull data out of buffer
+    data = self.__wbuf.getvalue()
+    self.__wbuf = StringIO()
+
+    # HTTP request
+    self.__http.putrequest('POST', self.path)
+
+    # Write headers
+    self.__http.putheader('Host', self.host)
+    self.__http.putheader('Content-Type', 'application/x-thrift')
+    self.__http.putheader('Content-Length', str(len(data)))
+
+    if not self.__custom_headers or 'User-Agent' not in self.__custom_headers:
+      user_agent = 'Python/THttpClient'
+      script = os.path.basename(sys.argv[0])
+      if script:
+        user_agent = '%s (%s)' % (user_agent, urllib.quote(script))
+      self.__http.putheader('User-Agent', user_agent)
+
+    if self.__custom_headers:
+        for key, val in self.__custom_headers.iteritems():
+            self.__http.putheader(key, val)
+
+    self.__http.endheaders()
+
+    # Write payload
+    self.__http.send(data)
+
+    # Get reply to flush the request
+    self.code, self.message, self.headers = self.__http.getreply()
+
+  # Decorate if we know how to timeout
+  if hasattr(socket, 'getdefaulttimeout'):
+    flush = __withTimeout(flush)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSSLSocket.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSSLSocket.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSSLSocket.py
new file mode 100644
index 0000000..81e0984
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSSLSocket.py
@@ -0,0 +1,214 @@
+#
+# 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.
+#
+
+import os
+import socket
+import ssl
+
+from thrift.transport import TSocket
+from thrift.transport.TTransport import TTransportException
+
+
+class TSSLSocket(TSocket.TSocket):
+  """
+  SSL implementation of client-side TSocket
+
+  This class creates outbound sockets wrapped using the
+  python standard ssl module for encrypted connections.
+
+  The protocol used is set using the class variable
+  SSL_VERSION, which must be one of ssl.PROTOCOL_* and
+  defaults to  ssl.PROTOCOL_TLSv1 for greatest security.
+  """
+  SSL_VERSION = ssl.PROTOCOL_TLSv1
+
+  def __init__(self,
+               host='localhost',
+               port=9090,
+               validate=True,
+               ca_certs=None,
+               keyfile=None,
+               certfile=None,
+               unix_socket=None):
+    """Create SSL TSocket
+
+    @param validate: Set to False to disable SSL certificate validation
+    @type validate: bool
+    @param ca_certs: Filename to the Certificate Authority pem file, possibly a
+    file downloaded from: http://curl.haxx.se/ca/cacert.pem  This is passed to
+    the ssl_wrap function as the 'ca_certs' parameter.
+    @type ca_certs: str
+    @param keyfile: The private key
+    @type keyfile: str
+    @param certfile: The cert file
+    @type certfile: str
+    
+    Raises an IOError exception if validate is True and the ca_certs file is
+    None, not present or unreadable.
+    """
+    self.validate = validate
+    self.is_valid = False
+    self.peercert = None
+    if not validate:
+      self.cert_reqs = ssl.CERT_NONE
+    else:
+      self.cert_reqs = ssl.CERT_REQUIRED
+    self.ca_certs = ca_certs
+    self.keyfile = keyfile
+    self.certfile = certfile
+    if validate:
+      if ca_certs is None or not os.access(ca_certs, os.R_OK):
+        raise IOError('Certificate Authority ca_certs file "%s" '
+                      'is not readable, cannot validate SSL '
+                      'certificates.' % (ca_certs))
+    TSocket.TSocket.__init__(self, host, port, unix_socket)
+
+  def open(self):
+    try:
+      res0 = self._resolveAddr()
+      for res in res0:
+        sock_family, sock_type = res[0:2]
+        ip_port = res[4]
+        plain_sock = socket.socket(sock_family, sock_type)
+        self.handle = ssl.wrap_socket(plain_sock,
+                                      ssl_version=self.SSL_VERSION,
+                                      do_handshake_on_connect=True,
+                                      ca_certs=self.ca_certs,
+                                      keyfile=self.keyfile,
+                                      certfile=self.certfile,
+                                      cert_reqs=self.cert_reqs)
+        self.handle.settimeout(self._timeout)
+        try:
+          self.handle.connect(ip_port)
+        except socket.error, e:
+          if res is not res0[-1]:
+            continue
+          else:
+            raise e
+        break
+    except socket.error, e:
+      if self._unix_socket:
+        message = 'Could not connect to secure socket %s: %s' \
+                % (self._unix_socket, e)
+      else:
+        message = 'Could not connect to %s:%d: %s' % (self.host, self.port, e)
+      raise TTransportException(type=TTransportException.NOT_OPEN,
+                                message=message)
+    if self.validate:
+      self._validate_cert()
+
+  def _validate_cert(self):
+    """internal method to validate the peer's SSL certificate, and to check the
+    commonName of the certificate to ensure it matches the hostname we
+    used to make this connection.  Does not support subjectAltName records
+    in certificates.
+
+    raises TTransportException if the certificate fails validation.
+    """
+    cert = self.handle.getpeercert()
+    self.peercert = cert
+    if 'subject' not in cert:
+      raise TTransportException(
+        type=TTransportException.NOT_OPEN,
+        message='No SSL certificate found from %s:%s' % (self.host, self.port))
+    fields = cert['subject']
+    for field in fields:
+      # ensure structure we get back is what we expect
+      if not isinstance(field, tuple):
+        continue
+      cert_pair = field[0]
+      if len(cert_pair) < 2:
+        continue
+      cert_key, cert_value = cert_pair[0:2]
+      if cert_key != 'commonName':
+        continue
+      certhost = cert_value
+      # this check should be performed by some sort of Access Manager
+      if certhost == self.host:
+        # success, cert commonName matches desired hostname
+        self.is_valid = True
+        return
+      else:
+        raise TTransportException(
+          type=TTransportException.UNKNOWN,
+          message='Hostname we connected to "%s" doesn\'t match certificate '
+                  'provided commonName "%s"' % (self.host, certhost))
+    raise TTransportException(
+      type=TTransportException.UNKNOWN,
+      message='Could not validate SSL certificate from '
+              'host "%s".  Cert=%s' % (self.host, cert))
+
+
+class TSSLServerSocket(TSocket.TServerSocket):
+  """SSL implementation of TServerSocket
+
+  This uses the ssl module's wrap_socket() method to provide SSL
+  negotiated encryption.
+  """
+  SSL_VERSION = ssl.PROTOCOL_TLSv1
+
+  def __init__(self,
+               host=None,
+               port=9090,
+               certfile='cert.pem',
+               unix_socket=None):
+    """Initialize a TSSLServerSocket
+
+    @param certfile: filename of the server certificate, defaults to cert.pem
+    @type certfile: str
+    @param host: The hostname or IP to bind the listen socket to,
+                 i.e. 'localhost' for only allowing local network connections.
+                 Pass None to bind to all interfaces.
+    @type host: str
+    @param port: The port to listen on for inbound connections.
+    @type port: int
+    """
+    self.setCertfile(certfile)
+    TSocket.TServerSocket.__init__(self, host, port)
+
+  def setCertfile(self, certfile):
+    """Set or change the server certificate file used to wrap new connections.
+
+    @param certfile: The filename of the server certificate,
+                     i.e. '/etc/certs/server.pem'
+    @type certfile: str
+
+    Raises an IOError exception if the certfile is not present or unreadable.
+    """
+    if not os.access(certfile, os.R_OK):
+      raise IOError('No such certfile found: %s' % (certfile))
+    self.certfile = certfile
+
+  def accept(self):
+    plain_client, addr = self.handle.accept()
+    try:
+      client = ssl.wrap_socket(plain_client, certfile=self.certfile,
+                      server_side=True, ssl_version=self.SSL_VERSION)
+    except ssl.SSLError, ssl_exc:
+      # failed handshake/ssl wrap, close socket to client
+      plain_client.close()
+      # raise ssl_exc
+      # We can't raise the exception, because it kills most TServer derived
+      # serve() methods.
+      # Instead, return None, and let the TServer instance deal with it in
+      # other exception handling.  (but TSimpleServer dies anyway)
+      return None
+    result = TSocket.TSocket()
+    result.setHandle(client)
+    return result

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSSLSocket.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSSLSocket.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSSLSocket.pyc
new file mode 100644
index 0000000..08a9798
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSSLSocket.pyc differ


[07/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.py
new file mode 100644
index 0000000..312e07a
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.py
@@ -0,0 +1,1426 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class MessageLevel:
+  INFO = 0
+  DEBUG = 1
+  ERROR = 2
+  ACK = 3
+
+  _VALUES_TO_NAMES = {
+    0: "INFO",
+    1: "DEBUG",
+    2: "ERROR",
+    3: "ACK",
+  }
+
+  _NAMES_TO_VALUES = {
+    "INFO": 0,
+    "DEBUG": 1,
+    "ERROR": 2,
+    "ACK": 3,
+  }
+
+class MessageType:
+  EXPERIMENT = 0
+  TASK = 1
+  PROCESS = 2
+  JOB = 3
+  LAUNCHPROCESS = 4
+  TERMINATEPROCESS = 5
+  PROCESSOUTPUT = 6
+
+  _VALUES_TO_NAMES = {
+    0: "EXPERIMENT",
+    1: "TASK",
+    2: "PROCESS",
+    3: "JOB",
+    4: "LAUNCHPROCESS",
+    5: "TERMINATEPROCESS",
+    6: "PROCESSOUTPUT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EXPERIMENT": 0,
+    "TASK": 1,
+    "PROCESS": 2,
+    "JOB": 3,
+    "LAUNCHPROCESS": 4,
+    "TERMINATEPROCESS": 5,
+    "PROCESSOUTPUT": 6,
+  }
+
+
+class ExperimentStatusChangeEvent:
+  """
+  Attributes:
+   - state
+   - experimentId
+   - gatewayId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRING, 'experimentId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, experimentId=None, gatewayId=None,):
+    self.state = state
+    self.experimentId = experimentId
+    self.gatewayId = gatewayId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentStatusChangeEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 2)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessIdentifier:
+  """
+  Attributes:
+   - processId
+   - experimentId
+   - gatewayId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'processId', None, None, ), # 1
+    (2, TType.STRING, 'experimentId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+  )
+
+  def __init__(self, processId=None, experimentId=None, gatewayId=None,):
+    self.processId = processId
+    self.experimentId = experimentId
+    self.gatewayId = gatewayId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessIdentifier')
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 1)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 2)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskIdentifier:
+  """
+  Attributes:
+   - taskId
+   - processId
+   - experimentId
+   - gatewayId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'taskId', None, None, ), # 1
+    (2, TType.STRING, 'processId', None, None, ), # 2
+    (3, TType.STRING, 'experimentId', None, None, ), # 3
+    (4, TType.STRING, 'gatewayId', None, None, ), # 4
+  )
+
+  def __init__(self, taskId=None, processId=None, experimentId=None, gatewayId=None,):
+    self.taskId = taskId
+    self.processId = processId
+    self.experimentId = experimentId
+    self.gatewayId = gatewayId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.taskId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskIdentifier')
+    if self.taskId is not None:
+      oprot.writeFieldBegin('taskId', TType.STRING, 1)
+      oprot.writeString(self.taskId)
+      oprot.writeFieldEnd()
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 2)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 3)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 4)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.taskId is None:
+      raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskStatusChangeEvent:
+  """
+  Attributes:
+   - state
+   - taskIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'taskIdentity', (TaskIdentifier, TaskIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, taskIdentity=None,):
+    self.state = state
+    self.taskIdentity = taskIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.taskIdentity = TaskIdentifier()
+          self.taskIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskStatusChangeEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.taskIdentity is not None:
+      oprot.writeFieldBegin('taskIdentity', TType.STRUCT, 2)
+      self.taskIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.taskIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field taskIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.taskIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskStatusChangeRequestEvent:
+  """
+  Attributes:
+   - state
+   - taskIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'taskIdentity', (TaskIdentifier, TaskIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, taskIdentity=None,):
+    self.state = state
+    self.taskIdentity = taskIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.taskIdentity = TaskIdentifier()
+          self.taskIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskStatusChangeRequestEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.taskIdentity is not None:
+      oprot.writeFieldBegin('taskIdentity', TType.STRUCT, 2)
+      self.taskIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.taskIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field taskIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.taskIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessStatusChangeEvent:
+  """
+  Attributes:
+   - state
+   - processIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'processIdentity', (ProcessIdentifier, ProcessIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, processIdentity=None,):
+    self.state = state
+    self.processIdentity = processIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.processIdentity = ProcessIdentifier()
+          self.processIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessStatusChangeEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.processIdentity is not None:
+      oprot.writeFieldBegin('processIdentity', TType.STRUCT, 2)
+      self.processIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.processIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field processIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.processIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessStatusChangeRequestEvent:
+  """
+  Attributes:
+   - state
+   - processIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'processIdentity', (ProcessIdentifier, ProcessIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, processIdentity=None,):
+    self.state = state
+    self.processIdentity = processIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.processIdentity = ProcessIdentifier()
+          self.processIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessStatusChangeRequestEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.processIdentity is not None:
+      oprot.writeFieldBegin('processIdentity', TType.STRUCT, 2)
+      self.processIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.processIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field processIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.processIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskOutputChangeEvent:
+  """
+  Attributes:
+   - output
+   - taskIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.LIST, 'output', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 1
+    (2, TType.STRUCT, 'taskIdentity', (TaskIdentifier, TaskIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, output=None, taskIdentity=None,):
+    self.output = output
+    self.taskIdentity = taskIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.LIST:
+          self.output = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem5.read(iprot)
+            self.output.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.taskIdentity = TaskIdentifier()
+          self.taskIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskOutputChangeEvent')
+    if self.output is not None:
+      oprot.writeFieldBegin('output', TType.LIST, 1)
+      oprot.writeListBegin(TType.STRUCT, len(self.output))
+      for iter6 in self.output:
+        iter6.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.taskIdentity is not None:
+      oprot.writeFieldBegin('taskIdentity', TType.STRUCT, 2)
+      self.taskIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.output is None:
+      raise TProtocol.TProtocolException(message='Required field output is unset!')
+    if self.taskIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field taskIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.output)
+    value = (value * 31) ^ hash(self.taskIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobIdentifier:
+  """
+  Attributes:
+   - jobId
+   - taskId
+   - processId
+   - experimentId
+   - gatewayId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobId', None, None, ), # 1
+    (2, TType.STRING, 'taskId', None, None, ), # 2
+    (3, TType.STRING, 'processId', None, None, ), # 3
+    (4, TType.STRING, 'experimentId', None, None, ), # 4
+    (5, TType.STRING, 'gatewayId', None, None, ), # 5
+  )
+
+  def __init__(self, jobId=None, taskId=None, processId=None, experimentId=None, gatewayId=None,):
+    self.jobId = jobId
+    self.taskId = taskId
+    self.processId = processId
+    self.experimentId = experimentId
+    self.gatewayId = gatewayId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.taskId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobIdentifier')
+    if self.jobId is not None:
+      oprot.writeFieldBegin('jobId', TType.STRING, 1)
+      oprot.writeString(self.jobId)
+      oprot.writeFieldEnd()
+    if self.taskId is not None:
+      oprot.writeFieldBegin('taskId', TType.STRING, 2)
+      oprot.writeString(self.taskId)
+      oprot.writeFieldEnd()
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 3)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 4)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 5)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobId is None:
+      raise TProtocol.TProtocolException(message='Required field jobId is unset!')
+    if self.taskId is None:
+      raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobId)
+    value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessSubmitEvent:
+  """
+  Attributes:
+   - processId
+   - gatewayId
+   - experimentId
+   - tokenId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'processId', None, None, ), # 1
+    (2, TType.STRING, 'gatewayId', None, None, ), # 2
+    (3, TType.STRING, 'experimentId', None, None, ), # 3
+    (4, TType.STRING, 'tokenId', None, None, ), # 4
+  )
+
+  def __init__(self, processId=None, gatewayId=None, experimentId=None, tokenId=None,):
+    self.processId = processId
+    self.gatewayId = gatewayId
+    self.experimentId = experimentId
+    self.tokenId = tokenId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.tokenId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessSubmitEvent')
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 1)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 3)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.tokenId is not None:
+      oprot.writeFieldBegin('tokenId', TType.STRING, 4)
+      oprot.writeString(self.tokenId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.tokenId is None:
+      raise TProtocol.TProtocolException(message='Required field tokenId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.tokenId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessTerminateEvent:
+  """
+  Attributes:
+   - processId
+   - gatewayId
+   - tokenId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'processId', None, None, ), # 1
+    (2, TType.STRING, 'gatewayId', None, None, ), # 2
+    (3, TType.STRING, 'tokenId', None, None, ), # 3
+  )
+
+  def __init__(self, processId=None, gatewayId=None, tokenId=None,):
+    self.processId = processId
+    self.gatewayId = gatewayId
+    self.tokenId = tokenId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.tokenId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessTerminateEvent')
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 1)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.tokenId is not None:
+      oprot.writeFieldBegin('tokenId', TType.STRING, 3)
+      oprot.writeString(self.tokenId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.tokenId is None:
+      raise TProtocol.TProtocolException(message='Required field tokenId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.tokenId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobStatusChangeEvent:
+  """
+  Attributes:
+   - state
+   - jobIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'jobIdentity', (JobIdentifier, JobIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, jobIdentity=None,):
+    self.state = state
+    self.jobIdentity = jobIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.jobIdentity = JobIdentifier()
+          self.jobIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobStatusChangeEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.jobIdentity is not None:
+      oprot.writeFieldBegin('jobIdentity', TType.STRUCT, 2)
+      self.jobIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.jobIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field jobIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.jobIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobStatusChangeRequestEvent:
+  """
+  Attributes:
+   - state
+   - jobIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'jobIdentity', (JobIdentifier, JobIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, jobIdentity=None,):
+    self.state = state
+    self.jobIdentity = jobIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.jobIdentity = JobIdentifier()
+          self.jobIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobStatusChangeRequestEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.jobIdentity is not None:
+      oprot.writeFieldBegin('jobIdentity', TType.STRUCT, 2)
+      self.jobIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.jobIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field jobIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.jobIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class Message:
+  """
+  Attributes:
+   - event
+   - messageId
+   - messageType
+   - updatedTime
+   - messageLevel
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'event', None, None, ), # 1
+    (2, TType.STRING, 'messageId', None, "DO_NOT_SET_AT_CLIENTS", ), # 2
+    (3, TType.I32, 'messageType', None, None, ), # 3
+    (4, TType.I64, 'updatedTime', None, None, ), # 4
+    (5, TType.I32, 'messageLevel', None, None, ), # 5
+  )
+
+  def __init__(self, event=None, messageId=thrift_spec[2][4], messageType=None, updatedTime=None, messageLevel=None,):
+    self.event = event
+    self.messageId = messageId
+    self.messageType = messageType
+    self.updatedTime = updatedTime
+    self.messageLevel = messageLevel
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.event = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.messageId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.messageType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.messageLevel = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Message')
+    if self.event is not None:
+      oprot.writeFieldBegin('event', TType.STRING, 1)
+      oprot.writeString(self.event)
+      oprot.writeFieldEnd()
+    if self.messageId is not None:
+      oprot.writeFieldBegin('messageId', TType.STRING, 2)
+      oprot.writeString(self.messageId)
+      oprot.writeFieldEnd()
+    if self.messageType is not None:
+      oprot.writeFieldBegin('messageType', TType.I32, 3)
+      oprot.writeI32(self.messageType)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 4)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    if self.messageLevel is not None:
+      oprot.writeFieldBegin('messageLevel', TType.I32, 5)
+      oprot.writeI32(self.messageLevel)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.event is None:
+      raise TProtocol.TProtocolException(message='Required field event is unset!')
+    if self.messageId is None:
+      raise TProtocol.TProtocolException(message='Required field messageId is unset!')
+    if self.messageType is None:
+      raise TProtocol.TProtocolException(message='Required field messageType is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.event)
+    value = (value * 31) ^ hash(self.messageId)
+    value = (value * 31) ^ hash(self.messageType)
+    value = (value * 31) ^ hash(self.updatedTime)
+    value = (value * 31) ^ hash(self.messageLevel)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.pyc
new file mode 100644
index 0000000..6244a8e
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.pyc
new file mode 100644
index 0000000..ad3edc6
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.py
new file mode 100644
index 0000000..7da3b53
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.py
@@ -0,0 +1,425 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.task.ttypes
+import apache.airavata.model.scheduling.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ProcessModel:
+  """
+  ProcessModel: A structure holding the process details. The infromation is derived based on user provided
+           configuration data or system inferred information from scheduling and QoS parameters.
+
+  processDetail:
+    A friendly description of the process, usally used to communicate information to users.
+
+
+
+  Attributes:
+   - processId
+   - experimentId
+   - creationTime
+   - lastUpdateTime
+   - processStatus
+   - processDetail
+   - applicationInterfaceId
+   - applicationDeploymentId
+   - computeResourceId
+   - processInputs
+   - processOutputs
+   - resourceSchedule
+   - tasks
+   - taskDag
+   - processError
+   - gatewayExecutionId
+   - enableEmailNotification
+   - emailAddresses
+   - storageResourceId
+   - userDn
+   - generateCert
+   - experimentDataDir
+   - userName
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'processId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'experimentId', None, None, ), # 2
+    (3, TType.I64, 'creationTime', None, None, ), # 3
+    (4, TType.I64, 'lastUpdateTime', None, None, ), # 4
+    (5, TType.STRUCT, 'processStatus', (apache.airavata.model.status.ttypes.ProcessStatus, apache.airavata.model.status.ttypes.ProcessStatus.thrift_spec), None, ), # 5
+    (6, TType.STRING, 'processDetail', None, None, ), # 6
+    (7, TType.STRING, 'applicationInterfaceId', None, None, ), # 7
+    (8, TType.STRING, 'applicationDeploymentId', None, None, ), # 8
+    (9, TType.STRING, 'computeResourceId', None, None, ), # 9
+    (10, TType.LIST, 'processInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 10
+    (11, TType.LIST, 'processOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 11
+    (12, TType.STRUCT, 'resourceSchedule', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 12
+    (13, TType.LIST, 'tasks', (TType.STRUCT,(apache.airavata.model.task.ttypes.TaskModel, apache.airavata.model.task.ttypes.TaskModel.thrift_spec)), None, ), # 13
+    (14, TType.STRING, 'taskDag', None, None, ), # 14
+    (15, TType.STRUCT, 'processError', (apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec), None, ), # 15
+    (16, TType.STRING, 'gatewayExecutionId', None, None, ), # 16
+    (17, TType.BOOL, 'enableEmailNotification', None, None, ), # 17
+    (18, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 18
+    (19, TType.STRING, 'storageResourceId', None, None, ), # 19
+    (20, TType.STRING, 'userDn', None, None, ), # 20
+    (21, TType.BOOL, 'generateCert', None, False, ), # 21
+    (22, TType.STRING, 'experimentDataDir', None, None, ), # 22
+    (23, TType.STRING, 'userName', None, None, ), # 23
+  )
+
+  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, resourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, storageResourceId=None, userDn=None, generateCert=thrift_spec[21][4], experimentDataDir=None, userName=None,):
+    self.processId = processId
+    self.experimentId = experimentId
+    self.creationTime = creationTime
+    self.lastUpdateTime = lastUpdateTime
+    self.processStatus = processStatus
+    self.processDetail = processDetail
+    self.applicationInterfaceId = applicationInterfaceId
+    self.applicationDeploymentId = applicationDeploymentId
+    self.computeResourceId = computeResourceId
+    self.processInputs = processInputs
+    self.processOutputs = processOutputs
+    self.resourceSchedule = resourceSchedule
+    self.tasks = tasks
+    self.taskDag = taskDag
+    self.processError = processError
+    self.gatewayExecutionId = gatewayExecutionId
+    self.enableEmailNotification = enableEmailNotification
+    self.emailAddresses = emailAddresses
+    self.storageResourceId = storageResourceId
+    self.userDn = userDn
+    self.generateCert = generateCert
+    self.experimentDataDir = experimentDataDir
+    self.userName = userName
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.lastUpdateTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.processStatus = apache.airavata.model.status.ttypes.ProcessStatus()
+          self.processStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.processDetail = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.applicationInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.applicationDeploymentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.computeResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.processInputs = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem5.read(iprot)
+            self.processInputs.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.LIST:
+          self.processOutputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem11.read(iprot)
+            self.processOutputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRUCT:
+          self.resourceSchedule = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.resourceSchedule.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.LIST:
+          self.tasks = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.task.ttypes.TaskModel()
+            _elem17.read(iprot)
+            self.tasks.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.STRING:
+          self.taskDag = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 15:
+        if ftype == TType.STRUCT:
+          self.processError = apache.airavata.model.commons.ttypes.ErrorModel()
+          self.processError.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 16:
+        if ftype == TType.STRING:
+          self.gatewayExecutionId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 17:
+        if ftype == TType.BOOL:
+          self.enableEmailNotification = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 18:
+        if ftype == TType.LIST:
+          self.emailAddresses = []
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = iprot.readString()
+            self.emailAddresses.append(_elem23)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 19:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 20:
+        if ftype == TType.STRING:
+          self.userDn = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 21:
+        if ftype == TType.BOOL:
+          self.generateCert = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 22:
+        if ftype == TType.STRING:
+          self.experimentDataDir = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 23:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessModel')
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 1)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 2)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 3)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastUpdateTime is not None:
+      oprot.writeFieldBegin('lastUpdateTime', TType.I64, 4)
+      oprot.writeI64(self.lastUpdateTime)
+      oprot.writeFieldEnd()
+    if self.processStatus is not None:
+      oprot.writeFieldBegin('processStatus', TType.STRUCT, 5)
+      self.processStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.processDetail is not None:
+      oprot.writeFieldBegin('processDetail', TType.STRING, 6)
+      oprot.writeString(self.processDetail)
+      oprot.writeFieldEnd()
+    if self.applicationInterfaceId is not None:
+      oprot.writeFieldBegin('applicationInterfaceId', TType.STRING, 7)
+      oprot.writeString(self.applicationInterfaceId)
+      oprot.writeFieldEnd()
+    if self.applicationDeploymentId is not None:
+      oprot.writeFieldBegin('applicationDeploymentId', TType.STRING, 8)
+      oprot.writeString(self.applicationDeploymentId)
+      oprot.writeFieldEnd()
+    if self.computeResourceId is not None:
+      oprot.writeFieldBegin('computeResourceId', TType.STRING, 9)
+      oprot.writeString(self.computeResourceId)
+      oprot.writeFieldEnd()
+    if self.processInputs is not None:
+      oprot.writeFieldBegin('processInputs', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.processInputs))
+      for iter24 in self.processInputs:
+        iter24.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.processOutputs is not None:
+      oprot.writeFieldBegin('processOutputs', TType.LIST, 11)
+      oprot.writeListBegin(TType.STRUCT, len(self.processOutputs))
+      for iter25 in self.processOutputs:
+        iter25.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.resourceSchedule is not None:
+      oprot.writeFieldBegin('resourceSchedule', TType.STRUCT, 12)
+      self.resourceSchedule.write(oprot)
+      oprot.writeFieldEnd()
+    if self.tasks is not None:
+      oprot.writeFieldBegin('tasks', TType.LIST, 13)
+      oprot.writeListBegin(TType.STRUCT, len(self.tasks))
+      for iter26 in self.tasks:
+        iter26.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.taskDag is not None:
+      oprot.writeFieldBegin('taskDag', TType.STRING, 14)
+      oprot.writeString(self.taskDag)
+      oprot.writeFieldEnd()
+    if self.processError is not None:
+      oprot.writeFieldBegin('processError', TType.STRUCT, 15)
+      self.processError.write(oprot)
+      oprot.writeFieldEnd()
+    if self.gatewayExecutionId is not None:
+      oprot.writeFieldBegin('gatewayExecutionId', TType.STRING, 16)
+      oprot.writeString(self.gatewayExecutionId)
+      oprot.writeFieldEnd()
+    if self.enableEmailNotification is not None:
+      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 17)
+      oprot.writeBool(self.enableEmailNotification)
+      oprot.writeFieldEnd()
+    if self.emailAddresses is not None:
+      oprot.writeFieldBegin('emailAddresses', TType.LIST, 18)
+      oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
+      for iter27 in self.emailAddresses:
+        oprot.writeString(iter27)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 19)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
+    if self.userDn is not None:
+      oprot.writeFieldBegin('userDn', TType.STRING, 20)
+      oprot.writeString(self.userDn)
+      oprot.writeFieldEnd()
+    if self.generateCert is not None:
+      oprot.writeFieldBegin('generateCert', TType.BOOL, 21)
+      oprot.writeBool(self.generateCert)
+      oprot.writeFieldEnd()
+    if self.experimentDataDir is not None:
+      oprot.writeFieldBegin('experimentDataDir', TType.STRING, 22)
+      oprot.writeString(self.experimentDataDir)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 23)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastUpdateTime)
+    value = (value * 31) ^ hash(self.processStatus)
+    value = (value * 31) ^ hash(self.processDetail)
+    value = (value * 31) ^ hash(self.applicationInterfaceId)
+    value = (value * 31) ^ hash(self.applicationDeploymentId)
+    value = (value * 31) ^ hash(self.computeResourceId)
+    value = (value * 31) ^ hash(self.processInputs)
+    value = (value * 31) ^ hash(self.processOutputs)
+    value = (value * 31) ^ hash(self.resourceSchedule)
+    value = (value * 31) ^ hash(self.tasks)
+    value = (value * 31) ^ hash(self.taskDag)
+    value = (value * 31) ^ hash(self.processError)
+    value = (value * 31) ^ hash(self.gatewayExecutionId)
+    value = (value * 31) ^ hash(self.enableEmailNotification)
+    value = (value * 31) ^ hash(self.emailAddresses)
+    value = (value * 31) ^ hash(self.storageResourceId)
+    value = (value * 31) ^ hash(self.userDn)
+    value = (value * 31) ^ hash(self.generateCert)
+    value = (value * 31) ^ hash(self.experimentDataDir)
+    value = (value * 31) ^ hash(self.userName)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.pyc
new file mode 100644
index 0000000..23c9673
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/process/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.pyc
new file mode 100644
index 0000000..4ed336e
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.py
new file mode 100644
index 0000000..6fb231b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.py
@@ -0,0 +1,230 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ComputationalResourceSchedulingModel:
+  """
+  ComputationalResourceSchedulingModel:
+
+
+
+  Attributes:
+   - resourceHostId
+   - totalCPUCount
+   - nodeCount
+   - numberOfThreads
+   - queueName
+   - wallTimeLimit
+   - totalPhysicalMemory
+   - chessisNumber
+   - staticWorkingDir
+   - overrideLoginUserName
+   - overrideScratchLocation
+   - overrideAllocationProjectNumber
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'resourceHostId', None, None, ), # 1
+    (2, TType.I32, 'totalCPUCount', None, None, ), # 2
+    (3, TType.I32, 'nodeCount', None, None, ), # 3
+    (4, TType.I32, 'numberOfThreads', None, None, ), # 4
+    (5, TType.STRING, 'queueName', None, None, ), # 5
+    (6, TType.I32, 'wallTimeLimit', None, None, ), # 6
+    (7, TType.I32, 'totalPhysicalMemory', None, None, ), # 7
+    (8, TType.STRING, 'chessisNumber', None, None, ), # 8
+    (9, TType.STRING, 'staticWorkingDir', None, None, ), # 9
+    (10, TType.STRING, 'overrideLoginUserName', None, None, ), # 10
+    (11, TType.STRING, 'overrideScratchLocation', None, None, ), # 11
+    (12, TType.STRING, 'overrideAllocationProjectNumber', None, None, ), # 12
+  )
+
+  def __init__(self, resourceHostId=None, totalCPUCount=None, nodeCount=None, numberOfThreads=None, queueName=None, wallTimeLimit=None, totalPhysicalMemory=None, chessisNumber=None, staticWorkingDir=None, overrideLoginUserName=None, overrideScratchLocation=None, overrideAllocationProjectNumber=None,):
+    self.resourceHostId = resourceHostId
+    self.totalCPUCount = totalCPUCount
+    self.nodeCount = nodeCount
+    self.numberOfThreads = numberOfThreads
+    self.queueName = queueName
+    self.wallTimeLimit = wallTimeLimit
+    self.totalPhysicalMemory = totalPhysicalMemory
+    self.chessisNumber = chessisNumber
+    self.staticWorkingDir = staticWorkingDir
+    self.overrideLoginUserName = overrideLoginUserName
+    self.overrideScratchLocation = overrideScratchLocation
+    self.overrideAllocationProjectNumber = overrideAllocationProjectNumber
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.resourceHostId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.totalCPUCount = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.nodeCount = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.numberOfThreads = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.queueName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.wallTimeLimit = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.totalPhysicalMemory = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.chessisNumber = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.staticWorkingDir = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.overrideLoginUserName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.overrideScratchLocation = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRING:
+          self.overrideAllocationProjectNumber = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComputationalResourceSchedulingModel')
+    if self.resourceHostId is not None:
+      oprot.writeFieldBegin('resourceHostId', TType.STRING, 1)
+      oprot.writeString(self.resourceHostId)
+      oprot.writeFieldEnd()
+    if self.totalCPUCount is not None:
+      oprot.writeFieldBegin('totalCPUCount', TType.I32, 2)
+      oprot.writeI32(self.totalCPUCount)
+      oprot.writeFieldEnd()
+    if self.nodeCount is not None:
+      oprot.writeFieldBegin('nodeCount', TType.I32, 3)
+      oprot.writeI32(self.nodeCount)
+      oprot.writeFieldEnd()
+    if self.numberOfThreads is not None:
+      oprot.writeFieldBegin('numberOfThreads', TType.I32, 4)
+      oprot.writeI32(self.numberOfThreads)
+      oprot.writeFieldEnd()
+    if self.queueName is not None:
+      oprot.writeFieldBegin('queueName', TType.STRING, 5)
+      oprot.writeString(self.queueName)
+      oprot.writeFieldEnd()
+    if self.wallTimeLimit is not None:
+      oprot.writeFieldBegin('wallTimeLimit', TType.I32, 6)
+      oprot.writeI32(self.wallTimeLimit)
+      oprot.writeFieldEnd()
+    if self.totalPhysicalMemory is not None:
+      oprot.writeFieldBegin('totalPhysicalMemory', TType.I32, 7)
+      oprot.writeI32(self.totalPhysicalMemory)
+      oprot.writeFieldEnd()
+    if self.chessisNumber is not None:
+      oprot.writeFieldBegin('chessisNumber', TType.STRING, 8)
+      oprot.writeString(self.chessisNumber)
+      oprot.writeFieldEnd()
+    if self.staticWorkingDir is not None:
+      oprot.writeFieldBegin('staticWorkingDir', TType.STRING, 9)
+      oprot.writeString(self.staticWorkingDir)
+      oprot.writeFieldEnd()
+    if self.overrideLoginUserName is not None:
+      oprot.writeFieldBegin('overrideLoginUserName', TType.STRING, 10)
+      oprot.writeString(self.overrideLoginUserName)
+      oprot.writeFieldEnd()
+    if self.overrideScratchLocation is not None:
+      oprot.writeFieldBegin('overrideScratchLocation', TType.STRING, 11)
+      oprot.writeString(self.overrideScratchLocation)
+      oprot.writeFieldEnd()
+    if self.overrideAllocationProjectNumber is not None:
+      oprot.writeFieldBegin('overrideAllocationProjectNumber', TType.STRING, 12)
+      oprot.writeString(self.overrideAllocationProjectNumber)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.resourceHostId)
+    value = (value * 31) ^ hash(self.totalCPUCount)
+    value = (value * 31) ^ hash(self.nodeCount)
+    value = (value * 31) ^ hash(self.numberOfThreads)
+    value = (value * 31) ^ hash(self.queueName)
+    value = (value * 31) ^ hash(self.wallTimeLimit)
+    value = (value * 31) ^ hash(self.totalPhysicalMemory)
+    value = (value * 31) ^ hash(self.chessisNumber)
+    value = (value * 31) ^ hash(self.staticWorkingDir)
+    value = (value * 31) ^ hash(self.overrideLoginUserName)
+    value = (value * 31) ^ hash(self.overrideScratchLocation)
+    value = (value * 31) ^ hash(self.overrideAllocationProjectNumber)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.pyc
new file mode 100644
index 0000000..820528b
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/scheduling/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.pyc
new file mode 100644
index 0000000..364840e
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.py
new file mode 100644
index 0000000..74c50e7
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.py
@@ -0,0 +1,108 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class AuthzToken:
+  """
+  Attributes:
+   - accessToken
+   - claimsMap
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'accessToken', None, None, ), # 1
+    (2, TType.MAP, 'claimsMap', (TType.STRING,None,TType.STRING,None), None, ), # 2
+  )
+
+  def __init__(self, accessToken=None, claimsMap=None,):
+    self.accessToken = accessToken
+    self.claimsMap = claimsMap
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.accessToken = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.MAP:
+          self.claimsMap = {}
+          (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
+          for _i4 in xrange(_size0):
+            _key5 = iprot.readString()
+            _val6 = iprot.readString()
+            self.claimsMap[_key5] = _val6
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AuthzToken')
+    if self.accessToken is not None:
+      oprot.writeFieldBegin('accessToken', TType.STRING, 1)
+      oprot.writeString(self.accessToken)
+      oprot.writeFieldEnd()
+    if self.claimsMap is not None:
+      oprot.writeFieldBegin('claimsMap', TType.MAP, 2)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.claimsMap))
+      for kiter7,viter8 in self.claimsMap.items():
+        oprot.writeString(kiter7)
+        oprot.writeString(viter8)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.accessToken is None:
+      raise TProtocol.TProtocolException(message='Required field accessToken is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.accessToken)
+    value = (value * 31) ^ hash(self.claimsMap)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.pyc
new file mode 100644
index 0000000..27429d0
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/security/ttypes.pyc differ


[31/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/.ipynb_checkpoints/Admin User-checkpoint.ipynb
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/.ipynb_checkpoints/Admin User-checkpoint.ipynb b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/.ipynb_checkpoints/Admin User-checkpoint.ipynb
new file mode 100644
index 0000000..748fc23
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/.ipynb_checkpoints/Admin User-checkpoint.ipynb	
@@ -0,0 +1,852 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "import ConfigParser\n",
+    "import pandas as pd\n",
+    "import datetime\n",
+    "from datetime import datetime\n",
+    "import calendar\n",
+    "import matplotlib.pyplot as plt\n",
+    "%matplotlib inline\n",
+    "conf = ConfigParser.RawConfigParser()\n",
+    "conf.read('cli.properties')\n",
+    "hostName = conf.get('AiravataServer', 'host')\n",
+    "port = conf.get('AiravataServer', 'port')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {
+    "collapsed": false,
+    "scrolled": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.16.0\n",
+      "0.16.0\n",
+      "\n",
+      "Welcome to Airavata CLI v0.0.1 - Wirtten in python\n",
+      "\n",
+      "\n",
+      "None\n"
+     ]
+    }
+   ],
+   "source": [
+    "from airavata_cli import AiravataCLI\n",
+    "airavata_cli = AiravataCLI(hostName, int(port))\n",
+    "print(airavata_cli.printVersion())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": false
+   },
+   "source": [
+    "## Making Sure we are connected to the right Gateway"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[Gateway(gatewayId='Ultrascan_Production', emailAddress=None, domain=None, gatewayName='Ultrascan_Production')]"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "airavata_cli.get_gatewaylist()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "## List of Resources the Gateway uses"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[('alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29',\n",
+       "  'alamo.uthscsa.edu'),\n",
+       " ('Jureca_32098185-4396-4c11-afb7-26e991a03476', 'Jureca'),\n",
+       " ('comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', 'comet.sdsc.edu'),\n",
+       " ('gordon.sdsc.edu_f9363997-4614-477f-847e-79d262ee8ef7', 'gordon.sdsc.edu'),\n",
+       " ('ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf',\n",
+       "  'ls5.tacc.utexas.edu'),\n",
+       " ('stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12',\n",
+       "  'stampede.tacc.xsede.org')]"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "airavata_cli.computer_resources().items()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Id</th>\n",
+       "      <th>Name</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-1716...</td>\n",
+       "      <td>alamo.uthscsa.edu</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>Jureca_32098185-4396-4c11-afb7-26e991a03476</td>\n",
+       "      <td>Jureca</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975e...</td>\n",
+       "      <td>comet.sdsc.edu</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>gordon.sdsc.edu_f9363997-4614-477f-847e-79d262...</td>\n",
+       "      <td>gordon.sdsc.edu</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...</td>\n",
+       "      <td>ls5.tacc.utexas.edu</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5</th>\n",
+       "      <td>stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b14...</td>\n",
+       "      <td>stampede.tacc.xsede.org</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "                                                  Id                     Name\n",
+       "0  alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-1716...        alamo.uthscsa.edu\n",
+       "1        Jureca_32098185-4396-4c11-afb7-26e991a03476                   Jureca\n",
+       "2  comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975e...           comet.sdsc.edu\n",
+       "3  gordon.sdsc.edu_f9363997-4614-477f-847e-79d262...          gordon.sdsc.edu\n",
+       "4  ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...      ls5.tacc.utexas.edu\n",
+       "5  stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b14...  stampede.tacc.xsede.org"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "compute_resources = pd.DataFrame(list(airavata_cli.computer_resources().items()), columns=[\"Id\", \"Name\"])\n",
+    "compute_resources"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "## Some other custom functions which can be created"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "collapsed": false,
+    "scrolled": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[ApplicationInterfaceDescription(applicationName='Ultrascan', applicationInputs=[InputDataObjectType(userFriendlyDescription='Ultrascan HPC Input Tar File', name='Input_Tar_File', dataStaged=False, value='', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=3, inputOrder=1, metaData=''), InputDataObjectType(userFriendlyDescription='Batches for multi-wavelength data processing', name='Parallel_Group_Count', dataStaged=False, value='-mgroupcount=1', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=3, metaData=''), InputDataObjectType(userFriendlyDescription='Wall Clock Limit on the Compute Resource', name='Wall_Time', dataStaged=False, value='-walltime=60', applicationArgument='', isRequired=True, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=2, metaData='')], applicationInterfaceId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46
 ', applicationDescription='Ultrascan Version 3 Interface', applicationOutputs=[OutputDataObjectType(dataMovement=True, name='output', value='output/analysis-results.tar', applicationArgument='', isRequired=True, searchQuery='', location='output', requiredToAddedToCommandLine=False, outputStreaming=False, type=3), OutputDataObjectType(dataMovement=True, name='Ultrascan-Standard-Error', value='', applicationArgument='', isRequired=True, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=5), OutputDataObjectType(dataMovement=True, name='Ultrascan-Standard-Out', value='', applicationArgument='', isRequired=True, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=4)], applicationModules=['Ultrascan_82282f1e-284f-4999-9beb-4620c485b03d']),\n",
+       " ApplicationInterfaceDescription(applicationName='Ultrascan_Unicore', applicationInputs=[InputDataObjectType(userFriendlyDescription='', name='Input', dataStaged=False, value='', applicationArgument='', isRequired=True, standardInput=False, requiredToAddedToCommandLine=False, type=3, inputOrder=1, metaData=''), InputDataObjectType(userFriendlyDescription='', name='mgroupcount', dataStaged=False, value='-mgroupcount 1', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=2, metaData=''), InputDataObjectType(userFriendlyDescription='', name='US3INPUTARG', dataStaged=False, value='', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=4, metaData=''), InputDataObjectType(userFriendlyDescription='', name='walltime', dataStaged=False, value='-walltime 60', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True,
  type=0, inputOrder=3, metaData='')], applicationInterfaceId='Ultrascan_Unicore_0e7f8522-6d75-41ba-8b09-0021e728679a', applicationDescription='Unicore Service', applicationOutputs=[OutputDataObjectType(dataMovement=True, name='Ultrascan-Unicore-Standard-Error', value='', applicationArgument='', isRequired=False, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=5), OutputDataObjectType(dataMovement=True, name='Ultrascan-Unicore-Standard-Out', value='', applicationArgument='', isRequired=False, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=4), OutputDataObjectType(dataMovement=True, name='US3OUT', value='analysis-results.tar', applicationArgument='', isRequired=True, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=0)], applicationModules=['Ultrascan_Unicore_2471953d-5d87-4ffc-b0e6-b06c86c6206d'])]"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "airavata_cli.list_of_applications('Ultrascan_Production')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "collapsed": false,
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[ApplicationModule(appModuleName='Ultrascan', appModuleVersion='Ultrascan Application', appModuleId='Ultrascan_82282f1e-284f-4999-9beb-4620c485b03d', appModuleDescription=''),\n",
+       " ApplicationModule(appModuleName='Ultrascan_Unicore', appModuleVersion='', appModuleId='Ultrascan_Unicore_2471953d-5d87-4ffc-b0e6-b06c86c6206d', appModuleDescription='Ultrascan Unicore Application')]"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "airavata_cli.module_descriptions('Ultrascan_Production')     "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": false
+   },
+   "source": [
+    "##Setting the time parameters"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "start= datetime(2015,7,16,15,10)\n",
+    "end= datetime(2016,7,17,11,59)\n",
+    "fromTime = calendar.timegm(start.timetuple())\n",
+    "toTime = calendar.timegm(end.timetuple())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "## Getting the list of Experiments executed during the above mentioned period"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "ds=airavata_cli.experiment_statistics(\"Ultrascan_Production\", fromTime*1000, toTime*1000)\n",
+    "#ds"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>User Name</th>\n",
+       "      <th>Name</th>\n",
+       "      <th>Status Update</th>\n",
+       "      <th>Resource Host ID</th>\n",
+       "      <th>Project ID</th>\n",
+       "      <th>Creation Time</th>\n",
+       "      <th>Experiment ID</th>\n",
+       "      <th>Execution ID</th>\n",
+       "      <th>Gateway ID</th>\n",
+       "      <th>Experiment Status</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>Daniel_Krzizike_550162c5-88f4-5624-cd19-114778...</td>\n",
+       "      <td>US3-AIRA</td>\n",
+       "      <td>None</td>\n",
+       "      <td>ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...</td>\n",
+       "      <td>Default_Project_4e1dede8-0925-47e6-b61c-966051...</td>\n",
+       "      <td>1468618483000</td>\n",
+       "      <td>US3-AIRA_36f4788f-240b-4119-aaed-18926be8165c</td>\n",
+       "      <td>Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46</td>\n",
+       "      <td>Ultrascan_Production</td>\n",
+       "      <td>COMPLETED</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f</td>\n",
+       "      <td>US3-AIRA</td>\n",
+       "      <td>None</td>\n",
+       "      <td>ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...</td>\n",
+       "      <td>Default_Project_b884d629-32bf-4532-ae76-8366db...</td>\n",
+       "      <td>1468616186000</td>\n",
+       "      <td>US3-AIRA_408946e3-6104-48b3-a9dc-27ec03f45cb2</td>\n",
+       "      <td>Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46</td>\n",
+       "      <td>Ultrascan_Production</td>\n",
+       "      <td>COMPLETED</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f</td>\n",
+       "      <td>US3-AIRA</td>\n",
+       "      <td>None</td>\n",
+       "      <td>ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...</td>\n",
+       "      <td>Default_Project_b884d629-32bf-4532-ae76-8366db...</td>\n",
+       "      <td>1468615898000</td>\n",
+       "      <td>US3-AIRA_270ed9fe-f0f9-4c00-936f-72c994cb2125</td>\n",
+       "      <td>Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46</td>\n",
+       "      <td>Ultrascan_Production</td>\n",
+       "      <td>COMPLETED</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>Daniel_Krzizike_550162c5-88f4-5624-cd19-114778...</td>\n",
+       "      <td>US3-AIRA</td>\n",
+       "      <td>None</td>\n",
+       "      <td>ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...</td>\n",
+       "      <td>Default_Project_4e1dede8-0925-47e6-b61c-966051...</td>\n",
+       "      <td>1468612459000</td>\n",
+       "      <td>US3-AIRA_c23effff-bf70-4d77-968a-5982919eb3a0</td>\n",
+       "      <td>Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46</td>\n",
+       "      <td>Ultrascan_Production</td>\n",
+       "      <td>COMPLETED</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>Daniel_Krzizike_550162c5-88f4-5624-cd19-114778...</td>\n",
+       "      <td>US3-AIRA</td>\n",
+       "      <td>None</td>\n",
+       "      <td>ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...</td>\n",
+       "      <td>Default_Project_4e1dede8-0925-47e6-b61c-966051...</td>\n",
+       "      <td>1468612433000</td>\n",
+       "      <td>US3-AIRA_2e65cd86-b4f2-4514-99c2-68c6cec880f4</td>\n",
+       "      <td>Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46</td>\n",
+       "      <td>Ultrascan_Production</td>\n",
+       "      <td>COMPLETED</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "                                           User Name      Name Status Update  \\\n",
+       "0  Daniel_Krzizike_550162c5-88f4-5624-cd19-114778...  US3-AIRA          None   \n",
+       "1  Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f  US3-AIRA          None   \n",
+       "2  Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f  US3-AIRA          None   \n",
+       "3  Daniel_Krzizike_550162c5-88f4-5624-cd19-114778...  US3-AIRA          None   \n",
+       "4  Daniel_Krzizike_550162c5-88f4-5624-cd19-114778...  US3-AIRA          None   \n",
+       "\n",
+       "                                    Resource Host ID  \\\n",
+       "0  ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...   \n",
+       "1  ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...   \n",
+       "2  ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...   \n",
+       "3  ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...   \n",
+       "4  ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...   \n",
+       "\n",
+       "                                          Project ID  Creation Time  \\\n",
+       "0  Default_Project_4e1dede8-0925-47e6-b61c-966051...  1468618483000   \n",
+       "1  Default_Project_b884d629-32bf-4532-ae76-8366db...  1468616186000   \n",
+       "2  Default_Project_b884d629-32bf-4532-ae76-8366db...  1468615898000   \n",
+       "3  Default_Project_4e1dede8-0925-47e6-b61c-966051...  1468612459000   \n",
+       "4  Default_Project_4e1dede8-0925-47e6-b61c-966051...  1468612433000   \n",
+       "\n",
+       "                                   Experiment ID  \\\n",
+       "0  US3-AIRA_36f4788f-240b-4119-aaed-18926be8165c   \n",
+       "1  US3-AIRA_408946e3-6104-48b3-a9dc-27ec03f45cb2   \n",
+       "2  US3-AIRA_270ed9fe-f0f9-4c00-936f-72c994cb2125   \n",
+       "3  US3-AIRA_c23effff-bf70-4d77-968a-5982919eb3a0   \n",
+       "4  US3-AIRA_2e65cd86-b4f2-4514-99c2-68c6cec880f4   \n",
+       "\n",
+       "                                     Execution ID            Gateway ID  \\\n",
+       "0  Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46  Ultrascan_Production   \n",
+       "1  Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46  Ultrascan_Production   \n",
+       "2  Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46  Ultrascan_Production   \n",
+       "3  Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46  Ultrascan_Production   \n",
+       "4  Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46  Ultrascan_Production   \n",
+       "\n",
+       "  Experiment Status  \n",
+       "0         COMPLETED  \n",
+       "1         COMPLETED  \n",
+       "2         COMPLETED  \n",
+       "3         COMPLETED  \n",
+       "4         COMPLETED  "
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "All_Experiments = []\n",
+    "for i in ds.allExperiments:\n",
+    "    All_Experiments.append([i.userName, i.name, i.statusUpdateTime, i.resourceHostId, i.projectId, i.creationTime, \n",
+    "                                i.experimentId, i.executionId, i.gatewayId, i.experimentStatus])\n",
+    "labels = [\"User Name\", \"Name\", \"Status Update\", \"Resource Host ID\", \"Project ID\", \"Creation Time\", \"Experiment ID\", \n",
+    "          \"Execution ID\", \"Gateway ID\", \"Experiment Status\"]\n",
+    "df = pd.DataFrame(data=All_Experiments, columns=labels)\n",
+    "df.head()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(4124, 10)"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "df.shape"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "## Calculating percentage use of resources"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "ls5_cn = sum([1 for x, row in df.iterrows() if row[3] == 'ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf' and row[9] == 'COMPLETED'])\n",
+    "stampede_cn = sum([1 for x, row in df.iterrows() if row[3] == 'stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12' and row[9] == 'COMPLETED'])\n",
+    "comet_cn = sum([1 for x, row in df.iterrows() if row[3] == 'comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b' and row[9] == 'COMPLETED'])\n",
+    "gordon_cn= sum([1 for x, row in df.iterrows() if row[3] == 'gordon.sdsc.edu_f9363997-4614-477f-847e-79d262ee8ef7' and row[9] == 'COMPLETED'])\n",
+    "#jureca_cn = sum([1 for x, row in df.iterrows() if row[3] == 'Jureca_32098185-4396-4c11-afb7-26e991a03476' and row[9] == 'COMPLETED'])\n",
+    "alamo_cn = sum([1 for x, row in df.iterrows() if row[3] == 'alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29' and row[9] == 'COMPLETED'])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD8CAYAAACfF6SlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VGX2wPHvuTOZTElClxIghISANBGQZkFBUVExuEhV\nEEFEmiyrv7UroisguiqLXcEOiKCLaxd0QUUBAUGWJkhHeuqkzby/P+4NhBhIgCR3knk/zzNPJnPL\nnLmBc++c+xZRSqFpmqaFF8PuADRN07Typ5O/pmlaGNLJX9M0LQzp5K9pmhaGdPLXNE0LQzr5a5qm\nhSGd/DWthETkYRF5y+44NK006ORfAYjI7yKSKSKpIrJXRGaKiNfuuAoSkW0i0i1U3ltEhojIkjJ4\nu1LpGFPob7onFP+mWuWmk3/FoIBrlFIxQFugPfDA6e5ERBylHViIC+UejAX/pm2A84F77Q3puDD8\ntxJ2dPKvOARAKbUX+BRoCSAiMSLyqnX1uFNEJomIWMuGiMhSEXlaRA4CD1uv3yYi662rznUi0sZ6\nva6IzBOR/SLym4iMPfbmZsljjoi8YW23VkTaWsveBBoCC61ld1mvz7W+qRwRkW9EpHmB/VUXkYUi\nkiIiP1pxLymwvJmIfCEih0TkfyJy4xkfOJFIEXlLRA5asfwoIrWKO34n4RGR2dbnXCEiraz93CUi\n8wq973Mi8s9ThQaglNoPfI55Esjf1iUi00Rku3UMnxeRSGtZDevYHbGOz7cFtmsmIoutZWtF5LoC\nyxaLyK0Ffj/h25GIBEVklIhsAjZZr7Uo8HfYKyL3WK+LiNwjIltE5IB1TKoWd7y10KGTfwUjIg2A\nnsDP1ktvADlAY8yrxyuA4QU26QhsAc4BHreS6EPATdZVZy/gkJXwFgKrgLpAd+BOEbmiwL6uA94F\nqljrzgBQSg0GdgDXKqVilFLTrPU/ARKs9/4ZeKfAv
 p4H0qxltwBDsK7UrfLHF8DbQE2gPzBDRJqd\n9gEzDQFigFigOjAS8FvLijt+hfUC5gDVgPeAj6yr5LeBK0UkxvoMDqCftf9TEpH6wNXA5gIvTwES\ngdbWz1jMvxvA34CdQA3M43eftR8n5t/lM6AWMA54R0SanOLtC387uh7oADQXkSjgS8y/Y10rjq+t\n9cZZx+JioB5wBPNvCqc+3lqoUErpR4g/gG1AKnDYej4diMT8j58FRBZYtz+wyHo+BPi90L4+A8YW\n8R4dilj3HuA16/nDwBcFlp0LZBSKsdspPkNVIAhEY1505ACJBZZPAv5rPe8LfFto+xeBB09xfLoV\nem1Igf0NBZYCrQqtc8rjV8T7PAx8X+B3AfYAF1q//wcYZj2/FlhXgr9pqnVcvgRiCixPB+IL/N4Z\n2Go9nwgsABIK7fMiYE+h194FHrKeLwZuLeoYWb8Hga6FjsXKk8S/HriswO91rb+pcbLjrR+h9XCi\nVRTXK6UWF3xBROKACGBvfqXHeuwosNrOQvtpAPxWxP7jgFgROZy/e8z/yP8tsM6+As8zAbeIGEqp\nYOGdiYgB/APog3n1rqxHTcALOIBdJ4kzDuhUKBYHcLKWNnmYx6GgCCDXev4WUB+YLSJVMK/S77fe\np7jjV9ixOJVSSkR2YV75AryJeZX7GjDoFPHmu14ptVhELsZM0jWBVKtE4gVWFqhAGVZsAE8CjwBf\niIgCXlFKTbHiKPz33o55BV5SBf8mJ/u3AuaxWyAi+X97wTzetTnJ8VZKBU4jDq2M6eRfcRRVh96J\neeVaQ1mXX0Uo/PpOzFJMUfvaqpRqeobxFX6fgZhlom5KqR1WEjiC+TkOYCbs+pglKTATTcFYvlFK\nXVnC994BNCr0Wjxm4kMplYf5zWKSiDTEvGey0fpZ3PEr7FicVqmsPubVP8CHwPMi0gLzyv/uYvaV\nX/NfIiJvAE8BvYGDmCfXFsq8
 x3MCpVQ6cBdwl3UfZbGI/GTF0bDQ6g2tzwqQgXlSyVeniJgKHoed\nmFf/RdmB+S3ih5MsL+p4zzzJupoNdM2/AlNK7cOsjf9TRKKtm3CNReSSU2z2KmbSyL9Zm2DdR/gJ\nSBOR/xMRt4g4rJt97U+xr4InpH2YdfN80UA2cEREfMATWInF+qYwH3hERDxWLX9wgW0/BpJE5CYR\ncYpIhIi0P0XNfw4wXkSaWp+pPXArZk0eEblURFpa30bSMa9QA2d4/NqJSLJV0/8r5sljmfW5soEP\nMK/if1RK7Tr5bv7kGeAKEWllnYheAZ6R4zemY0Wkh/X8GhHJP4GnYZ5Ig8CPQIb1N3SKyKWYJ6H3\nrHVXAzdYxzwRGFZMTB8DdURknJg3oKNEpIO17CXgH1ZyR0RqiUgv63lRx/tP3w41e+nkXzGc6qp0\nMODCrMEeBt6n6Cs6c0dKzQMeB94VkVTM2nF1KyFfi9niZBuwHzMBxZQwrsnAgyJyWEQmYN7o3AHs\nBtYB3xfadizmfYC91rrvYp4s8q9se2Bede6xHpOtz1mUVzCvKheKyFFgFnCvUupLa3kdYB6QAvyK\nWft+21p2WscP+AjzRu4RzNJO70LljDeAVpgloFM54W+qlDpobZt/U/cezG9Fy6zP9AWQZC1rAnwl\nImnAd8AMpdS3SqlczG9bPTG/PfwLuFkplX8j+Z+YiXgf5vHKPwYniykd8wZ4L2ubTcCl1uJnrWPx\nhYikYP59808MRR1v3TkuxEjJv+1qWtkRkclAbaXUULtjORvWt6j/AXWs5KlpIUlf+Wu2EJGmcryN\nfAfMEsR8e6M6O1aZ42/AbJ34tVCnb/hqdokG3hORusAfwJNKqYU2x3TGrL4Jf2CWzK62ORxNK5Yu\n+2iapoUhXfbRNE0LQzr5a5qmhSGd/DVN08KQTv6apmlhSCd/TdO0MKSTv6ZpWhjSyV/TNC0M6eSv\naZoWhnT
 y1zRNC0M6+WuapoUhnfw1TdPCkE7+mqZpYUgnf03TtDCkk7+maVoY0slf0zQtDOnkr2ma\nFoZ08tc0TQtDOvlrmqaFIZ38NU3TwpBO/pqmaWFIJ39N07QwpJO/pmlaGHLaHYCmlRYREcAH1ACq\nF3jk/+7GMJwYRgSG4UTEfKjAOR4jNxc4GgwSAPKCQQLBILmBAGlAKpBykkeqUiqnvD+rpp0tnfy1\nkCciPiARaAIkEBlZD5erLoZxDkpVJxisRm5uDIbhw+EI4vHkEBUVICZGUaWKUK1aBFWrunC7HRgG\nxx4OBxgGznmzVdvEQ9KmDQSDoJT5MxAAv59gaio5aWnkpaURSE+H9HTIzMSRlYUzOxuX0ylBp5NM\np5NUh4NdgQBbMjLYCOwEdliPXUqpbBsPo6adQCd/LSSIiIfjCb4JPt95OBzNyclphMPho2bNTBo0\ngPh4LzVqOImOhpgYjv3Mf+5yOYCI03lv9dWnqnXrQ9KnT5GLDcB90m0VZGdjZGQQk5pKzP791P/j\nDzr98QeB3bvx791LYP9+HKmpeNxuyXC52CfC9qwsNubksAZYC/yqlEo/nZg17Wzp5K+VKxFxA22B\njvh85+NwtCAnJx6HI5oaNfzUr69o3NhDgwYRxMZC/fpQqxYYRozdsRdFBNxu81GjBsTHH1vkAKLy\nfwkE4MgRYvbvJ2b/fpL27eOKzZvJ2LSJwL59eH0+Oex08mtGBj8EAsdOCpuVUnnl/6m0cKCTv1Zm\nrBp8HNAJt7srERGX4XQ2pk4dP23aRJKQEEn9+scTvMMRbXfMZcXhgJo1zUfz5sde9oF5Yti9m3O2\nbuWc336j64YNpG/dipGSQmR0tOxQilUZGSwClgDrlVJBmz6GVono5K+VGqs23w7oTHT0FURGtsfp\ndNG8eR7nnx9F8+ZC06bgdp9WWaayczigYUPzcemlGEAMgN8P27aRsHUrCatX03PVKoLp
 6UhMjPyU\nlsYnmCeDn5VSubZ+AK1C0slfO2MiUgW4HI/nahyOrjidccTG+mnTxk3r1i6aN4fatc3aiHbaPB7z\nW0Lz5nDttXgBDh6EX37hstWr6bJiBdkHDhAZEyNrMzP5JBDgW2CZUirT5tC1CkAnf63ErDJOC0R6\nEhXVj4iIljRtmsVFF0XTooWQlAQul76qL0M1a0K3btCtG5FAZFoarFtH+9WrOW/FCsbv2IE7JkZ+\nTkvjbeDfSqmddseshSad/LVTEhEXcBkeTz/c7l643W4uvNDBhRe6adMGPB6X3TGGs+ho6NwZOncm\nAojIzITly+n07be0XraMadHRsjs7m/dyc1kArFJKKbtj1kKDTv7an1i1+6vw+W7C5epB/fp5XH55\nFF26GDRsqMs4Iczrha5doWtXvIEArFtHwpIl/N833zA+I4Mcr1cW+P28D3yj+x2EN9EXAhqAiEQC\n1xMVdTvZ2RfStGk2l18ew4UXmrWGSswxclhwRLetRt++dkdSdpSCHTvgu+8ILlpE+o4duFwuPs3I\nYAawONRaEInINqCdUuqw3bFUVvrKP8yJyLm43aOIjBxCQgJcf300nTtDdHSk3bFppUcE4uIgLg5j\n4EBiDh+GRYtI/vBDLj98mGyXS17KzeV1pdRWu2O16KvSMqYHdgtDIuIVkSESHb2GqKiVJCffzmuv\nRTNjRjQ9epiFZK1Sq14d+vRB3n6b6GefpWbPntzl8fBrdLSsFJEhIhJV/F5Kh4gsEJHlIrJWRIbn\nv1zMckQkTUSmisg6EflCRC4QkcUiskVErrXWiRSR10XkFxFZKSKXltfnCnW67BNGRKQtHs9oAoH+\ntGgR4IYbzKt8h8Pu0GwVDmWfksjJgR9+gI8+Iv3XX3E4nXyUmcnzwNKyvFEsIlWVUket3t/Lga7A\nSqyyTxHLL1FKHRGRIHCVUuoLEZkPeIGeQEvgDaXU+SIyAWiulBo
 uIk2BL4AmejA+Xfap9ESkCiID\n8HonULVqLMnJLnr2dFKrlt2haSHG5Tp2szjq0CH44gv6fvQR16alcVhEHgHeLaObxONFJNl6Xh9z\nfKfilv8EZCulvrBeXwtkKaWCIrIWs2c5wEXAcwBKqY0i8juQBKwrg89RoejkX0mJSGM8nkdwuW6k\nXbsAvXv7aNfOHM1S04pRowYMGIDRvz9RK1cS9cYbPLd5M09FRMjUvDxeUEqllMb7iEhXoBvQUSmV\nLSKLMQfSU8UsByjYszkIZAMopZSInCy36aZqFp38KxkRScDrnYTb3ZsbbnDwl79EUK2a3WFpFZQI\ntG8P7dsTtXkzvP02Dy5bxoNut7ySnc00pdSus3yLKsARK7E3Azrlv3UxywuuU2To1s8lwCDgGxFJ\nAhoAG88y5kpBXwZWEiLSRHy+Objd67jhhhuZO9fN8OE68WulpkkTmDgR7xtv4O3Zk5GRkWz2+WSu\niLQ6i91+BkSIyK/AP4DvrdfVSZb/UGDbU92HyF/2POAQkV+A94Aheiwkk77hW8GJSFO83sdQ6hr6\n9o2gTx8nUeXWUKNS0Dd8z0xaGnz4IYE5c8gBlmdkMEEptdLuuLSS0Vf+FZSINBOfbz4ez2r69k1m\n7lwPt9yiE79WbqKj4eabccyfj+e227g4Opr/RkXJQqu8ooU4nfwrGBFpLj7fR3g8P9O/fy/ef9/N\nkCE66Wu2cbng+uuROXPw9u/PVR4Pq71eeUNE6tkdm3ZyOvlXECJSVbzeV/F6VzBw4DXMm+fh5psd\n+Hx2h6ZpgDkE9U034Zw9G8+119I/MpItLpc8KiJeu2PT/kwn/xAnpoFERm7j0ksH8d57HgYNcuDV\n/5+00BQTA6NG4Zo1C0/HjvzN7WanYcjNIqLzTQjRTT1DmIgk4fW+QfXqrbj3Xl/B+f80LdTVqQOT\nJuFdtw7v00/z/B9/cI+IDFJKrbY7Nk1f+Y
 ckEXGL2/04bvdqhgy5gFmzdOLXKqyWLeHVV4kaPZpz\nPR6+d7tlsjWKrGYjnfxDjIj0wOP5jbZtx/Pmmx769nWE+9g7WsVnGNCzJ/LWW3jOO4+xHg8bRaSj\n3XGFM538Q4SI1BOf7yOqV1/AQw/V4x//8Orxd7TKpkYNmDwZ7113Eefzsdjjken6hrA9dPK3mYiI\nOJ23Exm5ieuvv5p33vHSqVPxG2paBSVizkP8zjt4OnRgmNvNFj3UcvnTyd9GIlIVr3chdes+xYsv\n+hgxIgK3u/gNNa0SqFIFJk7E8+CD1I2J4ROvV2aKiJ5Mopzo5G8TEemI272B7t0v57XXfDRqZHdI\nmmaLLl3MbwFdutDf42GtiJxrd0zhQCf/ciYihrhc9+L1Lub++2szYUIkLpfdYWmaraKi4IEHcI8e\nTYPISJYbhtxod0yVnU7+5cgq83xFo0b38/rrHi66yO6QNC2kXHMNxrPP4qtalVkej/xLRCLsjqmy\n0sm/nIhIK9zuX7niii48/7yP2rXtDknTQlLTpjBrFt5zz2Wo18sPIlLX7pgqI538y4EYRj/c7mX8\n9a91GT8+EqfuWK1ppxITA9Om4e3Th9aRkfwqIhfbHVNlo5N/GRIRQzyeZ6lW7XWmT/fSo4eeQk7T\nSsgwYOhQIh59lGpeL5+7XPJXu2OqTHTyLyMi4sTjmUujRsOYOdNLYqLdIWlahdShA7z2Gp4aNXjM\n45GnRERfRJUCnfzLgIhE4vF8TNOmV/PPf/qIibE7JE2r0OrUgRdfxFu3Lrd7PMwSET3myVnSyb+U\niYgXr/cr2rS5hClTvLrTlqaVjipV4F//wte4MX28Xj4UEd1G+izo5F+KRCQGr/e/dOrUnkmTPLr9\nvqaVLq8Xnn4ab6tWdPd6+VpE9GxGZ0gn/1IiIjXweH7gsstacv/9bj0Sp6aVDZcLHn8cT5cutPd6\n+V5EqtsdU0Wkk38pE
 JE6eDw/cd11ifztb5EY+rBqWllyOOC++3BffTXNPB6W674Ap09nqbMkInG4\n3Svp168BI0e60A0RNK1ciMDo0bj69qWBx8NSEalqd0wViU7+Z0FEGuJ2L+fWW2szZEiETvyaVr5E\nYMgQInr0INbr5QsR0S0sSkgn/zMkIlF4PF8xeHA1brxRF/g1zSYiMG4ckeefT0uvl/f1RPElow/S\nGRARA4/nfS68sAH9++uxGrRSd+AATJgAt9wCt94KH3xgvv7ttzB0KHTvDps2nXz7efPM7W691Xye\n7+WXYdgwmDz5+Gtffnl8/xWVYcBDD+GJi6Ob280M3RGseDr5n4nIyH/QoMHF3H23W5d6tLLgcMCo\nUTBrFsyYAR99BDt2QHw8TJoE55138m23bYNPP4UXX4RXXoFly2DPHsjIgM2b4bXXwOk018vJgc8/\nh+TkcvtoZcblgqlT8VavzmCXi3vtjifU6eR/msQwBuD1jmXyZJ9ux6+VlerVOTYiiMcDDRua3wYa\nNoT69UGpk2+7Ywece66ZDB0O80SxZIl5dRwImOtkZZkngDlzoHdvKk3L5KgoeOYZvF4v9zscMtju\neEKZTv6nQUQ6EBn5Kk8+6aVaNbvD0cLEvn2wZQs0b16y9ePj4ZdfIC3NTPI//gj795snkQ4d4Lbb\noGZN8Plgwwa48MKyjb+81apldgRzu3lRzw18crpeXUIiEktk5Kc88ICXhAS7w9HChN8PDz8MY8aY\nybskGjaEAQPgrrvMbRITOdb1pH9/8wEwbZp5/+A//4EVKyAhAW66qWw+R3mLj4dHHsHz4IN8ICJN\nlVIH7Y4p1Ogr/xIQES8ez1fcdFNMpbtM0kJWIGAm/iuu4LQnfbv6anjpJXjmGbMU0qDBics3bzZ/\n1q9v3kR++GHYvdt8VBYXXAC9ehHl9TJH3wD+M538iyEigtc7m44d4xg0SH9T0srNlCkQFwd9+hS9\n
 /FR1/6NHzZ9//AFLl5qtgwqaOdNsCZSXd3w/hgHZ2Wcfdyi57TZctWvT0enkTrtjCTU6mRVH5GZq\n1OjGvfd6dMserbysXQtff22WL267zWzLPny42TrnuecgJQXuu88s6UyZAocOmWWcJ54wt3/4YUhN\nNW/qjh9v1vfzLV1qTpVY3RoRJyHBbP6ZkACNG5f/Zy1LEREwaRK+4cP5h4h8q5RaZXdMoULUqS4f\nwpyI1CIy8jeefTaapk3tDkcrI46Rw4Ijum01+va1OxKtrHz1Feqpp9idlcW5Sql0u+MJBbrscype\n7/Ncc41LJ35Nq9guvxy56CJqeDy8bHcsoUIn/5MQkStwuXoyfHik3bFomnb2JkzAExVFLxG5we5Y\nQoFO/kUQES9u95v8/e/eErev0zQtpHk8cN99+Kz2/2H/H1sn/6K43Y9xwQUxdOpkdySappWiNm2g\nTRu8ERHcbXcsdtPJvxAROQ+RkYwf77U7Fk3TSt/YsfgMg3tEJNbuWOykk38BIuLA632X0aPdx9rB\naZpWqdSrB8nJOLxenrE7Fjvp5F+Q0zmahg3j6NlTN+jXtEps8GBchsE1ItLR7ljsopO/RUQ8OByP\n8re/+XRnLk2r3LxeGD0at9fLq+E6+UtYfugiGcZwWrZ0HhtHV9O0Sq1HD+Scc2gE9LM7Fjvo5A+I\niAuX62FuvdVX/NqaplUGhgG3306Uz8fEcBz4TSd/AJGbSEyMLPGA6ZqmVQodOoDHQz0g7IbrDfvk\nLyIGbvdEbr01yu5YNE0rX4YBAwbg9fnCb9rHsE/+QHeqVatKmzZ2x6Fpmg2uugrJy6ObiDS0O5by\npJN/VNQ9DBigW/hoWpjyeuHqqzFcrvAa8z+sk7+INCIvrwvdu+vMr2lhrE8fXMAIEQmbnv1hnfyJ\njBxHz56GHrxN08JbbCy0bAkiDLI7lvIStslfRATDuJlrrnHZHYumafa78Uaif
 L7wKf2EbfIHmhIR\n4SU+3u44NE0LAe3aQW4uiSJS1+5YykM4J/+r6NxZ9I1eTdPAnO+3Y0fygOvtjqU8hG/yj47uS5cu\nutivaWFOKTh8GNavh6pV8UVFMc7umMqD0+4A7CAiXpzOdrRta3comqaVA78f9u49/ti5k8D27bB3\nL8bhw4hhgNcbEaxSpWowJ+dwExHxKqUy7Y67LIVl8ge6Eh+fRVSUvtmraZVAXh7s328m9n37YNcu\n1PbtBHbvxjhwACMnB7xeh4qK8gVr1qxHfHyS4+qrm9O2bVu6dOlCbGwsmJUQo23btqmrVq26BPjM\n3k9VtsIz+bvdvbjkEj2cg6ZVEErB0aPHr9z37EFt305w1y744w+M1FTE7Ra8XnegWrWaqn79BEeb\nNuc6hww5j06dOtGqVSsMwxDAUdx7JScnR23cuLEnOvlXQobRi44dw/d+h6aFIL/fvGrfs+d4aWbH\nDrM0c+jQ8dJMTEyVYN26jYyEhCTH5Ze34oILLqBjx45ERUVBCZJ7cXr06GE8/fTT10Hlrv2HXfIX\nkcb4fNVISLA7FE0LK4HA8dLM3r2wezfq998J7Nljlmays/NLM16rNNPU0aNHM9q1a0eXLl2oX78+\nWKWZsoyzffv2ZGZm1heRKKVUelm+l53CLvkDl9CmTQBDX/hrWmkqXJrZu9cszezcebw0Exkp+HyR\nVmkm0XHeec2cN9/cms6dO9OyZUucTmeJSjNlyel0Ehsbm/n7778nAqvtjKUshV/ydziakJgYNuN3\naFppyi/NWHV3du0ySzN79vy5NFOnTpyRmNjU0a1by2OlmejoaLA5uZdEs2bN5Pfff09CJ/9KxOtt\nSb16+rJf04pQVGmmYKsZszRjKJ/PF6xZsy6NGiU5rrjCbDXTuXNnGjZsCOVQmilrrVu39n7xxRfN\n7I6jLIVf8ocm1A2L3tua9idKQUqKedVu3Vw91mpm374T
 SzNVq5qtZlq1aua86abz6NixI61btw6J\n0kxZO/fccx1VqlSp1JN8hF/yz8mpT716dkehaWWmYGmmQKsZtXcvjoMHj5dmoqNjVJ06cZKY2NRx\n6aUt6NChAx07diQmJgYqeXIvTlJSEiJSqed1DavkLyJROJ0eqle3OxRNO2OBABw4cLzuXuDqXfJL\nMx6PoaKifMEaNeoSH5/kuPzyczn//PPp0qULcXFxUMHLMmUtKSmJjIyMhiIiSilldzxlIaySPxBP\n9eqZiMTYHYimnUx+aabgcATbtxPIbzWTknKsNBOsWrVmMDa2saNFi2aOgQPPo0OHDrRp0yYsSjNl\nqUaNGjgcDgOoBey3O56yEG7JP47atSvlWVyrWLKyjg9FYJVmgjt2ENyzB8ehQ4gIeL3OYHR0FVWn\nTpwkJCQ5unZtSfv27encuXN+aabC31gNVSJCw4YNszZs2JBACCR/EUlTSkWX5j7DLflHERWl/7No\nZa5gaaZwq5n9+zGyssxWM1FR3mCNGmarmW7dzjXySzONGjUCmxN7SkoKw4cPZ926dRiGweuvv07H\njh1PWGfcuHF8+umn+Hw+Zs2aRZs2bTh48CC9e/cmJSWFxx57jF69egGQnJzMiy++SJ06dez4OKfN\nOsH6yvt9RcShlAoUernUL1rDLfl78Xp18tfOmlKQmnq87r5vn1ma2bHjxNKM1xsZrFq1RrB+/QRH\n8+ZNnQMGmK1mKkJp5s4776Rnz568//775OXlkZl54iCXn376Kb/99hubN2/mxx9/ZOTIkSxbtoz3\n3nuPO+64gxtuuIGrr76aXr16sXDhQtq2bVthEj+Ax5ze1X2m24vIg8AgzG8Ou4AVwNfAi4AH+A24\nVSmVIiKLMfsUXAi8JyILgHcxTz7/LrTfJ4GrgCDwuFJqroh0BR4BDgItgRVKqZtPFV/4JX+PJ2T/\ns2mhJSvrxFYzu3YR3L4dtWcPcui
 QeVXu9TqDMTExqnbthpKQ0NRx8cXHSzNVqlSBClqaSU1NZcmS\nJcyaNQswe71aV8LHfPTRRwwePBiAjh07kpKSwh9//EFERASZmZn4/X6cTieBQIBnn32Wjz/+uLw/\nxlnxeDzCGSZ/EWkP9AZaAZHAz5jJ/01gtFJqqYhMBB4GJlibRSilOljbfwTMUEq9IyKjCuz3L0Br\npVQrETkHWC4i31qL2wDNgX3AdyLSRSn1/cliDL/k7/WG22fWipMXYN06SE09sdWM33+8NFO9eh0a\nNUpyXHbZ8VYz8eYUoBUusZfEtm3bqFmzJkOHDmXNmjW0b9+eZ599Nv9qGIDdu3fToEGDY7/Hxsay\ne/duBg50fDEJAAAgAElEQVQcyMCBA3n55ZeZMmUKzz//PIMHD8btPuOLaFucTfLHvIL/SCmVC+SK\nyL+BKKCKUmqptc4bwNwC28wptP0N1vO3gMkFXn8PQCm1X0S+AS4A0oCflFJ7AURkNdAI0MnfEoE5\nrKumHRMICitXGixbJpKbG3AA1K1TR1111YWBFi1aOOLj4x2NGjUiLi6O+vXrExERYXfIZS4vL4+f\nf/6ZGTNm0L59e8aPH8/kyZOZOHFisdvGxMQcu8o/evQokydPZsGCBYwYMYKjR48yYcIEOnXqVNYf\n4axZLTyDpbS7kuSdjIJvz/E6/6m2Lbgsu8DzAMXk93BL/plkZQUI4TqrZoP7HzAYPpy/Q/BuMJYD\nK/ftk/UffOBcNH++2u/z5aU6HEZ6Xp7hz8qiatWq1I+NDSYkJgabNWvmaNy4scTFxdGoUSMaNGhA\nZGSk3Z/orNWvX58GDRrQvn17APr06cOUKVNOWCc2NpadO3ce+33Xrl35k6IcM2nSJO6//37effdd\nLr74Yvr06UPv3r357LPQHyo/NzdXAXlnuPl3wIsiMhmIAK4FXgKOiMiFSqnvgJuBb0+x/QDgHcz7\nBvmWACNE5E
 2gBnAxcBdw7ukGGG7JPwO/Pw/QM3hpxyUkkFflnMBTKfsdVwHdrQcASgnp6cf+n2QC\nKw8dYuWhQ8a6X34xvhdRH3i9ealOp6QHAkam3y/R0dHUj40NNm7cONjs3HMdjRs3lvxvDnFxcSeU\nTkJV7dq1adCgAZs2bSIpKYmvv/6a5s1P7PDaq1cvZsyYQb9+/Vi2bBlVq1aldu3ax5Zv3ryZ3bt3\nc8kll7B69Wo8Hg9KKbKyssr745yRvLw8OMPkr5RaYZV61gB/AL8AKcAQ4CUR8QBbgaH5mxTaxXjg\nXRH5P+CjAvtdICKdrP0Ggbut8k/h5F9s6yCppJ3XiiQiN3Hxxc/z6KOl2l62VPXvDz4fGAY4nfDC\nC8eXzZ0LL74IH34IhW6+kZMDd95pzmcXCEDXrjBkiLns5Zfhxx+hSRO45x7ztS+/NJur/OUv5fO5\nQt38+TB9OueA2gRS5Qx3kwOsApYDvwKbQO3zeoNHIyLICAaN9MxM8fl81KtbN9i4ceNg02bNjMTE\nRCP/m0NcXFz+pCS2W7NmDcOHDyc3N5fGjRszc+ZMZs+ejYgwYsQIAMaMGcNnn32Gz+dj5syZtC0w\nL3b//v15/PHHSUhI4MCBAyQnJ5OamsqkSZNITk6262OVWPfu3VMWLVo0RCn1UfFr/5mI+JRSGVai\n/y9wm1IqZEYJDbfk35t27WYxbVro9vAdOBBeegmiC52fDhyAJ5+EnTvN5YWTP5jNU9xuM/mPHWs+\nGjaERx4xt502zUz2sbFw330wZQo4dAUMgGAQzxXXK08wyMVkBheAoyxuDuUB64CfgLXAZmC32513\nNDJS0oNBI93vl8jISOrVrRtsFB+vmjVrJomJiUb+iaFRo0b5rYi0MtaiRYuU9evXX2OVaE6biLyD\n2fomEpillJpaqgGepXAr+xziyJHQPtspBcEi7jHNmAEjR8L995982/zWFLm55glAxPwGEbD
 6i2Rl\nmd8m5syB3r114i/IMPBf1Jak/6aoRaw13iCobinZTbrT4sRsj3fCcJFZWU6sUkgQ+F9eHj9t2WKs\n3bKFjV9+ybeRkYEjkZGkg5Hu94vT6aRunTrBRo0aBZOaNpWkpCRH/omhUaNGVKtWzewirJ2VHTt2\nRGK2xT8jSqlBxa9ln3BL/ts5cCC0m2qIwN13m0n72mvNx3ffQa1a0LjxqbcNBuH2281eR8nJ0Mwa\njrxDB7jtNmjXziwpbdgAN5+y/0d4GjVK1v93sIzhTsbwTy4CEss5BANoYT2Oyc52kG025AgCW3Nz\n+XHbNmPNtm3GpsWLWeZyBY643SoNjIzsbAOgTu3aKi4uLpjUtClJSUmO/BNDXFwctWrV0ieHYqSm\nppKVleXArNdXSuFW9nFiGFl89pmDUG2ud+gQ1Khhzod3991m6ebFF82SjdcLAwaYv5/qq39GBjz4\nIIwbB+YwAcdNm2aeGDZuhBUrICEBbrqpTD9SReIaODTQf29X+Z3f5CBL1WowQvRfykltB37EvCO4\nAdgeERE85PEE00WM9OxsIxAIcM4556i4hg2DTZKSaNas2QnfHGrXro0R5tOcrlmzhq5du+48evRo\nQ7tjKSthdeWvlMoTr/coBw7UCNkx/WvUMH9WrQoXXQRr1pjdTIcPN0tCBw6YV/cvvADVqhW9D58P\n2rSBn346Mflv3mz+rF/fvAk8dapZ99+927wPoJEz/GbHgknP8gHzuIne6j4ygk9WsI5ccdajb/4L\nubkGubnHPsM+4Mfdu2XV7t2ODT/8wAKnM3jQ4wmmGYaRnpNj5ObmUqtmTdWgQYNgkyZNaNqsmREf\nH3+sOWu9evVwVPKS4datW3E6nVvtjqMsFZv8y2I0uZO8T1cgRyn1Q5m+UUTELvbtC83kn5VlJniP\nx5yRY/lys8XO/PnH1xkwwEzchW8Ip6SYNfyoKMjOhpUrzXULmjkT7r
 rLbBGU/43PMMgvKWhAt27k\nTX4u+GPuj8ZkphtjuJVrgEvtjqsU1QGutx4A5OUZpKUdOzkcBH7at09W7dvnWL98OZ86HOqAx5OX\n6nAYGbm5RlZ2NjWqV1cNGjQIJiQmqmbNmjni4+OlMnWE27p1K36//1e74yhLJbnyL6+60KVAOlDi\n5H+S0e9OLTd3Fdu2nUeBJmkh48gRs1wjYt6kvfxyuOCCE9cROZ64Dx0yyzhPPGE+nzzZrPsrBZdd\nBgV7US5dCk2bcmwim4QEGDbM/FncvYQw4+9xkTHnP3MC05nu6M+t9OF1NgHhMgVQTaCn9QAgEDih\nr0MqsPzAAVl54IBj/c8/s8gw1H6vt1J1hNu4cWNWZmbmBrvjKEvF1vxFJFUpFWM9P63R5ESkLfA0\n5sh0B4FblFJ/iMg44HYgF1gP3Assw2wJdwAYC1QDHsDsHXcIGKSUOiAiDwMJQGNg++neUReR2+ne\n/WkeeMB7OttpYSQ9Hdd1f+F1XieWWO7g1kA82/hPGTX/rGwyMUcw+xmzWetvImqf1xtIcTolIxAw\nMipAR7iLL744ZenSpYOUUv+xNZAyVOLkb40mN0IpdWX+aHJAB6AZ8CEFRpPD7G78E2bX5V5KqUMi\n0he4Uik1TER2A42UUrkiEqOUSrWSeppS6mnrfasopVKs58OAZkqpu631rgUuVErlnPYHFmlH7dqL\nmT07dDt6abZzDhsZuH5rSxnDGCOddAaRrKYS4PYyaP4ZborqCLfX4wmmuFykWyeHYx3hEhKCTZs2\nLdeOcEopatasmXn48OHzlFJbyuyNbHY6N3xPdzS5FMxvAl+K2a7MAPZY+1qD2XX5Q8wTR1EaiMhc\noC7m1f+2Asv+fSaJ3/ILhw65SE836+OaVoS8O4Y7Prn7IUYwgiiiuIdJMoH76Ip5taOdORfQ0XpY\nBL/fgd8PmF//16amsjw11Vi7caOx/pNP+NLjy
 TvicklGoY5w8fHxx3pJl1ZHuN9++42srKwczqKN\nf0VwNq19ihtNToB1SqkLi9j2GuASoBdwv4i0LGKd6cA0pdR/rNLSwwWWZRSxfokopXIlJmYdv/7a\njkKzEmnaMe3bg8cb+Mb/jaMHPehMZ7rQXfXia9aChHbFumJzAudbj2P8fmf+ySG/I9zyLVuMNVu2\nGJvyO8K53aQrddYd4RYvXozL5fomIyOjUreDL0nyzz9Cpzua3Eagloh0UkotExEnkKSUWg80VEp9\nKyLfA/0wx7lOAwqOWRDD8W8KQ07nQxXL7/+CtWvb0LFj5W6vpp0Vf3IPx+z3Zgd70MMAuJf7ZBDL\nA3eTynN6ZFjbnG5HuI2LF/OjyxU45HardDAysrIMRIrsCBcXF8eCBQv8R48erVgzz5yBErf2Od3R\n5Kx6fh9guohUwfzP8oyIbALeFpEYzBPLs1bNfyEwT0R6Yd7wfcT6/TCwCLOUVDry8pawfPlohg8P\n3TF+NPvdcgt73ltgbGELiSRiYDCVfzlGMphrgR52x6cVycDsmZ1IgbGQc3Ic5ByvFG8HftqxQ1bv\n2OHYsGQJc6yOcGlg+PPy3Jx8qOVKI6x6+OYTES8REQd5910PNWvaHY4Wwow7/xq84pc66h7+fuxK\nfy5zmc0LbADOsTE2rfStBC6DPalKVfpejxWq52JpUUplEhGxgK++Kq1ZerRKKjj6DmMxixwZBW4z\n9aUvsSQF+kMw/C6dKreFEMiD+cWvWfGFZfIHIDPzJf797wzC8JuPdhqSkjCqVAt8wRcn/EN5kmcd\nq4jgudKb5k+zmQJmmn3r5xa7ciUQvskflnL0aBa/VerWXFopyOqf7JjDHFSBzu5u3DzAE8Z9YKy1\nMTat9KwEDpstCZcWt25lELbJXykVJC/vFT79VA9so51a376kGums5cQ03452XMrV6npQfptC00rP\na5CdAy+rMLkRGrbJH4Dc
 3Fl8/nmQvDOdo1kLC4ZBVqc2zGXun8aR+ht3SQ7Vg3ea/Vu0CioHeBtU\nDsy0O5byEtbJXym1GZGtLF9udyhaiFNjRstP/OQ4wpETXjcwmMYMx7uIo9I3DK/EPgGc8D+l1LZi\nV64kwjr5A5CR8S8+/viMewxrYaJuXeScOoH/8J8/3eCtQx2GM45BwF4bQtPO3lRIPwr/tDuO8qST\nv1JzWb7cSVqa3ZFoIS5n6EDHB3wggSIqPMkk05gWwRuLnoFZC2ErgF/MIWpm2x1LeQr75K+UOkxE\nxIfMmZNrdyxaiLvqKrKdAfUTPxW5eApPG+txMU03/6xQJkJGljlEfVjlgLBP/gBkZv4f8+blceiQ\n3ZFoIc7fvYsxp4gbvwAuXExkmvEIGD+Xc1zamdkMfA0qAK/YHUt508kfUErtQOQVXnsty+5YtBA3\nciT/Y71jH/uKXNyKVlxFskoGVd43koYBtYHWBV6bCNQH2lqPz06y7WeYQ1UnAVMKvH4PcB5wS4HX\n3gGeK5WI7fcEZCmYrpRKtzuW8qaTf76srIksWhRgxw67I9FCWdWqBBvFBT7kw5OWdsZxpwi1gneU\nc/PPocDnRbw+AXNWrZ8xp+ErLAiMsbb9FXPSjg2Y0zWuwhzJMcJalgXMAkaXbui22AzMhmBWmN3o\nzaeTv0UpdZhg8HGef163/NFOKe/2Wx0L+djI5eQl4qd43rEAMT4ox7guwpz7tLDieiz9BDQB4jCT\nfH/gI8zkkP8JM61l0zCH3K0M41mPg4yAWes/YHcsdtDJv6Dc3GdYsyaLdevsjkQLZZ06oSJdgSUs\nOekqNanJKO6WocDO8ousSP8C2gDDMafXK2w30KDA7/Wt16KAqzEnVYnFnGDjJ8wZmCq6xcASyMgx\n5xgPSzr5F6CU8pOdfRfTp6frAd+0U/Ff190xm9mnbNVzNVfTjPODN0DQru6/o4CtwGqgDmYJ6HTc\njVn
 6mQo8CDwKvIY5A9M/Si/MchUARkJGBoxTSoXtfT6d/AtT6i127TrA99/bHYkWyoYNYzs7jG2c\nukPoY0w2tuHmcZuaf9bi+FR8t2FOml5YLFDwTtcu67WCVlk/k4D3gTnAFirmJLdvgNpnhh4Wo3ee\njE7+hSilAmRmjmX69Axyw6rZr3Y63G7ymicFP+CDU17Uu3DxGP80poDxYzmEpTixxl+wTdJ8oKjJ\nsi/ATOTbMce4mc2fSzsPAZMw7wHkn8UMzHsBFckfwHjISoVh4TKA28no5F+0T0hLW8Yrr+QUv6oW\nroKjRxpf8ZXDz6nH9GxGM66jH71BlWU/8oFAF2AT0BBzhLL/w2z62QZzXsL8Zi17gWut5w7M+wI9\nMOfF7c+JE3N/hHmCqANUwWz62RqzS2yrMvs0pU8Bt0JmAGYopVbYHY/dwnIax5IQkZq43RuZOLE6\nHTrYHY4Woty9+gXuSBtk9KKXFLfurQwMtGcvcytHY5kK5z1QI2BHOjRVSoX9UO76yv8klFIHycrq\nw6RJfg4ftjscLURl3XitYw5zT5jo5WSeYobjMwzjneJbX2ql7A9gJGSlw4068Zt08j8FpdRicnOf\nY+LETD1cl1akAQM4LEf4H/8rdtVqVONO7pORIGEzbnAIUMAtkJlnlnv0+O0WnfyLk539AFu2bGL2\nbD3ji/ZnTifZF7Tifd4vUWvO7nSnNR2DvSGo/0GVj6cg8B38ngkP2B1LKNHJvxhKqTwyM5N5880s\n1q+3OxwtBKkxo+U7vnekFNmF6s8m8pixB696WI/+Web+CzwMGWnQU5d7TqSTfwkopbaTnT2EBx/M\nJD3sxn/SitOgAUbNWoFP+KREtXwnTv7Bs45nwAiLmcJtshdIBn8m9FVKbbc7nlCjk38JKaXm4/fP\nYepUv+79qxWWPbifYx7zCJbwYj6RRPowmBuAo2UbWljKBa6DDD9MU0oVNd5d2NPJ
 /3T4/aNZsWIv\n8+bpybq1E11zDX5HrlrJyhJvMpShVKVBYDAE9OVE6VHAKMjeBCuy4BG74wlVOvmfBqWUH7+/G6+/\nfpRFi/T/V+04w8DftYPMPclELyczjX85vsVhzNTNP0vNY5A7G3akQS+llL6vchI6+Z8mpdR2srIu\nY+rUDFaW/CpPCwOjR8kv/OI4QMlHCI4hhrt4WMaBbC7D0MLFTFBT4Eg6XKqUSrU7nlCmk/8ZUEqt\nJTv7Gh58MJNNm+wORwsFBw7AY4+R41Tcxm18wJ9H8k8nnYd4iGEMYxSj+J3fAWhNa5zE0ApO2CoZ\nTjJfmFaUz4AxkJYBXZVSe+yOJ9Tp5H+GlFL/JSvrJv72N7+e/UvD4YBRo+ChB8kjjw/5kB2c+O/i\nbd4mkURe4zXu4R6mMx2Ar/ma0YwhBl9wvFX+WYg57WKd8v4cFdRyoA9kZppNOjfYHU9FoJP/WVDB\n4AIyM0cxdqyfXbvsDkezU/XqkJgIF19M0BUR9OGjcPlnO9s5n/MBaEhD9rGPoxzFiZMccniEqcYe\nkC+BZzEHZdOK9xPQDfwZMEAp9Z3d8VQUOvmfJRUIzCIjYxxjx2ayR3/T1MDf9QLjN7bSnOYnvJ5A\nAvmzf/2P/7Gf/RzgAN3pzlKWMp3pXEVPkoEbAHf5h17hLAO6gz8d+iml/m13PBWJTv6lQOXlvUp6\n+t2MGZPJPl2lDWt+P2zbBqg/XfkPZCBppDGCEXzIhySSiIGBDx9P8AQv8AJ3cAeCR82HwG1AX8wE\np/3Z98AVkJkOfZRSC+2Op6LRyb+UqNzc50lPv59RozL5/Xe7w9HsEAjAww/DlVeikpKC85l/QrNP\nL17+zt95mZe5l3s5ylHqUe+EXbzJmzzAQ/I9hpEL6g10Q/WiLAWuNBP/DUqpT+yOpyLSyb8UqZyc\nZ0hJGc2oUX5WhP1cEeFnyhSIi4M+fQiMGWl8zueOLI5PEZt
 OOnmYw7l9zMecx3l48BxbvotdHOQg\nnehEd3rKeyDrgbCdZPYkPuZY4k/WvXfPnJ7MpQyIyCVERi7kjjuiuP56fYINB2vXwvjxEB8PIiCC\na8cfwUuzOxktacl1XMd61jOZyQhCIxpxN3cTRdSxXTzKowxjGLHEcpSj3MIt+EnhbeBG+z5ZSHkZ\nAn+F9Ey4UilVHjNjVlo6+ZcREUnE41nEVVedw+jRkTj05E1hZ+ZMGr75TfAN3jijC4AgQW7ihsAN\npPCvMJ/9KwjcDznT4XAGXKKU0n3izpK+Ki0jSqkt+P3n8fnnq/j73zPJrGhTXWtnbdAg9ssBYyMb\nz2hzA4MnmeGYhTg+K+XQKhI/0Bv8M2B9BrTWib906ORfhpRSR8jMvIT16+dx++0Z7N9vd0haeXK5\nyD6/RbCkE70UJZZYbmEUAzCnIgw324ELIGMxfJ4GnZVSJR87oxyJyJ0iUqFa5+rkX8aUUrn4/bew\nf/+jDB+eyQbd+TCcqDGjjCUscaSRdsb76EMfGtA00A+C4VSk/QxoBf4t8Gia2aonlO99jwe8dgdx\nOnTyLwdKKaWys6eSljaQ8eMz9YigYSQ+HqNajcDnfH5Wf/OpPONYQwTPhMHsXwHgQcj9CxxJg6uy\nlJqqzvDmpIgMFpE1IrJKRN4QkTgR+VpEVovIlyJS31pvpog8LyI/iMgWEekqIq+JyHoReb3A/q4Q\nke9FZIWIzBERn4iMBeoBi0Xk61I5COVA3/AtZyJyPm73x3TqVI0JEzxER9sdklbW5s+n1vTZag5z\nRJAz3s1KVvIQd/ED0Lr0ogspB4G/QOYqWJ8G1ymlzrjXpIg0B+ZjlouOiEg14A1grlLqbREZijns\nc28RmQlEKqUGikgv4C1ru/UisgK4Fdht7e8qpZRfRP4PcCmlHhORbUBbpdSRszoA5Uhf+ZczpdQq\nsrKS+PHHd7jppkyWL7c7JK2sJSeTbv
 hZzeqz2k072tGNa1QvUP5SCi2UfAGcC5kr4GWrvn+23eW7\nAe/nJ2TrZ2fgPWv5W8CFBdbP7yW8FtinlMqftPtXoBHQCWgOfCciq4DBQMMC25/5md0GOvnbQCmV\noTIzbyM19Xoeeugg06Zl4a+M/501wJzo5aK2nO5EL0X5KxMkQPXgWLM6UimkAkMh6wY4eBCSM5T6\nq1Iqr4ze7lSljvwJ3oMFnuf/7sRM7l8opdoqpc5XSrVUSo0oozjLnE7+NlJKfUVWVhMWL/43N9+c\nydq1doeklZVRo2QlPzsOceisdmNgMI3nHbMRozKMYvY10AQy58G8DEhUSn1ZirtfBNwoItUBrJ/f\nAwOs5TeBNdLenxV1Fb8MuFBEEqz9eUWkibUsFYgprcDLg07+NlNKHVUZGf04dGgQd9+dwgsv5JCT\nY3dYWmmrXRupWy+wkIVnfcO2NrUZwXi5Gaio48imA7dBdi84tB/6pCl1s1IqpTTfwyrbPA58a5Vp\npgFjgaEishoYBNyZv3rhzQs/V0odBG4B3hORNZgnkqbWOq8An+kbvtoZEZFz8HrfpEqVi5g40UeT\nJsVvpFUcixYRPelZFjAfRyl02J3AuICbtbIUjIp0FfctMMAcm2dhGoxUSh21O6ZwVJH+zVR6Sqn9\nZGZezb59dzB2bDqvvpqn7wVUIt26kRchwR/4oVR2N5lpjg24mFpBmn+mAqMhuycc2Qv9UpXqrxO/\nfXTyDzFKKaWCwbfIzj6XBQsW0revn48/VgQqzf29sObvcZExhzml8sd04WIi04xJYKwsjR2WkWzg\nGQg2AP/bsCDTrO1/bHdc4U6XfUKciLTH53uB6OhzGTfOR6dO5qiRWsWUno7rur/wOq8TS2yp7PI5\nnlM/sYANIFHFr15ugsBsYAJkZMGKFBirlNKtGkKEvvIPcUqpFWRkdGDfvgFMmrSTMWMy2LTJ7rC0\nMxUVRbBxfOBDP
 iy1Us04xomTc4IjQ6j555dAc8i4A9b/AdceVepSnfhDi77yr0BExIlh3EZExBN0\n7uxi5EgPtWvbHZZ2ulauxHPXg3zIh7hwlcouD3KQofRVr6Hoa2Nno5+BOyFjNaSkmy1pPjjToRm0\nsqWv/CsQpVSeCgReIDu7Ad9//yxDhvh58cUc0tPtDk07He3agccb+JZvS22XNanJaP5PhoHsKLW9\nltw2oA/4L4aUZfB/6dBIKTVPJ/7QpZN/BaSUSlPZ2feSnd2EhQs/oF8/P3PmBPWcARWHP7mH4z3e\nK9VWOldxFc1pF7wBguVV/zkAjIHsFpD5H5iWCfVzlXpeKZVbTiFoZ0iXfSoBEWmNz/c4gcDlJCc7\nuPHGCKpXtzss7VRycoi88nr+xXQSSSy13eaSywB6BceQpR4pw9m/fgdmQO4LkCfwTjo8oJQKxykH\nKiyd/CsREWmMx3MvgcAgLrsMBg700LBh8RtqtjDu/Gvwil/qqHv4e6km6Q1sYAJ3sAhzJLLSojCH\nY5gGGd+COGBWBjyllNpaim+jlROd/CshEalJRMSdiNxJy5ZC//5RtG+vm4iGmk2bcN0+lvnMx4ev\nVHf9Ei/xDbPVRpCzHXAmFXgD1DTIOAoH02CygneUUvpmUwWmk38lJiJeRAbi8dyLz3cO/fv7uPJK\nwVe6iUY7c+7k/oERKf2M3vQu9TPzMAYF2rKH98+w/LMBeAay3wIVAYtTYArwX30Tt3LQyT8MiIgA\nF+Hz3UNeXjd69BCSkyNp3Nju0LTZs6nz0kfqXd49q4leinKUowzmL2oGQW4uYfPPAPAxMBXSVoFS\n8HwWzFBK7SrV4DTb6eQfZkSkPi7XGAxjOFWruujZ00u3bg5iS6e3qXaagkE8V/RSU4JPSCtalfru\nF7GIp5nEL8CpTvUHgFch8E/IzoVtR+EJYJ5SKvsUm2kVmE7+YUpEDKALHs8QgsF+1Kmj6Nkzms
 v+\nv727j63qruM4/v7e9t72thcEeWhXJxQoK51s0I4ZQBJgBAIsY3H+gc656dQsaqKJM9E5Ypxb4syW\nsERjsv0zlyySTYw64gQSkESGYwwmskEWIgUEW2mVhz7c9j6cr3+c03E3B+OhpaXn80p+yX0893fv\nH597zu9xqTFp0nBXL1bs0XW+cBfBEzwxJKNz1vFIcJbX2QeJZMnj/wF+D/wKuvZAqgL+cA6ecvc3\nh6IeMrIo/CWcOQxLqap6kEJhDfX1BVavHsvixTBu3HBXb/RrayN57wO8xEuMZ/ygH75AgXu5O3iQ\nXr4PiYHA3w2pNGw/A88Dr7p7z6B/uIxYCn95HzOrAFZSXf1VcrnlNDXlWbVqDIsWQWYkLRs2uqTW\n3l/80qkVdh/3DfrEyw462MhGXuFlHPrTsCMK/D9qxE58KfzlgsysGriLTObr9PcvoqGhj4ULM7S0\nJGhshLIhm0MUP5s3M+5nz/pGNtrVbvTiOK20spOdxW1s62mjrTxFaksPPZsI2/G7BqfScj1T+Msl\nMbOxwGIqKlZSXr6afL6O2bP7WLBgDC0tRn39dbaf1MiTXn538KPCI4n5VzA1q5129rGP3ezu2cve\nRPixzT0AAAWASURBVEDQ5fhv++j7DbBTyy3IByn85YqY2WTCfoI7gRXAx2huLjB/fobmZqir06Sy\ny/Xkk8zd8u/ietZf9NTfcdpo4wAH2Me+7B72FHvp9STJHd10vwJs16xb+SgKfxkUZjYVuINMZg35\n/BLS6STz5iWYOzfNjBlQXw+VlcNdzZHtzBlSn13LC7xALbXvPZwjRyutHOQge9nbvZ/9iTz5XIrU\nri66/gTsAN7R5Cu5HAp/GXTRpLJZwDIymSVAM9nsJxk/vo+ZM2HWrAwNDcb06VBToyuEEuUPfK24\n9Ph0a6QxcZCDvYc4VDjFqao06RMBwV976d0K/AU4orCXq6Hwl2vCzJJAI
 3AryeRtpNMLyOWaCIIq\npkzJ0tRUyU03hbOOp02DdHq4qzy0slk4ehRaW+HIkTzvvtvLsWNJenvLq4J0p3txa5bsLuAt4G13\n7xvmGssoo/CXYWVmk4BbgDlUV8/HrIVsdirpdJ6JE/PU1SW48cY0tbXl1NSEVwoTJ8KYMSOzg9kd\nenqgoyMsnZ3Q0eG0t/fR1pbj1Cnj9OkU+XwZ6fRxYD/d3W8A7wBvA8fdfVDX+Rf5MAp/GXGiSWc3\nAFOBKcAUqqoaKS+fSbE4hXx+AoVCJdXVfYwbl2fCBJg8OcnkyWkyGSOVglQKKirOl4vdT0VbKebz\n0N8PfX2Qy/3/7Q8r3d0B7e1Z2tsLdHQkOHu2EveAiopOysr+RRAcI5s9TLF4HDgJnIhK57VutjGz\n7wDPjoSrCDNbDHzP3e8a7rrElcJfrkvRZLQaoPa9YlZHKvVxysoyJBIZEolqoCoqlbinca8kCCoI\nggqKxRTFYpIgKAcgkShSVpajrCxHItFPItGPWRazLJAFenHvxr2HYrGbQqGbfP405wP9JHDC3c9d\n+1/ko5lZK3Cbu/93BNRlMfCwu68Z7rrEVflwV0DkSkQLjh2PylWJ1jkyLxav1e6HQ87MqoCXgU8Q\nLum8EagD/mxmne6+zMx+CcwD0oSTvx6L3tsKbABWAXngIcKF3mYQrv3zXBTePwG6gAbC4aXfjN6/\nHHgMSAH/AL7i7r1mthJYD/QAr32grj8HPgUkgR+7+6Yh+3EE0B6+Irh74O6jJvgjK4GT7t7s7rcC\nzxBemSxx92XRa37o7p8G5gBLzGx2yfuPunszsJNwKYh7gAWEgT/gduBbQBPQYGb3mNkEYB2wzN3n\nAXuB70ZXas8Bd0aP15Yc51Fgm7vPB+4AnjazUd7jP/wU/iKj0wFguZn91MwWRU1RxvvX9f+8me0l\nHFF0c1QGbCo5zm5373X3TqAvmu0N8Ia7H4v6LjYA
 iwh3jrwZeM3M3gLuJ+y7mUU4PHVg8tmLJZ+1\nAvhB9PodhFcM2n90iKnZR2QUcvfDZtYCrAYeN7PthNvwAmBm9cDDhH0A58zseaB0Ft7AOv5Bye2B\n+xfKDSf8c9nq7l8sfcLM5nDhDWUM+Jy7H76EryaDRGf+IqOQmd0AZN3918DTQAth+/zAWftYoBvo\nMrMawvb9Szp0ye3bzWxq1GeylrCJ6HXgM2Y2I6pHlZnNJNwVcqqZTYve+4WS42wBvl1S97mX/k3l\nSunMX2R0ugV4yswCIAd8g7DNfrOZnYw6fP8GHAL+SRjcAy42BLD0uTeBX3C+w/d3AGb2ZWBD1M7v\nwLroSuQh4FUz6yGcpTywRvjjwDNm9nfCP5dWQKOAhpiGeorIZdNQzeufmn1ERGJIZ/4iIjGkM38R\nkRhS+IuIxJDCX0QkhhT+IiIxpPAXEYkhhb+ISAwp/EVEYkjhLyISQwp/EZEYUviLiMSQwl9EJIYU\n/iIiMaTwFxGJIYW/iEgMKfxFRGJI4S8iEkMKfxGRGFL4i4jEkMJfRCSGFP4iIjH0P6TMyHgAADaY\nAAAAAElFTkSuQmCC\n",
+      "text/plain": [
+       "<matplotlib.figure.Figure at 0x946fba8>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "slices= [ls5_cn,stampede_cn,comet_cn,gordon_cn,alamo_cn]\n",
+    "cols = ['c','m','r','w','y']\n",
+    "Hosts= [\"lonestar\",\"stampede\",\"comet\",\"gordon\" , \"alamo\"]\n",
+    "plt.pie(slices,\n",
+    "        labels= Hosts,\n",
+    "        colors=cols,\n",
+    "        startangle=90,\n",
+    "        shadow= False,\n",
+    "        autopct='%1.1f%%')\n",
+    "\n",
+    "plt.title('Percentage Use by Resources')\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "##Percentage failed by resources"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "ls5_fn = sum([1 for x, row in df.iterrows() if row[3] == 'ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf' and row[9] == 'FAILED'])\n",
+    "stampede_fn = sum([1 for x, row in df.iterrows() if row[3] == 'stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12' and row[9] == 'FAILED'])\n",
+    "comet_fn = sum([1 for x, row in df.iterrows() if row[3] == 'comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b' and row[9] == 'FAILED'])\n",
+    "gordon_fn= sum([1 for x, row in df.iterrows() if row[3] == 'gordon.sdsc.edu_f9363997-4614-477f-847e-79d262ee8ef7' and row[9] == 'FAILED'])\n",
+    "#jureca_fn = sum([1 for x, row in df.iterrows() if row[3] == 'Jureca_32098185-4396-4c11-afb7-26e991a03476' and row[9] == 'FAILED'])\n",
+    "alamo_fn = sum([1 for x, row in df.iterrows() if row[3] == 'alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29' and row[9] == 'FAILED'])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD8CAYAAABq6S8VAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXl8E1X3h5+TtE2brmyCguyCgvgCAj8EFcUV911EXzZB\nEUFxhdcNFVFEfV1Q9AUVBQURBRdQwRXFhUVkB2WVXZG9TZvQ5Pz+mKmE2pYCaadJ7sMnn0xm7r1z\nZhq+c3PuueeKqmIwGAyG6MXltAEGg8FgODKMkBsMBkOUY4TcYDAYohwj5AaDwRDlGCE3GAyGKMcI\nucFgMEQ5RsgNjiMiR4nItyKyW0SeKkX5vSJS194eIyKPlrWN9rm6ich35XEug+FQMEJeDojIOhHx\nicgeEdlii4/XabvCEZG1ItLRodPfBPypqpmqes/BCqtquqquK3uzij59JBoRkW9EJNf+TvwpIu+L\nSPVItG2IP4yQlw8KXKiqGUBLoBXwwKE2IiLuSBtWQagDLCvvk4qIk99/Bfra34mGQBrwtIP2HEAM\nf9diEiPk5YcAqOoW4FPgRAARyRCRV0Vks4hsEJEhIiL2sW4iMktE/isifwGD7f29RWSZ3ZtbIiLN\n7f1Hi8h7dg9vtYj0//vkIoNFZKKIvGnXWywiLe1jY4HawMf2sbvt/e/avyB22j3IJmHtVRaRj213\nyGzb7u/Cjh8vIjNEZLuILBeRq4u8KSJjgG7AQPvcHUWktYj8YJ93k4iMEJGEsDohEalfRFv/cH2E\nl7V/CY0UkWkishc4Q0SSRORpEfndvtaRIuIp4e/osu3ZZf8NOtptXyUi8wqd+04RmVJCWwXfiT3A\nB0DzsLoiIoNEZJWIbBORd0Qkyz7mEZFxIvKXfY9mi0g1+9jRIvKhfd9/E5Fe4fc63A0lIh1EZEPY\n57Uicq+ILASyRcQlIrXsXwt/2na8EFa+p30PtovIp
 yJSO+zYsyLyh/39WBj+3TFEHiPk5YyIHAtc\nAMy3d70JBID6QAvgHKBXWJX/A1YBRwFDbUF8CLjB7s1dAmy3xf9j4BfgaOAs4HYROSesrYuB8UCm\nXfYlAFXtCqwHLlLVDFUt6Bl+AjSwzz0feDusrZHAXvtYdywxVvsavcAM4C2gKtAZeElEji98P1S1\nh93uk/a5vwKCwACgMnAK0BHoG17tn3e22GOFP18HDFHVdOB74EmsHvFJ9ntNrPtbHP8HrASqAA8D\nk22B/QioKyKNw8regPX3LRERqQJcYbdbwG1Yf9vTgGOAnVj3HKx7nWHbWhnoA+TaxyZi/S1rAFcD\nj4vIGSWcvvD96Qx0ArLsz1OBtVgP+prAO7bNlwKDgMuAasB3wAT72LnAqUBDVc0ErgG2H+w+GI4A\nVTWvMn5h/UfYA+ywt0cAHiwRzAM8YWU7A1/Z292AdYXa+gzoX8Q52hRRdhDwmr09GJgRduwEIKeQ\njR1LuIYsIASkY3UAAlj/UQuODwG+tbevAWYWqv8K8GAxbY8BHi3h3LcD74d9DgH1C9e179e3heoW\nLvtGoePZQL2wz6cAa4qxoxuwsdC+2cD19vZIrIcEQFMs8Uospq2v7XPvtG2cD9QKO74MODPs89H2\nPXcBPYBZQLNCbdYC9gHesH2PA68XdZ+BDsD6Qt+BbmGf2wJ/AK4i7P8E6BH22QXkAMcCZwIrsB56\n4vT/v3h4/f1z1VDmXKqqX4fvEJE6QCKwRWxviv1aH1ZsAwdyLLC6iPbrADVFZEdB81j/ub4NK7M1\nbNsHJIuIS1VDhRsTy3/8OHAVVq9a7VdVwAu4gY3F2FkHaFvIFjcwrgi7/4GIHAf8F2ssIQVIAH4u\nTd1SEO5KqIZ1LT/b9x+seyZF1CtgU6HPv2P1mMHqfY8HHsTqjb+rqvtKaOs2VX1dRJpi9Xxrsf+e\n1gGmiEjB30awRLo61n2sBbwj
 IplYv3zut+3Yoaq+QvadXIINhQn/mx4L/F7U98O273kReSbMPgVq\nqurXIvIi1i++2iIyGbhbVbMPwQ7DIWBcK+VHUeKwAatHXkVVK6tqJVXNUtWTwsoU/um7AcvdUVRb\na+x2CtrKVNWLS2lf4fN0wXLFdFTVLKAu+x8024B8LDEp4NhCtnxTyJYMVb21lLa8DCwHGtjnvp+S\nxbWAHCxhBkBEahRRJvw6/8J6oDUNszVLLXdAcdQs9Lk2sBlAVWcDARE5Dev+lerBpapLgaHsd52A\n9TDvVOgepqrqFlXNV9UhqtoUaIf1d+pq21FZRFIL2Vfw8Dng/mD18v9hTtj2BiwhLkon1gM3F7Iv\nTVV/sq/pRVVtBTQBGgMHjUYyHD5GyB1EVbdi+ZKfFZF0e4CrvoicXkK1V4G7Zf9AZQPb7z4H2GsP\nViWLiFtEmopIqxLaChfHrVh++gLSAT+w0xaGJ7D/k9s9tMnAwyKSYvu+u4bVnQo0EpEbRCRBRBJF\npFVRPvJiSAf2qKrPrnNLKestBJqKyEn2gOVgSvCnq6oCo4HnwgYLa9o+3uKoLiL97eu6Gjgey81Q\nwDjgRSCgqj+U0m6wevPVRaTgwfs/LP92bduuaiJyib19hoicaAtsNlZPPaiqG4EfgCfsAdGTgBvZ\n/0BZAFwgIpXsh9ztB7FpDrAFGCYiXrvNdmH23VcwiCkimSJylb3dSkTaiDVAnYvVWSmqV2+IEEbI\ny4eSBue6AklYPtEdwCSsgaqiG1J9D6v3Nl5E9gBTgMq2uF6EFfmwFvgTS6QySmnXMOBBEdkhIndi\nCct6rN7cEiyBCKc/lt98C/tdCn7bxmzgXCx//2b7Ncy+zoPZAXA3cL19ff/DHmAroTz2eVcCjwJf\nAr9hDcAdjIFYg8k/icgurAdroxLK/wQch9WbHwJcqao7w46Pw4pIOlhv/IBrsF0wz2O5ZbC3PwRm\niMhurPv
 fxj5WA3gP2A0sxfK3v2Ufuw6oh3XP38calyhw6Y0DFgHrsMZaSryv9nfqYvt612P10K+x\nj32A9Td9x75vi4Dz7aoZWN+9gjGhv4CDTvQyHD5idUoMhiNDRIYB1dWKQolbRCQZa4CwpaoWNZZh\nMEQc0yM3HBYi0lhEmtnbbbB+wk921qoKQV9grhFxQ3liolYMh0s6MEFEjsbqgT6lqh87bJOjiMha\ne/MyRw0xxB3GtWIwGAxRjnGtGAwGQ5RjhNxgMBiiHCPkBoPBEOUYITcYDIYoxwi5wWAwRDlGyA0G\ngyHKMUJuMBgMUY4RcoPBYIhyjJAbDAZDlGOE3GAwGKIcI+QGg8EQ5RghNxgMhijHCLnBYDBEOUbI\nDQaDIcoxQm4wGAxRjhFygyGKEZG1IlLZaTsMzmKE3GCIbszKMAYj5AZDtCAiU0RkrogsFpFeBbsP\nchwR2Ssiw0VkiYjMEJHWIvK1iKwSkYvsMh4ReV1EFonIzyJyRvleneFIMEu9GQxRgohkqeouEUkG\n5gIdgJ+Bk1V1RxHHT1fVnSISAs5X1RkiMhnwAhcAJwJvqmoLEbkTaKKqvUSkMTADOE5VA05cq+HQ\nMD1ygyF6GCAiC4CfgFrAcaU87lfVGfb2YmCmqobs7Tr2/lOBtwBU9VdgHdCojK7DEGESnDbAYDAc\nHBHpAHQE/k9V/SLyNZCM7SMv4TjAvrCmQoAfQFVVRIrTAClmv6ECYnrkBkN0kAnstEX6eKCtvV8O\ncjy8TFEUHPsOuB5ARBoBxwK/Rsp4Q9lieuSGqEFEBEgFqgLVwl5VgRTAjUgCLlfi3y+RBEL5NVLc\n+XnAnlCIIJCvSjAYJBAMshvYU+hVeJ9fnR9M+gzoIyJLsQT2B3u/FnP8x7C6JdlecGwk8LKILMLq\nwXdT1X3FVzNUJMxgp8FRRMSN5ac9hnBxTk4+hsTEmojUIBSqRjCYRSCQgYiSmhogIyOf
 rCyoXNlN\nlSpJpKQk4Ha7cLnA7d7/crlIendc6JQme1wnngihEKha78Eg5OQQ3LOHQHY2wb17CebkQE4O5Obi\nzs3FHQiQpAqJieQmJvKny8Wm/HzW+Hz8BmwENtjvG1U117EbaYhrTI/cUC7YvtgGQBNEmpKW1hrV\nE3G7jyUtLUDVqvlkZQlVqiRQpYqHrCw3WVmQlQWZmdYrKwuSkwESD+nkn0wJtWixx3XppUUedWP1\n5oslEIDsbNL++ou0bduo/+efnPbnnwQ3byZ361aC27bh3rOHFI9H8pKS+NPl4vfcXObt28dCYCmw\nwoi8oSwxQm6IKCLiwYqWaILL1YTU1DaoNsXtPobMzDzq1AnRqJGXevUSqFsXateGlJRDE+ZyJikJ\nKle2Xo32x3G4gbSCD6qwaxep27ZRb8sW6q1bx+m//UbOmjXotm14U1Plr4QElvl8zM7PZzGWwP+q\nqv7yvyJDrGGE3HDY2L3skxE5k7S0swiFmuB2H0WlSrnUq6c0apRK3bpu6taFY48FjyftYG1GKyJQ\nqZL1atQIOnTABaQD5OfDxo3UWLeOGmvXcsavv5KzZg3s2EFKWppsUmWWz8fXWGGDy+3QQIOh1Bgh\nN5QaW7ibI9KRtLRLSEw8mapVA7Rpk8xJJyVRrx7UrAlJSelO21qRSEiAunWt1xln7Bf4QADWrqXO\nsmXUWbiQy5YsQffsISEzUxbl5PBZMMhM4CdV9Tlpv6HiY4TcUCz2QOS/gDNJT7+ExMTWVK6cT5s2\nSZx8sofmzSEzM/lg7RiKJikJGje2XpdfTirA7t2wdCltFi6kxdy5DNiwgZSMDFnp9/NZIMA0YJaZ\nbWkojIlaMfyNiLiAk7CE+2Ly8tpSqVI+bdokcvLJyfzrX5bvIMpI6nl9ft9LNycUM9hZocnLg+XL\nYcECgjNnkrN5M0keDzOzs5kIfKqqW5220eA8pkce54hICtCJ1NT
 uJCV1JDMzRKtWibRqlUzz5tYI\nn8ExkpOhRQto0QJ3jx5k7NwJs2dz3rff0n7+fBLT0+V3v59J+/bxETAvFv3rIrJXVY27rgSMkMch\nIuKlQLwTE8+mYcMA55+fQbt2ULWq0+YZSqBSJTj/fDj/fNLy82HJEhr98AP3fvstt+3aBWlp8llO\nDm8CM6JxQo+IuFU1WGi3cRscBCPkcYIdFnghqak9SUw8i0aNApx3XganngqVKhk/dxSSkADNm0Pz\n5iT27Uvili3w449cNW0a52/aBCkpMj4vj9eBueU9M1VEHsSa8v8n1oSpecCXwCtYcfurgZ6qutvO\nC7MAaA9MEJEpwHisWbwfFWr3KeB8rJwxQ1X1XTvPzMPAX1gZHeep6r/L/CIrEEbIYxh7SntbUlJu\nIinpaurXD3HhhemceipkZRnxjjGOPhquuAK54grSN22Czz/nxqlTuSE3l92JiTI6P5+xqrqmrO0Q\nkVbA5UAzwAPMxxLyscCtqjpLRB4BBgN32tUSVbWNXf9D4CVVfVtE+oa1eyVwkqo2E5GjgLkiMtM+\n3BxoAmwFvheRdqpakMYg5jFCHoOISH0SErqRktKbtLR0Lr44hXPOcVOjhtOmGcqJmjWhe3cSunUj\nYflyUj/7jEFffMHA9HRZmZPDSFUmqer2Mjp9e+BD27WzT0Q+wpo8lamqs+wybwLvhtWZWKj+Ffb2\nOGBY2P4JAKr6p4h8A7QG9gJzVHULgJ3Kty7789HEPEbIYwQ74uRC0tIeIiXlRM4+W7jgAg+NG1uz\nVQxxiQg0aQJNmuC57TaYO5dmU6fy9Lx5PJeaKh/6fDyhqgvK2oxSlMkJ21b2+8VLk7kR7NS8NkHi\nTNtMGtsoR0Q84nL1xOtdR+3a4xkwoBUffpjMnXd6OP54I+KGv0lIgFNOgaFDSX33XTzXXceV6el8\nn54uP4vI5fa8gUjwPXCxvXxcGnARkA3sFJ
 H2dpl/AzNLqH+dvX192P7vgGtFxCUi1YDTgDkRsjmq\niaunViwhIlkkJNxCcvK9NGqUQNeuabRsaYTbUCoyM+GGG3B37oz3229p+dZbjN2yBZ/bLcNDIV5V\n1d2H27aqzrPdKQuBP4BFWKmBuwH/s0Ne1wA9CqoUamIAMF5E7gU+DGt3ioi0tdsNAffYLpYTCptw\nuLZHK2ZCUJQhIrXweO5GtTennAI33OClYUOnzarQRPOEoPJk2TKYMAHfnDmI28243FyeVtWVh9OW\niKSqao4t2t8CvcvBhRO3mB55lCAiJ+L1PojHcwkXXihcc42H6tWdNssQQzRpAkOG4N22DaZMoccH\nH/DvtDT5KieHgaq69BCbGyUiTbCiVt4wIl62mB55BcYOH+xAWtojqLamc+ckLr3UTbqZ5HYomB75\n4ZGbC1OmEHz7bQIifGEL+nKn7TL8E9Mjr6CIyJmkpr6I11uHrl29nHuukJTktFmGOCIlBbp0wX35\n5aRMnswFY8dyYYpb5uSFuEFVVzttn2E/RsgrGCJSH6/3JSpVOp3+/b106AAuE1xkcI7kZPD7cYkg\nF4RoNR0Wp4uMz4YHTNKuioFRiAqCiKRJcvJwPJ4lXHvt2UyY4OXMM42IGxwlEIBHHkHfm4R84of3\nIWEdpPSEG1JgjVfkERExs4QdxqiEw4iIS1yurng862nXrh/jxqXQtWsCHo/TphninD17oH9/mP8T\nrMiDjvb+qsDz4FkGKWfA3WmwVkQudNDUuMe4VhxERNri9b5K9ep1uPvuNJo0cdokgwGATZtgwABI\n2oX+lY8UNTpTF/gEvNPB2wvezRT5aY8VZljm+VwMB2J65A4gItUlNXUS6elfcvvtTXj1VSPihgrD\n4sVw003QYDu6qRgRD+c8YBV4B8LpXljiFRlqx48bygkj5OWIiIi4XF3weFZy0UWXMHGiFY1i/OCG\nCsKMGeg998C1PvhJS
 5UjBbCCxe+DhBWQcg4MSIV1InJ2GZpqCMO4VsoJETkar/dNMjPbMXhwKo0b\nO22SwfA3qvD66+ikScgwvzVH/nA4FvjQdrdcDx+mi7yVDXeYBaTLFtMVLGPsXvgNeDy/cdllZ/DG\nG0bEDRWKQAAefhh9/z0rMuVwRTyc84CV4O0E/06DX0Xk/yLQrKEYTI+8DBGRqni9E8jKOoWHHjIC\nbqhw7N4N99wDW9fDCj/UjmDblYB3IWUS1OoFX3tFRuTCg6oaiOBpDJgeeZkhIu1JTl7BBRecbnrh\nhorIxo3Qqxf41qJ/+ZFIing4VwO/Qkp76JcOS0SkaRmdKm4xQh5hRMQlSUn34fV+zkMPVeHWW5NI\nTHTaLIPhABYtgptvhobb0Y2liEw5UmoAM8D7X2johTkukesOWslQaoyQRxDblfIVdevex5gxKZxy\nitMmGQz/YPp09N574Tof/HgIkSlHigC9QH4Abw14NV3kJRExvZwIYIQ8QojI/5GcvIKLLjqFkSNT\nOeoop00yGA5AFV59FX32WeQpP7zqkB3/ApaAtxV0T4cfRcTkYz5CjJBHAHG5riE5+SseeKAKt9yS\nRIIZQzZULAoiUya/j3zmh/4O21MZ+AK8/eEkLyyzV/4xHCZGyI8AERHxeB4mM3MMI0Z4ad/+4JUM\nhnJm927o1w9+sXOmnOG0QTZuYCgkvgOV0+Arj0hvp22KVkzX8TAREQ8pKeOoXv0Cnn7aS5UqTptk\niBDDh8NPP0GlSvDaa9a+vXvh0Ufhjz+genUYPBjS0v5Zt3NnSE21klYmJMDLL1v7R42C2bPhuONg\n0CBr3+efW4mprryy7K5lwwa44w5I3l18zhSnuRj4GVI6wHNekVq58LCaFW8OCdMjPwxEpApe7480\nb34RL7+cakQ8tujUyRLzcMaPh5YtYexY6338+KLrulzw3HMwevR+Ec/JgZUrrYdCQgKsXWu5OqZP\n
 h8suK7vrWLgQ+vSBRjvKJzLlSGgEzAfvsXBXqrVMnNtpm6IJI+SHiIgcQ0rKPC68sCmPPZZCsknF\nHGs0a/bP3vb338N551nb550Hs2YVXVcVQqED97lcEAxa23l5lphPnAiXXw7uMpKrzz5DBw6ELj74\noRwjU46Eo4E5kHoidEmHD0TE5HIuJUbIDwERqUdy8s906VKLvn2TTLKr+GHXLqhc2dquXNn6XBQi\n1kzJPn1g6lRrX0oKtGkDvXtD1aqW62XFCspkSEUVRo9Gn38OedoPoyN/ijIlE/gGvB3grHT4RkQy\nnLYpGjA+8lIiIo1ITv6Bm26qxOWXGwWPc6SYPu6IEVCliiX0d98NdepYPfzOna0XwNNPQ48eMG0a\nzJsHDRrADTccuU2BADz2GDpvLvKpv+IMah4qycAHkHIztJgIc0SknarucNquiowRpFIgIsfj8fxI\n//5GxOOUSpVghy0lO3ZAVlbR5QqGS7Ky4LTTYHmhNedXrrTea9WCmTOtQdNNm6zXkVAQmbJwNqys\nQJEph4sbGA2eG6FeOnxreuYlY0TpIIhIAzyeHxgwoBIXXGDuVxwRHjfRrp01OAnWe1Fukbw8yM21\ntnNzYe5cqFfvwDJjxkDPnpCfv799lwv8/sO3c8MGuPFGyF2LbgsgNQ+/qQqFAM9C0jXQIB2+FBGv\n0zZVVIwwlYCI1CA5eRa33JLJ+edHxYCR4cgZMsTq3W7cCNdeC59+Cl26WG6Qrl1h/nzrM8D27fCf\n/1jbO3daa1z27g233mqJf+vW+9udNQsaN7Z87Glplkvlxhth3z6oX//wbF2wwMqZ0ngHuqGCR6Yc\nDgKMguRO0DQdPjUDoEUjJlyzaEQkk5SUOVx9dT169DD5IKKYpJ7X5/e9dHPCpZc6bUlk+ewz9Lnn\nkK5+GOW0MWVMPnAp5H4HM/fCxaqa77RNFQnTIy8CEUnG653B2WfXpnt3I+KGM
 mPOHKuX/+9/w4QJ\nRZd54QVrMLRXL1i1ynLJjBiBDh+OVPHDRWFlLwO2lofh5UwCMBlSTobT02CCSHHDzfGJiVophIi4\nSUmZTIsWzbj99uRiwxMMhiMkFILnn4dnnrHCEvv0sXzvtcMSg8+eDZs3w1tvwbJldtkq6OzZyP0K\n9wOdgEuAj4GWWCljYxEPMA28baHTKngQeNRpmyoKpkdeGI/nCerW7cBDD6WU2WwNgwErlrxWLahR\nw5ok1LGjNfEonO+/h3PPtbaPOQZWr4YFc+HRfKgD5GL1xoLA88C95XoF5Y8X+AxSU2CgiFzstD0V\nBSPkYYjI5SQn38rQoV6SYm3YyFDR2LYNqlXb/7laNWtfOH/9BUcdBevXWwOjrnz4IoD0BT7AWhvz\nPmAk0BUrBjvWOQarZ+61XCxNnLanImCE3MaOFR/HE094qVTJaXMMhr9ZudJyuzTZiZ6qkAhkAFOB\nOUALe/sq4CbgGuAnx6wtH9oCI8CbCp+LSNz/hzVCDohIBikp0+nfP4UTTnDaHEOcUK0a/Pnn/s+F\ne+hgxaOPHAldc+E7RTYChePEh2D5yscDpwFvAg+XndkVhp4g3aFKOnwkInE93hf3Qi4igtc7kTPO\nOIoLL4z7+2EoPxo3tmZ0bt1qxZJ/9ZUVew5WZMqoUeiSJdA4H17B6mVnAeHL6awENgGnAz6s/9AK\n5JXnhTjIc+A5EVqkWIOfcUtcP8UAcLl6UKnSaQwYEA/uRUMFwu2G22+He++1IlguuMDKzTJlCkyb\nhm7ehHyZD+8CDYFUYEyhNh4Ehtrb12GFHw7D6qXHAwnAu5B6AtwjIh+q6nynbSotInI78D9VPeLn\nblxPCBKROng8S3nxxVQaNnTaHEMZEU0TggqSbW3bgC6Loen2Zc040L7wezacEAlhLA9EZC1wciQS\ngsWtK0FEXHi973D99R4j4oaKQEFkSuD32MqZUh7cANIB
 jkq1fpAcESLSVUQWisgvIvKmiNQRkS9F\nZIGIfC4itexyY0RkpIj8KCKrRKSDiLwmIstE5PWw9s4RkR9EZJ6ITBSRVBHpjxWA87WIfHmkNset\nkJOQcCs1ajSjSxfjXjI4zi+/7I9MWR+DOVPKGgHGgDcBbhKRUw+7HSuc8T7gDFVtAQwARgBjVLU5\n1pjyiLAqWap6CnAn8BHwjKo2AU4SkZNEpArwAHCWqrYCfgbuUNURwGb7PGcdrr0FxKWQi0g93O5h\nDB6caib9GJzmk0/Q//wHutuRKU7bE61UA96ElFSYJCKph9lMR2CSqu4EsN9PAQoSKIwDwnNffmy/\nLwa2quoy+/NSoC5WpGQT4HsR+QUr3D9s7m5k/t7x2RtNTR3JNdckHTAX2mAoZ0IhazWfD6Ygz/vh\nZqcNigEuBc6FjOnWOPCgCDVb0kBiQQLiUNh2wecE+32Gql4fIVuKJO565CJyBomJp3PttfH5EDNU\nCAIBePBB9KMPkC+MiEeUF6yZ/LeJSL2DFv4nXwFXi0hlAPv9B6ygIIAbgO+KqVtU7/onoL2INLDb\n84rIcfaxPVhzu46YuBJyEXHj9Y7mttu8eExaY4Mz7NoFt9wCS+bB6rwDf6cbjpxawEBIzISXDrWu\n7RoZCsy0XSFPA/2BHiKyALgeuL2geOHqhbdV9S+gO1Y6gYVYD4XGdpnRwGeRGOyMq/BDcbtv4rjj\n/svLL6earIbxQ0UKP1y/Hu64A1J3o6uCZlCzrMgFaoPvLzhHVX9w2p6yJm565CKSTmLicO64w4i4\nwRHmz7ciU5ruQNcbES9TUoDhkJIBL8VD7vK4EXLc7lto1SqRxo0PXtZgiDCffILedx/0zIVvIxSp\nYCiZriBV4TgOXHsjJokLIRcRDwkJg+jWzSzeaihXQiF4+WV0xAvICD+86LRBcYQbeAJSs+JgAYq4\nEHJEunL88Ykcd9zByxoMEcLvhwc
 eQKd+ZEWm9HbaoDjkCiARGolI64MWjmJiXshFxE1y8iP06JHm\ntC2G+GHnTuh7Cyz72USmOEkCMBCSM6zZlTFLzAs5cCU1a6Zz0klO22GIE37/3VooObge3R5AYnUN\nzWiht7Ww0rkiErMzAGNfyNPS7qZLlzQTqWIoD+bPt2LEm+1A1wURkwDCeTKAXuDyWvlQYpKYFnIR\nqUN+fjPamx+2hrJn2rT9kSnfOByZciPWAhThv0M7Ay3tVz37vSjqAv/CWkKuTdj+Qfb+7mH73gZe\niITBZcydkBSC3iISkwEPMS3kJCT04OyzxSykbChL/o5MGVFxIlN6ANML7XsHmG+/rsQaCCwKF/AN\n8AvWmqAZ++7EAAAgAElEQVRgzSX/BViItWboUqxViN4Abo2c2WVGHeBkCAIXOG1LWRCzQi4iQmJi\nHy680MzFN5QZfj/cf78VmfJNBYpMORUoaUXid9mfPKQwipXpKRwXsM/e9mGJecHc9WhxH3WH9Czr\nGRdzxKyQA6eSkZFqJgAZyoqdOy1/+PL5VmRKW6cNKiXfATWABsUcF+AcoDVWMhCANKATlrulJpbf\neQ5wSZlaGlkuB3LhrCNIcVthiV0hT07uwoUXes0gp6EsWLfOWs1HozAyZQLF98YBvsdyv3yClXVq\nlr3/Hiz3ynCsHLGPAq8B1wKPl5WxEaQK0AYCwIVO2xJpYlfIXa5LaNs2dq/P4Bg//wx9+8JJO9G1\nURaZEgQmY4lvcRxtv1fD6sXOKXT8F/u9ETAJmAisAlZHzswyo3uMuldiUuhEpB4ilWhQ3I9Hg+Hw\nmDoVvf9+uLECRKYcDOWfeVY/B07AWiyyKHxAtr2dA8wATixU5iFgCJbPvMCX7rLrVnQuA3LhzFiL\nXolJIQfOo3VrxRWrl2cob0IhGDkSfelF5CX/gYs2VkS6AO2A37DWFRtj75/IP90qW9ifVeoPrIHS\nFlg+/4uBc8
 PKfojlO68BZGKFI56EtTROs0hfRBlQGWhoBdzE1JT92FwlJz39atq3j6knrsE5/H54\n+GF00QLka390DGqOL2b/mCL2HQ1MtbfrAQtKaPdS+1XAU/YrmjgLUlZYWRNmOm1LpIi5LquIuMnL\na0erVk6bYogBduzYH5myLooiUwzFczokZcL5TtsRSWJOyIFGpKfnk5XltB2GKKdwZEo1pw0yRIR2\ngA9aikjM6F/MXEgYrTj++PhZv85QJhREpjTfFX2RKYaSORrIsMaBY2aSSewJucfTmqZNTcpaw2Hz\n8cdWZErvXPi6gkemGA6P06y/6ylO2xEpYm+w0+NpQ7165j+f4ZApyJky9WPkFf+ByaEMsUUL8H5s\nRWLGBLEn5IFAY+rVc9oKQ5Th98PgwejihchM/4FZ/wyxRz2QNGjitB2RIqaEXEQSEcmgmhmWMpSe\nHTvgrrtg12ZYF7BmNBpimzrWW8z0+GLNR34UXq8ftxmaMpSOtWutyBTZQOgvE5kSN9QF8oqf4Bp1\nxJqQH01WVsBpIwzRwbx5VmRKy13omiAu8/iPH44GApAmIilO2xIJYk3Ia1ClitM2GKKAjz9GH3gA\nbs6DL01kStzhAqpZ6WHqOG1LJIgpHzlQg6OOSnTaCEPFpSBnyrSpJjIl3smA0BYrtXrUE2tCXoms\nLCPkhiLJy7MiU5YsMpEpBkg64C26iTUhd+FymZ/Jhn+wYwf06QO7t5jIFIOFreAx0fGLNSEXI+SG\nf5CXJ+PGwTEudFsQibUvveHwMEJecYm1wVtDBNhXuyGJW+awI4ikANVB60LoeOAEcNfDCiiuj5Vj\n2xAfGNdKxUUQs0in4UB02JPuwJgxeMZO5GquCB3P8a6VrHT/yjq+Y2Mwm23qI9edQ0gSgZoQagB6\nAkgjcBUIfR3A4+ylGCJIohWtZHrkFRBF1WQ+NPyTHj3wt2rFlLvup9m+1cGHeNCdRhrA3+H
 jIUJs\nYANLWOJazWq+Y4N+wIagj134CLh8qGQCx0KoEYROAHcDkPpYQn805idhNJFnZUD0O21HJIg1Id/J\nrl0BICaC/A0Rplkz8iaPdy3oOyDYbUN3fZJh0pCGfx924aKO/c9GCBP6AAF+5VeWs9y1hjWuKWzQ\n3WzJ97HX5SPfFQCOKsFtYzLkVyz+tN62OWtFZJBY6sCKyJW0bv06w4fHRGyooQx5/nn1fPCp9KOf\nXsRFEXHH7WQnS1nKSlayjnX8wYbgXrZpLj5XNiFXAnAMhBrabpvjwFXQm68DJEfCCEOpqQY5f8GJ\nqrrOaVuOlFgT8tNo0OBjXn3VjFkZDs6PP+J54DFtF2obupd73MllKKUhQmxi099Cv4ENbGdjfg47\nJRe/KweVDCy3zXEQagIJDdjfmz8G47aJJAokQX4+ZKlqjtP2HCmxJuSNqVJlLu+9l+60LYYoYccO\nkm7qH6yyHdeTDJNjOdYRMwrcNr/yK2tYw0bW6262BHPZ68phnysAVLPdNo2x3DYFvfn6QCVHrI5e\nsoFKsG+fakxErcSakFcmKWkL06fHxB/HUE6EQsiQoer55gcZxCA60MFpi/7BbnazlKX8yq/8zu9s\nZUMomz9DPnJdOQRdbuBoO9qmSSG3TV2M26Ywa4GTYPte1apO2xIJYk3IhcTEHCZNSiHTeFcMh8iM\nGXiGPafn67mhW7nVnRglkWkFbpvlLGclK1nPettts0N8ttsmHctt0xC0KbgagIS7beIt8+M3wJWw\nZLtqM6dtiQQxJeQAkpm5iIcfbkaLFk6bYohGNm3C02dAsGZ2pgzjCVe1GJjMHyDASlaynOWsZS0b\nWa+72BLMZc/fbpuqxbht6gGVib30kM8BD8Kre1V7O21LJIg9Ifd6X+fGG3tw5ZVOm2KIVvLzcQ+8\nL+SZv8z1MINpTWunLSpT9rCHZSxjBSvsaJuNob38GfLhc+UQdLmw3D
 b1rUFYV8EkqfpYbptojPW9\nDnLegQGq+qrTtkSC2BNykVs455ynue8+r9O2GKKc997D89KrXM3Vwe50d7vjzgFhuW22sIWlLGUV\nq/id3/+OtvGR58pBJY3i3TY1qZhum4awZzWcparznLYlEsSikJ9KnTpTeeMN4yQ3HDmrVpHc7+7Q\ncf7aPMqjriwzrecA8slnFatYxjJWs5pNbGAXm/N97HH52OfKo2S3TRXK320TANIgfx9kqGpuOZ++\nTIhFIc8gMXEbU6cmkWSCVwwRIBAgod8dQe/KTe7HGUpTmjptUdSQTTZLWcpv/MYa1oS5bXJcOQRd\nULLbpix+Vi8EOsCGXaq1y6B5R4g5IQeQ9PRlPPLICbRs6bQphljitdfwvDWJntwYupqrXBJzQ4Dl\nT4HbpiDa5i82BLPZQS55rmxUUvnbbRM6AdzH2W6bekAtDi/HyP+AQTB5p2rMDKTFppAnJj7OVVfd\nw803R0cumexsePppa0l3Ebj3Xti2Dd54A9avh5dfhkaNiq8fClmrJlSrBkOHWvtGjYLZs+G442DQ\nIGvf55/Dnj2YgeAjYMECku95UJvnn6gP8IArlVSnLYpZ8slnNatZznJWsYpNbNBdbA7msMflI+DK\nA6qA1rHdNk3s3DYFrpuqFO22uQCyP4W+qjquHC+nTIlNIRc5nWOP/ZixY6Mj58qwYfCvf0GnThAM\nWmuSbd8OLhf897+WSJck5JMmwW+/gc9nCXlODjz8MDz1lPWAuPJKqFkT7rsPnnwS3BVx+CmKyM4m\n8eb+wczN2a4neVLqU99pi+KSbLJZxjJ+5VfWsY4tbAjt5Q/NJUeybbdNDdD6EDwe5Hhb6K+FQC7U\nUdWtDl9CxIiOHuuh8xNbtnjYvZsKPzEoJwcWL97fa3a7ITXVegEc7EG7bZvV877hBkvQwXoABIPW\ndl4eJCTAxIlw+eVGxCNBWhr73h7j/uuZ/2rfq
 bcygNv1fM43fpZyJo002tj/bA5IR7OVrSxjmfzG\nbwkLWM8XbAzu4g/xENzl0/yYEXGI0Tw8qhogOXk2c+c6bcrB2bIFMjKsnvJNN1k9aP8hpEh+6SWr\nxx5OSgq0aQO9e0PVqtZDYcUKaN8+srbHO3fdKf4h9/OcawSP83jQHxuprWOGGtSgIx3pQx8e53FG\nMdZ9GhflZyP/c9q2SBOTQg5AdvZrfPLJXqfNOCjBIKxcCZddZvm1k5Ph7bdLV/fHH6FSJWho59QO\n77137gyjR1si//rr0KMHTJsGjzwCb70V+euIV049Ff/EN2VmpcX0opduYpPTFhmKQVG+5ut9+eS/\n77QtkSZ2hRwms2RJIjt3Om1HyVSrBkcdBY0bW587dIBVq0pXd8kS+OEH6NIFhgyBX36Bxx8/sMzK\nldZ7rVowcyYMHgybNlkvQ2SoWpXAe2+7N53ekF705ju+c9oiQxGsZjV55OUAi5y2JdLErJCrajZJ\nSZ/y1VcVezS3cmVLzDdssD7Pnw916hxYpjg/ee/elu97/Hh48EFo2dIa0AxnzBjo2dPKvFzQjst1\naO4bw8FxudBHBkvevf0ZKo8zghHBfPKdtsoQxkd8lBck+LrGYIRHzAo5ADk5/+Ojj7KdNuOg9O9v\nRZv06gWrV8P118OsWXDNNbBsmSXOAwdaZbdvh//8p3Ttzppl9fQrV4a0NGjQAG68Efbtg/om0qJM\n6NQJ/5ujmJY6U/rSN7QtNlYSi3pyyGEGMwgQeNFpW8qCmAw/LEBEEvB4tvHKK1nUreu0OYZ4Ij8f\n990DQ8kLf3M9wsOczMlldqrhDOcnfqISlXiN1wDYy14e5VH+4A+qU53BDMZebPoAOtOZVFJx4SKB\nBF7mZQBGMYrZzOY4jmMQVkTV53zOHvZwJdE3D2Eyk/V1Xp+WrdkXO21LWRDTPXJVzScUeol33omJ\nfAqGKCIhgeBzz7hybr6e
 +3mAN3gjFCJUJqfqRCeGM/yAfeMZT0taMpaxtKQl4xlfZF0XLp7jOUYz\n+m8RzyGHlazkNV4jgQTWspYAAaYzncu4rEyuoSwJEeId3snJIWf4wUtHJzEt5ADs2/c8X38NO3Y4\nbYkhHuncGf8rzzEx6QPu5M7QbnZH/BTNaPaP3vb3fM95nAfAeZzHLGYVWVdRCj9gXLgIYs1DyCOP\nBBKYyEQu53KiMQPkPObhw/cHFHMTYoCYF3JV3Ybb/TaTJu1z2hZDnNK4MXkfvuNa2sCv3enOMpaV\n+Sl3sYvKVAagMpXZxa4iywnCPdxDH/owlakApJBCG9rQm95UpSqppLKCFbQnOuchTGRidg45w2Jx\nkLOAmBdyAHJzn+CDD4L4fE5bYohXkpPJf/Vl967rOnEnd/I+74eU8tOV4hJ8jWAEoxjFMIbxAR+w\nmMWA5TsfzWj60IfXeZ0e9GAa03iER3iL6JmHsIlNLGGJQDG+pRghLoRcVdfgdn/O1Kll46Q0GErL\nTTfhf+ZxXk14Qx7kwaCPsulcVKISO7DciTvYQXF51KtQBYAssjiN01jO8gOOr8Sah1CLWsxkJoMZ\nzCb7XzQwmtE+QZ5X1ZjuxcWFkAOQk/MAY8f6yclx2hJDvNOyJXnvvy1za2ykO911LWsj0mx4D78d\n7ZjOdACmM71It0geeeRixQHkkstc5lKPegeUGcMYetKTfPL/bt+Fi2hIR7Cc5cxmdsCP/wmnbSlr\nDirkIlIu09xFpIOInFJW7avqIlSnMmGC8ZUbnCcjg8CEN9zbOrXiFvoygxmH7WcZwhD60Y+NbORa\nruVTPqULXZjHPLrSlfnMpwtdANjOdv6DNQ9hJzvpT39605tbuZV2tDtgfdJZzKIxjalMZdJIowEN\nuJEb2cc+KnrGR0V5lmez/fjvUtWKP5fkCDloHLmI7FHVMk8HKyKDgWxVfeYQ6rhVNXgI5Wvj8axg\n7Ng
 UjjrqsOw0GCLOzJkkPzpczwidHrqDO9xJmJWtjpSZzGQ4w1f58B1/KBoRrRySa0VEnhKRxSKy\nUESusfd1EJGvRWSSiCwXkXFh5VuKyDciMldEPhWR6vb+20RkqYgsEJHxIlIH6AMMEJH5ItJeRC4S\nkZ9E5GcRmSEi1ey6g0VkrIjMAsYeiv2quh7V53nppZj2lxmijA4dyHvnDfk66xfpRW/dwhanLYpq\nAgR4gRdyfPj6xIOIwyEIuYhcCZykqs2Ac4CnCoQZaA7cBjQBGohIOxFJAEYAV6pqa2AMUJDRaSDQ\nXFWbA31U9XfgFeBZVW2pqt8D36lqW1U9GZgI3BtmzglAR1W9/pCvOBB4jDlz8li8+JCrGgxlRrVq\n+N8f79rYro7eyI18z/dOWxS1TGFK0I9/jqp+6bQt5cWh9MjbAxMAVPVP4Bv426E2R1W32HGaC7DW\nTW0MnAh8LiK/APcDx9jlFwLjReR6oLgn5rEiMl1EFgF3wwEr3n6kqoFDsP1vVDWHvLw+DB2aQ+Cw\nmjAYygaXCx36qCv3zlsYIo8xkpHBYLH/PQxFsZOdvMmbgRxy+jptS3lyJFEr4YGp4UPYQayVhwRY\nYvewW6jqv1S1k13mQuBFoCUwV0SKsmME8IKqnoTldkkOO3akoSfvsXfvTF591Si5oeJx8cX43xzF\nR94vpS+3hraz3WmLogJFeZzHfYq+oqornLanPCmNkBcI9nfAtSLisv3VpwFzSqj3K1BNRNqClcBK\nRJrYx2qr6kxgEJABpAF77e0CMoDN9na30lxMaVFVxefrwUcf5bGs7GfZGQyHzLHH4p8ywbW6WYp2\npzsLWOC0RRWej/k4tIxlG/LIG+S0LeVNaYRcAVR1ClZC9oXAF8A9touluPL7gKuAJ0VkAfALcIrt\nO39LRBYCPwPPq+oe4GPg8oLBTuBh4D0RmQuRzwWqqn/i9/fm0UeNi8VQMUlKIvjC
 s+7sXp0ZxCDG\nMa7MEm9FO+tZz8u8nOfDd9nhul2jmZhOY1saJDV1Kp06nUO/fibmy1BxWb6c5AGDQk0CDXUwg90Z\nlHlEcNSwj330pnfORjbem6/5I522xwniZ2Zncfh8PZg2bQ/fmygBQwXmhBPI++Ad1+K62XSju/7K\nr05bVGF4ndcD29g2O0jwZadtcYq475EDiMj/kZLyNaNGpVCrltPmGAwl8/LLeN79kJu5WS/jMiku\nIVY8sJCFDGTgLj/+xsW4euMCI+Q2kpjYj+rVhzF6dCopKU6bYzCUzNy5JP/nEW0dPDn0Hwa5U4i/\n7+wOdtCTnr7d7L5aVT9x2h4nMa6VAvLzX2LHjk8YPjy32MWODYaKQuvW5L33lsw+ai096KG/87vT\nFpUrAQIMZGBOHnnPxbuIgxHyv1FVJTe3O7Nnb2bSJDMLw1DxycoiMHGs+89zm9OHPnzBF3HRA7Hj\nxXM3selLP/4HnLanImBcK4UQkbp4PD8zcGAlzjwzfp2Phujiq6/wPPa0nqVnhm7n9phOvPUGb+yb\nxKSVPnytVNWsx4vpkf8DVV2H39+RJ5/M4ZdfnDbHYCgdHTvinzBGvsyYx03cHNrKVqctKhM+4ZPQ\nRCbu9OE7+0hFXERuF5Hkg5cse+zkgx8fbn0j5EWgqgvx+y/h/vtzWbXKaXMMhtJRvTr+KRPcG/7v\nGHpyIz/yo9MWRZQf+ZEXeCE7j7zTVTUSKSIHAN4ItBMpDts9YoS8GFT1a/LyunPXXblsjc3ejSEG\ncbkIDRvqyr29N4/wKK/wSkwk3lrGMh7lUZ8f/3mqeshB9CLiFZGpIvKLiCwSkYewkvh9LSJf2mVG\nisgcO1X34LC6a0XkcbvuHBFpISKfichKEbnJLtNBRGba51ghIiPD6p8jIj+IyDwRmSgiXnv/+Xbq\n73nAFYVsfS0sjffFB70+4yMvGUlKGkBGxlBefNFLjRpOm2M
 wlJ61a/Hceleofm4NHuMxV2UqO23R\nYbGIRQxikC+X3MMOMxSRK4DzVPVm+3MGVqbWk1V1p70vS1V32Un8vgT6q+oSEVkLPKGqo0Tkv0BH\noB1Wb36JqtYQkQ7Ap1gpttcD07FSc88EJgPnq2quiNwLJAFPASuBM1R1jYhMBFJU9RIRGQosVdXx\nIpKJldOqeUmuJNMjPwgaCDzHnj0P0revj82bD17BYKgo1KuH/4N3XL81SaQ73VnEIqctOmR+5mcG\nMjAnl9xLjzDMcDFwjog8ISKn2vmdhAOzuHYWkZ+x8kI1sV8FfBzWzmxV9anqX0Ce/VAAK53373Y6\n7wnAqUBbu53v7XTeXYE6wPHAGlVdY9d9K+xc5wKD7PLfYAl/7ZIuzgh5KdBA4L/s3Xsvffv62LjR\naXMMhtKTlETwpedde3tcxb3cy3jGh/TwXbHlyo/8yP3cn5NHXidV/eJI2lLVlVhpsxcDQ0TkQcJ8\n0iJSF7gLOFNV/wV8woGpswtSdYc4MG13CCttd5GnxXpQzAhL532iqvYuOG0x9QRrQZ4W9qvewdxJ\nRshLie7b9xLZ2bfTt6+P3+Nr8oUhBujaFf+LzzAu8R3u5d5gNhV7PeJv+EYf4ZG9fvwdVfW7I21P\nRI4GclV1PPA0lqiHp87OALKBvfbKZ52KbKiIpsO2W4tIHds1cy0wC/gJaC8iDWw7vCJyHLACqCMi\n9ey614W1Mx1rxbUC25sfzAgj5IeA5ue/Sk5OX/r1y+VXk7TIEGU0bUreB++4FtbeRTe66W/85rRF\nRTKDGTqMYXv8+E9X1ZLWPDgUmgFzbHfFQ8AQYBTwmYh8qaqLsHzmy7HcHLPC6pb0Eyb82DysBXOW\nAqtVdYrtfukOTLBTd/8ANFZVP3Az8Ik92PlHWDtDgER7UHYx8OjBLs4Mdh4GInI5yclv8cADXtq3\nd9ocg+HQGTFCPZOnSV/66sVcXGESb3
 3ER8GRjNztx3+aqkbNqi/2YOddqnqJI+c3Qn54iEhrPJ7p\n9OqVwVVXuZ22x2A4ZGbPJvn+Ido22Do0kIHuZJybG5NPPi/yon860//KI+9M26cdNRghj2JEpA4p\nKd9wzjlHc9ttHtxGzw1Rxs6dJN3UP1jlr5BrGMOkdsnBEWXCbnZzH/f51rFung/fpaq6q9yNiHKM\nj/wIUNXfyc1tzhdf/MzAgT6yK/YAksHwDypVIjBxrHvrWU25mZv5iq/KtWe3mtX0pKdvDWtG+fB1\nNCJ+eJgeeQQQkURSUl4mNfU6nnjCS8OGTptkMBw6n3+O54ln9Tw9J9SPfu5EEsv0dN/wjT7Jk7l+\n/L1CGppQpieLcYyQRxBxua4jKelV+vVL5sILXUjFGEAyGErNli14br49eMzeNHmCJ1zVqR7xU4QI\n8RqvBSYzeXceeeer6vyInyTOMEIeYUTkeFJSPqVt2+rcc0+KWW3IEHWEQrgG3hdKnrfYNZjBtKFN\nxJrewQ6GMtS3ghXLffguiOfl2SKJEfIyQERS8XpfJzPzIoYO9VKv3sErGQwVjcmT8YwYzVVcGepB\nD5ebIxvMn8lMnuKp3HzyX/Ljv19VAxGyNO4xQl5GiIjgdvcgIeEF/v1vD507J5ioFkPUsXo1yf3u\nDjXIq8ljPObKIuuQm8gmm2d4Jnc2s3fYia9iK79uBcAIeRkjInXxeidSo0ZTBg9OpXb5h3cZDEdE\nIEDCbXcFvb+udz/GYzSjWamrzmUuj/GYL0Dg7Tzy7lDVnDK0NG4xQl4OiIiLhIRbcbuH0bOnhyuv\ndJveuSHqGDMGz9iJ9KBH6BqucZU0GzSXXEYyMu8LvsjJI6/zkSa9MpSMEfJyREQa4PW+S61ajbnv\nvlTq1HHaJIPh0Fi8mOQ77w+dlN+EB3nAlUbaP4osYhFDGOLLIWdaLrk3mdjwsscIeTkjIi7c7v4k\nJAzlsssS6dYty
 US2GKKK7GwSb7k9mLFxt2sYw6Qh1ryJ7WznRV7M/YmfcvPI66WqUxy2NG4wQu4Q\nInI0Xu9LJCaex+23eznjDEzcuSGqePY59Xz0mfSjn/rwhcYwJgC8kkfeQ6pqpjmXI0bIHUZEzsDr\nHU2tWkdz552pNG7stEkGQ+lQhVGjSH7nA1y4fvbhu0FVVzhtVjxihLwCICJuXK4bSUwczmmnJXHL\nLSlUjs71FQ1xwqpV8PzzOaxevZPc3L7AVDVi4hhGyCsQIpJJcvIjwE1cf30iV12VQLJzqUUNhn+w\nbRuMGpXLd9/tIz//PoLBUaq6z2mz4h0j5BUQEWlIauoLqJ7B1VcncvnlCWRmOm2WIZ7ZtQsmTcrn\n/ff3ASPx+4eo6m6nzTJYGCGvwIjICXi9DxAMXsEFFwidO3s46iinzTLEE+vXwzvv5PHll+B2v09u\n7v2qahatrWAYIY8CRKQmyckDCYVupH17+Pe/Tf4WQ9mhCosXw7hxOSxapMAIAoHnVfWPg9Y1OIIR\n8ihCRCqRkNAPt/tumjZ10b17Gs1KP13aYCiRYBC++w7Gjs1m69a9+P1DCYXeMNPqKz5GyKMQEUnB\n5eqOxzOYmjW99OiRTtu24DILPhkOg9xc+OSTEG+/nUcgsIqcnIeBj1Q16LRphtJhhDyKERE3cCVe\n72NkZBxNt25pnHUWJJbtyi6G/2/vbn6jqOM4jr9/+7zb7ROtRGkp9sEU0qSQjQkUo1hRLFIvejQx\nxkTj38HNP0EvmmD0wgEuPNgGjHiwiYQShbAtUKENYvoAbenuzs7O/DxsW4VwAGzZTvfzSn6Z2bSH\nb/bwzmT2t7ObxOwsHD/ucuKERzj8E0tLR/VkwmBSyDcBY4wB3iadPorn7aG/HwYGEvT06CpdHub7\ncOUKnDyZ58IFQzh8jHz+S2vtjUqPJs9OId9kjDEvE4l8RCz2GbFYMwMDMQ4diurD0SpmLYyNwd
 BQ\nkaGhEp43jeN8Tan0lbV2ttLjyf+nkG9Sy1fpvcTjn2DMx2zZEmVwsIaDB0PawlgFrIWJCRgeLnH2\nrEM+v0Cp9A2u+7219kqlx5O1pZBXAWNMCHiDVOpTSqUPaW8vMThYx4EDUFtb6fFkLU1OwrlzHqdP\n55ifd7D2OxznGHBJX6HfvBTyKmOMiQOHSac/x3HeYvdulyNH0vT1QTxe6fHkWdy9C+fP+5w6tcT0\ntI8xP1AoHAN+tdb6lR5P1p9CXsWMMfXAB6TTX+A4e+jqyrN/fy2ZTIjubvQrRhtUqVS+5335smV4\neJGpqfDyty6/BX7WtsHqo5ALsBr110kkBohE3qNYbGHXrgJ9fbVkMobOTu2AqRTXhWwWRkd9RkYe\nkM0miMXu4Hk/UiicBIb04KrqppDLYxljmoE3SSYPY8y7+H4zvb1F9u2rJZOBtjb9EMZ6KRbh2rV/\nwz0+niAen8J1z+I4Q8AFa+1MpceUjUMhlydijGkB+kmljuD77xAOp8hkfPburaG3F1padMX+rIpF\nuHoVRkc9RkaWuH49SSLxJ657BscZphzue5UeUzYuhVye2vLWxnagn3T6fTzvNUqlelpbc+zcGae7\nOy+sEmkAAAJLSURBVEFnJ3R0QCpV6XE3lvn58rbAmzdhfLxANuswOZkimbyB45yhWBwGftEjYuVp\nKOSyJowxDUAvsJuamn2EQq+Sy7VTV+fQ0eHT1ZVix44I27eXb8vU1VV65PVjLczMwNRUeU1MuGSz\nOW7dilEsGhKJ63jeRXK534A/gIvW2sVKjy3BpZDLull+FswrQA/G7CKdzgA9FAptRKOWbduKdHRE\naW1NUl9vaGyEhgZWjzU1G+8+vLVQKJSvrBcWysfpaZic9JiYWOL2bZieThIO54nHb+H7V3nw4BLw\n+/Ka0n5uWWsKuTx3y7dmXgS6gZ2Ew20kk22Ewy34/lY8rwnXrcfzotTUO
 NTVuTQ2QlNTmObmOE1N\nURoaWF2JRDn4KwvK9+tXzv/7t0f/z5jyPeqVKK8c5+ctc3MF5uZc7t2zLCwYFhcj5PNxwCcaXSQS\nuU8oNIfv32Zp6TLWjgFjwHVr7cLzfl+leinksmEZYxLAC8DWh1Ys9hKx2HZCoW34/lasTQBmdVlr\nHvOa5fPQ6nn5NYRCLpHIfYyZxdq/cd2/KBTuALPAzCPHWWtt7vm8AyJPRiEXEQk47RcTEQk4hVxE\nJOAUchGRgFPIRUQCTiEXEQk4hVxEJOAUchGRgFPIRUQCTiEXEQk4hVxEJOAUchGRgFPIRUQCTiEX\nEQk4hVxEJOAUchGRgFPIRUQCTiEXEQk4hVxEJOAUchGRgFPIRUQCTiEXEQk4hVxEJOAUchGRgFPI\nRUQCTiEXEQk4hVxEJOAUchGRgFPIRUQC7h/zJtHE2H36aAAAAABJRU5ErkJggg==\n",
+      "text/plain": [
+       "<matplotlib.figure.Figure at 0x97d1c88>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "slices= [ls5_fn,stampede_fn,comet_fn,gordon_fn,alamo_fn]\n",
+    "cols = ['c','m','r','w','y']\n",
+    "Hosts= [\"lonestar\",\"stampede\",\"comet\",\"gordon\" , \"alamo\"]\n",
+    "plt.pie(slices,\n",
+    "        labels= Hosts,\n",
+    "        colors=cols,\n",
+    "        startangle=90,\n",
+    "        shadow= False,\n",
+    "        autopct='%1.1f%%')\n",
+    "\n",
+    "plt.title('Percentage failure by Resources')\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "## Percentage cancelled by resources"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "ls5_xn = sum([1 for x, row in df.iterrows() if row[3] == 'ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf' and row[9] == 'CANCELED'])\n",
+    "stampede_xn = sum([1 for x, row in df.iterrows() if row[3] == 'stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12' and row[9] == 'CANCELED'])\n",
+    "comet_xn = sum([1 for x, row in df.iterrows() if row[3] == 'comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b' and row[9] == 'CANCELED'])\n",
+    "gordon_xn= sum([1 for x, row in df.iterrows() if row[3] == 'gordon.sdsc.edu_f9363997-4614-477f-847e-79d262ee8ef7' and row[9] == 'CANCELED'])\n",
+    "#jureca_xn = sum([1 for x, row in df.iterrows() if row[3] == 'Jureca_32098185-4396-4c11-afb7-26e991a03476' and row[9] == 'CANCELED'])\n",
+    "alamo_xn = sum([1 for x, row in df.iterrows() if row[3] == 'alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29' and row[9] == 'CANCELED'])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VMXawPHfc3aTbQmE0CEEAiQUaQIiiojXBihVioIK\nooJSVQQLykXhgtixAEoTUUGsFN9rRfSKFaVIRwVpKkVqyqbszvvHOYElppNkk818+ewnm9P2Ocvm\n2Tkzc2ZEKYWmaZoWWoxgB6BpmqYVPZ3cNU3TQpBO7pqmaSFIJ3dN07QQpJO7pmlaCNLJXdM0LQTp\n5K6VKyLSSUT2Fce+IuIXkfqFj07Tio5O7kVARH4XkWQROSkif4rIKyLiDnZcgURkt4hcHuw4Solz\nubkjt32L5KYRERksIhnW5+m4iKwXkWuL4tha+aGTe9FQwLVKqQpAa6At8HBBDyIitqIOTCtRUoTH\n+kYpVUEpFQXMBt4UkQpFePxzoj+rpZ9O7kVHAJRSfwIfAs0ARKSCiMwTkT9EZJ+ITBERsdYNFpE1\nIvKMiBwBJlnLh4rIVqvktllEWlnLa4rIOyJySER+E5HRp19cZJKILBWRV639NolIa2vdIiAWWGmt\nG2ctf8u60jgmIl+ISNOA40WLyEoROSEi31txfxWwvrGIfCIif4vINhHpl+MbI1JJRBaIyAFr+/es\n5VHWaxyylq8UkdoB+60WkcnWe3RSRD4SkeiA9ZeIyNdW/HtEZJC1PFxEnrKW/Skis0TEkUNsub2n\nThFZKCJHRWQzcEHuHwEArrWOc0hEnrCOE2ad33kBx64qIkkiUjkfx3wN8ADxAfu3Dzj39SLSKWDd\nLVYMJ62fA6zlIiIPW1eaf1nnFmmt+0eVU+DVnvX5eltEXhOR48BgETFEZIKI/Gp9TtZm/v/l9vkQ\nkWtEZIsV3z4RGZuP90ArKKWUfpzjA9gNXG49rwNsB
 h6xfn8fmAU4gSrAd8BQa91gIB0YgflF6wD6\nAfuA1tY29a1jCvAj8BBgA+oBvwJXWdtNApKBzta204Bvs8T4ryxx3wK4gTDgGWB9wLo3gcVWTE2A\nvcD/rHVu6/dB1mu1BA4BjXN4f/4PWAJUsGLvaC2PBnpbr+EBlgLvB+y3GvgFaGBtsxqYZq2rC5wE\n+lvHrAS0sNY9CywDKlrHXQ5MtdZ1AvZaz/N6T6cDX1rHqQ1sytw3h/P0A6us7WOAHcCt1roXgccC\nth0DLM/hOIMD3msbMBLwAlWsZbWAI0Bn6/crrN8rW/83J4CG1rrqQBPr+a3ATuu9cwPvAouyvi85\nfK4nAalAd+t3BzAe2BjwWs2t/4fsPh+HMz8fwB/AxdbzikCrYP8Nh+Ij6AGEwsP6IzgJHLWev2B9\n+KtZf5SOgG1vAD63ng8Gfs9yrI+A0dm8Rrtstn0AmG89nwR8ErCuCZCUJcbLczmHKCs5RWJ+0aRl\n/tFa66cEJJz+wJdZ9n8JmJjNcWsAGUCFfLyPrYC/A35fDUwI+H048N+Ac383h+MkAnEBv18E7LKe\nByb3C/N4T3/DSvTW70OzJsAs+/qzbD8c+DTg/29PwLq1QN8cjpP5pX/U+n9ICtwWuA94NZvPzc1W\nYj2K+aXpzLLNZ8CdAb8nYCZsg/wl9y+yrN8OdMsm/lw/H8Dv1nsZWRJ/n+X1YUcrKj2VUqsDF4hI\nXcxS8Z9i1cRYj70Bm2XtfVEHM6lkVReoLSJHMw+P+Uf5v4Bt/gp4ngw4RcRQSvmzHkxEDMzSfV/M\nKwplPapgJggbsD+HOOsC7bPEYsOsPsiqDnBUKXUymxhcwAzMq40o6zgRIiLKygLZnFNEwHH/8T6J\nSFUr/p+s9xzM9ym7+vBYcn9Pa3H2e7Anm2NklXX7WgBKqR+saphO1jk1AFbkcpxvlVKXitkwPx+4\nFHjHWlcX6C8i3QPitmMWGpJF
 5HrMUvUCEVkD3KuU2mnFEngOezA/n9XzcV6Q/Wd1Vzbb5fT5WGT9\n3geYCDwuIhuBB5VS3+UzBi2fdHIvOtklj32YJffKAckqq6zL92H+4Wd3rF1KqUaFjC/r6wwEumOW\nzPaKSEXgGOZ5HMYsbcdgVlOA+YccGMsXSqnO+XjdfUC0iFTIJsHfi1mPfIFS6rCItATWWTHk1fNk\nH2ZpOKsjmF8C5ymz/SOvY+T2nv6Bed7brN/r5nE8smwfax0j06uYpeu/gHeUUml5HcxK1iOAXSIy\nXym10Yp7kVLqjhz2+RT41GpnmArMxSyZ/5HlHOpiXiEcxKx2Ot3DS8wG06pZD53l972Yn9WtWZbn\n+vlQSv0E9LJeYzTwFuZ7pRUh3aBajJRSfwGfAM+KSKTVoFVfRC7NZbd5wDg50xjaQETqAD8Ap0Tk\nPquhzyYi54lI21yOFfiF8xdm/X2mSMxL8mMi4gEew/rjtUr67wGPiIhLRBpj1p9m+gBIEJGbRMRu\nNRi2tbbL7j34EJglZgNqmIh0DIghBTgpZkPpI7mcS1ZvAFeISF/rvYgWkZbWl+hcYIZVikdEaovI\n1dkcI6/39G3gQSvuGGBUPuIab21fB7gLs+0iMObewI2cKcXmSSl1zDqnSdai14HuInK11ajptBpE\na4lINRHpYZX40zGrqDKv3JYA94hIPRGJwEz8b1r/3zsxr/S6iogds7dXeB6hzQemiEhDABFpLiKV\nyOXzYT0faH3Z+4BTgC+/74WWfzq5F43cSpmDMP9ItmLWhb6NWQ+d/YGUegfzj26xiJzEbJCNtv4A\nu2HWS+/GbMCci9lImZ+4pgMTxez5MRazFLkXOIDZAPxNln1HY1aV/GltuxjzywClVCJwNWb7wR/W\nYzo5J4ObMa8EtmN+ydxlLZ+BWVo8Yr3+f3OJ/+wVSu0DrgHGYb6v64EW1uoHMK84vrN6dnyCWb+c\n9Rh5vae
 PYr5HuzHrtPNKyAqz8fYnzCuQlcCCgNfbby1XSqk1eRwrq+eAriLSzDpOT2AC5lXWHsz3\nwbAeYzH/X49gVucMt46xALPq7H+YVVrJmA27WFdVIzAT9n7MpBtYxZSdZzBL3Z+IyAnMgokrH5+P\nm4Hd1v/NMMyrSK2ISc61BZp2hohMB6orpYYEO5ayTETmAweUUv8OdixaaNN17lq2RKQREK6U2iQi\n7YDbMLvSaYUkIvUwq2XOD24kWnmgq2W0nEQC74lIImZd7ZNKqZVBjqnMEpHJwM/AE0qp/PS60bRz\noqtlNE3TQpAuuWuapoUgndw1TdNCkE7umqZpIUgnd03TtBCkk7umaVoI0sld0zQtBOnkrmmaFoJ0\nctc0TQtBOrlrmqaFIJ3cNU3TQpBO7pqmaSFIJ3dN07QQpJO7pmlaCNLJXdM0LQTp5K5pmhaCdHLX\nNE0LQTq5a5qmhSCd3DVN00KQTu6apmkhSCd3TdO0EKSTu6ZpWgjSyV3TNC0E2YMdgKbll4gIEAVU\nAaoGPKKBcMCGiB3DCMMwwjEMOyJhNpUeG274DipFKuBTynykp5OkFCeBU8BJ63Eqm59epZQq6fPV\ntHOhk7sWVCLiABoA1TmTrKvgctXBbq+FSHX8/sqkp0dhGBHY7T48njQqVPBRqRJER9uJjnYQHm5g\ntxvYbGAYYLOR+dz56izVvRtSuTL4/aCU+TMtDRITST91iozERDISE/EnJUFyMpKSguH1Yk9LI0wp\ncLvluN3OQRH2paayKzWVXcAB67Ef+EMp5Q3aG6lpWYgukGglQURcQCOgKXZ7M9zudvh8TfB6qxEV\nlUJ0tJ/oaKFy5TCio51ERQlRURAVBRUrnnmEhxf4tT09r/TPeNpnNGxYuNjT0uDvv+HIETh82Px5\n8CDpf/6J99Ah/EeOYD91Cqfdjtfh4IBSbEpM5Edgm/XYpZTKKNyra1rh6JK7VqREJAJo
 DDQlLKwF\nLldbMjIaY7NVpmrVZOrXF+LjPdSrZ1C3LsTEQFhYZLDjzk14ONSsaT4ChFkPwLwSOHECzx9/kLBn\nDwm7d9Pjl19I2bsX4+RJnJGR8ocIW5OSWOv3swXYDGxXSvlK9my08kInd63QRMQDdCAs7ApcrktI\nT0/Abo+iWrVk6tc3rCQu1KsHtWqB3V4h2DEXF8OASpXMx3nnAQHJ3+uFffuI3bOH2D17uPqXX0j8\n9VeMkyexV6woW5KT+Swjg6+B75VSh4J4GloI0cldyzcRcQMXYbdficvVDbu9EfXqpXDhhR6aNLFR\nrx7UqAE2W8gm8cJwOiE+3nxg9lCrAHDiBGzbRputW2m1fj3Dd+7E6fHIccPgu8REVgHfARuUUmnB\ni14rq3Ry13IkIk7MZH45LlcP7PbGxMZ6ad/eTevWdpo2BZcrLM8DadmqWBHat4f27bEBFfx+2LeP\nalu30mPTJq7euJG0Q4dwVKgga0+d4h3gY2CH7rmj5YduUNVOs3quXIjNdgVudzdSUpoRE2Mm8/PP\nt9O8ObhcwQ6zwM61QTWYTp2Cdevgm29I+e47VHo6ycB/U1JYDqxSSp0Idow5EZHdQBul1NFgx1Ie\n6ZJ7OSciVYDeREYOwW5vQ61aXi680EWbNmE0awYeT8G7p2hFJjISOnWCTp1wKQV79uBeu5abv/qK\nXtu346xQQXYkJ/Ouz8cKzCqc0lRaK02xlDs6uZdDIlIVM6HfSnh4K9q2zeDqqz20aQMRETqZl1Ii\nUK8e1KuH9OtHhdRU2LiR5t9/T6PPP2d8WhonwsNlYXo6byiltpZsbPI+EAM4geeUUvMAyWM9InIK\nmA1cA/wBPAQ8AdQB7lZKfWBdUc4G2gLpwL1KqS9K6NTKLF0tU06ISDTQl8jIW0lNbcUFF6Rz1VUR\nXHih2eIXwspytUx+KQXbt8Nnn5H26adk+P0c9nqZ7/OxRCn1a3G
 /vohEKaWOW+00a4FOwE9Y1TLZ\nrL9UKXVMRPxAF6XUJyLyHuDGTPTNgFeVUueLyFigqVLqdhFpBHwCxOuG5tzpknsIE5FwoAsez3DC\nw/9FmzbpdO6cmdAdwY5PKzoi0KQJNGlC+MiRhG/eTN3PPmPCqlVMiIyUfcnJzPP7eVMptbeYQrhb\nRHpZz2OA+Hys/wFIVUp9Yi3fhDnUg19ENgF1reWXAM8DKKV2iMjvQALmvQJaDnRyDzHW+CttcLmG\n4nAMIDZW0aNHBS67DCIidEIvBwwDWrSAFi1w3nUXbNhA/Kef8siXX/JoRIT8mJTEE8B/i+oGKhHp\nBFwOXKiUShWR1ZjVLyqP9WBWs2TyA6kASiklIjnlJ8lhuRZAJ/cQISIuDOMW3O4HcDor062bg6uv\ntlO7drBD04LIZoM2baBNG1z33AOrV3PJW2/R8s8/SQ0LkxcyMnhZKXXwHF+mInDMStyNgfbWcslj\nfeA22clc9xVwI/CFiCRg1sfvOMeYQ55O7mWciFQmLGw0Dsc9NGtm46abPLRsaV6na1oAhwO6dIEu\nXYjcuZPI997jgdWreTAiQj5NSuJp4H+F7G3zEXCniGzBTLrfWMtVDuu/Ddg3t9fLXDcLmC0iP2OW\n9AcrpdJz3k0D3aBaZolIPZzO+/H7B9OpEwwc6KJevWCHVSqVhwbVwkpMhE8+Qb31FkmnTnHU6+VJ\nv58FSqnkYMemnRud3MsYEWmFxzMJn68LPXoY9O0bTtWqwQ6rVNPJPW9KwcaN8OabJG3YgN/v5+n0\ndJ5XSh0Ldmxa4ejkXgZYjaRX4PFMxjBaMWBAON2724iICHZoZYJO7gWzZw8sWkTKmjUoEV5OTeXx\nIqiX10qYTu6lmNVboC8ez2QiImoxeLCHK64o1Jjm5ZlO7oXz11+weDHejz9GiTA3NZWpetTKskMn\n91JIRGwYxhDCw6cSG+villsiufBCs4+bVm
 A6uZ+bw4fhtddOJ/k5VpI/HOy4tNzp5F7KiMgluN3z\nqFUrhrvu8tCsWbBDKvN0ci8amUn+k0/w+Xw8mpHBc/ou0dJLFwVLCRGpIx7P+1So8DFjxzZizhyd\n2LVSpWpVGDsW55w5eJo3Z5LLxW4R6W61CWmljO7nHmQi4iY8/AEcjnu57rowBg4MK4vD6mrlR2ws\nPPMMnh9+wPPMMyxJTGSjiAxTSm0JdmzaGbrkHiRi6o/TuYcLLriXhQvd3HabTuxamdGuHbz+Op4h\nQ2jvcrHW7ZY5IlI52HFpJp3cg0BEWuDxrCUmZgGPPVaF//zHTY0awQ5L0wrMboc+fTCWLMF15ZXc\n7HDwu90uw0VE55Yg0/8BJUhEwsXpnIrL9R3DhrVm4UIPrVoFOyxNO2cVK5r18bNnE1G3Lk+63Xwt\nInXz3lMrLjq5lxARaYXLtYXzzrubV1910aOHYLMFOyxNK1JxcTBnDp4BA2jrcLDFZpOhusE1OHRy\nL2YBpfVvGDOmAU895dbDBWihzGaDm27CPns2npgYnnW7+VJEYoIdV3mjk3sxEpHmZ5XWu3QRPVqj\nVl7ExcH8+Xj69aO9w8E2m01u0aX4kqOTezEQERGb7Xaczu8YPVqX1rVyy26HW24h7MUXiahZkxfd\nbj7VPWpKhk7uRUxEPLhcS6lWbQazZ7vp2lWX1rVyr2FDeOUVPNdcQ0enk60i0jrYMYU6ndyLkIic\nh8u1hQ4durFggUePr65pZ4SFwciRhN9/P1WdTr6y2eSWYMcUynRyLyJisw3C6fyB0aNjeeghl74Z\nSdOyd9llyKxZuCtXZqbbLXOtidy1IqaT+zkSEUOcziepVGk2s2aZ1TCapuUqLg4WLMDdrBkD3W5+\nEJFawY4p1Ojkfg5ExI3bvYK6dYczf76buLhgh6RpZUZEBEyfjrt/f5o6HGwWkUuCHVMo0cm9kESk\nBi7XD7RrdzkvvOChY
 sVgh6RpZY5hwODBhD36KJVcLj4WkeuCHVOo0Mm9EESkOU7nz/Trl8C//+3S\nMyNp2rm58EJ47jncHg+v2+1yW7DjCQU6uReQiFyEw/E1995bhSFDwnQ3R00rGvHxMHs2rshInnc4\n5L5gx1PW6eReACJyBU7np0yeHMmVV+qsrmlFrE4dePll3JUqMcnplCf0Ha2Fp5N7PonINbhcK5g+\n3UO7dsEOR9NCVrVq8NJLuGvUYITTyQIR0SPsFYJO7vkgIt1wud7hqafctGwZ7HA0LeRFRcHMmXji\n4ujvcvGuiOhZ4wpIJ/c8iMg1uN1LefppF02bBjscTSs3PB6YMQN3fDxXuVws0FU0BaOTey5EpD1O\n59s8+aSbJk2CHY6mlTvh4fDYY7irV+c6h4PpwY6nLNGXOjkQkSY4HB8zaZJbl9i1c3X4MDz2GBw9\navbtvvZa6NMHTp2CyZPh4EGoXh0mTTJv7snqiSfgu++gUiWYP//M8jlz4PvvzZ4mDzxgLvv0Uzh5\n0jx+KHC74dln8QwbxqiwMPkjPV09F+yYygJdcs+GiMTgdP6Pe+6JpH37YIejhQCbDUaMgIULYeZM\nWL4c9u6FxYuhdWtYtMj8uXhx9vt37Wom+EBJSfDLL2ayt9th925IS4OPP4ZevYr9lEpUVBQ8/zxu\nt5vHDEOuD3Y8ZYFO7lmISDQu11cMGhRF5866jk8rEtHR5rC3AC4XxMaapfmvv4bOnc3lnTvDmjXZ\n79+8+T9L9IYBPp/53Os1E/zSpdC7NyE5g2ONGvDMM7icTl4RkSuDHU9pp5N7ABGx43Z/QJcuNRkw\nQFdZacXir7/g11+haVM4dsxM/GD+PH48/8dxuaBdOxg6FKpUMRsgt2+HDh2KJ+7SoEEDeOwxXE4n\ny0Tk/GDHU5rpBBbI6XyCBg1aMHKkI9ihaKEpJcWsVx81ykzOWft/FLQ/yA03mA+Ap56CIUPg//4P\n
 fvzRTIQ33VQ0cZcmLVvC/ffjefxxPhSRxkqpAnwllh+65G4RkT44nXcwZYonJK9ptaDz+czEftVV\ncIk1/mGlSmYjK5g/o6IKd+xffjF/xsTAl1+ar3PggPkIRZddBldfTZTbzZu6i2T2dHLndM+YV5k+\n3a1Hd9SKy+OPQ9260LfvmWUXX2w2gIL5M68qFaWyX/7KK3DrrZCRcWYbw4DU1HOPu7QaORJHtWpc\nYrdzd7BjKY3KfXIXkUiczo8ZM8ZFo0bBDkcLUZs2wapVsH69WUc+bBj88AMMGGBWoQwaBOvWwcCB\n5vZ//w0PPnhm/ylTzKqc/fvh+uvhww/PrFuzBho1MuvsIyLM6pjbboP0dKhfv2TPsySFh8O0aXjC\nwpgqInpMkCxE5VQUKCfE7X6NSy7py4QJzmDHohUPT88r/TOe9hmZvVW00PLVVzBtGoe8XpoopY4G\nO57SolyX3EWkKw7Hddx1l07smlZGdewIXbtS0e1mqa5/P6PcJncRqYTT+ToPP+zG4wl2OJqmnYPh\nw3FUrcpFhsGtwY6ltCi3yR23+2WuvNJDmzbBjkTTtHMUFgYTJuAJC+NZEakc7HhKg3KZ3EWkOy7X\ntYwYofuza1qISEiAzp0Jd7l4NtixlAblLrmLiBOncx4TJrhxuYIdjqZpRWjoUBw2G31FpNwPClXu\nkjthYffSooWH1q2DHYmmaUUsIgLuugun282i8j7BR7lK7iJSA8OYwJgxugVV00LUFVcgcXHUstkY\nFexYgqlcJXfc7ifp3t1O7drBjkTTtGIiAvfdh8du5z8iUiPY8QRLuUnuItIKkT4MHhwe7Fg0TSte\nsbHQpQt2p5OHgh1LsJSb5I7H8zi33OLIdpobTdNCzk034VCK20SkerBjCYZykdxFpDFKXcq115aL\n89U0zRzj/l//wlZe514tH63JbvdE+vWz666Pmha6UlJgxw7Ytg21YQP+HTuwp
 aQQbrcbN4rIOKXU\n38GOsSSFfHIXkRgcjuvo3Tvkz1XTyouMDPj9d9i2DX7+Gd+mTRhHjiAVK4b769RpqDp0uMw2dWpv\nLr/8cgYNGpTxzjvvjAIeDXbcJSn0E57TeT/XXCN6nHZNK5uUgj//NKcQ3LwZ/8aNsHcvhstlU9Wr\n1/S3adPB9tRT3ejVqxcRERH/qHqdMGGC67333hsrItOVUiE8wv3ZQjq5i4iL8PBb6d9fDzOgaWXE\n8eNmIt+61axe+fVXbCBUrlzJd955bY0RI66W/v37U6dOHQHynDatadOmtGjRQr7//vsewNvFfwal\nQ0gnd6AH8fE+qpfLxnJNK/W8XnOKwG3bYMMGfNu2YSQlIZUquX0NGjSTa6+93Na3b1/amAP8FXr+\ny5EjR0bu2LFjNDq5h4iIiFH07BkZ7DA0TTPnkN2z56x6cjl0CKNChTB/7dpx6qKLOtkmTuzNVVdd\nhd1uL9KJjK+77jruuOOOdiJSSyn1R1Eeu7QK2eQuIjVxOC44PROxpmklRik4ePDsevI9ezAcDkNV\nq1bD17r1xfapU6+hT58+VKhQodi7KHs8Hvr27etfsmTJYOCx4n690iBkkzuGcSMdO/p190dNK34n\nT5qJfNs21Pr1+H/5BZvfD5UrR2U0adLGdvvtV8n1119PvXr1hCDlnTvuuMO1bNmykVbDasjPLxq6\nyd3tHkbXrjqza1oRS02FX381q1c2bsS3dSvGyZNIpUouX1xcE7nqqsttc+b0o23bthiGUWpyzMUX\nX0x4eHgloDGwLdjxFLdS88YXJRGpSnh4LC1aBDsUTSvTfD7Yu9cslf/8M77Nm5E//8SIjLT7a9Wq\np9q3v9Q2fnxPunTpQnh4eJHWkxc1EaFHjx7GwoULu6CTe5l1FS1apGG36y6QmpZPSsGRI2aJfMsW\n/Bs3onbtwhYebqhq1ar6W7a8yDZxYlf69u1LdHR0mRzK
 o3v37s7ly5f3h9CfrSk0k7vH04sOHXQv\nGU3LRWKiebt+Zn/ynTuxpadDdHQFX+PG5xs333yV0b9/f+Lj4/PVn7wsuPzyy0lMTGwtIm6lVHKw\n4ylOIZfcRURwOK7igguCHYqmlRppafDbb2b1yoYNZGzdiu34cSQqyumrW7eRXHrpv2zPPdeHiy++\nGMMwQiKRZ6dixYo0a9bMu27dusuA/wY7nuIUcskdOA+3W0/IoZVbfj/s329Wr2zaZPYn/+MPDI/H\n7q9Zs45q166jffTo7nTr1g2n0xmyiTwnvXr1iti6devV6ORe5lxIixYS7CA0raT8/ffZ9eS//YbN\nbhdVtWoVX4sW7e333deZfv36Ua1atTJZT17U2rZta3g8ng7BjqO4hV5yd7kuolkzPUeqFpKSkmDn\nTrOefONG/Nu3Y0tNhejoSF9CQkujf/8rjP79+9O0adOg9Scv7c4//3ySkpKaiIiEcn/30PvPt9sv\nomHDYEehaecsPR127TLryTduxLdlC8bRo0jFig5/bGy86tDhMtvjj19Hp06dQrqevKjVqFGD8PBw\nw+v1xgD7gh2PiJxSShV5B5CQSu4iIoSF1ScuLtihaFqBKAUHDpjVK5s34/v5Z2T/fgy326Zq1Kjt\nb9v2EtvQod3o2bMnbrdbV6+coxYtWqSvWbOmFSWc3EXEppTyZVlcLFcPIZXcgVqEhSk9drtW2h09\nanZD3LLFvF3/t9+wGYZQpUq0r3nzdsbdd3eWfv36UatWrZDphliaXHTRRe5vv/32fGBlYfYXkYnA\njcAhYD/wI7AKeAlwAb8BtyqlTojIamAD0AFYIiLvA4sBD7Aiy3GfBLoAfmCqUuotEekEPAIcAZoB\nPyqlbs4rxlBL7g2oUSMN883VtFIhJcWsJ7emf/Nt3449ORmioz2+hg2bG717X2Hr168fLVu2hBJK\n5Dt37uT6669HRFBKsWvXLqZMmcK
 YMWNOb/PUU0/xxhtvICKkp6ezbds2jhw5QkZGBr179+bEiRP8\n5z//oUePHgD06tWLl156iRo1apTEKZyT+Ph4e2RkZNPC7CsibYHeQHPAAazDTO6LgJFKqTUi8igw\nCRhr7RamlGpn7b8cmKmUekNERgQctw/QQinVXESqAWtF5EtrdSugKfAX8LWIXKyU+ia3OEMtudeg\nShXdU0YLGp8Pdu8+M6zt5s3m9G8VKoT7Y2IaqIsv7mSfPLk3V1xxBTabLWgl8oSEBNavXw+A3+8n\nJiaG3r17n7XNuHHjGDduHAAffPABM2bMICoqihdeeIHhw4dz3XXX0bVrV3r06MHKlStp3bp1mUjs\nAHXq1MHz/GALAAAgAElEQVRms9Uv5O4dgOVKqXQgXURWABFARaXUGmubV4G3AvZZmmX/66znr8Hp\nCbw7AEsAlFKHROQL4ALgFPCDUupPABHZANQDylVyr07VquHBDkIrH7JM/+bbuBHJOv3bE09cS+/e\nvbOd/q20+Oyzz2jQoAF16tTJcZslS5YwYMAAAMLCwkhOTiYlJQW73Y7P5+O5557jgw8+KKmQz1lM\nTAwZGRk1i+hw+SlQJgU8V5ypZ89t38B1gdMD+shH7g6t5G4YNahaVY8noxWLEyfOTP+2fr05/ZtS\nQpUqUb6mTdsaI0aY9eSxsbFlqp586dKlpxN3dlJSUvjoo4+YOXMmAAMHDmTgwIHMmTOHxx9/nFmz\nZjFo0CCcTmdJhXzOqlatSlpaWlQhd/8aeElEpgNhQDfgZeCYiHRQSn0N3Ax8mcv+A4A3MOvtM30F\nDBORRUBloCMwDmhSmCBDK7m7XHWpVElXy2jnLHP6N+t2fd+2bRiJiUhUlNvXoMF5cs015vRvbdu2\nhTKUyLNKT09nxYoVTJ8+PcdtVq5cySWXXEJUlJkLK1SocLqUfvz4caZPn87777/PsGHDOH78OGPH\njqV9+/YlEn
 9hVa5cGa/X686h90qulFI/WlUxG4GDwM/ACWAw8LKIuIBdwJDMXbIc4m5gsYjcBywP\nOO77ItLeOq4fGG9Vz2RN7vnqXSOh1IdfKlZcxdixl9OpU7BD0UoRT88r/TOe9hk53f6Qdfq3zZuR\ngwcxIiPD/DEx5vRvPXv2pHPnztjtoVUeWrFiBbNmzeKjjz7KcZvrrruO/v37c8MNN/xj3b333kvP\nnj3ZuXMnDoeDvn370rt371yPV1o4HI70tLS0ykqpUwXdV0Q8SqkkK5H/DxiqlNpQ9FEWXmh9UkVs\nBK+NSisDcp/+rbr//PMvtk2e3JU+ffoQFRVVauvJi0pgXXp2Tpw4wZdffskbb7zxj3W//PILBw4c\n4NJLL2XDhg24XC6UUni93uIMuciIiCJ/9eXZmSMiTTF7yywsbYkdQi25a1p2lJJly2D/fny//ILN\n54MqVaIyGjdubbvtNnP6t7i4uDJVT14UkpOT+eyzz5gzZ87pZS+//DIiwrBhwwBYtmwZnTt3xpXN\ndJUTJ05k6tSpAAwYMIBevXoxffp0pkyZUjIncI4MwwAo1Be4UurGvLcKrtCqlomK+oJx4zrpSbG1\nQI7e3fziTTN8PrOOuXq1aio2NtbfsGFD4hMSjLi4OImNjaVu3brExMTgcOg2+fLA4/GkJicn11JK\nHQ12LMVBl9y1kJf67gpD7n/Qb/z4g+ECTh06JO5Dh2z+H3/kcxF1yO3OOGm3S1JGhpHs9UqEx0Ot\nWrX89erV8zdq3NioX7++UbduXTK/AKKiohDR7fZlnVUtE7JVb6FVcq9YcTXjx1+mS+5atj78kPAn\nniMCjwoj1X+KJNvN4BsDtsxbFdMwuz78BGwBfgH+cDp9x8LDSQIj0esVEaF6tWqqjlX6b9SokS0z\n8cfGxlKrVq2Qa3gNRVbJvbZS6u9gx1IcQiu5V6iwjJEje9K5c7BD0UqrAwdwDL/HV/OURwY
 xyFjG\n2/5f2WY0Bv84MK7DbCHLzV5gLWZ/tZ3A7zab/4jb7T9lGEZSerrhTU0lKiqKmNq1/XFxcapR48Zn\nVf3ExsYSERFR3Geq5SIjIwOHw+H3+/3hBe0KWVaEVnJ3OJ5jyJAxZNNlS9NO8/sxJkz0O75fb0xg\nAm1pywIW8AUrfV68tqHgHwlGYe9NT8QcbGQdsBX4VUQddLn8J8LCSPL7jcSUFHGEh1O9Rg1/vbp1\nVXxCAvHx8WeV/qtVq5bZ4KcVg4MHDxIXF5eYnJwcsnMth1ZyF7mPPn3+w6hRYcGORSsDVq7E8ews\nuqquvhEMt4URxg/8wCu87PudXbY24BsHtm4UbeOUH9iBWfXzM2bVz97wcN9Rp1MlihhJqalGekYG\nVSpXVjExMZkNv7a4uDgCG37L0h2hpc3mzZvp2LHj/mPHjuU85kIZF2oVg39x+HAq5i3Bmpa77t1J\nbdWKD0eMlY2JG/zTmGa0ox3taGc7xSnmMMd2Ox/7FenGSPDfAUZRzMxrYN5PftZth2lpNtLSTv96\nBFh78KBsOHjQtv2nn/hCRC11u32n7HZJ8vmMpJQUiYiIoGaNGv64uDh/QqNG/2j4rVSpkm74zcGh\nQ4ew2WxHgh1HcQq1kntnmjZdysyZekB3Lf8yMjAmPOx3rN1kTORhLuKis1Z/wRe8wXzfPvbbLrVK\n81cS3G4WmQ2/64DNwK/AfofDd8LpJFEpI8nrFQVmw2+dOv74hAQSEhJsmck/NjaW2rVrl9uG3zff\nfJNRo0Z9fOTIkS7BjqW4hFpyb0rlyt/xzjshW4+mFaMVK3DMmM216hrfcIbb7FkubI9whJd4Sf3E\nF8qBT+4GbgOpGpxo85TZ8LsJ2A7ssdn8h10u/ymb7UzDb8WK1DYbfv2NGje2xcXFSeAXQGRkaP4p\nTZ48WU2bNu0Zr9c7LtixFJdQS+5h2GxJrFwZRjZ31GlanvbtwzH8Hn
 9MUhTTmGZUo9o/NvHj50M+\n5G1e9f3FYds14LsHbJdQ+HvZgyEZs97/dMMvqIMul/94ePjpht/w8HBqVK/ur1u3rj8+Pl7iExLO\navitXr16mWz47d69+6kPPvhghFLq9WDHUlxCKrkDSGTkbzzxRH2aFGqUTE0zq2nun+B3rttiTGQi\n7cl5hMM/+IPZzFQ/8x2V8DMWGAwSCvWCfszG3szS/05gX1iY72+XSyWKGMlpaUZaejqVK1dWMbVr\n+xs0bKgSEhLsgQ2/derUKZUNv3Xq1Dm1f//+jkqpjcGOpbiEYnJ/izvu6Ee3bsEORSvr3n8fx/Nz\n6EF33zCG/aOaJpAfP+/xHst4w/c3x219wHc32NqWYLjBcBQz+a/HrPrZZd7x6zsZ0PDr8XgyG35V\nfEKCNGjQ4KyG3+jo6BJt+PV6vURGRmZkZGREKKVS896jbAq95C4ylu7dpzF2rB4gRDt3e/bgGDHW\nXye5MtOYalQl7xr23/iNl5nt38Y6ozbKPx6MGzBnQy5v0jFL/T9xdsPvcYeDRJCk1FRDKUW1qlVV\nndhYf3x8PPHx8Ua9evUksOE3LKzoOsBt2LCByy67bN/x48dji+ygpVAoJvfLqV//PebPD4UrY600\nyMjANv4Bv2PDNmMSk2hHu3ztlkYaS1jCx7zjO0Gi7SZrqIPzijncsmY/Z+743YF1x6/L5T9psxnJ\nGRlGSkoKFc80/J6+4zew9F+Qht958+Yxfvz4ZceOHeud99ZlVygmdw92+1GWLQvHUx7LSlqxeecd\nHDPn04ue/qEMNWwFGCF4C1uYwyz/r2w1GllDHfQh76EONLPhdx1m1c8WzIbfvwIafpNSUsQeFpbZ\n8Kvi4+PJ2vBbo0aN0w2/ffv2TXr33XfvVkrNC+JpFbuQS+4AUqHCD9x//wV06BDsUPKWmAhPPQW7\nd4MI3HcfHD4MCxfC3r0wezYkJGS/7w03gMcDh
 gF2u7ktwJw58P33EB8PDzxgLvv0Uzh5Evr0KZHT\nClm7d+MYNc5fN7kqU/mPUYUqBdrdi5eFLGQ1K3wppNhut4Y6aFBM4WaqB1TE7JsfBvyQZf1x4Fbg\nN8AFLACaYt5M1RtzDrn/AD2s7XsBLwE1ijnu/PBjVvcENvzuDQvzH3W5/IkiRlJampGalnb6jt8t\nW7fi9XobK6V+DWrgxazs9WHKj8TEd/n++7LRUPLii3DhhfDqqzB/PtStC3FxMGUKtGyZ+76GATNm\nwNy5ZxJ7UpI5+ef8+WbC370b0tLg44+hV6/iP59QFxdH6vtLjN9auNUt3MKP/Fig3Z04uZM7Wcp/\nbRN5go9ooJoBHcD3PpBRLEGbf+hfYJZ+syZ2gGnA+ZhVI68CY6zlS4Dh1j7PWstWAq0pHYkdzHNL\nwJxpejrwHvBjerqx6+RJ+6ETJ4yklBQO+Xy8euiQXLRunQ2v9xTm91hIC83krtRHfPNNerDDyFNS\nEmzaBF27mr/bbGZJPDYWYmLMOeFyoxT4/WcvMwxzUlAwZ3m222HpUujdGz0FYREJD8f33DO2pOGD\neJiJzGWu30fBBxa8gAuYxTzb26ykCj1sQwn3VwMeBv/+Ig5ZYZZwc7IVuNx63gj4HTiMWcpPBlIw\nxyrxAc8B9xVxfMUtGugM1AK/Dd5WoVhlkUVoJnfYRGKinz/+CHYcufvzT6hQAR5/HIYNM6tnUgtw\nwSEC48fDnXeCNRs9Lhe0awdDh0KVKuaXxfbtlIkqqrKmf39S58/kXdeHjGKU/28KNyx4BBHcwz28\nw8fGXTzCUmJUPHAV+D4m96ScX2Ie

<TRUNCATED>

[02/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TJSONProtocol.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TJSONProtocol.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TJSONProtocol.py
new file mode 100644
index 0000000..3c1e80e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TJSONProtocol.py
@@ -0,0 +1,552 @@
+#
+# 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.
+#
+
+import base64
+import json
+import math
+
+from thrift.protocol.TProtocol import TType, TProtocolBase, TProtocolException
+
+
+__all__ = ['TJSONProtocol',
+           'TJSONProtocolFactory',
+           'TSimpleJSONProtocol',
+           'TSimpleJSONProtocolFactory']
+
+VERSION = 1
+
+COMMA = ','
+COLON = ':'
+LBRACE = '{'
+RBRACE = '}'
+LBRACKET = '['
+RBRACKET = ']'
+QUOTE = '"'
+BACKSLASH = '\\'
+ZERO = '0'
+
+ESCSEQ = '\\u00'
+ESCAPE_CHAR = '"\\bfnrt'
+ESCAPE_CHAR_VALS = ['"', '\\', '\b', '\f', '\n', '\r', '\t']
+NUMERIC_CHAR = '+-.0123456789Ee'
+
+CTYPES = {TType.BOOL:       'tf',
+          TType.BYTE:       'i8',
+          TType.I16:        'i16',
+          TType.I32:        'i32',
+          TType.I64:        'i64',
+          TType.DOUBLE:     'dbl',
+          TType.STRING:     'str',
+          TType.STRUCT:     'rec',
+          TType.LIST:       'lst',
+          TType.SET:        'set',
+          TType.MAP:        'map'}
+
+JTYPES = {}
+for key in CTYPES.keys():
+  JTYPES[CTYPES[key]] = key
+
+
+class JSONBaseContext(object):
+
+  def __init__(self, protocol):
+    self.protocol = protocol
+    self.first = True
+
+  def doIO(self, function):
+    pass
+  
+  def write(self):
+    pass
+
+  def read(self):
+    pass
+
+  def escapeNum(self):
+    return False
+
+  def __str__(self):
+    return self.__class__.__name__
+
+
+class JSONListContext(JSONBaseContext):
+    
+  def doIO(self, function):
+    if self.first is True:
+      self.first = False
+    else:
+      function(COMMA)
+
+  def write(self):
+    self.doIO(self.protocol.trans.write)
+
+  def read(self):
+    self.doIO(self.protocol.readJSONSyntaxChar)
+
+
+class JSONPairContext(JSONBaseContext):
+  
+  def __init__(self, protocol):
+    super(JSONPairContext, self).__init__(protocol)
+    self.colon = True
+
+  def doIO(self, function):
+    if self.first:
+      self.first = False
+      self.colon = True
+    else:
+      function(COLON if self.colon else COMMA)
+      self.colon = not self.colon
+
+  def write(self):
+    self.doIO(self.protocol.trans.write)
+
+  def read(self):
+    self.doIO(self.protocol.readJSONSyntaxChar)
+
+  def escapeNum(self):
+    return self.colon
+
+  def __str__(self):
+    return '%s, colon=%s' % (self.__class__.__name__, self.colon)
+
+
+class LookaheadReader():
+  hasData = False
+  data = ''
+
+  def __init__(self, protocol):
+    self.protocol = protocol
+
+  def read(self):
+    if self.hasData is True:
+      self.hasData = False
+    else:
+      self.data = self.protocol.trans.read(1)
+    return self.data
+
+  def peek(self):
+    if self.hasData is False:
+      self.data = self.protocol.trans.read(1)
+    self.hasData = True
+    return self.data
+
+class TJSONProtocolBase(TProtocolBase):
+
+  def __init__(self, trans):
+    TProtocolBase.__init__(self, trans)
+    self.resetWriteContext()
+    self.resetReadContext()
+
+  def resetWriteContext(self):
+    self.context = JSONBaseContext(self)
+    self.contextStack = [self.context]
+
+  def resetReadContext(self):
+    self.resetWriteContext()
+    self.reader = LookaheadReader(self)
+
+  def pushContext(self, ctx):
+    self.contextStack.append(ctx)
+    self.context = ctx
+
+  def popContext(self):
+    self.contextStack.pop()
+    if self.contextStack:
+      self.context = self.contextStack[-1]
+    else:
+      self.context = JSONBaseContext(self)
+
+  def writeJSONString(self, string):
+    self.context.write()
+    self.trans.write(json.dumps(string))
+
+  def writeJSONNumber(self, number):
+    self.context.write()
+    jsNumber = str(number)
+    if self.context.escapeNum():
+      jsNumber = "%s%s%s" % (QUOTE, jsNumber,  QUOTE)
+    self.trans.write(jsNumber)
+
+  def writeJSONBase64(self, binary):
+    self.context.write()
+    self.trans.write(QUOTE)
+    self.trans.write(base64.b64encode(binary))
+    self.trans.write(QUOTE)
+
+  def writeJSONObjectStart(self):
+    self.context.write()
+    self.trans.write(LBRACE)
+    self.pushContext(JSONPairContext(self))
+
+  def writeJSONObjectEnd(self):
+    self.popContext()
+    self.trans.write(RBRACE)
+
+  def writeJSONArrayStart(self):
+    self.context.write()
+    self.trans.write(LBRACKET)
+    self.pushContext(JSONListContext(self))
+
+  def writeJSONArrayEnd(self):
+    self.popContext()
+    self.trans.write(RBRACKET)
+
+  def readJSONSyntaxChar(self, character):
+    current = self.reader.read()
+    if character != current:
+      raise TProtocolException(TProtocolException.INVALID_DATA,
+                               "Unexpected character: %s" % current)
+
+  def readJSONString(self, skipContext):
+    string = []
+    if skipContext is False:
+      self.context.read()
+    self.readJSONSyntaxChar(QUOTE)
+    while True:
+      character = self.reader.read()
+      if character == QUOTE:
+        break
+      if character == ESCSEQ[0]:
+        character = self.reader.read()
+        if character == ESCSEQ[1]:
+          self.readJSONSyntaxChar(ZERO)
+          self.readJSONSyntaxChar(ZERO)
+          character = json.JSONDecoder().decode('"\u00%s"' % self.trans.read(2))
+        else:
+          off = ESCAPE_CHAR.find(character)
+          if off == -1:
+            raise TProtocolException(TProtocolException.INVALID_DATA,
+                                     "Expected control char")
+          character = ESCAPE_CHAR_VALS[off]
+      string.append(character)
+    return ''.join(string)
+
+  def isJSONNumeric(self, character):
+    return (True if NUMERIC_CHAR.find(character) != - 1 else False)
+
+  def readJSONQuotes(self):
+    if (self.context.escapeNum()):
+      self.readJSONSyntaxChar(QUOTE)
+
+  def readJSONNumericChars(self):
+    numeric = []
+    while True:
+      character = self.reader.peek()
+      if self.isJSONNumeric(character) is False:
+        break
+      numeric.append(self.reader.read())
+    return ''.join(numeric)
+
+  def readJSONInteger(self):
+    self.context.read()
+    self.readJSONQuotes()
+    numeric = self.readJSONNumericChars()
+    self.readJSONQuotes()
+    try:
+      return int(numeric)
+    except ValueError:
+      raise TProtocolException(TProtocolException.INVALID_DATA,
+                               "Bad data encounted in numeric data")
+
+  def readJSONDouble(self):
+    self.context.read()
+    if self.reader.peek() == QUOTE:
+      string  = self.readJSONString(True)
+      try:
+        double = float(string)
+        if (self.context.escapeNum is False and
+            not math.isinf(double) and
+            not math.isnan(double)):
+          raise TProtocolException(TProtocolException.INVALID_DATA,
+                                   "Numeric data unexpectedly quoted")
+        return double
+      except ValueError:
+        raise TProtocolException(TProtocolException.INVALID_DATA,
+                                 "Bad data encounted in numeric data")
+    else:
+      if self.context.escapeNum() is True:
+        self.readJSONSyntaxChar(QUOTE)
+      try:
+        return float(self.readJSONNumericChars())
+      except ValueError:
+        raise TProtocolException(TProtocolException.INVALID_DATA,
+                                 "Bad data encounted in numeric data")
+
+  def readJSONBase64(self):
+    string = self.readJSONString(False)
+    return base64.b64decode(string)
+
+  def readJSONObjectStart(self):
+    self.context.read()
+    self.readJSONSyntaxChar(LBRACE)
+    self.pushContext(JSONPairContext(self))
+
+  def readJSONObjectEnd(self):
+    self.readJSONSyntaxChar(RBRACE)
+    self.popContext()
+
+  def readJSONArrayStart(self):
+    self.context.read()
+    self.readJSONSyntaxChar(LBRACKET)
+    self.pushContext(JSONListContext(self))
+
+  def readJSONArrayEnd(self):
+    self.readJSONSyntaxChar(RBRACKET)
+    self.popContext()
+
+
+class TJSONProtocol(TJSONProtocolBase):
+
+  def readMessageBegin(self):
+    self.resetReadContext()
+    self.readJSONArrayStart()
+    if self.readJSONInteger() != VERSION:
+      raise TProtocolException(TProtocolException.BAD_VERSION,
+                               "Message contained bad version.")
+    name = self.readJSONString(False)
+    typen = self.readJSONInteger()
+    seqid = self.readJSONInteger()
+    return (name, typen, seqid)
+
+  def readMessageEnd(self):
+    self.readJSONArrayEnd()
+
+  def readStructBegin(self):
+    self.readJSONObjectStart()
+
+  def readStructEnd(self):
+    self.readJSONObjectEnd()
+
+  def readFieldBegin(self):
+    character = self.reader.peek()
+    ttype = 0
+    id = 0
+    if character == RBRACE:
+      ttype = TType.STOP
+    else:
+      id = self.readJSONInteger()
+      self.readJSONObjectStart()
+      ttype = JTYPES[self.readJSONString(False)]
+    return (None, ttype, id)
+
+  def readFieldEnd(self):
+    self.readJSONObjectEnd()
+
+  def readMapBegin(self):
+    self.readJSONArrayStart()
+    keyType = JTYPES[self.readJSONString(False)]
+    valueType = JTYPES[self.readJSONString(False)]
+    size = self.readJSONInteger()
+    self.readJSONObjectStart()
+    return (keyType, valueType, size)
+
+  def readMapEnd(self):
+    self.readJSONObjectEnd()
+    self.readJSONArrayEnd()
+
+  def readCollectionBegin(self):
+    self.readJSONArrayStart()
+    elemType = JTYPES[self.readJSONString(False)]
+    size = self.readJSONInteger()
+    return (elemType, size)
+  readListBegin = readCollectionBegin
+  readSetBegin = readCollectionBegin
+
+  def readCollectionEnd(self):
+    self.readJSONArrayEnd()
+  readSetEnd = readCollectionEnd
+  readListEnd = readCollectionEnd
+
+  def readBool(self):
+    return (False if self.readJSONInteger() == 0 else True)
+
+  def readNumber(self):
+    return self.readJSONInteger()
+  readByte = readNumber
+  readI16 = readNumber
+  readI32 = readNumber
+  readI64 = readNumber
+
+  def readDouble(self):
+    return self.readJSONDouble()
+
+  def readString(self):
+    return self.readJSONString(False)
+
+  def readBinary(self):
+    return self.readJSONBase64()
+
+  def writeMessageBegin(self, name, request_type, seqid):
+    self.resetWriteContext()
+    self.writeJSONArrayStart()
+    self.writeJSONNumber(VERSION)
+    self.writeJSONString(name)
+    self.writeJSONNumber(request_type)
+    self.writeJSONNumber(seqid)
+
+  def writeMessageEnd(self):
+    self.writeJSONArrayEnd()
+
+  def writeStructBegin(self, name):
+    self.writeJSONObjectStart()
+
+  def writeStructEnd(self):
+    self.writeJSONObjectEnd()
+
+  def writeFieldBegin(self, name, ttype, id):
+    self.writeJSONNumber(id)
+    self.writeJSONObjectStart()
+    self.writeJSONString(CTYPES[ttype])
+
+  def writeFieldEnd(self):
+    self.writeJSONObjectEnd()
+
+  def writeFieldStop(self):
+    pass
+
+  def writeMapBegin(self, ktype, vtype, size):
+    self.writeJSONArrayStart()
+    self.writeJSONString(CTYPES[ktype])
+    self.writeJSONString(CTYPES[vtype])
+    self.writeJSONNumber(size)
+    self.writeJSONObjectStart()
+
+  def writeMapEnd(self):
+    self.writeJSONObjectEnd()
+    self.writeJSONArrayEnd()
+    
+  def writeListBegin(self, etype, size):
+    self.writeJSONArrayStart()
+    self.writeJSONString(CTYPES[etype])
+    self.writeJSONNumber(size)
+    
+  def writeListEnd(self):
+    self.writeJSONArrayEnd()
+
+  def writeSetBegin(self, etype, size):
+    self.writeJSONArrayStart()
+    self.writeJSONString(CTYPES[etype])
+    self.writeJSONNumber(size)
+    
+  def writeSetEnd(self):
+    self.writeJSONArrayEnd()
+
+  def writeBool(self, boolean):
+    self.writeJSONNumber(1 if boolean is True else 0)
+
+  def writeInteger(self, integer):
+    self.writeJSONNumber(integer)
+  writeByte = writeInteger
+  writeI16 = writeInteger
+  writeI32 = writeInteger
+  writeI64 = writeInteger
+
+  def writeDouble(self, dbl):
+    self.writeJSONNumber(dbl)
+
+  def writeString(self, string):
+    self.writeJSONString(string)
+    
+  def writeBinary(self, binary):
+    self.writeJSONBase64(binary)
+
+
+class TJSONProtocolFactory:
+
+  def getProtocol(self, trans):
+    return TJSONProtocol(trans)
+
+
+class TSimpleJSONProtocol(TJSONProtocolBase):
+    """Simple, readable, write-only JSON protocol.
+    
+    Useful for interacting with scripting languages.
+    """
+
+    def readMessageBegin(self):
+        raise NotImplementedError()
+    
+    def readMessageEnd(self):
+        raise NotImplementedError()
+    
+    def readStructBegin(self):
+        raise NotImplementedError()
+    
+    def readStructEnd(self):
+        raise NotImplementedError()
+    
+    def writeMessageBegin(self, name, request_type, seqid):
+        self.resetWriteContext()
+    
+    def writeMessageEnd(self):
+        pass
+    
+    def writeStructBegin(self, name):
+        self.writeJSONObjectStart()
+    
+    def writeStructEnd(self):
+        self.writeJSONObjectEnd()
+      
+    def writeFieldBegin(self, name, ttype, fid):
+        self.writeJSONString(name)
+    
+    def writeFieldEnd(self):
+        pass
+    
+    def writeMapBegin(self, ktype, vtype, size):
+        self.writeJSONObjectStart()
+    
+    def writeMapEnd(self):
+        self.writeJSONObjectEnd()
+    
+    def _writeCollectionBegin(self, etype, size):
+        self.writeJSONArrayStart()
+    
+    def _writeCollectionEnd(self):
+        self.writeJSONArrayEnd()
+    writeListBegin = _writeCollectionBegin
+    writeListEnd = _writeCollectionEnd
+    writeSetBegin = _writeCollectionBegin
+    writeSetEnd = _writeCollectionEnd
+
+    def writeInteger(self, integer):
+        self.writeJSONNumber(integer)
+    writeByte = writeInteger
+    writeI16 = writeInteger
+    writeI32 = writeInteger
+    writeI64 = writeInteger
+    
+    def writeBool(self, boolean):
+        self.writeJSONNumber(1 if boolean is True else 0)
+
+    def writeDouble(self, dbl):
+        self.writeJSONNumber(dbl)
+    
+    def writeString(self, string):
+        self.writeJSONString(string)
+      
+    def writeBinary(self, binary):
+        self.writeJSONBase64(binary)
+
+
+class TSimpleJSONProtocolFactory(object):
+
+    def getProtocol(self, trans):
+        return TSimpleJSONProtocol(trans)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.py
new file mode 100644
index 0000000..dc2b095
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.py
@@ -0,0 +1,406 @@
+#
+# 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.
+#
+
+from thrift.Thrift import *
+
+
+class TProtocolException(TException):
+  """Custom Protocol Exception class"""
+
+  UNKNOWN = 0
+  INVALID_DATA = 1
+  NEGATIVE_SIZE = 2
+  SIZE_LIMIT = 3
+  BAD_VERSION = 4
+
+  def __init__(self, type=UNKNOWN, message=None):
+    TException.__init__(self, message)
+    self.type = type
+
+
+class TProtocolBase:
+  """Base class for Thrift protocol driver."""
+
+  def __init__(self, trans):
+    self.trans = trans
+
+  def writeMessageBegin(self, name, ttype, seqid):
+    pass
+
+  def writeMessageEnd(self):
+    pass
+
+  def writeStructBegin(self, name):
+    pass
+
+  def writeStructEnd(self):
+    pass
+
+  def writeFieldBegin(self, name, ttype, fid):
+    pass
+
+  def writeFieldEnd(self):
+    pass
+
+  def writeFieldStop(self):
+    pass
+
+  def writeMapBegin(self, ktype, vtype, size):
+    pass
+
+  def writeMapEnd(self):
+    pass
+
+  def writeListBegin(self, etype, size):
+    pass
+
+  def writeListEnd(self):
+    pass
+
+  def writeSetBegin(self, etype, size):
+    pass
+
+  def writeSetEnd(self):
+    pass
+
+  def writeBool(self, bool_val):
+    pass
+
+  def writeByte(self, byte):
+    pass
+
+  def writeI16(self, i16):
+    pass
+
+  def writeI32(self, i32):
+    pass
+
+  def writeI64(self, i64):
+    pass
+
+  def writeDouble(self, dub):
+    pass
+
+  def writeString(self, str_val):
+    pass
+
+  def readMessageBegin(self):
+    pass
+
+  def readMessageEnd(self):
+    pass
+
+  def readStructBegin(self):
+    pass
+
+  def readStructEnd(self):
+    pass
+
+  def readFieldBegin(self):
+    pass
+
+  def readFieldEnd(self):
+    pass
+
+  def readMapBegin(self):
+    pass
+
+  def readMapEnd(self):
+    pass
+
+  def readListBegin(self):
+    pass
+
+  def readListEnd(self):
+    pass
+
+  def readSetBegin(self):
+    pass
+
+  def readSetEnd(self):
+    pass
+
+  def readBool(self):
+    pass
+
+  def readByte(self):
+    pass
+
+  def readI16(self):
+    pass
+
+  def readI32(self):
+    pass
+
+  def readI64(self):
+    pass
+
+  def readDouble(self):
+    pass
+
+  def readString(self):
+    pass
+
+  def skip(self, ttype):
+    if ttype == TType.STOP:
+      return
+    elif ttype == TType.BOOL:
+      self.readBool()
+    elif ttype == TType.BYTE:
+      self.readByte()
+    elif ttype == TType.I16:
+      self.readI16()
+    elif ttype == TType.I32:
+      self.readI32()
+    elif ttype == TType.I64:
+      self.readI64()
+    elif ttype == TType.DOUBLE:
+      self.readDouble()
+    elif ttype == TType.STRING:
+      self.readString()
+    elif ttype == TType.STRUCT:
+      name = self.readStructBegin()
+      while True:
+        (name, ttype, id) = self.readFieldBegin()
+        if ttype == TType.STOP:
+          break
+        self.skip(ttype)
+        self.readFieldEnd()
+      self.readStructEnd()
+    elif ttype == TType.MAP:
+      (ktype, vtype, size) = self.readMapBegin()
+      for i in xrange(size):
+        self.skip(ktype)
+        self.skip(vtype)
+      self.readMapEnd()
+    elif ttype == TType.SET:
+      (etype, size) = self.readSetBegin()
+      for i in xrange(size):
+        self.skip(etype)
+      self.readSetEnd()
+    elif ttype == TType.LIST:
+      (etype, size) = self.readListBegin()
+      for i in xrange(size):
+        self.skip(etype)
+      self.readListEnd()
+
+  # tuple of: ( 'reader method' name, is_container bool, 'writer_method' name )
+  _TTYPE_HANDLERS = (
+       (None, None, False),  # 0 TType.STOP
+       (None, None, False),  # 1 TType.VOID # TODO: handle void?
+       ('readBool', 'writeBool', False),  # 2 TType.BOOL
+       ('readByte',  'writeByte', False),  # 3 TType.BYTE and I08
+       ('readDouble', 'writeDouble', False),  # 4 TType.DOUBLE
+       (None, None, False),  # 5 undefined
+       ('readI16', 'writeI16', False),  # 6 TType.I16
+       (None, None, False),  # 7 undefined
+       ('readI32', 'writeI32', False),  # 8 TType.I32
+       (None, None, False),  # 9 undefined
+       ('readI64', 'writeI64', False),  # 10 TType.I64
+       ('readString', 'writeString', False),  # 11 TType.STRING and UTF7
+       ('readContainerStruct', 'writeContainerStruct', True),  # 12 *.STRUCT
+       ('readContainerMap', 'writeContainerMap', True),  # 13 TType.MAP
+       ('readContainerSet', 'writeContainerSet', True),  # 14 TType.SET
+       ('readContainerList', 'writeContainerList', True),  # 15 TType.LIST
+       (None, None, False),  # 16 TType.UTF8 # TODO: handle utf8 types?
+       (None, None, False)  # 17 TType.UTF16 # TODO: handle utf16 types?
+      )
+
+  def readFieldByTType(self, ttype, spec):
+    try:
+      (r_handler, w_handler, is_container) = self._TTYPE_HANDLERS[ttype]
+    except IndexError:
+      raise TProtocolException(type=TProtocolException.INVALID_DATA,
+                               message='Invalid field type %d' % (ttype))
+    if r_handler is None:
+      raise TProtocolException(type=TProtocolException.INVALID_DATA,
+                               message='Invalid field type %d' % (ttype))
+    reader = getattr(self, r_handler)
+    if not is_container:
+      return reader()
+    return reader(spec)
+
+  def readContainerList(self, spec):
+    results = []
+    ttype, tspec = spec[0], spec[1]
+    r_handler = self._TTYPE_HANDLERS[ttype][0]
+    reader = getattr(self, r_handler)
+    (list_type, list_len) = self.readListBegin()
+    if tspec is None:
+      # list values are simple types
+      for idx in xrange(list_len):
+        results.append(reader())
+    else:
+      # this is like an inlined readFieldByTType
+      container_reader = self._TTYPE_HANDLERS[list_type][0]
+      val_reader = getattr(self, container_reader)
+      for idx in xrange(list_len):
+        val = val_reader(tspec)
+        results.append(val)
+    self.readListEnd()
+    return results
+
+  def readContainerSet(self, spec):
+    results = set()
+    ttype, tspec = spec[0], spec[1]
+    r_handler = self._TTYPE_HANDLERS[ttype][0]
+    reader = getattr(self, r_handler)
+    (set_type, set_len) = self.readSetBegin()
+    if tspec is None:
+      # set members are simple types
+      for idx in xrange(set_len):
+        results.add(reader())
+    else:
+      container_reader = self._TTYPE_HANDLERS[set_type][0]
+      val_reader = getattr(self, container_reader)
+      for idx in xrange(set_len):
+        results.add(val_reader(tspec))
+    self.readSetEnd()
+    return results
+
+  def readContainerStruct(self, spec):
+    (obj_class, obj_spec) = spec
+    obj = obj_class()
+    obj.read(self)
+    return obj
+
+  def readContainerMap(self, spec):
+    results = dict()
+    key_ttype, key_spec = spec[0], spec[1]
+    val_ttype, val_spec = spec[2], spec[3]
+    (map_ktype, map_vtype, map_len) = self.readMapBegin()
+    # TODO: compare types we just decoded with thrift_spec and
+    # abort/skip if types disagree
+    key_reader = getattr(self, self._TTYPE_HANDLERS[key_ttype][0])
+    val_reader = getattr(self, self._TTYPE_HANDLERS[val_ttype][0])
+    # list values are simple types
+    for idx in xrange(map_len):
+      if key_spec is None:
+        k_val = key_reader()
+      else:
+        k_val = self.readFieldByTType(key_ttype, key_spec)
+      if val_spec is None:
+        v_val = val_reader()
+      else:
+        v_val = self.readFieldByTType(val_ttype, val_spec)
+      # this raises a TypeError with unhashable keys types
+      # i.e. this fails: d=dict(); d[[0,1]] = 2
+      results[k_val] = v_val
+    self.readMapEnd()
+    return results
+
+  def readStruct(self, obj, thrift_spec):
+    self.readStructBegin()
+    while True:
+      (fname, ftype, fid) = self.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      try:
+        field = thrift_spec[fid]
+      except IndexError:
+        self.skip(ftype)
+      else:
+        if field is not None and ftype == field[1]:
+          fname = field[2]
+          fspec = field[3]
+          val = self.readFieldByTType(ftype, fspec)
+          setattr(obj, fname, val)
+        else:
+          self.skip(ftype)
+      self.readFieldEnd()
+    self.readStructEnd()
+
+  def writeContainerStruct(self, val, spec):
+    val.write(self)
+
+  def writeContainerList(self, val, spec):
+    self.writeListBegin(spec[0], len(val))
+    r_handler, w_handler, is_container = self._TTYPE_HANDLERS[spec[0]]
+    e_writer = getattr(self, w_handler)
+    if not is_container:
+      for elem in val:
+        e_writer(elem)
+    else:
+      for elem in val:
+        e_writer(elem, spec[1])
+    self.writeListEnd()
+
+  def writeContainerSet(self, val, spec):
+    self.writeSetBegin(spec[0], len(val))
+    r_handler, w_handler, is_container = self._TTYPE_HANDLERS[spec[0]]
+    e_writer = getattr(self, w_handler)
+    if not is_container:
+      for elem in val:
+        e_writer(elem)
+    else:
+      for elem in val:
+        e_writer(elem, spec[1])
+    self.writeSetEnd()
+
+  def writeContainerMap(self, val, spec):
+    k_type = spec[0]
+    v_type = spec[2]
+    ignore, ktype_name, k_is_container = self._TTYPE_HANDLERS[k_type]
+    ignore, vtype_name, v_is_container = self._TTYPE_HANDLERS[v_type]
+    k_writer = getattr(self, ktype_name)
+    v_writer = getattr(self, vtype_name)
+    self.writeMapBegin(k_type, v_type, len(val))
+    for m_key, m_val in val.iteritems():
+      if not k_is_container:
+        k_writer(m_key)
+      else:
+        k_writer(m_key, spec[1])
+      if not v_is_container:
+        v_writer(m_val)
+      else:
+        v_writer(m_val, spec[3])
+    self.writeMapEnd()
+
+  def writeStruct(self, obj, thrift_spec):
+    self.writeStructBegin(obj.__class__.__name__)
+    for field in thrift_spec:
+      if field is None:
+        continue
+      fname = field[2]
+      val = getattr(obj, fname)
+      if val is None:
+        # skip writing out unset fields
+        continue
+      fid = field[0]
+      ftype = field[1]
+      fspec = field[3]
+      # get the writer method for this value
+      self.writeFieldBegin(fname, ftype, fid)
+      self.writeFieldByTType(ftype, val, fspec)
+      self.writeFieldEnd()
+    self.writeFieldStop()
+    self.writeStructEnd()
+
+  def writeFieldByTType(self, ttype, val, spec):
+    r_handler, w_handler, is_container = self._TTYPE_HANDLERS[ttype]
+    writer = getattr(self, w_handler)
+    if is_container:
+      writer(val, spec)
+    else:
+      writer(val)
+
+
+class TProtocolFactory:
+  def getProtocol(self, trans):
+    pass

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.pyc
new file mode 100644
index 0000000..4e8a9e4
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TProtocol.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.py
new file mode 100644
index 0000000..7eefb45
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.py
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+__all__ = ['fastbinary', 'TBase', 'TBinaryProtocol', 'TCompactProtocol', 'TJSONProtocol', 'TProtocol']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.pyc
new file mode 100644
index 0000000..caaf521
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/fastbinary.c
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/fastbinary.c b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/fastbinary.c
new file mode 100644
index 0000000..2ce5660
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/fastbinary.c
@@ -0,0 +1,1219 @@
+/*
+ * 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.
+ */
+
+#include <Python.h>
+#include "cStringIO.h"
+#include <stdint.h>
+#ifndef _WIN32
+# include <stdbool.h>
+# include <netinet/in.h>
+#else
+# include <WinSock2.h>
+# pragma comment (lib, "ws2_32.lib")
+# define BIG_ENDIAN (4321)
+# define LITTLE_ENDIAN (1234)
+# define BYTE_ORDER LITTLE_ENDIAN
+# if defined(_MSC_VER) && _MSC_VER < 1600
+   typedef int _Bool;
+#  define bool _Bool
+#  define false 0 
+#  define true 1
+# endif
+# define inline __inline
+#endif
+
+/* Fix endianness issues on Solaris */
+#if defined (__SVR4) && defined (__sun)
+ #if defined(__i386) && !defined(__i386__)
+  #define __i386__
+ #endif
+
+ #ifndef BIG_ENDIAN
+  #define BIG_ENDIAN (4321)
+ #endif
+ #ifndef LITTLE_ENDIAN
+  #define LITTLE_ENDIAN (1234)
+ #endif
+
+ /* I386 is LE, even on Solaris */
+ #if !defined(BYTE_ORDER) && defined(__i386__)
+  #define BYTE_ORDER LITTLE_ENDIAN
+ #endif
+#endif
+
+// TODO(dreiss): defval appears to be unused.  Look into removing it.
+// TODO(dreiss): Make parse_spec_args recursive, and cache the output
+//               permanently in the object.  (Malloc and orphan.)
+// TODO(dreiss): Why do we need cStringIO for reading, why not just char*?
+//               Can cStringIO let us work with a BufferedTransport?
+// TODO(dreiss): Don't ignore the rv from cwrite (maybe).
+
+/* ====== BEGIN UTILITIES ====== */
+
+#define INIT_OUTBUF_SIZE 128
+
+// Stolen out of TProtocol.h.
+// It would be a huge pain to have both get this from one place.
+typedef enum TType {
+  T_STOP       = 0,
+  T_VOID       = 1,
+  T_BOOL       = 2,
+  T_BYTE       = 3,
+  T_I08        = 3,
+  T_I16        = 6,
+  T_I32        = 8,
+  T_U64        = 9,
+  T_I64        = 10,
+  T_DOUBLE     = 4,
+  T_STRING     = 11,
+  T_UTF7       = 11,
+  T_STRUCT     = 12,
+  T_MAP        = 13,
+  T_SET        = 14,
+  T_LIST       = 15,
+  T_UTF8       = 16,
+  T_UTF16      = 17
+} TType;
+
+#ifndef __BYTE_ORDER
+# if defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)
+#  define __BYTE_ORDER BYTE_ORDER
+#  define __LITTLE_ENDIAN LITTLE_ENDIAN
+#  define __BIG_ENDIAN BIG_ENDIAN
+# else
+#  error "Cannot determine endianness"
+# endif
+#endif
+
+// Same comment as the enum.  Sorry.
+#if __BYTE_ORDER == __BIG_ENDIAN
+# define ntohll(n) (n)
+# define htonll(n) (n)
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+# if defined(__GNUC__) && defined(__GLIBC__)
+#  include <byteswap.h>
+#  define ntohll(n) bswap_64(n)
+#  define htonll(n) bswap_64(n)
+# else /* GNUC & GLIBC */
+#  define ntohll(n) ( (((unsigned long long)ntohl(n)) << 32) + ntohl(n >> 32) )
+#  define htonll(n) ( (((unsigned long long)htonl(n)) << 32) + htonl(n >> 32) )
+# endif /* GNUC & GLIBC */
+#else /* __BYTE_ORDER */
+# error "Can't define htonll or ntohll!"
+#endif
+
+// Doing a benchmark shows that interning actually makes a difference, amazingly.
+#define INTERN_STRING(value) _intern_ ## value
+
+#define INT_CONV_ERROR_OCCURRED(v) ( ((v) == -1) && PyErr_Occurred() )
+#define CHECK_RANGE(v, min, max) ( ((v) <= (max)) && ((v) >= (min)) )
+
+// Py_ssize_t was not defined before Python 2.5
+#if (PY_VERSION_HEX < 0x02050000)
+typedef int Py_ssize_t;
+#endif
+
+/**
+ * A cache of the spec_args for a set or list,
+ * so we don't have to keep calling PyTuple_GET_ITEM.
+ */
+typedef struct {
+  TType element_type;
+  PyObject* typeargs;
+} SetListTypeArgs;
+
+/**
+ * A cache of the spec_args for a map,
+ * so we don't have to keep calling PyTuple_GET_ITEM.
+ */
+typedef struct {
+  TType ktag;
+  TType vtag;
+  PyObject* ktypeargs;
+  PyObject* vtypeargs;
+} MapTypeArgs;
+
+/**
+ * A cache of the spec_args for a struct,
+ * so we don't have to keep calling PyTuple_GET_ITEM.
+ */
+typedef struct {
+  PyObject* klass;
+  PyObject* spec;
+} StructTypeArgs;
+
+/**
+ * A cache of the item spec from a struct specification,
+ * so we don't have to keep calling PyTuple_GET_ITEM.
+ */
+typedef struct {
+  int tag;
+  TType type;
+  PyObject* attrname;
+  PyObject* typeargs;
+  PyObject* defval;
+} StructItemSpec;
+
+/**
+ * A cache of the two key attributes of a CReadableTransport,
+ * so we don't have to keep calling PyObject_GetAttr.
+ */
+typedef struct {
+  PyObject* stringiobuf;
+  PyObject* refill_callable;
+} DecodeBuffer;
+
+/** Pointer to interned string to speed up attribute lookup. */
+static PyObject* INTERN_STRING(cstringio_buf);
+/** Pointer to interned string to speed up attribute lookup. */
+static PyObject* INTERN_STRING(cstringio_refill);
+
+static inline bool
+check_ssize_t_32(Py_ssize_t len) {
+  // error from getting the int
+  if (INT_CONV_ERROR_OCCURRED(len)) {
+    return false;
+  }
+  if (!CHECK_RANGE(len, 0, INT32_MAX)) {
+    PyErr_SetString(PyExc_OverflowError, "string size out of range");
+    return false;
+  }
+  return true;
+}
+
+static inline bool
+parse_pyint(PyObject* o, int32_t* ret, int32_t min, int32_t max) {
+  long val = PyInt_AsLong(o);
+
+  if (INT_CONV_ERROR_OCCURRED(val)) {
+    return false;
+  }
+  if (!CHECK_RANGE(val, min, max)) {
+    PyErr_SetString(PyExc_OverflowError, "int out of range");
+    return false;
+  }
+
+  *ret = (int32_t) val;
+  return true;
+}
+
+
+/* --- FUNCTIONS TO PARSE STRUCT SPECIFICATOINS --- */
+
+static bool
+parse_set_list_args(SetListTypeArgs* dest, PyObject* typeargs) {
+  if (PyTuple_Size(typeargs) != 2) {
+    PyErr_SetString(PyExc_TypeError, "expecting tuple of size 2 for list/set type args");
+    return false;
+  }
+
+  dest->element_type = PyInt_AsLong(PyTuple_GET_ITEM(typeargs, 0));
+  if (INT_CONV_ERROR_OCCURRED(dest->element_type)) {
+    return false;
+  }
+
+  dest->typeargs = PyTuple_GET_ITEM(typeargs, 1);
+
+  return true;
+}
+
+static bool
+parse_map_args(MapTypeArgs* dest, PyObject* typeargs) {
+  if (PyTuple_Size(typeargs) != 4) {
+    PyErr_SetString(PyExc_TypeError, "expecting 4 arguments for typeargs to map");
+    return false;
+  }
+
+  dest->ktag = PyInt_AsLong(PyTuple_GET_ITEM(typeargs, 0));
+  if (INT_CONV_ERROR_OCCURRED(dest->ktag)) {
+    return false;
+  }
+
+  dest->vtag = PyInt_AsLong(PyTuple_GET_ITEM(typeargs, 2));
+  if (INT_CONV_ERROR_OCCURRED(dest->vtag)) {
+    return false;
+  }
+
+  dest->ktypeargs = PyTuple_GET_ITEM(typeargs, 1);
+  dest->vtypeargs = PyTuple_GET_ITEM(typeargs, 3);
+
+  return true;
+}
+
+static bool
+parse_struct_args(StructTypeArgs* dest, PyObject* typeargs) {
+  if (PyTuple_Size(typeargs) != 2) {
+    PyErr_SetString(PyExc_TypeError, "expecting tuple of size 2 for struct args");
+    return false;
+  }
+
+  dest->klass = PyTuple_GET_ITEM(typeargs, 0);
+  dest->spec = PyTuple_GET_ITEM(typeargs, 1);
+
+  return true;
+}
+
+static int
+parse_struct_item_spec(StructItemSpec* dest, PyObject* spec_tuple) {
+
+  // i'd like to use ParseArgs here, but it seems to be a bottleneck.
+  if (PyTuple_Size(spec_tuple) != 5) {
+    PyErr_SetString(PyExc_TypeError, "expecting 5 arguments for spec tuple");
+    return false;
+  }
+
+  dest->tag = PyInt_AsLong(PyTuple_GET_ITEM(spec_tuple, 0));
+  if (INT_CONV_ERROR_OCCURRED(dest->tag)) {
+    return false;
+  }
+
+  dest->type = PyInt_AsLong(PyTuple_GET_ITEM(spec_tuple, 1));
+  if (INT_CONV_ERROR_OCCURRED(dest->type)) {
+    return false;
+  }
+
+  dest->attrname = PyTuple_GET_ITEM(spec_tuple, 2);
+  dest->typeargs = PyTuple_GET_ITEM(spec_tuple, 3);
+  dest->defval = PyTuple_GET_ITEM(spec_tuple, 4);
+  return true;
+}
+
+/* ====== END UTILITIES ====== */
+
+
+/* ====== BEGIN WRITING FUNCTIONS ====== */
+
+/* --- LOW-LEVEL WRITING FUNCTIONS --- */
+
+static void writeByte(PyObject* outbuf, int8_t val) {
+  int8_t net = val;
+  PycStringIO->cwrite(outbuf, (char*)&net, sizeof(int8_t));
+}
+
+static void writeI16(PyObject* outbuf, int16_t val) {
+  int16_t net = (int16_t)htons(val);
+  PycStringIO->cwrite(outbuf, (char*)&net, sizeof(int16_t));
+}
+
+static void writeI32(PyObject* outbuf, int32_t val) {
+  int32_t net = (int32_t)htonl(val);
+  PycStringIO->cwrite(outbuf, (char*)&net, sizeof(int32_t));
+}
+
+static void writeI64(PyObject* outbuf, int64_t val) {
+  int64_t net = (int64_t)htonll(val);
+  PycStringIO->cwrite(outbuf, (char*)&net, sizeof(int64_t));
+}
+
+static void writeDouble(PyObject* outbuf, double dub) {
+  // Unfortunately, bitwise_cast doesn't work in C.  Bad C!
+  union {
+    double f;
+    int64_t t;
+  } transfer;
+  transfer.f = dub;
+  writeI64(outbuf, transfer.t);
+}
+
+
+/* --- MAIN RECURSIVE OUTPUT FUCNTION -- */
+
+static int
+output_val(PyObject* output, PyObject* value, TType type, PyObject* typeargs) {
+  /*
+   * Refcounting Strategy:
+   *
+   * We assume that elements of the thrift_spec tuple are not going to be
+   * mutated, so we don't ref count those at all. Other than that, we try to
+   * keep a reference to all the user-created objects while we work with them.
+   * output_val assumes that a reference is already held. The *caller* is
+   * responsible for handling references
+   */
+
+  switch (type) {
+
+  case T_BOOL: {
+    int v = PyObject_IsTrue(value);
+    if (v == -1) {
+      return false;
+    }
+
+    writeByte(output, (int8_t) v);
+    break;
+  }
+  case T_I08: {
+    int32_t val;
+
+    if (!parse_pyint(value, &val, INT8_MIN, INT8_MAX)) {
+      return false;
+    }
+
+    writeByte(output, (int8_t) val);
+    break;
+  }
+  case T_I16: {
+    int32_t val;
+
+    if (!parse_pyint(value, &val, INT16_MIN, INT16_MAX)) {
+      return false;
+    }
+
+    writeI16(output, (int16_t) val);
+    break;
+  }
+  case T_I32: {
+    int32_t val;
+
+    if (!parse_pyint(value, &val, INT32_MIN, INT32_MAX)) {
+      return false;
+    }
+
+    writeI32(output, val);
+    break;
+  }
+  case T_I64: {
+    int64_t nval = PyLong_AsLongLong(value);
+
+    if (INT_CONV_ERROR_OCCURRED(nval)) {
+      return false;
+    }
+
+    if (!CHECK_RANGE(nval, INT64_MIN, INT64_MAX)) {
+      PyErr_SetString(PyExc_OverflowError, "int out of range");
+      return false;
+    }
+
+    writeI64(output, nval);
+    break;
+  }
+
+  case T_DOUBLE: {
+    double nval = PyFloat_AsDouble(value);
+    if (nval == -1.0 && PyErr_Occurred()) {
+      return false;
+    }
+
+    writeDouble(output, nval);
+    break;
+  }
+
+  case T_STRING: {
+    Py_ssize_t len = PyString_Size(value);
+
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    writeI32(output, (int32_t) len);
+    PycStringIO->cwrite(output, PyString_AsString(value), (int32_t) len);
+    break;
+  }
+
+  case T_LIST:
+  case T_SET: {
+    Py_ssize_t len;
+    SetListTypeArgs parsedargs;
+    PyObject *item;
+    PyObject *iterator;
+
+    if (!parse_set_list_args(&parsedargs, typeargs)) {
+      return false;
+    }
+
+    len = PyObject_Length(value);
+
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    writeByte(output, parsedargs.element_type);
+    writeI32(output, (int32_t) len);
+
+    iterator =  PyObject_GetIter(value);
+    if (iterator == NULL) {
+      return false;
+    }
+
+    while ((item = PyIter_Next(iterator))) {
+      if (!output_val(output, item, parsedargs.element_type, parsedargs.typeargs)) {
+        Py_DECREF(item);
+        Py_DECREF(iterator);
+        return false;
+      }
+      Py_DECREF(item);
+    }
+
+    Py_DECREF(iterator);
+
+    if (PyErr_Occurred()) {
+      return false;
+    }
+
+    break;
+  }
+
+  case T_MAP: {
+    PyObject *k, *v;
+    Py_ssize_t pos = 0;
+    Py_ssize_t len;
+
+    MapTypeArgs parsedargs;
+
+    len = PyDict_Size(value);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    if (!parse_map_args(&parsedargs, typeargs)) {
+      return false;
+    }
+
+    writeByte(output, parsedargs.ktag);
+    writeByte(output, parsedargs.vtag);
+    writeI32(output, len);
+
+    // TODO(bmaurer): should support any mapping, not just dicts
+    while (PyDict_Next(value, &pos, &k, &v)) {
+      // TODO(dreiss): Think hard about whether these INCREFs actually
+      //               turn any unsafe scenarios into safe scenarios.
+      Py_INCREF(k);
+      Py_INCREF(v);
+
+      if (!output_val(output, k, parsedargs.ktag, parsedargs.ktypeargs)
+          || !output_val(output, v, parsedargs.vtag, parsedargs.vtypeargs)) {
+        Py_DECREF(k);
+        Py_DECREF(v);
+        return false;
+      }
+      Py_DECREF(k);
+      Py_DECREF(v);
+    }
+    break;
+  }
+
+  // TODO(dreiss): Consider breaking this out as a function
+  //               the way we did for decode_struct.
+  case T_STRUCT: {
+    StructTypeArgs parsedargs;
+    Py_ssize_t nspec;
+    Py_ssize_t i;
+
+    if (!parse_struct_args(&parsedargs, typeargs)) {
+      return false;
+    }
+
+    nspec = PyTuple_Size(parsedargs.spec);
+
+    if (nspec == -1) {
+      return false;
+    }
+
+    for (i = 0; i < nspec; i++) {
+      StructItemSpec parsedspec;
+      PyObject* spec_tuple;
+      PyObject* instval = NULL;
+
+      spec_tuple = PyTuple_GET_ITEM(parsedargs.spec, i);
+      if (spec_tuple == Py_None) {
+        continue;
+      }
+
+      if (!parse_struct_item_spec (&parsedspec, spec_tuple)) {
+        return false;
+      }
+
+      instval = PyObject_GetAttr(value, parsedspec.attrname);
+
+      if (!instval) {
+        return false;
+      }
+
+      if (instval == Py_None) {
+        Py_DECREF(instval);
+        continue;
+      }
+
+      writeByte(output, (int8_t) parsedspec.type);
+      writeI16(output, parsedspec.tag);
+
+      if (!output_val(output, instval, parsedspec.type, parsedspec.typeargs)) {
+        Py_DECREF(instval);
+        return false;
+      }
+
+      Py_DECREF(instval);
+    }
+
+    writeByte(output, (int8_t)T_STOP);
+    break;
+  }
+
+  case T_STOP:
+  case T_VOID:
+  case T_UTF16:
+  case T_UTF8:
+  case T_U64:
+  default:
+    PyErr_SetString(PyExc_TypeError, "Unexpected TType");
+    return false;
+
+  }
+
+  return true;
+}
+
+
+/* --- TOP-LEVEL WRAPPER FOR OUTPUT -- */
+
+static PyObject *
+encode_binary(PyObject *self, PyObject *args) {
+  PyObject* enc_obj;
+  PyObject* type_args;
+  PyObject* buf;
+  PyObject* ret = NULL;
+
+  if (!PyArg_ParseTuple(args, "OO", &enc_obj, &type_args)) {
+    return NULL;
+  }
+
+  buf = PycStringIO->NewOutput(INIT_OUTBUF_SIZE);
+  if (output_val(buf, enc_obj, T_STRUCT, type_args)) {
+    ret = PycStringIO->cgetvalue(buf);
+  }
+
+  Py_DECREF(buf);
+  return ret;
+}
+
+/* ====== END WRITING FUNCTIONS ====== */
+
+
+/* ====== BEGIN READING FUNCTIONS ====== */
+
+/* --- LOW-LEVEL READING FUNCTIONS --- */
+
+static void
+free_decodebuf(DecodeBuffer* d) {
+  Py_XDECREF(d->stringiobuf);
+  Py_XDECREF(d->refill_callable);
+}
+
+static bool
+decode_buffer_from_obj(DecodeBuffer* dest, PyObject* obj) {
+  dest->stringiobuf = PyObject_GetAttr(obj, INTERN_STRING(cstringio_buf));
+  if (!dest->stringiobuf) {
+    return false;
+  }
+
+  if (!PycStringIO_InputCheck(dest->stringiobuf)) {
+    free_decodebuf(dest);
+    PyErr_SetString(PyExc_TypeError, "expecting stringio input");
+    return false;
+  }
+
+  dest->refill_callable = PyObject_GetAttr(obj, INTERN_STRING(cstringio_refill));
+
+  if(!dest->refill_callable) {
+    free_decodebuf(dest);
+    return false;
+  }
+
+  if (!PyCallable_Check(dest->refill_callable)) {
+    free_decodebuf(dest);
+    PyErr_SetString(PyExc_TypeError, "expecting callable");
+    return false;
+  }
+
+  return true;
+}
+
+static bool readBytes(DecodeBuffer* input, char** output, int len) {
+  int read;
+
+  // TODO(dreiss): Don't fear the malloc.  Think about taking a copy of
+  //               the partial read instead of forcing the transport
+  //               to prepend it to its buffer.
+
+  read = PycStringIO->cread(input->stringiobuf, output, len);
+
+  if (read == len) {
+    return true;
+  } else if (read == -1) {
+    return false;
+  } else {
+    PyObject* newiobuf;
+
+    // using building functions as this is a rare codepath
+    newiobuf = PyObject_CallFunction(
+        input->refill_callable, "s#i", *output, read, len, NULL);
+    if (newiobuf == NULL) {
+      return false;
+    }
+
+    // must do this *AFTER* the call so that we don't deref the io buffer
+    Py_CLEAR(input->stringiobuf);
+    input->stringiobuf = newiobuf;
+
+    read = PycStringIO->cread(input->stringiobuf, output, len);
+
+    if (read == len) {
+      return true;
+    } else if (read == -1) {
+      return false;
+    } else {
+      // TODO(dreiss): This could be a valid code path for big binary blobs.
+      PyErr_SetString(PyExc_TypeError,
+          "refill claimed to have refilled the buffer, but didn't!!");
+      return false;
+    }
+  }
+}
+
+static int8_t readByte(DecodeBuffer* input) {
+  char* buf;
+  if (!readBytes(input, &buf, sizeof(int8_t))) {
+    return -1;
+  }
+
+  return *(int8_t*) buf;
+}
+
+static int16_t readI16(DecodeBuffer* input) {
+  char* buf;
+  if (!readBytes(input, &buf, sizeof(int16_t))) {
+    return -1;
+  }
+
+  return (int16_t) ntohs(*(int16_t*) buf);
+}
+
+static int32_t readI32(DecodeBuffer* input) {
+  char* buf;
+  if (!readBytes(input, &buf, sizeof(int32_t))) {
+    return -1;
+  }
+  return (int32_t) ntohl(*(int32_t*) buf);
+}
+
+
+static int64_t readI64(DecodeBuffer* input) {
+  char* buf;
+  if (!readBytes(input, &buf, sizeof(int64_t))) {
+    return -1;
+  }
+
+  return (int64_t) ntohll(*(int64_t*) buf);
+}
+
+static double readDouble(DecodeBuffer* input) {
+  union {
+    int64_t f;
+    double t;
+  } transfer;
+
+  transfer.f = readI64(input);
+  if (transfer.f == -1) {
+    return -1;
+  }
+  return transfer.t;
+}
+
+static bool
+checkTypeByte(DecodeBuffer* input, TType expected) {
+  TType got = readByte(input);
+  if (INT_CONV_ERROR_OCCURRED(got)) {
+    return false;
+  }
+
+  if (expected != got) {
+    PyErr_SetString(PyExc_TypeError, "got wrong ttype while reading field");
+    return false;
+  }
+  return true;
+}
+
+static bool
+skip(DecodeBuffer* input, TType type) {
+#define SKIPBYTES(n) \
+  do { \
+    if (!readBytes(input, &dummy_buf, (n))) { \
+      return false; \
+    } \
+  } while(0)
+
+  char* dummy_buf;
+
+  switch (type) {
+
+  case T_BOOL:
+  case T_I08: SKIPBYTES(1); break;
+  case T_I16: SKIPBYTES(2); break;
+  case T_I32: SKIPBYTES(4); break;
+  case T_I64:
+  case T_DOUBLE: SKIPBYTES(8); break;
+
+  case T_STRING: {
+    // TODO(dreiss): Find out if these check_ssize_t32s are really necessary.
+    int len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+    SKIPBYTES(len);
+    break;
+  }
+
+  case T_LIST:
+  case T_SET: {
+    TType etype;
+    int len, i;
+
+    etype = readByte(input);
+    if (etype == -1) {
+      return false;
+    }
+
+    len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    for (i = 0; i < len; i++) {
+      if (!skip(input, etype)) {
+        return false;
+      }
+    }
+    break;
+  }
+
+  case T_MAP: {
+    TType ktype, vtype;
+    int len, i;
+
+    ktype = readByte(input);
+    if (ktype == -1) {
+      return false;
+    }
+
+    vtype = readByte(input);
+    if (vtype == -1) {
+      return false;
+    }
+
+    len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    for (i = 0; i < len; i++) {
+      if (!(skip(input, ktype) && skip(input, vtype))) {
+        return false;
+      }
+    }
+    break;
+  }
+
+  case T_STRUCT: {
+    while (true) {
+      TType type;
+
+      type = readByte(input);
+      if (type == -1) {
+        return false;
+      }
+
+      if (type == T_STOP)
+        break;
+
+      SKIPBYTES(2); // tag
+      if (!skip(input, type)) {
+        return false;
+      }
+    }
+    break;
+  }
+
+  case T_STOP:
+  case T_VOID:
+  case T_UTF16:
+  case T_UTF8:
+  case T_U64:
+  default:
+    PyErr_SetString(PyExc_TypeError, "Unexpected TType");
+    return false;
+
+  }
+
+  return true;
+
+#undef SKIPBYTES
+}
+
+
+/* --- HELPER FUNCTION FOR DECODE_VAL --- */
+
+static PyObject*
+decode_val(DecodeBuffer* input, TType type, PyObject* typeargs);
+
+static bool
+decode_struct(DecodeBuffer* input, PyObject* output, PyObject* spec_seq) {
+  int spec_seq_len = PyTuple_Size(spec_seq);
+  if (spec_seq_len == -1) {
+    return false;
+  }
+
+  while (true) {
+    TType type;
+    int16_t tag;
+    PyObject* item_spec;
+    PyObject* fieldval = NULL;
+    StructItemSpec parsedspec;
+
+    type = readByte(input);
+    if (type == -1) {
+      return false;
+    }
+    if (type == T_STOP) {
+      break;
+    }
+    tag = readI16(input);
+    if (INT_CONV_ERROR_OCCURRED(tag)) {
+      return false;
+    }
+    if (tag >= 0 && tag < spec_seq_len) {
+      item_spec = PyTuple_GET_ITEM(spec_seq, tag);
+    } else {
+      item_spec = Py_None;
+    }
+
+    if (item_spec == Py_None) {
+      if (!skip(input, type)) {
+        return false;
+      } else {
+        continue;
+      }
+    }
+
+    if (!parse_struct_item_spec(&parsedspec, item_spec)) {
+      return false;
+    }
+    if (parsedspec.type != type) {
+      if (!skip(input, type)) {
+        PyErr_SetString(PyExc_TypeError, "struct field had wrong type while reading and can't be skipped");
+        return false;
+      } else {
+        continue;
+      }
+    }
+
+    fieldval = decode_val(input, parsedspec.type, parsedspec.typeargs);
+    if (fieldval == NULL) {
+      return false;
+    }
+
+    if (PyObject_SetAttr(output, parsedspec.attrname, fieldval) == -1) {
+      Py_DECREF(fieldval);
+      return false;
+    }
+    Py_DECREF(fieldval);
+  }
+  return true;
+}
+
+
+/* --- MAIN RECURSIVE INPUT FUCNTION --- */
+
+// Returns a new reference.
+static PyObject*
+decode_val(DecodeBuffer* input, TType type, PyObject* typeargs) {
+  switch (type) {
+
+  case T_BOOL: {
+    int8_t v = readByte(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+
+    switch (v) {
+    case 0: Py_RETURN_FALSE;
+    case 1: Py_RETURN_TRUE;
+    // Don't laugh.  This is a potentially serious issue.
+    default: PyErr_SetString(PyExc_TypeError, "boolean out of range"); return NULL;
+    }
+    break;
+  }
+  case T_I08: {
+    int8_t v = readByte(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+
+    return PyInt_FromLong(v);
+  }
+  case T_I16: {
+    int16_t v = readI16(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+    return PyInt_FromLong(v);
+  }
+  case T_I32: {
+    int32_t v = readI32(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+    return PyInt_FromLong(v);
+  }
+
+  case T_I64: {
+    int64_t v = readI64(input);
+    if (INT_CONV_ERROR_OCCURRED(v)) {
+      return NULL;
+    }
+    // TODO(dreiss): Find out if we can take this fastpath always when
+    //               sizeof(long) == sizeof(long long).
+    if (CHECK_RANGE(v, LONG_MIN, LONG_MAX)) {
+      return PyInt_FromLong((long) v);
+    }
+
+    return PyLong_FromLongLong(v);
+  }
+
+  case T_DOUBLE: {
+    double v = readDouble(input);
+    if (v == -1.0 && PyErr_Occurred()) {
+      return false;
+    }
+    return PyFloat_FromDouble(v);
+  }
+
+  case T_STRING: {
+    Py_ssize_t len = readI32(input);
+    char* buf;
+    if (!readBytes(input, &buf, len)) {
+      return NULL;
+    }
+
+    return PyString_FromStringAndSize(buf, len);
+  }
+
+  case T_LIST:
+  case T_SET: {
+    SetListTypeArgs parsedargs;
+    int32_t len;
+    PyObject* ret = NULL;
+    int i;
+
+    if (!parse_set_list_args(&parsedargs, typeargs)) {
+      return NULL;
+    }
+
+    if (!checkTypeByte(input, parsedargs.element_type)) {
+      return NULL;
+    }
+
+    len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return NULL;
+    }
+
+    ret = PyList_New(len);
+    if (!ret) {
+      return NULL;
+    }
+
+    for (i = 0; i < len; i++) {
+      PyObject* item = decode_val(input, parsedargs.element_type, parsedargs.typeargs);
+      if (!item) {
+        Py_DECREF(ret);
+        return NULL;
+      }
+      PyList_SET_ITEM(ret, i, item);
+    }
+
+    // TODO(dreiss): Consider biting the bullet and making two separate cases
+    //               for list and set, avoiding this post facto conversion.
+    if (type == T_SET) {
+      PyObject* setret;
+#if (PY_VERSION_HEX < 0x02050000)
+      // hack needed for older versions
+      setret = PyObject_CallFunctionObjArgs((PyObject*)&PySet_Type, ret, NULL);
+#else
+      // official version
+      setret = PySet_New(ret);
+#endif
+      Py_DECREF(ret);
+      return setret;
+    }
+    return ret;
+  }
+
+  case T_MAP: {
+    int32_t len;
+    int i;
+    MapTypeArgs parsedargs;
+    PyObject* ret = NULL;
+
+    if (!parse_map_args(&parsedargs, typeargs)) {
+      return NULL;
+    }
+
+    if (!checkTypeByte(input, parsedargs.ktag)) {
+      return NULL;
+    }
+    if (!checkTypeByte(input, parsedargs.vtag)) {
+      return NULL;
+    }
+
+    len = readI32(input);
+    if (!check_ssize_t_32(len)) {
+      return false;
+    }
+
+    ret = PyDict_New();
+    if (!ret) {
+      goto error;
+    }
+
+    for (i = 0; i < len; i++) {
+      PyObject* k = NULL;
+      PyObject* v = NULL;
+      k = decode_val(input, parsedargs.ktag, parsedargs.ktypeargs);
+      if (k == NULL) {
+        goto loop_error;
+      }
+      v = decode_val(input, parsedargs.vtag, parsedargs.vtypeargs);
+      if (v == NULL) {
+        goto loop_error;
+      }
+      if (PyDict_SetItem(ret, k, v) == -1) {
+        goto loop_error;
+      }
+
+      Py_DECREF(k);
+      Py_DECREF(v);
+      continue;
+
+      // Yuck!  Destructors, anyone?
+      loop_error:
+      Py_XDECREF(k);
+      Py_XDECREF(v);
+      goto error;
+    }
+
+    return ret;
+
+    error:
+    Py_XDECREF(ret);
+    return NULL;
+  }
+
+  case T_STRUCT: {
+    StructTypeArgs parsedargs;
+	PyObject* ret;
+    if (!parse_struct_args(&parsedargs, typeargs)) {
+      return NULL;
+    }
+
+    ret = PyObject_CallObject(parsedargs.klass, NULL);
+    if (!ret) {
+      return NULL;
+    }
+
+    if (!decode_struct(input, ret, parsedargs.spec)) {
+      Py_DECREF(ret);
+      return NULL;
+    }
+
+    return ret;
+  }
+
+  case T_STOP:
+  case T_VOID:
+  case T_UTF16:
+  case T_UTF8:
+  case T_U64:
+  default:
+    PyErr_SetString(PyExc_TypeError, "Unexpected TType");
+    return NULL;
+  }
+}
+
+
+/* --- TOP-LEVEL WRAPPER FOR INPUT -- */
+
+static PyObject*
+decode_binary(PyObject *self, PyObject *args) {
+  PyObject* output_obj = NULL;
+  PyObject* transport = NULL;
+  PyObject* typeargs = NULL;
+  StructTypeArgs parsedargs;
+  DecodeBuffer input = {0, 0};
+  
+  if (!PyArg_ParseTuple(args, "OOO", &output_obj, &transport, &typeargs)) {
+    return NULL;
+  }
+
+  if (!parse_struct_args(&parsedargs, typeargs)) {
+    return NULL;
+  }
+
+  if (!decode_buffer_from_obj(&input, transport)) {
+    return NULL;
+  }
+
+  if (!decode_struct(&input, output_obj, parsedargs.spec)) {
+    free_decodebuf(&input);
+    return NULL;
+  }
+
+  free_decodebuf(&input);
+
+  Py_RETURN_NONE;
+}
+
+/* ====== END READING FUNCTIONS ====== */
+
+
+/* -- PYTHON MODULE SETUP STUFF --- */
+
+static PyMethodDef ThriftFastBinaryMethods[] = {
+
+  {"encode_binary",  encode_binary, METH_VARARGS, ""},
+  {"decode_binary",  decode_binary, METH_VARARGS, ""},
+
+  {NULL, NULL, 0, NULL}        /* Sentinel */
+};
+
+PyMODINIT_FUNC
+initfastbinary(void) {
+#define INIT_INTERN_STRING(value) \
+  do { \
+    INTERN_STRING(value) = PyString_InternFromString(#value); \
+    if(!INTERN_STRING(value)) return; \
+  } while(0)
+
+  INIT_INTERN_STRING(cstringio_buf);
+  INIT_INTERN_STRING(cstringio_refill);
+#undef INIT_INTERN_STRING
+
+  PycString_IMPORT;
+  if (PycStringIO == NULL) return;
+
+  (void) Py_InitModule("thrift.protocol.fastbinary", ThriftFastBinaryMethods);
+}

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/THttpServer.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/THttpServer.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/THttpServer.py
new file mode 100644
index 0000000..be54bab
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/THttpServer.py
@@ -0,0 +1,87 @@
+#
+# 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.
+#
+
+import BaseHTTPServer
+
+from thrift.server import TServer
+from thrift.transport import TTransport
+
+
+class ResponseException(Exception):
+  """Allows handlers to override the HTTP response
+
+  Normally, THttpServer always sends a 200 response.  If a handler wants
+  to override this behavior (e.g., to simulate a misconfigured or
+  overloaded web server during testing), it can raise a ResponseException.
+  The function passed to the constructor will be called with the
+  RequestHandler as its only argument.
+  """
+  def __init__(self, handler):
+    self.handler = handler
+
+
+class THttpServer(TServer.TServer):
+  """A simple HTTP-based Thrift server
+
+  This class is not very performant, but it is useful (for example) for
+  acting as a mock version of an Apache-based PHP Thrift endpoint.
+  """
+  def __init__(self,
+               processor,
+               server_address,
+               inputProtocolFactory,
+               outputProtocolFactory=None,
+               server_class=BaseHTTPServer.HTTPServer):
+    """Set up protocol factories and HTTP server.
+
+    See BaseHTTPServer for server_address.
+    See TServer for protocol factories.
+    """
+    if outputProtocolFactory is None:
+      outputProtocolFactory = inputProtocolFactory
+
+    TServer.TServer.__init__(self, processor, None, None, None,
+        inputProtocolFactory, outputProtocolFactory)
+
+    thttpserver = self
+
+    class RequestHander(BaseHTTPServer.BaseHTTPRequestHandler):
+      def do_POST(self):
+        # Don't care about the request path.
+        itrans = TTransport.TFileObjectTransport(self.rfile)
+        otrans = TTransport.TFileObjectTransport(self.wfile)
+        itrans = TTransport.TBufferedTransport(
+          itrans, int(self.headers['Content-Length']))
+        otrans = TTransport.TMemoryBuffer()
+        iprot = thttpserver.inputProtocolFactory.getProtocol(itrans)
+        oprot = thttpserver.outputProtocolFactory.getProtocol(otrans)
+        try:
+          thttpserver.processor.process(iprot, oprot)
+        except ResponseException, exn:
+          exn.handler(self)
+        else:
+          self.send_response(200)
+          self.send_header("content-type", "application/x-thrift")
+          self.end_headers()
+          self.wfile.write(otrans.getvalue())
+
+    self.httpd = server_class(server_address, RequestHander)
+
+  def serve(self):
+    self.httpd.serve_forever()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TNonblockingServer.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TNonblockingServer.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TNonblockingServer.py
new file mode 100644
index 0000000..fa478d0
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TNonblockingServer.py
@@ -0,0 +1,346 @@
+#
+# 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.
+#
+"""Implementation of non-blocking server.
+
+The main idea of the server is to receive and send requests
+only from the main thread.
+
+The thread poool should be sized for concurrent tasks, not
+maximum connections
+"""
+import threading
+import socket
+import Queue
+import select
+import struct
+import logging
+
+from thrift.transport import TTransport
+from thrift.protocol.TBinaryProtocol import TBinaryProtocolFactory
+
+__all__ = ['TNonblockingServer']
+
+
+class Worker(threading.Thread):
+    """Worker is a small helper to process incoming connection."""
+
+    def __init__(self, queue):
+        threading.Thread.__init__(self)
+        self.queue = queue
+
+    def run(self):
+        """Process queries from task queue, stop if processor is None."""
+        while True:
+            try:
+                processor, iprot, oprot, otrans, callback = self.queue.get()
+                if processor is None:
+                    break
+                processor.process(iprot, oprot)
+                callback(True, otrans.getvalue())
+            except Exception:
+                logging.exception("Exception while processing request")
+                callback(False, '')
+
+WAIT_LEN = 0
+WAIT_MESSAGE = 1
+WAIT_PROCESS = 2
+SEND_ANSWER = 3
+CLOSED = 4
+
+
+def locked(func):
+    """Decorator which locks self.lock."""
+    def nested(self, *args, **kwargs):
+        self.lock.acquire()
+        try:
+            return func(self, *args, **kwargs)
+        finally:
+            self.lock.release()
+    return nested
+
+
+def socket_exception(func):
+    """Decorator close object on socket.error."""
+    def read(self, *args, **kwargs):
+        try:
+            return func(self, *args, **kwargs)
+        except socket.error:
+            self.close()
+    return read
+
+
+class Connection:
+    """Basic class is represented connection.
+
+    It can be in state:
+        WAIT_LEN --- connection is reading request len.
+        WAIT_MESSAGE --- connection is reading request.
+        WAIT_PROCESS --- connection has just read whole request and
+                         waits for call ready routine.
+        SEND_ANSWER --- connection is sending answer string (including length
+                        of answer).
+        CLOSED --- socket was closed and connection should be deleted.
+    """
+    def __init__(self, new_socket, wake_up):
+        self.socket = new_socket
+        self.socket.setblocking(False)
+        self.status = WAIT_LEN
+        self.len = 0
+        self.message = ''
+        self.lock = threading.Lock()
+        self.wake_up = wake_up
+
+    def _read_len(self):
+        """Reads length of request.
+
+        It's a safer alternative to self.socket.recv(4)
+        """
+        read = self.socket.recv(4 - len(self.message))
+        if len(read) == 0:
+            # if we read 0 bytes and self.message is empty, then
+            # the client closed the connection
+            if len(self.message) != 0:
+                logging.error("can't read frame size from socket")
+            self.close()
+            return
+        self.message += read
+        if len(self.message) == 4:
+            self.len, = struct.unpack('!i', self.message)
+            if self.len < 0:
+                logging.error("negative frame size, it seems client "
+                              "doesn't use FramedTransport")
+                self.close()
+            elif self.len == 0:
+                logging.error("empty frame, it's really strange")
+                self.close()
+            else:
+                self.message = ''
+                self.status = WAIT_MESSAGE
+
+    @socket_exception
+    def read(self):
+        """Reads data from stream and switch state."""
+        assert self.status in (WAIT_LEN, WAIT_MESSAGE)
+        if self.status == WAIT_LEN:
+            self._read_len()
+            # go back to the main loop here for simplicity instead of
+            # falling through, even though there is a good chance that
+            # the message is already available
+        elif self.status == WAIT_MESSAGE:
+            read = self.socket.recv(self.len - len(self.message))
+            if len(read) == 0:
+                logging.error("can't read frame from socket (get %d of "
+                              "%d bytes)" % (len(self.message), self.len))
+                self.close()
+                return
+            self.message += read
+            if len(self.message) == self.len:
+                self.status = WAIT_PROCESS
+
+    @socket_exception
+    def write(self):
+        """Writes data from socket and switch state."""
+        assert self.status == SEND_ANSWER
+        sent = self.socket.send(self.message)
+        if sent == len(self.message):
+            self.status = WAIT_LEN
+            self.message = ''
+            self.len = 0
+        else:
+            self.message = self.message[sent:]
+
+    @locked
+    def ready(self, all_ok, message):
+        """Callback function for switching state and waking up main thread.
+
+        This function is the only function witch can be called asynchronous.
+
+        The ready can switch Connection to three states:
+            WAIT_LEN if request was oneway.
+            SEND_ANSWER if request was processed in normal way.
+            CLOSED if request throws unexpected exception.
+
+        The one wakes up main thread.
+        """
+        assert self.status == WAIT_PROCESS
+        if not all_ok:
+            self.close()
+            self.wake_up()
+            return
+        self.len = ''
+        if len(message) == 0:
+            # it was a oneway request, do not write answer
+            self.message = ''
+            self.status = WAIT_LEN
+        else:
+            self.message = struct.pack('!i', len(message)) + message
+            self.status = SEND_ANSWER
+        self.wake_up()
+
+    @locked
+    def is_writeable(self):
+        """Return True if connection should be added to write list of select"""
+        return self.status == SEND_ANSWER
+
+    # it's not necessary, but...
+    @locked
+    def is_readable(self):
+        """Return True if connection should be added to read list of select"""
+        return self.status in (WAIT_LEN, WAIT_MESSAGE)
+
+    @locked
+    def is_closed(self):
+        """Returns True if connection is closed."""
+        return self.status == CLOSED
+
+    def fileno(self):
+        """Returns the file descriptor of the associated socket."""
+        return self.socket.fileno()
+
+    def close(self):
+        """Closes connection"""
+        self.status = CLOSED
+        self.socket.close()
+
+
+class TNonblockingServer:
+    """Non-blocking server."""
+
+    def __init__(self,
+                 processor,
+                 lsocket,
+                 inputProtocolFactory=None,
+                 outputProtocolFactory=None,
+                 threads=10):
+        self.processor = processor
+        self.socket = lsocket
+        self.in_protocol = inputProtocolFactory or TBinaryProtocolFactory()
+        self.out_protocol = outputProtocolFactory or self.in_protocol
+        self.threads = int(threads)
+        self.clients = {}
+        self.tasks = Queue.Queue()
+        self._read, self._write = socket.socketpair()
+        self.prepared = False
+        self._stop = False
+
+    def setNumThreads(self, num):
+        """Set the number of worker threads that should be created."""
+        # implement ThreadPool interface
+        assert not self.prepared, "Can't change number of threads after start"
+        self.threads = num
+
+    def prepare(self):
+        """Prepares server for serve requests."""
+        if self.prepared:
+            return
+        self.socket.listen()
+        for _ in xrange(self.threads):
+            thread = Worker(self.tasks)
+            thread.setDaemon(True)
+            thread.start()
+        self.prepared = True
+
+    def wake_up(self):
+        """Wake up main thread.
+
+        The server usualy waits in select call in we should terminate one.
+        The simplest way is using socketpair.
+
+        Select always wait to read from the first socket of socketpair.
+
+        In this case, we can just write anything to the second socket from
+        socketpair.
+        """
+        self._write.send('1')
+
+    def stop(self):
+        """Stop the server.
+
+        This method causes the serve() method to return.  stop() may be invoked
+        from within your handler, or from another thread.
+
+        After stop() is called, serve() will return but the server will still
+        be listening on the socket.  serve() may then be called again to resume
+        processing requests.  Alternatively, close() may be called after
+        serve() returns to close the server socket and shutdown all worker
+        threads.
+        """
+        self._stop = True
+        self.wake_up()
+
+    def _select(self):
+        """Does select on open connections."""
+        readable = [self.socket.handle.fileno(), self._read.fileno()]
+        writable = []
+        for i, connection in self.clients.items():
+            if connection.is_readable():
+                readable.append(connection.fileno())
+            if connection.is_writeable():
+                writable.append(connection.fileno())
+            if connection.is_closed():
+                del self.clients[i]
+        return select.select(readable, writable, readable)
+
+    def handle(self):
+        """Handle requests.
+
+        WARNING! You must call prepare() BEFORE calling handle()
+        """
+        assert self.prepared, "You have to call prepare before handle"
+        rset, wset, xset = self._select()
+        for readable in rset:
+            if readable == self._read.fileno():
+                # don't care i just need to clean readable flag
+                self._read.recv(1024)
+            elif readable == self.socket.handle.fileno():
+                client = self.socket.accept().handle
+                self.clients[client.fileno()] = Connection(client,
+                                                           self.wake_up)
+            else:
+                connection = self.clients[readable]
+                connection.read()
+                if connection.status == WAIT_PROCESS:
+                    itransport = TTransport.TMemoryBuffer(connection.message)
+                    otransport = TTransport.TMemoryBuffer()
+                    iprot = self.in_protocol.getProtocol(itransport)
+                    oprot = self.out_protocol.getProtocol(otransport)
+                    self.tasks.put([self.processor, iprot, oprot,
+                                    otransport, connection.ready])
+        for writeable in wset:
+            self.clients[writeable].write()
+        for oob in xset:
+            self.clients[oob].close()
+            del self.clients[oob]
+
+    def close(self):
+        """Closes the server."""
+        for _ in xrange(self.threads):
+            self.tasks.put([None, None, None, None, None])
+        self.socket.close()
+        self.prepared = False
+
+    def serve(self):
+        """Serve requests.
+
+        Serve requests forever, or until stop() is called.
+        """
+        self._stop = False
+        self.prepare()
+        while not self._stop:
+            self.handle()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TProcessPoolServer.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TProcessPoolServer.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TProcessPoolServer.py
new file mode 100644
index 0000000..c665e6d
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TProcessPoolServer.py
@@ -0,0 +1,118 @@
+#
+# 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.
+#
+
+
+import logging
+from multiprocessing import  Process, Value, Condition
+
+from lib.thrift.server import TServer
+from thrift.transport.TTransport import TTransportException
+
+
+class TProcessPoolServer(TServer):
+    """Server with a fixed size pool of worker subprocesses to service requests
+
+    Note that if you need shared state between the handlers - it's up to you!
+    Written by Dvir Volk, doat.com
+    """
+    def __init__(self, *args):
+        TServer.__init__(self, *args)
+        self.numWorkers = 10
+        self.workers = []
+        self.isRunning = Value('b', False)
+        self.stopCondition = Condition()
+        self.postForkCallback = None
+
+    def setPostForkCallback(self, callback):
+        if not callable(callback):
+            raise TypeError("This is not a callback!")
+        self.postForkCallback = callback
+
+    def setNumWorkers(self, num):
+        """Set the number of worker threads that should be created"""
+        self.numWorkers = num
+
+    def workerProcess(self):
+        """Loop getting clients from the shared queue and process them"""
+        if self.postForkCallback:
+            self.postForkCallback()
+
+        while self.isRunning.value:
+            try:
+                client = self.serverTransport.accept()
+                self.serveClient(client)
+            except (KeyboardInterrupt, SystemExit):
+                return 0
+            except Exception, x:
+                logging.exception(x)
+
+    def serveClient(self, client):
+        """Process input/output from a client for as long as possible"""
+        itrans = self.inputTransportFactory.getTransport(client)
+        otrans = self.outputTransportFactory.getTransport(client)
+        iprot = self.inputProtocolFactory.getProtocol(itrans)
+        oprot = self.outputProtocolFactory.getProtocol(otrans)
+
+        try:
+            while True:
+                self.processor.process(iprot, oprot)
+        except TTransportException, tx:
+            pass
+        except Exception, x:
+            logging.exception(x)
+
+        itrans.close()
+        otrans.close()
+
+    def serve(self):
+        """Start workers and put into queue"""
+        # this is a shared state that can tell the workers to exit when False
+        self.isRunning.value = True
+
+        # first bind and listen to the port
+        self.serverTransport.listen()
+
+        # fork the children
+        for i in range(self.numWorkers):
+            try:
+                w = Process(target=self.workerProcess)
+                w.daemon = True
+                w.start()
+                self.workers.append(w)
+            except Exception, x:
+                logging.exception(x)
+
+        # wait until the condition is set by stop()
+        while True:
+            self.stopCondition.acquire()
+            try:
+                self.stopCondition.wait()
+                break
+            except (SystemExit, KeyboardInterrupt):
+                break
+            except Exception, x:
+                logging.exception(x)
+
+        self.isRunning.value = False
+
+    def stop(self):
+        self.isRunning.value = False
+        self.stopCondition.acquire()
+        self.stopCondition.notify()
+        self.stopCondition.release()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TServer.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TServer.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TServer.py
new file mode 100644
index 0000000..2f24842
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/server/TServer.py
@@ -0,0 +1,269 @@
+#
+# 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.
+#
+
+import Queue
+import logging
+import os
+import sys
+import threading
+import traceback
+
+from thrift.Thrift import TProcessor
+from thrift.protocol import TBinaryProtocol
+from thrift.transport import TTransport
+
+
+class TServer:
+  """Base interface for a server, which must have a serve() method.
+
+  Three constructors for all servers:
+  1) (processor, serverTransport)
+  2) (processor, serverTransport, transportFactory, protocolFactory)
+  3) (processor, serverTransport,
+      inputTransportFactory, outputTransportFactory,
+      inputProtocolFactory, outputProtocolFactory)
+  """
+  def __init__(self, *args):
+    if (len(args) == 2):
+      self.__initArgs__(args[0], args[1],
+                        TTransport.TTransportFactoryBase(),
+                        TTransport.TTransportFactoryBase(),
+                        TBinaryProtocol.TBinaryProtocolFactory(),
+                        TBinaryProtocol.TBinaryProtocolFactory())
+    elif (len(args) == 4):
+      self.__initArgs__(args[0], args[1], args[2], args[2], args[3], args[3])
+    elif (len(args) == 6):
+      self.__initArgs__(args[0], args[1], args[2], args[3], args[4], args[5])
+
+  def __initArgs__(self, processor, serverTransport,
+                   inputTransportFactory, outputTransportFactory,
+                   inputProtocolFactory, outputProtocolFactory):
+    self.processor = processor
+    self.serverTransport = serverTransport
+    self.inputTransportFactory = inputTransportFactory
+    self.outputTransportFactory = outputTransportFactory
+    self.inputProtocolFactory = inputProtocolFactory
+    self.outputProtocolFactory = outputProtocolFactory
+
+  def serve(self):
+    pass
+
+
+class TSimpleServer(TServer):
+  """Simple single-threaded server that just pumps around one transport."""
+
+  def __init__(self, *args):
+    TServer.__init__(self, *args)
+
+  def serve(self):
+    self.serverTransport.listen()
+    while True:
+      client = self.serverTransport.accept()
+      itrans = self.inputTransportFactory.getTransport(client)
+      otrans = self.outputTransportFactory.getTransport(client)
+      iprot = self.inputProtocolFactory.getProtocol(itrans)
+      oprot = self.outputProtocolFactory.getProtocol(otrans)
+      try:
+        while True:
+          self.processor.process(iprot, oprot)
+      except TTransport.TTransportException, tx:
+        pass
+      except Exception, x:
+        logging.exception(x)
+
+      itrans.close()
+      otrans.close()
+
+
+class TThreadedServer(TServer):
+  """Threaded server that spawns a new thread per each connection."""
+
+  def __init__(self, *args, **kwargs):
+    TServer.__init__(self, *args)
+    self.daemon = kwargs.get("daemon", False)
+
+  def serve(self):
+    self.serverTransport.listen()
+    while True:
+      try:
+        client = self.serverTransport.accept()
+        t = threading.Thread(target=self.handle, args=(client,))
+        t.setDaemon(self.daemon)
+        t.start()
+      except KeyboardInterrupt:
+        raise
+      except Exception, x:
+        logging.exception(x)
+
+  def handle(self, client):
+    itrans = self.inputTransportFactory.getTransport(client)
+    otrans = self.outputTransportFactory.getTransport(client)
+    iprot = self.inputProtocolFactory.getProtocol(itrans)
+    oprot = self.outputProtocolFactory.getProtocol(otrans)
+    try:
+      while True:
+        self.processor.process(iprot, oprot)
+    except TTransport.TTransportException, tx:
+      pass
+    except Exception, x:
+      logging.exception(x)
+
+    itrans.close()
+    otrans.close()
+
+
+class TThreadPoolServer(TServer):
+  """Server with a fixed size pool of threads which service requests."""
+
+  def __init__(self, *args, **kwargs):
+    TServer.__init__(self, *args)
+    self.clients = Queue.Queue()
+    self.threads = 10
+    self.daemon = kwargs.get("daemon", False)
+
+  def setNumThreads(self, num):
+    """Set the number of worker threads that should be created"""
+    self.threads = num
+
+  def serveThread(self):
+    """Loop around getting clients from the shared queue and process them."""
+    while True:
+      try:
+        client = self.clients.get()
+        self.serveClient(client)
+      except Exception, x:
+        logging.exception(x)
+
+  def serveClient(self, client):
+    """Process input/output from a client for as long as possible"""
+    itrans = self.inputTransportFactory.getTransport(client)
+    otrans = self.outputTransportFactory.getTransport(client)
+    iprot = self.inputProtocolFactory.getProtocol(itrans)
+    oprot = self.outputProtocolFactory.getProtocol(otrans)
+    try:
+      while True:
+        self.processor.process(iprot, oprot)
+    except TTransport.TTransportException, tx:
+      pass
+    except Exception, x:
+      logging.exception(x)
+
+    itrans.close()
+    otrans.close()
+
+  def serve(self):
+    """Start a fixed number of worker threads and put client into a queue"""
+    for i in range(self.threads):
+      try:
+        t = threading.Thread(target=self.serveThread)
+        t.setDaemon(self.daemon)
+        t.start()
+      except Exception, x:
+        logging.exception(x)
+
+    # Pump the socket for clients
+    self.serverTransport.listen()
+    while True:
+      try:
+        client = self.serverTransport.accept()
+        self.clients.put(client)
+      except Exception, x:
+        logging.exception(x)
+
+
+class TForkingServer(TServer):
+  """A Thrift server that forks a new process for each request
+
+  This is more scalable than the threaded server as it does not cause
+  GIL contention.
+
+  Note that this has different semantics from the threading server.
+  Specifically, updates to shared variables will no longer be shared.
+  It will also not work on windows.
+
+  This code is heavily inspired by SocketServer.ForkingMixIn in the
+  Python stdlib.
+  """
+  def __init__(self, *args):
+    TServer.__init__(self, *args)
+    self.children = []
+
+  def serve(self):
+    def try_close(file):
+      try:
+        file.close()
+      except IOError, e:
+        logging.warning(e, exc_info=True)
+
+    self.serverTransport.listen()
+    while True:
+      client = self.serverTransport.accept()
+      try:
+        pid = os.fork()
+
+        if pid:  # parent
+          # add before collect, otherwise you race w/ waitpid
+          self.children.append(pid)
+          self.collect_children()
+
+          # Parent must close socket or the connection may not get
+          # closed promptly
+          itrans = self.inputTransportFactory.getTransport(client)
+          otrans = self.outputTransportFactory.getTransport(client)
+          try_close(itrans)
+          try_close(otrans)
+        else:
+          itrans = self.inputTransportFactory.getTransport(client)
+          otrans = self.outputTransportFactory.getTransport(client)
+
+          iprot = self.inputProtocolFactory.getProtocol(itrans)
+          oprot = self.outputProtocolFactory.getProtocol(otrans)
+
+          ecode = 0
+          try:
+            try:
+              while True:
+                self.processor.process(iprot, oprot)
+            except TTransport.TTransportException, tx:
+              pass
+            except Exception, e:
+              logging.exception(e)
+              ecode = 1
+          finally:
+            try_close(itrans)
+            try_close(otrans)
+
+          os._exit(ecode)
+
+      except TTransport.TTransportException, tx:
+        pass
+      except Exception, x:
+        logging.exception(x)
+
+  def collect_children(self):
+    while self.children:
+      try:
+        pid, status = os.waitpid(0, os.WNOHANG)
+      except os.error:
+        pid = None
+
+      if pid:
+        self.children.remove(pid)
+      else:
+        break


[06/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.pyc
new file mode 100644
index 0000000..e152584
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.py
new file mode 100644
index 0000000..f5280cd
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.py
@@ -0,0 +1,542 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ExperimentState:
+  CREATED = 0
+  VALIDATED = 1
+  SCHEDULED = 2
+  LAUNCHED = 3
+  EXECUTING = 4
+  CANCELING = 5
+  CANCELED = 6
+  COMPLETED = 7
+  FAILED = 8
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "VALIDATED",
+    2: "SCHEDULED",
+    3: "LAUNCHED",
+    4: "EXECUTING",
+    5: "CANCELING",
+    6: "CANCELED",
+    7: "COMPLETED",
+    8: "FAILED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "VALIDATED": 1,
+    "SCHEDULED": 2,
+    "LAUNCHED": 3,
+    "EXECUTING": 4,
+    "CANCELING": 5,
+    "CANCELED": 6,
+    "COMPLETED": 7,
+    "FAILED": 8,
+  }
+
+class TaskState:
+  CREATED = 0
+  EXECUTING = 1
+  COMPLETED = 2
+  FAILED = 3
+  CANCELED = 4
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "EXECUTING",
+    2: "COMPLETED",
+    3: "FAILED",
+    4: "CANCELED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "EXECUTING": 1,
+    "COMPLETED": 2,
+    "FAILED": 3,
+    "CANCELED": 4,
+  }
+
+class ProcessState:
+  CREATED = 0
+  VALIDATED = 1
+  STARTED = 2
+  PRE_PROCESSING = 3
+  CONFIGURING_WORKSPACE = 4
+  INPUT_DATA_STAGING = 5
+  EXECUTING = 6
+  MONITORING = 7
+  OUTPUT_DATA_STAGING = 8
+  POST_PROCESSING = 9
+  COMPLETED = 10
+  FAILED = 11
+  CANCELLING = 12
+  CANCELED = 13
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "VALIDATED",
+    2: "STARTED",
+    3: "PRE_PROCESSING",
+    4: "CONFIGURING_WORKSPACE",
+    5: "INPUT_DATA_STAGING",
+    6: "EXECUTING",
+    7: "MONITORING",
+    8: "OUTPUT_DATA_STAGING",
+    9: "POST_PROCESSING",
+    10: "COMPLETED",
+    11: "FAILED",
+    12: "CANCELLING",
+    13: "CANCELED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "VALIDATED": 1,
+    "STARTED": 2,
+    "PRE_PROCESSING": 3,
+    "CONFIGURING_WORKSPACE": 4,
+    "INPUT_DATA_STAGING": 5,
+    "EXECUTING": 6,
+    "MONITORING": 7,
+    "OUTPUT_DATA_STAGING": 8,
+    "POST_PROCESSING": 9,
+    "COMPLETED": 10,
+    "FAILED": 11,
+    "CANCELLING": 12,
+    "CANCELED": 13,
+  }
+
+class JobState:
+  SUBMITTED = 0
+  QUEUED = 1
+  ACTIVE = 2
+  COMPLETE = 3
+  CANCELED = 4
+  FAILED = 5
+  SUSPENDED = 6
+  UNKNOWN = 7
+
+  _VALUES_TO_NAMES = {
+    0: "SUBMITTED",
+    1: "QUEUED",
+    2: "ACTIVE",
+    3: "COMPLETE",
+    4: "CANCELED",
+    5: "FAILED",
+    6: "SUSPENDED",
+    7: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SUBMITTED": 0,
+    "QUEUED": 1,
+    "ACTIVE": 2,
+    "COMPLETE": 3,
+    "CANCELED": 4,
+    "FAILED": 5,
+    "SUSPENDED": 6,
+    "UNKNOWN": 7,
+  }
+
+
+class ExperimentStatus:
+  """
+  Status: A generic status object.
+
+  state:
+    State .
+
+  timeOfStateChange:
+    time the status was last updated.
+
+  reason:
+    User friendly reason on how the state is inferred.
+
+
+  Attributes:
+   - state
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, timeOfStateChange=None, reason=None,):
+    self.state = state
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessStatus:
+  """
+  Attributes:
+   - state
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, timeOfStateChange=None, reason=None,):
+    self.state = state
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskStatus:
+  """
+  Attributes:
+   - state
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, timeOfStateChange=None, reason=None,):
+    self.state = state
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobStatus:
+  """
+  Attributes:
+   - jobState
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'jobState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, jobState=None, timeOfStateChange=None, reason=None,):
+    self.jobState = jobState
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.jobState = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobStatus')
+    if self.jobState is not None:
+      oprot.writeFieldBegin('jobState', TType.I32, 1)
+      oprot.writeI32(self.jobState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobState is None:
+      raise TProtocol.TProtocolException(message='Required field jobState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.pyc
new file mode 100644
index 0000000..6997fb0
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/status/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.pyc
new file mode 100644
index 0000000..3a2b6e8
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.py
new file mode 100644
index 0000000..ff6d729
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.py
@@ -0,0 +1,703 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.appcatalog.computeresource.ttypes
+import apache.airavata.model.data.movement.ttypes
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.job.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class TaskTypes:
+  """
+  TaskTypes: An enumerated list of TaskTypes. Task being generic, the task type will provide the concrete interpretation.
+
+  """
+  ENV_SETUP = 0
+  DATA_STAGING = 1
+  JOB_SUBMISSION = 2
+  ENV_CLEANUP = 3
+  MONITORING = 4
+  OUTPUT_FETCHING = 5
+
+  _VALUES_TO_NAMES = {
+    0: "ENV_SETUP",
+    1: "DATA_STAGING",
+    2: "JOB_SUBMISSION",
+    3: "ENV_CLEANUP",
+    4: "MONITORING",
+    5: "OUTPUT_FETCHING",
+  }
+
+  _NAMES_TO_VALUES = {
+    "ENV_SETUP": 0,
+    "DATA_STAGING": 1,
+    "JOB_SUBMISSION": 2,
+    "ENV_CLEANUP": 3,
+    "MONITORING": 4,
+    "OUTPUT_FETCHING": 5,
+  }
+
+class DataStageType:
+  """
+  DataStagingTaskModel: A structure holding the data staging task details.
+
+  Source and Destination locations includes standard representation of protocol, host, port and path
+    A friendly description of the task, usally used to communicate information to users.
+
+  """
+  INPUT = 0
+  OUPUT = 1
+  ARCHIVE_OUTPUT = 2
+
+  _VALUES_TO_NAMES = {
+    0: "INPUT",
+    1: "OUPUT",
+    2: "ARCHIVE_OUTPUT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "INPUT": 0,
+    "OUPUT": 1,
+    "ARCHIVE_OUTPUT": 2,
+  }
+
+
+class TaskModel:
+  """
+  TaskModel: A structure holding the generic task details.
+
+  taskDetail:
+    A friendly description of the task, usally used to communicate information to users.
+
+  subTaskModel:
+    A generic byte object for the Task developer to store internal serialized data into registry catalogs.
+
+  Attributes:
+   - taskId
+   - taskType
+   - parentProcessId
+   - creationTime
+   - lastUpdateTime
+   - taskStatus
+   - taskDetail
+   - subTaskModel
+   - taskError
+   - jobs
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'taskId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'taskType', None, None, ), # 2
+    (3, TType.STRING, 'parentProcessId', None, None, ), # 3
+    (4, TType.I64, 'creationTime', None, None, ), # 4
+    (5, TType.I64, 'lastUpdateTime', None, None, ), # 5
+    (6, TType.STRUCT, 'taskStatus', (apache.airavata.model.status.ttypes.TaskStatus, apache.airavata.model.status.ttypes.TaskStatus.thrift_spec), None, ), # 6
+    (7, TType.STRING, 'taskDetail', None, None, ), # 7
+    (8, TType.STRING, 'subTaskModel', None, None, ), # 8
+    (9, TType.STRUCT, 'taskError', (apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec), None, ), # 9
+    (10, TType.LIST, 'jobs', (TType.STRUCT,(apache.airavata.model.job.ttypes.JobModel, apache.airavata.model.job.ttypes.JobModel.thrift_spec)), None, ), # 10
+  )
+
+  def __init__(self, taskId=thrift_spec[1][4], taskType=None, parentProcessId=None, creationTime=None, lastUpdateTime=None, taskStatus=None, taskDetail=None, subTaskModel=None, taskError=None, jobs=None,):
+    self.taskId = taskId
+    self.taskType = taskType
+    self.parentProcessId = parentProcessId
+    self.creationTime = creationTime
+    self.lastUpdateTime = lastUpdateTime
+    self.taskStatus = taskStatus
+    self.taskDetail = taskDetail
+    self.subTaskModel = subTaskModel
+    self.taskError = taskError
+    self.jobs = jobs
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.taskId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.taskType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.parentProcessId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.lastUpdateTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRUCT:
+          self.taskStatus = apache.airavata.model.status.ttypes.TaskStatus()
+          self.taskStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.taskDetail = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.subTaskModel = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRUCT:
+          self.taskError = apache.airavata.model.commons.ttypes.ErrorModel()
+          self.taskError.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.jobs = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.job.ttypes.JobModel()
+            _elem5.read(iprot)
+            self.jobs.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskModel')
+    if self.taskId is not None:
+      oprot.writeFieldBegin('taskId', TType.STRING, 1)
+      oprot.writeString(self.taskId)
+      oprot.writeFieldEnd()
+    if self.taskType is not None:
+      oprot.writeFieldBegin('taskType', TType.I32, 2)
+      oprot.writeI32(self.taskType)
+      oprot.writeFieldEnd()
+    if self.parentProcessId is not None:
+      oprot.writeFieldBegin('parentProcessId', TType.STRING, 3)
+      oprot.writeString(self.parentProcessId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 4)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastUpdateTime is not None:
+      oprot.writeFieldBegin('lastUpdateTime', TType.I64, 5)
+      oprot.writeI64(self.lastUpdateTime)
+      oprot.writeFieldEnd()
+    if self.taskStatus is not None:
+      oprot.writeFieldBegin('taskStatus', TType.STRUCT, 6)
+      self.taskStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.taskDetail is not None:
+      oprot.writeFieldBegin('taskDetail', TType.STRING, 7)
+      oprot.writeString(self.taskDetail)
+      oprot.writeFieldEnd()
+    if self.subTaskModel is not None:
+      oprot.writeFieldBegin('subTaskModel', TType.STRING, 8)
+      oprot.writeString(self.subTaskModel)
+      oprot.writeFieldEnd()
+    if self.taskError is not None:
+      oprot.writeFieldBegin('taskError', TType.STRUCT, 9)
+      self.taskError.write(oprot)
+      oprot.writeFieldEnd()
+    if self.jobs is not None:
+      oprot.writeFieldBegin('jobs', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.jobs))
+      for iter6 in self.jobs:
+        iter6.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.taskId is None:
+      raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.taskType is None:
+      raise TProtocol.TProtocolException(message='Required field taskType is unset!')
+    if self.parentProcessId is None:
+      raise TProtocol.TProtocolException(message='Required field parentProcessId is unset!')
+    if self.creationTime is None:
+      raise TProtocol.TProtocolException(message='Required field creationTime is unset!')
+    if self.lastUpdateTime is None:
+      raise TProtocol.TProtocolException(message='Required field lastUpdateTime is unset!')
+    if self.taskStatus is None:
+      raise TProtocol.TProtocolException(message='Required field taskStatus is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.taskType)
+    value = (value * 31) ^ hash(self.parentProcessId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastUpdateTime)
+    value = (value * 31) ^ hash(self.taskStatus)
+    value = (value * 31) ^ hash(self.taskDetail)
+    value = (value * 31) ^ hash(self.subTaskModel)
+    value = (value * 31) ^ hash(self.taskError)
+    value = (value * 31) ^ hash(self.jobs)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataStagingTaskModel:
+  """
+  Attributes:
+   - source
+   - destination
+   - type
+   - transferStartTime
+   - transferEndTime
+   - transferRate
+   - processInput
+   - processOutput
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'source', None, None, ), # 1
+    (2, TType.STRING, 'destination', None, None, ), # 2
+    (3, TType.I32, 'type', None, None, ), # 3
+    (4, TType.I64, 'transferStartTime', None, None, ), # 4
+    (5, TType.I64, 'transferEndTime', None, None, ), # 5
+    (6, TType.STRING, 'transferRate', None, None, ), # 6
+    (7, TType.STRUCT, 'processInput', (apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec), None, ), # 7
+    (8, TType.STRUCT, 'processOutput', (apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec), None, ), # 8
+  )
+
+  def __init__(self, source=None, destination=None, type=None, transferStartTime=None, transferEndTime=None, transferRate=None, processInput=None, processOutput=None,):
+    self.source = source
+    self.destination = destination
+    self.type = type
+    self.transferStartTime = transferStartTime
+    self.transferEndTime = transferEndTime
+    self.transferRate = transferRate
+    self.processInput = processInput
+    self.processOutput = processOutput
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.source = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.destination = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.type = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.transferStartTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.transferEndTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.transferRate = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRUCT:
+          self.processInput = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+          self.processInput.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRUCT:
+          self.processOutput = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+          self.processOutput.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataStagingTaskModel')
+    if self.source is not None:
+      oprot.writeFieldBegin('source', TType.STRING, 1)
+      oprot.writeString(self.source)
+      oprot.writeFieldEnd()
+    if self.destination is not None:
+      oprot.writeFieldBegin('destination', TType.STRING, 2)
+      oprot.writeString(self.destination)
+      oprot.writeFieldEnd()
+    if self.type is not None:
+      oprot.writeFieldBegin('type', TType.I32, 3)
+      oprot.writeI32(self.type)
+      oprot.writeFieldEnd()
+    if self.transferStartTime is not None:
+      oprot.writeFieldBegin('transferStartTime', TType.I64, 4)
+      oprot.writeI64(self.transferStartTime)
+      oprot.writeFieldEnd()
+    if self.transferEndTime is not None:
+      oprot.writeFieldBegin('transferEndTime', TType.I64, 5)
+      oprot.writeI64(self.transferEndTime)
+      oprot.writeFieldEnd()
+    if self.transferRate is not None:
+      oprot.writeFieldBegin('transferRate', TType.STRING, 6)
+      oprot.writeString(self.transferRate)
+      oprot.writeFieldEnd()
+    if self.processInput is not None:
+      oprot.writeFieldBegin('processInput', TType.STRUCT, 7)
+      self.processInput.write(oprot)
+      oprot.writeFieldEnd()
+    if self.processOutput is not None:
+      oprot.writeFieldBegin('processOutput', TType.STRUCT, 8)
+      self.processOutput.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.source is None:
+      raise TProtocol.TProtocolException(message='Required field source is unset!')
+    if self.destination is None:
+      raise TProtocol.TProtocolException(message='Required field destination is unset!')
+    if self.type is None:
+      raise TProtocol.TProtocolException(message='Required field type is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.source)
+    value = (value * 31) ^ hash(self.destination)
+    value = (value * 31) ^ hash(self.type)
+    value = (value * 31) ^ hash(self.transferStartTime)
+    value = (value * 31) ^ hash(self.transferEndTime)
+    value = (value * 31) ^ hash(self.transferRate)
+    value = (value * 31) ^ hash(self.processInput)
+    value = (value * 31) ^ hash(self.processOutput)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class EnvironmentSetupTaskModel:
+  """
+  EnvironmentSetupTaskModel: A structure holding the environment creation task details
+
+
+  Attributes:
+   - location
+   - protocol
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'location', None, None, ), # 1
+    (2, TType.I32, 'protocol', None, None, ), # 2
+  )
+
+  def __init__(self, location=None, protocol=None,):
+    self.location = location
+    self.protocol = protocol
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.location = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.protocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('EnvironmentSetupTaskModel')
+    if self.location is not None:
+      oprot.writeFieldBegin('location', TType.STRING, 1)
+      oprot.writeString(self.location)
+      oprot.writeFieldEnd()
+    if self.protocol is not None:
+      oprot.writeFieldBegin('protocol', TType.I32, 2)
+      oprot.writeI32(self.protocol)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.location is None:
+      raise TProtocol.TProtocolException(message='Required field location is unset!')
+    if self.protocol is None:
+      raise TProtocol.TProtocolException(message='Required field protocol is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.location)
+    value = (value * 31) ^ hash(self.protocol)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobSubmissionTaskModel:
+  """
+  Attributes:
+   - jobSubmissionProtocol
+   - monitorMode
+   - wallTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'jobSubmissionProtocol', None, None, ), # 1
+    (2, TType.I32, 'monitorMode', None, None, ), # 2
+    (3, TType.I32, 'wallTime', None, None, ), # 3
+  )
+
+  def __init__(self, jobSubmissionProtocol=None, monitorMode=None, wallTime=None,):
+    self.jobSubmissionProtocol = jobSubmissionProtocol
+    self.monitorMode = monitorMode
+    self.wallTime = wallTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.jobSubmissionProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.monitorMode = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.wallTime = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobSubmissionTaskModel')
+    if self.jobSubmissionProtocol is not None:
+      oprot.writeFieldBegin('jobSubmissionProtocol', TType.I32, 1)
+      oprot.writeI32(self.jobSubmissionProtocol)
+      oprot.writeFieldEnd()
+    if self.monitorMode is not None:
+      oprot.writeFieldBegin('monitorMode', TType.I32, 2)
+      oprot.writeI32(self.monitorMode)
+      oprot.writeFieldEnd()
+    if self.wallTime is not None:
+      oprot.writeFieldBegin('wallTime', TType.I32, 3)
+      oprot.writeI32(self.wallTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionProtocol is unset!')
+    if self.monitorMode is None:
+      raise TProtocol.TProtocolException(message='Required field monitorMode is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionProtocol)
+    value = (value * 31) ^ hash(self.monitorMode)
+    value = (value * 31) ^ hash(self.wallTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class MonitorTaskModel:
+  """
+  Attributes:
+   - monitorMode
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'monitorMode', None, None, ), # 1
+  )
+
+  def __init__(self, monitorMode=None,):
+    self.monitorMode = monitorMode
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.monitorMode = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('MonitorTaskModel')
+    if self.monitorMode is not None:
+      oprot.writeFieldBegin('monitorMode', TType.I32, 1)
+      oprot.writeI32(self.monitorMode)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.monitorMode is None:
+      raise TProtocol.TProtocolException(message='Required field monitorMode is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.monitorMode)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.pyc
new file mode 100644
index 0000000..08a1ef8
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/task/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.py
new file mode 100644
index 0000000..76c0140
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.py
@@ -0,0 +1,34 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.workspace.ttypes
+import apache.airavata.api.error.ttypes
+import apache.airavata.model.messaging.event.ttypes
+import apache.airavata.model.security.ttypes
+import apache.airavata.model.experiment.ttypes
+import apache.airavata.model.job.ttypes
+import apache.airavata.model.task.ttypes
+import apache.airavata.model.process.ttypes
+import apache.airavata.model.scheduling.ttypes
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.data.movement.ttypes
+import apache.airavata.model.data.replica.ttypes
+import apache.airavata.model.user.ttypes
+import apache.airavata.model.group.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.pyc
new file mode 100644
index 0000000..18ba5f6
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.pyc
new file mode 100644
index 0000000..0203575
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/constants.py
new file mode 100644
index 0000000..e3e9481
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/constants.py
@@ -0,0 +1,12 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+
+USER_PROFILE_VERSION = "1.0"

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.py
new file mode 100644
index 0000000..153a183
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.py
@@ -0,0 +1,721 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class Status:
+  ACTIVE = 0
+  CONFIRMED = 1
+  APPROVED = 2
+  DELETED = 3
+  DUPLICATE = 4
+  GRACE_PERIOD = 5
+  INVITED = 6
+  DENIED = 7
+  PENDING = 8
+  PENDING_APPROVAL = 9
+  PENDING_CONFIRMATION = 10
+  SUSPENDED = 11
+  DECLINED = 12
+  EXPIRED = 13
+
+  _VALUES_TO_NAMES = {
+    0: "ACTIVE",
+    1: "CONFIRMED",
+    2: "APPROVED",
+    3: "DELETED",
+    4: "DUPLICATE",
+    5: "GRACE_PERIOD",
+    6: "INVITED",
+    7: "DENIED",
+    8: "PENDING",
+    9: "PENDING_APPROVAL",
+    10: "PENDING_CONFIRMATION",
+    11: "SUSPENDED",
+    12: "DECLINED",
+    13: "EXPIRED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "ACTIVE": 0,
+    "CONFIRMED": 1,
+    "APPROVED": 2,
+    "DELETED": 3,
+    "DUPLICATE": 4,
+    "GRACE_PERIOD": 5,
+    "INVITED": 6,
+    "DENIED": 7,
+    "PENDING": 8,
+    "PENDING_APPROVAL": 9,
+    "PENDING_CONFIRMATION": 10,
+    "SUSPENDED": 11,
+    "DECLINED": 12,
+    "EXPIRED": 13,
+  }
+
+class USCitizenship:
+  """
+  U.S. Citizen (see: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
+
+  """
+  US_CITIZEN = 0
+  US_PERMANENT_RESIDENT = 1
+  OTHER_NON_US_CITIZEN = 2
+
+  _VALUES_TO_NAMES = {
+    0: "US_CITIZEN",
+    1: "US_PERMANENT_RESIDENT",
+    2: "OTHER_NON_US_CITIZEN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "US_CITIZEN": 0,
+    "US_PERMANENT_RESIDENT": 1,
+    "OTHER_NON_US_CITIZEN": 2,
+  }
+
+class ethnicity:
+  """
+  Hispanic or Latino - a person of Mexican, Puerto Rican, Cuban, South or
+   Central American, or other Spanish culture or origin, regardless of race.
+
+  """
+  HISPANIC_LATINO = 0
+  NOT_HISPANIC_LATINO = 1
+
+  _VALUES_TO_NAMES = {
+    0: "HISPANIC_LATINO",
+    1: "NOT_HISPANIC_LATINO",
+  }
+
+  _NAMES_TO_VALUES = {
+    "HISPANIC_LATINO": 0,
+    "NOT_HISPANIC_LATINO": 1,
+  }
+
+class race:
+  """
+  * Asian - a person having origins in any of the original peoples of the Far East,
+  *      Southeast Asia, or the Indian subcontinent including, for example, Cambodia,
+   *      China, India, Japan, Korea, Malaysia, Pakistan, the Philippine Islands,
+   *      Thailand, and Vietnam.
+  * American Indian or Alaskan Native - a person having origins in any of the original
+   *     peoples of North and South America (including Central America), and who maintains
+    *     tribal affiliation or community attachment.
+  * Black or African American - a person having origins in any of the black racial groups
+  *      of Africa.
+  * Native Hawaiian or Pacific Islander - a person having origins in any of the original
+  *      peoples of Hawaii, Guan, Samoa, or other Pacific Islands.
+  * White - a person having origins in any of the original peoples of Europe, the Middle East, or North Africa.
+  *
+  """
+  ASIAN = 0
+  AMERICAN_INDIAN_OR_ALASKAN_NATIVE = 1
+  BLACK_OR_AFRICAN_AMERICAN = 2
+  NATIVE_HAWAIIAN_OR_PACIFIC_ISLANDER = 3
+  WHITE = 4
+
+  _VALUES_TO_NAMES = {
+    0: "ASIAN",
+    1: "AMERICAN_INDIAN_OR_ALASKAN_NATIVE",
+    2: "BLACK_OR_AFRICAN_AMERICAN",
+    3: "NATIVE_HAWAIIAN_OR_PACIFIC_ISLANDER",
+    4: "WHITE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "ASIAN": 0,
+    "AMERICAN_INDIAN_OR_ALASKAN_NATIVE": 1,
+    "BLACK_OR_AFRICAN_AMERICAN": 2,
+    "NATIVE_HAWAIIAN_OR_PACIFIC_ISLANDER": 3,
+    "WHITE": 4,
+  }
+
+class disability:
+  HEARING_IMAPAIRED = 0
+  VISUAL_IMPAIRED = 1
+  MOBILITY_OR_ORTHOPEDIC_IMPAIRMENT = 2
+  OTHER_IMPAIRMENT = 3
+
+  _VALUES_TO_NAMES = {
+    0: "HEARING_IMAPAIRED",
+    1: "VISUAL_IMPAIRED",
+    2: "MOBILITY_OR_ORTHOPEDIC_IMPAIRMENT",
+    3: "OTHER_IMPAIRMENT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "HEARING_IMAPAIRED": 0,
+    "VISUAL_IMPAIRED": 1,
+    "MOBILITY_OR_ORTHOPEDIC_IMPAIRMENT": 2,
+    "OTHER_IMPAIRMENT": 3,
+  }
+
+
+class NSFDemographics:
+  """
+  A structure holding the NSF Demographic information.
+
+
+
+  Attributes:
+   - gender
+   - usCitizenship
+   - ethnicities
+   - races
+   - disabilities
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'gender', None, None, ), # 1
+    (2, TType.I32, 'usCitizenship', None, None, ), # 2
+    (3, TType.LIST, 'ethnicities', (TType.I32,None), None, ), # 3
+    (4, TType.LIST, 'races', (TType.I32,None), None, ), # 4
+    (5, TType.LIST, 'disabilities', (TType.I32,None), None, ), # 5
+  )
+
+  def __init__(self, gender=None, usCitizenship=None, ethnicities=None, races=None, disabilities=None,):
+    self.gender = gender
+    self.usCitizenship = usCitizenship
+    self.ethnicities = ethnicities
+    self.races = races
+    self.disabilities = disabilities
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.gender = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.usCitizenship = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.LIST:
+          self.ethnicities = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readI32()
+            self.ethnicities.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.LIST:
+          self.races = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = iprot.readI32()
+            self.races.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.LIST:
+          self.disabilities = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = iprot.readI32()
+            self.disabilities.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('NSFDemographics')
+    if self.gender is not None:
+      oprot.writeFieldBegin('gender', TType.STRING, 1)
+      oprot.writeString(self.gender)
+      oprot.writeFieldEnd()
+    if self.usCitizenship is not None:
+      oprot.writeFieldBegin('usCitizenship', TType.I32, 2)
+      oprot.writeI32(self.usCitizenship)
+      oprot.writeFieldEnd()
+    if self.ethnicities is not None:
+      oprot.writeFieldBegin('ethnicities', TType.LIST, 3)
+      oprot.writeListBegin(TType.I32, len(self.ethnicities))
+      for iter18 in self.ethnicities:
+        oprot.writeI32(iter18)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.races is not None:
+      oprot.writeFieldBegin('races', TType.LIST, 4)
+      oprot.writeListBegin(TType.I32, len(self.races))
+      for iter19 in self.races:
+        oprot.writeI32(iter19)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.disabilities is not None:
+      oprot.writeFieldBegin('disabilities', TType.LIST, 5)
+      oprot.writeListBegin(TType.I32, len(self.disabilities))
+      for iter20 in self.disabilities:
+        oprot.writeI32(iter20)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.gender)
+    value = (value * 31) ^ hash(self.usCitizenship)
+    value = (value * 31) ^ hash(self.ethnicities)
+    value = (value * 31) ^ hash(self.races)
+    value = (value * 31) ^ hash(self.disabilities)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class UserProfile:
+  """
+  * A structure holding the user profile and its child models.
+  *
+  * Notes:
+  *  The model does not include passwords as it is assumed an external identity provider is used to authenticate user.
+  *  References:
+  *     NSF Demographic Information - http://www.nsf.gov/pubs/2000/00form1225/00form1225.doc
+  *     LDAP Schema - https://tools.ietf.org/html/rfc4519
+  *     SCIM 2.0 - https://tools.ietf.org/html/rfc7643
+  *
+  * userModelVersion:
+  *  Version number of profile
+  *
+  * airavataInternalUserId:
+  *  internal to Airavata, not intended to be used outside of the Airavata platform or possibly by gateways
+  *  (that is, never shown to users), never reassigned, REQUIRED
+  *
+  * userId:
+  *  Externally assertable unique identifier. SAML (primarly in higher education, academic) tends to keep
+  *   user name less opaque. OpenID Connect maintains them to be opaque.
+  *
+  * emails:
+  *   Email identifier are Verified, REQUIRED and MULTIVALUED
+  *
+  * userName:
+  *  Name-based identifiers can be multivalues. To keep it simple, Airavata will make it a string.
+  *   In the future these can be enumerated as:
+      *   Official name (as asserted possibly by some external identity provider)
+      *   Prefered name (as asserted or suggested by user directly)
+      *   Components:
+      *      givenName
+      *      surname (familyName)
+      *      displayName (often asserted by user to handle things like middle names, suffix, prefix, and the like)
+  *
+  * orcidId: ORCID ID - http://orcid.org/about/what-is-orcid)
+  *
+  * phones: Telephone MULTIVALUED
+  *
+  * country: Country of Residance
+  *
+  * nationality Countries of citizenship
+  *
+  * comments:
+  *   Free-form information (treated as opaque by Airavata and simply passed to resource).
+  *
+  * labeledURI:
+    * Google Scholar, Web of Science, ACS, e.t.c
+
+  Attributes:
+   - userModelVersion
+   - airavataInternalUserId
+   - userId
+   - emails
+   - userName
+   - orcidId
+   - phones
+   - country
+   - nationality
+   - homeOrganization
+   - orginationAffiliation
+   - creationTime
+   - lastAccessTime
+   - validUntil
+   - State
+   - comments
+   - labeledURI
+   - gpgKey
+   - timeZone
+   - nsfDemographics
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'userModelVersion', None, "1.0", ), # 1
+    (2, TType.STRING, 'airavataInternalUserId', None, "DO_NOT_SET_AT_CLIENTS", ), # 2
+    (3, TType.STRING, 'userId', None, None, ), # 3
+    (4, TType.LIST, 'emails', (TType.STRING,None), None, ), # 4
+    (5, TType.STRING, 'userName', None, None, ), # 5
+    (6, TType.STRING, 'orcidId', None, None, ), # 6
+    (7, TType.LIST, 'phones', (TType.STRING,None), None, ), # 7
+    (8, TType.STRING, 'country', None, None, ), # 8
+    (9, TType.LIST, 'nationality', (TType.STRING,None), None, ), # 9
+    (10, TType.STRING, 'homeOrganization', None, None, ), # 10
+    (11, TType.STRING, 'orginationAffiliation', None, None, ), # 11
+    (12, TType.STRING, 'creationTime', None, None, ), # 12
+    (13, TType.STRING, 'lastAccessTime', None, None, ), # 13
+    (14, TType.STRING, 'validUntil', None, None, ), # 14
+    (15, TType.I32, 'State', None, None, ), # 15
+    (16, TType.STRING, 'comments', None, None, ), # 16
+    (17, TType.LIST, 'labeledURI', (TType.STRING,None), None, ), # 17
+    (18, TType.STRING, 'gpgKey', None, None, ), # 18
+    (19, TType.STRING, 'timeZone', None, None, ), # 19
+    (20, TType.STRUCT, 'nsfDemographics', (NSFDemographics, NSFDemographics.thrift_spec), None, ), # 20
+  )
+
+  def __init__(self, userModelVersion=thrift_spec[1][4], airavataInternalUserId=thrift_spec[2][4], userId=None, emails=None, userName=None, orcidId=None, phones=None, country=None, nationality=None, homeOrganization=None, orginationAffiliation=None, creationTime=None, lastAccessTime=None, validUntil=None, State=None, comments=None, labeledURI=None, gpgKey=None, timeZone=None, nsfDemographics=None,):
+    self.userModelVersion = userModelVersion
+    self.airavataInternalUserId = airavataInternalUserId
+    self.userId = userId
+    self.emails = emails
+    self.userName = userName
+    self.orcidId = orcidId
+    self.phones = phones
+    self.country = country
+    self.nationality = nationality
+    self.homeOrganization = homeOrganization
+    self.orginationAffiliation = orginationAffiliation
+    self.creationTime = creationTime
+    self.lastAccessTime = lastAccessTime
+    self.validUntil = validUntil
+    self.State = State
+    self.comments = comments
+    self.labeledURI = labeledURI
+    self.gpgKey = gpgKey
+    self.timeZone = timeZone
+    self.nsfDemographics = nsfDemographics
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.userModelVersion = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.airavataInternalUserId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.userId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.LIST:
+          self.emails = []
+          (_etype24, _size21) = iprot.readListBegin()
+          for _i25 in xrange(_size21):
+            _elem26 = iprot.readString()
+            self.emails.append(_elem26)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.orcidId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.phones = []
+          (_etype30, _size27) = iprot.readListBegin()
+          for _i31 in xrange(_size27):
+            _elem32 = iprot.readString()
+            self.phones.append(_elem32)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.country = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.nationality = []
+          (_etype36, _size33) = iprot.readListBegin()
+          for _i37 in xrange(_size33):
+            _elem38 = iprot.readString()
+            self.nationality.append(_elem38)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.homeOrganization = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.orginationAffiliation = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRING:
+          self.creationTime = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.STRING:
+          self.lastAccessTime = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.STRING:
+          self.validUntil = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 15:
+        if ftype == TType.I32:
+          self.State = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 16:
+        if ftype == TType.STRING:
+          self.comments = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 17:
+        if ftype == TType.LIST:
+          self.labeledURI = []
+          (_etype42, _size39) = iprot.readListBegin()
+          for _i43 in xrange(_size39):
+            _elem44 = iprot.readString()
+            self.labeledURI.append(_elem44)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 18:
+        if ftype == TType.STRING:
+          self.gpgKey = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 19:
+        if ftype == TType.STRING:
+          self.timeZone = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 20:
+        if ftype == TType.STRUCT:
+          self.nsfDemographics = NSFDemographics()
+          self.nsfDemographics.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UserProfile')
+    if self.userModelVersion is not None:
+      oprot.writeFieldBegin('userModelVersion', TType.STRING, 1)
+      oprot.writeString(self.userModelVersion)
+      oprot.writeFieldEnd()
+    if self.airavataInternalUserId is not None:
+      oprot.writeFieldBegin('airavataInternalUserId', TType.STRING, 2)
+      oprot.writeString(self.airavataInternalUserId)
+      oprot.writeFieldEnd()
+    if self.userId is not None:
+      oprot.writeFieldBegin('userId', TType.STRING, 3)
+      oprot.writeString(self.userId)
+      oprot.writeFieldEnd()
+    if self.emails is not None:
+      oprot.writeFieldBegin('emails', TType.LIST, 4)
+      oprot.writeListBegin(TType.STRING, len(self.emails))
+      for iter45 in self.emails:
+        oprot.writeString(iter45)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 5)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.orcidId is not None:
+      oprot.writeFieldBegin('orcidId', TType.STRING, 6)
+      oprot.writeString(self.orcidId)
+      oprot.writeFieldEnd()
+    if self.phones is not None:
+      oprot.writeFieldBegin('phones', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRING, len(self.phones))
+      for iter46 in self.phones:
+        oprot.writeString(iter46)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.country is not None:
+      oprot.writeFieldBegin('country', TType.STRING, 8)
+      oprot.writeString(self.country)
+      oprot.writeFieldEnd()
+    if self.nationality is not None:
+      oprot.writeFieldBegin('nationality', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRING, len(self.nationality))
+      for iter47 in self.nationality:
+        oprot.writeString(iter47)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.homeOrganization is not None:
+      oprot.writeFieldBegin('homeOrganization', TType.STRING, 10)
+      oprot.writeString(self.homeOrganization)
+      oprot.writeFieldEnd()
+    if self.orginationAffiliation is not None:
+      oprot.writeFieldBegin('orginationAffiliation', TType.STRING, 11)
+      oprot.writeString(self.orginationAffiliation)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.STRING, 12)
+      oprot.writeString(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastAccessTime is not None:
+      oprot.writeFieldBegin('lastAccessTime', TType.STRING, 13)
+      oprot.writeString(self.lastAccessTime)
+      oprot.writeFieldEnd()
+    if self.validUntil is not None:
+      oprot.writeFieldBegin('validUntil', TType.STRING, 14)
+      oprot.writeString(self.validUntil)
+      oprot.writeFieldEnd()
+    if self.State is not None:
+      oprot.writeFieldBegin('State', TType.I32, 15)
+      oprot.writeI32(self.State)
+      oprot.writeFieldEnd()
+    if self.comments is not None:
+      oprot.writeFieldBegin('comments', TType.STRING, 16)
+      oprot.writeString(self.comments)
+      oprot.writeFieldEnd()
+    if self.labeledURI is not None:
+      oprot.writeFieldBegin('labeledURI', TType.LIST, 17)
+      oprot.writeListBegin(TType.STRING, len(self.labeledURI))
+      for iter48 in self.labeledURI:
+        oprot.writeString(iter48)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.gpgKey is not None:
+      oprot.writeFieldBegin('gpgKey', TType.STRING, 18)
+      oprot.writeString(self.gpgKey)
+      oprot.writeFieldEnd()
+    if self.timeZone is not None:
+      oprot.writeFieldBegin('timeZone', TType.STRING, 19)
+      oprot.writeString(self.timeZone)
+      oprot.writeFieldEnd()
+    if self.nsfDemographics is not None:
+      oprot.writeFieldBegin('nsfDemographics', TType.STRUCT, 20)
+      self.nsfDemographics.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.userModelVersion is None:
+      raise TProtocol.TProtocolException(message='Required field userModelVersion is unset!')
+    if self.airavataInternalUserId is None:
+      raise TProtocol.TProtocolException(message='Required field airavataInternalUserId is unset!')
+    if self.userId is None:
+      raise TProtocol.TProtocolException(message='Required field userId is unset!')
+    if self.emails is None:
+      raise TProtocol.TProtocolException(message='Required field emails is unset!')
+    if self.creationTime is None:
+      raise TProtocol.TProtocolException(message='Required field creationTime is unset!')
+    if self.lastAccessTime is None:
+      raise TProtocol.TProtocolException(message='Required field lastAccessTime is unset!')
+    if self.validUntil is None:
+      raise TProtocol.TProtocolException(message='Required field validUntil is unset!')
+    if self.State is None:
+      raise TProtocol.TProtocolException(message='Required field State is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.userModelVersion)
+    value = (value * 31) ^ hash(self.airavataInternalUserId)
+    value = (value * 31) ^ hash(self.userId)
+    value = (value * 31) ^ hash(self.emails)
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.orcidId)
+    value = (value * 31) ^ hash(self.phones)
+    value = (value * 31) ^ hash(self.country)
+    value = (value * 31) ^ hash(self.nationality)
+    value = (value * 31) ^ hash(self.homeOrganization)
+    value = (value * 31) ^ hash(self.orginationAffiliation)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastAccessTime)
+    value = (value * 31) ^ hash(self.validUntil)
+    value = (value * 31) ^ hash(self.State)
+    value = (value * 31) ^ hash(self.comments)
+    value = (value * 31) ^ hash(self.labeledURI)
+    value = (value * 31) ^ hash(self.gpgKey)
+    value = (value * 31) ^ hash(self.timeZone)
+    value = (value * 31) ^ hash(self.nsfDemographics)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.pyc
new file mode 100644
index 0000000..de0c9c1
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/user/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.pyc
new file mode 100644
index 0000000..2748ee1
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[04/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/ttypes.py
new file mode 100644
index 0000000..d227f3f
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/ttypes.py
@@ -0,0 +1,3474 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.appcatalog.computeresource.ttypes
+import apache.airavata.model.appcatalog.appinterface.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ExperimentState:
+  CREATED = 0
+  VALIDATED = 1
+  SCHEDULED = 2
+  LAUNCHED = 3
+  EXECUTING = 4
+  CANCELING = 5
+  CANCELED = 6
+  SUSPENDED = 7
+  COMPLETED = 8
+  FAILED = 9
+  UNKNOWN = 10
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "VALIDATED",
+    2: "SCHEDULED",
+    3: "LAUNCHED",
+    4: "EXECUTING",
+    5: "CANCELING",
+    6: "CANCELED",
+    7: "SUSPENDED",
+    8: "COMPLETED",
+    9: "FAILED",
+    10: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "VALIDATED": 1,
+    "SCHEDULED": 2,
+    "LAUNCHED": 3,
+    "EXECUTING": 4,
+    "CANCELING": 5,
+    "CANCELED": 6,
+    "SUSPENDED": 7,
+    "COMPLETED": 8,
+    "FAILED": 9,
+    "UNKNOWN": 10,
+  }
+
+class ExperimentSearchFields:
+  EXPERIMENT_NAME = 0
+  EXPERIMENT_DESC = 1
+  APPLICATION_ID = 2
+  FROM_DATE = 3
+  TO_DATE = 4
+  STATUS = 5
+
+  _VALUES_TO_NAMES = {
+    0: "EXPERIMENT_NAME",
+    1: "EXPERIMENT_DESC",
+    2: "APPLICATION_ID",
+    3: "FROM_DATE",
+    4: "TO_DATE",
+    5: "STATUS",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EXPERIMENT_NAME": 0,
+    "EXPERIMENT_DESC": 1,
+    "APPLICATION_ID": 2,
+    "FROM_DATE": 3,
+    "TO_DATE": 4,
+    "STATUS": 5,
+  }
+
+class WorkflowNodeState:
+  INVOKED = 0
+  EXECUTING = 1
+  CANCELING = 2
+  CANCELED = 3
+  SUSPENDED = 4
+  COMPLETED = 5
+  FAILED = 6
+  UNKNOWN = 7
+
+  _VALUES_TO_NAMES = {
+    0: "INVOKED",
+    1: "EXECUTING",
+    2: "CANCELING",
+    3: "CANCELED",
+    4: "SUSPENDED",
+    5: "COMPLETED",
+    6: "FAILED",
+    7: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "INVOKED": 0,
+    "EXECUTING": 1,
+    "CANCELING": 2,
+    "CANCELED": 3,
+    "SUSPENDED": 4,
+    "COMPLETED": 5,
+    "FAILED": 6,
+    "UNKNOWN": 7,
+  }
+
+class TaskState:
+  WAITING = 0
+  STARTED = 1
+  PRE_PROCESSING = 2
+  CONFIGURING_WORKSPACE = 3
+  INPUT_DATA_STAGING = 4
+  OUTPUT_DATA_STAGING = 5
+  POST_PROCESSING = 6
+  EXECUTING = 7
+  CANCELING = 8
+  CANCELED = 9
+  COMPLETED = 10
+  FAILED = 11
+  UNKNOWN = 12
+
+  _VALUES_TO_NAMES = {
+    0: "WAITING",
+    1: "STARTED",
+    2: "PRE_PROCESSING",
+    3: "CONFIGURING_WORKSPACE",
+    4: "INPUT_DATA_STAGING",
+    5: "OUTPUT_DATA_STAGING",
+    6: "POST_PROCESSING",
+    7: "EXECUTING",
+    8: "CANCELING",
+    9: "CANCELED",
+    10: "COMPLETED",
+    11: "FAILED",
+    12: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "WAITING": 0,
+    "STARTED": 1,
+    "PRE_PROCESSING": 2,
+    "CONFIGURING_WORKSPACE": 3,
+    "INPUT_DATA_STAGING": 4,
+    "OUTPUT_DATA_STAGING": 5,
+    "POST_PROCESSING": 6,
+    "EXECUTING": 7,
+    "CANCELING": 8,
+    "CANCELED": 9,
+    "COMPLETED": 10,
+    "FAILED": 11,
+    "UNKNOWN": 12,
+  }
+
+class JobState:
+  SUBMITTED = 0
+  UN_SUBMITTED = 1
+  SETUP = 2
+  QUEUED = 3
+  ACTIVE = 4
+  COMPLETE = 5
+  CANCELING = 6
+  CANCELED = 7
+  FAILED = 8
+  HELD = 9
+  SUSPENDED = 10
+  UNKNOWN = 11
+
+  _VALUES_TO_NAMES = {
+    0: "SUBMITTED",
+    1: "UN_SUBMITTED",
+    2: "SETUP",
+    3: "QUEUED",
+    4: "ACTIVE",
+    5: "COMPLETE",
+    6: "CANCELING",
+    7: "CANCELED",
+    8: "FAILED",
+    9: "HELD",
+    10: "SUSPENDED",
+    11: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SUBMITTED": 0,
+    "UN_SUBMITTED": 1,
+    "SETUP": 2,
+    "QUEUED": 3,
+    "ACTIVE": 4,
+    "COMPLETE": 5,
+    "CANCELING": 6,
+    "CANCELED": 7,
+    "FAILED": 8,
+    "HELD": 9,
+    "SUSPENDED": 10,
+    "UNKNOWN": 11,
+  }
+
+class TransferState:
+  DIRECTORY_SETUP = 0
+  UPLOAD = 1
+  DOWNLOAD = 2
+  ACTIVE = 3
+  COMPLETE = 4
+  STDOUT_DOWNLOAD = 5
+  STDERROR_DOWNLOAD = 6
+  CANCELING = 7
+  CANCELED = 8
+  FAILED = 9
+  HELD = 10
+  SUSPENDED = 11
+  UNKNOWN = 12
+
+  _VALUES_TO_NAMES = {
+    0: "DIRECTORY_SETUP",
+    1: "UPLOAD",
+    2: "DOWNLOAD",
+    3: "ACTIVE",
+    4: "COMPLETE",
+    5: "STDOUT_DOWNLOAD",
+    6: "STDERROR_DOWNLOAD",
+    7: "CANCELING",
+    8: "CANCELED",
+    9: "FAILED",
+    10: "HELD",
+    11: "SUSPENDED",
+    12: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "DIRECTORY_SETUP": 0,
+    "UPLOAD": 1,
+    "DOWNLOAD": 2,
+    "ACTIVE": 3,
+    "COMPLETE": 4,
+    "STDOUT_DOWNLOAD": 5,
+    "STDERROR_DOWNLOAD": 6,
+    "CANCELING": 7,
+    "CANCELED": 8,
+    "FAILED": 9,
+    "HELD": 10,
+    "SUSPENDED": 11,
+    "UNKNOWN": 12,
+  }
+
+class ActionableGroup:
+  RESOURCE_ADMINS = 0
+  AIRAVATA_ADMINS = 1
+  GATEWAYS_ADMINS = 2
+  USER = 3
+  CANNOT_BE_DETERMINED = 4
+
+  _VALUES_TO_NAMES = {
+    0: "RESOURCE_ADMINS",
+    1: "AIRAVATA_ADMINS",
+    2: "GATEWAYS_ADMINS",
+    3: "USER",
+    4: "CANNOT_BE_DETERMINED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "RESOURCE_ADMINS": 0,
+    "AIRAVATA_ADMINS": 1,
+    "GATEWAYS_ADMINS": 2,
+    "USER": 3,
+    "CANNOT_BE_DETERMINED": 4,
+  }
+
+class ErrorCategory:
+  FILE_SYSTEM_FAILURE = 0
+  APPLICATION_FAILURE = 1
+  RESOURCE_NODE_FAILURE = 2
+  DISK_FULL = 3
+  INSUFFICIENT_ALLOCATION = 4
+  SYSTEM_MAINTENANCE = 5
+  AIRAVATA_INTERNAL_ERROR = 6
+  CANNOT_BE_DETERMINED = 7
+
+  _VALUES_TO_NAMES = {
+    0: "FILE_SYSTEM_FAILURE",
+    1: "APPLICATION_FAILURE",
+    2: "RESOURCE_NODE_FAILURE",
+    3: "DISK_FULL",
+    4: "INSUFFICIENT_ALLOCATION",
+    5: "SYSTEM_MAINTENANCE",
+    6: "AIRAVATA_INTERNAL_ERROR",
+    7: "CANNOT_BE_DETERMINED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "FILE_SYSTEM_FAILURE": 0,
+    "APPLICATION_FAILURE": 1,
+    "RESOURCE_NODE_FAILURE": 2,
+    "DISK_FULL": 3,
+    "INSUFFICIENT_ALLOCATION": 4,
+    "SYSTEM_MAINTENANCE": 5,
+    "AIRAVATA_INTERNAL_ERROR": 6,
+    "CANNOT_BE_DETERMINED": 7,
+  }
+
+class CorrectiveAction:
+  RETRY_SUBMISSION = 0
+  CONTACT_SUPPORT = 1
+  CANNOT_BE_DETERMINED = 2
+
+  _VALUES_TO_NAMES = {
+    0: "RETRY_SUBMISSION",
+    1: "CONTACT_SUPPORT",
+    2: "CANNOT_BE_DETERMINED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "RETRY_SUBMISSION": 0,
+    "CONTACT_SUPPORT": 1,
+    "CANNOT_BE_DETERMINED": 2,
+  }
+
+class ExecutionUnit:
+  INPUT = 0
+  APPLICATION = 1
+  OUTPUT = 2
+  OTHER = 3
+
+  _VALUES_TO_NAMES = {
+    0: "INPUT",
+    1: "APPLICATION",
+    2: "OUTPUT",
+    3: "OTHER",
+  }
+
+  _NAMES_TO_VALUES = {
+    "INPUT": 0,
+    "APPLICATION": 1,
+    "OUTPUT": 2,
+    "OTHER": 3,
+  }
+
+
+class ExperimentStatus:
+  """
+  Attributes:
+   - experimentState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'experimentState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, experimentState=None, timeOfStateChange=None,):
+    self.experimentState = experimentState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.experimentState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentStatus')
+    if self.experimentState is not None:
+      oprot.writeFieldBegin('experimentState', TType.I32, 1)
+      oprot.writeI32(self.experimentState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.experimentState is None:
+      raise TProtocol.TProtocolException(message='Required field experimentState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.experimentState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class WorkflowNodeStatus:
+  """
+  Attributes:
+   - workflowNodeState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'workflowNodeState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, workflowNodeState=None, timeOfStateChange=None,):
+    self.workflowNodeState = workflowNodeState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.workflowNodeState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('WorkflowNodeStatus')
+    if self.workflowNodeState is not None:
+      oprot.writeFieldBegin('workflowNodeState', TType.I32, 1)
+      oprot.writeI32(self.workflowNodeState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.workflowNodeState is None:
+      raise TProtocol.TProtocolException(message='Required field workflowNodeState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.workflowNodeState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskStatus:
+  """
+  Attributes:
+   - executionState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'executionState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, executionState=None, timeOfStateChange=None,):
+    self.executionState = executionState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.executionState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskStatus')
+    if self.executionState is not None:
+      oprot.writeFieldBegin('executionState', TType.I32, 1)
+      oprot.writeI32(self.executionState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.executionState is None:
+      raise TProtocol.TProtocolException(message='Required field executionState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.executionState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobStatus:
+  """
+  Attributes:
+   - jobState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'jobState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, jobState=None, timeOfStateChange=None,):
+    self.jobState = jobState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.jobState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobStatus')
+    if self.jobState is not None:
+      oprot.writeFieldBegin('jobState', TType.I32, 1)
+      oprot.writeI32(self.jobState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobState is None:
+      raise TProtocol.TProtocolException(message='Required field jobState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TransferStatus:
+  """
+  Attributes:
+   - transferState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'transferState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, transferState=None, timeOfStateChange=None,):
+    self.transferState = transferState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.transferState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TransferStatus')
+    if self.transferState is not None:
+      oprot.writeFieldBegin('transferState', TType.I32, 1)
+      oprot.writeI32(self.transferState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.transferState is None:
+      raise TProtocol.TProtocolException(message='Required field transferState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.transferState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ApplicationStatus:
+  """
+  Attributes:
+   - applicationState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'applicationState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, applicationState=None, timeOfStateChange=None,):
+    self.applicationState = applicationState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.applicationState = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ApplicationStatus')
+    if self.applicationState is not None:
+      oprot.writeFieldBegin('applicationState', TType.STRING, 1)
+      oprot.writeString(self.applicationState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.applicationState is None:
+      raise TProtocol.TProtocolException(message='Required field applicationState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.applicationState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ComputationalResourceScheduling:
+  """
+  A structure holding the Computational Resource Scheduling.
+
+
+  Attributes:
+   - resourceHostId
+   - totalCPUCount
+   - nodeCount
+   - numberOfThreads
+   - queueName
+   - wallTimeLimit
+   - jobStartTime
+   - totalPhysicalMemory
+   - computationalProjectAccount
+   - chassisName
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'resourceHostId', None, None, ), # 1
+    (2, TType.I32, 'totalCPUCount', None, None, ), # 2
+    (3, TType.I32, 'nodeCount', None, None, ), # 3
+    (4, TType.I32, 'numberOfThreads', None, None, ), # 4
+    (5, TType.STRING, 'queueName', None, None, ), # 5
+    (6, TType.I32, 'wallTimeLimit', None, None, ), # 6
+    (7, TType.I32, 'jobStartTime', None, None, ), # 7
+    (8, TType.I32, 'totalPhysicalMemory', None, None, ), # 8
+    (9, TType.STRING, 'computationalProjectAccount', None, None, ), # 9
+    (10, TType.STRING, 'chassisName', None, None, ), # 10
+  )
+
+  def __init__(self, resourceHostId=None, totalCPUCount=None, nodeCount=None, numberOfThreads=None, queueName=None, wallTimeLimit=None, jobStartTime=None, totalPhysicalMemory=None, computationalProjectAccount=None, chassisName=None,):
+    self.resourceHostId = resourceHostId
+    self.totalCPUCount = totalCPUCount
+    self.nodeCount = nodeCount
+    self.numberOfThreads = numberOfThreads
+    self.queueName = queueName
+    self.wallTimeLimit = wallTimeLimit
+    self.jobStartTime = jobStartTime
+    self.totalPhysicalMemory = totalPhysicalMemory
+    self.computationalProjectAccount = computationalProjectAccount
+    self.chassisName = chassisName
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.resourceHostId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.totalCPUCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.nodeCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.numberOfThreads = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.queueName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.wallTimeLimit = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.jobStartTime = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.totalPhysicalMemory = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.computationalProjectAccount = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.chassisName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComputationalResourceScheduling')
+    if self.resourceHostId is not None:
+      oprot.writeFieldBegin('resourceHostId', TType.STRING, 1)
+      oprot.writeString(self.resourceHostId)
+      oprot.writeFieldEnd()
+    if self.totalCPUCount is not None:
+      oprot.writeFieldBegin('totalCPUCount', TType.I32, 2)
+      oprot.writeI32(self.totalCPUCount)
+      oprot.writeFieldEnd()
+    if self.nodeCount is not None:
+      oprot.writeFieldBegin('nodeCount', TType.I32, 3)
+      oprot.writeI32(self.nodeCount)
+      oprot.writeFieldEnd()
+    if self.numberOfThreads is not None:
+      oprot.writeFieldBegin('numberOfThreads', TType.I32, 4)
+      oprot.writeI32(self.numberOfThreads)
+      oprot.writeFieldEnd()
+    if self.queueName is not None:
+      oprot.writeFieldBegin('queueName', TType.STRING, 5)
+      oprot.writeString(self.queueName)
+      oprot.writeFieldEnd()
+    if self.wallTimeLimit is not None:
+      oprot.writeFieldBegin('wallTimeLimit', TType.I32, 6)
+      oprot.writeI32(self.wallTimeLimit)
+      oprot.writeFieldEnd()
+    if self.jobStartTime is not None:
+      oprot.writeFieldBegin('jobStartTime', TType.I32, 7)
+      oprot.writeI32(self.jobStartTime)
+      oprot.writeFieldEnd()
+    if self.totalPhysicalMemory is not None:
+      oprot.writeFieldBegin('totalPhysicalMemory', TType.I32, 8)
+      oprot.writeI32(self.totalPhysicalMemory)
+      oprot.writeFieldEnd()
+    if self.computationalProjectAccount is not None:
+      oprot.writeFieldBegin('computationalProjectAccount', TType.STRING, 9)
+      oprot.writeString(self.computationalProjectAccount)
+      oprot.writeFieldEnd()
+    if self.chassisName is not None:
+      oprot.writeFieldBegin('chassisName', TType.STRING, 10)
+      oprot.writeString(self.chassisName)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.resourceHostId)
+    value = (value * 31) ^ hash(self.totalCPUCount)
+    value = (value * 31) ^ hash(self.nodeCount)
+    value = (value * 31) ^ hash(self.numberOfThreads)
+    value = (value * 31) ^ hash(self.queueName)
+    value = (value * 31) ^ hash(self.wallTimeLimit)
+    value = (value * 31) ^ hash(self.jobStartTime)
+    value = (value * 31) ^ hash(self.totalPhysicalMemory)
+    value = (value * 31) ^ hash(self.computationalProjectAccount)
+    value = (value * 31) ^ hash(self.chassisName)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AdvancedInputDataHandling:
+  """
+  A structure holding specified input data handling.
+
+
+  Attributes:
+   - stageInputFilesToWorkingDir
+   - parentWorkingDirectory
+   - uniqueWorkingDirectory
+   - cleanUpWorkingDirAfterJob
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'stageInputFilesToWorkingDir', None, False, ), # 1
+    (2, TType.STRING, 'parentWorkingDirectory', None, None, ), # 2
+    (3, TType.STRING, 'uniqueWorkingDirectory', None, None, ), # 3
+    (4, TType.BOOL, 'cleanUpWorkingDirAfterJob', None, False, ), # 4
+  )
+
+  def __init__(self, stageInputFilesToWorkingDir=thrift_spec[1][4], parentWorkingDirectory=None, uniqueWorkingDirectory=None, cleanUpWorkingDirAfterJob=thrift_spec[4][4],):
+    self.stageInputFilesToWorkingDir = stageInputFilesToWorkingDir
+    self.parentWorkingDirectory = parentWorkingDirectory
+    self.uniqueWorkingDirectory = uniqueWorkingDirectory
+    self.cleanUpWorkingDirAfterJob = cleanUpWorkingDirAfterJob
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.stageInputFilesToWorkingDir = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.parentWorkingDirectory = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.uniqueWorkingDirectory = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.BOOL:
+          self.cleanUpWorkingDirAfterJob = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AdvancedInputDataHandling')
+    if self.stageInputFilesToWorkingDir is not None:
+      oprot.writeFieldBegin('stageInputFilesToWorkingDir', TType.BOOL, 1)
+      oprot.writeBool(self.stageInputFilesToWorkingDir)
+      oprot.writeFieldEnd()
+    if self.parentWorkingDirectory is not None:
+      oprot.writeFieldBegin('parentWorkingDirectory', TType.STRING, 2)
+      oprot.writeString(self.parentWorkingDirectory)
+      oprot.writeFieldEnd()
+    if self.uniqueWorkingDirectory is not None:
+      oprot.writeFieldBegin('uniqueWorkingDirectory', TType.STRING, 3)
+      oprot.writeString(self.uniqueWorkingDirectory)
+      oprot.writeFieldEnd()
+    if self.cleanUpWorkingDirAfterJob is not None:
+      oprot.writeFieldBegin('cleanUpWorkingDirAfterJob', TType.BOOL, 4)
+      oprot.writeBool(self.cleanUpWorkingDirAfterJob)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.stageInputFilesToWorkingDir)
+    value = (value * 31) ^ hash(self.parentWorkingDirectory)
+    value = (value * 31) ^ hash(self.uniqueWorkingDirectory)
+    value = (value * 31) ^ hash(self.cleanUpWorkingDirAfterJob)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AdvancedOutputDataHandling:
+  """
+  A structure holding specified output data handling.
+
+
+  Attributes:
+   - outputDataDir
+   - dataRegistryURL
+   - persistOutputData
+  """
+
+  thrift_spec = (
+    None, # 0
+    None, # 1
+    (2, TType.STRING, 'outputDataDir', None, None, ), # 2
+    (3, TType.STRING, 'dataRegistryURL', None, None, ), # 3
+    (4, TType.BOOL, 'persistOutputData', None, True, ), # 4
+  )
+
+  def __init__(self, outputDataDir=None, dataRegistryURL=None, persistOutputData=thrift_spec[4][4],):
+    self.outputDataDir = outputDataDir
+    self.dataRegistryURL = dataRegistryURL
+    self.persistOutputData = persistOutputData
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 2:
+        if ftype == TType.STRING:
+          self.outputDataDir = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.dataRegistryURL = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.BOOL:
+          self.persistOutputData = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AdvancedOutputDataHandling')
+    if self.outputDataDir is not None:
+      oprot.writeFieldBegin('outputDataDir', TType.STRING, 2)
+      oprot.writeString(self.outputDataDir)
+      oprot.writeFieldEnd()
+    if self.dataRegistryURL is not None:
+      oprot.writeFieldBegin('dataRegistryURL', TType.STRING, 3)
+      oprot.writeString(self.dataRegistryURL)
+      oprot.writeFieldEnd()
+    if self.persistOutputData is not None:
+      oprot.writeFieldBegin('persistOutputData', TType.BOOL, 4)
+      oprot.writeBool(self.persistOutputData)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.outputDataDir)
+    value = (value * 31) ^ hash(self.dataRegistryURL)
+    value = (value * 31) ^ hash(self.persistOutputData)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class QualityOfServiceParams:
+  """
+  A structure holding Quality of Service Parameters.
+
+
+  Attributes:
+   - startExecutionAt
+   - executeBefore
+   - numberofRetries
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'startExecutionAt', None, None, ), # 1
+    (2, TType.STRING, 'executeBefore', None, None, ), # 2
+    (3, TType.I32, 'numberofRetries', None, None, ), # 3
+  )
+
+  def __init__(self, startExecutionAt=None, executeBefore=None, numberofRetries=None,):
+    self.startExecutionAt = startExecutionAt
+    self.executeBefore = executeBefore
+    self.numberofRetries = numberofRetries
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.startExecutionAt = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.executeBefore = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.numberofRetries = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('QualityOfServiceParams')
+    if self.startExecutionAt is not None:
+      oprot.writeFieldBegin('startExecutionAt', TType.STRING, 1)
+      oprot.writeString(self.startExecutionAt)
+      oprot.writeFieldEnd()
+    if self.executeBefore is not None:
+      oprot.writeFieldBegin('executeBefore', TType.STRING, 2)
+      oprot.writeString(self.executeBefore)
+      oprot.writeFieldEnd()
+    if self.numberofRetries is not None:
+      oprot.writeFieldBegin('numberofRetries', TType.I32, 3)
+      oprot.writeI32(self.numberofRetries)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.startExecutionAt)
+    value = (value * 31) ^ hash(self.executeBefore)
+    value = (value * 31) ^ hash(self.numberofRetries)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class UserConfigurationData:
+  """
+  A structure holding the experiment configuration.
+
+
+
+  Attributes:
+   - airavataAutoSchedule
+   - overrideManualScheduledParams
+   - shareExperimentPublicly
+   - computationalResourceScheduling
+   - advanceInputDataHandling
+   - advanceOutputDataHandling
+   - qosParams
+   - throttleResources
+   - userDN
+   - generateCert
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'airavataAutoSchedule', None, False, ), # 1
+    (2, TType.BOOL, 'overrideManualScheduledParams', None, False, ), # 2
+    (3, TType.BOOL, 'shareExperimentPublicly', None, False, ), # 3
+    (4, TType.STRUCT, 'computationalResourceScheduling', (ComputationalResourceScheduling, ComputationalResourceScheduling.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'advanceInputDataHandling', (AdvancedInputDataHandling, AdvancedInputDataHandling.thrift_spec), None, ), # 5
+    (6, TType.STRUCT, 'advanceOutputDataHandling', (AdvancedOutputDataHandling, AdvancedOutputDataHandling.thrift_spec), None, ), # 6
+    (7, TType.STRUCT, 'qosParams', (QualityOfServiceParams, QualityOfServiceParams.thrift_spec), None, ), # 7
+    (8, TType.BOOL, 'throttleResources', None, False, ), # 8
+    (9, TType.STRING, 'userDN', None, None, ), # 9
+    (10, TType.BOOL, 'generateCert', None, False, ), # 10
+  )
+
+  def __init__(self, airavataAutoSchedule=thrift_spec[1][4], overrideManualScheduledParams=thrift_spec[2][4], shareExperimentPublicly=thrift_spec[3][4], computationalResourceScheduling=None, advanceInputDataHandling=None, advanceOutputDataHandling=None, qosParams=None, throttleResources=thrift_spec[8][4], userDN=None, generateCert=thrift_spec[10][4],):
+    self.airavataAutoSchedule = airavataAutoSchedule
+    self.overrideManualScheduledParams = overrideManualScheduledParams
+    self.shareExperimentPublicly = shareExperimentPublicly
+    self.computationalResourceScheduling = computationalResourceScheduling
+    self.advanceInputDataHandling = advanceInputDataHandling
+    self.advanceOutputDataHandling = advanceOutputDataHandling
+    self.qosParams = qosParams
+    self.throttleResources = throttleResources
+    self.userDN = userDN
+    self.generateCert = generateCert
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.airavataAutoSchedule = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.BOOL:
+          self.overrideManualScheduledParams = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.BOOL:
+          self.shareExperimentPublicly = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.computationalResourceScheduling = ComputationalResourceScheduling()
+          self.computationalResourceScheduling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.advanceInputDataHandling = AdvancedInputDataHandling()
+          self.advanceInputDataHandling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRUCT:
+          self.advanceOutputDataHandling = AdvancedOutputDataHandling()
+          self.advanceOutputDataHandling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRUCT:
+          self.qosParams = QualityOfServiceParams()
+          self.qosParams.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.BOOL:
+          self.throttleResources = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.userDN = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.BOOL:
+          self.generateCert = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UserConfigurationData')
+    if self.airavataAutoSchedule is not None:
+      oprot.writeFieldBegin('airavataAutoSchedule', TType.BOOL, 1)
+      oprot.writeBool(self.airavataAutoSchedule)
+      oprot.writeFieldEnd()
+    if self.overrideManualScheduledParams is not None:
+      oprot.writeFieldBegin('overrideManualScheduledParams', TType.BOOL, 2)
+      oprot.writeBool(self.overrideManualScheduledParams)
+      oprot.writeFieldEnd()
+    if self.shareExperimentPublicly is not None:
+      oprot.writeFieldBegin('shareExperimentPublicly', TType.BOOL, 3)
+      oprot.writeBool(self.shareExperimentPublicly)
+      oprot.writeFieldEnd()
+    if self.computationalResourceScheduling is not None:
+      oprot.writeFieldBegin('computationalResourceScheduling', TType.STRUCT, 4)
+      self.computationalResourceScheduling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.advanceInputDataHandling is not None:
+      oprot.writeFieldBegin('advanceInputDataHandling', TType.STRUCT, 5)
+      self.advanceInputDataHandling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.advanceOutputDataHandling is not None:
+      oprot.writeFieldBegin('advanceOutputDataHandling', TType.STRUCT, 6)
+      self.advanceOutputDataHandling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.qosParams is not None:
+      oprot.writeFieldBegin('qosParams', TType.STRUCT, 7)
+      self.qosParams.write(oprot)
+      oprot.writeFieldEnd()
+    if self.throttleResources is not None:
+      oprot.writeFieldBegin('throttleResources', TType.BOOL, 8)
+      oprot.writeBool(self.throttleResources)
+      oprot.writeFieldEnd()
+    if self.userDN is not None:
+      oprot.writeFieldBegin('userDN', TType.STRING, 9)
+      oprot.writeString(self.userDN)
+      oprot.writeFieldEnd()
+    if self.generateCert is not None:
+      oprot.writeFieldBegin('generateCert', TType.BOOL, 10)
+      oprot.writeBool(self.generateCert)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataAutoSchedule is None:
+      raise TProtocol.TProtocolException(message='Required field airavataAutoSchedule is unset!')
+    if self.overrideManualScheduledParams is None:
+      raise TProtocol.TProtocolException(message='Required field overrideManualScheduledParams is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataAutoSchedule)
+    value = (value * 31) ^ hash(self.overrideManualScheduledParams)
+    value = (value * 31) ^ hash(self.shareExperimentPublicly)
+    value = (value * 31) ^ hash(self.computationalResourceScheduling)
+    value = (value * 31) ^ hash(self.advanceInputDataHandling)
+    value = (value * 31) ^ hash(self.advanceOutputDataHandling)
+    value = (value * 31) ^ hash(self.qosParams)
+    value = (value * 31) ^ hash(self.throttleResources)
+    value = (value * 31) ^ hash(self.userDN)
+    value = (value * 31) ^ hash(self.generateCert)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ErrorDetails:
+  """
+  Attributes:
+   - errorID
+   - creationTime
+   - actualErrorMessage
+   - userFriendlyMessage
+   - errorCategory
+   - transientOrPersistent
+   - correctiveAction
+   - actionableGroup
+   - rootCauseErrorIdList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'errorID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'actualErrorMessage', None, None, ), # 3
+    (4, TType.STRING, 'userFriendlyMessage', None, None, ), # 4
+    (5, TType.I32, 'errorCategory', None, None, ), # 5
+    (6, TType.BOOL, 'transientOrPersistent', None, False, ), # 6
+    (7, TType.I32, 'correctiveAction', None, None, ), # 7
+    (8, TType.I32, 'actionableGroup', None, None, ), # 8
+    (9, TType.LIST, 'rootCauseErrorIdList', (TType.STRING,None), None, ), # 9
+  )
+
+  def __init__(self, errorID=thrift_spec[1][4], creationTime=None, actualErrorMessage=None, userFriendlyMessage=None, errorCategory=None, transientOrPersistent=thrift_spec[6][4], correctiveAction=None, actionableGroup=None, rootCauseErrorIdList=None,):
+    self.errorID = errorID
+    self.creationTime = creationTime
+    self.actualErrorMessage = actualErrorMessage
+    self.userFriendlyMessage = userFriendlyMessage
+    self.errorCategory = errorCategory
+    self.transientOrPersistent = transientOrPersistent
+    self.correctiveAction = correctiveAction
+    self.actionableGroup = actionableGroup
+    self.rootCauseErrorIdList = rootCauseErrorIdList
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.errorID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.actualErrorMessage = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.userFriendlyMessage = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.errorCategory = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.BOOL:
+          self.transientOrPersistent = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.correctiveAction = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.actionableGroup = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.rootCauseErrorIdList = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString();
+            self.rootCauseErrorIdList.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ErrorDetails')
+    if self.errorID is not None:
+      oprot.writeFieldBegin('errorID', TType.STRING, 1)
+      oprot.writeString(self.errorID)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.actualErrorMessage is not None:
+      oprot.writeFieldBegin('actualErrorMessage', TType.STRING, 3)
+      oprot.writeString(self.actualErrorMessage)
+      oprot.writeFieldEnd()
+    if self.userFriendlyMessage is not None:
+      oprot.writeFieldBegin('userFriendlyMessage', TType.STRING, 4)
+      oprot.writeString(self.userFriendlyMessage)
+      oprot.writeFieldEnd()
+    if self.errorCategory is not None:
+      oprot.writeFieldBegin('errorCategory', TType.I32, 5)
+      oprot.writeI32(self.errorCategory)
+      oprot.writeFieldEnd()
+    if self.transientOrPersistent is not None:
+      oprot.writeFieldBegin('transientOrPersistent', TType.BOOL, 6)
+      oprot.writeBool(self.transientOrPersistent)
+      oprot.writeFieldEnd()
+    if self.correctiveAction is not None:
+      oprot.writeFieldBegin('correctiveAction', TType.I32, 7)
+      oprot.writeI32(self.correctiveAction)
+      oprot.writeFieldEnd()
+    if self.actionableGroup is not None:
+      oprot.writeFieldBegin('actionableGroup', TType.I32, 8)
+      oprot.writeI32(self.actionableGroup)
+      oprot.writeFieldEnd()
+    if self.rootCauseErrorIdList is not None:
+      oprot.writeFieldBegin('rootCauseErrorIdList', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRING, len(self.rootCauseErrorIdList))
+      for iter6 in self.rootCauseErrorIdList:
+        oprot.writeString(iter6)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.errorID is None:
+      raise TProtocol.TProtocolException(message='Required field errorID is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.errorID)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.actualErrorMessage)
+    value = (value * 31) ^ hash(self.userFriendlyMessage)
+    value = (value * 31) ^ hash(self.errorCategory)
+    value = (value * 31) ^ hash(self.transientOrPersistent)
+    value = (value * 31) ^ hash(self.correctiveAction)
+    value = (value * 31) ^ hash(self.actionableGroup)
+    value = (value * 31) ^ hash(self.rootCauseErrorIdList)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobDetails:
+  """
+  Attributes:
+   - jobID
+   - jobDescription
+   - creationTime
+   - jobStatus
+   - applicationStatus
+   - errors
+   - computeResourceConsumed
+   - jobName
+   - workingDir
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'jobDescription', None, None, ), # 2
+    (3, TType.I64, 'creationTime', None, None, ), # 3
+    (4, TType.STRUCT, 'jobStatus', (JobStatus, JobStatus.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'applicationStatus', (ApplicationStatus, ApplicationStatus.thrift_spec), None, ), # 5
+    (6, TType.LIST, 'errors', (TType.STRUCT,(ErrorDetails, ErrorDetails.thrift_spec)), None, ), # 6
+    (7, TType.STRING, 'computeResourceConsumed', None, None, ), # 7
+    (8, TType.STRING, 'jobName', None, None, ), # 8
+    (9, TType.STRING, 'workingDir', None, None, ), # 9
+  )
+
+  def __init__(self, jobID=thrift_spec[1][4], jobDescription=None, creationTime=None, jobStatus=None, applicationStatus=None, errors=None, computeResourceConsumed=None, jobName=None, workingDir=None,):
+    self.jobID = jobID
+    self.jobDescription = jobDescription
+    self.creationTime = creationTime
+    self.jobStatus = jobStatus
+    self.applicationStatus = applicationStatus
+    self.errors = errors
+    self.computeResourceConsumed = computeResourceConsumed
+    self.jobName = jobName
+    self.workingDir = workingDir
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.jobDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.jobStatus = JobStatus()
+          self.jobStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.applicationStatus = ApplicationStatus()
+          self.applicationStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.errors = []
+          (_etype10, _size7) = iprot.readListBegin()
+          for _i11 in xrange(_size7):
+            _elem12 = ErrorDetails()
+            _elem12.read(iprot)
+            self.errors.append(_elem12)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.computeResourceConsumed = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.jobName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.workingDir = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobDetails')
+    if self.jobID is not None:
+      oprot.writeFieldBegin('jobID', TType.STRING, 1)
+      oprot.writeString(self.jobID)
+      oprot.writeFieldEnd()
+    if self.jobDescription is not None:
+      oprot.writeFieldBegin('jobDescription', TType.STRING, 2)
+      oprot.writeString(self.jobDescription)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 3)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.jobStatus is not None:
+      oprot.writeFieldBegin('jobStatus', TType.STRUCT, 4)
+      self.jobStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.applicationStatus is not None:
+      oprot.writeFieldBegin('applicationStatus', TType.STRUCT, 5)
+      self.applicationStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.errors is not None:
+      oprot.writeFieldBegin('errors', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.errors))
+      for iter13 in self.errors:
+        iter13.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.computeResourceConsumed is not None:
+      oprot.writeFieldBegin('computeResourceConsumed', TType.STRING, 7)
+      oprot.writeString(self.computeResourceConsumed)
+      oprot.writeFieldEnd()
+    if self.jobName is not None:
+      oprot.writeFieldBegin('jobName', TType.STRING, 8)
+      oprot.writeString(self.jobName)
+      oprot.writeFieldEnd()
+    if self.workingDir is not None:
+      oprot.writeFieldBegin('workingDir', TType.STRING, 9)
+      oprot.writeString(self.workingDir)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobID is None:
+      raise TProtocol.TProtocolException(message='Required field jobID is unset!')
+    if self.jobDescription is None:
+      raise TProtocol.TProtocolException(message='Required field jobDescription is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobID)
+    value = (value * 31) ^ hash(self.jobDescription)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.jobStatus)
+    value = (value * 31) ^ hash(self.applicationStatus)
+    value = (value * 31) ^ hash(self.errors)
+    value = (value * 31) ^ hash(self.computeResourceConsumed)
+    value = (value * 31) ^ hash(self.jobName)
+    value = (value * 31) ^ hash(self.workingDir)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataTransferDetails:
+  """
+  Attributes:
+   - transferID
+   - creationTime
+   - transferDescription
+   - transferStatus
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'transferID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'transferDescription', None, None, ), # 3
+    (4, TType.STRUCT, 'transferStatus', (TransferStatus, TransferStatus.thrift_spec), None, ), # 4
+  )
+
+  def __init__(self, transferID=thrift_spec[1][4], creationTime=None, transferDescription=None, transferStatus=None,):
+    self.transferID = transferID
+    self.creationTime = creationTime
+    self.transferDescription = transferDescription
+    self.transferStatus = transferStatus
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.transferID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.transferDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.transferStatus = TransferStatus()
+          self.transferStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataTransferDetails')
+    if self.transferID is not None:
+      oprot.writeFieldBegin('transferID', TType.STRING, 1)
+      oprot.writeString(self.transferID)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.transferDescription is not None:
+      oprot.writeFieldBegin('transferDescription', TType.STRING, 3)
+      oprot.writeString(self.transferDescription)
+      oprot.writeFieldEnd()
+    if self.transferStatus is not None:
+      oprot.writeFieldBegin('transferStatus', TType.STRUCT, 4)
+      self.transferStatus.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.transferID is None:
+      raise TProtocol.TProtocolException(message='Required field transferID is unset!')
+    if self.transferDescription is None:
+      raise TProtocol.TProtocolException(message='Required field transferDescription is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.transferID)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.transferDescription)
+    value = (value * 31) ^ hash(self.transferStatus)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskDetails:
+  """
+  A structure holding the actual execution context decided based on user provided configuration data or system inferred
+    information from scheduling and QoS parameters. One experiment can have multiple tasks. Each tasks results in
+    data transfers and jobs
+
+
+  Attributes:
+   - taskID
+   - creationTime
+   - applicationId
+   - applicationVersion
+   - applicationDeploymentId
+   - applicationInputs
+   - applicationOutputs
+   - taskScheduling
+   - advancedInputDataHandling
+   - advancedOutputDataHandling
+   - taskStatus
+   - jobDetailsList
+   - dataTransferDetailsList
+   - errors
+   - enableEmailNotification
+   - emailAddresses
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'taskID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'applicationId', None, None, ), # 3
+    (4, TType.STRING, 'applicationVersion', None, None, ), # 4
+    (5, TType.STRING, 'applicationDeploymentId', None, None, ), # 5
+    (6, TType.LIST, 'applicationInputs', (TType.STRUCT,(apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType, apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType.thrift_spec)), None, ), # 6
+    (7, TType.LIST, 'applicationOutputs', (TType.STRUCT,(apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType, apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 7
+    (8, TType.STRUCT, 'taskScheduling', (ComputationalResourceScheduling, ComputationalResourceScheduling.thrift_spec), None, ), # 8
+    (9, TType.STRUCT, 'advancedInputDataHandling', (AdvancedInputDataHandling, AdvancedInputDataHandling.thrift_spec), None, ), # 9
+    (10, TType.STRUCT, 'advancedOutputDataHandling', (AdvancedOutputDataHandling, AdvancedOutputDataHandling.thrift_spec), None, ), # 10
+    (11, TType.STRUCT, 'taskStatus', (TaskStatus, TaskStatus.thrift_spec), None, ), # 11
+    (12, TType.LIST, 'jobDetailsList', (TType.STRUCT,(JobDetails, JobDetails.thrift_spec)), None, ), # 12
+    (13, TType.LIST, 'dataTransferDetailsList', (TType.STRUCT,(DataTransferDetails, DataTransferDetails.thrift_spec)), None, ), # 13
+    (14, TType.LIST, 'errors', (TType.STRUCT,(ErrorDetails, ErrorDetails.thrift_spec)), None, ), # 14
+    (15, TType.BOOL, 'enableEmailNotification', None, None, ), # 15
+    (16, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 16
+  )
+
+  def __init__(self, taskID=thrift_spec[1][4], creationTime=None, applicationId=None, applicationVersion=None, applicationDeploymentId=None, applicationInputs=None, applicationOutputs=None, taskScheduling=None, advancedInputDataHandling=None, advancedOutputDataHandling=None, taskStatus=None, jobDetailsList=None, dataTransferDetailsList=None, errors=None, enableEmailNotification=None, emailAddresses=None,):
+    self.taskID = taskID
+    self.creationTime = creationTime
+    self.applicationId = applicationId
+    self.applicationVersion = applicationVersion
+    self.applicationDeploymentId = applicationDeploymentId
+    self.applicationInputs = applicationInputs
+    self.applicationOutputs = applicationOutputs
+    self.taskScheduling = taskScheduling
+    self.advancedInputDataHandling = advancedInputDataHandling
+    self.advancedOutputDataHandling = advancedOutputDataHandling
+    self.taskStatus = taskStatus
+    self.jobDetailsList = jobDetailsList
+    self.dataTransferDetailsList = dataTransferDetailsList
+    self.errors = errors
+    self.enableEmailNotification = enableEmailNotification
+    self.emailAddresses = emailAddresses
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.taskID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.applicationId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.applicationVersion = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.applicationDeploymentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.applicationInputs = []
+          (_etype17, _size14) = iprot.readListBegin()
+          for _i18 in xrange(_size14):
+            _elem19 = apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType()
+            _elem19.read(iprot)
+            self.applicationInputs.append(_elem19)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.applicationOutputs = []
+          (_etype23, _size20) = iprot.readListBegin()
+          for _i24 in xrange(_size20):
+            _elem25 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
+            _elem25.read(iprot)
+            self.applicationOutputs.append(_elem25)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRUCT:
+          self.taskScheduling = ComputationalResourceScheduling()
+          self.taskScheduling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRUCT:
+          self.advancedInputDataHandling = AdvancedInputDataHandling()
+          self.advancedInputDataHandling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRUCT:
+          self.advancedOutputDataHandling = AdvancedOutputDataHandling()
+          self.advancedOutputDataHandling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRUCT:
+          self.taskStatus = TaskStatus()
+          self.taskStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.jobDetailsList = []
+          (_etype29, _size26) = iprot.readListBegin()
+          for _i30 in xrange(_size26):
+            _elem31 = JobDetails()
+            _elem31.read(iprot)
+            self.jobDetailsList.append(_elem31)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.LIST:
+          self.dataTransferDetailsList = []
+          (_etype35, _size32) = iprot.readListBegin()
+          for _i36 in xrange(_size32):
+            _elem37 = DataTransferDetails()
+            _elem37.read(iprot)
+            self.dataTransferDetailsList.append(_elem37)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.LIST:
+          self.errors = []
+          (_etype41, _size38) = iprot.readListBegin()
+          for _i42 in xrange(_size38):
+            _elem43 = ErrorDetails()
+            _elem43.read(iprot)
+            self.errors.append(_elem43)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 15:
+        if ftype == TType.BOOL:
+          self.enableEmailNotification = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 16:
+        if ftype == TType.LIST:
+          self.emailAddresses = []
+          (_etype47, _size44) = iprot.readListBegin()
+          for _i48 in xrange(_size44):
+            _elem49 = iprot.readString();
+            self.emailAddresses.append(_elem49)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskDetails')
+    if self.taskID is not None:
+      oprot.writeFieldBegin('taskID', TType.STRING, 1)
+      oprot.writeString(self.taskID)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.applicationId is not None:
+      oprot.writeFieldBegin('applicationId', TType.STRING, 3)
+      oprot.writeString(self.applicationId)
+      oprot.writeFieldEnd()
+    if self.applicationVersion is not None:
+      oprot.writeFieldBegin('applicationVersion', TType.STRING, 4)
+      oprot.writeString(self.applicationVersion)
+      oprot.writeFieldEnd()
+    if self.applicationDeploymentId is not None:
+      oprot.writeFieldBegin('applicationDeploymentId', TType.STRING, 5)
+      oprot.writeString(self.applicationDeploymentId)
+      oprot.writeFieldEnd()
+    if self.applicationInputs is not None:
+      oprot.writeFieldBegin('applicationInputs', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.applicationInputs))
+      for iter50 in self.applicationInputs:
+        iter50.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.applicationOutputs is not None:
+      oprot.writeFieldBegin('applicationOutputs', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.applicationOutputs))
+      for iter51 in self.applicationOutputs:
+        iter51.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.taskScheduling is not None:
+      oprot.writeFieldBegin('taskScheduling', TType.STRUCT, 8)
+      self.taskScheduling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.advancedInputDataHandling is not None:
+      oprot.writeFieldBegin('advancedInputDataHandling', TType.STRUCT, 9)
+      self.advancedInputDataHandling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.advancedOutputDataHandling is not None:
+      oprot.writeFieldBegin('advancedOutputDataHandling', TType.STRUCT, 10)
+      self.advancedOutputDataHandling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.taskStatus is not None:
+      oprot.writeFieldBegin('taskStatus', TType.STRUCT, 11)
+      self.taskStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.jobDetailsList is not None:
+      oprot.writeFieldBegin('jobDetailsList', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRUCT, len(self.jobDetailsList))
+      for iter52 in self.jobDetailsList:
+        iter52.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.dataTransferDetailsList is not None:
+      oprot.writeFieldBegin('dataTransferDetailsList', TType.LIST, 13)
+      oprot.writeListBegin(TType.STRUCT, len(self.dataTransferDetailsList))
+      for iter53 in self.dataTransferDetailsList:
+        iter53.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.errors is not None:
+      oprot.writeFieldBegin('errors', TType.LIST, 14)
+      oprot.writeListBegin(TType.STRUCT, len(self.errors))
+      for iter54 in self.errors:
+        iter54.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.enableEmailNotification is not None:
+      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 15)
+      oprot.writeBool(self.enableEmailNotification)
+      oprot.writeFieldEnd()
+    if self.emailAddresses is not None:
+      oprot.writeFieldBegin('emailAddresses', TType.LIST, 16)
+      oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
+      for iter55 in self.emailAddresses:
+        oprot.writeString(iter55)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.taskID is None:
+      raise TProtocol.TProtocolException(message='Required field taskID is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.taskID)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.applicationId)
+    value = (value * 31) ^ hash(self.applicationVersion)
+    value = (value * 31) ^ hash(self.applicationDeploymentId)
+    value = (value * 31) ^ hash(self.applicationInputs)
+    value = (value * 31) ^ hash(self.applicationOutputs)
+    value = (value * 31) ^ hash(self.taskScheduling)
+    value = (value * 31) ^ hash(self.advancedInputDataHandling)
+    value = (value * 31) ^ hash(self.advancedOutputDataHandling)
+    value = (value * 31) ^ hash(self.taskStatus)
+    value = (value * 31) ^ hash(self.jobDetailsList)
+    value = (value * 31) ^ hash(self.dataTransferDetailsList)
+    value = (value * 31) ^ hash(self.errors)
+    value = (value * 31) ^ hash(self.enableEmailNotification)
+    value = (value * 31) ^ hash(self.emailAddresses)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class WorkflowNodeDetails:
+  """
+  A structure holding the node data.
+  nodeInstanceId - unique node identifier for each run
+
+  Attributes:
+   - nodeInstanceId
+   - creationTime
+   - nodeName
+   - executionUnit
+   - executionUnitData
+   - nodeInputs
+   - nodeOutputs
+   - workflowNodeStatus
+   - taskDetailsList
+   - errors
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'nodeInstanceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'nodeName', None, "SINGLE_APP_NODE", ), # 3
+    (4, TType.I32, 'executionUnit', None,     1, ), # 4
+    (5, TType.STRING, 'executionUnitData', None, None, ), # 5
+    (6, TType.LIST, 'nodeInputs', (TType.STRUCT,(apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType, apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType.thrift_spec)), None, ), # 6
+    (7, TType.LIST, 'nodeOutputs', (TType.STRUCT,(apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType, apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 7
+    (8, TType.STRUCT, 'workflowNodeStatus', (WorkflowNodeStatus, WorkflowNodeStatus.thrift_spec), None, ), # 8
+    (9, TType.LIST, 'taskDetailsList', (TType.STRUCT,(TaskDetails, TaskDetails.thrift_spec)), None, ), # 9
+    (10, TType.LIST, 'errors', (TType.STRUCT,(ErrorDetails, ErrorDetails.thrift_spec)), None, ), # 10
+  )
+
+  def __init__(self, nodeInstanceId=thrift_spec[1][4], creationTime=None, nodeName=thrift_spec[3][4], executionUnit=thrift_spec[4][4], executionUnitData=None, nodeInputs=None, nodeOutputs=None, workflowNodeStatus=None, taskDetailsList=None, errors=None,):
+    self.nodeInstanceId = nodeInstanceId
+    self.creationTime = creationTime
+    self.nodeName = nodeName
+    self.executionUnit = executionUnit
+    self.executionUnitData = executionUnitData
+    self.nodeInputs = nodeInputs
+    self.nodeOutputs = nodeOutputs
+    self.workflowNodeStatus = workflowNodeStatus
+    self.taskDetailsList = taskDetailsList
+    self.errors = errors
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.nodeInstanceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.nodeName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.executionUnit = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.executionUnitData = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.nodeInputs = []
+          (_etype59, _size56) = iprot.readListBegin()
+          for _i60 in xrange(_size56):
+            _elem61 = apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType()
+            _elem61.read(iprot)
+            self.nodeInputs.append(_elem61)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.nodeOutputs = []
+          (_etype65, _size62) = iprot.readListBegin()
+          for _i66 in xrange(_size62):
+            _elem67 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
+            _elem67.read(iprot)
+            self.nodeOutputs.append(_elem67)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRUCT:
+          self.workflowNodeStatus = WorkflowNodeStatus()
+          self.workflowNodeStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.taskDetailsList = []
+          (_etype71, _size68) = iprot.readListBegin()
+          for _i72 in xrange(_size68):
+            _elem73 = TaskDetails()
+            _elem73.read(iprot)
+            self.taskDetailsList.append(_elem73)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.errors = []
+          (_etype77, _size74) = iprot.readListBegin()
+          for _i78 in xrange(_size74):
+            _elem79 = ErrorDetails()
+            _elem79.read(iprot)
+            self.errors.append(_elem79)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('WorkflowNodeDetails')
+    if self.nodeInstanceId is not None:
+      oprot.writeFieldBegin('nodeInstanceId', TType.STRING, 1)
+      oprot.writeString(self.nodeInstanceId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.nodeName is not None:
+      oprot.writeFieldBegin('nodeName', TType.STRING, 3)
+      oprot.writeString(self.nodeName)
+      oprot.writeFieldEnd()
+    if self.executionUnit is not None:
+      oprot.writeFieldBegin('executionUnit', TType.I32, 4)
+      oprot.writeI32(self.executionUnit)
+      oprot.writeFieldEnd()
+    if self.executionUnitData is not None:
+      oprot.writeFieldBegin('executionUnitData', TType.STRING, 5)
+      oprot.writeString(self.executionUnitData)
+      oprot.writeFieldEnd()
+    if self.nodeInputs is not None:
+      oprot.writeFieldBegin('nodeInputs', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.nodeInputs))
+      for iter80 in self.nodeInputs:
+        iter80.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.nodeOutputs is not None:
+      oprot.writeFieldBegin('nodeOutputs', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.nodeOutputs))
+      for iter81 in self.nodeOutputs:
+        iter81.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.workflowNodeStatus is not None:
+      oprot.writeFieldBegin('workflowNodeStatus', TType.STRUCT, 8)
+      self.workflowNodeStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.taskDetailsList is not None:
+      oprot.writeFieldBegin('taskDetailsList', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRUCT, len(self.taskDetailsList))
+      for iter82 in self.taskDetailsList:
+        iter82.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.errors is not None:
+      oprot.writeFieldBegin('errors', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.errors))
+      for iter83 in self.errors:
+        iter83.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.nodeInstanceId is None:
+      raise TProtocol.TProtocolException(message='Required field nodeInstanceId is unset!')
+    if self.nodeName is None:
+      raise TProtocol.TProtocolException(message='Required field nodeName is unset!')
+    if self.executionUnit is None:
+      raise TProtocol.TProtocolException(message='Required field executionUnit is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.nodeInstanceId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.nodeName)
+    value = (value * 31) ^ hash(self.executionUnit)
+    value = (value * 31) ^ hash(self.executionUnitData)
+    value = (value * 31) ^ hash(self.nodeInputs)
+    value = (value * 31) ^ hash(self.nodeOutputs)
+    value = (value * 31) ^ hash(self.workflowNodeStatus)
+    value = (value * 31) ^ hash(self.taskDetailsList)
+    value = (val

<TRUNCATED>

[25/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
new file mode 100644
index 0000000..9799e52
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
@@ -0,0 +1,468 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.appcatalog.computeresource.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ComputeResourcePreference:
+  """
+  Gateway specific preferences for a Computer Resource
+
+  computeResourceId:
+    Corelate the preference to a compute resource.
+
+  overridebyAiravata:
+    If turned true, Airavata will override the preferences of better alternatives exist.
+
+  loginUserName:
+    If turned true, Airavata will override the preferences of better alternatives exist.
+
+  preferredJobSubmissionProtocol:
+    For resources with multiple job submission protocols, the gateway can pick a preferred option.
+
+  preferredDataMovementProtocol:
+    For resources with multiple data movement protocols, the gateway can pick a preferred option.
+
+  preferredBatchQueue:
+   Gateways can choose a defualt batch queue based on average job dimention, reservations or other metrics.
+
+  scratchLocation:
+   Path to the local scratch space on a HPC cluster. Typically used to create working directory for job execution.
+
+  allocationProjectNumber:
+   Typically used on HPC machines to charge computing usage to a account number. For instance, on XSEDE once an
+     allocation is approved, an allocation number is assigned. Before passing this number with job submittions, the
+     account to be used has to be added to the allocation.
+
+  resourceSpecificCredentialStoreToken:
+   Resource specific credential store token. If this token is specified, then it is superceeded by the gateway's
+    default credential store.
+
+
+  Attributes:
+   - computeResourceId
+   - overridebyAiravata
+   - loginUserName
+   - preferredJobSubmissionProtocol
+   - preferredDataMovementProtocol
+   - preferredBatchQueue
+   - scratchLocation
+   - allocationProjectNumber
+   - resourceSpecificCredentialStoreToken
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'computeResourceId', None, None, ), # 1
+    (2, TType.BOOL, 'overridebyAiravata', None, True, ), # 2
+    (3, TType.STRING, 'loginUserName', None, None, ), # 3
+    (4, TType.I32, 'preferredJobSubmissionProtocol', None, None, ), # 4
+    (5, TType.I32, 'preferredDataMovementProtocol', None, None, ), # 5
+    (6, TType.STRING, 'preferredBatchQueue', None, None, ), # 6
+    (7, TType.STRING, 'scratchLocation', None, None, ), # 7
+    (8, TType.STRING, 'allocationProjectNumber', None, None, ), # 8
+    (9, TType.STRING, 'resourceSpecificCredentialStoreToken', None, None, ), # 9
+  )
+
+  def __init__(self, computeResourceId=None, overridebyAiravata=thrift_spec[2][4], loginUserName=None, preferredJobSubmissionProtocol=None, preferredDataMovementProtocol=None, preferredBatchQueue=None, scratchLocation=None, allocationProjectNumber=None, resourceSpecificCredentialStoreToken=None,):
+    self.computeResourceId = computeResourceId
+    self.overridebyAiravata = overridebyAiravata
+    self.loginUserName = loginUserName
+    self.preferredJobSubmissionProtocol = preferredJobSubmissionProtocol
+    self.preferredDataMovementProtocol = preferredDataMovementProtocol
+    self.preferredBatchQueue = preferredBatchQueue
+    self.scratchLocation = scratchLocation
+    self.allocationProjectNumber = allocationProjectNumber
+    self.resourceSpecificCredentialStoreToken = resourceSpecificCredentialStoreToken
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.computeResourceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.BOOL:
+          self.overridebyAiravata = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.loginUserName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.preferredJobSubmissionProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.preferredDataMovementProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.preferredBatchQueue = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.scratchLocation = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.allocationProjectNumber = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.resourceSpecificCredentialStoreToken = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComputeResourcePreference')
+    if self.computeResourceId is not None:
+      oprot.writeFieldBegin('computeResourceId', TType.STRING, 1)
+      oprot.writeString(self.computeResourceId)
+      oprot.writeFieldEnd()
+    if self.overridebyAiravata is not None:
+      oprot.writeFieldBegin('overridebyAiravata', TType.BOOL, 2)
+      oprot.writeBool(self.overridebyAiravata)
+      oprot.writeFieldEnd()
+    if self.loginUserName is not None:
+      oprot.writeFieldBegin('loginUserName', TType.STRING, 3)
+      oprot.writeString(self.loginUserName)
+      oprot.writeFieldEnd()
+    if self.preferredJobSubmissionProtocol is not None:
+      oprot.writeFieldBegin('preferredJobSubmissionProtocol', TType.I32, 4)
+      oprot.writeI32(self.preferredJobSubmissionProtocol)
+      oprot.writeFieldEnd()
+    if self.preferredDataMovementProtocol is not None:
+      oprot.writeFieldBegin('preferredDataMovementProtocol', TType.I32, 5)
+      oprot.writeI32(self.preferredDataMovementProtocol)
+      oprot.writeFieldEnd()
+    if self.preferredBatchQueue is not None:
+      oprot.writeFieldBegin('preferredBatchQueue', TType.STRING, 6)
+      oprot.writeString(self.preferredBatchQueue)
+      oprot.writeFieldEnd()
+    if self.scratchLocation is not None:
+      oprot.writeFieldBegin('scratchLocation', TType.STRING, 7)
+      oprot.writeString(self.scratchLocation)
+      oprot.writeFieldEnd()
+    if self.allocationProjectNumber is not None:
+      oprot.writeFieldBegin('allocationProjectNumber', TType.STRING, 8)
+      oprot.writeString(self.allocationProjectNumber)
+      oprot.writeFieldEnd()
+    if self.resourceSpecificCredentialStoreToken is not None:
+      oprot.writeFieldBegin('resourceSpecificCredentialStoreToken', TType.STRING, 9)
+      oprot.writeString(self.resourceSpecificCredentialStoreToken)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.computeResourceId is None:
+      raise TProtocol.TProtocolException(message='Required field computeResourceId is unset!')
+    if self.overridebyAiravata is None:
+      raise TProtocol.TProtocolException(message='Required field overridebyAiravata is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.computeResourceId)
+    value = (value * 31) ^ hash(self.overridebyAiravata)
+    value = (value * 31) ^ hash(self.loginUserName)
+    value = (value * 31) ^ hash(self.preferredJobSubmissionProtocol)
+    value = (value * 31) ^ hash(self.preferredDataMovementProtocol)
+    value = (value * 31) ^ hash(self.preferredBatchQueue)
+    value = (value * 31) ^ hash(self.scratchLocation)
+    value = (value * 31) ^ hash(self.allocationProjectNumber)
+    value = (value * 31) ^ hash(self.resourceSpecificCredentialStoreToken)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataStoragePreference:
+  """
+  Attributes:
+   - dataMovememtResourceId
+   - loginUserName
+   - fileSystemRootLocation
+   - resourceSpecificCredentialStoreToken
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'dataMovememtResourceId', None, None, ), # 1
+    (2, TType.STRING, 'loginUserName', None, None, ), # 2
+    (3, TType.STRING, 'fileSystemRootLocation', None, None, ), # 3
+    (4, TType.STRING, 'resourceSpecificCredentialStoreToken', None, None, ), # 4
+  )
+
+  def __init__(self, dataMovememtResourceId=None, loginUserName=None, fileSystemRootLocation=None, resourceSpecificCredentialStoreToken=None,):
+    self.dataMovememtResourceId = dataMovememtResourceId
+    self.loginUserName = loginUserName
+    self.fileSystemRootLocation = fileSystemRootLocation
+    self.resourceSpecificCredentialStoreToken = resourceSpecificCredentialStoreToken
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.dataMovememtResourceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.loginUserName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.fileSystemRootLocation = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.resourceSpecificCredentialStoreToken = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataStoragePreference')
+    if self.dataMovememtResourceId is not None:
+      oprot.writeFieldBegin('dataMovememtResourceId', TType.STRING, 1)
+      oprot.writeString(self.dataMovememtResourceId)
+      oprot.writeFieldEnd()
+    if self.loginUserName is not None:
+      oprot.writeFieldBegin('loginUserName', TType.STRING, 2)
+      oprot.writeString(self.loginUserName)
+      oprot.writeFieldEnd()
+    if self.fileSystemRootLocation is not None:
+      oprot.writeFieldBegin('fileSystemRootLocation', TType.STRING, 3)
+      oprot.writeString(self.fileSystemRootLocation)
+      oprot.writeFieldEnd()
+    if self.resourceSpecificCredentialStoreToken is not None:
+      oprot.writeFieldBegin('resourceSpecificCredentialStoreToken', TType.STRING, 4)
+      oprot.writeString(self.resourceSpecificCredentialStoreToken)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.dataMovememtResourceId is None:
+      raise TProtocol.TProtocolException(message='Required field dataMovememtResourceId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.dataMovememtResourceId)
+    value = (value * 31) ^ hash(self.loginUserName)
+    value = (value * 31) ^ hash(self.fileSystemRootLocation)
+    value = (value * 31) ^ hash(self.resourceSpecificCredentialStoreToken)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class GatewayResourceProfile:
+  """
+  Gateway Resource Profile
+
+  gatewayID:
+   Unique identifier for the gateway assigned by Airavata. Corelate this to Airavata Admin API Gateway Registration.
+
+  credentialStoreToken:
+   Gateway's defualt credential store token.
+
+  computeResourcePreferences:
+   List of resource preferences for each of the registered compute resources.
+
+
+  Attributes:
+   - gatewayID
+   - credentialStoreToken
+   - computeResourcePreferences
+   - dataStoragePreferences
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'gatewayID', None, None, ), # 1
+    (2, TType.STRING, 'credentialStoreToken', None, None, ), # 2
+    (3, TType.LIST, 'computeResourcePreferences', (TType.STRUCT,(ComputeResourcePreference, ComputeResourcePreference.thrift_spec)), None, ), # 3
+    (4, TType.LIST, 'dataStoragePreferences', (TType.STRUCT,(DataStoragePreference, DataStoragePreference.thrift_spec)), None, ), # 4
+  )
+
+  def __init__(self, gatewayID=None, credentialStoreToken=None, computeResourcePreferences=None, dataStoragePreferences=None,):
+    self.gatewayID = gatewayID
+    self.credentialStoreToken = credentialStoreToken
+    self.computeResourcePreferences = computeResourcePreferences
+    self.dataStoragePreferences = dataStoragePreferences
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.gatewayID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.credentialStoreToken = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.LIST:
+          self.computeResourcePreferences = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = ComputeResourcePreference()
+            _elem5.read(iprot)
+            self.computeResourcePreferences.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.LIST:
+          self.dataStoragePreferences = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = DataStoragePreference()
+            _elem11.read(iprot)
+            self.dataStoragePreferences.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('GatewayResourceProfile')
+    if self.gatewayID is not None:
+      oprot.writeFieldBegin('gatewayID', TType.STRING, 1)
+      oprot.writeString(self.gatewayID)
+      oprot.writeFieldEnd()
+    if self.credentialStoreToken is not None:
+      oprot.writeFieldBegin('credentialStoreToken', TType.STRING, 2)
+      oprot.writeString(self.credentialStoreToken)
+      oprot.writeFieldEnd()
+    if self.computeResourcePreferences is not None:
+      oprot.writeFieldBegin('computeResourcePreferences', TType.LIST, 3)
+      oprot.writeListBegin(TType.STRUCT, len(self.computeResourcePreferences))
+      for iter12 in self.computeResourcePreferences:
+        iter12.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.dataStoragePreferences is not None:
+      oprot.writeFieldBegin('dataStoragePreferences', TType.LIST, 4)
+      oprot.writeListBegin(TType.STRUCT, len(self.dataStoragePreferences))
+      for iter13 in self.dataStoragePreferences:
+        iter13.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.gatewayID is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayID is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.gatewayID)
+    value = (value * 31) ^ hash(self.credentialStoreToken)
+    value = (value * 31) ^ hash(self.computeResourcePreferences)
+    value = (value * 31) ^ hash(self.dataStoragePreferences)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc
new file mode 100644
index 0000000..ca7359b
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__init__.pyc
new file mode 100644
index 0000000..66b63a5
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..b889a06
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__init__.pyc
new file mode 100644
index 0000000..b4575f8
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..baee6e9
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__pycache__/ttypes.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__pycache__/ttypes.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__pycache__/ttypes.cpython-35.pyc
new file mode 100644
index 0000000..826257c
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/__pycache__/ttypes.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/ttypes.py
new file mode 100644
index 0000000..2abf6a4
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/ttypes.py
@@ -0,0 +1,481 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.appcatalog.computeresource.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class DataType:
+  """
+  Data Types supported in Airavata. The primitive data types
+
+  """
+  STRING = 0
+  INTEGER = 1
+  FLOAT = 2
+  URI = 3
+  STDOUT = 4
+  STDERR = 5
+
+  _VALUES_TO_NAMES = {
+    0: "STRING",
+    1: "INTEGER",
+    2: "FLOAT",
+    3: "URI",
+    4: "STDOUT",
+    5: "STDERR",
+  }
+
+  _NAMES_TO_VALUES = {
+    "STRING": 0,
+    "INTEGER": 1,
+    "FLOAT": 2,
+    "URI": 3,
+    "STDOUT": 4,
+    "STDERR": 5,
+  }
+
+
+class InputDataObjectType:
+  """
+  Application Inputs. The paramters describe how inputs are passed to the application.
+
+  name:
+    Name of the parameter.
+
+  value:
+    Value of the parameter. A default value could be set during registration.
+
+  type:
+    Data type of the parameter
+
+  applicationArguement:
+    The argument flag sent to the application. Such as -p pressure.
+
+  standardInput:
+    When this value is set, the parameter is sent as standard input rather than a parameter.
+    Typically this is passed using redirection operator ">".
+
+  userFriendlyDescription:
+    Description to be displayed at the user interface.
+
+  metaData:
+    Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
+
+
+  Attributes:
+   - name
+   - value
+   - type
+   - applicationArgument
+   - standardInput
+   - userFriendlyDescription
+   - metaData
+   - inputOrder
+   - isRequired
+   - requiredToAddedToCommandLine
+   - dataStaged
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'name', None, None, ), # 1
+    (2, TType.STRING, 'value', None, None, ), # 2
+    (3, TType.I32, 'type', None, None, ), # 3
+    (4, TType.STRING, 'applicationArgument', None, None, ), # 4
+    (5, TType.BOOL, 'standardInput', None, None, ), # 5
+    (6, TType.STRING, 'userFriendlyDescription', None, None, ), # 6
+    (7, TType.STRING, 'metaData', None, None, ), # 7
+    (8, TType.I32, 'inputOrder', None, None, ), # 8
+    (9, TType.BOOL, 'isRequired', None, None, ), # 9
+    (10, TType.BOOL, 'requiredToAddedToCommandLine', None, None, ), # 10
+    (11, TType.BOOL, 'dataStaged', None, None, ), # 11
+  )
+
+  def __init__(self, name=None, value=None, type=None, applicationArgument=None, standardInput=None, userFriendlyDescription=None, metaData=None, inputOrder=None, isRequired=None, requiredToAddedToCommandLine=None, dataStaged=None,):
+    self.name = name
+    self.value = value
+    self.type = type
+    self.applicationArgument = applicationArgument
+    self.standardInput = standardInput
+    self.userFriendlyDescription = userFriendlyDescription
+    self.metaData = metaData
+    self.inputOrder = inputOrder
+    self.isRequired = isRequired
+    self.requiredToAddedToCommandLine = requiredToAddedToCommandLine
+    self.dataStaged = dataStaged
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.name = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.value = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.type = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.applicationArgument = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.standardInput = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.userFriendlyDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.metaData = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.inputOrder = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.BOOL:
+          self.isRequired = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.BOOL:
+          self.requiredToAddedToCommandLine = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.BOOL:
+          self.dataStaged = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('InputDataObjectType')
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 1)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.value is not None:
+      oprot.writeFieldBegin('value', TType.STRING, 2)
+      oprot.writeString(self.value)
+      oprot.writeFieldEnd()
+    if self.type is not None:
+      oprot.writeFieldBegin('type', TType.I32, 3)
+      oprot.writeI32(self.type)
+      oprot.writeFieldEnd()
+    if self.applicationArgument is not None:
+      oprot.writeFieldBegin('applicationArgument', TType.STRING, 4)
+      oprot.writeString(self.applicationArgument)
+      oprot.writeFieldEnd()
+    if self.standardInput is not None:
+      oprot.writeFieldBegin('standardInput', TType.BOOL, 5)
+      oprot.writeBool(self.standardInput)
+      oprot.writeFieldEnd()
+    if self.userFriendlyDescription is not None:
+      oprot.writeFieldBegin('userFriendlyDescription', TType.STRING, 6)
+      oprot.writeString(self.userFriendlyDescription)
+      oprot.writeFieldEnd()
+    if self.metaData is not None:
+      oprot.writeFieldBegin('metaData', TType.STRING, 7)
+      oprot.writeString(self.metaData)
+      oprot.writeFieldEnd()
+    if self.inputOrder is not None:
+      oprot.writeFieldBegin('inputOrder', TType.I32, 8)
+      oprot.writeI32(self.inputOrder)
+      oprot.writeFieldEnd()
+    if self.isRequired is not None:
+      oprot.writeFieldBegin('isRequired', TType.BOOL, 9)
+      oprot.writeBool(self.isRequired)
+      oprot.writeFieldEnd()
+    if self.requiredToAddedToCommandLine is not None:
+      oprot.writeFieldBegin('requiredToAddedToCommandLine', TType.BOOL, 10)
+      oprot.writeBool(self.requiredToAddedToCommandLine)
+      oprot.writeFieldEnd()
+    if self.dataStaged is not None:
+      oprot.writeFieldBegin('dataStaged', TType.BOOL, 11)
+      oprot.writeBool(self.dataStaged)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.type)
+    value = (value * 31) ^ hash(self.applicationArgument)
+    value = (value * 31) ^ hash(self.standardInput)
+    value = (value * 31) ^ hash(self.userFriendlyDescription)
+    value = (value * 31) ^ hash(self.metaData)
+    value = (value * 31) ^ hash(self.inputOrder)
+    value = (value * 31) ^ hash(self.isRequired)
+    value = (value * 31) ^ hash(self.requiredToAddedToCommandLine)
+    value = (value * 31) ^ hash(self.dataStaged)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class OutputDataObjectType:
+  """
+  Application Outputs. The paramters describe how outputs generated by the application.
+
+  name:
+    Name of the parameter.
+
+  value:
+    Value of the parameter.
+
+  type:
+    Data type of the parameter
+
+  applicationArguement:
+    The argument flag sent to the application. Such as -p pressure.
+
+  standardInput:
+    When this value is set, the parameter is sent as standard input rather than a parameter.
+    Typically this is passed using redirection operator ">".
+
+  userFriendlyDescription:
+    Description to be displayed at the user interface.
+
+  metaData:
+    Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
+
+
+  Attributes:
+   - name
+   - value
+   - type
+   - applicationArgument
+   - isRequired
+   - requiredToAddedToCommandLine
+   - dataMovement
+   - location
+   - searchQuery
+   - outputStreaming
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'name', None, None, ), # 1
+    (2, TType.STRING, 'value', None, None, ), # 2
+    (3, TType.I32, 'type', None, None, ), # 3
+    (4, TType.STRING, 'applicationArgument', None, None, ), # 4
+    (5, TType.BOOL, 'isRequired', None, None, ), # 5
+    (6, TType.BOOL, 'requiredToAddedToCommandLine', None, None, ), # 6
+    (7, TType.BOOL, 'dataMovement', None, None, ), # 7
+    (8, TType.STRING, 'location', None, None, ), # 8
+    (9, TType.STRING, 'searchQuery', None, None, ), # 9
+    (10, TType.BOOL, 'outputStreaming', None, None, ), # 10
+  )
+
+  def __init__(self, name=None, value=None, type=None, applicationArgument=None, isRequired=None, requiredToAddedToCommandLine=None, dataMovement=None, location=None, searchQuery=None, outputStreaming=None,):
+    self.name = name
+    self.value = value
+    self.type = type
+    self.applicationArgument = applicationArgument
+    self.isRequired = isRequired
+    self.requiredToAddedToCommandLine = requiredToAddedToCommandLine
+    self.dataMovement = dataMovement
+    self.location = location
+    self.searchQuery = searchQuery
+    self.outputStreaming = outputStreaming
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.name = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.value = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.type = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.applicationArgument = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.isRequired = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.BOOL:
+          self.requiredToAddedToCommandLine = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.BOOL:
+          self.dataMovement = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.location = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.searchQuery = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.BOOL:
+          self.outputStreaming = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('OutputDataObjectType')
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 1)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.value is not None:
+      oprot.writeFieldBegin('value', TType.STRING, 2)
+      oprot.writeString(self.value)
+      oprot.writeFieldEnd()
+    if self.type is not None:
+      oprot.writeFieldBegin('type', TType.I32, 3)
+      oprot.writeI32(self.type)
+      oprot.writeFieldEnd()
+    if self.applicationArgument is not None:
+      oprot.writeFieldBegin('applicationArgument', TType.STRING, 4)
+      oprot.writeString(self.applicationArgument)
+      oprot.writeFieldEnd()
+    if self.isRequired is not None:
+      oprot.writeFieldBegin('isRequired', TType.BOOL, 5)
+      oprot.writeBool(self.isRequired)
+      oprot.writeFieldEnd()
+    if self.requiredToAddedToCommandLine is not None:
+      oprot.writeFieldBegin('requiredToAddedToCommandLine', TType.BOOL, 6)
+      oprot.writeBool(self.requiredToAddedToCommandLine)
+      oprot.writeFieldEnd()
+    if self.dataMovement is not None:
+      oprot.writeFieldBegin('dataMovement', TType.BOOL, 7)
+      oprot.writeBool(self.dataMovement)
+      oprot.writeFieldEnd()
+    if self.location is not None:
+      oprot.writeFieldBegin('location', TType.STRING, 8)
+      oprot.writeString(self.location)
+      oprot.writeFieldEnd()
+    if self.searchQuery is not None:
+      oprot.writeFieldBegin('searchQuery', TType.STRING, 9)
+      oprot.writeString(self.searchQuery)
+      oprot.writeFieldEnd()
+    if self.outputStreaming is not None:
+      oprot.writeFieldBegin('outputStreaming', TType.BOOL, 10)
+      oprot.writeBool(self.outputStreaming)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.type)
+    value = (value * 31) ^ hash(self.applicationArgument)
+    value = (value * 31) ^ hash(self.isRequired)
+    value = (value * 31) ^ hash(self.requiredToAddedToCommandLine)
+    value = (value * 31) ^ hash(self.dataMovement)
+    value = (value * 31) ^ hash(self.location)
+    value = (value * 31) ^ hash(self.searchQuery)
+    value = (value * 31) ^ hash(self.outputStreaming)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/ttypes.pyc
new file mode 100644
index 0000000..4a2ccb3
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/application/io/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__init__.pyc
new file mode 100644
index 0000000..10db219
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..e18cbf5
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__pycache__/ttypes.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__pycache__/ttypes.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__pycache__/ttypes.cpython-35.pyc
new file mode 100644
index 0000000..1b27f6e
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/__pycache__/ttypes.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/constants.py
new file mode 100644
index 0000000..f9a2df5
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/constants.py
@@ -0,0 +1,12 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+
+DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/ttypes.py
new file mode 100644
index 0000000..29fe575
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/ttypes.py
@@ -0,0 +1,335 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ErrorModel:
+  """
+  Attributes:
+   - errorId
+   - creationTime
+   - actualErrorMessage
+   - userFriendlyMessage
+   - transientOrPersistent
+   - rootCauseErrorIdList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'errorId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'actualErrorMessage', None, None, ), # 3
+    (4, TType.STRING, 'userFriendlyMessage', None, None, ), # 4
+    (5, TType.BOOL, 'transientOrPersistent', None, False, ), # 5
+    (6, TType.LIST, 'rootCauseErrorIdList', (TType.STRING,None), None, ), # 6
+  )
+
+  def __init__(self, errorId=thrift_spec[1][4], creationTime=None, actualErrorMessage=None, userFriendlyMessage=None, transientOrPersistent=thrift_spec[5][4], rootCauseErrorIdList=None,):
+    self.errorId = errorId
+    self.creationTime = creationTime
+    self.actualErrorMessage = actualErrorMessage
+    self.userFriendlyMessage = userFriendlyMessage
+    self.transientOrPersistent = transientOrPersistent
+    self.rootCauseErrorIdList = rootCauseErrorIdList
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.errorId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.actualErrorMessage = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.userFriendlyMessage = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.transientOrPersistent = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.rootCauseErrorIdList = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString();
+            self.rootCauseErrorIdList.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ErrorModel')
+    if self.errorId is not None:
+      oprot.writeFieldBegin('errorId', TType.STRING, 1)
+      oprot.writeString(self.errorId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.actualErrorMessage is not None:
+      oprot.writeFieldBegin('actualErrorMessage', TType.STRING, 3)
+      oprot.writeString(self.actualErrorMessage)
+      oprot.writeFieldEnd()
+    if self.userFriendlyMessage is not None:
+      oprot.writeFieldBegin('userFriendlyMessage', TType.STRING, 4)
+      oprot.writeString(self.userFriendlyMessage)
+      oprot.writeFieldEnd()
+    if self.transientOrPersistent is not None:
+      oprot.writeFieldBegin('transientOrPersistent', TType.BOOL, 5)
+      oprot.writeBool(self.transientOrPersistent)
+      oprot.writeFieldEnd()
+    if self.rootCauseErrorIdList is not None:
+      oprot.writeFieldBegin('rootCauseErrorIdList', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRING, len(self.rootCauseErrorIdList))
+      for iter6 in self.rootCauseErrorIdList:
+        oprot.writeString(iter6)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.errorId is None:
+      raise TProtocol.TProtocolException(message='Required field errorId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.errorId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.actualErrorMessage)
+    value = (value * 31) ^ hash(self.userFriendlyMessage)
+    value = (value * 31) ^ hash(self.transientOrPersistent)
+    value = (value * 31) ^ hash(self.rootCauseErrorIdList)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ValidatorResult:
+  """
+  This data structure can be used to store the validation results
+  captured during validation step and during the launchExperiment
+  operation it can be easilly checked to see the errors occured
+  during the experiment launch operation
+
+
+  Attributes:
+   - result
+   - errorDetails
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'result', None, None, ), # 1
+    (2, TType.STRING, 'errorDetails', None, None, ), # 2
+  )
+
+  def __init__(self, result=None, errorDetails=None,):
+    self.result = result
+    self.errorDetails = errorDetails
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.result = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.errorDetails = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ValidatorResult')
+    if self.result is not None:
+      oprot.writeFieldBegin('result', TType.BOOL, 1)
+      oprot.writeBool(self.result)
+      oprot.writeFieldEnd()
+    if self.errorDetails is not None:
+      oprot.writeFieldBegin('errorDetails', TType.STRING, 2)
+      oprot.writeString(self.errorDetails)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.result is None:
+      raise TProtocol.TProtocolException(message='Required field result is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.result)
+    value = (value * 31) ^ hash(self.errorDetails)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ValidationResults:
+  """
+  Attributes:
+   - validationState
+   - validationResultList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'validationState', None, None, ), # 1
+    (2, TType.LIST, 'validationResultList', (TType.STRUCT,(ValidatorResult, ValidatorResult.thrift_spec)), None, ), # 2
+  )
+
+  def __init__(self, validationState=None, validationResultList=None,):
+    self.validationState = validationState
+    self.validationResultList = validationResultList
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.validationState = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.LIST:
+          self.validationResultList = []
+          (_etype10, _size7) = iprot.readListBegin()
+          for _i11 in xrange(_size7):
+            _elem12 = ValidatorResult()
+            _elem12.read(iprot)
+            self.validationResultList.append(_elem12)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ValidationResults')
+    if self.validationState is not None:
+      oprot.writeFieldBegin('validationState', TType.BOOL, 1)
+      oprot.writeBool(self.validationState)
+      oprot.writeFieldEnd()
+    if self.validationResultList is not None:
+      oprot.writeFieldBegin('validationResultList', TType.LIST, 2)
+      oprot.writeListBegin(TType.STRUCT, len(self.validationResultList))
+      for iter13 in self.validationResultList:
+        iter13.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.validationState is None:
+      raise TProtocol.TProtocolException(message='Required field validationState is unset!')
+    if self.validationResultList is None:
+      raise TProtocol.TProtocolException(message='Required field validationResultList is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.validationState)
+    value = (value * 31) ^ hash(self.validationResultList)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/ttypes.pyc
new file mode 100644
index 0000000..c2ed5ee
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/commons/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__init__.pyc
new file mode 100644
index 0000000..3806931
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..c043016
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__pycache__/ttypes.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__pycache__/ttypes.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__pycache__/ttypes.cpython-35.pyc
new file mode 100644
index 0000000..a88248d
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/__pycache__/ttypes.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[14/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata-remote
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata-remote b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata-remote
new file mode 100644
index 0000000..0a94e16
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata-remote
@@ -0,0 +1,1130 @@
+#!/usr/bin/env python
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+import sys
+import pprint
+from urlparse import urlparse
+from thrift.transport import TTransport
+from thrift.transport import TSocket
+from thrift.transport import TSSLSocket
+from thrift.transport import THttpClient
+from thrift.protocol import TBinaryProtocol
+
+from apache.airavata.api import Airavata
+from apache.airavata.api.ttypes import *
+
+if len(sys.argv) <= 1 or sys.argv[1] == '--help':
+  print('')
+  print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] function [arg1 [arg2...]]')
+  print('')
+  print('Functions:')
+  print('  string getAPIVersion(AuthzToken authzToken)')
+  print('  bool isUserExists(AuthzToken authzToken, string gatewayId, string userName)')
+  print('  string addGateway(AuthzToken authzToken, Gateway gateway)')
+  print('   getAllUsersInGateway(AuthzToken authzToken, string gatewayId)')
+  print('  bool updateGateway(AuthzToken authzToken, string gatewayId, Gateway updatedGateway)')
+  print('  Gateway getGateway(AuthzToken authzToken, string gatewayId)')
+  print('  bool deleteGateway(AuthzToken authzToken, string gatewayId)')
+  print('   getAllGateways(AuthzToken authzToken)')
+  print('  bool isGatewayExist(AuthzToken authzToken, string gatewayId)')
+  print('  string createNotification(AuthzToken authzToken, Notification notification)')
+  print('  bool updateNotification(AuthzToken authzToken, Notification notification)')
+  print('  bool deleteNotification(AuthzToken authzToken, string gatewayId, string notificationId)')
+  print('  Notification getNotification(AuthzToken authzToken, string gatewayId, string notificationId)')
+  print('   getAllNotifications(AuthzToken authzToken, string gatewayId)')
+  print('  string generateAndRegisterSSHKeys(AuthzToken authzToken, string gatewayId, string userName)')
+  print('  string registerPwdCredential(AuthzToken authzToken, string gatewayId, string portalUserName, string loginUserName, string password, string description)')
+  print('  string getSSHPubKey(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+  print('   getAllGatewaySSHPubKeys(AuthzToken authzToken, string gatewayId)')
+  print('   getAllGatewayPWDCredentials(AuthzToken authzToken, string gatewayId)')
+  print('  bool deleteSSHPubKey(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+  print('  bool deletePWDCredential(AuthzToken authzToken, string airavataCredStoreToken, string gatewayId)')
+  print('  string createProject(AuthzToken authzToken, string gatewayId, Project project)')
+  print('  void updateProject(AuthzToken authzToken, string projectId, Project updatedProject)')
+  print('  Project getProject(AuthzToken authzToken, string projectId)')
+  print('  bool deleteProject(AuthzToken authzToken, string projectId)')
+  print('   getUserProjects(AuthzToken authzToken, string gatewayId, string userName, i32 limit, i32 offset)')
+  print('   searchProjects(AuthzToken authzToken, string gatewayId, string userName,  filters, i32 limit, i32 offset)')
+  print('   searchExperiments(AuthzToken authzToken, string gatewayId, string userName,  filters, i32 limit, i32 offset)')
+  print('  ExperimentStatistics getExperimentStatistics(AuthzToken authzToken, string gatewayId, i64 fromTime, i64 toTime)')
+  print('   getExperimentsInProject(AuthzToken authzToken, string projectId, i32 limit, i32 offset)')
+  print('   getUserExperiments(AuthzToken authzToken, string gatewayId, string userName, i32 limit, i32 offset)')
+  print('  string createExperiment(AuthzToken authzToken, string gatewayId, ExperimentModel experiment)')
+  print('  bool deleteExperiment(AuthzToken authzToken, string experimentId)')
+  print('  ExperimentModel getExperiment(AuthzToken authzToken, string airavataExperimentId)')
+  print('  ExperimentModel getDetailedExperimentTree(AuthzToken authzToken, string airavataExperimentId)')
+  print('  void updateExperiment(AuthzToken authzToken, string airavataExperimentId, ExperimentModel experiment)')
+  print('  void updateExperimentConfiguration(AuthzToken authzToken, string airavataExperimentId, UserConfigurationDataModel userConfiguration)')
+  print('  void updateResourceScheduleing(AuthzToken authzToken, string airavataExperimentId, ComputationalResourceSchedulingModel resourceScheduling)')
+  print('  bool validateExperiment(AuthzToken authzToken, string airavataExperimentId)')
+  print('  void launchExperiment(AuthzToken authzToken, string airavataExperimentId, string gatewayId)')
+  print('  ExperimentStatus getExperimentStatus(AuthzToken authzToken, string airavataExperimentId)')
+  print('   getExperimentOutputs(AuthzToken authzToken, string airavataExperimentId)')
+  print('   getIntermediateOutputs(AuthzToken authzToken, string airavataExperimentId)')
+  print('   getJobStatuses(AuthzToken authzToken, string airavataExperimentId)')
+  print('   getJobDetails(AuthzToken authzToken, string airavataExperimentId)')
+  print('  string cloneExperiment(AuthzToken authzToken, string existingExperimentID, string newExperimentName)')
+  print('  void terminateExperiment(AuthzToken authzToken, string airavataExperimentId, string gatewayId)')
+  print('  string registerApplicationModule(AuthzToken authzToken, string gatewayId, ApplicationModule applicationModule)')
+  print('  ApplicationModule getApplicationModule(AuthzToken authzToken, string appModuleId)')
+  print('  bool updateApplicationModule(AuthzToken authzToken, string appModuleId, ApplicationModule applicationModule)')
+  print('   getAllAppModules(AuthzToken authzToken, string gatewayId)')
+  print('  bool deleteApplicationModule(AuthzToken authzToken, string appModuleId)')
+  print('  string registerApplicationDeployment(AuthzToken authzToken, string gatewayId, ApplicationDeploymentDescription applicationDeployment)')
+  print('  ApplicationDeploymentDescription getApplicationDeployment(AuthzToken authzToken, string appDeploymentId)')
+  print('  bool updateApplicationDeployment(AuthzToken authzToken, string appDeploymentId, ApplicationDeploymentDescription applicationDeployment)')
+  print('  bool deleteApplicationDeployment(AuthzToken authzToken, string appDeploymentId)')
+  print('   getAllApplicationDeployments(AuthzToken authzToken, string gatewayId)')
+  print('   getAppModuleDeployedResources(AuthzToken authzToken, string appModuleId)')
+  print('  string registerApplicationInterface(AuthzToken authzToken, string gatewayId, ApplicationInterfaceDescription applicationInterface)')
+  print('  string cloneApplicationInterface(AuthzToken authzToken, string existingAppInterfaceID, string newApplicationName, string gatewayId)')
+  print('  ApplicationInterfaceDescription getApplicationInterface(AuthzToken authzToken, string appInterfaceId)')
+  print('  bool updateApplicationInterface(AuthzToken authzToken, string appInterfaceId, ApplicationInterfaceDescription applicationInterface)')
+  print('  bool deleteApplicationInterface(AuthzToken authzToken, string appInterfaceId)')
+  print('   getAllApplicationInterfaceNames(AuthzToken authzToken, string gatewayId)')
+  print('   getAllApplicationInterfaces(AuthzToken authzToken, string gatewayId)')
+  print('   getApplicationInputs(AuthzToken authzToken, string appInterfaceId)')
+  print('   getApplicationOutputs(AuthzToken authzToken, string appInterfaceId)')
+  print('   getAvailableAppInterfaceComputeResources(AuthzToken authzToken, string appInterfaceId)')
+  print('  string registerComputeResource(AuthzToken authzToken, ComputeResourceDescription computeResourceDescription)')
+  print('  ComputeResourceDescription getComputeResource(AuthzToken authzToken, string computeResourceId)')
+  print('   getAllComputeResourceNames(AuthzToken authzToken)')
+  print('  bool updateComputeResource(AuthzToken authzToken, string computeResourceId, ComputeResourceDescription computeResourceDescription)')
+  print('  bool deleteComputeResource(AuthzToken authzToken, string computeResourceId)')
+  print('  string registerStorageResource(AuthzToken authzToken, StorageResourceDescription storageResourceDescription)')
+  print('  StorageResourceDescription getStorageResource(AuthzToken authzToken, string storageResourceId)')
+  print('   getAllStorageResourceNames(AuthzToken authzToken)')
+  print('  bool updateStorageResource(AuthzToken authzToken, string storageResourceId, StorageResourceDescription storageResourceDescription)')
+  print('  bool deleteStorageResource(AuthzToken authzToken, string storageResourceId)')
+  print('  string addLocalSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, LOCALSubmission localSubmission)')
+  print('  bool updateLocalSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, LOCALSubmission localSubmission)')
+  print('  LOCALSubmission getLocalJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+  print('  string addSSHJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, SSHJobSubmission sshJobSubmission)')
+  print('  string addSSHForkJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, SSHJobSubmission sshJobSubmission)')
+  print('  SSHJobSubmission getSSHJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+  print('  string addUNICOREJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, UnicoreJobSubmission unicoreJobSubmission)')
+  print('  UnicoreJobSubmission getUnicoreJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+  print('  string addCloudJobSubmissionDetails(AuthzToken authzToken, string computeResourceId, i32 priorityOrder, CloudJobSubmission cloudSubmission)')
+  print('  CloudJobSubmission getCloudJobSubmission(AuthzToken authzToken, string jobSubmissionId)')
+  print('  bool updateSSHJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, SSHJobSubmission sshJobSubmission)')
+  print('  bool updateCloudJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, CloudJobSubmission sshJobSubmission)')
+  print('  bool updateUnicoreJobSubmissionDetails(AuthzToken authzToken, string jobSubmissionInterfaceId, UnicoreJobSubmission unicoreJobSubmission)')
+  print('  string addLocalDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, LOCALDataMovement localDataMovement)')
+  print('  bool updateLocalDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, LOCALDataMovement localDataMovement)')
+  print('  LOCALDataMovement getLocalDataMovement(AuthzToken authzToken, string dataMovementId)')
+  print('  string addSCPDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, SCPDataMovement scpDataMovement)')
+  print('  bool updateSCPDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, SCPDataMovement scpDataMovement)')
+  print('  SCPDataMovement getSCPDataMovement(AuthzToken authzToken, string dataMovementId)')
+  print('  string addUnicoreDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, UnicoreDataMovement unicoreDataMovement)')
+  print('  bool updateUnicoreDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, UnicoreDataMovement unicoreDataMovement)')
+  print('  UnicoreDataMovement getUnicoreDataMovement(AuthzToken authzToken, string dataMovementId)')
+  print('  string addGridFTPDataMovementDetails(AuthzToken authzToken, string productUri, DMType dataMoveType, i32 priorityOrder, GridFTPDataMovement gridFTPDataMovement)')
+  print('  bool updateGridFTPDataMovementDetails(AuthzToken authzToken, string dataMovementInterfaceId, GridFTPDataMovement gridFTPDataMovement)')
+  print('  GridFTPDataMovement getGridFTPDataMovement(AuthzToken authzToken, string dataMovementId)')
+  print('  bool changeJobSubmissionPriority(AuthzToken authzToken, string jobSubmissionInterfaceId, i32 newPriorityOrder)')
+  print('  bool changeDataMovementPriority(AuthzToken authzToken, string dataMovementInterfaceId, i32 newPriorityOrder)')
+  print('  bool changeJobSubmissionPriorities(AuthzToken authzToken,  jobSubmissionPriorityMap)')
+  print('  bool changeDataMovementPriorities(AuthzToken authzToken,  dataMovementPriorityMap)')
+  print('  bool deleteJobSubmissionInterface(AuthzToken authzToken, string computeResourceId, string jobSubmissionInterfaceId)')
+  print('  bool deleteDataMovementInterface(AuthzToken authzToken, string productUri, string dataMovementInterfaceId, DMType dataMoveType)')
+  print('  string registerResourceJobManager(AuthzToken authzToken, ResourceJobManager resourceJobManager)')
+  print('  bool updateResourceJobManager(AuthzToken authzToken, string resourceJobManagerId, ResourceJobManager updatedResourceJobManager)')
+  print('  ResourceJobManager getResourceJobManager(AuthzToken authzToken, string resourceJobManagerId)')
+  print('  bool deleteResourceJobManager(AuthzToken authzToken, string resourceJobManagerId)')
+  print('  bool deleteBatchQueue(AuthzToken authzToken, string computeResourceId, string queueName)')
+  print('  string registerGatewayResourceProfile(AuthzToken authzToken, GatewayResourceProfile gatewayResourceProfile)')
+  print('  GatewayResourceProfile getGatewayResourceProfile(AuthzToken authzToken, string gatewayID)')
+  print('  bool updateGatewayResourceProfile(AuthzToken authzToken, string gatewayID, GatewayResourceProfile gatewayResourceProfile)')
+  print('  bool deleteGatewayResourceProfile(AuthzToken authzToken, string gatewayID)')
+  print('  bool addGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId, ComputeResourcePreference computeResourcePreference)')
+  print('  bool addGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageResourceId, StoragePreference storagePreference)')
+  print('  ComputeResourcePreference getGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId)')
+  print('  StoragePreference getGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageResourceId)')
+  print('   getAllGatewayComputeResourcePreferences(AuthzToken authzToken, string gatewayID)')
+  print('   getAllGatewayStoragePreferences(AuthzToken authzToken, string gatewayID)')
+  print('   getAllGatewayResourceProfiles(AuthzToken authzToken)')
+  print('  bool updateGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId, ComputeResourcePreference computeResourcePreference)')
+  print('  bool updateGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageId, StoragePreference storagePreference)')
+  print('  bool deleteGatewayComputeResourcePreference(AuthzToken authzToken, string gatewayID, string computeResourceId)')
+  print('  bool deleteGatewayStoragePreference(AuthzToken authzToken, string gatewayID, string storageId)')
+  print('   getAllWorkflows(AuthzToken authzToken, string gatewayId)')
+  print('  WorkflowModel getWorkflow(AuthzToken authzToken, string workflowTemplateId)')
+  print('  void deleteWorkflow(AuthzToken authzToken, string workflowTemplateId)')
+  print('  string registerWorkflow(AuthzToken authzToken, string gatewayId, WorkflowModel workflow)')
+  print('  void updateWorkflow(AuthzToken authzToken, string workflowTemplateId, WorkflowModel workflow)')
+  print('  string getWorkflowTemplateId(AuthzToken authzToken, string workflowName)')
+  print('  bool isWorkflowExistWithName(AuthzToken authzToken, string workflowName)')
+  print('  string registerDataProduct(AuthzToken authzToken, DataProductModel dataProductModel)')
+  print('  DataProductModel getDataProduct(AuthzToken authzToken, string dataProductUri)')
+  print('  string registerReplicaLocation(AuthzToken authzToken, DataReplicaLocationModel replicaLocationModel)')
+  print('  DataProductModel getParentDataProduct(AuthzToken authzToken, string productUri)')
+  print('   getChildDataProducts(AuthzToken authzToken, string productUri)')
+  print('  bool shareResourceWithUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
+  print('  bool revokeSharingOfResourceFromUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType,  userPermissionList)')
+  print('   getAllAccessibleUsers(AuthzToken authzToken, string resourceId, ResourceType resourceType, ResourcePermissionType permissionType)')
+  print('  bool createGroup(AuthzToken authzToken, GroupModel groupModel)')
+  print('  bool updateGroup(AuthzToken authzToken, GroupModel groupModel)')
+  print('  bool deleteGroup(AuthzToken authzToken, string groupId, string ownerId, string gatewayId)')
+  print('  GroupModel getGroup(AuthzToken authzToken, string groupId)')
+  print('   getAllGroupsUserBelongs(AuthzToken authzToken, string userName, string gatewayId)')
+  print('')
+  sys.exit(0)
+
+pp = pprint.PrettyPrinter(indent = 2)
+host = 'localhost'
+port = 9090
+uri = ''
+framed = False
+ssl = False
+http = False
+argi = 1
+
+if sys.argv[argi] == '-h':
+  parts = sys.argv[argi+1].split(':')
+  host = parts[0]
+  if len(parts) > 1:
+    port = int(parts[1])
+  argi += 2
+
+if sys.argv[argi] == '-u':
+  url = urlparse(sys.argv[argi+1])
+  parts = url[1].split(':')
+  host = parts[0]
+  if len(parts) > 1:
+    port = int(parts[1])
+  else:
+    port = 80
+  uri = url[2]
+  if url[4]:
+    uri += '?%s' % url[4]
+  http = True
+  argi += 2
+
+if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed':
+  framed = True
+  argi += 1
+
+if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl':
+  ssl = True
+  argi += 1
+
+cmd = sys.argv[argi]
+args = sys.argv[argi+1:]
+
+if http:
+  transport = THttpClient.THttpClient(host, port, uri)
+else:
+  socket = TSSLSocket.TSSLSocket(host, port, validate=False) if ssl else TSocket.TSocket(host, port)
+  if framed:
+    transport = TTransport.TFramedTransport(socket)
+  else:
+    transport = TTransport.TBufferedTransport(socket)
+protocol = TBinaryProtocol.TBinaryProtocol(transport)
+client = Airavata.Client(protocol)
+transport.open()
+
+if cmd == 'getAPIVersion':
+  if len(args) != 1:
+    print('getAPIVersion requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getAPIVersion(eval(args[0]),))
+
+elif cmd == 'isUserExists':
+  if len(args) != 3:
+    print('isUserExists requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.isUserExists(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'addGateway':
+  if len(args) != 2:
+    print('addGateway requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.addGateway(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'getAllUsersInGateway':
+  if len(args) != 2:
+    print('getAllUsersInGateway requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllUsersInGateway(eval(args[0]),args[1],))
+
+elif cmd == 'updateGateway':
+  if len(args) != 3:
+    print('updateGateway requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateGateway(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getGateway':
+  if len(args) != 2:
+    print('getGateway requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getGateway(eval(args[0]),args[1],))
+
+elif cmd == 'deleteGateway':
+  if len(args) != 2:
+    print('deleteGateway requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGateway(eval(args[0]),args[1],))
+
+elif cmd == 'getAllGateways':
+  if len(args) != 1:
+    print('getAllGateways requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGateways(eval(args[0]),))
+
+elif cmd == 'isGatewayExist':
+  if len(args) != 2:
+    print('isGatewayExist requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.isGatewayExist(eval(args[0]),args[1],))
+
+elif cmd == 'createNotification':
+  if len(args) != 2:
+    print('createNotification requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.createNotification(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'updateNotification':
+  if len(args) != 2:
+    print('updateNotification requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.updateNotification(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'deleteNotification':
+  if len(args) != 3:
+    print('deleteNotification requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteNotification(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getNotification':
+  if len(args) != 3:
+    print('getNotification requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getNotification(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getAllNotifications':
+  if len(args) != 2:
+    print('getAllNotifications requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllNotifications(eval(args[0]),args[1],))
+
+elif cmd == 'generateAndRegisterSSHKeys':
+  if len(args) != 3:
+    print('generateAndRegisterSSHKeys requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.generateAndRegisterSSHKeys(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'registerPwdCredential':
+  if len(args) != 6:
+    print('registerPwdCredential requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.registerPwdCredential(eval(args[0]),args[1],args[2],args[3],args[4],args[5],))
+
+elif cmd == 'getSSHPubKey':
+  if len(args) != 3:
+    print('getSSHPubKey requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getSSHPubKey(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getAllGatewaySSHPubKeys':
+  if len(args) != 2:
+    print('getAllGatewaySSHPubKeys requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGatewaySSHPubKeys(eval(args[0]),args[1],))
+
+elif cmd == 'getAllGatewayPWDCredentials':
+  if len(args) != 2:
+    print('getAllGatewayPWDCredentials requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGatewayPWDCredentials(eval(args[0]),args[1],))
+
+elif cmd == 'deleteSSHPubKey':
+  if len(args) != 3:
+    print('deleteSSHPubKey requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteSSHPubKey(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'deletePWDCredential':
+  if len(args) != 3:
+    print('deletePWDCredential requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deletePWDCredential(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'createProject':
+  if len(args) != 3:
+    print('createProject requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.createProject(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateProject':
+  if len(args) != 3:
+    print('updateProject requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateProject(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getProject':
+  if len(args) != 2:
+    print('getProject requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getProject(eval(args[0]),args[1],))
+
+elif cmd == 'deleteProject':
+  if len(args) != 2:
+    print('deleteProject requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteProject(eval(args[0]),args[1],))
+
+elif cmd == 'getUserProjects':
+  if len(args) != 5:
+    print('getUserProjects requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.getUserProjects(eval(args[0]),args[1],args[2],eval(args[3]),eval(args[4]),))
+
+elif cmd == 'searchProjects':
+  if len(args) != 6:
+    print('searchProjects requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.searchProjects(eval(args[0]),args[1],args[2],eval(args[3]),eval(args[4]),eval(args[5]),))
+
+elif cmd == 'searchExperiments':
+  if len(args) != 6:
+    print('searchExperiments requires 6 args')
+    sys.exit(1)
+  pp.pprint(client.searchExperiments(eval(args[0]),args[1],args[2],eval(args[3]),eval(args[4]),eval(args[5]),))
+
+elif cmd == 'getExperimentStatistics':
+  if len(args) != 4:
+    print('getExperimentStatistics requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.getExperimentStatistics(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getExperimentsInProject':
+  if len(args) != 4:
+    print('getExperimentsInProject requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.getExperimentsInProject(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getUserExperiments':
+  if len(args) != 5:
+    print('getUserExperiments requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.getUserExperiments(eval(args[0]),args[1],args[2],eval(args[3]),eval(args[4]),))
+
+elif cmd == 'createExperiment':
+  if len(args) != 3:
+    print('createExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.createExperiment(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteExperiment':
+  if len(args) != 2:
+    print('deleteExperiment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteExperiment(eval(args[0]),args[1],))
+
+elif cmd == 'getExperiment':
+  if len(args) != 2:
+    print('getExperiment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getExperiment(eval(args[0]),args[1],))
+
+elif cmd == 'getDetailedExperimentTree':
+  if len(args) != 2:
+    print('getDetailedExperimentTree requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getDetailedExperimentTree(eval(args[0]),args[1],))
+
+elif cmd == 'updateExperiment':
+  if len(args) != 3:
+    print('updateExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateExperiment(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateExperimentConfiguration':
+  if len(args) != 3:
+    print('updateExperimentConfiguration requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateExperimentConfiguration(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateResourceScheduleing':
+  if len(args) != 3:
+    print('updateResourceScheduleing requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateResourceScheduleing(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'validateExperiment':
+  if len(args) != 2:
+    print('validateExperiment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.validateExperiment(eval(args[0]),args[1],))
+
+elif cmd == 'launchExperiment':
+  if len(args) != 3:
+    print('launchExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.launchExperiment(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getExperimentStatus':
+  if len(args) != 2:
+    print('getExperimentStatus requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getExperimentStatus(eval(args[0]),args[1],))
+
+elif cmd == 'getExperimentOutputs':
+  if len(args) != 2:
+    print('getExperimentOutputs requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getExperimentOutputs(eval(args[0]),args[1],))
+
+elif cmd == 'getIntermediateOutputs':
+  if len(args) != 2:
+    print('getIntermediateOutputs requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getIntermediateOutputs(eval(args[0]),args[1],))
+
+elif cmd == 'getJobStatuses':
+  if len(args) != 2:
+    print('getJobStatuses requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getJobStatuses(eval(args[0]),args[1],))
+
+elif cmd == 'getJobDetails':
+  if len(args) != 2:
+    print('getJobDetails requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getJobDetails(eval(args[0]),args[1],))
+
+elif cmd == 'cloneExperiment':
+  if len(args) != 3:
+    print('cloneExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.cloneExperiment(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'terminateExperiment':
+  if len(args) != 3:
+    print('terminateExperiment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.terminateExperiment(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'registerApplicationModule':
+  if len(args) != 3:
+    print('registerApplicationModule requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.registerApplicationModule(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getApplicationModule':
+  if len(args) != 2:
+    print('getApplicationModule requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationModule(eval(args[0]),args[1],))
+
+elif cmd == 'updateApplicationModule':
+  if len(args) != 3:
+    print('updateApplicationModule requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateApplicationModule(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getAllAppModules':
+  if len(args) != 2:
+    print('getAllAppModules requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllAppModules(eval(args[0]),args[1],))
+
+elif cmd == 'deleteApplicationModule':
+  if len(args) != 2:
+    print('deleteApplicationModule requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteApplicationModule(eval(args[0]),args[1],))
+
+elif cmd == 'registerApplicationDeployment':
+  if len(args) != 3:
+    print('registerApplicationDeployment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.registerApplicationDeployment(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getApplicationDeployment':
+  if len(args) != 2:
+    print('getApplicationDeployment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationDeployment(eval(args[0]),args[1],))
+
+elif cmd == 'updateApplicationDeployment':
+  if len(args) != 3:
+    print('updateApplicationDeployment requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateApplicationDeployment(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteApplicationDeployment':
+  if len(args) != 2:
+    print('deleteApplicationDeployment requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteApplicationDeployment(eval(args[0]),args[1],))
+
+elif cmd == 'getAllApplicationDeployments':
+  if len(args) != 2:
+    print('getAllApplicationDeployments requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllApplicationDeployments(eval(args[0]),args[1],))
+
+elif cmd == 'getAppModuleDeployedResources':
+  if len(args) != 2:
+    print('getAppModuleDeployedResources requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAppModuleDeployedResources(eval(args[0]),args[1],))
+
+elif cmd == 'registerApplicationInterface':
+  if len(args) != 3:
+    print('registerApplicationInterface requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.registerApplicationInterface(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'cloneApplicationInterface':
+  if len(args) != 4:
+    print('cloneApplicationInterface requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.cloneApplicationInterface(eval(args[0]),args[1],args[2],args[3],))
+
+elif cmd == 'getApplicationInterface':
+  if len(args) != 2:
+    print('getApplicationInterface requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationInterface(eval(args[0]),args[1],))
+
+elif cmd == 'updateApplicationInterface':
+  if len(args) != 3:
+    print('updateApplicationInterface requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateApplicationInterface(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteApplicationInterface':
+  if len(args) != 2:
+    print('deleteApplicationInterface requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteApplicationInterface(eval(args[0]),args[1],))
+
+elif cmd == 'getAllApplicationInterfaceNames':
+  if len(args) != 2:
+    print('getAllApplicationInterfaceNames requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllApplicationInterfaceNames(eval(args[0]),args[1],))
+
+elif cmd == 'getAllApplicationInterfaces':
+  if len(args) != 2:
+    print('getAllApplicationInterfaces requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllApplicationInterfaces(eval(args[0]),args[1],))
+
+elif cmd == 'getApplicationInputs':
+  if len(args) != 2:
+    print('getApplicationInputs requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationInputs(eval(args[0]),args[1],))
+
+elif cmd == 'getApplicationOutputs':
+  if len(args) != 2:
+    print('getApplicationOutputs requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getApplicationOutputs(eval(args[0]),args[1],))
+
+elif cmd == 'getAvailableAppInterfaceComputeResources':
+  if len(args) != 2:
+    print('getAvailableAppInterfaceComputeResources requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAvailableAppInterfaceComputeResources(eval(args[0]),args[1],))
+
+elif cmd == 'registerComputeResource':
+  if len(args) != 2:
+    print('registerComputeResource requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerComputeResource(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'getComputeResource':
+  if len(args) != 2:
+    print('getComputeResource requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getComputeResource(eval(args[0]),args[1],))
+
+elif cmd == 'getAllComputeResourceNames':
+  if len(args) != 1:
+    print('getAllComputeResourceNames requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getAllComputeResourceNames(eval(args[0]),))
+
+elif cmd == 'updateComputeResource':
+  if len(args) != 3:
+    print('updateComputeResource requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateComputeResource(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteComputeResource':
+  if len(args) != 2:
+    print('deleteComputeResource requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteComputeResource(eval(args[0]),args[1],))
+
+elif cmd == 'registerStorageResource':
+  if len(args) != 2:
+    print('registerStorageResource requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerStorageResource(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'getStorageResource':
+  if len(args) != 2:
+    print('getStorageResource requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getStorageResource(eval(args[0]),args[1],))
+
+elif cmd == 'getAllStorageResourceNames':
+  if len(args) != 1:
+    print('getAllStorageResourceNames requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getAllStorageResourceNames(eval(args[0]),))
+
+elif cmd == 'updateStorageResource':
+  if len(args) != 3:
+    print('updateStorageResource requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateStorageResource(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteStorageResource':
+  if len(args) != 2:
+    print('deleteStorageResource requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteStorageResource(eval(args[0]),args[1],))
+
+elif cmd == 'addLocalSubmissionDetails':
+  if len(args) != 4:
+    print('addLocalSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addLocalSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'updateLocalSubmissionDetails':
+  if len(args) != 3:
+    print('updateLocalSubmissionDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateLocalSubmissionDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getLocalJobSubmission':
+  if len(args) != 2:
+    print('getLocalJobSubmission requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getLocalJobSubmission(eval(args[0]),args[1],))
+
+elif cmd == 'addSSHJobSubmissionDetails':
+  if len(args) != 4:
+    print('addSSHJobSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addSSHJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'addSSHForkJobSubmissionDetails':
+  if len(args) != 4:
+    print('addSSHForkJobSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addSSHForkJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getSSHJobSubmission':
+  if len(args) != 2:
+    print('getSSHJobSubmission requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getSSHJobSubmission(eval(args[0]),args[1],))
+
+elif cmd == 'addUNICOREJobSubmissionDetails':
+  if len(args) != 4:
+    print('addUNICOREJobSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addUNICOREJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getUnicoreJobSubmission':
+  if len(args) != 2:
+    print('getUnicoreJobSubmission requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getUnicoreJobSubmission(eval(args[0]),args[1],))
+
+elif cmd == 'addCloudJobSubmissionDetails':
+  if len(args) != 4:
+    print('addCloudJobSubmissionDetails requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addCloudJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getCloudJobSubmission':
+  if len(args) != 2:
+    print('getCloudJobSubmission requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getCloudJobSubmission(eval(args[0]),args[1],))
+
+elif cmd == 'updateSSHJobSubmissionDetails':
+  if len(args) != 3:
+    print('updateSSHJobSubmissionDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateSSHJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateCloudJobSubmissionDetails':
+  if len(args) != 3:
+    print('updateCloudJobSubmissionDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateCloudJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateUnicoreJobSubmissionDetails':
+  if len(args) != 3:
+    print('updateUnicoreJobSubmissionDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateUnicoreJobSubmissionDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'addLocalDataMovementDetails':
+  if len(args) != 5:
+    print('addLocalDataMovementDetails requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.addLocalDataMovementDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),eval(args[4]),))
+
+elif cmd == 'updateLocalDataMovementDetails':
+  if len(args) != 3:
+    print('updateLocalDataMovementDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateLocalDataMovementDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getLocalDataMovement':
+  if len(args) != 2:
+    print('getLocalDataMovement requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getLocalDataMovement(eval(args[0]),args[1],))
+
+elif cmd == 'addSCPDataMovementDetails':
+  if len(args) != 5:
+    print('addSCPDataMovementDetails requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.addSCPDataMovementDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),eval(args[4]),))
+
+elif cmd == 'updateSCPDataMovementDetails':
+  if len(args) != 3:
+    print('updateSCPDataMovementDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateSCPDataMovementDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getSCPDataMovement':
+  if len(args) != 2:
+    print('getSCPDataMovement requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getSCPDataMovement(eval(args[0]),args[1],))
+
+elif cmd == 'addUnicoreDataMovementDetails':
+  if len(args) != 5:
+    print('addUnicoreDataMovementDetails requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.addUnicoreDataMovementDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),eval(args[4]),))
+
+elif cmd == 'updateUnicoreDataMovementDetails':
+  if len(args) != 3:
+    print('updateUnicoreDataMovementDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateUnicoreDataMovementDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getUnicoreDataMovement':
+  if len(args) != 2:
+    print('getUnicoreDataMovement requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getUnicoreDataMovement(eval(args[0]),args[1],))
+
+elif cmd == 'addGridFTPDataMovementDetails':
+  if len(args) != 5:
+    print('addGridFTPDataMovementDetails requires 5 args')
+    sys.exit(1)
+  pp.pprint(client.addGridFTPDataMovementDetails(eval(args[0]),args[1],eval(args[2]),eval(args[3]),eval(args[4]),))
+
+elif cmd == 'updateGridFTPDataMovementDetails':
+  if len(args) != 3:
+    print('updateGridFTPDataMovementDetails requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateGridFTPDataMovementDetails(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getGridFTPDataMovement':
+  if len(args) != 2:
+    print('getGridFTPDataMovement requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getGridFTPDataMovement(eval(args[0]),args[1],))
+
+elif cmd == 'changeJobSubmissionPriority':
+  if len(args) != 3:
+    print('changeJobSubmissionPriority requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.changeJobSubmissionPriority(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'changeDataMovementPriority':
+  if len(args) != 3:
+    print('changeDataMovementPriority requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.changeDataMovementPriority(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'changeJobSubmissionPriorities':
+  if len(args) != 2:
+    print('changeJobSubmissionPriorities requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.changeJobSubmissionPriorities(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'changeDataMovementPriorities':
+  if len(args) != 2:
+    print('changeDataMovementPriorities requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.changeDataMovementPriorities(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'deleteJobSubmissionInterface':
+  if len(args) != 3:
+    print('deleteJobSubmissionInterface requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteJobSubmissionInterface(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'deleteDataMovementInterface':
+  if len(args) != 4:
+    print('deleteDataMovementInterface requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.deleteDataMovementInterface(eval(args[0]),args[1],args[2],eval(args[3]),))
+
+elif cmd == 'registerResourceJobManager':
+  if len(args) != 2:
+    print('registerResourceJobManager requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerResourceJobManager(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'updateResourceJobManager':
+  if len(args) != 3:
+    print('updateResourceJobManager requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateResourceJobManager(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getResourceJobManager':
+  if len(args) != 2:
+    print('getResourceJobManager requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getResourceJobManager(eval(args[0]),args[1],))
+
+elif cmd == 'deleteResourceJobManager':
+  if len(args) != 2:
+    print('deleteResourceJobManager requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteResourceJobManager(eval(args[0]),args[1],))
+
+elif cmd == 'deleteBatchQueue':
+  if len(args) != 3:
+    print('deleteBatchQueue requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteBatchQueue(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'registerGatewayResourceProfile':
+  if len(args) != 2:
+    print('registerGatewayResourceProfile requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerGatewayResourceProfile(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'getGatewayResourceProfile':
+  if len(args) != 2:
+    print('getGatewayResourceProfile requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getGatewayResourceProfile(eval(args[0]),args[1],))
+
+elif cmd == 'updateGatewayResourceProfile':
+  if len(args) != 3:
+    print('updateGatewayResourceProfile requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateGatewayResourceProfile(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'deleteGatewayResourceProfile':
+  if len(args) != 2:
+    print('deleteGatewayResourceProfile requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGatewayResourceProfile(eval(args[0]),args[1],))
+
+elif cmd == 'addGatewayComputeResourcePreference':
+  if len(args) != 4:
+    print('addGatewayComputeResourcePreference requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addGatewayComputeResourcePreference(eval(args[0]),args[1],args[2],eval(args[3]),))
+
+elif cmd == 'addGatewayStoragePreference':
+  if len(args) != 4:
+    print('addGatewayStoragePreference requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.addGatewayStoragePreference(eval(args[0]),args[1],args[2],eval(args[3]),))
+
+elif cmd == 'getGatewayComputeResourcePreference':
+  if len(args) != 3:
+    print('getGatewayComputeResourcePreference requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getGatewayComputeResourcePreference(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getGatewayStoragePreference':
+  if len(args) != 3:
+    print('getGatewayStoragePreference requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getGatewayStoragePreference(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getAllGatewayComputeResourcePreferences':
+  if len(args) != 2:
+    print('getAllGatewayComputeResourcePreferences requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGatewayComputeResourcePreferences(eval(args[0]),args[1],))
+
+elif cmd == 'getAllGatewayStoragePreferences':
+  if len(args) != 2:
+    print('getAllGatewayStoragePreferences requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGatewayStoragePreferences(eval(args[0]),args[1],))
+
+elif cmd == 'getAllGatewayResourceProfiles':
+  if len(args) != 1:
+    print('getAllGatewayResourceProfiles requires 1 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGatewayResourceProfiles(eval(args[0]),))
+
+elif cmd == 'updateGatewayComputeResourcePreference':
+  if len(args) != 4:
+    print('updateGatewayComputeResourcePreference requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.updateGatewayComputeResourcePreference(eval(args[0]),args[1],args[2],eval(args[3]),))
+
+elif cmd == 'updateGatewayStoragePreference':
+  if len(args) != 4:
+    print('updateGatewayStoragePreference requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.updateGatewayStoragePreference(eval(args[0]),args[1],args[2],eval(args[3]),))
+
+elif cmd == 'deleteGatewayComputeResourcePreference':
+  if len(args) != 3:
+    print('deleteGatewayComputeResourcePreference requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGatewayComputeResourcePreference(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'deleteGatewayStoragePreference':
+  if len(args) != 3:
+    print('deleteGatewayStoragePreference requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGatewayStoragePreference(eval(args[0]),args[1],args[2],))
+
+elif cmd == 'getAllWorkflows':
+  if len(args) != 2:
+    print('getAllWorkflows requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getAllWorkflows(eval(args[0]),args[1],))
+
+elif cmd == 'getWorkflow':
+  if len(args) != 2:
+    print('getWorkflow requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getWorkflow(eval(args[0]),args[1],))
+
+elif cmd == 'deleteWorkflow':
+  if len(args) != 2:
+    print('deleteWorkflow requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.deleteWorkflow(eval(args[0]),args[1],))
+
+elif cmd == 'registerWorkflow':
+  if len(args) != 3:
+    print('registerWorkflow requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.registerWorkflow(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'updateWorkflow':
+  if len(args) != 3:
+    print('updateWorkflow requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.updateWorkflow(eval(args[0]),args[1],eval(args[2]),))
+
+elif cmd == 'getWorkflowTemplateId':
+  if len(args) != 2:
+    print('getWorkflowTemplateId requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getWorkflowTemplateId(eval(args[0]),args[1],))
+
+elif cmd == 'isWorkflowExistWithName':
+  if len(args) != 2:
+    print('isWorkflowExistWithName requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.isWorkflowExistWithName(eval(args[0]),args[1],))
+
+elif cmd == 'registerDataProduct':
+  if len(args) != 2:
+    print('registerDataProduct requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerDataProduct(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'getDataProduct':
+  if len(args) != 2:
+    print('getDataProduct requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getDataProduct(eval(args[0]),args[1],))
+
+elif cmd == 'registerReplicaLocation':
+  if len(args) != 2:
+    print('registerReplicaLocation requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.registerReplicaLocation(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'getParentDataProduct':
+  if len(args) != 2:
+    print('getParentDataProduct requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getParentDataProduct(eval(args[0]),args[1],))
+
+elif cmd == 'getChildDataProducts':
+  if len(args) != 2:
+    print('getChildDataProducts requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getChildDataProducts(eval(args[0]),args[1],))
+
+elif cmd == 'shareResourceWithUsers':
+  if len(args) != 4:
+    print('shareResourceWithUsers requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.shareResourceWithUsers(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'revokeSharingOfResourceFromUsers':
+  if len(args) != 4:
+    print('revokeSharingOfResourceFromUsers requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.revokeSharingOfResourceFromUsers(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'getAllAccessibleUsers':
+  if len(args) != 4:
+    print('getAllAccessibleUsers requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.getAllAccessibleUsers(eval(args[0]),args[1],eval(args[2]),eval(args[3]),))
+
+elif cmd == 'createGroup':
+  if len(args) != 2:
+    print('createGroup requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.createGroup(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'updateGroup':
+  if len(args) != 2:
+    print('updateGroup requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.updateGroup(eval(args[0]),eval(args[1]),))
+
+elif cmd == 'deleteGroup':
+  if len(args) != 4:
+    print('deleteGroup requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.deleteGroup(eval(args[0]),args[1],args[2],args[3],))
+
+elif cmd == 'getGroup':
+  if len(args) != 2:
+    print('getGroup requires 2 args')
+    sys.exit(1)
+  pp.pprint(client.getGroup(eval(args[0]),args[1],))
+
+elif cmd == 'getAllGroupsUserBelongs':
+  if len(args) != 3:
+    print('getAllGroupsUserBelongs requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getAllGroupsUserBelongs(eval(args[0]),args[1],args[2],))
+
+else:
+  print('Unrecognized method %s' % cmd)
+  sys.exit(1)
+
+transport.close()


[08/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.py
new file mode 100644
index 0000000..75f6271
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.py
@@ -0,0 +1,1111 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.scheduling.ttypes
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.process.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ExperimentType:
+  SINGLE_APPLICATION = 0
+  WORKFLOW = 1
+
+  _VALUES_TO_NAMES = {
+    0: "SINGLE_APPLICATION",
+    1: "WORKFLOW",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SINGLE_APPLICATION": 0,
+    "WORKFLOW": 1,
+  }
+
+class ExperimentSearchFields:
+  EXPERIMENT_NAME = 0
+  EXPERIMENT_DESC = 1
+  APPLICATION_ID = 2
+  FROM_DATE = 3
+  TO_DATE = 4
+  STATUS = 5
+  PROJECT_ID = 6
+
+  _VALUES_TO_NAMES = {
+    0: "EXPERIMENT_NAME",
+    1: "EXPERIMENT_DESC",
+    2: "APPLICATION_ID",
+    3: "FROM_DATE",
+    4: "TO_DATE",
+    5: "STATUS",
+    6: "PROJECT_ID",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EXPERIMENT_NAME": 0,
+    "EXPERIMENT_DESC": 1,
+    "APPLICATION_ID": 2,
+    "FROM_DATE": 3,
+    "TO_DATE": 4,
+    "STATUS": 5,
+    "PROJECT_ID": 6,
+  }
+
+class ProjectSearchFields:
+  PROJECT_NAME = 0
+  PROJECT_DESCRIPTION = 1
+
+  _VALUES_TO_NAMES = {
+    0: "PROJECT_NAME",
+    1: "PROJECT_DESCRIPTION",
+  }
+
+  _NAMES_TO_VALUES = {
+    "PROJECT_NAME": 0,
+    "PROJECT_DESCRIPTION": 1,
+  }
+
+
+class UserConfigurationDataModel:
+  """
+  A structure holding the experiment configuration.
+
+
+
+  Attributes:
+   - airavataAutoSchedule
+   - overrideManualScheduledParams
+   - shareExperimentPublicly
+   - computationalResourceScheduling
+   - throttleResources
+   - userDN
+   - generateCert
+   - storageId
+   - experimentDataDir
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'airavataAutoSchedule', None, False, ), # 1
+    (2, TType.BOOL, 'overrideManualScheduledParams', None, False, ), # 2
+    (3, TType.BOOL, 'shareExperimentPublicly', None, False, ), # 3
+    (4, TType.STRUCT, 'computationalResourceScheduling', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 4
+    (5, TType.BOOL, 'throttleResources', None, False, ), # 5
+    (6, TType.STRING, 'userDN', None, None, ), # 6
+    (7, TType.BOOL, 'generateCert', None, False, ), # 7
+    (8, TType.STRING, 'storageId', None, None, ), # 8
+    (9, TType.STRING, 'experimentDataDir', None, None, ), # 9
+  )
+
+  def __init__(self, airavataAutoSchedule=thrift_spec[1][4], overrideManualScheduledParams=thrift_spec[2][4], shareExperimentPublicly=thrift_spec[3][4], computationalResourceScheduling=None, throttleResources=thrift_spec[5][4], userDN=None, generateCert=thrift_spec[7][4], storageId=None, experimentDataDir=None,):
+    self.airavataAutoSchedule = airavataAutoSchedule
+    self.overrideManualScheduledParams = overrideManualScheduledParams
+    self.shareExperimentPublicly = shareExperimentPublicly
+    self.computationalResourceScheduling = computationalResourceScheduling
+    self.throttleResources = throttleResources
+    self.userDN = userDN
+    self.generateCert = generateCert
+    self.storageId = storageId
+    self.experimentDataDir = experimentDataDir
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.airavataAutoSchedule = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.BOOL:
+          self.overrideManualScheduledParams = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.BOOL:
+          self.shareExperimentPublicly = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.computationalResourceScheduling = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.computationalResourceScheduling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.throttleResources = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.userDN = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.BOOL:
+          self.generateCert = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.storageId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.experimentDataDir = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UserConfigurationDataModel')
+    if self.airavataAutoSchedule is not None:
+      oprot.writeFieldBegin('airavataAutoSchedule', TType.BOOL, 1)
+      oprot.writeBool(self.airavataAutoSchedule)
+      oprot.writeFieldEnd()
+    if self.overrideManualScheduledParams is not None:
+      oprot.writeFieldBegin('overrideManualScheduledParams', TType.BOOL, 2)
+      oprot.writeBool(self.overrideManualScheduledParams)
+      oprot.writeFieldEnd()
+    if self.shareExperimentPublicly is not None:
+      oprot.writeFieldBegin('shareExperimentPublicly', TType.BOOL, 3)
+      oprot.writeBool(self.shareExperimentPublicly)
+      oprot.writeFieldEnd()
+    if self.computationalResourceScheduling is not None:
+      oprot.writeFieldBegin('computationalResourceScheduling', TType.STRUCT, 4)
+      self.computationalResourceScheduling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.throttleResources is not None:
+      oprot.writeFieldBegin('throttleResources', TType.BOOL, 5)
+      oprot.writeBool(self.throttleResources)
+      oprot.writeFieldEnd()
+    if self.userDN is not None:
+      oprot.writeFieldBegin('userDN', TType.STRING, 6)
+      oprot.writeString(self.userDN)
+      oprot.writeFieldEnd()
+    if self.generateCert is not None:
+      oprot.writeFieldBegin('generateCert', TType.BOOL, 7)
+      oprot.writeBool(self.generateCert)
+      oprot.writeFieldEnd()
+    if self.storageId is not None:
+      oprot.writeFieldBegin('storageId', TType.STRING, 8)
+      oprot.writeString(self.storageId)
+      oprot.writeFieldEnd()
+    if self.experimentDataDir is not None:
+      oprot.writeFieldBegin('experimentDataDir', TType.STRING, 9)
+      oprot.writeString(self.experimentDataDir)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataAutoSchedule is None:
+      raise TProtocol.TProtocolException(message='Required field airavataAutoSchedule is unset!')
+    if self.overrideManualScheduledParams is None:
+      raise TProtocol.TProtocolException(message='Required field overrideManualScheduledParams is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataAutoSchedule)
+    value = (value * 31) ^ hash(self.overrideManualScheduledParams)
+    value = (value * 31) ^ hash(self.shareExperimentPublicly)
+    value = (value * 31) ^ hash(self.computationalResourceScheduling)
+    value = (value * 31) ^ hash(self.throttleResources)
+    value = (value * 31) ^ hash(self.userDN)
+    value = (value * 31) ^ hash(self.generateCert)
+    value = (value * 31) ^ hash(self.storageId)
+    value = (value * 31) ^ hash(self.experimentDataDir)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ExperimentModel:
+  """
+  A structure holding the experiment metadata and its child models.
+
+  userName:
+    The user name of the targeted gateway end user on whose behalf the experiment is being created.
+      the associated gateway identity can only be inferred from the security hand-shake so as to avoid
+      authorized Airavata Clients mimicking an unauthorized request. If a gateway is not registered with
+      Airavata, an authorization exception is thrown.
+
+  experimentName:
+    The name of the experiment as defined by the user. The name need not be unique as uniqueness is enforced
+       by the generated experiment id.
+
+  experimentDescription:
+     The verbose description of the experiment. This is an optional parameter.
+
+  Attributes:
+   - experimentId
+   - projectId
+   - gatewayId
+   - experimentType
+   - userName
+   - experimentName
+   - creationTime
+   - description
+   - executionId
+   - gatewayExecutionId
+   - gatewayInstanceId
+   - enableEmailNotification
+   - emailAddresses
+   - userConfigurationData
+   - experimentInputs
+   - experimentOutputs
+   - experimentStatus
+   - errors
+   - processes
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'experimentId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'projectId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+    (4, TType.I32, 'experimentType', None,     0, ), # 4
+    (5, TType.STRING, 'userName', None, None, ), # 5
+    (6, TType.STRING, 'experimentName', None, None, ), # 6
+    (7, TType.I64, 'creationTime', None, None, ), # 7
+    (8, TType.STRING, 'description', None, None, ), # 8
+    (9, TType.STRING, 'executionId', None, None, ), # 9
+    (10, TType.STRING, 'gatewayExecutionId', None, None, ), # 10
+    (11, TType.STRING, 'gatewayInstanceId', None, None, ), # 11
+    (12, TType.BOOL, 'enableEmailNotification', None, None, ), # 12
+    (13, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 13
+    (14, TType.STRUCT, 'userConfigurationData', (UserConfigurationDataModel, UserConfigurationDataModel.thrift_spec), None, ), # 14
+    (15, TType.LIST, 'experimentInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 15
+    (16, TType.LIST, 'experimentOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 16
+    (17, TType.STRUCT, 'experimentStatus', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 17
+    (18, TType.LIST, 'errors', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 18
+    (19, TType.LIST, 'processes', (TType.STRUCT,(apache.airavata.model.process.ttypes.ProcessModel, apache.airavata.model.process.ttypes.ProcessModel.thrift_spec)), None, ), # 19
+  )
+
+  def __init__(self, experimentId=thrift_spec[1][4], projectId=None, gatewayId=None, experimentType=thrift_spec[4][4], userName=None, experimentName=None, creationTime=None, description=None, executionId=None, gatewayExecutionId=None, gatewayInstanceId=None, enableEmailNotification=None, emailAddresses=None, userConfigurationData=None, experimentInputs=None, experimentOutputs=None, experimentStatus=None, errors=None, processes=None,):
+    self.experimentId = experimentId
+    self.projectId = projectId
+    self.gatewayId = gatewayId
+    self.experimentType = experimentType
+    self.userName = userName
+    self.experimentName = experimentName
+    self.creationTime = creationTime
+    self.description = description
+    self.executionId = executionId
+    self.gatewayExecutionId = gatewayExecutionId
+    self.gatewayInstanceId = gatewayInstanceId
+    self.enableEmailNotification = enableEmailNotification
+    self.emailAddresses = emailAddresses
+    self.userConfigurationData = userConfigurationData
+    self.experimentInputs = experimentInputs
+    self.experimentOutputs = experimentOutputs
+    self.experimentStatus = experimentStatus
+    self.errors = errors
+    self.processes = processes
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.projectId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.experimentType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.experimentName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.executionId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.gatewayExecutionId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.gatewayInstanceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.BOOL:
+          self.enableEmailNotification = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.LIST:
+          self.emailAddresses = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString()
+            self.emailAddresses.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.STRUCT:
+          self.userConfigurationData = UserConfigurationDataModel()
+          self.userConfigurationData.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 15:
+        if ftype == TType.LIST:
+          self.experimentInputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem11.read(iprot)
+            self.experimentInputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 16:
+        if ftype == TType.LIST:
+          self.experimentOutputs = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem17.read(iprot)
+            self.experimentOutputs.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 17:
+        if ftype == TType.STRUCT:
+          self.experimentStatus = apache.airavata.model.status.ttypes.ExperimentStatus()
+          self.experimentStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 18:
+        if ftype == TType.LIST:
+          self.errors = []
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = apache.airavata.model.commons.ttypes.ErrorModel()
+            _elem23.read(iprot)
+            self.errors.append(_elem23)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 19:
+        if ftype == TType.LIST:
+          self.processes = []
+          (_etype27, _size24) = iprot.readListBegin()
+          for _i28 in xrange(_size24):
+            _elem29 = apache.airavata.model.process.ttypes.ProcessModel()
+            _elem29.read(iprot)
+            self.processes.append(_elem29)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentModel')
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 1)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.projectId is not None:
+      oprot.writeFieldBegin('projectId', TType.STRING, 2)
+      oprot.writeString(self.projectId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.experimentType is not None:
+      oprot.writeFieldBegin('experimentType', TType.I32, 4)
+      oprot.writeI32(self.experimentType)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 5)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.experimentName is not None:
+      oprot.writeFieldBegin('experimentName', TType.STRING, 6)
+      oprot.writeString(self.experimentName)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 7)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 8)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.executionId is not None:
+      oprot.writeFieldBegin('executionId', TType.STRING, 9)
+      oprot.writeString(self.executionId)
+      oprot.writeFieldEnd()
+    if self.gatewayExecutionId is not None:
+      oprot.writeFieldBegin('gatewayExecutionId', TType.STRING, 10)
+      oprot.writeString(self.gatewayExecutionId)
+      oprot.writeFieldEnd()
+    if self.gatewayInstanceId is not None:
+      oprot.writeFieldBegin('gatewayInstanceId', TType.STRING, 11)
+      oprot.writeString(self.gatewayInstanceId)
+      oprot.writeFieldEnd()
+    if self.enableEmailNotification is not None:
+      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 12)
+      oprot.writeBool(self.enableEmailNotification)
+      oprot.writeFieldEnd()
+    if self.emailAddresses is not None:
+      oprot.writeFieldBegin('emailAddresses', TType.LIST, 13)
+      oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
+      for iter30 in self.emailAddresses:
+        oprot.writeString(iter30)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.userConfigurationData is not None:
+      oprot.writeFieldBegin('userConfigurationData', TType.STRUCT, 14)
+      self.userConfigurationData.write(oprot)
+      oprot.writeFieldEnd()
+    if self.experimentInputs is not None:
+      oprot.writeFieldBegin('experimentInputs', TType.LIST, 15)
+      oprot.writeListBegin(TType.STRUCT, len(self.experimentInputs))
+      for iter31 in self.experimentInputs:
+        iter31.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.experimentOutputs is not None:
+      oprot.writeFieldBegin('experimentOutputs', TType.LIST, 16)
+      oprot.writeListBegin(TType.STRUCT, len(self.experimentOutputs))
+      for iter32 in self.experimentOutputs:
+        iter32.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.experimentStatus is not None:
+      oprot.writeFieldBegin('experimentStatus', TType.STRUCT, 17)
+      self.experimentStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.errors is not None:
+      oprot.writeFieldBegin('errors', TType.LIST, 18)
+      oprot.writeListBegin(TType.STRUCT, len(self.errors))
+      for iter33 in self.errors:
+        iter33.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.processes is not None:
+      oprot.writeFieldBegin('processes', TType.LIST, 19)
+      oprot.writeListBegin(TType.STRUCT, len(self.processes))
+      for iter34 in self.processes:
+        iter34.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.projectId is None:
+      raise TProtocol.TProtocolException(message='Required field projectId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.experimentType is None:
+      raise TProtocol.TProtocolException(message='Required field experimentType is unset!')
+    if self.userName is None:
+      raise TProtocol.TProtocolException(message='Required field userName is unset!')
+    if self.experimentName is None:
+      raise TProtocol.TProtocolException(message='Required field experimentName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.projectId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.experimentType)
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.experimentName)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.executionId)
+    value = (value * 31) ^ hash(self.gatewayExecutionId)
+    value = (value * 31) ^ hash(self.gatewayInstanceId)
+    value = (value * 31) ^ hash(self.enableEmailNotification)
+    value = (value * 31) ^ hash(self.emailAddresses)
+    value = (value * 31) ^ hash(self.userConfigurationData)
+    value = (value * 31) ^ hash(self.experimentInputs)
+    value = (value * 31) ^ hash(self.experimentOutputs)
+    value = (value * 31) ^ hash(self.experimentStatus)
+    value = (value * 31) ^ hash(self.errors)
+    value = (value * 31) ^ hash(self.processes)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ExperimentSummaryModel:
+  """
+  Attributes:
+   - experimentId
+   - projectId
+   - gatewayId
+   - creationTime
+   - userName
+   - name
+   - description
+   - executionId
+   - resourceHostId
+   - experimentStatus
+   - statusUpdateTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'experimentId', None, None, ), # 1
+    (2, TType.STRING, 'projectId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+    (4, TType.I64, 'creationTime', None, None, ), # 4
+    (5, TType.STRING, 'userName', None, None, ), # 5
+    (6, TType.STRING, 'name', None, None, ), # 6
+    (7, TType.STRING, 'description', None, None, ), # 7
+    (8, TType.STRING, 'executionId', None, None, ), # 8
+    (9, TType.STRING, 'resourceHostId', None, None, ), # 9
+    (10, TType.STRING, 'experimentStatus', None, None, ), # 10
+    None, # 11
+    (12, TType.I64, 'statusUpdateTime', None, None, ), # 12
+  )
+
+  def __init__(self, experimentId=None, projectId=None, gatewayId=None, creationTime=None, userName=None, name=None, description=None, executionId=None, resourceHostId=None, experimentStatus=None, statusUpdateTime=None,):
+    self.experimentId = experimentId
+    self.projectId = projectId
+    self.gatewayId = gatewayId
+    self.creationTime = creationTime
+    self.userName = userName
+    self.name = name
+    self.description = description
+    self.executionId = executionId
+    self.resourceHostId = resourceHostId
+    self.experimentStatus = experimentStatus
+    self.statusUpdateTime = statusUpdateTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.projectId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.executionId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.resourceHostId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.experimentStatus = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.I64:
+          self.statusUpdateTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentSummaryModel')
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 1)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.projectId is not None:
+      oprot.writeFieldBegin('projectId', TType.STRING, 2)
+      oprot.writeString(self.projectId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 4)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 5)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 6)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 7)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.executionId is not None:
+      oprot.writeFieldBegin('executionId', TType.STRING, 8)
+      oprot.writeString(self.executionId)
+      oprot.writeFieldEnd()
+    if self.resourceHostId is not None:
+      oprot.writeFieldBegin('resourceHostId', TType.STRING, 9)
+      oprot.writeString(self.resourceHostId)
+      oprot.writeFieldEnd()
+    if self.experimentStatus is not None:
+      oprot.writeFieldBegin('experimentStatus', TType.STRING, 10)
+      oprot.writeString(self.experimentStatus)
+      oprot.writeFieldEnd()
+    if self.statusUpdateTime is not None:
+      oprot.writeFieldBegin('statusUpdateTime', TType.I64, 12)
+      oprot.writeI64(self.statusUpdateTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.projectId is None:
+      raise TProtocol.TProtocolException(message='Required field projectId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.userName is None:
+      raise TProtocol.TProtocolException(message='Required field userName is unset!')
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.projectId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.executionId)
+    value = (value * 31) ^ hash(self.resourceHostId)
+    value = (value * 31) ^ hash(self.experimentStatus)
+    value = (value * 31) ^ hash(self.statusUpdateTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ExperimentStatistics:
+  """
+  Attributes:
+   - allExperimentCount
+   - completedExperimentCount
+   - cancelledExperimentCount
+   - failedExperimentCount
+   - createdExperimentCount
+   - runningExperimentCount
+   - allExperiments
+   - completedExperiments
+   - failedExperiments
+   - cancelledExperiments
+   - createdExperiments
+   - runningExperiments
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'allExperimentCount', None, None, ), # 1
+    (2, TType.I32, 'completedExperimentCount', None, None, ), # 2
+    (3, TType.I32, 'cancelledExperimentCount', None, None, ), # 3
+    (4, TType.I32, 'failedExperimentCount', None, None, ), # 4
+    (5, TType.I32, 'createdExperimentCount', None, None, ), # 5
+    (6, TType.I32, 'runningExperimentCount', None, None, ), # 6
+    (7, TType.LIST, 'allExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 7
+    (8, TType.LIST, 'completedExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 8
+    (9, TType.LIST, 'failedExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 9
+    (10, TType.LIST, 'cancelledExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 10
+    (11, TType.LIST, 'createdExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 11
+    (12, TType.LIST, 'runningExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 12
+  )
+
+  def __init__(self, allExperimentCount=None, completedExperimentCount=None, cancelledExperimentCount=None, failedExperimentCount=None, createdExperimentCount=None, runningExperimentCount=None, allExperiments=None, completedExperiments=None, failedExperiments=None, cancelledExperiments=None, createdExperiments=None, runningExperiments=None,):
+    self.allExperimentCount = allExperimentCount
+    self.completedExperimentCount = completedExperimentCount
+    self.cancelledExperimentCount = cancelledExperimentCount
+    self.failedExperimentCount = failedExperimentCount
+    self.createdExperimentCount = createdExperimentCount
+    self.runningExperimentCount = runningExperimentCount
+    self.allExperiments = allExperiments
+    self.completedExperiments = completedExperiments
+    self.failedExperiments = failedExperiments
+    self.cancelledExperiments = cancelledExperiments
+    self.createdExperiments = createdExperiments
+    self.runningExperiments = runningExperiments
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.allExperimentCount = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.completedExperimentCount = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.cancelledExperimentCount = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.failedExperimentCount = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.createdExperimentCount = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.runningExperimentCount = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.allExperiments = []
+          (_etype38, _size35) = iprot.readListBegin()
+          for _i39 in xrange(_size35):
+            _elem40 = ExperimentSummaryModel()
+            _elem40.read(iprot)
+            self.allExperiments.append(_elem40)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.LIST:
+          self.completedExperiments = []
+          (_etype44, _size41) = iprot.readListBegin()
+          for _i45 in xrange(_size41):
+            _elem46 = ExperimentSummaryModel()
+            _elem46.read(iprot)
+            self.completedExperiments.append(_elem46)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.failedExperiments = []
+          (_etype50, _size47) = iprot.readListBegin()
+          for _i51 in xrange(_size47):
+            _elem52 = ExperimentSummaryModel()
+            _elem52.read(iprot)
+            self.failedExperiments.append(_elem52)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.cancelledExperiments = []
+          (_etype56, _size53) = iprot.readListBegin()
+          for _i57 in xrange(_size53):
+            _elem58 = ExperimentSummaryModel()
+            _elem58.read(iprot)
+            self.cancelledExperiments.append(_elem58)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.LIST:
+          self.createdExperiments = []
+          (_etype62, _size59) = iprot.readListBegin()
+          for _i63 in xrange(_size59):
+            _elem64 = ExperimentSummaryModel()
+            _elem64.read(iprot)
+            self.createdExperiments.append(_elem64)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.runningExperiments = []
+          (_etype68, _size65) = iprot.readListBegin()
+          for _i69 in xrange(_size65):
+            _elem70 = ExperimentSummaryModel()
+            _elem70.read(iprot)
+            self.runningExperiments.append(_elem70)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentStatistics')
+    if self.allExperimentCount is not None:
+      oprot.writeFieldBegin('allExperimentCount', TType.I32, 1)
+      oprot.writeI32(self.allExperimentCount)
+      oprot.writeFieldEnd()
+    if self.completedExperimentCount is not None:
+      oprot.writeFieldBegin('completedExperimentCount', TType.I32, 2)
+      oprot.writeI32(self.completedExperimentCount)
+      oprot.writeFieldEnd()
+    if self.cancelledExperimentCount is not None:
+      oprot.writeFieldBegin('cancelledExperimentCount', TType.I32, 3)
+      oprot.writeI32(self.cancelledExperimentCount)
+      oprot.writeFieldEnd()
+    if self.failedExperimentCount is not None:
+      oprot.writeFieldBegin('failedExperimentCount', TType.I32, 4)
+      oprot.writeI32(self.failedExperimentCount)
+      oprot.writeFieldEnd()
+    if self.createdExperimentCount is not None:
+      oprot.writeFieldBegin('createdExperimentCount', TType.I32, 5)
+      oprot.writeI32(self.createdExperimentCount)
+      oprot.writeFieldEnd()
+    if self.runningExperimentCount is not None:
+      oprot.writeFieldBegin('runningExperimentCount', TType.I32, 6)
+      oprot.writeI32(self.runningExperimentCount)
+      oprot.writeFieldEnd()
+    if self.allExperiments is not None:
+      oprot.writeFieldBegin('allExperiments', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.allExperiments))
+      for iter71 in self.allExperiments:
+        iter71.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.completedExperiments is not None:
+      oprot.writeFieldBegin('completedExperiments', TType.LIST, 8)
+      oprot.writeListBegin(TType.STRUCT, len(self.completedExperiments))
+      for iter72 in self.completedExperiments:
+        iter72.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.failedExperiments is not None:
+      oprot.writeFieldBegin('failedExperiments', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRUCT, len(self.failedExperiments))
+      for iter73 in self.failedExperiments:
+        iter73.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.cancelledExperiments is not None:
+      oprot.writeFieldBegin('cancelledExperiments', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.cancelledExperiments))
+      for iter74 in self.cancelledExperiments:
+        iter74.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.createdExperiments is not None:
+      oprot.writeFieldBegin('createdExperiments', TType.LIST, 11)
+      oprot.writeListBegin(TType.STRUCT, len(self.createdExperiments))
+      for iter75 in self.createdExperiments:
+        iter75.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.runningExperiments is not None:
+      oprot.writeFieldBegin('runningExperiments', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRUCT, len(self.runningExperiments))
+      for iter76 in self.runningExperiments:
+        iter76.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.allExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field allExperimentCount is unset!')
+    if self.completedExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field completedExperimentCount is unset!')
+    if self.failedExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field failedExperimentCount is unset!')
+    if self.createdExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field createdExperimentCount is unset!')
+    if self.runningExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field runningExperimentCount is unset!')
+    if self.allExperiments is None:
+      raise TProtocol.TProtocolException(message='Required field allExperiments is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.allExperimentCount)
+    value = (value * 31) ^ hash(self.completedExperimentCount)
+    value = (value * 31) ^ hash(self.cancelledExperimentCount)
+    value = (value * 31) ^ hash(self.failedExperimentCount)
+    value = (value * 31) ^ hash(self.createdExperimentCount)
+    value = (value * 31) ^ hash(self.runningExperimentCount)
+    value = (value * 31) ^ hash(self.allExperiments)
+    value = (value * 31) ^ hash(self.completedExperiments)
+    value = (value * 31) ^ hash(self.failedExperiments)
+    value = (value * 31) ^ hash(self.cancelledExperiments)
+    value = (value * 31) ^ hash(self.createdExperiments)
+    value = (value * 31) ^ hash(self.runningExperiments)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.pyc
new file mode 100644
index 0000000..c87be3d
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/experiment/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.pyc
new file mode 100644
index 0000000..6dc6d9d
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.py
new file mode 100644
index 0000000..661c390
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.py
@@ -0,0 +1,179 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ResourceType:
+  PROJECT = 0
+  EXPERIMENT = 1
+  DATA = 2
+  OTHER = 3
+
+  _VALUES_TO_NAMES = {
+    0: "PROJECT",
+    1: "EXPERIMENT",
+    2: "DATA",
+    3: "OTHER",
+  }
+
+  _NAMES_TO_VALUES = {
+    "PROJECT": 0,
+    "EXPERIMENT": 1,
+    "DATA": 2,
+    "OTHER": 3,
+  }
+
+class ResourcePermissionType:
+  WRITE = 0
+  READ = 1
+
+  _VALUES_TO_NAMES = {
+    0: "WRITE",
+    1: "READ",
+  }
+
+  _NAMES_TO_VALUES = {
+    "WRITE": 0,
+    "READ": 1,
+  }
+
+
+class GroupModel:
+  """
+  Attributes:
+   - id
+   - name
+   - ownerId
+   - description
+   - members
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'id', None, None, ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRING, 'ownerId', None, None, ), # 3
+    (4, TType.STRING, 'description', None, None, ), # 4
+    (5, TType.LIST, 'members', (TType.STRING,None), None, ), # 5
+  )
+
+  def __init__(self, id=None, name=None, ownerId=None, description=None, members=None,):
+    self.id = id
+    self.name = name
+    self.ownerId = ownerId
+    self.description = description
+    self.members = members
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.id = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.ownerId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.LIST:
+          self.members = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString()
+            self.members.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('GroupModel')
+    if self.id is not None:
+      oprot.writeFieldBegin('id', TType.STRING, 1)
+      oprot.writeString(self.id)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.ownerId is not None:
+      oprot.writeFieldBegin('ownerId', TType.STRING, 3)
+      oprot.writeString(self.ownerId)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 4)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.members is not None:
+      oprot.writeFieldBegin('members', TType.LIST, 5)
+      oprot.writeListBegin(TType.STRING, len(self.members))
+      for iter6 in self.members:
+        oprot.writeString(iter6)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.id)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.ownerId)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.members)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.pyc
new file mode 100644
index 0000000..b8c2604
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/group/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.pyc
new file mode 100644
index 0000000..f7b1956
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.py
new file mode 100644
index 0000000..8c8f881
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.py
@@ -0,0 +1,237 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.status.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class JobModel:
+  """
+  Attributes:
+   - jobId
+   - taskId
+   - processId
+   - jobDescription
+   - creationTime
+   - jobStatus
+   - computeResourceConsumed
+   - jobName
+   - workingDir
+   - stdOut
+   - stdErr
+   - exitCode
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobId', None, None, ), # 1
+    (2, TType.STRING, 'taskId', None, None, ), # 2
+    (3, TType.STRING, 'processId', None, None, ), # 3
+    (4, TType.STRING, 'jobDescription', None, None, ), # 4
+    (5, TType.I64, 'creationTime', None, None, ), # 5
+    (6, TType.STRUCT, 'jobStatus', (apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec), None, ), # 6
+    (7, TType.STRING, 'computeResourceConsumed', None, None, ), # 7
+    (8, TType.STRING, 'jobName', None, None, ), # 8
+    (9, TType.STRING, 'workingDir', None, None, ), # 9
+    (10, TType.STRING, 'stdOut', None, None, ), # 10
+    (11, TType.STRING, 'stdErr', None, None, ), # 11
+    (12, TType.I32, 'exitCode', None, None, ), # 12
+  )
+
+  def __init__(self, jobId=None, taskId=None, processId=None, jobDescription=None, creationTime=None, jobStatus=None, computeResourceConsumed=None, jobName=None, workingDir=None, stdOut=None, stdErr=None, exitCode=None,):
+    self.jobId = jobId
+    self.taskId = taskId
+    self.processId = processId
+    self.jobDescription = jobDescription
+    self.creationTime = creationTime
+    self.jobStatus = jobStatus
+    self.computeResourceConsumed = computeResourceConsumed
+    self.jobName = jobName
+    self.workingDir = workingDir
+    self.stdOut = stdOut
+    self.stdErr = stdErr
+    self.exitCode = exitCode
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.taskId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.jobDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRUCT:
+          self.jobStatus = apache.airavata.model.status.ttypes.JobStatus()
+          self.jobStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.computeResourceConsumed = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.jobName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.workingDir = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.stdOut = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.stdErr = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.I32:
+          self.exitCode = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobModel')
+    if self.jobId is not None:
+      oprot.writeFieldBegin('jobId', TType.STRING, 1)
+      oprot.writeString(self.jobId)
+      oprot.writeFieldEnd()
+    if self.taskId is not None:
+      oprot.writeFieldBegin('taskId', TType.STRING, 2)
+      oprot.writeString(self.taskId)
+      oprot.writeFieldEnd()
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 3)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.jobDescription is not None:
+      oprot.writeFieldBegin('jobDescription', TType.STRING, 4)
+      oprot.writeString(self.jobDescription)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 5)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.jobStatus is not None:
+      oprot.writeFieldBegin('jobStatus', TType.STRUCT, 6)
+      self.jobStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.computeResourceConsumed is not None:
+      oprot.writeFieldBegin('computeResourceConsumed', TType.STRING, 7)
+      oprot.writeString(self.computeResourceConsumed)
+      oprot.writeFieldEnd()
+    if self.jobName is not None:
+      oprot.writeFieldBegin('jobName', TType.STRING, 8)
+      oprot.writeString(self.jobName)
+      oprot.writeFieldEnd()
+    if self.workingDir is not None:
+      oprot.writeFieldBegin('workingDir', TType.STRING, 9)
+      oprot.writeString(self.workingDir)
+      oprot.writeFieldEnd()
+    if self.stdOut is not None:
+      oprot.writeFieldBegin('stdOut', TType.STRING, 10)
+      oprot.writeString(self.stdOut)
+      oprot.writeFieldEnd()
+    if self.stdErr is not None:
+      oprot.writeFieldBegin('stdErr', TType.STRING, 11)
+      oprot.writeString(self.stdErr)
+      oprot.writeFieldEnd()
+    if self.exitCode is not None:
+      oprot.writeFieldBegin('exitCode', TType.I32, 12)
+      oprot.writeI32(self.exitCode)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobId is None:
+      raise TProtocol.TProtocolException(message='Required field jobId is unset!')
+    if self.taskId is None:
+      raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.jobDescription is None:
+      raise TProtocol.TProtocolException(message='Required field jobDescription is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobId)
+    value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.jobDescription)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.jobStatus)
+    value = (value * 31) ^ hash(self.computeResourceConsumed)
+    value = (value * 31) ^ hash(self.jobName)
+    value = (value * 31) ^ hash(self.workingDir)
+    value = (value * 31) ^ hash(self.stdOut)
+    value = (value * 31) ^ hash(self.stdErr)
+    value = (value * 31) ^ hash(self.exitCode)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.pyc
new file mode 100644
index 0000000..8332279
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/job/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.pyc
new file mode 100644
index 0000000..dfe4eb0
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.pyc
new file mode 100644
index 0000000..07f7166
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/messaging/event/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[11/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.py
new file mode 100644
index 0000000..e129db4
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.py
@@ -0,0 +1,1640 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.appcatalog.parallelism.ttypes
+import apache.airavata.model.data.movement.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ResourceJobManagerType:
+  """
+  * Enumeration of local resource job manager types supported by Airavata
+  *
+  * FORK:
+  *  Forking of commands without any job manager
+  *
+  * PBS:
+  *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+  *
+  * SLURM:
+  *  The Simple Linux Utility for Resource Management is a open source workload manager.
+   *
+   * UGE:
+   *  Univa Grid Engine, a variation of PBS implementation.
+   *
+   * LSF:
+   *  IBM Platform Load Sharing Facility is dominantly installed on IBM clusters.
+  *
+  """
+  FORK = 0
+  PBS = 1
+  SLURM = 2
+  LSF = 3
+  UGE = 4
+
+  _VALUES_TO_NAMES = {
+    0: "FORK",
+    1: "PBS",
+    2: "SLURM",
+    3: "LSF",
+    4: "UGE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "FORK": 0,
+    "PBS": 1,
+    "SLURM": 2,
+    "LSF": 3,
+    "UGE": 4,
+  }
+
+class JobManagerCommand:
+  """
+  Enumeration of resource job manager commands
+
+  SUBMISSION:
+   Ex: qsub, sbatch
+
+  JOBMONITORING:
+   Ex: qstat, squeue
+
+  DELETION:
+   Ex: qdel, scancel
+
+  CHECK_JOB:
+   Detailed Status about the Job. Ex: checkjob
+
+  SHOW_QUEUE:
+   List of Queued Job by the schedular. Ex: showq
+
+  SHOW_RESERVATION:
+   List all reservations. Ex:showres, show_res
+
+  SHOW_START:
+   Display the start time of the specified job. Ex: showstart
+
+  """
+  SUBMISSION = 0
+  JOB_MONITORING = 1
+  DELETION = 2
+  CHECK_JOB = 3
+  SHOW_QUEUE = 4
+  SHOW_RESERVATION = 5
+  SHOW_START = 6
+
+  _VALUES_TO_NAMES = {
+    0: "SUBMISSION",
+    1: "JOB_MONITORING",
+    2: "DELETION",
+    3: "CHECK_JOB",
+    4: "SHOW_QUEUE",
+    5: "SHOW_RESERVATION",
+    6: "SHOW_START",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SUBMISSION": 0,
+    "JOB_MONITORING": 1,
+    "DELETION": 2,
+    "CHECK_JOB": 3,
+    "SHOW_QUEUE": 4,
+    "SHOW_RESERVATION": 5,
+    "SHOW_START": 6,
+  }
+
+class FileSystems:
+  """
+  Enumeration of File Systems on the resource
+
+  FORK:
+   Forking of commands without any job manager
+
+  PBS:
+   Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+
+  UGE:
+   Univa Grid Engine, a variation of PBS implementation.
+
+  SLURM:
+   The Simple Linux Utility for Resource Management is a open source workload manager.
+
+  """
+  HOME = 0
+  WORK = 1
+  LOCALTMP = 2
+  SCRATCH = 3
+  ARCHIVE = 4
+
+  _VALUES_TO_NAMES = {
+    0: "HOME",
+    1: "WORK",
+    2: "LOCALTMP",
+    3: "SCRATCH",
+    4: "ARCHIVE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "HOME": 0,
+    "WORK": 1,
+    "LOCALTMP": 2,
+    "SCRATCH": 3,
+    "ARCHIVE": 4,
+  }
+
+class JobSubmissionProtocol:
+  """
+  Enumeration of Airavata supported Job Submission Mechanisms for High Performance Computing Clusters.
+
+  SSH:
+   Execute remote job submission commands using via secure shell protocol.
+
+  GRAM:
+   Execute remote jobs via Globus GRAM service.
+
+  UNICORE:
+   Execute remote jobs via Unicore services
+
+  """
+  LOCAL = 0
+  SSH = 1
+  GLOBUS = 2
+  UNICORE = 3
+  CLOUD = 4
+  SSH_FORK = 5
+  LOCAL_FORK = 6
+
+  _VALUES_TO_NAMES = {
+    0: "LOCAL",
+    1: "SSH",
+    2: "GLOBUS",
+    3: "UNICORE",
+    4: "CLOUD",
+    5: "SSH_FORK",
+    6: "LOCAL_FORK",
+  }
+
+  _NAMES_TO_VALUES = {
+    "LOCAL": 0,
+    "SSH": 1,
+    "GLOBUS": 2,
+    "UNICORE": 3,
+    "CLOUD": 4,
+    "SSH_FORK": 5,
+    "LOCAL_FORK": 6,
+  }
+
+class MonitorMode:
+  """
+  Monitoring modes
+
+  POLL_JOB_MANAGER:
+  GFac need to pull job status changes.
+
+  XSEDE_AMQP_SUBSCRIBE:
+  Server will publish job status changes to amqp servert.
+
+
+  """
+  POLL_JOB_MANAGER = 0
+  JOB_EMAIL_NOTIFICATION_MONITOR = 1
+  XSEDE_AMQP_SUBSCRIBE = 2
+  FORK = 3
+
+  _VALUES_TO_NAMES = {
+    0: "POLL_JOB_MANAGER",
+    1: "JOB_EMAIL_NOTIFICATION_MONITOR",
+    2: "XSEDE_AMQP_SUBSCRIBE",
+    3: "FORK",
+  }
+
+  _NAMES_TO_VALUES = {
+    "POLL_JOB_MANAGER": 0,
+    "JOB_EMAIL_NOTIFICATION_MONITOR": 1,
+    "XSEDE_AMQP_SUBSCRIBE": 2,
+    "FORK": 3,
+  }
+
+class DMType:
+  COMPUTE_RESOURCE = 0
+  STORAGE_RESOURCE = 1
+
+  _VALUES_TO_NAMES = {
+    0: "COMPUTE_RESOURCE",
+    1: "STORAGE_RESOURCE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "COMPUTE_RESOURCE": 0,
+    "STORAGE_RESOURCE": 1,
+  }
+
+class ProviderName:
+  """
+  Provider name
+
+  """
+  EC2 = 0
+  AWSEC2 = 1
+  RACKSPACE = 2
+
+  _VALUES_TO_NAMES = {
+    0: "EC2",
+    1: "AWSEC2",
+    2: "RACKSPACE",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EC2": 0,
+    "AWSEC2": 1,
+    "RACKSPACE": 2,
+  }
+
+
+class ResourceJobManager:
+  """
+  Resource Job Manager Information
+
+  resourceJobManagerType:
+   A typical HPC cluster has a single Job Manager to manage the resources.
+
+  pushMonitoringEndpoint:
+   If the job manager pushes out state changes to a database or bus, specify the service endpoint.
+    Ex: Moab Web Service, Moab MongoDB URL, AMQP (GLUE2) Broker
+
+  jobManagerBinPath:
+   Path to the Job Manager Installation Binary directory.
+
+  jobManagerCommands:
+   An enumeration of commonly used manager commands.
+
+
+  Attributes:
+   - resourceJobManagerId
+   - resourceJobManagerType
+   - pushMonitoringEndpoint
+   - jobManagerBinPath
+   - jobManagerCommands
+   - parallelismPrefix
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'resourceJobManagerId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'resourceJobManagerType', None, None, ), # 2
+    (3, TType.STRING, 'pushMonitoringEndpoint', None, None, ), # 3
+    (4, TType.STRING, 'jobManagerBinPath', None, None, ), # 4
+    (5, TType.MAP, 'jobManagerCommands', (TType.I32,None,TType.STRING,None), None, ), # 5
+    (6, TType.MAP, 'parallelismPrefix', (TType.I32,None,TType.STRING,None), None, ), # 6
+  )
+
+  def __init__(self, resourceJobManagerId=thrift_spec[1][4], resourceJobManagerType=None, pushMonitoringEndpoint=None, jobManagerBinPath=None, jobManagerCommands=None, parallelismPrefix=None,):
+    self.resourceJobManagerId = resourceJobManagerId
+    self.resourceJobManagerType = resourceJobManagerType
+    self.pushMonitoringEndpoint = pushMonitoringEndpoint
+    self.jobManagerBinPath = jobManagerBinPath
+    self.jobManagerCommands = jobManagerCommands
+    self.parallelismPrefix = parallelismPrefix
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.resourceJobManagerId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.resourceJobManagerType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.pushMonitoringEndpoint = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.jobManagerBinPath = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.MAP:
+          self.jobManagerCommands = {}
+          (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
+          for _i4 in xrange(_size0):
+            _key5 = iprot.readI32()
+            _val6 = iprot.readString()
+            self.jobManagerCommands[_key5] = _val6
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.MAP:
+          self.parallelismPrefix = {}
+          (_ktype8, _vtype9, _size7 ) = iprot.readMapBegin()
+          for _i11 in xrange(_size7):
+            _key12 = iprot.readI32()
+            _val13 = iprot.readString()
+            self.parallelismPrefix[_key12] = _val13
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ResourceJobManager')
+    if self.resourceJobManagerId is not None:
+      oprot.writeFieldBegin('resourceJobManagerId', TType.STRING, 1)
+      oprot.writeString(self.resourceJobManagerId)
+      oprot.writeFieldEnd()
+    if self.resourceJobManagerType is not None:
+      oprot.writeFieldBegin('resourceJobManagerType', TType.I32, 2)
+      oprot.writeI32(self.resourceJobManagerType)
+      oprot.writeFieldEnd()
+    if self.pushMonitoringEndpoint is not None:
+      oprot.writeFieldBegin('pushMonitoringEndpoint', TType.STRING, 3)
+      oprot.writeString(self.pushMonitoringEndpoint)
+      oprot.writeFieldEnd()
+    if self.jobManagerBinPath is not None:
+      oprot.writeFieldBegin('jobManagerBinPath', TType.STRING, 4)
+      oprot.writeString(self.jobManagerBinPath)
+      oprot.writeFieldEnd()
+    if self.jobManagerCommands is not None:
+      oprot.writeFieldBegin('jobManagerCommands', TType.MAP, 5)
+      oprot.writeMapBegin(TType.I32, TType.STRING, len(self.jobManagerCommands))
+      for kiter14,viter15 in self.jobManagerCommands.items():
+        oprot.writeI32(kiter14)
+        oprot.writeString(viter15)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.parallelismPrefix is not None:
+      oprot.writeFieldBegin('parallelismPrefix', TType.MAP, 6)
+      oprot.writeMapBegin(TType.I32, TType.STRING, len(self.parallelismPrefix))
+      for kiter16,viter17 in self.parallelismPrefix.items():
+        oprot.writeI32(kiter16)
+        oprot.writeString(viter17)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.resourceJobManagerId is None:
+      raise TProtocol.TProtocolException(message='Required field resourceJobManagerId is unset!')
+    if self.resourceJobManagerType is None:
+      raise TProtocol.TProtocolException(message='Required field resourceJobManagerType is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.resourceJobManagerId)
+    value = (value * 31) ^ hash(self.resourceJobManagerType)
+    value = (value * 31) ^ hash(self.pushMonitoringEndpoint)
+    value = (value * 31) ^ hash(self.jobManagerBinPath)
+    value = (value * 31) ^ hash(self.jobManagerCommands)
+    value = (value * 31) ^ hash(self.parallelismPrefix)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class BatchQueue:
+  """
+  Batch Queue Information on SuperComputers
+
+  maxRunTime:
+   Maximum allowed run time in hours.
+
+  Attributes:
+   - queueName
+   - queueDescription
+   - maxRunTime
+   - maxNodes
+   - maxProcessors
+   - maxJobsInQueue
+   - maxMemory
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'queueName', None, None, ), # 1
+    (2, TType.STRING, 'queueDescription', None, None, ), # 2
+    (3, TType.I32, 'maxRunTime', None, None, ), # 3
+    (4, TType.I32, 'maxNodes', None, None, ), # 4
+    (5, TType.I32, 'maxProcessors', None, None, ), # 5
+    (6, TType.I32, 'maxJobsInQueue', None, None, ), # 6
+    (7, TType.I32, 'maxMemory', None, None, ), # 7
+  )
+
+  def __init__(self, queueName=None, queueDescription=None, maxRunTime=None, maxNodes=None, maxProcessors=None, maxJobsInQueue=None, maxMemory=None,):
+    self.queueName = queueName
+    self.queueDescription = queueDescription
+    self.maxRunTime = maxRunTime
+    self.maxNodes = maxNodes
+    self.maxProcessors = maxProcessors
+    self.maxJobsInQueue = maxJobsInQueue
+    self.maxMemory = maxMemory
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.queueName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.queueDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.maxRunTime = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.maxNodes = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.maxProcessors = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.maxJobsInQueue = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.maxMemory = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('BatchQueue')
+    if self.queueName is not None:
+      oprot.writeFieldBegin('queueName', TType.STRING, 1)
+      oprot.writeString(self.queueName)
+      oprot.writeFieldEnd()
+    if self.queueDescription is not None:
+      oprot.writeFieldBegin('queueDescription', TType.STRING, 2)
+      oprot.writeString(self.queueDescription)
+      oprot.writeFieldEnd()
+    if self.maxRunTime is not None:
+      oprot.writeFieldBegin('maxRunTime', TType.I32, 3)
+      oprot.writeI32(self.maxRunTime)
+      oprot.writeFieldEnd()
+    if self.maxNodes is not None:
+      oprot.writeFieldBegin('maxNodes', TType.I32, 4)
+      oprot.writeI32(self.maxNodes)
+      oprot.writeFieldEnd()
+    if self.maxProcessors is not None:
+      oprot.writeFieldBegin('maxProcessors', TType.I32, 5)
+      oprot.writeI32(self.maxProcessors)
+      oprot.writeFieldEnd()
+    if self.maxJobsInQueue is not None:
+      oprot.writeFieldBegin('maxJobsInQueue', TType.I32, 6)
+      oprot.writeI32(self.maxJobsInQueue)
+      oprot.writeFieldEnd()
+    if self.maxMemory is not None:
+      oprot.writeFieldBegin('maxMemory', TType.I32, 7)
+      oprot.writeI32(self.maxMemory)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.queueName is None:
+      raise TProtocol.TProtocolException(message='Required field queueName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.queueName)
+    value = (value * 31) ^ hash(self.queueDescription)
+    value = (value * 31) ^ hash(self.maxRunTime)
+    value = (value * 31) ^ hash(self.maxNodes)
+    value = (value * 31) ^ hash(self.maxProcessors)
+    value = (value * 31) ^ hash(self.maxJobsInQueue)
+    value = (value * 31) ^ hash(self.maxMemory)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class LOCALSubmission:
+  """
+  Locally Fork Jobs as OS processes
+
+  alternativeSSHHostName:
+   If the login to ssh is different than the hostname itself, specify it here
+
+  sshPort:
+   If a non-default port needs to used, specify it.
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - resourceJobManager
+   - securityProtocol
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRUCT, 'resourceJobManager', (ResourceJobManager, ResourceJobManager.thrift_spec), None, ), # 2
+    (3, TType.I32, 'securityProtocol', None, None, ), # 3
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], resourceJobManager=None, securityProtocol=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.resourceJobManager = resourceJobManager
+    self.securityProtocol = securityProtocol
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.resourceJobManager = ResourceJobManager()
+          self.resourceJobManager.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('LOCALSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.resourceJobManager is not None:
+      oprot.writeFieldBegin('resourceJobManager', TType.STRUCT, 2)
+      self.resourceJobManager.write(oprot)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 3)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.resourceJobManager is None:
+      raise TProtocol.TProtocolException(message='Required field resourceJobManager is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.resourceJobManager)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class SSHJobSubmission:
+  """
+  Authenticate using Secured Shell
+
+  alternativeSSHHostName:
+   If the login to ssh is different than the hostname itself, specify it here
+
+  sshPort:
+   If a non-default port needs to used, specify it.
+
+  batchQueueEmailSenders:
+   If a resource always sends the monitoring from a specific address, specify the
+    full email address. If a resource sends emails from multiple addresses (
+     example: based on the submitted login node) then use the wildchar * to indicate
+     the same. Example: *@*.example.com or *@example.com
+
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - securityProtocol
+   - resourceJobManager
+   - alternativeSSHHostName
+   - sshPort
+   - monitorMode
+   - batchQueueEmailSenders
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRUCT, 'resourceJobManager', (ResourceJobManager, ResourceJobManager.thrift_spec), None, ), # 3
+    (4, TType.STRING, 'alternativeSSHHostName', None, None, ), # 4
+    (5, TType.I32, 'sshPort', None, 22, ), # 5
+    (6, TType.I32, 'monitorMode', None, None, ), # 6
+    (7, TType.LIST, 'batchQueueEmailSenders', (TType.STRING,None), None, ), # 7
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, resourceJobManager=None, alternativeSSHHostName=None, sshPort=thrift_spec[5][4], monitorMode=None, batchQueueEmailSenders=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
+    self.resourceJobManager = resourceJobManager
+    self.alternativeSSHHostName = alternativeSSHHostName
+    self.sshPort = sshPort
+    self.monitorMode = monitorMode
+    self.batchQueueEmailSenders = batchQueueEmailSenders
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.resourceJobManager = ResourceJobManager()
+          self.resourceJobManager.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.alternativeSSHHostName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.sshPort = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.monitorMode = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.batchQueueEmailSenders = []
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = iprot.readString()
+            self.batchQueueEmailSenders.append(_elem23)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('SSHJobSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.resourceJobManager is not None:
+      oprot.writeFieldBegin('resourceJobManager', TType.STRUCT, 3)
+      self.resourceJobManager.write(oprot)
+      oprot.writeFieldEnd()
+    if self.alternativeSSHHostName is not None:
+      oprot.writeFieldBegin('alternativeSSHHostName', TType.STRING, 4)
+      oprot.writeString(self.alternativeSSHHostName)
+      oprot.writeFieldEnd()
+    if self.sshPort is not None:
+      oprot.writeFieldBegin('sshPort', TType.I32, 5)
+      oprot.writeI32(self.sshPort)
+      oprot.writeFieldEnd()
+    if self.monitorMode is not None:
+      oprot.writeFieldBegin('monitorMode', TType.I32, 6)
+      oprot.writeI32(self.monitorMode)
+      oprot.writeFieldEnd()
+    if self.batchQueueEmailSenders is not None:
+      oprot.writeFieldBegin('batchQueueEmailSenders', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRING, len(self.batchQueueEmailSenders))
+      for iter24 in self.batchQueueEmailSenders:
+        oprot.writeString(iter24)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.resourceJobManager is None:
+      raise TProtocol.TProtocolException(message='Required field resourceJobManager is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.resourceJobManager)
+    value = (value * 31) ^ hash(self.alternativeSSHHostName)
+    value = (value * 31) ^ hash(self.sshPort)
+    value = (value * 31) ^ hash(self.monitorMode)
+    value = (value * 31) ^ hash(self.batchQueueEmailSenders)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class GlobusJobSubmission:
+  """
+  Attributes:
+   - jobSubmissionInterfaceId
+   - securityProtocol
+   - globusGateKeeperEndPoint
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.LIST, 'globusGateKeeperEndPoint', (TType.STRING,None), None, ), # 3
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, globusGateKeeperEndPoint=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
+    self.globusGateKeeperEndPoint = globusGateKeeperEndPoint
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.LIST:
+          self.globusGateKeeperEndPoint = []
+          (_etype28, _size25) = iprot.readListBegin()
+          for _i29 in xrange(_size25):
+            _elem30 = iprot.readString()
+            self.globusGateKeeperEndPoint.append(_elem30)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('GlobusJobSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.globusGateKeeperEndPoint is not None:
+      oprot.writeFieldBegin('globusGateKeeperEndPoint', TType.LIST, 3)
+      oprot.writeListBegin(TType.STRING, len(self.globusGateKeeperEndPoint))
+      for iter31 in self.globusGateKeeperEndPoint:
+        oprot.writeString(iter31)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.globusGateKeeperEndPoint)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class UnicoreJobSubmission:
+  """
+  Unicore Job Submission
+
+  unicoreEndPointURL:
+   unicoreGateway End Point. The provider will query this service to fetch required service end points.
+  authenticationMode
+   The authenticationMode defines the way certificate is fetched.
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - securityProtocol
+   - unicoreEndPointURL
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRING, 'unicoreEndPointURL', None, None, ), # 3
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, unicoreEndPointURL=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
+    self.unicoreEndPointURL = unicoreEndPointURL
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.unicoreEndPointURL = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UnicoreJobSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.unicoreEndPointURL is not None:
+      oprot.writeFieldBegin('unicoreEndPointURL', TType.STRING, 3)
+      oprot.writeString(self.unicoreEndPointURL)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.unicoreEndPointURL is None:
+      raise TProtocol.TProtocolException(message='Required field unicoreEndPointURL is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.unicoreEndPointURL)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class CloudJobSubmission:
+  """
+  Cloud Job Submission
+
+
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - securityProtocol
+   - nodeId
+   - executableType
+   - providerName
+   - userAccountName
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRING, 'nodeId', None, None, ), # 3
+    (4, TType.STRING, 'executableType', None, None, ), # 4
+    (5, TType.I32, 'providerName', None, None, ), # 5
+    (6, TType.STRING, 'userAccountName', None, None, ), # 6
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, nodeId=None, executableType=None, providerName=None, userAccountName=None,):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
+    self.nodeId = nodeId
+    self.executableType = executableType
+    self.providerName = providerName
+    self.userAccountName = userAccountName
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.nodeId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.executableType = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.providerName = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.userAccountName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('CloudJobSubmission')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
+    if self.nodeId is not None:
+      oprot.writeFieldBegin('nodeId', TType.STRING, 3)
+      oprot.writeString(self.nodeId)
+      oprot.writeFieldEnd()
+    if self.executableType is not None:
+      oprot.writeFieldBegin('executableType', TType.STRING, 4)
+      oprot.writeString(self.executableType)
+      oprot.writeFieldEnd()
+    if self.providerName is not None:
+      oprot.writeFieldBegin('providerName', TType.I32, 5)
+      oprot.writeI32(self.providerName)
+      oprot.writeFieldEnd()
+    if self.userAccountName is not None:
+      oprot.writeFieldBegin('userAccountName', TType.STRING, 6)
+      oprot.writeString(self.userAccountName)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
+    if self.nodeId is None:
+      raise TProtocol.TProtocolException(message='Required field nodeId is unset!')
+    if self.executableType is None:
+      raise TProtocol.TProtocolException(message='Required field executableType is unset!')
+    if self.providerName is None:
+      raise TProtocol.TProtocolException(message='Required field providerName is unset!')
+    if self.userAccountName is None:
+      raise TProtocol.TProtocolException(message='Required field userAccountName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
+    value = (value * 31) ^ hash(self.nodeId)
+    value = (value * 31) ^ hash(self.executableType)
+    value = (value * 31) ^ hash(self.providerName)
+    value = (value * 31) ^ hash(self.userAccountName)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobSubmissionInterface:
+  """
+  Job Submission Interfaces
+
+  jobSubmissionInterfaceId: The Job Submission Interface has to be previously registered and referenced here.
+
+  priorityOrder:
+   For resources with multiple interfaces, the priority order should be selected.
+    Lower the numerical number, higher the priority
+
+
+  Attributes:
+   - jobSubmissionInterfaceId
+   - jobSubmissionProtocol
+   - priorityOrder
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobSubmissionInterfaceId', None, None, ), # 1
+    (2, TType.I32, 'jobSubmissionProtocol', None, None, ), # 2
+    (3, TType.I32, 'priorityOrder', None, 0, ), # 3
+  )
+
+  def __init__(self, jobSubmissionInterfaceId=None, jobSubmissionProtocol=None, priorityOrder=thrift_spec[3][4],):
+    self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.jobSubmissionProtocol = jobSubmissionProtocol
+    self.priorityOrder = priorityOrder
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobSubmissionInterfaceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.jobSubmissionProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.priorityOrder = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobSubmissionInterface')
+    if self.jobSubmissionInterfaceId is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.jobSubmissionInterfaceId)
+      oprot.writeFieldEnd()
+    if self.jobSubmissionProtocol is not None:
+      oprot.writeFieldBegin('jobSubmissionProtocol', TType.I32, 2)
+      oprot.writeI32(self.jobSubmissionProtocol)
+      oprot.writeFieldEnd()
+    if self.priorityOrder is not None:
+      oprot.writeFieldBegin('priorityOrder', TType.I32, 3)
+      oprot.writeI32(self.priorityOrder)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.jobSubmissionProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionProtocol is unset!')
+    if self.priorityOrder is None:
+      raise TProtocol.TProtocolException(message='Required field priorityOrder is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.jobSubmissionProtocol)
+    value = (value * 31) ^ hash(self.priorityOrder)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ComputeResourceDescription:
+  """
+  Computational Resource Description
+
+  computeResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource.
+
+  hostName:
+    Fully Qualified Host Name.
+
+  hostAliases:
+    Aliases if any.
+
+  ipAddress:
+    IP Addresses of the Resource.
+
+  resourceDescription:
+   A user friendly description of the resource.
+
+  JobSubmissionProtocols:
+   A computational resources may have one or more ways of submitting Jobs. This structure
+     will hold all available mechanisms to interact with the resource.
+   The key is the priority
+
+  DataMovementProtocol:
+   Option to specify a prefered data movement mechanism of the available options.
+
+  fileSystems:
+   Map of file systems type and the path.
+
+
+  Attributes:
+   - computeResourceId
+   - hostName
+   - hostAliases
+   - ipAddresses
+   - resourceDescription
+   - enabled
+   - batchQueues
+   - fileSystems
+   - jobSubmissionInterfaces
+   - dataMovementInterfaces
+   - maxMemoryPerNode
+   - gatewayUsageReporting
+   - gatewayUsageModuleLoadCommand
+   - gatewayUsageExecutable
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'computeResourceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'hostName', None, None, ), # 2
+    (3, TType.LIST, 'hostAliases', (TType.STRING,None), None, ), # 3
+    (4, TType.LIST, 'ipAddresses', (TType.STRING,None), None, ), # 4
+    (5, TType.STRING, 'resourceDescription', None, None, ), # 5
+    (6, TType.BOOL, 'enabled', None, None, ), # 6
+    (7, TType.LIST, 'batchQueues', (TType.STRUCT,(BatchQueue, BatchQueue.thrift_spec)), None, ), # 7
+    (8, TType.MAP, 'fileSystems', (TType.I32,None,TType.STRING,None), None, ), # 8
+    (9, TType.LIST, 'jobSubmissionInterfaces', (TType.STRUCT,(JobSubmissionInterface, JobSubmissionInterface.thrift_spec)), None, ), # 9
+    (10, TType.LIST, 'dataMovementInterfaces', (TType.STRUCT,(apache.airavata.model.data.movement.ttypes.DataMovementInterface, apache.airavata.model.data.movement.ttypes.DataMovementInterface.thrift_spec)), None, ), # 10
+    (11, TType.I32, 'maxMemoryPerNode', None, None, ), # 11
+    (12, TType.BOOL, 'gatewayUsageReporting', None, None, ), # 12
+    (13, TType.STRING, 'gatewayUsageModuleLoadCommand', None, None, ), # 13
+    (14, TType.STRING, 'gatewayUsageExecutable', None, None, ), # 14
+  )
+
+  def __init__(self, computeResourceId=thrift_spec[1][4], hostName=None, hostAliases=None, ipAddresses=None, resourceDescription=None, enabled=None, batchQueues=None, fileSystems=None, jobSubmissionInterfaces=None, dataMovementInterfaces=None, maxMemoryPerNode=None, gatewayUsageReporting=None, gatewayUsageModuleLoadCommand=None, gatewayUsageExecutable=None,):
+    self.computeResourceId = computeResourceId
+    self.hostName = hostName
+    self.hostAliases = hostAliases
+    self.ipAddresses = ipAddresses
+    self.resourceDescription = resourceDescription
+    self.enabled = enabled
+    self.batchQueues = batchQueues
+    self.fileSystems = fileSystems
+    self.jobSubmissionInterfaces = jobSubmissionInterfaces
+    self.dataMovementInterfaces = dataMovementInterfaces
+    self.maxMemoryPerNode = maxMemoryPerNode
+    self.gatewayUsageReporting = gatewayUsageReporting
+    self.gatewayUsageModuleLoadCommand = gatewayUsageModuleLoadCommand
+    self.gatewayUsageExecutable = gatewayUsageExecutable
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.computeResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.hostName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.LIST:
+          self.hostAliases = []
+          (_etype35, _size32) = iprot.readListBegin()
+          for _i36 in xrange(_size32):
+            _elem37 = iprot.readString()
+            self.hostAliases.append(_elem37)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.LIST:
+          self.ipAddresses = []
+          (_etype41, _size38) = iprot.readListBegin()
+          for _i42 in xrange(_size38):
+            _elem43 = iprot.readString()
+            self.ipAddresses.append(_elem43)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.resourceDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.BOOL:
+          self.enabled = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.batchQueues = []
+          (_etype47, _size44) = iprot.readListBegin()
+          for _i48 in xrange(_size44):
+            _elem49 = BatchQueue()
+            _elem49.read(iprot)
+            self.batchQueues.append(_elem49)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.MAP:
+          self.fileSystems = {}
+          (_ktype51, _vtype52, _size50 ) = iprot.readMapBegin()
+          for _i54 in xrange(_size50):
+            _key55 = iprot.readI32()
+            _val56 = iprot.readString()
+            self.fileSystems[_key55] = _val56
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.jobSubmissionInterfaces = []
+          (_etype60, _size57) = iprot.readListBegin()
+          for _i61 in xrange(_size57):
+            _elem62 = JobSubmissionInterface()
+            _elem62.read(iprot)
+            self.jobSubmissionInterfaces.append(_elem62)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.dataMovementInterfaces = []
+          (_etype66, _size63) = iprot.readListBegin()
+          for _i67 in xrange(_size63):
+            _elem68 = apache.airavata.model.data.movement.ttypes.DataMovementInterface()
+            _elem68.read(iprot)
+            self.dataMovementInterfaces.append(_elem68)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.I32:
+          self.maxMemoryPerNode = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.BOOL:
+          self.gatewayUsageReporting = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.STRING:
+          self.gatewayUsageModuleLoadCommand = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.STRING:
+          self.gatewayUsageExecutable = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComputeResourceDescription')
+    if self.computeResourceId is not None:
+      oprot.writeFieldBegin('computeResourceId', TType.STRING, 1)
+      oprot.writeString(self.computeResourceId)
+      oprot.writeFieldEnd()
+    if self.hostName is not None:
+      oprot.writeFieldBegin('hostName', TType.STRING, 2)
+      oprot.writeString(self.hostName)
+      oprot.writeFieldEnd()
+    if self.hostAliases is not None:
+      oprot.writeFieldBegin('hostAliases', TType.LIST, 3)
+      oprot.writeListBegin(TType.STRING, len(self.hostAliases))
+      for iter69 in self.hostAliases:
+        oprot.writeString(iter69)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.ipAddresses is not None:
+      oprot.writeFieldBegin('ipAddresses', TType.LIST, 4)
+      oprot.writeListBegin(TType.STRING, len(self.ipAddresses))
+      for iter70 in self.ipAddresses:
+        oprot.writeString(iter70)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.resourceDescription is not None:
+      oprot.writeFieldBegin('resourceDescription', TType.STRING, 5)
+      oprot.writeString(self.resourceDescription)
+      oprot.writeFieldEnd()
+    if self.enabled is not None:
+      oprot.writeFieldBegin('enabled', TType.BOOL, 6)
+      oprot.writeBool(self.enabled)
+      oprot.writeFieldEnd()
+    if self.batchQueues is not None:
+      oprot.writeFieldBegin('batchQueues', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.batchQueues))
+      for iter71 in self.batchQueues:
+        iter71.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.fileSystems is not None:
+      oprot.writeFieldBegin('fileSystems', TType.MAP, 8)
+      oprot.writeMapBegin(TType.I32, TType.STRING, len(self.fileSystems))
+      for kiter72,viter73 in self.fileSystems.items():
+        oprot.writeI32(kiter72)
+        oprot.writeString(viter73)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.jobSubmissionInterfaces is not None:
+      oprot.writeFieldBegin('jobSubmissionInterfaces', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRUCT, len(self.jobSubmissionInterfaces))
+      for iter74 in self.jobSubmissionInterfaces:
+        iter74.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.dataMovementInterfaces is not None:
+      oprot.writeFieldBegin('dataMovementInterfaces', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.dataMovementInterfaces))
+      for iter75 in self.dataMovementInterfaces:
+        iter75.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.maxMemoryPerNode is not None:
+      oprot.writeFieldBegin('maxMemoryPerNode', TType.I32, 11)
+      oprot.writeI32(self.maxMemoryPerNode)
+      oprot.writeFieldEnd()
+    if self.gatewayUsageReporting is not None:
+      oprot.writeFieldBegin('gatewayUsageReporting', TType.BOOL, 12)
+      oprot.writeBool(self.gatewayUsageReporting)
+      oprot.writeFieldEnd()
+    if self.gatewayUsageModuleLoadCommand is not None:
+      oprot.writeFieldBegin('gatewayUsageModuleLoadCommand', TType.STRING, 13)
+      oprot.writeString(self.gatewayUsageModuleLoadCommand)
+      oprot.writeFieldEnd()
+    if self.gatewayUsageExecutable is not None:
+      oprot.writeFieldBegin('gatewayUsageExecutable', TType.STRING, 14)
+      oprot.writeString(self.gatewayUsageExecutable)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.computeResourceId is None:
+      raise TProtocol.TProtocolException(message='Required field computeResourceId is unset!')
+    if self.hostName is None:
+      raise TProtocol.TProtocolException(message='Required field hostName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.computeResourceId)
+    value = (value * 31) ^ hash(self.hostName)
+    value = (value * 31) ^ hash(self.hostAliases)
+    value = (value * 31) ^ hash(self.ipAddresses)
+    value = (value * 31) ^ hash(self.resourceDescription)
+    value = (value * 31) ^ hash(self.enabled)
+    value = (value * 31) ^ hash(self.batchQueues)
+    value = (value * 31) ^ hash(self.fileSystems)
+    value = (value * 31) ^ hash(self.jobSubmissionInterfaces)
+    value = (value * 31) ^ hash(self.dataMovementInterfaces)
+    value = (value * 31) ^ hash(self.maxMemoryPerNode)
+    value = (value * 31) ^ hash(self.gatewayUsageReporting)
+    value = (value * 31) ^ hash(self.gatewayUsageModuleLoadCommand)
+    value = (value * 31) ^ hash(self.gatewayUsageExecutable)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.pyc
new file mode 100644
index 0000000..9e3374c
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/computeresource/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc
new file mode 100644
index 0000000..c94e072
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
new file mode 100644
index 0000000..1f80cd8
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
@@ -0,0 +1,512 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.appcatalog.computeresource.ttypes
+import apache.airavata.model.data.movement.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ComputeResourcePreference:
+  """
+  Gateway specific preferences for a Computer Resource
+
+  computeResourceId:
+    Corelate the preference to a compute resource.
+
+  overridebyAiravata:
+    If turned true, Airavata will override the preferences of better alternatives exist.
+
+  loginUserName:
+    If turned true, Airavata will override the preferences of better alternatives exist.
+
+  preferredJobSubmissionProtocol:
+    For resources with multiple job submission protocols, the gateway can pick a preferred option.
+
+  preferredDataMovementProtocol:
+    For resources with multiple data movement protocols, the gateway can pick a preferred option.
+
+  preferredBatchQueue:
+   Gateways can choose a defualt batch queue based on average job dimention, reservations or other metrics.
+
+  scratchLocation:
+   Path to the local scratch space on a HPC cluster. Typically used to create working directory for job execution.
+
+  allocationProjectNumber:
+   Typically used on HPC machines to charge computing usage to a account number. For instance, on XSEDE once an
+     allocation is approved, an allocation number is assigned. Before passing this number with job submittions, the
+     account to be used has to be added to the allocation.
+
+  resourceSpecificCredentialStoreToken:
+   Resource specific credential store token. If this token is specified, then it is superceeded by the gateway's
+    default credential store.
+
+
+  Attributes:
+   - computeResourceId
+   - overridebyAiravata
+   - loginUserName
+   - preferredJobSubmissionProtocol
+   - preferredDataMovementProtocol
+   - preferredBatchQueue
+   - scratchLocation
+   - allocationProjectNumber
+   - resourceSpecificCredentialStoreToken
+   - usageReportingGatewayId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'computeResourceId', None, None, ), # 1
+    (2, TType.BOOL, 'overridebyAiravata', None, True, ), # 2
+    (3, TType.STRING, 'loginUserName', None, None, ), # 3
+    (4, TType.I32, 'preferredJobSubmissionProtocol', None, None, ), # 4
+    (5, TType.I32, 'preferredDataMovementProtocol', None, None, ), # 5
+    (6, TType.STRING, 'preferredBatchQueue', None, None, ), # 6
+    (7, TType.STRING, 'scratchLocation', None, None, ), # 7
+    (8, TType.STRING, 'allocationProjectNumber', None, None, ), # 8
+    (9, TType.STRING, 'resourceSpecificCredentialStoreToken', None, None, ), # 9
+    (10, TType.STRING, 'usageReportingGatewayId', None, None, ), # 10
+  )
+
+  def __init__(self, computeResourceId=None, overridebyAiravata=thrift_spec[2][4], loginUserName=None, preferredJobSubmissionProtocol=None, preferredDataMovementProtocol=None, preferredBatchQueue=None, scratchLocation=None, allocationProjectNumber=None, resourceSpecificCredentialStoreToken=None, usageReportingGatewayId=None,):
+    self.computeResourceId = computeResourceId
+    self.overridebyAiravata = overridebyAiravata
+    self.loginUserName = loginUserName
+    self.preferredJobSubmissionProtocol = preferredJobSubmissionProtocol
+    self.preferredDataMovementProtocol = preferredDataMovementProtocol
+    self.preferredBatchQueue = preferredBatchQueue
+    self.scratchLocation = scratchLocation
+    self.allocationProjectNumber = allocationProjectNumber
+    self.resourceSpecificCredentialStoreToken = resourceSpecificCredentialStoreToken
+    self.usageReportingGatewayId = usageReportingGatewayId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.computeResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.BOOL:
+          self.overridebyAiravata = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.loginUserName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.preferredJobSubmissionProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.preferredDataMovementProtocol = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.preferredBatchQueue = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.scratchLocation = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.allocationProjectNumber = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.resourceSpecificCredentialStoreToken = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.usageReportingGatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComputeResourcePreference')
+    if self.computeResourceId is not None:
+      oprot.writeFieldBegin('computeResourceId', TType.STRING, 1)
+      oprot.writeString(self.computeResourceId)
+      oprot.writeFieldEnd()
+    if self.overridebyAiravata is not None:
+      oprot.writeFieldBegin('overridebyAiravata', TType.BOOL, 2)
+      oprot.writeBool(self.overridebyAiravata)
+      oprot.writeFieldEnd()
+    if self.loginUserName is not None:
+      oprot.writeFieldBegin('loginUserName', TType.STRING, 3)
+      oprot.writeString(self.loginUserName)
+      oprot.writeFieldEnd()
+    if self.preferredJobSubmissionProtocol is not None:
+      oprot.writeFieldBegin('preferredJobSubmissionProtocol', TType.I32, 4)
+      oprot.writeI32(self.preferredJobSubmissionProtocol)
+      oprot.writeFieldEnd()
+    if self.preferredDataMovementProtocol is not None:
+      oprot.writeFieldBegin('preferredDataMovementProtocol', TType.I32, 5)
+      oprot.writeI32(self.preferredDataMovementProtocol)
+      oprot.writeFieldEnd()
+    if self.preferredBatchQueue is not None:
+      oprot.writeFieldBegin('preferredBatchQueue', TType.STRING, 6)
+      oprot.writeString(self.preferredBatchQueue)
+      oprot.writeFieldEnd()
+    if self.scratchLocation is not None:
+      oprot.writeFieldBegin('scratchLocation', TType.STRING, 7)
+      oprot.writeString(self.scratchLocation)
+      oprot.writeFieldEnd()
+    if self.allocationProjectNumber is not None:
+      oprot.writeFieldBegin('allocationProjectNumber', TType.STRING, 8)
+      oprot.writeString(self.allocationProjectNumber)
+      oprot.writeFieldEnd()
+    if self.resourceSpecificCredentialStoreToken is not None:
+      oprot.writeFieldBegin('resourceSpecificCredentialStoreToken', TType.STRING, 9)
+      oprot.writeString(self.resourceSpecificCredentialStoreToken)
+      oprot.writeFieldEnd()
+    if self.usageReportingGatewayId is not None:
+      oprot.writeFieldBegin('usageReportingGatewayId', TType.STRING, 10)
+      oprot.writeString(self.usageReportingGatewayId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.computeResourceId is None:
+      raise TProtocol.TProtocolException(message='Required field computeResourceId is unset!')
+    if self.overridebyAiravata is None:
+      raise TProtocol.TProtocolException(message='Required field overridebyAiravata is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.computeResourceId)
+    value = (value * 31) ^ hash(self.overridebyAiravata)
+    value = (value * 31) ^ hash(self.loginUserName)
+    value = (value * 31) ^ hash(self.preferredJobSubmissionProtocol)
+    value = (value * 31) ^ hash(self.preferredDataMovementProtocol)
+    value = (value * 31) ^ hash(self.preferredBatchQueue)
+    value = (value * 31) ^ hash(self.scratchLocation)
+    value = (value * 31) ^ hash(self.allocationProjectNumber)
+    value = (value * 31) ^ hash(self.resourceSpecificCredentialStoreToken)
+    value = (value * 31) ^ hash(self.usageReportingGatewayId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class StoragePreference:
+  """
+  Attributes:
+   - storageResourceId
+   - loginUserName
+   - fileSystemRootLocation
+   - resourceSpecificCredentialStoreToken
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'storageResourceId', None, None, ), # 1
+    (2, TType.STRING, 'loginUserName', None, None, ), # 2
+    (3, TType.STRING, 'fileSystemRootLocation', None, None, ), # 3
+    (4, TType.STRING, 'resourceSpecificCredentialStoreToken', None, None, ), # 4
+  )
+
+  def __init__(self, storageResourceId=None, loginUserName=None, fileSystemRootLocation=None, resourceSpecificCredentialStoreToken=None,):
+    self.storageResourceId = storageResourceId
+    self.loginUserName = loginUserName
+    self.fileSystemRootLocation = fileSystemRootLocation
+    self.resourceSpecificCredentialStoreToken = resourceSpecificCredentialStoreToken
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.loginUserName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.fileSystemRootLocation = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.resourceSpecificCredentialStoreToken = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('StoragePreference')
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 1)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
+    if self.loginUserName is not None:
+      oprot.writeFieldBegin('loginUserName', TType.STRING, 2)
+      oprot.writeString(self.loginUserName)
+      oprot.writeFieldEnd()
+    if self.fileSystemRootLocation is not None:
+      oprot.writeFieldBegin('fileSystemRootLocation', TType.STRING, 3)
+      oprot.writeString(self.fileSystemRootLocation)
+      oprot.writeFieldEnd()
+    if self.resourceSpecificCredentialStoreToken is not None:
+      oprot.writeFieldBegin('resourceSpecificCredentialStoreToken', TType.STRING, 4)
+      oprot.writeString(self.resourceSpecificCredentialStoreToken)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.storageResourceId is None:
+      raise TProtocol.TProtocolException(message='Required field storageResourceId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.storageResourceId)
+    value = (value * 31) ^ hash(self.loginUserName)
+    value = (value * 31) ^ hash(self.fileSystemRootLocation)
+    value = (value * 31) ^ hash(self.resourceSpecificCredentialStoreToken)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class GatewayResourceProfile:
+  """
+  Gateway Resource Profile
+
+  gatewayID:
+   Unique identifier for the gateway assigned by Airavata. Corelate this to Airavata Admin API Gateway Registration.
+
+  credentialStoreToken:
+   Gateway's defualt credential store token.
+
+  computeResourcePreferences:
+   List of resource preferences for each of the registered compute resources.
+
+   identityServerTenant:
+
+   identityServerPwdCredToken:
+
+
+  Attributes:
+   - gatewayID
+   - credentialStoreToken
+   - computeResourcePreferences
+   - storagePreferences
+   - identityServerTenant
+   - identityServerPwdCredToken
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'gatewayID', None, None, ), # 1
+    (2, TType.STRING, 'credentialStoreToken', None, None, ), # 2
+    (3, TType.LIST, 'computeResourcePreferences', (TType.STRUCT,(ComputeResourcePreference, ComputeResourcePreference.thrift_spec)), None, ), # 3
+    (4, TType.LIST, 'storagePreferences', (TType.STRUCT,(StoragePreference, StoragePreference.thrift_spec)), None, ), # 4
+    (5, TType.STRING, 'identityServerTenant', None, None, ), # 5
+    (6, TType.STRING, 'identityServerPwdCredToken', None, None, ), # 6
+  )
+
+  def __init__(self, gatewayID=None, credentialStoreToken=None, computeResourcePreferences=None, storagePreferences=None, identityServerTenant=None, identityServerPwdCredToken=None,):
+    self.gatewayID = gatewayID
+    self.credentialStoreToken = credentialStoreToken
+    self.computeResourcePreferences = computeResourcePreferences
+    self.storagePreferences = storagePreferences
+    self.identityServerTenant = identityServerTenant
+    self.identityServerPwdCredToken = identityServerPwdCredToken
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.gatewayID = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.credentialStoreToken = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.LIST:
+          self.computeResourcePreferences = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = ComputeResourcePreference()
+            _elem5.read(iprot)
+            self.computeResourcePreferences.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.LIST:
+          self.storagePreferences = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = StoragePreference()
+            _elem11.read(iprot)
+            self.storagePreferences.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.identityServerTenant = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.identityServerPwdCredToken = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('GatewayResourceProfile')
+    if self.gatewayID is not None:
+      oprot.writeFieldBegin('gatewayID', TType.STRING, 1)
+      oprot.writeString(self.gatewayID)
+      oprot.writeFieldEnd()
+    if self.credentialStoreToken is not None:
+      oprot.writeFieldBegin('credentialStoreToken', TType.STRING, 2)
+      oprot.writeString(self.credentialStoreToken)
+      oprot.writeFieldEnd()
+    if self.computeResourcePreferences is not None:
+      oprot.writeFieldBegin('computeResourcePreferences', TType.LIST, 3)
+      oprot.writeListBegin(TType.STRUCT, len(self.computeResourcePreferences))
+      for iter12 in self.computeResourcePreferences:
+        iter12.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.storagePreferences is not None:
+      oprot.writeFieldBegin('storagePreferences', TType.LIST, 4)
+      oprot.writeListBegin(TType.STRUCT, len(self.storagePreferences))
+      for iter13 in self.storagePreferences:
+        iter13.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.identityServerTenant is not None:
+      oprot.writeFieldBegin('identityServerTenant', TType.STRING, 5)
+      oprot.writeString(self.identityServerTenant)
+      oprot.writeFieldEnd()
+    if self.identityServerPwdCredToken is not None:
+      oprot.writeFieldBegin('identityServerPwdCredToken', TType.STRING, 6)
+      oprot.writeString(self.identityServerPwdCredToken)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.gatewayID is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayID is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.gatewayID)
+    value = (value * 31) ^ hash(self.credentialStoreToken)
+    value = (value * 31) ^ hash(self.computeResourcePreferences)
+    value = (value * 31) ^ hash(self.storagePreferences)
+    value = (value * 31) ^ hash(self.identityServerTenant)
+    value = (value * 31) ^ hash(self.identityServerPwdCredToken)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc
new file mode 100644
index 0000000..a6a29df
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/gatewayprofile/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.pyc
new file mode 100644
index 0000000..2577f2b
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.py
new file mode 100644
index 0000000..485d97e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.py
@@ -0,0 +1,60 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ApplicationParallelismType:
+  """
+  Enumeration of application parallelism supported by Airavata
+
+  SERIAL:
+   Single processor applications without any parallelization.
+
+  MPI:
+   Messaging Passing Interface.
+
+  OPENMP:
+   Shared Memory Implementtaion.
+
+  OPENMP_MPI:
+   Hybrid Applications.
+
+  """
+  SERIAL = 0
+  MPI = 1
+  OPENMP = 2
+  OPENMP_MPI = 3
+  CCM = 4
+  CRAY_MPI = 5
+
+  _VALUES_TO_NAMES = {
+    0: "SERIAL",
+    1: "MPI",
+    2: "OPENMP",
+    3: "OPENMP_MPI",
+    4: "CCM",
+    5: "CRAY_MPI",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SERIAL": 0,
+    "MPI": 1,
+    "OPENMP": 2,
+    "OPENMP_MPI": 3,
+    "CCM": 4,
+    "CRAY_MPI": 5,
+  }
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.pyc
new file mode 100644
index 0000000..3485168
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/parallelism/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/appcatalog/storageresource/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']


[27/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata.pyc
new file mode 100644
index 0000000..97d11ce
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/__init__.py
new file mode 100644
index 0000000..e85fb34
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants', 'Airavata']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/__init__.pyc
new file mode 100644
index 0000000..6f64d55
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/constants.py
new file mode 100644
index 0000000..ae922f1
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/constants.py
@@ -0,0 +1,12 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+
+AIRAVATA_API_VERSION = "0.16.0"

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/__init__.pyc
new file mode 100644
index 0000000..4da794d
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/ttypes.py
new file mode 100644
index 0000000..0c33acf
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/ttypes.py
@@ -0,0 +1,940 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.experiment.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class AiravataErrorType:
+  """
+  A list of Airavata API Error Message Types
+
+   UNKNOWN: No information available about the error
+    
+   PERMISSION_DENIED: Not permitted to perform action
+
+   INTERNAL_ERROR: Unexpected problem with the service
+
+   AUTHENTICATION_FAILURE: The client failed to authenticate.
+
+   INVALID_AUTHORIZATION: Security Token and/or Username and/or password is incorrect
+    
+   AUTHORIZATION_EXPIRED: Authentication token expired
+   
+   UNKNOWN_GATEWAY_ID: The gateway is not registered with Airavata.
+
+   UNSUPPORTED_OPERATION: Operation denied because it is currently unsupported.
+  """
+  UNKNOWN = 0
+  PERMISSION_DENIED = 1
+  INTERNAL_ERROR = 2
+  AUTHENTICATION_FAILURE = 3
+  INVALID_AUTHORIZATION = 4
+  AUTHORIZATION_EXPIRED = 5
+  UNKNOWN_GATEWAY_ID = 6
+  UNSUPPORTED_OPERATION = 7
+
+  _VALUES_TO_NAMES = {
+    0: "UNKNOWN",
+    1: "PERMISSION_DENIED",
+    2: "INTERNAL_ERROR",
+    3: "AUTHENTICATION_FAILURE",
+    4: "INVALID_AUTHORIZATION",
+    5: "AUTHORIZATION_EXPIRED",
+    6: "UNKNOWN_GATEWAY_ID",
+    7: "UNSUPPORTED_OPERATION",
+  }
+
+  _NAMES_TO_VALUES = {
+    "UNKNOWN": 0,
+    "PERMISSION_DENIED": 1,
+    "INTERNAL_ERROR": 2,
+    "AUTHENTICATION_FAILURE": 3,
+    "INVALID_AUTHORIZATION": 4,
+    "AUTHORIZATION_EXPIRED": 5,
+    "UNKNOWN_GATEWAY_ID": 6,
+    "UNSUPPORTED_OPERATION": 7,
+  }
+
+
+class ExperimentNotFoundException(TException):
+  """
+  This exception is thrown when a client asks to perform an operation on an experiment that does not exist.
+
+  identifier:  A description of the experiment that was not found on the server.
+
+  key:  The value passed from the client in the identifier, which was not found.
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentNotFoundException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProjectNotFoundException(TException):
+  """
+  1:  optional  string identifier,
+  2:  optional  string key
+
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProjectNotFoundException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class InvalidRequestException(TException):
+  """
+  This exception is thrown for invalid requests that occur from any reasons like required input parameters are missing,
+   or a parameter is malformed.
+
+   message: contains the associated error message.
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('InvalidRequestException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TimedOutException(TException):
+  """
+  This exception is thrown when RPC timeout gets exceeded.
+  """
+
+  thrift_spec = (
+  )
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TimedOutException')
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AuthenticationException(TException):
+  """
+  This exception is thrown for invalid authentication requests.
+
+   message: contains the cause of the authorization failure.
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AuthenticationException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AuthorizationException(TException):
+  """
+  This exception is thrown for invalid authorization requests such user does not have acces to an aplication or resource.
+
+   message: contains the authorization failure message
+
+  Attributes:
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'message', None, None, ), # 1
+  )
+
+  def __init__(self, message=None,):
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AuthorizationException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.message is None:
+      raise TProtocol.TProtocolException(message='Required field message is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AiravataClientException(TException):
+  """
+  This exception is thrown by Airavata Services when a call fails as a result of
+  a problem that a client may be able to resolve.  For example, if the user
+  attempts to execute an application on a resource gateway does not have access to.
+
+  This exception would not be used for internal system errors that do not
+  reflect user actions, but rather reflect a problem within the service that
+  the client cannot resolve.
+
+  airavataErrorType:  The message type indicating the error that occurred.
+    must be one of the values of AiravataErrorType.
+
+  parameter:  If the error applied to a particular input parameter, this will
+    indicate which parameter.
+
+  Attributes:
+   - airavataErrorType
+   - parameter
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'airavataErrorType', None, None, ), # 1
+    (2, TType.STRING, 'parameter', None, None, ), # 2
+  )
+
+  def __init__(self, airavataErrorType=None, parameter=None,):
+    self.airavataErrorType = airavataErrorType
+    self.parameter = parameter
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.airavataErrorType = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.parameter = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AiravataClientException')
+    if self.airavataErrorType is not None:
+      oprot.writeFieldBegin('airavataErrorType', TType.I32, 1)
+      oprot.writeI32(self.airavataErrorType)
+      oprot.writeFieldEnd()
+    if self.parameter is not None:
+      oprot.writeFieldBegin('parameter', TType.STRING, 2)
+      oprot.writeString(self.parameter)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataErrorType is None:
+      raise TProtocol.TProtocolException(message='Required field airavataErrorType is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataErrorType)
+    value = (value * 31) ^ hash(self.parameter)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ValidatorResult:
+  """
+  Attributes:
+   - result
+   - errorDetails
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'result', None, None, ), # 1
+    (2, TType.STRING, 'errorDetails', None, None, ), # 2
+  )
+
+  def __init__(self, result=None, errorDetails=None,):
+    self.result = result
+    self.errorDetails = errorDetails
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.result = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.errorDetails = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ValidatorResult')
+    if self.result is not None:
+      oprot.writeFieldBegin('result', TType.BOOL, 1)
+      oprot.writeBool(self.result)
+      oprot.writeFieldEnd()
+    if self.errorDetails is not None:
+      oprot.writeFieldBegin('errorDetails', TType.STRING, 2)
+      oprot.writeString(self.errorDetails)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.result is None:
+      raise TProtocol.TProtocolException(message='Required field result is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.result)
+    value = (value * 31) ^ hash(self.errorDetails)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ValidationResults:
+  """
+  Attributes:
+   - validationState
+   - validationResultList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'validationState', None, None, ), # 1
+    (2, TType.LIST, 'validationResultList', (TType.STRUCT,(ValidatorResult, ValidatorResult.thrift_spec)), None, ), # 2
+  )
+
+  def __init__(self, validationState=None, validationResultList=None,):
+    self.validationState = validationState
+    self.validationResultList = validationResultList
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.validationState = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.LIST:
+          self.validationResultList = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = ValidatorResult()
+            _elem5.read(iprot)
+            self.validationResultList.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ValidationResults')
+    if self.validationState is not None:
+      oprot.writeFieldBegin('validationState', TType.BOOL, 1)
+      oprot.writeBool(self.validationState)
+      oprot.writeFieldEnd()
+    if self.validationResultList is not None:
+      oprot.writeFieldBegin('validationResultList', TType.LIST, 2)
+      oprot.writeListBegin(TType.STRUCT, len(self.validationResultList))
+      for iter6 in self.validationResultList:
+        iter6.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.validationState is None:
+      raise TProtocol.TProtocolException(message='Required field validationState is unset!')
+    if self.validationResultList is None:
+      raise TProtocol.TProtocolException(message='Required field validationResultList is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.validationState)
+    value = (value * 31) ^ hash(self.validationResultList)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class LaunchValidationException(TException):
+  """
+  Attributes:
+   - validationResult
+   - errorMessage
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRUCT, 'validationResult', (ValidationResults, ValidationResults.thrift_spec), None, ), # 1
+    (2, TType.STRING, 'errorMessage', None, None, ), # 2
+  )
+
+  def __init__(self, validationResult=None, errorMessage=None,):
+    self.validationResult = validationResult
+    self.errorMessage = errorMessage
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRUCT:
+          self.validationResult = ValidationResults()
+          self.validationResult.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.errorMessage = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('LaunchValidationException')
+    if self.validationResult is not None:
+      oprot.writeFieldBegin('validationResult', TType.STRUCT, 1)
+      self.validationResult.write(oprot)
+      oprot.writeFieldEnd()
+    if self.errorMessage is not None:
+      oprot.writeFieldBegin('errorMessage', TType.STRING, 2)
+      oprot.writeString(self.errorMessage)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.validationResult is None:
+      raise TProtocol.TProtocolException(message='Required field validationResult is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.validationResult)
+    value = (value * 31) ^ hash(self.errorMessage)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AiravataSystemException(TException):
+  """
+  This exception is thrown by Airavata Services when a call fails as a result of
+  a problem in the service that could not be changed through client's action.
+
+  airavataErrorType:  The message type indicating the error that occurred.
+    must be one of the values of AiravataErrorType.
+
+  message:  This may contain additional information about the error
+
+
+  Attributes:
+   - airavataErrorType
+   - message
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'airavataErrorType', None, None, ), # 1
+    (2, TType.STRING, 'message', None, None, ), # 2
+  )
+
+  def __init__(self, airavataErrorType=None, message=None,):
+    self.airavataErrorType = airavataErrorType
+    self.message = message
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.airavataErrorType = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.message = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AiravataSystemException')
+    if self.airavataErrorType is not None:
+      oprot.writeFieldBegin('airavataErrorType', TType.I32, 1)
+      oprot.writeI32(self.airavataErrorType)
+      oprot.writeFieldEnd()
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 2)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataErrorType is None:
+      raise TProtocol.TProtocolException(message='Required field airavataErrorType is unset!')
+    return
+
+
+  def __str__(self):
+    return repr(self)
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataErrorType)
+    value = (value * 31) ^ hash(self.message)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/ttypes.pyc
new file mode 100644
index 0000000..936f5a0
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/error/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/ttypes.py
new file mode 100644
index 0000000..ac1c6ab
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/ttypes.py
@@ -0,0 +1,33 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.api.error.ttypes
+import apache.airavata.model.ttypes
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.job.ttypes
+import apache.airavata.model.experiment.ttypes
+import apache.airavata.model.workspace.ttypes
+import apache.airavata.model.appcatalog.computeresource.ttypes
+import apache.airavata.model.scheduling.ttypes
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.appcatalog.appdeployment.ttypes
+import apache.airavata.model.appcatalog.appinterface.ttypes
+import apache.airavata.model.appcatalog.gatewayprofile.ttypes
+import apache.airavata.model.workflow.ttypes
+import apache.airavata.model.security.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/ttypes.pyc
new file mode 100644
index 0000000..421f49e
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__init__.pyc
new file mode 100644
index 0000000..1f8edd0
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..279bad0
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__init__.pyc
new file mode 100644
index 0000000..a69798a
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..7399ac2
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/__init__.pyc
new file mode 100644
index 0000000..25ec6ee
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/ttypes.py
new file mode 100644
index 0000000..6f86b6d
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/ttypes.py
@@ -0,0 +1,675 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ApplicationParallelismType:
+  """
+  Enumeration of application parallelism supported by Airavata
+
+  SERIAL:
+   Single processor applications without any parallelization.
+
+  MPI:
+   Messaging Passing Interface.
+
+  OPENMP:
+   Shared Memory Implementtaion.
+
+  OPENMP_MPI:
+   Hybrid Applications.
+
+  """
+  SERIAL = 0
+  MPI = 1
+  OPENMP = 2
+  OPENMP_MPI = 3
+  CCM = 4
+  CRAY_MPI = 5
+
+  _VALUES_TO_NAMES = {
+    0: "SERIAL",
+    1: "MPI",
+    2: "OPENMP",
+    3: "OPENMP_MPI",
+    4: "CCM",
+    5: "CRAY_MPI",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SERIAL": 0,
+    "MPI": 1,
+    "OPENMP": 2,
+    "OPENMP_MPI": 3,
+    "CCM": 4,
+    "CRAY_MPI": 5,
+  }
+
+
+class SetEnvPaths:
+  """
+  Key Value pairs to be used to set environments
+
+  name:
+    Name of the environment variable such as PATH, LD_LIBRARY_PATH, NETCDF_HOME.
+
+  value:
+    Value of the environment variable to set
+
+  envPathOrder:
+    The order of the setting of the env variables when there are multiple env variables
+
+  Attributes:
+   - name
+   - value
+   - envPathOrder
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'name', None, None, ), # 1
+    (2, TType.STRING, 'value', None, None, ), # 2
+    (3, TType.I32, 'envPathOrder', None, None, ), # 3
+  )
+
+  def __init__(self, name=None, value=None, envPathOrder=None,):
+    self.name = name
+    self.value = value
+    self.envPathOrder = envPathOrder
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.name = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.value = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.envPathOrder = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('SetEnvPaths')
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 1)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.value is not None:
+      oprot.writeFieldBegin('value', TType.STRING, 2)
+      oprot.writeString(self.value)
+      oprot.writeFieldEnd()
+    if self.envPathOrder is not None:
+      oprot.writeFieldBegin('envPathOrder', TType.I32, 3)
+      oprot.writeI32(self.envPathOrder)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    if self.value is None:
+      raise TProtocol.TProtocolException(message='Required field value is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.envPathOrder)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class CommandObject:
+  """
+  Job commands to be used in Pre Job, Post Job and Module Load Commands
+
+  command:
+    The actual command in string format
+
+  commandOrder:
+    Order of the command in the multiple command situation
+
+  Attributes:
+   - command
+   - commandOrder
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'command', None, None, ), # 1
+    (2, TType.I32, 'commandOrder', None, None, ), # 2
+  )
+
+  def __init__(self, command=None, commandOrder=None,):
+    self.command = command
+    self.commandOrder = commandOrder
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.command = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.commandOrder = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('CommandObject')
+    if self.command is not None:
+      oprot.writeFieldBegin('command', TType.STRING, 1)
+      oprot.writeString(self.command)
+      oprot.writeFieldEnd()
+    if self.commandOrder is not None:
+      oprot.writeFieldBegin('commandOrder', TType.I32, 2)
+      oprot.writeI32(self.commandOrder)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.command is None:
+      raise TProtocol.TProtocolException(message='Required field command is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.command)
+    value = (value * 31) ^ hash(self.commandOrder)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ApplicationModule:
+  """
+  Application Module Information. A module has to be registered before registering a deployment.
+
+  appModuleId: Airavata Internal Unique Job ID. This is set by the registry.
+
+  appModuleName:
+    Name of the application module.
+
+  appModuleVersion:
+    Version of the application.
+
+  appModuleDescription:
+     Descriprion of the Module
+
+
+  Attributes:
+   - appModuleId
+   - appModuleName
+   - appModuleVersion
+   - appModuleDescription
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'appModuleId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'appModuleName', None, None, ), # 2
+    (3, TType.STRING, 'appModuleVersion', None, None, ), # 3
+    (4, TType.STRING, 'appModuleDescription', None, None, ), # 4
+  )
+
+  def __init__(self, appModuleId=thrift_spec[1][4], appModuleName=None, appModuleVersion=None, appModuleDescription=None,):
+    self.appModuleId = appModuleId
+    self.appModuleName = appModuleName
+    self.appModuleVersion = appModuleVersion
+    self.appModuleDescription = appModuleDescription
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.appModuleId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.appModuleName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.appModuleVersion = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.appModuleDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ApplicationModule')
+    if self.appModuleId is not None:
+      oprot.writeFieldBegin('appModuleId', TType.STRING, 1)
+      oprot.writeString(self.appModuleId)
+      oprot.writeFieldEnd()
+    if self.appModuleName is not None:
+      oprot.writeFieldBegin('appModuleName', TType.STRING, 2)
+      oprot.writeString(self.appModuleName)
+      oprot.writeFieldEnd()
+    if self.appModuleVersion is not None:
+      oprot.writeFieldBegin('appModuleVersion', TType.STRING, 3)
+      oprot.writeString(self.appModuleVersion)
+      oprot.writeFieldEnd()
+    if self.appModuleDescription is not None:
+      oprot.writeFieldBegin('appModuleDescription', TType.STRING, 4)
+      oprot.writeString(self.appModuleDescription)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.appModuleId is None:
+      raise TProtocol.TProtocolException(message='Required field appModuleId is unset!')
+    if self.appModuleName is None:
+      raise TProtocol.TProtocolException(message='Required field appModuleName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.appModuleId)
+    value = (value * 31) ^ hash(self.appModuleName)
+    value = (value * 31) ^ hash(self.appModuleVersion)
+    value = (value * 31) ^ hash(self.appModuleDescription)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ApplicationDeploymentDescription:
+  """
+  Application Deployment Description
+
+  appDeploymentId: Airavata Internal Unique Job ID. This is set by the registry.
+
+  appModuleName:
+    Application Module Name. This has to be precise describing the binary.
+
+  computeHostId:
+    This ID maps application deployment to a particular resource previously described within Airavata.
+    Example: Stampede is first registered and refered when registering WRF.
+
+  moduleLoadCmd:
+   Command string to load modules. This will be placed in the job submisison
+   Ex: module load amber
+
+  libPrependPaths:
+   prepend to a path variable the value
+
+  libAppendPaths:
+   append to a path variable the value
+
+  setEnvironment:
+   assigns to the environment variable "NAME" the value
+
+
+  Attributes:
+   - appDeploymentId
+   - appModuleId
+   - computeHostId
+   - executablePath
+   - parallelism
+   - appDeploymentDescription
+   - moduleLoadCmds
+   - libPrependPaths
+   - libAppendPaths
+   - setEnvironment
+   - preJobCommands
+   - postJobCommands
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'appDeploymentId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'appModuleId', None, None, ), # 2
+    (3, TType.STRING, 'computeHostId', None, None, ), # 3
+    (4, TType.STRING, 'executablePath', None, None, ), # 4
+    (5, TType.I32, 'parallelism', None,     0, ), # 5
+    (6, TType.STRING, 'appDeploymentDescription', None, None, ), # 6
+    (7, TType.LIST, 'moduleLoadCmds', (TType.STRUCT,(CommandObject, CommandObject.thrift_spec)), None, ), # 7
+    (8, TType.LIST, 'libPrependPaths', (TType.STRUCT,(SetEnvPaths, SetEnvPaths.thrift_spec)), None, ), # 8
+    (9, TType.LIST, 'libAppendPaths', (TType.STRUCT,(SetEnvPaths, SetEnvPaths.thrift_spec)), None, ), # 9
+    (10, TType.LIST, 'setEnvironment', (TType.STRUCT,(SetEnvPaths, SetEnvPaths.thrift_spec)), None, ), # 10
+    (11, TType.LIST, 'preJobCommands', (TType.STRUCT,(CommandObject, CommandObject.thrift_spec)), None, ), # 11
+    (12, TType.LIST, 'postJobCommands', (TType.STRUCT,(CommandObject, CommandObject.thrift_spec)), None, ), # 12
+  )
+
+  def __init__(self, appDeploymentId=thrift_spec[1][4], appModuleId=None, computeHostId=None, executablePath=None, parallelism=thrift_spec[5][4], appDeploymentDescription=None, moduleLoadCmds=None, libPrependPaths=None, libAppendPaths=None, setEnvironment=None, preJobCommands=None, postJobCommands=None,):
+    self.appDeploymentId = appDeploymentId
+    self.appModuleId = appModuleId
+    self.computeHostId = computeHostId
+    self.executablePath = executablePath
+    self.parallelism = parallelism
+    self.appDeploymentDescription = appDeploymentDescription
+    self.moduleLoadCmds = moduleLoadCmds
+    self.libPrependPaths = libPrependPaths
+    self.libAppendPaths = libAppendPaths
+    self.setEnvironment = setEnvironment
+    self.preJobCommands = preJobCommands
+    self.postJobCommands = postJobCommands
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.appDeploymentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.appModuleId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.computeHostId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.executablePath = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.parallelism = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.appDeploymentDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.moduleLoadCmds = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = CommandObject()
+            _elem5.read(iprot)
+            self.moduleLoadCmds.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.LIST:
+          self.libPrependPaths = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = SetEnvPaths()
+            _elem11.read(iprot)
+            self.libPrependPaths.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.libAppendPaths = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = SetEnvPaths()
+            _elem17.read(iprot)
+            self.libAppendPaths.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.setEnvironment = []
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = SetEnvPaths()
+            _elem23.read(iprot)
+            self.setEnvironment.append(_elem23)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.LIST:
+          self.preJobCommands = []
+          (_etype27, _size24) = iprot.readListBegin()
+          for _i28 in xrange(_size24):
+            _elem29 = CommandObject()
+            _elem29.read(iprot)
+            self.preJobCommands.append(_elem29)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.postJobCommands = []
+          (_etype33, _size30) = iprot.readListBegin()
+          for _i34 in xrange(_size30):
+            _elem35 = CommandObject()
+            _elem35.read(iprot)
+            self.postJobCommands.append(_elem35)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ApplicationDeploymentDescription')
+    if self.appDeploymentId is not None:
+      oprot.writeFieldBegin('appDeploymentId', TType.STRING, 1)
+      oprot.writeString(self.appDeploymentId)
+      oprot.writeFieldEnd()
+    if self.appModuleId is not None:
+      oprot.writeFieldBegin('appModuleId', TType.STRING, 2)
+      oprot.writeString(self.appModuleId)
+      oprot.writeFieldEnd()
+    if self.computeHostId is not None:
+      oprot.writeFieldBegin('computeHostId', TType.STRING, 3)
+      oprot.writeString(self.computeHostId)
+      oprot.writeFieldEnd()
+    if self.executablePath is not None:
+      oprot.writeFieldBegin('executablePath', TType.STRING, 4)
+      oprot.writeString(self.executablePath)
+      oprot.writeFieldEnd()
+    if self.parallelism is not None:
+      oprot.writeFieldBegin('parallelism', TType.I32, 5)
+      oprot.writeI32(self.parallelism)
+      oprot.writeFieldEnd()
+    if self.appDeploymentDescription is not None:
+      oprot.writeFieldBegin('appDeploymentDescription', TType.STRING, 6)
+      oprot.writeString(self.appDeploymentDescription)
+      oprot.writeFieldEnd()
+    if self.moduleLoadCmds is not None:
+      oprot.writeFieldBegin('moduleLoadCmds', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.moduleLoadCmds))
+      for iter36 in self.moduleLoadCmds:
+        iter36.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.libPrependPaths is not None:
+      oprot.writeFieldBegin('libPrependPaths', TType.LIST, 8)
+      oprot.writeListBegin(TType.STRUCT, len(self.libPrependPaths))
+      for iter37 in self.libPrependPaths:
+        iter37.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.libAppendPaths is not None:
+      oprot.writeFieldBegin('libAppendPaths', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRUCT, len(self.libAppendPaths))
+      for iter38 in self.libAppendPaths:
+        iter38.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.setEnvironment is not None:
+      oprot.writeFieldBegin('setEnvironment', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.setEnvironment))
+      for iter39 in self.setEnvironment:
+        iter39.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.preJobCommands is not None:
+      oprot.writeFieldBegin('preJobCommands', TType.LIST, 11)
+      oprot.writeListBegin(TType.STRUCT, len(self.preJobCommands))
+      for iter40 in self.preJobCommands:
+        iter40.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.postJobCommands is not None:
+      oprot.writeFieldBegin('postJobCommands', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRUCT, len(self.postJobCommands))
+      for iter41 in self.postJobCommands:
+        iter41.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.appDeploymentId is None:
+      raise TProtocol.TProtocolException(message='Required field appDeploymentId is unset!')
+    if self.appModuleId is None:
+      raise TProtocol.TProtocolException(message='Required field appModuleId is unset!')
+    if self.computeHostId is None:
+      raise TProtocol.TProtocolException(message='Required field computeHostId is unset!')
+    if self.executablePath is None:
+      raise TProtocol.TProtocolException(message='Required field executablePath is unset!')
+    if self.parallelism is None:
+      raise TProtocol.TProtocolException(message='Required field parallelism is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.appDeploymentId)
+    value = (value * 31) ^ hash(self.appModuleId)
+    value = (value * 31) ^ hash(self.computeHostId)
+    value = (value * 31) ^ hash(self.executablePath)
+    value = (value * 31) ^ hash(self.parallelism)
+    value = (value * 31) ^ hash(self.appDeploymentDescription)
+    value = (value * 31) ^ hash(self.moduleLoadCmds)
+    value = (value * 31) ^ hash(self.libPrependPaths)
+    value = (value * 31) ^ hash(self.libAppendPaths)
+    value = (value * 31) ^ hash(self.setEnvironment)
+    value = (value * 31) ^ hash(self.preJobCommands)
+    value = (value * 31) ^ hash(self.postJobCommands)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc
new file mode 100644
index 0000000..cea8413
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appdeployment/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/__init__.pyc
new file mode 100644
index 0000000..06fb7cd
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/ttypes.py
new file mode 100644
index 0000000..57fe99b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/ttypes.py
@@ -0,0 +1,193 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ApplicationInterfaceDescription:
+  """
+  Application Interface Description
+
+  applicationModules:
+    Associate all application modules with versions which interface is applicable to.
+
+  applicationInputs:
+    Inputs to be passed to the application
+
+  applicationOutputs:
+    Outputs generated from the application
+
+
+  Attributes:
+   - applicationInterfaceId
+   - applicationName
+   - applicationDescription
+   - applicationModules
+   - applicationInputs
+   - applicationOutputs
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'applicationInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'applicationName', None, None, ), # 2
+    (3, TType.STRING, 'applicationDescription', None, None, ), # 3
+    (4, TType.LIST, 'applicationModules', (TType.STRING,None), None, ), # 4
+    (5, TType.LIST, 'applicationInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 5
+    (6, TType.LIST, 'applicationOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 6
+  )
+
+  def __init__(self, applicationInterfaceId=thrift_spec[1][4], applicationName=None, applicationDescription=None, applicationModules=None, applicationInputs=None, applicationOutputs=None,):
+    self.applicationInterfaceId = applicationInterfaceId
+    self.applicationName = applicationName
+    self.applicationDescription = applicationDescription
+    self.applicationModules = applicationModules
+    self.applicationInputs = applicationInputs
+    self.applicationOutputs = applicationOutputs
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.applicationInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.applicationName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.applicationDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.LIST:
+          self.applicationModules = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString();
+            self.applicationModules.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.LIST:
+          self.applicationInputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem11.read(iprot)
+            self.applicationInputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.applicationOutputs = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem17.read(iprot)
+            self.applicationOutputs.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ApplicationInterfaceDescription')
+    if self.applicationInterfaceId is not None:
+      oprot.writeFieldBegin('applicationInterfaceId', TType.STRING, 1)
+      oprot.writeString(self.applicationInterfaceId)
+      oprot.writeFieldEnd()
+    if self.applicationName is not None:
+      oprot.writeFieldBegin('applicationName', TType.STRING, 2)
+      oprot.writeString(self.applicationName)
+      oprot.writeFieldEnd()
+    if self.applicationDescription is not None:
+      oprot.writeFieldBegin('applicationDescription', TType.STRING, 3)
+      oprot.writeString(self.applicationDescription)
+      oprot.writeFieldEnd()
+    if self.applicationModules is not None:
+      oprot.writeFieldBegin('applicationModules', TType.LIST, 4)
+      oprot.writeListBegin(TType.STRING, len(self.applicationModules))
+      for iter18 in self.applicationModules:
+        oprot.writeString(iter18)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.applicationInputs is not None:
+      oprot.writeFieldBegin('applicationInputs', TType.LIST, 5)
+      oprot.writeListBegin(TType.STRUCT, len(self.applicationInputs))
+      for iter19 in self.applicationInputs:
+        iter19.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.applicationOutputs is not None:
+      oprot.writeFieldBegin('applicationOutputs', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.applicationOutputs))
+      for iter20 in self.applicationOutputs:
+        iter20.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.applicationInterfaceId is None:
+      raise TProtocol.TProtocolException(message='Required field applicationInterfaceId is unset!')
+    if self.applicationName is None:
+      raise TProtocol.TProtocolException(message='Required field applicationName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.applicationInterfaceId)
+    value = (value * 31) ^ hash(self.applicationName)
+    value = (value * 31) ^ hash(self.applicationDescription)
+    value = (value * 31) ^ hash(self.applicationModules)
+    value = (value * 31) ^ hash(self.applicationInputs)
+    value = (value * 31) ^ hash(self.applicationOutputs)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/ttypes.pyc
new file mode 100644
index 0000000..6dab330
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/appinterface/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__init__.pyc
new file mode 100644
index 0000000..97912ba
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..09aff7d
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__pycache__/ttypes.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__pycache__/ttypes.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__pycache__/ttypes.cpython-35.pyc
new file mode 100644
index 0000000..38547c6
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/__pycache__/ttypes.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/appcatalog/computeresource/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[15/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.py
new file mode 100644
index 0000000..971b526
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.py
@@ -0,0 +1,176 @@
+#
+# 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.
+#
+
+import errno
+import os
+import socket
+import sys
+
+from thrift.transport.TTransport import *
+
+
+class TSocketBase(TTransportBase):
+  def _resolveAddr(self):
+    if self._unix_socket is not None:
+      return [(socket.AF_UNIX, socket.SOCK_STREAM, None, None,
+               self._unix_socket)]
+    else:
+      return socket.getaddrinfo(self.host,
+                                self.port,
+                                socket.AF_UNSPEC,
+                                socket.SOCK_STREAM,
+                                0,
+                                socket.AI_PASSIVE | socket.AI_ADDRCONFIG)
+
+  def close(self):
+    if self.handle:
+      self.handle.close()
+      self.handle = None
+
+
+class TSocket(TSocketBase):
+  """Socket implementation of TTransport base."""
+
+  def __init__(self, host='localhost', port=9090, unix_socket=None):
+    """Initialize a TSocket
+
+    @param host(str)  The host to connect to.
+    @param port(int)  The (TCP) port to connect to.
+    @param unix_socket(str)  The filename of a unix socket to connect to.
+                             (host and port will be ignored.)
+    """
+    self.host = host
+    self.port = port
+    self.handle = None
+    self._unix_socket = unix_socket
+    self._timeout = None
+
+  def setHandle(self, h):
+    self.handle = h
+
+  def isOpen(self):
+    return self.handle is not None
+
+  def setTimeout(self, ms):
+    if ms is None:
+      self._timeout = None
+    else:
+      self._timeout = ms / 1000.0
+
+    if self.handle is not None:
+      self.handle.settimeout(self._timeout)
+
+  def open(self):
+    try:
+      res0 = self._resolveAddr()
+      for res in res0:
+        self.handle = socket.socket(res[0], res[1])
+        self.handle.settimeout(self._timeout)
+        try:
+          self.handle.connect(res[4])
+        except socket.error, e:
+          if res is not res0[-1]:
+            continue
+          else:
+            raise e
+        break
+    except socket.error, e:
+      if self._unix_socket:
+        message = 'Could not connect to socket %s' % self._unix_socket
+      else:
+        message = 'Could not connect to %s:%d' % (self.host, self.port)
+      raise TTransportException(type=TTransportException.NOT_OPEN,
+                                message=message)
+
+  def read(self, sz):
+    try:
+      buff = self.handle.recv(sz)
+    except socket.error, e:
+      if (e.args[0] == errno.ECONNRESET and
+          (sys.platform == 'darwin' or sys.platform.startswith('freebsd'))):
+        # freebsd and Mach don't follow POSIX semantic of recv
+        # and fail with ECONNRESET if peer performed shutdown.
+        # See corresponding comment and code in TSocket::read()
+        # in lib/cpp/src/transport/TSocket.cpp.
+        self.close()
+        # Trigger the check to raise the END_OF_FILE exception below.
+        buff = ''
+      else:
+        raise
+    if len(buff) == 0:
+      raise TTransportException(type=TTransportException.END_OF_FILE,
+                                message='TSocket read 0 bytes')
+    return buff
+
+  def write(self, buff):
+    if not self.handle:
+      raise TTransportException(type=TTransportException.NOT_OPEN,
+                                message='Transport not open')
+    sent = 0
+    have = len(buff)
+    while sent < have:
+      plus = self.handle.send(buff)
+      if plus == 0:
+        raise TTransportException(type=TTransportException.END_OF_FILE,
+                                  message='TSocket sent 0 bytes')
+      sent += plus
+      buff = buff[plus:]
+
+  def flush(self):
+    pass
+
+
+class TServerSocket(TSocketBase, TServerTransportBase):
+  """Socket implementation of TServerTransport base."""
+
+  def __init__(self, host=None, port=9090, unix_socket=None):
+    self.host = host
+    self.port = port
+    self._unix_socket = unix_socket
+    self.handle = None
+
+  def listen(self):
+    res0 = self._resolveAddr()
+    for res in res0:
+      if res[0] is socket.AF_INET6 or res is res0[-1]:
+        break
+
+    # We need remove the old unix socket if the file exists and
+    # nobody is listening on it.
+    if self._unix_socket:
+      tmp = socket.socket(res[0], res[1])
+      try:
+        tmp.connect(res[4])
+      except socket.error, err:
+        eno, message = err.args
+        if eno == errno.ECONNREFUSED:
+          os.unlink(res[4])
+
+    self.handle = socket.socket(res[0], res[1])
+    self.handle.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+    if hasattr(self.handle, 'settimeout'):
+      self.handle.settimeout(None)
+    self.handle.bind(res[4])
+    self.handle.listen(128)
+
+  def accept(self):
+    client, addr = self.handle.accept()
+    result = TSocket()
+    result.setHandle(client)
+    return result

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.pyc
new file mode 100644
index 0000000..a94c5e2
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TSocket.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.py
new file mode 100644
index 0000000..4481371
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.py
@@ -0,0 +1,330 @@
+#
+# 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.
+#
+
+from cStringIO import StringIO
+from struct import pack, unpack
+from thrift.Thrift import TException
+
+
+class TTransportException(TException):
+  """Custom Transport Exception class"""
+
+  UNKNOWN = 0
+  NOT_OPEN = 1
+  ALREADY_OPEN = 2
+  TIMED_OUT = 3
+  END_OF_FILE = 4
+
+  def __init__(self, type=UNKNOWN, message=None):
+    TException.__init__(self, message)
+    self.type = type
+
+
+class TTransportBase:
+  """Base class for Thrift transport layer."""
+
+  def isOpen(self):
+    pass
+
+  def open(self):
+    pass
+
+  def close(self):
+    pass
+
+  def read(self, sz):
+    pass
+
+  def readAll(self, sz):
+    buff = ''
+    have = 0
+    while (have < sz):
+      chunk = self.read(sz - have)
+      have += len(chunk)
+      buff += chunk
+
+      if len(chunk) == 0:
+        raise EOFError()
+
+    return buff
+
+  def write(self, buf):
+    pass
+
+  def flush(self):
+    pass
+
+
+# This class should be thought of as an interface.
+class CReadableTransport:
+  """base class for transports that are readable from C"""
+
+  # TODO(dreiss): Think about changing this interface to allow us to use
+  #               a (Python, not c) StringIO instead, because it allows
+  #               you to write after reading.
+
+  # NOTE: This is a classic class, so properties will NOT work
+  #       correctly for setting.
+  @property
+  def cstringio_buf(self):
+    """A cStringIO buffer that contains the current chunk we are reading."""
+    pass
+
+  def cstringio_refill(self, partialread, reqlen):
+    """Refills cstringio_buf.
+
+    Returns the currently used buffer (which can but need not be the same as
+    the old cstringio_buf). partialread is what the C code has read from the
+    buffer, and should be inserted into the buffer before any more reads.  The
+    return value must be a new, not borrowed reference.  Something along the
+    lines of self._buf should be fine.
+
+    If reqlen bytes can't be read, throw EOFError.
+    """
+    pass
+
+
+class TServerTransportBase:
+  """Base class for Thrift server transports."""
+
+  def listen(self):
+    pass
+
+  def accept(self):
+    pass
+
+  def close(self):
+    pass
+
+
+class TTransportFactoryBase:
+  """Base class for a Transport Factory"""
+
+  def getTransport(self, trans):
+    return trans
+
+
+class TBufferedTransportFactory:
+  """Factory transport that builds buffered transports"""
+
+  def getTransport(self, trans):
+    buffered = TBufferedTransport(trans)
+    return buffered
+
+
+class TBufferedTransport(TTransportBase, CReadableTransport):
+  """Class that wraps another transport and buffers its I/O.
+
+  The implementation uses a (configurable) fixed-size read buffer
+  but buffers all writes until a flush is performed.
+  """
+  DEFAULT_BUFFER = 4096
+
+  def __init__(self, trans, rbuf_size=DEFAULT_BUFFER):
+    self.__trans = trans
+    self.__wbuf = StringIO()
+    self.__rbuf = StringIO("")
+    self.__rbuf_size = rbuf_size
+
+  def isOpen(self):
+    return self.__trans.isOpen()
+
+  def open(self):
+    return self.__trans.open()
+
+  def close(self):
+    return self.__trans.close()
+
+  def read(self, sz):
+    ret = self.__rbuf.read(sz)
+    if len(ret) != 0:
+      return ret
+
+    self.__rbuf = StringIO(self.__trans.read(max(sz, self.__rbuf_size)))
+    return self.__rbuf.read(sz)
+
+  def write(self, buf):
+    self.__wbuf.write(buf)
+
+  def flush(self):
+    out = self.__wbuf.getvalue()
+    # reset wbuf before write/flush to preserve state on underlying failure
+    self.__wbuf = StringIO()
+    self.__trans.write(out)
+    self.__trans.flush()
+
+  # Implement the CReadableTransport interface.
+  @property
+  def cstringio_buf(self):
+    return self.__rbuf
+
+  def cstringio_refill(self, partialread, reqlen):
+    retstring = partialread
+    if reqlen < self.__rbuf_size:
+      # try to make a read of as much as we can.
+      retstring += self.__trans.read(self.__rbuf_size)
+
+    # but make sure we do read reqlen bytes.
+    if len(retstring) < reqlen:
+      retstring += self.__trans.readAll(reqlen - len(retstring))
+
+    self.__rbuf = StringIO(retstring)
+    return self.__rbuf
+
+
+class TMemoryBuffer(TTransportBase, CReadableTransport):
+  """Wraps a cStringIO object as a TTransport.
+
+  NOTE: Unlike the C++ version of this class, you cannot write to it
+        then immediately read from it.  If you want to read from a
+        TMemoryBuffer, you must either pass a string to the constructor.
+  TODO(dreiss): Make this work like the C++ version.
+  """
+
+  def __init__(self, value=None):
+    """value -- a value to read from for stringio
+
+    If value is set, this will be a transport for reading,
+    otherwise, it is for writing"""
+    if value is not None:
+      self._buffer = StringIO(value)
+    else:
+      self._buffer = StringIO()
+
+  def isOpen(self):
+    return not self._buffer.closed
+
+  def open(self):
+    pass
+
+  def close(self):
+    self._buffer.close()
+
+  def read(self, sz):
+    return self._buffer.read(sz)
+
+  def write(self, buf):
+    self._buffer.write(buf)
+
+  def flush(self):
+    pass
+
+  def getvalue(self):
+    return self._buffer.getvalue()
+
+  # Implement the CReadableTransport interface.
+  @property
+  def cstringio_buf(self):
+    return self._buffer
+
+  def cstringio_refill(self, partialread, reqlen):
+    # only one shot at reading...
+    raise EOFError()
+
+
+class TFramedTransportFactory:
+  """Factory transport that builds framed transports"""
+
+  def getTransport(self, trans):
+    framed = TFramedTransport(trans)
+    return framed
+
+
+class TFramedTransport(TTransportBase, CReadableTransport):
+  """Class that wraps another transport and frames its I/O when writing."""
+
+  def __init__(self, trans,):
+    self.__trans = trans
+    self.__rbuf = StringIO()
+    self.__wbuf = StringIO()
+
+  def isOpen(self):
+    return self.__trans.isOpen()
+
+  def open(self):
+    return self.__trans.open()
+
+  def close(self):
+    return self.__trans.close()
+
+  def read(self, sz):
+    ret = self.__rbuf.read(sz)
+    if len(ret) != 0:
+      return ret
+
+    self.readFrame()
+    return self.__rbuf.read(sz)
+
+  def readFrame(self):
+    buff = self.__trans.readAll(4)
+    sz, = unpack('!i', buff)
+    self.__rbuf = StringIO(self.__trans.readAll(sz))
+
+  def write(self, buf):
+    self.__wbuf.write(buf)
+
+  def flush(self):
+    wout = self.__wbuf.getvalue()
+    wsz = len(wout)
+    # reset wbuf before write/flush to preserve state on underlying failure
+    self.__wbuf = StringIO()
+    # N.B.: Doing this string concatenation is WAY cheaper than making
+    # two separate calls to the underlying socket object. Socket writes in
+    # Python turn out to be REALLY expensive, but it seems to do a pretty
+    # good job of managing string buffer operations without excessive copies
+    buf = pack("!i", wsz) + wout
+    self.__trans.write(buf)
+    self.__trans.flush()
+
+  # Implement the CReadableTransport interface.
+  @property
+  def cstringio_buf(self):
+    return self.__rbuf
+
+  def cstringio_refill(self, prefix, reqlen):
+    # self.__rbuf will already be empty here because fastbinary doesn't
+    # ask for a refill until the previous buffer is empty.  Therefore,
+    # we can start reading new frames immediately.
+    while len(prefix) < reqlen:
+      self.readFrame()
+      prefix += self.__rbuf.getvalue()
+    self.__rbuf = StringIO(prefix)
+    return self.__rbuf
+
+
+class TFileObjectTransport(TTransportBase):
+  """Wraps a file-like object to make it work as a Thrift transport."""
+
+  def __init__(self, fileobj):
+    self.fileobj = fileobj
+
+  def isOpen(self):
+    return True
+
+  def close(self):
+    self.fileobj.close()
+
+  def read(self, sz):
+    return self.fileobj.read(sz)
+
+  def write(self, buf):
+    self.fileobj.write(buf)
+
+  def flush(self):
+    self.fileobj.flush()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.pyc
new file mode 100644
index 0000000..33fcc1c
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTransport.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTwisted.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTwisted.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTwisted.py
new file mode 100644
index 0000000..3ce3eb2
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TTwisted.py
@@ -0,0 +1,221 @@
+#
+# 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.
+#
+
+from cStringIO import StringIO
+
+from zope.interface import implements, Interface, Attribute
+from twisted.internet.protocol import Protocol, ServerFactory, ClientFactory, \
+    connectionDone
+from twisted.internet import defer
+from twisted.protocols import basic
+from twisted.python import log
+from twisted.web import server, resource, http
+
+from thrift.transport import TTransport
+
+
+class TMessageSenderTransport(TTransport.TTransportBase):
+
+    def __init__(self):
+        self.__wbuf = StringIO()
+
+    def write(self, buf):
+        self.__wbuf.write(buf)
+
+    def flush(self):
+        msg = self.__wbuf.getvalue()
+        self.__wbuf = StringIO()
+        self.sendMessage(msg)
+
+    def sendMessage(self, message):
+        raise NotImplementedError
+
+
+class TCallbackTransport(TMessageSenderTransport):
+
+    def __init__(self, func):
+        TMessageSenderTransport.__init__(self)
+        self.func = func
+
+    def sendMessage(self, message):
+        self.func(message)
+
+
+class ThriftClientProtocol(basic.Int32StringReceiver):
+
+    MAX_LENGTH = 2 ** 31 - 1
+
+    def __init__(self, client_class, iprot_factory, oprot_factory=None):
+        self._client_class = client_class
+        self._iprot_factory = iprot_factory
+        if oprot_factory is None:
+            self._oprot_factory = iprot_factory
+        else:
+            self._oprot_factory = oprot_factory
+
+        self.recv_map = {}
+        self.started = defer.Deferred()
+
+    def dispatch(self, msg):
+        self.sendString(msg)
+
+    def connectionMade(self):
+        tmo = TCallbackTransport(self.dispatch)
+        self.client = self._client_class(tmo, self._oprot_factory)
+        self.started.callback(self.client)
+
+    def connectionLost(self, reason=connectionDone):
+        for k, v in self.client._reqs.iteritems():
+            tex = TTransport.TTransportException(
+                type=TTransport.TTransportException.END_OF_FILE,
+                message='Connection closed')
+            v.errback(tex)
+
+    def stringReceived(self, frame):
+        tr = TTransport.TMemoryBuffer(frame)
+        iprot = self._iprot_factory.getProtocol(tr)
+        (fname, mtype, rseqid) = iprot.readMessageBegin()
+
+        try:
+            method = self.recv_map[fname]
+        except KeyError:
+            method = getattr(self.client, 'recv_' + fname)
+            self.recv_map[fname] = method
+
+        method(iprot, mtype, rseqid)
+
+
+class ThriftServerProtocol(basic.Int32StringReceiver):
+
+    MAX_LENGTH = 2 ** 31 - 1
+
+    def dispatch(self, msg):
+        self.sendString(msg)
+
+    def processError(self, error):
+        self.transport.loseConnection()
+
+    def processOk(self, _, tmo):
+        msg = tmo.getvalue()
+
+        if len(msg) > 0:
+            self.dispatch(msg)
+
+    def stringReceived(self, frame):
+        tmi = TTransport.TMemoryBuffer(frame)
+        tmo = TTransport.TMemoryBuffer()
+
+        iprot = self.factory.iprot_factory.getProtocol(tmi)
+        oprot = self.factory.oprot_factory.getProtocol(tmo)
+
+        d = self.factory.processor.process(iprot, oprot)
+        d.addCallbacks(self.processOk, self.processError,
+            callbackArgs=(tmo,))
+
+
+class IThriftServerFactory(Interface):
+
+    processor = Attribute("Thrift processor")
+
+    iprot_factory = Attribute("Input protocol factory")
+
+    oprot_factory = Attribute("Output protocol factory")
+
+
+class IThriftClientFactory(Interface):
+
+    client_class = Attribute("Thrift client class")
+
+    iprot_factory = Attribute("Input protocol factory")
+
+    oprot_factory = Attribute("Output protocol factory")
+
+
+class ThriftServerFactory(ServerFactory):
+
+    implements(IThriftServerFactory)
+
+    protocol = ThriftServerProtocol
+
+    def __init__(self, processor, iprot_factory, oprot_factory=None):
+        self.processor = processor
+        self.iprot_factory = iprot_factory
+        if oprot_factory is None:
+            self.oprot_factory = iprot_factory
+        else:
+            self.oprot_factory = oprot_factory
+
+
+class ThriftClientFactory(ClientFactory):
+
+    implements(IThriftClientFactory)
+
+    protocol = ThriftClientProtocol
+
+    def __init__(self, client_class, iprot_factory, oprot_factory=None):
+        self.client_class = client_class
+        self.iprot_factory = iprot_factory
+        if oprot_factory is None:
+            self.oprot_factory = iprot_factory
+        else:
+            self.oprot_factory = oprot_factory
+
+    def buildProtocol(self, addr):
+        p = self.protocol(self.client_class, self.iprot_factory,
+            self.oprot_factory)
+        p.factory = self
+        return p
+
+
+class ThriftResource(resource.Resource):
+
+    allowedMethods = ('POST',)
+
+    def __init__(self, processor, inputProtocolFactory,
+        outputProtocolFactory=None):
+        resource.Resource.__init__(self)
+        self.inputProtocolFactory = inputProtocolFactory
+        if outputProtocolFactory is None:
+            self.outputProtocolFactory = inputProtocolFactory
+        else:
+            self.outputProtocolFactory = outputProtocolFactory
+        self.processor = processor
+
+    def getChild(self, path, request):
+        return self
+
+    def _cbProcess(self, _, request, tmo):
+        msg = tmo.getvalue()
+        request.setResponseCode(http.OK)
+        request.setHeader("content-type", "application/x-thrift")
+        request.write(msg)
+        request.finish()
+
+    def render_POST(self, request):
+        request.content.seek(0, 0)
+        data = request.content.read()
+        tmi = TTransport.TMemoryBuffer(data)
+        tmo = TTransport.TMemoryBuffer()
+
+        iprot = self.inputProtocolFactory.getProtocol(tmi)
+        oprot = self.outputProtocolFactory.getProtocol(tmo)
+
+        d = self.processor.process(iprot, oprot)
+        d.addCallback(self._cbProcess, request, tmo)
+        return server.NOT_DONE_YET

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TZlibTransport.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TZlibTransport.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TZlibTransport.py
new file mode 100644
index 0000000..97e58b3
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/TZlibTransport.py
@@ -0,0 +1,249 @@
+#
+# 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.
+#
+
+"""TZlibTransport provides a compressed transport and transport factory
+class, using the python standard library zlib module to implement
+data compression.
+"""
+
+from __future__ import division
+import zlib
+from cStringIO import StringIO
+
+from lib.thrift.transport.TTransport import TTransportBase, CReadableTransport
+
+
+class TZlibTransportFactory(object):
+  """Factory transport that builds zlib compressed transports.
+
+  This factory caches the last single client/transport that it was passed
+  and returns the same TZlibTransport object that was created.
+
+  This caching means the TServer class will get the _same_ transport
+  object for both input and output transports from this factory.
+  (For non-threaded scenarios only, since the cache only holds one object)
+
+  The purpose of this caching is to allocate only one TZlibTransport where
+  only one is really needed (since it must have separate read/write buffers),
+  and makes the statistics from getCompSavings() and getCompRatio()
+  easier to understand.
+  """
+  # class scoped cache of last transport given and zlibtransport returned
+  _last_trans = None
+  _last_z = None
+
+  def getTransport(self, trans, compresslevel=9):
+    """Wrap a transport, trans, with the TZlibTransport
+    compressed transport class, returning a new
+    transport to the caller.
+
+    @param compresslevel: The zlib compression level, ranging
+    from 0 (no compression) to 9 (best compression).  Defaults to 9.
+    @type compresslevel: int
+
+    This method returns a TZlibTransport which wraps the
+    passed C{trans} TTransport derived instance.
+    """
+    if trans == self._last_trans:
+      return self._last_z
+    ztrans = TZlibTransport(trans, compresslevel)
+    self._last_trans = trans
+    self._last_z = ztrans
+    return ztrans
+
+
+class TZlibTransport(TTransportBase, CReadableTransport):
+  """Class that wraps a transport with zlib, compressing writes
+  and decompresses reads, using the python standard
+  library zlib module.
+  """
+  # Read buffer size for the python fastbinary C extension,
+  # the TBinaryProtocolAccelerated class.
+  DEFAULT_BUFFSIZE = 4096
+
+  def __init__(self, trans, compresslevel=9):
+    """Create a new TZlibTransport, wrapping C{trans}, another
+    TTransport derived object.
+
+    @param trans: A thrift transport object, i.e. a TSocket() object.
+    @type trans: TTransport
+    @param compresslevel: The zlib compression level, ranging
+    from 0 (no compression) to 9 (best compression).  Default is 9.
+    @type compresslevel: int
+    """
+    self.__trans = trans
+    self.compresslevel = compresslevel
+    self.__rbuf = StringIO()
+    self.__wbuf = StringIO()
+    self._init_zlib()
+    self._init_stats()
+
+  def _reinit_buffers(self):
+    """Internal method to initialize/reset the internal StringIO objects
+    for read and write buffers.
+    """
+    self.__rbuf = StringIO()
+    self.__wbuf = StringIO()
+
+  def _init_stats(self):
+    """Internal method to reset the internal statistics counters
+    for compression ratios and bandwidth savings.
+    """
+    self.bytes_in = 0
+    self.bytes_out = 0
+    self.bytes_in_comp = 0
+    self.bytes_out_comp = 0
+
+  def _init_zlib(self):
+    """Internal method for setting up the zlib compression and
+    decompression objects.
+    """
+    self._zcomp_read = zlib.decompressobj()
+    self._zcomp_write = zlib.compressobj(self.compresslevel)
+
+  def getCompRatio(self):
+    """Get the current measured compression ratios (in,out) from
+    this transport.
+
+    Returns a tuple of:
+    (inbound_compression_ratio, outbound_compression_ratio)
+
+    The compression ratios are computed as:
+        compressed / uncompressed
+
+    E.g., data that compresses by 10x will have a ratio of: 0.10
+    and data that compresses to half of ts original size will
+    have a ratio of 0.5
+
+    None is returned if no bytes have yet been processed in
+    a particular direction.
+    """
+    r_percent, w_percent = (None, None)
+    if self.bytes_in > 0:
+      r_percent = self.bytes_in_comp / self.bytes_in
+    if self.bytes_out > 0:
+      w_percent = self.bytes_out_comp / self.bytes_out
+    return (r_percent, w_percent)
+
+  def getCompSavings(self):
+    """Get the current count of saved bytes due to data
+    compression.
+
+    Returns a tuple of:
+    (inbound_saved_bytes, outbound_saved_bytes)
+
+    Note: if compression is actually expanding your
+    data (only likely with very tiny thrift objects), then
+    the values returned will be negative.
+    """
+    r_saved = self.bytes_in - self.bytes_in_comp
+    w_saved = self.bytes_out - self.bytes_out_comp
+    return (r_saved, w_saved)
+
+  def isOpen(self):
+    """Return the underlying transport's open status"""
+    return self.__trans.isOpen()
+
+  def open(self):
+    """Open the underlying transport"""
+    self._init_stats()
+    return self.__trans.open()
+
+  def listen(self):
+    """Invoke the underlying transport's listen() method"""
+    self.__trans.listen()
+
+  def accept(self):
+    """Accept connections on the underlying transport"""
+    return self.__trans.accept()
+
+  def close(self):
+    """Close the underlying transport,"""
+    self._reinit_buffers()
+    self._init_zlib()
+    return self.__trans.close()
+
+  def read(self, sz):
+    """Read up to sz bytes from the decompressed bytes buffer, and
+    read from the underlying transport if the decompression
+    buffer is empty.
+    """
+    ret = self.__rbuf.read(sz)
+    if len(ret) > 0:
+      return ret
+    # keep reading from transport until something comes back
+    while True:
+      if self.readComp(sz):
+        break
+    ret = self.__rbuf.read(sz)
+    return ret
+
+  def readComp(self, sz):
+    """Read compressed data from the underlying transport, then
+    decompress it and append it to the internal StringIO read buffer
+    """
+    zbuf = self.__trans.read(sz)
+    zbuf = self._zcomp_read.unconsumed_tail + zbuf
+    buf = self._zcomp_read.decompress(zbuf)
+    self.bytes_in += len(zbuf)
+    self.bytes_in_comp += len(buf)
+    old = self.__rbuf.read()
+    self.__rbuf = StringIO(old + buf)
+    if len(old) + len(buf) == 0:
+      return False
+    return True
+
+  def write(self, buf):
+    """Write some bytes, putting them into the internal write
+    buffer for eventual compression.
+    """
+    self.__wbuf.write(buf)
+
+  def flush(self):
+    """Flush any queued up data in the write buffer and ensure the
+    compression buffer is flushed out to the underlying transport
+    """
+    wout = self.__wbuf.getvalue()
+    if len(wout) > 0:
+      zbuf = self._zcomp_write.compress(wout)
+      self.bytes_out += len(wout)
+      self.bytes_out_comp += len(zbuf)
+    else:
+      zbuf = ''
+    ztail = self._zcomp_write.flush(zlib.Z_SYNC_FLUSH)
+    self.bytes_out_comp += len(ztail)
+    if (len(zbuf) + len(ztail)) > 0:
+      self.__wbuf = StringIO()
+      self.__trans.write(zbuf + ztail)
+    self.__trans.flush()
+
+  @property
+  def cstringio_buf(self):
+    """Implement the CReadableTransport interface"""
+    return self.__rbuf
+
+  def cstringio_refill(self, partialread, reqlen):
+    """Implement the CReadableTransport interface for refill"""
+    retstring = partialread
+    if reqlen < self.DEFAULT_BUFFSIZE:
+      retstring += self.read(self.DEFAULT_BUFFSIZE)
+    while len(retstring) < reqlen:
+      retstring += self.read(reqlen - len(retstring))
+    self.__rbuf = StringIO(retstring)
+    return self.__rbuf

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.py
new file mode 100644
index 0000000..c9596d9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.py
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+__all__ = ['TTransport', 'TSocket', 'THttpClient', 'TZlibTransport']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.pyc
new file mode 100644
index 0000000..ef72ead
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/transport/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/.ipynb_checkpoints/create-experiment-checkpoint.ipynb
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/.ipynb_checkpoints/create-experiment-checkpoint.ipynb b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/.ipynb_checkpoints/create-experiment-checkpoint.ipynb
new file mode 100644
index 0000000..3523a80
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/.ipynb_checkpoints/create-experiment-checkpoint.ipynb
@@ -0,0 +1,449 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "import sys\n",
+    "import random\n",
+    "\n",
+    "from thrift.protocol import TBinaryProtocol\n",
+    "from thrift.transport import TSocket, TTransport, TSSLSocket\n",
+    "\n",
+    "from apache.airavata.api import Airavata\n",
+    "from apache.airavata.model.experiment.ttypes import ExperimentModel\n",
+    "from apache.airavata.model.scheduling.ttypes import ComputationalResourceSchedulingModel\n",
+    "from apache.airavata.model.experiment.ttypes import UserConfigurationDataModel\n",
+    "from apache.airavata.model.status.ttypes import ExperimentState\n",
+    "from apache.airavata.model.security.ttypes import AuthzToken\n",
+    "from apache.airavata.model.application.io.ttypes import InputDataObjectType, OutputDataObjectType\n",
+    "\n",
+    "from oauthlib.oauth2 import LegacyApplicationClient\n",
+    "from requests_oauthlib import OAuth2Session\n",
+    "from oauthlib.oauth2 import BackendApplicationClient"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Getting OAuth Access Code from IDP"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "client_id = r'XXXXXXXXXXX'\n",
+    "client_secret = r'XXXXXXXXXXXX'\n",
+    "\n",
+    "client = BackendApplicationClient(client_id=client_id)\n",
+    "oauth = OAuth2Session(client=client)\n",
+    "token = oauth.fetch_token(token_url='https://idp.scigap.org:9443/oauth2/token', client_id=client_id, client_secret=client_secret)\n",
+    "authzToken = AuthzToken(token[\"access_token\"])\n",
+    "\n",
+    "claimsMap = {\"userName\":\"admin\",\"gatewayID\": \"seagrid\"}\n",
+    "authzToken.claimsMap = claimsMap\n",
+    "\n",
+    "userName = \"admin\"\n",
+    "gatewayId = \"seagrid\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Creating Airavata Client"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'0.16.0'"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "transport = TSSLSocket.TSSLSocket(\"gw56.iu.xsede.org\",9930, validate=False)\n",
+    "transport = TTransport.TBufferedTransport(transport)\n",
+    "protocol = TBinaryProtocol.TBinaryProtocol(transport)\n",
+    "airavataClient = Airavata.Client(protocol)\n",
+    "transport.open()\n",
+    "\n",
+    "#Testing the Airavata Client\n",
+    "airavataClient.getAPIVersion(authzToken)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## List User Projects"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "TestProject487543_b6ba13ff-4af5-4cf1-a5d4-9a7908cd338e\n",
+      "TestProject0398576_bb39d722-e136-41d2-89fd-a2e60e15c841\n",
+      "TestProject984752_9d011ce9-24ea-41a7-a40c-0192cbdb475f\n",
+      "TestProject81724_f4dde490-2e23-4308-b2c7-0cc2454520f0\n",
+      "TestProj5_e8b872d9-17ed-4f13-9007-40cd71df6450\n",
+      "TestProj4_ca7b95df-dd56-41b5-b112-d58b2748fc46\n",
+      "TestProj3_3ff3b1fc-70e0-4cfc-8581-b915209786a5\n",
+      "TheTestProj_397ccd77-0cb3-4c86-ba74-fb1954548085\n",
+      "TestProj_733ada60-2e88-4f52-a4f4-789c2795fc3e\n",
+      "testeroonius_61d70e07-78fc-4b82-a26b-24d37b2bd294\n",
+      "testeroonius_0e20b332-c694-4b90-9443-8403d46a1fcc\n",
+      "testeroonius_21e5f9aa-9fef-406d-9ff2-315ed7312efe\n",
+      "testeroonius_b31b789e-c61a-4eeb-828d-35edc2fcaa4b\n",
+      "testerooni_4a655ef7-b04b-4f6f-8481-216ebdb8437b\n",
+      "DefaultProject_9f56c72c-51ef-461e-bad8-6595af42b8de\n"
+     ]
+    }
+   ],
+   "source": [
+    "projects = airavataClient.getUserProjects(authzToken, gatewayId, userName, -1, 0)\n",
+    "for p in projects:\n",
+    "        print(p.projectID)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "selectedProjId = \"TestProj3_3ff3b1fc-70e0-4cfc-8581-b915209786a5\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## List of Applications Available in the Gateway"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Echo_3f480d1f-ea86-4018-94bb-015423d66a1c\n",
+      "Amber_Sander_27b68571-b9c0-4bd5-bd70-e29435fa81bd\n",
+      "Gaussian_377feede-4d67-4065-984f-284d05c7d32d\n",
+      "Gromacs_c56857f1-c5d5-491b-b5ac-3f8165fdfc7a\n",
+      "Abinit_69939a97-17b8-472c-bdf3-81a41de57b74\n",
+      "AutoDock_6140eb97-af55-458d-a610-0e6cfee82487\n",
+      "CP2K_e9f82e52-dd78-4733-81ef-e163443efae5\n",
+      "CPMD_2038f63a-42a2-45df-b5fb-8916c1df8fc8\n",
+      "DDSCat_7911e731-2a8f-47fa-9ec2-e97f94ddbe7a\n",
+      "DFTB+_3b6232a4-3584-42bd-a0fb-452e56fc1c97\n",
+      "Gamess_9014bed7-f6a9-4bf6-8903-3531fce6adfe\n",
+      "Gamess_BR2_4a9a65dd-d9ea-45ff-a752-44614cf78dce\n",
+      "Gamess_Stampede_b8e90ce5-81ab-42ab-be57-304f2cdeb69e\n",
+      "Gromacs_CrayMPI_579f6463-10bb-4f06-9b6c-2e43589aaed3\n",
+      "Lammps_09de4f61-45b8-4c24-90c6-ebe718958728\n",
+      "Lammps_BR2_090f5f20-bb8e-4b96-a0fa-85cea7aec2f1\n",
+      "Molcas_89d5feb0-b1f1-437a-baef-9f353debd145\n",
+      "NWChem_e21df4ce-0c8e-422b-9e79-e0e7d56fad1f\n",
+      "Qchem_5e2f490a-25da-4631-a96d-d6f428e77ad5\n",
+      "Quantum_Espresso_fa1c5f04-bc52-4e91-8fd7-dbd1bcb1e39b\n",
+      "Tinker_Monte_1afae7f3-7c02-4fc6-8c67-8378c65a88b3\n",
+      "Abaqus_dcf7df79-5564-46db-88c4-837207882fdb\n",
+      "NEK5000_8ca957b3-6037-4535-9e02-005eb7dafd2d\n",
+      "Test-Application-Interface_39f9229d-c3b6-4251-90ec-c76265aafde8\n",
+      "Tes-App-Int_3efc89dc-d03a-4abb-af33-d7f242e9c656\n",
+      "TestAppInt1_2776c902-3200-4363-ab1e-ff99adc643cf\n",
+      "Test1_9c82fb1e-54da-42e8-87ae-6e3e1b1b8951\n",
+      "AutoDock_Vina_dcb6a898-fef3-4bed-b2d3-9aad45b42131\n",
+      "TestAppInt2_458c30d2-5f29-45b9-acd8-953315c6a730\n",
+      "Phasta_P_61030007-7243-4c6c-b13c-e7287670a847\n",
+      "Vina_Multiple_85771219-f188-48da-8dfe-422eea72c1ff\n",
+      "Vina_Optional_Ligands_a32ee927-f205-49a1-9a6f-c03e4a24aefc\n",
+      "Trinity_33a4a5ab-8d69-4477-a72d-0bd0cd7f3926\n"
+     ]
+    }
+   ],
+   "source": [
+    "appInterfaces = airavataClient.getAllApplicationInterfaces(authzToken, gatewayId)\n",
+    "for interface in appInterfaces:\n",
+    "    print(interface.applicationInterfaceId)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Listing all Compute Resource with Echo App Enabled"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "selectedInterfaceId = \"Echo_3f480d1f-ea86-4018-94bb-015423d66a1c\"\n",
+    "availableCompRes = airavataClient.getAvailableAppInterfaceComputeResources(authzToken, selectedInterfaceId)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "bigred2.uits.iu.edu_ac140dca-3c88-46d8-b9ed-875d96ea6908 bigred2.uits.iu.edu\n"
+     ]
+    }
+   ],
+   "source": [
+    "for k in availableCompRes:\n",
+    "    print(k + \" \" + availableCompRes[k])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "selectedCompResId = \"bigred2.uits.iu.edu_ac140dca-3c88-46d8-b9ed-875d96ea6908\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Creating the Experiment Object"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "experiment = ExperimentModel()\n",
+    "experiment.experimentName = \"Simple Echo Experiment \" + str(random.random())\n",
+    "experiment.projectId = selectedProjId\n",
+    "experiment.gatewayId = gatewayId\n",
+    "experiment.userName = userName\n",
+    "experiment.description = \"Simple Echo Experiment\"\n",
+    "experiment.executionId = selectedInterfaceId"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "echoInterface = airavataClient.getApplicationInterface(authzToken, selectedInterfaceId)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "inputs = echoInterface.applicationInputs\n",
+    "inputs[0].value = \"Hello World\"\n",
+    "\n",
+    "experiment.experimentInputs = inputs\n",
+    "experiment.experimentOutputs = echoInterface.applicationOutputs"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "compResource = airavataClient.getComputeResource(authzToken, selectedCompResId)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[BatchQueue(maxJobsInQueue=0, maxNodes=128, maxRunTime=2880, maxMemory=0, queueDescription='The routing queue for all \"production\" jobs; each job is routed, based on its resource requirements, to one of the execution queues (normal, serial, or long)', maxProcessors=4096, queueName='cpu'),\n",
+       " BatchQueue(maxJobsInQueue=0, maxNodes=21824, maxRunTime=0, maxMemory=0, queueDescription='GPU queue', maxProcessors=1364, queueName='gpu')]"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "compResource.batchQueues"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "queueName = \"cpu\"\n",
+    "\n",
+    "computationalRS = ComputationalResourceSchedulingModel()\n",
+    "computationalRS.resourceHostId = selectedCompResId\n",
+    "computationalRS.totalCPUCount = 16\n",
+    "computationalRS.nodeCount = 1\n",
+    "computationalRS.numberOfThreads = 1\n",
+    "computationalRS.queueName = queueName\n",
+    "computationalRS.wallTimeLimit = 10\n",
+    "computationalRS.totalPhysicalMemory = 1\n",
+    "\n",
+    "userConfig = UserConfigurationDataModel()\n",
+    "userConfig.airavataAutoSchedule = True\n",
+    "userConfig.overrideManualScheduledParams = False\n",
+    "userConfig.computationalResourceScheduling = computationalRS\n",
+    "\n",
+    "experiment.userConfigurationData = userConfig"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Create & Launch Experiment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Experiment Id is SimpleEchoExperiment0.666940363066_ed483ef9-f87f-402d-a25c-881b1d6cc6ac\n"
+     ]
+    }
+   ],
+   "source": [
+    "transport.open()\n",
+    "expId = airavataClient.createExperiment(authzToken, gatewayId, experiment)\n",
+    "print (\"Experiment Id is \" + expId)\n",
+    "airavataClient.launchExperiment(authzToken, expId, gatewayId)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Retreiving Experiment Status"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "LAUNCHED\n"
+     ]
+    }
+   ],
+   "source": [
+    "transport.open()\n",
+    "status = airavataClient.getExperimentStatus(authzToken, expId)\n",
+    "print(ExperimentState._VALUES_TO_NAMES[status.state])"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "language": "python",
+   "name": "python2"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 2
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython2",
+   "version": "2.7.12"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.pyc
new file mode 100644
index 0000000..144e9b9
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.pyc
new file mode 100644
index 0000000..ba42260
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/__init__.pyc differ


[18/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/69c259de/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/Admin User.ipynb
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/Admin User.ipynb b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/Admin User.ipynb
new file mode 100644
index 0000000..f04ad19
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/Admin User.ipynb	
@@ -0,0 +1,799 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "import ConfigParser\n",
+    "import pandas as pd\n",
+    "import datetime\n",
+    "from datetime import datetime\n",
+    "import calendar\n",
+    "import matplotlib.pyplot as plt\n",
+    "%matplotlib inline\n",
+    "conf = ConfigParser.RawConfigParser()\n",
+    "conf.read('cli.properties')\n",
+    "hostName = conf.get('AiravataServer', 'host')\n",
+    "port = conf.get('AiravataServer', 'port')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {
+    "collapsed": false,
+    "scrolled": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.16.0\n",
+      "0.16.0\n",
+      "\n",
+      "Welcome to Airavata CLI v0.0.1 - Wirtten in python\n",
+      "\n",
+      "\n",
+      "None\n"
+     ]
+    }
+   ],
+   "source": [
+    "from airavata_cli import AiravataCLI\n",
+    "airavata_cli = AiravataCLI(hostName, int(port))\n",
+    "print(airavata_cli.printVersion())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": false
+   },
+   "source": [
+    "##Making Sure we are connected to the right Gateway"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[Gateway(gatewayId='Ultrascan_Production', emailAddress=None, domain=None, gatewayName='Ultrascan_Production')]"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "airavata_cli.get_gatewaylist()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "## List of Resources the Gateway uses"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[('alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29',\n",
+       "  'alamo.uthscsa.edu'),\n",
+       " ('Jureca_32098185-4396-4c11-afb7-26e991a03476', 'Jureca'),\n",
+       " ('comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', 'comet.sdsc.edu'),\n",
+       " ('gordon.sdsc.edu_f9363997-4614-477f-847e-79d262ee8ef7', 'gordon.sdsc.edu'),\n",
+       " ('ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf',\n",
+       "  'ls5.tacc.utexas.edu'),\n",
+       " ('stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12',\n",
+       "  'stampede.tacc.xsede.org')]"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "airavata_cli.computer_resources().items()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": false
+   },
+   "source": [
+    "compute_resources = pd.DataFrame(list(airavata_cli.computer_resources().items()), columns=[\"Id\", \"Name\"])\n",
+    "compute_resources"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "## Some other custom functions which can be created"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "collapsed": false,
+    "scrolled": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[ApplicationInterfaceDescription(applicationName='Ultrascan', applicationInputs=[InputDataObjectType(userFriendlyDescription='Ultrascan HPC Input Tar File', name='Input_Tar_File', dataStaged=False, value='', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=3, inputOrder=1, metaData=''), InputDataObjectType(userFriendlyDescription='Batches for multi-wavelength data processing', name='Parallel_Group_Count', dataStaged=False, value='-mgroupcount=1', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=3, metaData=''), InputDataObjectType(userFriendlyDescription='Wall Clock Limit on the Compute Resource', name='Wall_Time', dataStaged=False, value='-walltime=60', applicationArgument='', isRequired=True, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=2, metaData='')], applicationInterfaceId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46
 ', applicationDescription='Ultrascan Version 3 Interface', applicationOutputs=[OutputDataObjectType(dataMovement=True, name='output', value='output/analysis-results.tar', applicationArgument='', isRequired=True, searchQuery='', location='output', requiredToAddedToCommandLine=False, outputStreaming=False, type=3), OutputDataObjectType(dataMovement=True, name='Ultrascan-Standard-Error', value='', applicationArgument='', isRequired=True, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=5), OutputDataObjectType(dataMovement=True, name='Ultrascan-Standard-Out', value='', applicationArgument='', isRequired=True, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=4)], applicationModules=['Ultrascan_82282f1e-284f-4999-9beb-4620c485b03d']),\n",
+       " ApplicationInterfaceDescription(applicationName='Ultrascan_Unicore', applicationInputs=[InputDataObjectType(userFriendlyDescription='', name='Input', dataStaged=False, value='', applicationArgument='', isRequired=True, standardInput=False, requiredToAddedToCommandLine=False, type=3, inputOrder=1, metaData=''), InputDataObjectType(userFriendlyDescription='', name='mgroupcount', dataStaged=False, value='-mgroupcount 1', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=2, metaData=''), InputDataObjectType(userFriendlyDescription='', name='US3INPUTARG', dataStaged=False, value='', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=4, metaData=''), InputDataObjectType(userFriendlyDescription='', name='walltime', dataStaged=False, value='-walltime 60', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True,
  type=0, inputOrder=3, metaData='')], applicationInterfaceId='Ultrascan_Unicore_0e7f8522-6d75-41ba-8b09-0021e728679a', applicationDescription='Unicore Service', applicationOutputs=[OutputDataObjectType(dataMovement=True, name='Ultrascan-Unicore-Standard-Error', value='', applicationArgument='', isRequired=False, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=5), OutputDataObjectType(dataMovement=True, name='Ultrascan-Unicore-Standard-Out', value='', applicationArgument='', isRequired=False, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=4), OutputDataObjectType(dataMovement=True, name='US3OUT', value='analysis-results.tar', applicationArgument='', isRequired=True, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=0)], applicationModules=['Ultrascan_Unicore_2471953d-5d87-4ffc-b0e6-b06c86c6206d'])]"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "airavata_cli.list_of_applications('Ultrascan_Production')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "collapsed": false,
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[ApplicationModule(appModuleName='Ultrascan', appModuleVersion='Ultrascan Application', appModuleId='Ultrascan_82282f1e-284f-4999-9beb-4620c485b03d', appModuleDescription=''),\n",
+       " ApplicationModule(appModuleName='Ultrascan_Unicore', appModuleVersion='', appModuleId='Ultrascan_Unicore_2471953d-5d87-4ffc-b0e6-b06c86c6206d', appModuleDescription='Ultrascan Unicore Application')]"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "airavata_cli.module_descriptions('Ultrascan_Production')     "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": false
+   },
+   "source": [
+    "##Setting the time parameters"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "start= datetime(2015,7,16,15,10)\n",
+    "end= datetime(2016,7,17,11,59)\n",
+    "fromTime = calendar.timegm(start.timetuple())\n",
+    "toTime = calendar.timegm(end.timetuple())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "## Getting the list of Experiments executed during the above mentioned period"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "ExperimentStatistics(failedExperiments=[ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610916000L, experimentId='US3-AIRA_bfe0ab01-db1f-4ccc-b3a0-e4e3e4224b29', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924612000L, experimentId='US3-AIRA_a51470cc-5f0c-4c45-a116-5fa711345522', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Prod
 uction', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924600000L, experimentId='US3-AIRA_9756a388-3852-4a8c-9bdb-301077047bb0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924593000L, experimentId='US3-AIRA_1f52b8ac-a8b9-43c8-b384-b5bee596155a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='U
 ltrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924588000L, experimentId='US3-AIRA_060ad115-36b1-468d-a794-992987493daf', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924575000L, experimentId='US3-AIRA_2c06f10a-b7be-4424-950c-3cb39aaa2bf0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46',
  gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924566000L, experimentId='US3-AIRA_36f421e3-8903-4736-b9a4-57e6d02decf4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924558000L, experimentId='US3-AIRA_a438405d-7269-470c-b2d9-8deda405b48e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3
 be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Francesca_Mattiroli_ae62c051-bc52-d0e4-f939-42b618137445', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_ae79215b-e5e2-45c7-bf9b-c7f196396c02', creationTime=1463341562000L, experimentId='US3-AIRA_f685a836-18bb-4404-a40a-528fb2e83d29', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1462970130000L, experimentId='US3-AIRA_60c739dd-12da-4731-a883-a6fa8c070467', executionId='Ultrascan_0ed937f6-26af-4c54-8064
 -3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Shaoxiong_Tian_f3c15677-e1d3-c894-7539-005f6df5e1b6', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_ca187139-f813-411d-9d0e-9ee5350f1a35', creationTime=1462922274000L, experimentId='US3-AIRA_6b2016fb-a2b5-43fb-a123-a756df9db348', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Shaoxiong_Tian_f3c15677-e1d3-c894-7539-005f6df5e1b6', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_ca187139-f813-411d-9d0e-9ee5350f1a35', creationTime=1462916575000L, experimentId='US3-AIRA_5971eb9a-03a8-4846-84e9-b99c4cd483fd', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be0
 82411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1462496689000L, experimentId='US3-AIRA_79d8b7b6-55e6-4822-8573-2ac67e1a20e2', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Ero2016', name='Clone of Clone of Clone of Clone of U1', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='May_04_Experiments_91d005c6-e13b-40d0-9c61-a6d66dec8e93', creationTime=1462393184000L, experimentId='CloneofCloneofCloneofCloneofU1_c37f11bf-bc0a-4ab8-9d56-64fbea0fa6ee', executionId='Ultrascan_0ed937f6-26a
 f-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=''), ExperimentSummaryModel(userName='Ero2016', name='Clone of U1', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='May_04_Experiments_91d005c6-e13b-40d0-9c61-a6d66dec8e93', creationTime=1462390867000L, experimentId='CloneofU1_954250be-e631-43be-b8e6-a6cbec286242', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=''), ExperimentSummaryModel(userName='Ero2016', name='U1', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='May_04_Experiments_91d005c6-e13b-40d0-9c61-a6d66dec8e93', creationTime=1462388494000L, experimentId='U1_386304ea-6d85-4dd7-8744-3867ca750cbf', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED
 ', description=' '), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1459545884000L, experimentId='US3-AIRA_59ba02e1-29b5-4267-b70b-4b1cc5d9ee04', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1459544795000L, experimentId='US3-AIRA_0e989684-49f5-462c-b6eb-2db1740b61c7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentSt
 atus='FAILED', description=None), ExperimentSummaryModel(userName='Uma_Muthurajan_912a2d20-e858-a4b4-fdbf-6cdf8ec8e182', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_3bbbc30b-4936-4371-bbaa-7b7901f46b48', creationTime=1459503200000L, experimentId='US3-AIRA_875a91d9-b752-45c7-a6a7-93b2901dfd6c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459451669000L, experimentId='US3-AIRA_84f7b4b5-5dc6-4370-9321-2aa3db57bb31', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), E
 xperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459450891000L, experimentId='US3-AIRA_91ea15ef-e237-4926-a840-b4234bbe5cb4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459450662000L, experimentId='US3-AIRA_0660e466-5d99-4e0e-9aa2-ed3358eebd8d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusU
 pdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459450589000L, experimentId='US3-AIRA_c7c1a4c2-2b3b-4fc9-996b-2da987c28436', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459447657000L, experimentId='US3-AIRA_9c9348e1-763c-48f7-b69e-b78d58c165fa', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a9
 75ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459447398000L, experimentId='US3-AIRA_a226ec5d-f0c9-4c43-8ddc-7c53749a5f8c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458670372000L, experimentId='US3-Test_f861d80f-f252-40e9-b50e-e96b731af8e7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Suresh_Marru_a5115922-f317-d754-9d72-8654071a5b59', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_649c
 553e-ebb3-460d-8891-0854d8c99135', creationTime=1458658752000L, experimentId='US3-ADEV_6922cf63-034f-4bea-b842-267e98ca4d8a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_84f540d7-3276-8894-a544-fae60062b41c', name='US3-ADEV', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='Default_Project_d8841361-30e0-4f66-8310-ca642c426d76', creationTime=1458580364000L, experimentId='US3-ADEV_5edf1006-0482-4fa2-8d99-89a0dffee4f5', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_84f540d7-3276-8894-a544-fae60062b41c', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_d88
 41361-30e0-4f66-8310-ca642c426d76', creationTime=1458580336000L, experimentId='US3-ADEV_84f329cf-6c17-41ef-bff5-1793fba4e41a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_84f540d7-3276-8894-a544-fae60062b41c', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_d8841361-30e0-4f66-8310-ca642c426d76', creationTime=1458580315000L, experimentId='US3-ADEV_40d796f4-005e-49ec-8b5e-9f459ccb5c5c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Ero2016', name='Clone of Test_Exp1', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='03/20/2016_ab65c93a-6bc4-4673-9388-4fa24e242245
 ', creationTime=1458571200000L, experimentId='CloneofTest_Exp1_89cf18ed-a990-4ce1-b777-5123181464a2', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=''), ExperimentSummaryModel(userName='Ero2016', name='Test_Exp1', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='03/20/2016_ab65c93a-6bc4-4673-9388-4fa24e242245', creationTime=1458571065000L, experimentId='Test_Exp1_4bd1f42f-37d6-4a99-9cf3-7b250aba37f6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=' '), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458427226000L, experimentId='US3-Test_907959e1-ee18-4efc-
 ae33-c85e60c5efed', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458427119000L, experimentId='US3-Test_8a1b01ca-f06f-4d99-8469-2a8c7cfad31a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458427003000L, experimentId='US3-Test_1c439038-378a-47bc-ab48-0ade6829bb95', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gat
 ewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458411616000L, experimentId='US3-Test_ba9411a0-09db-4a72-afdc-97ee1513a9ab', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_84f540d7-3276-8894-a544-fae60062b41c', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_d8841361-30e0-4f66-8310-ca642c426d76', creationTime=1458333932000L, experimentId='US3-ADEV_bc0e1edf-fbb6-4852-bcdb-dcafd0f51193', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStat
 us='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321712000L, experimentId='US3-Test_3616a162-9b9d-4a15-bff5-8b939a8b5e0f', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321710000L, experimentId='US3-Test_a1ebe37b-e20e-4e52-b023-24e13cbbf4ba', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-T
 est', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321707000L, experimentId='US3-Test_2e2568c4-cba4-478e-aadf-38ae977f37b6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321704000L, experimentId='US3-Test_bcfbfd7b-24e1-40ac-84e2-799b9aae4fce', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-b
 dd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321702000L, experimentId='US3-Test_45510860-3a0c-46ea-bdaf-11041286b69e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321698000L, experimentId='US3-Test_be111960-d779-4bdd-aca2-39e37173a8a8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', 
 creationTime=1458321695000L, experimentId='US3-Test_78b700b7-f4d4-4271-9e6e-b0c7644e4d41', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321693000L, experimentId='US3-Test_12e9a448-45f7-43e5-b5ac-aac3dd3568f4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321690000L, experimentId='US3-Test_b9ceb01a-b051-43a6-9bd7-5dda71e30
 6b9', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321687000L, experimentId='US3-Test_1208cfb3-e35c-4292-baed-4144e0bd8c7e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321684000L, experimentId='US3-Test_52d19085-2561-4d16-a7d0-fbcae7bde02b', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultras
 can_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458307861000L, experimentId='US3-Test_4c9a9b91-c981-4991-93fd-6e443122ede4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458266120000L, experimentId='US3-ADEV_18729c6f-71b9-4f9e-9cf1-cdbf870ad7cf', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED',
  description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458255972000L, experimentId='US3-Test_f381b939-4457-4085-bc50-6956bc9e0b88', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458253080000L, experimentId='US3-ADEV_fc7a0840-11ac-47e2-acf9-de3545718279', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(
 userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458248599000L, experimentId='US3-ADEV_aff13af2-91cf-4f52-b692-9abf403f6c2a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458247957000L, experimentId='US3-ADEV_fd8c9fbd-1ad8-4ceb-bc0c-d38772da42a4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(use
 rName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458246583000L, experimentId='US3-ADEV_97562db9-6837-4ba5-8ece-0c947402b946', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458246010000L, experimentId='US3-ADEV_a0a3189d-5343-4f2b-a493-8de237d792ad', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName
 ='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458228228000L, experimentId='US3-Test_b21c5c21-5374-4b4b-9a65-a380927957f5', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None)], completedExperiments=[ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468618483000L, experimentId='US3-AIRA_36f4788f-240b-4119-aaed-18926be8165c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_
 098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468616186000L, experimentId='US3-AIRA_408946e3-6104-48b3-a9dc-27ec03f45cb2', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468615898000L, experimentId='US3-AIRA_270ed9fe-f0f9-4c00-936f-72c994cb2125', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel
 _Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468612459000L, experimentId='US3-AIRA_c23effff-bf70-4d77-968a-5982919eb3a0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468612433000L, experimentId='US3-AIRA_2e65cd86-b4f2-4514-99c2-68c6cec880f4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(use
 rName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468612337000L, experimentId='US3-AIRA_22795aa0-20fe-43f9-9b1e-846c86b6cdb7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610911000L, experimentId='US3-AIRA_7e7faabc-405d-423f-8ed8-86015eff4cec', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummar
 yModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610906000L, experimentId='US3-AIRA_d6cba9b9-4d47-400a-acda-dbe34497bc33', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610902000L, experimentId='US3-AIRA_35fd35da-9928-4640-8409-b0bb5d7ea9c9', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), Experimen
 tSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610412000L, experimentId='US3-AIRA_689af84c-f35a-4794-8d93-374dbf04495a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610407000L, experimentId='US3-AIRA_70ed5d21-06d4-4b14-9644-a617b29d1a37', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), Ex
 perimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610400000L, experimentId='US3-AIRA_fe34c64d-98ad-4234-bdc9-58912ecc8b96', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610396000L, experimentId='US3-AIRA_f62adf04-433a-4dee-9c0e-238ea9bfbe66', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=No
 ne), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610205000L, experimentId='US3-AIRA_07bcc317-9d7c-462c-8345-5106f4b1af9c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468609413000L, experimentId='US3-AIRA_1431a2d9-2eec-41f3-9fcd-c6d4308dd3bb', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', descrip
 tion=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468609364000L, experimentId='US3-AIRA_44938538-4755-4fb8-b381-1ac57e238cbf', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604424000L, experimentId='US3-AIRA_689ed852-d66f-4113-b96f-c80144ec19a5', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED
 ', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604255000L, experimentId='US3-AIRA_d321187a-3261-4c88-b0db-e893c122f071', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604226000L, experimentId='US3-AIRA_4f26c65d-10e7-4992-a6cb-c203e858fdef', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStat
 us='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604193000L, experimentId='US3-AIRA_19e20c84-b955-40c6-a2e3-0397757fd645', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604151000L, experimentId='US3-AIRA_bb1807df-d9bf-42b1-bd9e-6eaf4349eed0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', e
 xperimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468601894000L, experimentId='US3-AIRA_06f41a25-dbfa-4d65-b5cf-9fde477ef8fe', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599454000L, experimentId='US3-AIRA_400516b8-9168-44f9-8b66-9b061b230744', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_P
 roduction', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599449000L, experimentId='US3-AIRA_8c295d53-9882-4d6e-940f-5d22032d8d5d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599444000L, experimentId='US3-AIRA_9c09c0f0-46f6-4373-b1a0-d9d1f98f2598', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId
 ='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599440000L, experimentId='US3-AIRA_14981e50-3231-4082-b75e-d08d5c0a72d6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599436000L, experimentId='US3-AIRA_9dd660c4-7336-40f2-9332-2d607723e1a8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e4
 6', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598408000L, experimentId='US3-AIRA_95d6556c-85ab-44ae-9e0c-24fd2d3c3b3d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598403000L, experimentId='US3-AIRA_361f0b66-631b-4944-aeaa-cad18e4c0318', executionId='Ultrascan_0ed937f6-26af-4c54-806
 4-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598397000L, experimentId='US3-AIRA_a743552d-a24b-4155-a2b7-ece3ecd07496', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598393000L, experimentId='US3-AIRA_e22ef29a-3e66-47b6-9565-9b3a3a0c93eb', executionId='Ultrascan_0ed937f6-
 26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598390000L, experimentId='US3-AIRA_cc16161a-dc74-4afa-8394-178f8f78a330', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598204000L, experimentId='US3-AIRA_b922331e-bfea-4a0f-8bb1-89ac05f43444', executionId='Ultras
 can_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598199000L, experimentId='US3-AIRA_b2a709e3-cb76-4571-a3ac-7c3c31fb7e38', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598195000L, experimentId='US3-AIRA_f33153a2-a2af-42df-8950-c409bd816ef3', execut
 ionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598191000L, experimentId='US3-AIRA_b5dbf59c-e59b-47cd-9dec-eebfaaeaf481', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598188000L, experimentId='US3-AIRA_0df1e1aa-c0ed-4618-bd0b-34745c98
 4e21', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468597273000L, experimentId='US3-AIRA_0b5dc791-eb6b-435e-9934-ee5d08f3c645', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468597270000L, experimentId='US3-AIRA_02424cbc-c198-4ddd-af2b-9
 f418e3d485d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468597266000L, experimentId='US3-AIRA_b8cdfe35-a61b-4858-9e08-61b49c0b5c8e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468597261000L, experimentId='US3-AIRA_dfece700-f27f-42be
 -aaf1-7b793f79e2df', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468540422000L, experimentId='US3-AIRA_a05e51be-8652-4dc6-aac9-03de2b417c82', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468540385000L, experimentId='US3-AIRA_e3dfb
 d4b-4f4f-43c1-b3a8-e440aa9f926b', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468540346000L, experimentId='US3-AIRA_bcda009f-0d3d-40d6-af64-d2e7fd1560db', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468528060000L, experimentId='U
 S3-AIRA_dc95f385-9c85-4bb6-8a43-c8d5c669f72d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468527995000L, experimentId='US3-AIRA_1d89633e-6f12-4f99-bbe4-67826d375573', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468527960000L, ex
 perimentId='US3-AIRA_8a15af51-4165-4b05-a133-195bcbd7b2fa', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468527896000L, experimentId='US3-AIRA_e7015598-43a6-491e-a885-33be47e70ee5', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=14685
 27856000L, experimentId='US3-AIRA_57f479ac-8216-4c0c-9456-d1558003b6c7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468527576000L, experimentId='US3-AIRA_49dc66bf-8686-4b00-b19e-ffaf3d41e3e7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTim
 e=1468527571000L, experimentId='US3-AIRA_e19886fd-bb39-410d-8fdb-cc7a260af49f', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468527567000L, experimentId='US3-AIRA_95fcafec-92d1-464f-9626-94aed161c4d9', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', crea
 tionTime=1468527564000L, experimentId='US3-AIRA_448d3a53-57e4-4d07-8168-bbc3a5a310f2', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468525461000L, experimentId='US3-AIRA_5832682b-b83f-48df-bf20-11145b40b81c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76
 ', creationTime=1468525456000L, experimentId='US3-AIRA_67681ac9-a675-44a2-8d83-5dfb86ccf43e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468525451000L, experimentId='US3-AIRA_3ca2543c-c4f8-4623-a603-d4dd138ea598', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366d
 b32bd76', creationTime=1468525448000L, experimentId='US3-AIRA_f5a2c105-d8f9-4835-aefe-bca5b8548af9', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468522640000L, experimentId='US3-AIRA_79e9255d-d448-4a2a-9c90-d89ce11af845', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae7
 6-8366db32bd76', creationTime=1468522630000L, experimentId='US3-AIRA_7ee94d4c-c64a-4e1c-a560-0221732d5d6c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468522618000L, experimentId='US3-AIRA_674fdf44-b88e-46a8-bc82-02e453978ff8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4
 532-ae76-8366db32bd76', creationTime=1468522603000L, experimentId='US3-AIRA_150d91d6-9dbd-429f-825e-3ec98fd8df73', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468522282000L, experimentId='US3-AIRA_ebdd4299-8adb-4792-8843-8e037ab97ef8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e
 1dede8-0925-47e6-b61c-966051287d37', creationTime=1468521671000L, experimentId='US3-AIRA_02308b49-bc1a-4956-8d69-65edc8f33d14', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468521477000L, experimentId='US3-AIRA_191cb1dd-cef4-4767-8093-525fc2a37667', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Defau
 lt_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468520547000L, experimentId='US3-AIRA_bc7ac81d-adce-4912-ba4f-e4bd84ae830c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468520459000L, experimentId='US3-AIRA_ae4e1a1f-c7c3-4918-b927-94c0b9f60f92', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', pro
 jectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468520359000L, experimentId='US3-AIRA_fd2c3457-1c1f-4545-a5f9-90454264f9da', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519283000L, experimentId='US3-AIRA_ec100087-9407-4960-9a0b-5cd77139fbe6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f
 8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519147000L, experimentId='US3-AIRA_cb6512e5-b4fd-43a8-9b5b-3afa37eba212', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519115000L, experimentId='US3-AIRA_a7f62d62-82b6-49bb-9456-b3ff5899f91c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f
 74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519041000L, experimentId='US3-AIRA_66f121ee-5a48-45c1-a962-105d5307683e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519014000L, experimentId='US3-AIRA_a00ddc5e-49a6-459c-8a3d-18a1a061fded', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd
 67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468512271000L, experimentId='US3-AIRA_c3a8cd3f-a120-4c9c-9f21-91aa13665416', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468512244000L, experimentId='US3-AIRA_18295d19-5e3c-47c1-aeeb-5b1a31b903aa', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.u
 texas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468512001000L, experimentId='US3-AIRA_daf97da2-8772-4567-96be-3bac3793bbae', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511997000L, experimentId='US3-AIRA_b7e642b0-419e-46a5-a231-f995747ba8d1', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostI
 d='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511769000L, experimentId='US3-AIRA_06afba20-0c36-4344-919c-8fe43de5e2a6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511728000L, experimentId='US3-AIRA_9b396838-7893-4844-a569-f247f67fae65', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, 
 resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511692000L, experimentId='US3-AIRA_1b1806f9-2513-440d-9b36-c1fe00cd965a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511657000L, experimentId='US3-AIRA_fbb618da-23f5-4c86-9898-866feeea621c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpda
 teTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511625000L, experimentId='US3-AIRA_cb618df0-f0ce-42f6-862c-636b9979003e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468511287000L, experimentId='US3-AIRA_9e76ea93-db46-4ece-9e43-22490541f7de', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', sta
 tusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468511282000L, experimentId='US3-AIRA_e3959aad-ce01-4ce2-9c35-afae4edc12f8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468511278000L, experimentId='US3-AIRA_ac88b8af-5359-4d2c-8e74-9c0a122c351a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIR
 A', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468511274000L, experimentId='US3-AIRA_3cfbad94-b7d9-4a9d-b819-1809fabd9c73', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510422000L, experimentId='US3-AIRA_1feea8ed-45f0-40f5-9a67-5e67a840bbb0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', 
 name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510416000L, experimentId='US3-AIRA_e3bc8bce-e854-4b0a-9ca2-b5dc513736a6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510411000L, experimentId='US3-AIRA_7b76426c-f994-4bed-8e04-eb048b8e3266', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-11
 47783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510407000L, experimentId='US3-AIRA_c7061d63-4e37-4fd4-b132-f2294a6417aa', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510402000L, experimentId='US3-AIRA_63d73ec8-59fc-426e-80f0-b4eb56018bd3', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4
 -5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509534000L, experimentId='US3-AIRA_da2ceb24-b48b-4e65-9798-346c9662e1c6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509528000L, experimentId='US3-AIRA_b655a9b4-21a5-4737-ad9f-61300fbe63fb', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_
 550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509522000L, experimentId='US3-AIRA_e512726d-838a-4f24-952f-a1c7df75c031', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509519000L, experimentId='US3-AIRA_97ca0744-2889-4811-aa74-0cc498827056', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Dan
 iel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509514000L, experimentId='US3-AIRA_92fc260f-802f-4bde-b1a1-231a72949a06', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509298000L, experimentId='US3-AIRA_20566854-0426-47c0-94a2-2900b6b32512', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(
 userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509292000L, experimentId='US3-AIRA_acfefd54-25f8-409b-aef0-1b6439cc38d6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509287000L, experimentId='US3-AIRA_b6695bd8-c812-42a4-99cf-abbaace99b9e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), Experiment
 SummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509283000L, experimentId='US3-AIRA_607411fc-e47a-44d5-a6e1-d9124a2813cb', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509279000L, experimentId='US3-AIRA_269487a0-d9ab-47df-b702-3033e4fd55ed', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None
 ), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507580000L, experimentId='US3-AIRA_9c680c60-a955-46cc-8765-e7153402800a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507569000L, experimentId='US3-AIRA_f0f564e4-d7ec-44b8-90a1-536edf0fc2a7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', descripti
 on=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507564000L, experimentId='US3-AIRA_b0c2ca2e-6a81-4547-b78e-e921b0edd789', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507559000L, experimentId='US3-AIRA_f17f6449-634b-415b-8143-2896ba66b29d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', d

<TRUNCATED>

[23/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/ttypes.py
new file mode 100644
index 0000000..629dba2
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/ttypes.py
@@ -0,0 +1,1426 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class MessageLevel:
+  INFO = 0
+  DEBUG = 1
+  ERROR = 2
+  ACK = 3
+
+  _VALUES_TO_NAMES = {
+    0: "INFO",
+    1: "DEBUG",
+    2: "ERROR",
+    3: "ACK",
+  }
+
+  _NAMES_TO_VALUES = {
+    "INFO": 0,
+    "DEBUG": 1,
+    "ERROR": 2,
+    "ACK": 3,
+  }
+
+class MessageType:
+  EXPERIMENT = 0
+  TASK = 1
+  PROCESS = 2
+  JOB = 3
+  LAUNCHPROCESS = 4
+  TERMINATEPROCESS = 5
+  PROCESSOUTPUT = 6
+
+  _VALUES_TO_NAMES = {
+    0: "EXPERIMENT",
+    1: "TASK",
+    2: "PROCESS",
+    3: "JOB",
+    4: "LAUNCHPROCESS",
+    5: "TERMINATEPROCESS",
+    6: "PROCESSOUTPUT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EXPERIMENT": 0,
+    "TASK": 1,
+    "PROCESS": 2,
+    "JOB": 3,
+    "LAUNCHPROCESS": 4,
+    "TERMINATEPROCESS": 5,
+    "PROCESSOUTPUT": 6,
+  }
+
+
+class ExperimentStatusChangeEvent:
+  """
+  Attributes:
+   - state
+   - experimentId
+   - gatewayId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRING, 'experimentId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, experimentId=None, gatewayId=None,):
+    self.state = state
+    self.experimentId = experimentId
+    self.gatewayId = gatewayId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentStatusChangeEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 2)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessIdentifier:
+  """
+  Attributes:
+   - processId
+   - experimentId
+   - gatewayId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'processId', None, None, ), # 1
+    (2, TType.STRING, 'experimentId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+  )
+
+  def __init__(self, processId=None, experimentId=None, gatewayId=None,):
+    self.processId = processId
+    self.experimentId = experimentId
+    self.gatewayId = gatewayId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessIdentifier')
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 1)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 2)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskIdentifier:
+  """
+  Attributes:
+   - taskId
+   - processId
+   - experimentId
+   - gatewayId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'taskId', None, None, ), # 1
+    (2, TType.STRING, 'processId', None, None, ), # 2
+    (3, TType.STRING, 'experimentId', None, None, ), # 3
+    (4, TType.STRING, 'gatewayId', None, None, ), # 4
+  )
+
+  def __init__(self, taskId=None, processId=None, experimentId=None, gatewayId=None,):
+    self.taskId = taskId
+    self.processId = processId
+    self.experimentId = experimentId
+    self.gatewayId = gatewayId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.taskId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskIdentifier')
+    if self.taskId is not None:
+      oprot.writeFieldBegin('taskId', TType.STRING, 1)
+      oprot.writeString(self.taskId)
+      oprot.writeFieldEnd()
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 2)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 3)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 4)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.taskId is None:
+      raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskStatusChangeEvent:
+  """
+  Attributes:
+   - state
+   - taskIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'taskIdentity', (TaskIdentifier, TaskIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, taskIdentity=None,):
+    self.state = state
+    self.taskIdentity = taskIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.taskIdentity = TaskIdentifier()
+          self.taskIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskStatusChangeEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.taskIdentity is not None:
+      oprot.writeFieldBegin('taskIdentity', TType.STRUCT, 2)
+      self.taskIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.taskIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field taskIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.taskIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskStatusChangeRequestEvent:
+  """
+  Attributes:
+   - state
+   - taskIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'taskIdentity', (TaskIdentifier, TaskIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, taskIdentity=None,):
+    self.state = state
+    self.taskIdentity = taskIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.taskIdentity = TaskIdentifier()
+          self.taskIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskStatusChangeRequestEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.taskIdentity is not None:
+      oprot.writeFieldBegin('taskIdentity', TType.STRUCT, 2)
+      self.taskIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.taskIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field taskIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.taskIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessStatusChangeEvent:
+  """
+  Attributes:
+   - state
+   - processIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'processIdentity', (ProcessIdentifier, ProcessIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, processIdentity=None,):
+    self.state = state
+    self.processIdentity = processIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.processIdentity = ProcessIdentifier()
+          self.processIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessStatusChangeEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.processIdentity is not None:
+      oprot.writeFieldBegin('processIdentity', TType.STRUCT, 2)
+      self.processIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.processIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field processIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.processIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessStatusChangeRequestEvent:
+  """
+  Attributes:
+   - state
+   - processIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'processIdentity', (ProcessIdentifier, ProcessIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, processIdentity=None,):
+    self.state = state
+    self.processIdentity = processIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.processIdentity = ProcessIdentifier()
+          self.processIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessStatusChangeRequestEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.processIdentity is not None:
+      oprot.writeFieldBegin('processIdentity', TType.STRUCT, 2)
+      self.processIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.processIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field processIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.processIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskOutputChangeEvent:
+  """
+  Attributes:
+   - output
+   - taskIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.LIST, 'output', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 1
+    (2, TType.STRUCT, 'taskIdentity', (TaskIdentifier, TaskIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, output=None, taskIdentity=None,):
+    self.output = output
+    self.taskIdentity = taskIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.LIST:
+          self.output = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem5.read(iprot)
+            self.output.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.taskIdentity = TaskIdentifier()
+          self.taskIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskOutputChangeEvent')
+    if self.output is not None:
+      oprot.writeFieldBegin('output', TType.LIST, 1)
+      oprot.writeListBegin(TType.STRUCT, len(self.output))
+      for iter6 in self.output:
+        iter6.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.taskIdentity is not None:
+      oprot.writeFieldBegin('taskIdentity', TType.STRUCT, 2)
+      self.taskIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.output is None:
+      raise TProtocol.TProtocolException(message='Required field output is unset!')
+    if self.taskIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field taskIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.output)
+    value = (value * 31) ^ hash(self.taskIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobIdentifier:
+  """
+  Attributes:
+   - jobId
+   - taskId
+   - processId
+   - experimentId
+   - gatewayId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobId', None, None, ), # 1
+    (2, TType.STRING, 'taskId', None, None, ), # 2
+    (3, TType.STRING, 'processId', None, None, ), # 3
+    (4, TType.STRING, 'experimentId', None, None, ), # 4
+    (5, TType.STRING, 'gatewayId', None, None, ), # 5
+  )
+
+  def __init__(self, jobId=None, taskId=None, processId=None, experimentId=None, gatewayId=None,):
+    self.jobId = jobId
+    self.taskId = taskId
+    self.processId = processId
+    self.experimentId = experimentId
+    self.gatewayId = gatewayId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.taskId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobIdentifier')
+    if self.jobId is not None:
+      oprot.writeFieldBegin('jobId', TType.STRING, 1)
+      oprot.writeString(self.jobId)
+      oprot.writeFieldEnd()
+    if self.taskId is not None:
+      oprot.writeFieldBegin('taskId', TType.STRING, 2)
+      oprot.writeString(self.taskId)
+      oprot.writeFieldEnd()
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 3)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 4)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 5)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobId is None:
+      raise TProtocol.TProtocolException(message='Required field jobId is unset!')
+    if self.taskId is None:
+      raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobId)
+    value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessSubmitEvent:
+  """
+  Attributes:
+   - processId
+   - gatewayId
+   - experimentId
+   - tokenId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'processId', None, None, ), # 1
+    (2, TType.STRING, 'gatewayId', None, None, ), # 2
+    (3, TType.STRING, 'experimentId', None, None, ), # 3
+    (4, TType.STRING, 'tokenId', None, None, ), # 4
+  )
+
+  def __init__(self, processId=None, gatewayId=None, experimentId=None, tokenId=None,):
+    self.processId = processId
+    self.gatewayId = gatewayId
+    self.experimentId = experimentId
+    self.tokenId = tokenId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.tokenId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessSubmitEvent')
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 1)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 3)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.tokenId is not None:
+      oprot.writeFieldBegin('tokenId', TType.STRING, 4)
+      oprot.writeString(self.tokenId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.tokenId is None:
+      raise TProtocol.TProtocolException(message='Required field tokenId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.tokenId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessTerminateEvent:
+  """
+  Attributes:
+   - processId
+   - gatewayId
+   - tokenId
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'processId', None, None, ), # 1
+    (2, TType.STRING, 'gatewayId', None, None, ), # 2
+    (3, TType.STRING, 'tokenId', None, None, ), # 3
+  )
+
+  def __init__(self, processId=None, gatewayId=None, tokenId=None,):
+    self.processId = processId
+    self.gatewayId = gatewayId
+    self.tokenId = tokenId
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.tokenId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessTerminateEvent')
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 1)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.tokenId is not None:
+      oprot.writeFieldBegin('tokenId', TType.STRING, 3)
+      oprot.writeString(self.tokenId)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.tokenId is None:
+      raise TProtocol.TProtocolException(message='Required field tokenId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.tokenId)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobStatusChangeEvent:
+  """
+  Attributes:
+   - state
+   - jobIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'jobIdentity', (JobIdentifier, JobIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, jobIdentity=None,):
+    self.state = state
+    self.jobIdentity = jobIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.jobIdentity = JobIdentifier()
+          self.jobIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobStatusChangeEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.jobIdentity is not None:
+      oprot.writeFieldBegin('jobIdentity', TType.STRUCT, 2)
+      self.jobIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.jobIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field jobIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.jobIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobStatusChangeRequestEvent:
+  """
+  Attributes:
+   - state
+   - jobIdentity
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.STRUCT, 'jobIdentity', (JobIdentifier, JobIdentifier.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, state=None, jobIdentity=None,):
+    self.state = state
+    self.jobIdentity = jobIdentity
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.jobIdentity = JobIdentifier()
+          self.jobIdentity.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobStatusChangeRequestEvent')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.jobIdentity is not None:
+      oprot.writeFieldBegin('jobIdentity', TType.STRUCT, 2)
+      self.jobIdentity.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    if self.jobIdentity is None:
+      raise TProtocol.TProtocolException(message='Required field jobIdentity is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.jobIdentity)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class Message:
+  """
+  Attributes:
+   - event
+   - messageId
+   - messageType
+   - updatedTime
+   - messageLevel
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'event', None, None, ), # 1
+    (2, TType.STRING, 'messageId', None, "DO_NOT_SET_AT_CLIENTS", ), # 2
+    (3, TType.I32, 'messageType', None, None, ), # 3
+    (4, TType.I64, 'updatedTime', None, None, ), # 4
+    (5, TType.I32, 'messageLevel', None, None, ), # 5
+  )
+
+  def __init__(self, event=None, messageId=thrift_spec[2][4], messageType=None, updatedTime=None, messageLevel=None,):
+    self.event = event
+    self.messageId = messageId
+    self.messageType = messageType
+    self.updatedTime = updatedTime
+    self.messageLevel = messageLevel
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.event = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.messageId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.messageType = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.updatedTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.messageLevel = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Message')
+    if self.event is not None:
+      oprot.writeFieldBegin('event', TType.STRING, 1)
+      oprot.writeString(self.event)
+      oprot.writeFieldEnd()
+    if self.messageId is not None:
+      oprot.writeFieldBegin('messageId', TType.STRING, 2)
+      oprot.writeString(self.messageId)
+      oprot.writeFieldEnd()
+    if self.messageType is not None:
+      oprot.writeFieldBegin('messageType', TType.I32, 3)
+      oprot.writeI32(self.messageType)
+      oprot.writeFieldEnd()
+    if self.updatedTime is not None:
+      oprot.writeFieldBegin('updatedTime', TType.I64, 4)
+      oprot.writeI64(self.updatedTime)
+      oprot.writeFieldEnd()
+    if self.messageLevel is not None:
+      oprot.writeFieldBegin('messageLevel', TType.I32, 5)
+      oprot.writeI32(self.messageLevel)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.event is None:
+      raise TProtocol.TProtocolException(message='Required field event is unset!')
+    if self.messageId is None:
+      raise TProtocol.TProtocolException(message='Required field messageId is unset!')
+    if self.messageType is None:
+      raise TProtocol.TProtocolException(message='Required field messageType is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.event)
+    value = (value * 31) ^ hash(self.messageId)
+    value = (value * 31) ^ hash(self.messageType)
+    value = (value * 31) ^ hash(self.updatedTime)
+    value = (value * 31) ^ hash(self.messageLevel)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/ttypes.pyc
new file mode 100644
index 0000000..9f2282a
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/__init__.pyc
new file mode 100644
index 0000000..fcb805d
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/ttypes.py
new file mode 100644
index 0000000..10104e4
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/ttypes.py
@@ -0,0 +1,360 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.task.ttypes
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.scheduling.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ProcessModel:
+  """
+  ProcessModel: A structure holding the process details. The infromation is derived based on user provided
+           configuration data or system inferred information from scheduling and QoS parameters.
+
+  processDetail:
+    A friendly description of the process, usally used to communicate information to users.
+
+
+
+  Attributes:
+   - processId
+   - experimentId
+   - creationTime
+   - lastUpdateTime
+   - processStatus
+   - processDetail
+   - applicationInterfaceId
+   - applicationDeploymentId
+   - computeResourceId
+   - processInputs
+   - processOutputs
+   - resourceSchedule
+   - tasks
+   - taskDag
+   - processError
+   - gatewayExecutionId
+   - enableEmailNotification
+   - emailAddresses
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'processId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'experimentId', None, None, ), # 2
+    (3, TType.I64, 'creationTime', None, None, ), # 3
+    (4, TType.I64, 'lastUpdateTime', None, None, ), # 4
+    (5, TType.STRUCT, 'processStatus', (apache.airavata.model.status.ttypes.ProcessStatus, apache.airavata.model.status.ttypes.ProcessStatus.thrift_spec), None, ), # 5
+    (6, TType.STRING, 'processDetail', None, None, ), # 6
+    (7, TType.STRING, 'applicationInterfaceId', None, None, ), # 7
+    (8, TType.STRING, 'applicationDeploymentId', None, None, ), # 8
+    (9, TType.STRING, 'computeResourceId', None, None, ), # 9
+    (10, TType.LIST, 'processInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 10
+    (11, TType.LIST, 'processOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 11
+    (12, TType.STRUCT, 'resourceSchedule', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 12
+    (13, TType.LIST, 'tasks', (TType.STRUCT,(apache.airavata.model.task.ttypes.TaskModel, apache.airavata.model.task.ttypes.TaskModel.thrift_spec)), None, ), # 13
+    (14, TType.STRING, 'taskDag', None, None, ), # 14
+    (15, TType.STRUCT, 'processError', (apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec), None, ), # 15
+    (16, TType.STRING, 'gatewayExecutionId', None, None, ), # 16
+    (17, TType.BOOL, 'enableEmailNotification', None, None, ), # 17
+    (18, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 18
+  )
+
+  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, resourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None,):
+    self.processId = processId
+    self.experimentId = experimentId
+    self.creationTime = creationTime
+    self.lastUpdateTime = lastUpdateTime
+    self.processStatus = processStatus
+    self.processDetail = processDetail
+    self.applicationInterfaceId = applicationInterfaceId
+    self.applicationDeploymentId = applicationDeploymentId
+    self.computeResourceId = computeResourceId
+    self.processInputs = processInputs
+    self.processOutputs = processOutputs
+    self.resourceSchedule = resourceSchedule
+    self.tasks = tasks
+    self.taskDag = taskDag
+    self.processError = processError
+    self.gatewayExecutionId = gatewayExecutionId
+    self.enableEmailNotification = enableEmailNotification
+    self.emailAddresses = emailAddresses
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.lastUpdateTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.processStatus = apache.airavata.model.status.ttypes.ProcessStatus()
+          self.processStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.processDetail = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.applicationInterfaceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.applicationDeploymentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.computeResourceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.processInputs = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem5.read(iprot)
+            self.processInputs.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.LIST:
+          self.processOutputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem11.read(iprot)
+            self.processOutputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRUCT:
+          self.resourceSchedule = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.resourceSchedule.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.LIST:
+          self.tasks = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.task.ttypes.TaskModel()
+            _elem17.read(iprot)
+            self.tasks.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.STRING:
+          self.taskDag = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 15:
+        if ftype == TType.STRUCT:
+          self.processError = apache.airavata.model.commons.ttypes.ErrorModel()
+          self.processError.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 16:
+        if ftype == TType.STRING:
+          self.gatewayExecutionId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 17:
+        if ftype == TType.BOOL:
+          self.enableEmailNotification = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 18:
+        if ftype == TType.LIST:
+          self.emailAddresses = []
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = iprot.readString();
+            self.emailAddresses.append(_elem23)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessModel')
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 1)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 2)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 3)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastUpdateTime is not None:
+      oprot.writeFieldBegin('lastUpdateTime', TType.I64, 4)
+      oprot.writeI64(self.lastUpdateTime)
+      oprot.writeFieldEnd()
+    if self.processStatus is not None:
+      oprot.writeFieldBegin('processStatus', TType.STRUCT, 5)
+      self.processStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.processDetail is not None:
+      oprot.writeFieldBegin('processDetail', TType.STRING, 6)
+      oprot.writeString(self.processDetail)
+      oprot.writeFieldEnd()
+    if self.applicationInterfaceId is not None:
+      oprot.writeFieldBegin('applicationInterfaceId', TType.STRING, 7)
+      oprot.writeString(self.applicationInterfaceId)
+      oprot.writeFieldEnd()
+    if self.applicationDeploymentId is not None:
+      oprot.writeFieldBegin('applicationDeploymentId', TType.STRING, 8)
+      oprot.writeString(self.applicationDeploymentId)
+      oprot.writeFieldEnd()
+    if self.computeResourceId is not None:
+      oprot.writeFieldBegin('computeResourceId', TType.STRING, 9)
+      oprot.writeString(self.computeResourceId)
+      oprot.writeFieldEnd()
+    if self.processInputs is not None:
+      oprot.writeFieldBegin('processInputs', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.processInputs))
+      for iter24 in self.processInputs:
+        iter24.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.processOutputs is not None:
+      oprot.writeFieldBegin('processOutputs', TType.LIST, 11)
+      oprot.writeListBegin(TType.STRUCT, len(self.processOutputs))
+      for iter25 in self.processOutputs:
+        iter25.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.resourceSchedule is not None:
+      oprot.writeFieldBegin('resourceSchedule', TType.STRUCT, 12)
+      self.resourceSchedule.write(oprot)
+      oprot.writeFieldEnd()
+    if self.tasks is not None:
+      oprot.writeFieldBegin('tasks', TType.LIST, 13)
+      oprot.writeListBegin(TType.STRUCT, len(self.tasks))
+      for iter26 in self.tasks:
+        iter26.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.taskDag is not None:
+      oprot.writeFieldBegin('taskDag', TType.STRING, 14)
+      oprot.writeString(self.taskDag)
+      oprot.writeFieldEnd()
+    if self.processError is not None:
+      oprot.writeFieldBegin('processError', TType.STRUCT, 15)
+      self.processError.write(oprot)
+      oprot.writeFieldEnd()
+    if self.gatewayExecutionId is not None:
+      oprot.writeFieldBegin('gatewayExecutionId', TType.STRING, 16)
+      oprot.writeString(self.gatewayExecutionId)
+      oprot.writeFieldEnd()
+    if self.enableEmailNotification is not None:
+      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 17)
+      oprot.writeBool(self.enableEmailNotification)
+      oprot.writeFieldEnd()
+    if self.emailAddresses is not None:
+      oprot.writeFieldBegin('emailAddresses', TType.LIST, 18)
+      oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
+      for iter27 in self.emailAddresses:
+        oprot.writeString(iter27)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastUpdateTime)
+    value = (value * 31) ^ hash(self.processStatus)
+    value = (value * 31) ^ hash(self.processDetail)
+    value = (value * 31) ^ hash(self.applicationInterfaceId)
+    value = (value * 31) ^ hash(self.applicationDeploymentId)
+    value = (value * 31) ^ hash(self.computeResourceId)
+    value = (value * 31) ^ hash(self.processInputs)
+    value = (value * 31) ^ hash(self.processOutputs)
+    value = (value * 31) ^ hash(self.resourceSchedule)
+    value = (value * 31) ^ hash(self.tasks)
+    value = (value * 31) ^ hash(self.taskDag)
+    value = (value * 31) ^ hash(self.processError)
+    value = (value * 31) ^ hash(self.gatewayExecutionId)
+    value = (value * 31) ^ hash(self.enableEmailNotification)
+    value = (value * 31) ^ hash(self.emailAddresses)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/ttypes.pyc
new file mode 100644
index 0000000..0cd8bc7
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/process/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__init__.pyc
new file mode 100644
index 0000000..2a22351
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..80348a6
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__pycache__/ttypes.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__pycache__/ttypes.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__pycache__/ttypes.cpython-35.pyc
new file mode 100644
index 0000000..5fec2a5
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/__pycache__/ttypes.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/ttypes.py
new file mode 100644
index 0000000..a793f22
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/ttypes.py
@@ -0,0 +1,191 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class ComputationalResourceSchedulingModel:
+  """
+  ComputationalResourceSchedulingModel:
+
+
+
+  Attributes:
+   - resourceHostId
+   - totalCPUCount
+   - nodeCount
+   - numberOfThreads
+   - queueName
+   - wallTimeLimit
+   - totalPhysicalMemory
+   - chessisNumber
+   - staticWorkingDir
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'resourceHostId', None, None, ), # 1
+    (2, TType.I32, 'totalCPUCount', None, None, ), # 2
+    (3, TType.I32, 'nodeCount', None, None, ), # 3
+    (4, TType.I32, 'numberOfThreads', None, None, ), # 4
+    (5, TType.STRING, 'queueName', None, None, ), # 5
+    (6, TType.I32, 'wallTimeLimit', None, None, ), # 6
+    (7, TType.I32, 'totalPhysicalMemory', None, None, ), # 7
+    (8, TType.STRING, 'chessisNumber', None, None, ), # 8
+    (9, TType.STRING, 'staticWorkingDir', None, None, ), # 9
+  )
+
+  def __init__(self, resourceHostId=None, totalCPUCount=None, nodeCount=None, numberOfThreads=None, queueName=None, wallTimeLimit=None, totalPhysicalMemory=None, chessisNumber=None, staticWorkingDir=None,):
+    self.resourceHostId = resourceHostId
+    self.totalCPUCount = totalCPUCount
+    self.nodeCount = nodeCount
+    self.numberOfThreads = numberOfThreads
+    self.queueName = queueName
+    self.wallTimeLimit = wallTimeLimit
+    self.totalPhysicalMemory = totalPhysicalMemory
+    self.chessisNumber = chessisNumber
+    self.staticWorkingDir = staticWorkingDir
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.resourceHostId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.totalCPUCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.nodeCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.numberOfThreads = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.queueName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.wallTimeLimit = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.totalPhysicalMemory = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.chessisNumber = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.staticWorkingDir = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComputationalResourceSchedulingModel')
+    if self.resourceHostId is not None:
+      oprot.writeFieldBegin('resourceHostId', TType.STRING, 1)
+      oprot.writeString(self.resourceHostId)
+      oprot.writeFieldEnd()
+    if self.totalCPUCount is not None:
+      oprot.writeFieldBegin('totalCPUCount', TType.I32, 2)
+      oprot.writeI32(self.totalCPUCount)
+      oprot.writeFieldEnd()
+    if self.nodeCount is not None:
+      oprot.writeFieldBegin('nodeCount', TType.I32, 3)
+      oprot.writeI32(self.nodeCount)
+      oprot.writeFieldEnd()
+    if self.numberOfThreads is not None:
+      oprot.writeFieldBegin('numberOfThreads', TType.I32, 4)
+      oprot.writeI32(self.numberOfThreads)
+      oprot.writeFieldEnd()
+    if self.queueName is not None:
+      oprot.writeFieldBegin('queueName', TType.STRING, 5)
+      oprot.writeString(self.queueName)
+      oprot.writeFieldEnd()
+    if self.wallTimeLimit is not None:
+      oprot.writeFieldBegin('wallTimeLimit', TType.I32, 6)
+      oprot.writeI32(self.wallTimeLimit)
+      oprot.writeFieldEnd()
+    if self.totalPhysicalMemory is not None:
+      oprot.writeFieldBegin('totalPhysicalMemory', TType.I32, 7)
+      oprot.writeI32(self.totalPhysicalMemory)
+      oprot.writeFieldEnd()
+    if self.chessisNumber is not None:
+      oprot.writeFieldBegin('chessisNumber', TType.STRING, 8)
+      oprot.writeString(self.chessisNumber)
+      oprot.writeFieldEnd()
+    if self.staticWorkingDir is not None:
+      oprot.writeFieldBegin('staticWorkingDir', TType.STRING, 9)
+      oprot.writeString(self.staticWorkingDir)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.resourceHostId)
+    value = (value * 31) ^ hash(self.totalCPUCount)
+    value = (value * 31) ^ hash(self.nodeCount)
+    value = (value * 31) ^ hash(self.numberOfThreads)
+    value = (value * 31) ^ hash(self.queueName)
+    value = (value * 31) ^ hash(self.wallTimeLimit)
+    value = (value * 31) ^ hash(self.totalPhysicalMemory)
+    value = (value * 31) ^ hash(self.chessisNumber)
+    value = (value * 31) ^ hash(self.staticWorkingDir)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/ttypes.pyc
new file mode 100644
index 0000000..6d883db
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/scheduling/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/__init__.pyc
new file mode 100644
index 0000000..6193f08
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/ttypes.py
new file mode 100644
index 0000000..35540cf
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/ttypes.py
@@ -0,0 +1,108 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class AuthzToken:
+  """
+  Attributes:
+   - accessToken
+   - claimsMap
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'accessToken', None, None, ), # 1
+    (2, TType.MAP, 'claimsMap', (TType.STRING,None,TType.STRING,None), None, ), # 2
+  )
+
+  def __init__(self, accessToken=None, claimsMap=None,):
+    self.accessToken = accessToken
+    self.claimsMap = claimsMap
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.accessToken = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.MAP:
+          self.claimsMap = {}
+          (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
+          for _i4 in xrange(_size0):
+            _key5 = iprot.readString();
+            _val6 = iprot.readString();
+            self.claimsMap[_key5] = _val6
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AuthzToken')
+    if self.accessToken is not None:
+      oprot.writeFieldBegin('accessToken', TType.STRING, 1)
+      oprot.writeString(self.accessToken)
+      oprot.writeFieldEnd()
+    if self.claimsMap is not None:
+      oprot.writeFieldBegin('claimsMap', TType.MAP, 2)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.claimsMap))
+      for kiter7,viter8 in self.claimsMap.items():
+        oprot.writeString(kiter7)
+        oprot.writeString(viter8)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.accessToken is None:
+      raise TProtocol.TProtocolException(message='Required field accessToken is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.accessToken)
+    value = (value * 31) ^ hash(self.claimsMap)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/ttypes.pyc
new file mode 100644
index 0000000..3e304d6
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/security/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__init__.pyc
new file mode 100644
index 0000000..d8c5a8c
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..a21b666
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__pycache__/ttypes.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__pycache__/ttypes.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__pycache__/ttypes.cpython-35.pyc
new file mode 100644
index 0000000..d58a934
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/__pycache__/ttypes.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[17/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
adding jupyter note books for Airavata


Project: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/commit/75eb96c2
Tree: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/tree/75eb96c2
Diff: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/diff/75eb96c2

Branch: refs/heads/master
Commit: 75eb96c24e15536c88439472fa04b1e68995090c
Parents: 4231ac3
Author: Pradyut Madhavaram <pr...@gmail.com>
Authored: Fri Aug 5 11:13:47 2016 -0400
Committer: Pradyut Madhavaram <pr...@gmail.com>
Committed: Fri Aug 5 11:13:47 2016 -0400

----------------------------------------------------------------------
 .../Admin-User/appcatalog/__init__.py           |     1 +
 .../Admin-User/appcatalog/__init__.pyc          |   Bin 0 -> 142 bytes
 .../Admin-User/appcatalog/appcatalog.py         |    72 +
 .../Admin-User/appcatalog/appcatalog.pyc        |   Bin 0 -> 3353 bytes
 .../Admin-User/cli.properties                   |    19 +
 .../Admin-User/expcatalog/__init__.py           |     1 +
 .../Admin-User/expcatalog/__init__.pyc          |   Bin 0 -> 142 bytes
 .../__pycache__/__init__.cpython-35.pyc         |   Bin 0 -> 164 bytes
 .../__pycache__/expcatalog.cpython-35.pyc       |   Bin 0 -> 7305 bytes
 .../Admin-User/expcatalog/expcatalog.py         |   187 +
 .../Admin-User/expcatalog/expcatalog.pyc        |   Bin 0 -> 7932 bytes
 .../Admin-User/thrift/TSCons.py                 |    35 +
 .../Admin-User/thrift/TSerialization.py         |    38 +
 .../Admin-User/thrift/TTornado.py               |   153 +
 .../Admin-User/thrift/Thrift.py                 |   170 +
 .../Admin-User/thrift/Thrift.pyc                |   Bin 0 -> 4886 bytes
 .../Admin-User/thrift/__init__.py               |    20 +
 .../Admin-User/thrift/__init__.pyc              |   Bin 0 -> 151 bytes
 .../Admin-User/thrift/protocol/TBase.py         |    81 +
 .../thrift/protocol/TBinaryProtocol.py          |   261 +
 .../thrift/protocol/TBinaryProtocol.pyc         |   Bin 0 -> 10448 bytes
 .../thrift/protocol/TCompactProtocol.py         |   405 +
 .../Admin-User/thrift/protocol/TJSONProtocol.py |   552 +
 .../Admin-User/thrift/protocol/TProtocol.py     |   406 +
 .../Admin-User/thrift/protocol/TProtocol.pyc    |   Bin 0 -> 13517 bytes
 .../Admin-User/thrift/protocol/__init__.py      |    20 +
 .../Admin-User/thrift/protocol/__init__.pyc     |   Bin 0 -> 248 bytes
 .../Admin-User/thrift/protocol/fastbinary.c     |  1219 +
 .../Admin-User/thrift/server/THttpServer.py     |    87 +
 .../thrift/server/TNonblockingServer.py         |   346 +
 .../thrift/server/TProcessPoolServer.py         |   118 +
 .../Admin-User/thrift/server/TServer.py         |   269 +
 .../Admin-User/thrift/server/__init__.py        |    20 +
 .../Admin-User/thrift/transport/THttpClient.py  |   147 +
 .../Admin-User/thrift/transport/TSSLSocket.py   |   214 +
 .../Admin-User/thrift/transport/TSSLSocket.pyc  |   Bin 0 -> 6546 bytes
 .../Admin-User/thrift/transport/TSocket.py      |   176 +
 .../Admin-User/thrift/transport/TSocket.pyc     |   Bin 0 -> 5512 bytes
 .../Admin-User/thrift/transport/TTransport.py   |   330 +
 .../Admin-User/thrift/transport/TTransport.pyc  |   Bin 0 -> 12858 bytes
 .../Admin-User/thrift/transport/TTwisted.py     |   221 +
 .../thrift/transport/TZlibTransport.py          |   249 +
 .../Admin-User/thrift/transport/__init__.py     |    20 +
 .../Admin-User/thrift/transport/__init__.pyc    |   Bin 0 -> 207 bytes
 .../create-experiment-checkpoint.ipynb          |   449 +
 .../create-experiment/__init__.py               |     0
 .../create-experiment/apache/__init__.py        |     0
 .../create-experiment/apache/__init__.pyc       |   Bin 0 -> 105 bytes
 .../apache/airavata/__init__.py                 |     0
 .../apache/airavata/__init__.pyc                |   Bin 0 -> 114 bytes
 .../apache/airavata/api/Airavata-remote         |  1130 +
 .../apache/airavata/api/Airavata.py             | 47815 +++++++++++++++++
 .../apache/airavata/api/Airavata.pyc            |   Bin 0 -> 1517997 bytes
 .../apache/airavata/api/__init__.py             |     1 +
 .../apache/airavata/api/__init__.pyc            |   Bin 0 -> 183 bytes
 .../apache/airavata/api/constants.py            |    12 +
 .../apache/airavata/api/error/__init__.py       |     1 +
 .../apache/airavata/api/error/__init__.pyc      |   Bin 0 -> 173 bytes
 .../apache/airavata/api/error/constants.py      |    11 +
 .../apache/airavata/api/error/ttypes.py         |   940 +
 .../apache/airavata/api/error/ttypes.pyc        |   Bin 0 -> 34089 bytes
 .../apache/airavata/api/ttypes.py               |    37 +
 .../apache/airavata/api/ttypes.pyc              |   Bin 0 -> 1600 bytes
 .../apache/airavata/model/__init__.py           |     1 +
 .../apache/airavata/model/__init__.pyc          |   Bin 0 -> 169 bytes
 .../airavata/model/appcatalog/__init__.py       |     0
 .../airavata/model/appcatalog/__init__.pyc      |   Bin 0 -> 131 bytes
 .../model/appcatalog/appdeployment/__init__.py  |     1 +
 .../model/appcatalog/appdeployment/__init__.pyc |   Bin 0 -> 194 bytes
 .../model/appcatalog/appdeployment/constants.py |    11 +
 .../model/appcatalog/appdeployment/ttypes.py    |   634 +
 .../model/appcatalog/appdeployment/ttypes.pyc   |   Bin 0 -> 20381 bytes
 .../model/appcatalog/appinterface/__init__.py   |     1 +
 .../model/appcatalog/appinterface/__init__.pyc  |   Bin 0 -> 193 bytes
 .../model/appcatalog/appinterface/constants.py  |    11 +
 .../model/appcatalog/appinterface/ttypes.py     |   219 +
 .../model/appcatalog/appinterface/ttypes.pyc    |   Bin 0 -> 7414 bytes
 .../appcatalog/computeresource/__init__.py      |     1 +
 .../appcatalog/computeresource/__init__.pyc     |   Bin 0 -> 196 bytes
 .../appcatalog/computeresource/constants.py     |    11 +
 .../model/appcatalog/computeresource/ttypes.py  |  1640 +
 .../model/appcatalog/computeresource/ttypes.pyc |   Bin 0 -> 50576 bytes
 .../model/appcatalog/gatewayprofile/__init__.py |     1 +
 .../appcatalog/gatewayprofile/__init__.pyc      |   Bin 0 -> 195 bytes
 .../appcatalog/gatewayprofile/constants.py      |    11 +
 .../model/appcatalog/gatewayprofile/ttypes.py   |   512 +
 .../model/appcatalog/gatewayprofile/ttypes.pyc  |   Bin 0 -> 16903 bytes
 .../model/appcatalog/parallelism/__init__.py    |     1 +
 .../model/appcatalog/parallelism/__init__.pyc   |   Bin 0 -> 192 bytes
 .../model/appcatalog/parallelism/constants.py   |    11 +
 .../model/appcatalog/parallelism/ttypes.py      |    60 +
 .../model/appcatalog/parallelism/ttypes.pyc     |   Bin 0 -> 1372 bytes
 .../appcatalog/storageresource/__init__.py      |     1 +
 .../appcatalog/storageresource/__init__.pyc     |   Bin 0 -> 196 bytes
 .../appcatalog/storageresource/constants.py     |    11 +
 .../model/appcatalog/storageresource/ttypes.py  |   167 +
 .../model/appcatalog/storageresource/ttypes.pyc |   Bin 0 -> 6028 bytes
 .../airavata/model/application/__init__.py      |     0
 .../airavata/model/application/__init__.pyc     |   Bin 0 -> 132 bytes
 .../airavata/model/application/io/__init__.py   |     1 +
 .../airavata/model/application/io/__init__.pyc  |   Bin 0 -> 184 bytes
 .../airavata/model/application/io/constants.py  |    11 +
 .../airavata/model/application/io/ttypes.py     |   510 +
 .../airavata/model/application/io/ttypes.pyc    |   Bin 0 -> 14257 bytes
 .../apache/airavata/model/commons/__init__.py   |     1 +
 .../apache/airavata/model/commons/__init__.pyc  |   Bin 0 -> 177 bytes
 .../apache/airavata/model/commons/constants.py  |    12 +
 .../apache/airavata/model/commons/ttypes.py     |   335 +
 .../apache/airavata/model/commons/ttypes.pyc    |   Bin 0 -> 11641 bytes
 .../apache/airavata/model/constants.py          |    11 +
 .../apache/airavata/model/data/__init__.py      |     0
 .../apache/airavata/model/data/__init__.pyc     |   Bin 0 -> 125 bytes
 .../airavata/model/data/movement/__init__.py    |     1 +
 .../airavata/model/data/movement/__init__.pyc   |   Bin 0 -> 183 bytes
 .../airavata/model/data/movement/constants.py   |    11 +
 .../airavata/model/data/movement/ttypes.py      |   625 +
 .../airavata/model/data/movement/ttypes.pyc     |   Bin 0 -> 20859 bytes
 .../airavata/model/data/product/__init__.py     |     1 +
 .../airavata/model/data/product/constants.py    |    11 +
 .../airavata/model/data/product/ttypes.py       |   549 +
 .../airavata/model/data/replica/__init__.py     |     1 +
 .../airavata/model/data/replica/__init__.pyc    |   Bin 0 -> 182 bytes
 .../airavata/model/data/replica/constants.py    |    11 +
 .../airavata/model/data/replica/ttypes.py       |   511 +
 .../airavata/model/data/replica/ttypes.pyc      |   Bin 0 -> 14489 bytes
 .../airavata/model/data/resource/__init__.py    |     1 +
 .../airavata/model/data/resource/constants.py   |    11 +
 .../airavata/model/data/resource/ttypes.py      |   535 +
 .../airavata/model/experiment/__init__.py       |     1 +
 .../airavata/model/experiment/__init__.pyc      |   Bin 0 -> 180 bytes
 .../airavata/model/experiment/constants.py      |    11 +
 .../apache/airavata/model/experiment/ttypes.py  |  1111 +
 .../apache/airavata/model/experiment/ttypes.pyc |   Bin 0 -> 32151 bytes
 .../apache/airavata/model/group/__init__.py     |     1 +
 .../apache/airavata/model/group/__init__.pyc    |   Bin 0 -> 175 bytes
 .../apache/airavata/model/group/constants.py    |    11 +
 .../apache/airavata/model/group/ttypes.py       |   179 +
 .../apache/airavata/model/group/ttypes.pyc      |   Bin 0 -> 5482 bytes
 .../apache/airavata/model/job/__init__.py       |     1 +
 .../apache/airavata/model/job/__init__.pyc      |   Bin 0 -> 173 bytes
 .../apache/airavata/model/job/constants.py      |    11 +
 .../apache/airavata/model/job/ttypes.py         |   237 +
 .../apache/airavata/model/job/ttypes.pyc        |   Bin 0 -> 7071 bytes
 .../apache/airavata/model/messaging/__init__.py |     0
 .../airavata/model/messaging/__init__.pyc       |   Bin 0 -> 130 bytes
 .../airavata/model/messaging/event/__init__.py  |     1 +
 .../airavata/model/messaging/event/__init__.pyc |   Bin 0 -> 185 bytes
 .../airavata/model/messaging/event/constants.py |    11 +
 .../airavata/model/messaging/event/ttypes.py    |  1426 +
 .../airavata/model/messaging/event/ttypes.pyc   |   Bin 0 -> 48557 bytes
 .../apache/airavata/model/process/__init__.py   |     1 +
 .../apache/airavata/model/process/__init__.pyc  |   Bin 0 -> 177 bytes
 .../apache/airavata/model/process/constants.py  |    11 +
 .../apache/airavata/model/process/ttypes.py     |   425 +
 .../apache/airavata/model/process/ttypes.pyc    |   Bin 0 -> 12365 bytes
 .../airavata/model/scheduling/__init__.py       |     1 +
 .../airavata/model/scheduling/__init__.pyc      |   Bin 0 -> 180 bytes
 .../airavata/model/scheduling/constants.py      |    11 +
 .../apache/airavata/model/scheduling/ttypes.py  |   230 +
 .../apache/airavata/model/scheduling/ttypes.pyc |   Bin 0 -> 6698 bytes
 .../apache/airavata/model/security/__init__.py  |     1 +
 .../apache/airavata/model/security/__init__.pyc |   Bin 0 -> 178 bytes
 .../apache/airavata/model/security/constants.py |    11 +
 .../apache/airavata/model/security/ttypes.py    |   108 +
 .../apache/airavata/model/security/ttypes.pyc   |   Bin 0 -> 4142 bytes
 .../apache/airavata/model/status/__init__.py    |     1 +
 .../apache/airavata/model/status/__init__.pyc   |   Bin 0 -> 176 bytes
 .../apache/airavata/model/status/constants.py   |    11 +
 .../apache/airavata/model/status/ttypes.py      |   542 +
 .../apache/airavata/model/status/ttypes.pyc     |   Bin 0 -> 15977 bytes
 .../apache/airavata/model/task/__init__.py      |     1 +
 .../apache/airavata/model/task/__init__.pyc     |   Bin 0 -> 174 bytes
 .../apache/airavata/model/task/constants.py     |    11 +
 .../apache/airavata/model/task/ttypes.py        |   703 +
 .../apache/airavata/model/task/ttypes.pyc       |   Bin 0 -> 22730 bytes
 .../apache/airavata/model/ttypes.py             |    34 +
 .../apache/airavata/model/ttypes.pyc            |   Bin 0 -> 1350 bytes
 .../apache/airavata/model/user/__init__.py      |     1 +
 .../apache/airavata/model/user/__init__.pyc     |   Bin 0 -> 174 bytes
 .../apache/airavata/model/user/constants.py     |    12 +
 .../apache/airavata/model/user/ttypes.py        |   721 +
 .../apache/airavata/model/user/ttypes.pyc       |   Bin 0 -> 20353 bytes
 .../apache/airavata/model/workflow/__init__.py  |     1 +
 .../apache/airavata/model/workflow/__init__.pyc |   Bin 0 -> 178 bytes
 .../apache/airavata/model/workflow/constants.py |    11 +
 .../apache/airavata/model/workflow/ttypes.py    |   822 +
 .../apache/airavata/model/workflow/ttypes.pyc   |   Bin 0 -> 25348 bytes
 .../apache/airavata/model/workspace/__init__.py |     1 +
 .../airavata/model/workspace/__init__.pyc       |   Bin 0 -> 179 bytes
 .../airavata/model/workspace/constants.py       |    11 +
 .../model/workspace/experiment/__init__.py      |     1 +
 .../model/workspace/experiment/constants.py     |    14 +
 .../model/workspace/experiment/ttypes.py        |  3474 ++
 .../apache/airavata/model/workspace/ttypes.py   |   851 +
 .../apache/airavata/model/workspace/ttypes.pyc  |   Bin 0 -> 25091 bytes
 .../create-experiment/create-experiment.ipynb   |   449 +
 .../create-experiment/thrift/TSCons.py          |    35 +
 .../create-experiment/thrift/TSerialization.py  |    38 +
 .../create-experiment/thrift/TTornado.py        |   153 +
 .../create-experiment/thrift/Thrift.py          |   170 +
 .../create-experiment/thrift/Thrift.pyc         |   Bin 0 -> 4886 bytes
 .../create-experiment/thrift/__init__.py        |    20 +
 .../create-experiment/thrift/__init__.pyc       |   Bin 0 -> 151 bytes
 .../create-experiment/thrift/protocol/TBase.py  |    81 +
 .../thrift/protocol/TBinaryProtocol.py          |   261 +
 .../thrift/protocol/TBinaryProtocol.pyc         |   Bin 0 -> 10448 bytes
 .../thrift/protocol/TCompactProtocol.py         |   405 +
 .../thrift/protocol/TJSONProtocol.py            |   552 +
 .../thrift/protocol/TProtocol.py                |   406 +
 .../thrift/protocol/TProtocol.pyc               |   Bin 0 -> 13517 bytes
 .../thrift/protocol/__init__.py                 |    20 +
 .../thrift/protocol/__init__.pyc                |   Bin 0 -> 248 bytes
 .../thrift/protocol/fastbinary.c                |  1219 +
 .../thrift/server/THttpServer.py                |    87 +
 .../thrift/server/TNonblockingServer.py         |   346 +
 .../thrift/server/TProcessPoolServer.py         |   118 +
 .../create-experiment/thrift/server/TServer.py  |   269 +
 .../create-experiment/thrift/server/__init__.py |    20 +
 .../thrift/transport/THttpClient.py             |   147 +
 .../thrift/transport/TSSLSocket.py              |   214 +
 .../thrift/transport/TSSLSocket.pyc             |   Bin 0 -> 6546 bytes
 .../thrift/transport/TSocket.py                 |   176 +
 .../thrift/transport/TSocket.pyc                |   Bin 0 -> 5512 bytes
 .../thrift/transport/TTransport.py              |   330 +
 .../thrift/transport/TTransport.pyc             |   Bin 0 -> 12858 bytes
 .../thrift/transport/TTwisted.py                |   221 +
 .../thrift/transport/TZlibTransport.py          |   249 +
 .../thrift/transport/__init__.py                |    20 +
 .../thrift/transport/__init__.pyc               |   Bin 0 -> 207 bytes
 229 files changed, 79716 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.py
new file mode 100644
index 0000000..42e1d7d
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.py
@@ -0,0 +1 @@
+__author__ = 'syodage'

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.pyc
new file mode 100644
index 0000000..bf85e3f
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.py
new file mode 100644
index 0000000..dce34d6
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.py
@@ -0,0 +1,72 @@
+from apache.airavata.model.experiment.ttypes import ExperimentModel, UserConfigurationDataModel
+from apache.airavata.model.scheduling.ttypes import ComputationalResourceSchedulingModel
+from apache.airavata.model.workspace.ttypes import Project
+
+from oauthlib.oauth2 import LegacyApplicationClient
+from requests_oauthlib import OAuth2Session
+from oauthlib.oauth2 import BackendApplicationClient
+
+__author__ = 'syodage'
+import sys
+
+import random
+
+from thrift.protocol import TBinaryProtocol
+from thrift.transport import TSocket, TTransport   ##, TSSLSocket
+
+from apache.airavata.api import Airavata
+from apache.airavata.model.security.ttypes import AuthzToken
+from apache.airavata.model.application.io.ttypes import InputDataObjectType, OutputDataObjectType
+
+class AppCatalog:
+    def __init__(self, hostName, port):
+        # Create a socket to the Airavata Server
+        transport = TSocket.TSocket(hostName,port)
+        # Use Buffered Protocol to speedup over raw sockets
+        transport = TTransport.TBufferedTransport(transport)
+
+        # Airavata currently uses Binary Protocol
+        protocol = TBinaryProtocol.TBinaryProtocol(transport)
+
+        # Create a Airavata client to use the protocol encoder
+        self.airavataClient = Airavata.Client(protocol)
+
+        transport.open()
+        
+        client_id = r'XXXXXXXXXXXX'
+        client_secret = r'XXXXXXXX'
+
+        client = BackendApplicationClient(client_id=client_id)
+        oauth = OAuth2Session(client=client)
+        token = oauth.fetch_token(token_url='https://idp.scigap.org:9443/oauth2/token', client_id=client_id, client_secret=client_secret)
+        self.authzToken = AuthzToken(token["access_token"])
+        
+        claimsMap = {"userName":"admin","gatewayID": "Ultrascan_Production"}
+        self.authzToken.claimsMap = claimsMap
+
+        self.gateWayId = "Ultrascan_Production"
+
+        print self.airavataClient.getAPIVersion(self.authzToken)
+
+    def computer_resources(self):
+        resources = self.airavataClient.getAllComputeResourceNames(self.authzToken)
+        return resources
+    
+    def list_of_applications(self, gatewayId):
+        Applications= self.airavataClient.getAllApplicationInterfaces(self.authzToken,gatewayId)
+        return Applications
+    
+    def application_deployments(self, applicationInterfaceId):
+        deployments= self.airavataClient.getApplicationDeployment(self.authzToken,applicationInterfaceId)
+        return deployments
+    
+    def module_descriptions(self,gatewayId):
+        description = self.airavataClient.getAllAppModules(self.authzToken,gatewayId)
+        return description
+    
+    def get_gatewaylist(self):
+        gateway_list= self.airavataClient.getAllGateways(self.authzToken)
+        return gateway_list
+        
+
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.pyc
new file mode 100644
index 0000000..5774dbf
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/appcatalog/appcatalog.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/cli.properties
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/cli.properties b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/cli.properties
new file mode 100644
index 0000000..9327692
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/cli.properties
@@ -0,0 +1,19 @@
+[AiravataServer]
+host=gw154.iu.xsede.org
+port=8930
+#host=gw77.iu.xsede.org
+#port=9930
+#port=10930
+
+## Gateway Specific Properties
+[GatewayProperties]
+gateway_id=Ultrascan_Production
+cred_token_id=
+#gateway_id=seagrid
+#cred_token_id=47507a08-1579-4883-be03-3c8e3b7da061
+
+[Stampede]
+host=stampede.tacc.xsede.org
+hostDesc=TACC Stampede Cluster
+jobManagerType=SLURM
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.py
new file mode 100644
index 0000000..42e1d7d
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.py
@@ -0,0 +1 @@
+__author__ = 'syodage'

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.pyc
new file mode 100644
index 0000000..b2d149f
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..60df72b
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__pycache__/expcatalog.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__pycache__/expcatalog.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__pycache__/expcatalog.cpython-35.pyc
new file mode 100644
index 0000000..2e8ba43
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/__pycache__/expcatalog.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.py
new file mode 100644
index 0000000..d49edf9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.py
@@ -0,0 +1,187 @@
+from apache.airavata.model.experiment.ttypes import ExperimentModel, UserConfigurationDataModel
+from apache.airavata.model.scheduling.ttypes import ComputationalResourceSchedulingModel
+from apache.airavata.model.workspace.ttypes import Project
+
+from oauthlib.oauth2 import LegacyApplicationClient
+from requests_oauthlib import OAuth2Session
+from oauthlib.oauth2 import BackendApplicationClient
+
+import datetime
+from datetime import datetime
+import calendar
+
+
+__author__ = 'syodage'
+import sys
+
+import random
+
+from thrift.protocol import TBinaryProtocol
+from thrift.transport import TSocket, TTransport   ##, TSSLSocket
+
+from apache.airavata.api import Airavata
+from apache.airavata.model.security.ttypes import AuthzToken
+from apache.airavata.model.application.io.ttypes import InputDataObjectType, OutputDataObjectType
+
+class ExpCatalog:
+    def __init__(self, hostName, port):
+        # Create a socket to the Airavata Server
+        transport = TSocket.TSocket(hostName,port)
+        # Use Buffered Protocol to speedup over raw sockets
+        transport = TTransport.TBufferedTransport(transport)
+
+        # Airavata currently uses Binary Protocol
+        protocol = TBinaryProtocol.TBinaryProtocol(transport)
+
+        # Create a Airavata client to use the protocol encoder
+        self.airavataClient = Airavata.Client(protocol)
+
+        transport.open()
+        
+        client_id = r'XXXXXXXXX'
+        client_secret = r'XXXXXXXXX'
+
+        client = BackendApplicationClient(client_id=client_id)
+        oauth = OAuth2Session(client=client)
+        token = oauth.fetch_token(token_url='https://idp.scigap.org:9443/oauth2/token', client_id=client_id, client_secret=client_secret)
+        self.authzToken = AuthzToken(token["access_token"])
+        
+        claimsMap = {"userName":"admin","gatewayID": "Ultrascan_Production"}
+        self.authzToken.claimsMap = claimsMap
+
+        self.gateWayId = "default"
+
+        print (self.airavataClient.getAPIVersion(self.authzToken))
+
+    def getExperiment(self, expId):
+        experiment = self.airavataClient.getExperiment(self.authzToken, expId)
+        # print experiment
+        return experiment
+
+    def getJobModel(self,expId):
+        jobM = self.airavataClient.getJobDetails(self.authzToken,expId)
+        return jobM
+
+    def getExperimentSummary(self, expId):
+        expSum = ExperimentSummary()
+        expSum.setExperimentModel(self.getExperiment(expId))
+        expSum.setJobModels(self.getJobModel(expId))
+        return expSum
+
+
+    def getExperimentName(self):
+        nameList = ["Darwin", "Faraday" , "Aristotle", "Tesla", "Edison", "Galileo", "Einstein", "Newton", "Dalton",
+                    "Arthur" , "Clark", "Turing", "Hawking", "Maxwell", "Isaac", ""]
+        limit = nameList.__len__()
+        r = random.randint(0, limit-1)
+        return nameList[r]
+
+    def createExperiment(self, applicationName):
+        # experiment = ExperimentModel()
+        # experiment.experimentName(self.getExperimentName())
+        if applicationName == "Amber":
+            appInterface = self.getApplication(applicationName)
+        else:
+            print ("not yet support for application " + applicationName)
+
+        inputs = appInterface.applicationInputs
+        for input in inputs:
+            if input.name == "Heat-Restart-File":
+                input.value = "file://ogce@stampede.tacc.xsede.org:/scratch/01437/ogce/gta-work-dirs/PROCESS_e0610a6c-5778-4a69-a004-f440e29194af/02_Heat.rst"
+            elif input.name == "Production-Control-File":
+                input.value = "file://ogce@stampede.tacc.xsede.org:/scratch/01437/ogce/gta-work-dirs/PROCESS_e0610a6c-5778-4a69-a004-f440e29194af/03_Prod.in"
+            elif input.name == "Parameter-Topology-File":
+                input.value = "file://ogce@stampede.tacc.xsede.org:/scratch/01437/ogce/gta-work-dirs/PROCESS_e0610a6c-5778-4a69-a004-f440e29194af/prmtop"
+
+        outputs = appInterface.applicationOutputs
+
+        experiment = ExperimentModel()
+        experiment.experimentName = self.getExperimentName()
+        experiment.projectId = self.getDefaultProjectId()
+        experiment.gatewayId = self.gateWayId
+        experiment.userName = "admin"
+        experiment.description = "Test Amber experiment"
+        experiment.experimentInputs = inputs
+        experiment.experimentOutputs = outputs
+        experiment.executionId = appInterface.applicationInterfaceId
+
+        computeResources = self.airavataClient.getAvailableAppInterfaceComputeResources(
+            self.authzToken, appInterface.applicationInterfaceId)
+        t = {"a": "b", "c": "d"}
+        for computeResource in computeResources:
+            if computeResource.startswith("stampede.tacc.xsede.org"):
+                stampedCRId = computeResource
+                break
+
+        print (stampedCRId)
+        computationalRS = ComputationalResourceSchedulingModel()
+        computationalRS.resourceHostId = stampedCRId
+        computationalRS.totalCPUCount = 16
+        computationalRS.nodeCount = 1
+        computationalRS.numberOfThreads = 1
+        computationalRS.queueName = "normal"
+        computationalRS.wallTimeLimit = 10
+        computationalRS.totalPhysicalMemory = 1
+
+        userConfig = UserConfigurationDataModel()
+        userConfig.airavataAutoSchedule = True
+        userConfig.overrideManualScheduledParams = False
+        userConfig.computationalResourceScheduling = computationalRS
+
+
+        experiment.userConfigurationData = userConfig
+        expId = self.airavataClient.createExperiment(self.authzToken, self.gateWayId, experiment)
+        print ("Experiment Id is " + expId)
+        return expId
+
+    def launchExperiment(self, expId):
+        self.airavataClient.launchExperiment(self.authzToken, expId , self.gateWayId)
+
+
+    def cancelExperiment(self, expId):
+        self.airavataClient.terminateExperiment(self.authzToken, expId, self.gateWayId)
+
+    def getApplication(self, nameStartWith):
+        appNames = self.airavataClient.getAllApplicationInterfaceNames(self.authzToken,self.gateWayId )
+        appInterFaces = self.airavataClient.getAllApplicationInterfaces(self.authzToken, self.gateWayId)
+        for interface in appInterFaces:
+            if interface.applicationName.startswith(nameStartWith):
+                return interface
+        # for name in appNames:
+        #     if name.startswith(nameStartWith):
+        #         return name
+    # def createAndLaunchExperiment(self):
+
+    def getDefaultProjectId(self):
+        project = Project()
+        project.name = "default"
+        project.owner = "admin"
+        project.description = "test project"
+        projectId = self.airavataClient.createProject(self.authzToken, self.gateWayId,project)
+        project.projectID = projectId
+        return projectId
+
+    def experiment_statistics(self,gatewayID, fromTime, toTime):
+        statistics=self.airavataClient.getExperimentStatistics(self.authzToken, gatewayID,fromTime,toTime)
+        return statistics
+    
+    def create_experiment(self,authzToken,gatewayId,experiment):
+        experiment=self.airavataClient.createExperiment(self.authzToken, gatewayID,experiment)
+        return experiment
+    
+
+class ExperimentSummary:
+
+    def setExperimentModel(self, expModel):
+        self.name = expModel.experimentName
+        self.id = expModel.experimentId
+        self.status = expModel.experimentStatus
+
+
+    def setProcessModel(self, processModel):
+        print ("setProcessModel is not yet implemented")
+
+    def setJobModels(self, jobModel):
+        self.jobs = jobModel
+
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.pyc
new file mode 100644
index 0000000..d44337b
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/expcatalog/expcatalog.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TSCons.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TSCons.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TSCons.py
new file mode 100644
index 0000000..da8d283
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TSCons.py
@@ -0,0 +1,35 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+from os import path
+from SCons.Builder import Builder
+
+
+def scons_env(env, add=''):
+  opath = path.dirname(path.abspath('$TARGET'))
+  lstr = 'thrift --gen cpp -o ' + opath + ' ' + add + ' $SOURCE'
+  cppbuild = Builder(action=lstr)
+  env.Append(BUILDERS={'ThriftCpp': cppbuild})
+
+
+def gen_cpp(env, dir, file):
+  scons_env(env)
+  suffixes = ['_types.h', '_types.cpp']
+  targets = map(lambda s: 'gen-cpp/' + file + s, suffixes)
+  return env.ThriftCpp(targets, dir + file + '.thrift')

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TSerialization.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TSerialization.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TSerialization.py
new file mode 100644
index 0000000..54f10e2
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TSerialization.py
@@ -0,0 +1,38 @@
+#
+# 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.
+#
+
+from lib.thrift.protocol import TBinaryProtocol
+from lib.thrift.transport import TTransport
+
+
+def serialize(thrift_object,
+              protocol_factory=TBinaryProtocol.TBinaryProtocolFactory()):
+    transport = TTransport.TMemoryBuffer()
+    protocol = protocol_factory.getProtocol(transport)
+    thrift_object.write(protocol)
+    return transport.getvalue()
+
+
+def deserialize(base,
+                buf,
+                protocol_factory=TBinaryProtocol.TBinaryProtocolFactory()):
+    transport = TTransport.TMemoryBuffer(buf)
+    protocol = protocol_factory.getProtocol(transport)
+    base.read(protocol)
+    return base

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TTornado.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TTornado.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TTornado.py
new file mode 100644
index 0000000..af309c3
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/TTornado.py
@@ -0,0 +1,153 @@
+#
+# 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.
+#
+
+from cStringIO import StringIO
+import logging
+import socket
+import struct
+
+from thrift.transport import TTransport
+from thrift.transport.TTransport import TTransportException
+
+from tornado import gen
+from tornado import iostream
+from tornado import netutil
+
+
+class TTornadoStreamTransport(TTransport.TTransportBase):
+    """a framed, buffered transport over a Tornado stream"""
+    def __init__(self, host, port, stream=None):
+        self.host = host
+        self.port = port
+        self.is_queuing_reads = False
+        self.read_queue = []
+        self.__wbuf = StringIO()
+
+        # servers provide a ready-to-go stream
+        self.stream = stream
+        if self.stream is not None:
+            self._set_close_callback()
+
+    # not the same number of parameters as TTransportBase.open
+    def open(self, callback):
+        logging.debug('socket connecting')
+        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
+        self.stream = iostream.IOStream(sock)
+
+        def on_close_in_connect(*_):
+            message = 'could not connect to {}:{}'.format(self.host, self.port)
+            raise TTransportException(
+                type=TTransportException.NOT_OPEN,
+                message=message)
+        self.stream.set_close_callback(on_close_in_connect)
+
+        def finish(*_):
+            self._set_close_callback()
+            callback()
+
+        self.stream.connect((self.host, self.port), callback=finish)
+
+    def _set_close_callback(self):
+        def on_close():
+            raise TTransportException(
+                type=TTransportException.END_OF_FILE,
+                message='socket closed')
+        self.stream.set_close_callback(self.close)
+
+    def close(self):
+        # don't raise if we intend to close
+        self.stream.set_close_callback(None)
+        self.stream.close()
+
+    def read(self, _):
+        # The generated code for Tornado shouldn't do individual reads -- only
+        # frames at a time
+        assert "you're doing it wrong" is True
+
+    @gen.engine
+    def readFrame(self, callback):
+        self.read_queue.append(callback)
+        logging.debug('read queue: %s', self.read_queue)
+
+        if self.is_queuing_reads:
+            # If a read is already in flight, then the while loop below should
+            # pull it from self.read_queue
+            return
+
+        self.is_queuing_reads = True
+        while self.read_queue:
+            next_callback = self.read_queue.pop()
+            result = yield gen.Task(self._readFrameFromStream)
+            next_callback(result)
+        self.is_queuing_reads = False
+
+    @gen.engine
+    def _readFrameFromStream(self, callback):
+        logging.debug('_readFrameFromStream')
+        frame_header = yield gen.Task(self.stream.read_bytes, 4)
+        frame_length, = struct.unpack('!i', frame_header)
+        logging.debug('received frame header, frame length = %i', frame_length)
+        frame = yield gen.Task(self.stream.read_bytes, frame_length)
+        logging.debug('received frame payload')
+        callback(frame)
+
+    def write(self, buf):
+        self.__wbuf.write(buf)
+
+    def flush(self, callback=None):
+        wout = self.__wbuf.getvalue()
+        wsz = len(wout)
+        # reset wbuf before write/flush to preserve state on underlying failure
+        self.__wbuf = StringIO()
+        # N.B.: Doing this string concatenation is WAY cheaper than making
+        # two separate calls to the underlying socket object. Socket writes in
+        # Python turn out to be REALLY expensive, but it seems to do a pretty
+        # good job of managing string buffer operations without excessive copies
+        buf = struct.pack("!i", wsz) + wout
+
+        logging.debug('writing frame length = %i', wsz)
+        self.stream.write(buf, callback)
+
+
+class TTornadoServer(netutil.TCPServer):
+    def __init__(self, processor, iprot_factory, oprot_factory=None,
+                 *args, **kwargs):
+        super(TTornadoServer, self).__init__(*args, **kwargs)
+
+        self._processor = processor
+        self._iprot_factory = iprot_factory
+        self._oprot_factory = (oprot_factory if oprot_factory is not None
+                               else iprot_factory)
+
+    def handle_stream(self, stream, address):
+        try:
+            host, port = address
+            trans = TTornadoStreamTransport(host=host, port=port, stream=stream)
+            oprot = self._oprot_factory.getProtocol(trans)
+
+            def next_pass():
+                if not trans.stream.closed():
+                    self._processor.process(trans, self._iprot_factory, oprot,
+                                            callback=next_pass)
+
+            next_pass()
+
+        except Exception:
+            logging.exception('thrift exception in handle_stream')
+            trans.close()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.py
new file mode 100644
index 0000000..9890af7
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.py
@@ -0,0 +1,170 @@
+#
+# 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.
+#
+
+import sys
+
+
+class TType:
+  STOP   = 0
+  VOID   = 1
+  BOOL   = 2
+  BYTE   = 3
+  I08    = 3
+  DOUBLE = 4
+  I16    = 6
+  I32    = 8
+  I64    = 10
+  STRING = 11
+  UTF7   = 11
+  STRUCT = 12
+  MAP    = 13
+  SET    = 14
+  LIST   = 15
+  UTF8   = 16
+  UTF16  = 17
+
+  _VALUES_TO_NAMES = ('STOP',
+                      'VOID',
+                      'BOOL',
+                      'BYTE',
+                      'DOUBLE',
+                      None,
+                      'I16',
+                      None,
+                      'I32',
+                      None,
+                     'I64',
+                     'STRING',
+                     'STRUCT',
+                     'MAP',
+                     'SET',
+                     'LIST',
+                     'UTF8',
+                     'UTF16')
+
+
+class TMessageType:
+  CALL = 1
+  REPLY = 2
+  EXCEPTION = 3
+  ONEWAY = 4
+
+
+class TProcessor:
+  """Base class for procsessor, which works on two streams."""
+
+  def process(iprot, oprot):
+    pass
+
+
+class TException(Exception):
+  """Base class for all thrift exceptions."""
+
+  # BaseException.message is deprecated in Python v[2.6,3.0)
+  if (2, 6, 0) <= sys.version_info < (3, 0):
+    def _get_message(self):
+      return self._message
+
+    def _set_message(self, message):
+      self._message = message
+    message = property(_get_message, _set_message)
+
+  def __init__(self, message=None):
+    Exception.__init__(self, message)
+    self.message = message
+
+
+class TApplicationException(TException):
+  """Application level thrift exceptions."""
+
+  UNKNOWN = 0
+  UNKNOWN_METHOD = 1
+  INVALID_MESSAGE_TYPE = 2
+  WRONG_METHOD_NAME = 3
+  BAD_SEQUENCE_ID = 4
+  MISSING_RESULT = 5
+  INTERNAL_ERROR = 6
+  PROTOCOL_ERROR = 7
+  INVALID_TRANSFORM = 8
+  INVALID_PROTOCOL = 9
+  UNSUPPORTED_CLIENT_TYPE = 10
+
+  def __init__(self, type=UNKNOWN, message=None):
+    TException.__init__(self, message)
+    self.type = type
+
+  def __str__(self):
+    if self.message:
+      return self.message
+    elif self.type == self.UNKNOWN_METHOD:
+      return 'Unknown method'
+    elif self.type == self.INVALID_MESSAGE_TYPE:
+      return 'Invalid message type'
+    elif self.type == self.WRONG_METHOD_NAME:
+      return 'Wrong method name'
+    elif self.type == self.BAD_SEQUENCE_ID:
+      return 'Bad sequence ID'
+    elif self.type == self.MISSING_RESULT:
+      return 'Missing result'
+    elif self.type == self.INTERNAL_ERROR:
+      return 'Internal error'
+    elif self.type == self.PROTOCOL_ERROR:
+      return 'Protocol error'
+    elif self.type == self.INVALID_TRANSFORM:
+      return 'Invalid transform'
+    elif self.type == self.INVALID_PROTOCOL:
+      return 'Invalid protocol'
+    elif self.type == self.UNSUPPORTED_CLIENT_TYPE:
+      return 'Unsupported client type'
+    else:
+      return 'Default (unknown) TApplicationException'
+
+  def read(self, iprot):
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.type = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    oprot.writeStructBegin('TApplicationException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    if self.type is not None:
+      oprot.writeFieldBegin('type', TType.I32, 2)
+      oprot.writeI32(self.type)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.pyc
new file mode 100644
index 0000000..8b7f8b1
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/Thrift.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.py
new file mode 100644
index 0000000..48d659c
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.py
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+__all__ = ['Thrift', 'TSCons']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.pyc
new file mode 100644
index 0000000..42aabd6
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBase.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBase.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBase.py
new file mode 100644
index 0000000..6cbd5f3
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBase.py
@@ -0,0 +1,81 @@
+#
+# 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.
+#
+
+from thrift.Thrift import *
+from thrift.protocol import TBinaryProtocol
+from thrift.transport import TTransport
+
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class TBase(object):
+  __slots__ = []
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, getattr(self, key))
+              for key in self.__slots__]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    if not isinstance(other, self.__class__):
+      return False
+    for attr in self.__slots__:
+      my_val = getattr(self, attr)
+      other_val = getattr(other, attr)
+      if my_val != other_val:
+        return False
+    return True
+
+  def __ne__(self, other):
+    return not (self == other)
+
+  def read(self, iprot):
+    if (iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and
+        isinstance(iprot.trans, TTransport.CReadableTransport) and
+        self.thrift_spec is not None and
+        fastbinary is not None):
+      fastbinary.decode_binary(self,
+                               iprot.trans,
+                               (self.__class__, self.thrift_spec))
+      return
+    iprot.readStruct(self, self.thrift_spec)
+
+  def write(self, oprot):
+    if (oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and
+        self.thrift_spec is not None and
+        fastbinary is not None):
+      oprot.trans.write(
+        fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStruct(self, self.thrift_spec)
+
+
+class TExceptionBase(Exception):
+  # old style class so python2.4 can raise exceptions derived from this
+  #  This can't inherit from TBase because of that limitation.
+  __slots__ = []
+
+  __repr__ = TBase.__repr__.im_func
+  __eq__ = TBase.__eq__.im_func
+  __ne__ = TBase.__ne__.im_func
+  read = TBase.read.im_func
+  write = TBase.write.im_func

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.py
new file mode 100644
index 0000000..17a600f
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.py
@@ -0,0 +1,261 @@
+#
+# 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.
+#
+
+from struct import pack, unpack
+
+from thrift.protocol.TProtocol import *
+
+
+class TBinaryProtocol(TProtocolBase):
+  """Binary implementation of the Thrift protocol driver."""
+
+  # NastyHaxx. Python 2.4+ on 32-bit machines forces hex constants to be
+  # positive, converting this into a long. If we hardcode the int value
+  # instead it'll stay in 32 bit-land.
+
+  # VERSION_MASK = 0xffff0000
+  VERSION_MASK = -65536
+
+  # VERSION_1 = 0x80010000
+  VERSION_1 = -2147418112
+
+  TYPE_MASK = 0x000000ff
+
+  def __init__(self, trans, strictRead=False, strictWrite=True):
+    TProtocolBase.__init__(self, trans)
+    self.strictRead = strictRead
+    self.strictWrite = strictWrite
+
+  def writeMessageBegin(self, name, type, seqid):
+    if self.strictWrite:
+      self.writeI32(TBinaryProtocol.VERSION_1 | type)
+      self.writeString(name)
+      self.writeI32(seqid)
+    else:
+      self.writeString(name)
+      self.writeByte(type)
+      self.writeI32(seqid)
+
+  def writeMessageEnd(self):
+    pass
+
+  def writeStructBegin(self, name):
+    pass
+
+  def writeStructEnd(self):
+    pass
+
+  def writeFieldBegin(self, name, type, id):
+    self.writeByte(type)
+    self.writeI16(id)
+
+  def writeFieldEnd(self):
+    pass
+
+  def writeFieldStop(self):
+    self.writeByte(TType.STOP)
+
+  def writeMapBegin(self, ktype, vtype, size):
+    self.writeByte(ktype)
+    self.writeByte(vtype)
+    self.writeI32(size)
+
+  def writeMapEnd(self):
+    pass
+
+  def writeListBegin(self, etype, size):
+    self.writeByte(etype)
+    self.writeI32(size)
+
+  def writeListEnd(self):
+    pass
+
+  def writeSetBegin(self, etype, size):
+    self.writeByte(etype)
+    self.writeI32(size)
+
+  def writeSetEnd(self):
+    pass
+
+  def writeBool(self, bool):
+    if bool:
+      self.writeByte(1)
+    else:
+      self.writeByte(0)
+
+  def writeByte(self, byte):
+    buff = pack("!b", byte)
+    self.trans.write(buff)
+
+  def writeI16(self, i16):
+    buff = pack("!h", i16)
+    self.trans.write(buff)
+
+  def writeI32(self, i32):
+    buff = pack("!i", i32)
+    self.trans.write(buff)
+
+  def writeI64(self, i64):
+    buff = pack("!q", i64)
+    self.trans.write(buff)
+
+  def writeDouble(self, dub):
+    buff = pack("!d", dub)
+    self.trans.write(buff)
+
+  def writeString(self, str):
+    self.writeI32(len(str))
+    self.trans.write(str)
+
+  def readMessageBegin(self):
+    sz = self.readI32()
+    if sz < 0:
+      version = sz & TBinaryProtocol.VERSION_MASK
+      if version != TBinaryProtocol.VERSION_1:
+        raise TProtocolException(
+          type=TProtocolException.BAD_VERSION,
+          message='Bad version in readMessageBegin: %d' % (sz))
+      type = sz & TBinaryProtocol.TYPE_MASK
+      name = self.readString()
+      seqid = self.readI32()
+    else:
+      if self.strictRead:
+        raise TProtocolException(type=TProtocolException.BAD_VERSION,
+                                 message='No protocol version header')
+      name = self.trans.readAll(sz)
+      type = self.readByte()
+      seqid = self.readI32()
+    return (name, type, seqid)
+
+  def readMessageEnd(self):
+    pass
+
+  def readStructBegin(self):
+    pass
+
+  def readStructEnd(self):
+    pass
+
+  def readFieldBegin(self):
+    type = self.readByte()
+    if type == TType.STOP:
+      return (None, type, 0)
+    id = self.readI16()
+    return (None, type, id)
+
+  def readFieldEnd(self):
+    pass
+
+  def readMapBegin(self):
+    ktype = self.readByte()
+    vtype = self.readByte()
+    size = self.readI32()
+    return (ktype, vtype, size)
+
+  def readMapEnd(self):
+    pass
+
+  def readListBegin(self):
+    etype = self.readByte()
+    size = self.readI32()
+    return (etype, size)
+
+  def readListEnd(self):
+    pass
+
+  def readSetBegin(self):
+    etype = self.readByte()
+    size = self.readI32()
+    return (etype, size)
+
+  def readSetEnd(self):
+    pass
+
+  def readBool(self):
+    byte = self.readByte()
+    if byte == 0:
+      return False
+    return True
+
+  def readByte(self):
+    buff = self.trans.readAll(1)
+    val, = unpack('!b', buff)
+    return val
+
+  def readI16(self):
+    buff = self.trans.readAll(2)
+    val, = unpack('!h', buff)
+    return val
+
+  def readI32(self):
+    buff = self.trans.readAll(4)
+    val, = unpack('!i', buff)
+    return val
+
+  def readI64(self):
+    buff = self.trans.readAll(8)
+    val, = unpack('!q', buff)
+    return val
+
+  def readDouble(self):
+    buff = self.trans.readAll(8)
+    val, = unpack('!d', buff)
+    return val
+
+  def readString(self):
+    len = self.readI32()
+    str = self.trans.readAll(len)
+    return str
+
+
+class TBinaryProtocolFactory:
+  def __init__(self, strictRead=False, strictWrite=True):
+    self.strictRead = strictRead
+    self.strictWrite = strictWrite
+
+  def getProtocol(self, trans):
+    prot = TBinaryProtocol(trans, self.strictRead, self.strictWrite)
+    return prot
+
+
+class TBinaryProtocolAccelerated(TBinaryProtocol):
+  """C-Accelerated version of TBinaryProtocol.
+
+  This class does not override any of TBinaryProtocol's methods,
+  but the generated code recognizes it directly and will call into
+  our C module to do the encoding, bypassing this object entirely.
+  We inherit from TBinaryProtocol so that the normal TBinaryProtocol
+  encoding can happen if the fastbinary module doesn't work for some
+  reason.  (TODO(dreiss): Make this happen sanely in more cases.)
+
+  In order to take advantage of the C module, just use
+  TBinaryProtocolAccelerated instead of TBinaryProtocol.
+
+  NOTE:  This code was contributed by an external developer.
+         The internal Thrift team has reviewed and tested it,
+         but we cannot guarantee that it is production-ready.
+         Please feel free to report bugs and/or success stories
+         to the public mailing list.
+  """
+  pass
+
+
+class TBinaryProtocolAcceleratedFactory:
+  def getProtocol(self, trans):
+    return TBinaryProtocolAccelerated(trans)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.pyc
new file mode 100644
index 0000000..981be1c
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TBinaryProtocol.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TCompactProtocol.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TCompactProtocol.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TCompactProtocol.py
new file mode 100644
index 0000000..09ca6ad
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TCompactProtocol.py
@@ -0,0 +1,405 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+from struct import pack, unpack
+
+from lib.thrift.protocol.TProtocol import *
+
+
+__all__ = ['TCompactProtocol', 'TCompactProtocolFactory']
+
+CLEAR = 0
+FIELD_WRITE = 1
+VALUE_WRITE = 2
+CONTAINER_WRITE = 3
+BOOL_WRITE = 4
+FIELD_READ = 5
+CONTAINER_READ = 6
+VALUE_READ = 7
+BOOL_READ = 8
+
+
+def make_helper(v_from, container):
+  def helper(func):
+    def nested(self, *args, **kwargs):
+      assert self.state in (v_from, container), (self.state, v_from, container)
+      return func(self, *args, **kwargs)
+    return nested
+  return helper
+writer = make_helper(VALUE_WRITE, CONTAINER_WRITE)
+reader = make_helper(VALUE_READ, CONTAINER_READ)
+
+
+def makeZigZag(n, bits):
+  return (n << 1) ^ (n >> (bits - 1))
+
+
+def fromZigZag(n):
+  return (n >> 1) ^ -(n & 1)
+
+
+def writeVarint(trans, n):
+  out = []
+  while True:
+    if n & ~0x7f == 0:
+      out.append(n)
+      break
+    else:
+      out.append((n & 0xff) | 0x80)
+      n = n >> 7
+  trans.write(''.join(map(chr, out)))
+
+
+def readVarint(trans):
+  result = 0
+  shift = 0
+  while True:
+    x = trans.readAll(1)
+    byte = ord(x)
+    result |= (byte & 0x7f) << shift
+    if byte >> 7 == 0:
+      return result
+    shift += 7
+
+
+class CompactType:
+  STOP = 0x00
+  TRUE = 0x01
+  FALSE = 0x02
+  BYTE = 0x03
+  I16 = 0x04
+  I32 = 0x05
+  I64 = 0x06
+  DOUBLE = 0x07
+  BINARY = 0x08
+  LIST = 0x09
+  SET = 0x0A
+  MAP = 0x0B
+  STRUCT = 0x0C
+
+CTYPES = {TType.STOP: CompactType.STOP,
+          TType.BOOL: CompactType.TRUE,  # used for collection
+          TType.BYTE: CompactType.BYTE,
+          TType.I16: CompactType.I16,
+          TType.I32: CompactType.I32,
+          TType.I64: CompactType.I64,
+          TType.DOUBLE: CompactType.DOUBLE,
+          TType.STRING: CompactType.BINARY,
+          TType.STRUCT: CompactType.STRUCT,
+          TType.LIST: CompactType.LIST,
+          TType.SET: CompactType.SET,
+          TType.MAP: CompactType.MAP
+          }
+
+TTYPES = {}
+for k, v in CTYPES.items():
+  TTYPES[v] = k
+TTYPES[CompactType.FALSE] = TType.BOOL
+del k
+del v
+
+
+class TCompactProtocol(TProtocolBase):
+  """Compact implementation of the Thrift protocol driver."""
+
+  PROTOCOL_ID = 0x82
+  VERSION = 1
+  VERSION_MASK = 0x1f
+  TYPE_MASK = 0xe0
+  TYPE_SHIFT_AMOUNT = 5
+
+  def __init__(self, trans):
+    TProtocolBase.__init__(self, trans)
+    self.state = CLEAR
+    self.__last_fid = 0
+    self.__bool_fid = None
+    self.__bool_value = None
+    self.__structs = []
+    self.__containers = []
+
+  def __writeVarint(self, n):
+    writeVarint(self.trans, n)
+
+  def writeMessageBegin(self, name, type, seqid):
+    assert self.state == CLEAR
+    self.__writeUByte(self.PROTOCOL_ID)
+    self.__writeUByte(self.VERSION | (type << self.TYPE_SHIFT_AMOUNT))
+    self.__writeVarint(seqid)
+    self.__writeString(name)
+    self.state = VALUE_WRITE
+
+  def writeMessageEnd(self):
+    assert self.state == VALUE_WRITE
+    self.state = CLEAR
+
+  def writeStructBegin(self, name):
+    assert self.state in (CLEAR, CONTAINER_WRITE, VALUE_WRITE), self.state
+    self.__structs.append((self.state, self.__last_fid))
+    self.state = FIELD_WRITE
+    self.__last_fid = 0
+
+  def writeStructEnd(self):
+    assert self.state == FIELD_WRITE
+    self.state, self.__last_fid = self.__structs.pop()
+
+  def writeFieldStop(self):
+    self.__writeByte(0)
+
+  def __writeFieldHeader(self, type, fid):
+    delta = fid - self.__last_fid
+    if 0 < delta <= 15:
+      self.__writeUByte(delta << 4 | type)
+    else:
+      self.__writeByte(type)
+      self.__writeI16(fid)
+    self.__last_fid = fid
+
+  def writeFieldBegin(self, name, type, fid):
+    assert self.state == FIELD_WRITE, self.state
+    if type == TType.BOOL:
+      self.state = BOOL_WRITE
+      self.__bool_fid = fid
+    else:
+      self.state = VALUE_WRITE
+      self.__writeFieldHeader(CTYPES[type], fid)
+
+  def writeFieldEnd(self):
+    assert self.state in (VALUE_WRITE, BOOL_WRITE), self.state
+    self.state = FIELD_WRITE
+
+  def __writeUByte(self, byte):
+    self.trans.write(pack('!B', byte))
+
+  def __writeByte(self, byte):
+    self.trans.write(pack('!b', byte))
+
+  def __writeI16(self, i16):
+    self.__writeVarint(makeZigZag(i16, 16))
+
+  def __writeSize(self, i32):
+    self.__writeVarint(i32)
+
+  def writeCollectionBegin(self, etype, size):
+    assert self.state in (VALUE_WRITE, CONTAINER_WRITE), self.state
+    if size <= 14:
+      self.__writeUByte(size << 4 | CTYPES[etype])
+    else:
+      self.__writeUByte(0xf0 | CTYPES[etype])
+      self.__writeSize(size)
+    self.__containers.append(self.state)
+    self.state = CONTAINER_WRITE
+  writeSetBegin = writeCollectionBegin
+  writeListBegin = writeCollectionBegin
+
+  def writeMapBegin(self, ktype, vtype, size):
+    assert self.state in (VALUE_WRITE, CONTAINER_WRITE), self.state
+    if size == 0:
+      self.__writeByte(0)
+    else:
+      self.__writeSize(size)
+      self.__writeUByte(CTYPES[ktype] << 4 | CTYPES[vtype])
+    self.__containers.append(self.state)
+    self.state = CONTAINER_WRITE
+
+  def writeCollectionEnd(self):
+    assert self.state == CONTAINER_WRITE, self.state
+    self.state = self.__containers.pop()
+  writeMapEnd = writeCollectionEnd
+  writeSetEnd = writeCollectionEnd
+  writeListEnd = writeCollectionEnd
+
+  def writeBool(self, bool):
+    if self.state == BOOL_WRITE:
+      if bool:
+        ctype = CompactType.TRUE
+      else:
+        ctype = CompactType.FALSE
+      self.__writeFieldHeader(ctype, self.__bool_fid)
+    elif self.state == CONTAINER_WRITE:
+      if bool:
+        self.__writeByte(CompactType.TRUE)
+      else:
+        self.__writeByte(CompactType.FALSE)
+    else:
+      raise AssertionError("Invalid state in compact protocol")
+
+  writeByte = writer(__writeByte)
+  writeI16 = writer(__writeI16)
+
+  @writer
+  def writeI32(self, i32):
+    self.__writeVarint(makeZigZag(i32, 32))
+
+  @writer
+  def writeI64(self, i64):
+    self.__writeVarint(makeZigZag(i64, 64))
+
+  @writer
+  def writeDouble(self, dub):
+    self.trans.write(pack('!d', dub))
+
+  def __writeString(self, s):
+    self.__writeSize(len(s))
+    self.trans.write(s)
+  writeString = writer(__writeString)
+
+  def readFieldBegin(self):
+    assert self.state == FIELD_READ, self.state
+    type = self.__readUByte()
+    if type & 0x0f == TType.STOP:
+      return (None, 0, 0)
+    delta = type >> 4
+    if delta == 0:
+      fid = self.__readI16()
+    else:
+      fid = self.__last_fid + delta
+    self.__last_fid = fid
+    type = type & 0x0f
+    if type == CompactType.TRUE:
+      self.state = BOOL_READ
+      self.__bool_value = True
+    elif type == CompactType.FALSE:
+      self.state = BOOL_READ
+      self.__bool_value = False
+    else:
+      self.state = VALUE_READ
+    return (None, self.__getTType(type), fid)
+
+  def readFieldEnd(self):
+    assert self.state in (VALUE_READ, BOOL_READ), self.state
+    self.state = FIELD_READ
+
+  def __readUByte(self):
+    result, = unpack('!B', self.trans.readAll(1))
+    return result
+
+  def __readByte(self):
+    result, = unpack('!b', self.trans.readAll(1))
+    return result
+
+  def __readVarint(self):
+    return readVarint(self.trans)
+
+  def __readZigZag(self):
+    return fromZigZag(self.__readVarint())
+
+  def __readSize(self):
+    result = self.__readVarint()
+    if result < 0:
+      raise TException("Length < 0")
+    return result
+
+  def readMessageBegin(self):
+    assert self.state == CLEAR
+    proto_id = self.__readUByte()
+    if proto_id != self.PROTOCOL_ID:
+      raise TProtocolException(TProtocolException.BAD_VERSION,
+          'Bad protocol id in the message: %d' % proto_id)
+    ver_type = self.__readUByte()
+    type = (ver_type & self.TYPE_MASK) >> self.TYPE_SHIFT_AMOUNT
+    version = ver_type & self.VERSION_MASK
+    if version != self.VERSION:
+      raise TProtocolException(TProtocolException.BAD_VERSION,
+          'Bad version: %d (expect %d)' % (version, self.VERSION))
+    seqid = self.__readVarint()
+    name = self.__readString()
+    return (name, type, seqid)
+
+  def readMessageEnd(self):
+    assert self.state == CLEAR
+    assert len(self.__structs) == 0
+
+  def readStructBegin(self):
+    assert self.state in (CLEAR, CONTAINER_READ, VALUE_READ), self.state
+    self.__structs.append((self.state, self.__last_fid))
+    self.state = FIELD_READ
+    self.__last_fid = 0
+
+  def readStructEnd(self):
+    assert self.state == FIELD_READ
+    self.state, self.__last_fid = self.__structs.pop()
+
+  def readCollectionBegin(self):
+    assert self.state in (VALUE_READ, CONTAINER_READ), self.state
+    size_type = self.__readUByte()
+    size = size_type >> 4
+    type = self.__getTType(size_type)
+    if size == 15:
+      size = self.__readSize()
+    self.__containers.append(self.state)
+    self.state = CONTAINER_READ
+    return type, size
+  readSetBegin = readCollectionBegin
+  readListBegin = readCollectionBegin
+
+  def readMapBegin(self):
+    assert self.state in (VALUE_READ, CONTAINER_READ), self.state
+    size = self.__readSize()
+    types = 0
+    if size > 0:
+      types = self.__readUByte()
+    vtype = self.__getTType(types)
+    ktype = self.__getTType(types >> 4)
+    self.__containers.append(self.state)
+    self.state = CONTAINER_READ
+    return (ktype, vtype, size)
+
+  def readCollectionEnd(self):
+    assert self.state == CONTAINER_READ, self.state
+    self.state = self.__containers.pop()
+  readSetEnd = readCollectionEnd
+  readListEnd = readCollectionEnd
+  readMapEnd = readCollectionEnd
+
+  def readBool(self):
+    if self.state == BOOL_READ:
+      return self.__bool_value == CompactType.TRUE
+    elif self.state == CONTAINER_READ:
+      return self.__readByte() == CompactType.TRUE
+    else:
+      raise AssertionError("Invalid state in compact protocol: %d" %
+                           self.state)
+
+  readByte = reader(__readByte)
+  __readI16 = __readZigZag
+  readI16 = reader(__readZigZag)
+  readI32 = reader(__readZigZag)
+  readI64 = reader(__readZigZag)
+
+  @reader
+  def readDouble(self):
+    buff = self.trans.readAll(8)
+    val, = unpack('!d', buff)
+    return val
+
+  def __readString(self):
+    len = self.__readSize()
+    return self.trans.readAll(len)
+  readString = reader(__readString)
+
+  def __getTType(self, byte):
+    return TTYPES[byte & 0x0f]
+
+
+class TCompactProtocolFactory:
+  def __init__(self):
+    pass
+
+  def getProtocol(self, trans):
+    return TCompactProtocol(trans)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TJSONProtocol.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TJSONProtocol.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TJSONProtocol.py
new file mode 100644
index 0000000..6f51523
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/thrift/protocol/TJSONProtocol.py
@@ -0,0 +1,552 @@
+#
+# 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.
+#
+
+import base64
+import json
+import math
+
+from lib.thrift.protocol.TProtocol import TType, TProtocolBase, TProtocolException
+
+
+__all__ = ['TJSONProtocol',
+           'TJSONProtocolFactory',
+           'TSimpleJSONProtocol',
+           'TSimpleJSONProtocolFactory']
+
+VERSION = 1
+
+COMMA = ','
+COLON = ':'
+LBRACE = '{'
+RBRACE = '}'
+LBRACKET = '['
+RBRACKET = ']'
+QUOTE = '"'
+BACKSLASH = '\\'
+ZERO = '0'
+
+ESCSEQ = '\\u00'
+ESCAPE_CHAR = '"\\bfnrt'
+ESCAPE_CHAR_VALS = ['"', '\\', '\b', '\f', '\n', '\r', '\t']
+NUMERIC_CHAR = '+-.0123456789Ee'
+
+CTYPES = {TType.BOOL:       'tf',
+          TType.BYTE:       'i8',
+          TType.I16:        'i16',
+          TType.I32:        'i32',
+          TType.I64:        'i64',
+          TType.DOUBLE:     'dbl',
+          TType.STRING:     'str',
+          TType.STRUCT:     'rec',
+          TType.LIST:       'lst',
+          TType.SET:        'set',
+          TType.MAP:        'map'}
+
+JTYPES = {}
+for key in CTYPES.keys():
+  JTYPES[CTYPES[key]] = key
+
+
+class JSONBaseContext(object):
+
+  def __init__(self, protocol):
+    self.protocol = protocol
+    self.first = True
+
+  def doIO(self, function):
+    pass
+  
+  def write(self):
+    pass
+
+  def read(self):
+    pass
+
+  def escapeNum(self):
+    return False
+
+  def __str__(self):
+    return self.__class__.__name__
+
+
+class JSONListContext(JSONBaseContext):
+    
+  def doIO(self, function):
+    if self.first is True:
+      self.first = False
+    else:
+      function(COMMA)
+
+  def write(self):
+    self.doIO(self.protocol.trans.write)
+
+  def read(self):
+    self.doIO(self.protocol.readJSONSyntaxChar)
+
+
+class JSONPairContext(JSONBaseContext):
+  
+  def __init__(self, protocol):
+    super(JSONPairContext, self).__init__(protocol)
+    self.colon = True
+
+  def doIO(self, function):
+    if self.first:
+      self.first = False
+      self.colon = True
+    else:
+      function(COLON if self.colon else COMMA)
+      self.colon = not self.colon
+
+  def write(self):
+    self.doIO(self.protocol.trans.write)
+
+  def read(self):
+    self.doIO(self.protocol.readJSONSyntaxChar)
+
+  def escapeNum(self):
+    return self.colon
+
+  def __str__(self):
+    return '%s, colon=%s' % (self.__class__.__name__, self.colon)
+
+
+class LookaheadReader():
+  hasData = False
+  data = ''
+
+  def __init__(self, protocol):
+    self.protocol = protocol
+
+  def read(self):
+    if self.hasData is True:
+      self.hasData = False
+    else:
+      self.data = self.protocol.trans.read(1)
+    return self.data
+
+  def peek(self):
+    if self.hasData is False:
+      self.data = self.protocol.trans.read(1)
+    self.hasData = True
+    return self.data
+
+class TJSONProtocolBase(TProtocolBase):
+
+  def __init__(self, trans):
+    TProtocolBase.__init__(self, trans)
+    self.resetWriteContext()
+    self.resetReadContext()
+
+  def resetWriteContext(self):
+    self.context = JSONBaseContext(self)
+    self.contextStack = [self.context]
+
+  def resetReadContext(self):
+    self.resetWriteContext()
+    self.reader = LookaheadReader(self)
+
+  def pushContext(self, ctx):
+    self.contextStack.append(ctx)
+    self.context = ctx
+
+  def popContext(self):
+    self.contextStack.pop()
+    if self.contextStack:
+      self.context = self.contextStack[-1]
+    else:
+      self.context = JSONBaseContext(self)
+
+  def writeJSONString(self, string):
+    self.context.write()
+    self.trans.write(json.dumps(string))
+
+  def writeJSONNumber(self, number):
+    self.context.write()
+    jsNumber = str(number)
+    if self.context.escapeNum():
+      jsNumber = "%s%s%s" % (QUOTE, jsNumber,  QUOTE)
+    self.trans.write(jsNumber)
+
+  def writeJSONBase64(self, binary):
+    self.context.write()
+    self.trans.write(QUOTE)
+    self.trans.write(base64.b64encode(binary))
+    self.trans.write(QUOTE)
+
+  def writeJSONObjectStart(self):
+    self.context.write()
+    self.trans.write(LBRACE)
+    self.pushContext(JSONPairContext(self))
+
+  def writeJSONObjectEnd(self):
+    self.popContext()
+    self.trans.write(RBRACE)
+
+  def writeJSONArrayStart(self):
+    self.context.write()
+    self.trans.write(LBRACKET)
+    self.pushContext(JSONListContext(self))
+
+  def writeJSONArrayEnd(self):
+    self.popContext()
+    self.trans.write(RBRACKET)
+
+  def readJSONSyntaxChar(self, character):
+    current = self.reader.read()
+    if character != current:
+      raise TProtocolException(TProtocolException.INVALID_DATA,
+                               "Unexpected character: %s" % current)
+
+  def readJSONString(self, skipContext):
+    string = []
+    if skipContext is False:
+      self.context.read()
+    self.readJSONSyntaxChar(QUOTE)
+    while True:
+      character = self.reader.read()
+      if character == QUOTE:
+        break
+      if character == ESCSEQ[0]:
+        character = self.reader.read()
+        if character == ESCSEQ[1]:
+          self.readJSONSyntaxChar(ZERO)
+          self.readJSONSyntaxChar(ZERO)
+          character = json.JSONDecoder().decode('"\u00%s"' % self.trans.read(2))
+        else:
+          off = ESCAPE_CHAR.find(character)
+          if off == -1:
+            raise TProtocolException(TProtocolException.INVALID_DATA,
+                                     "Expected control char")
+          character = ESCAPE_CHAR_VALS[off]
+      string.append(character)
+    return ''.join(string)
+
+  def isJSONNumeric(self, character):
+    return (True if NUMERIC_CHAR.find(character) != - 1 else False)
+
+  def readJSONQuotes(self):
+    if (self.context.escapeNum()):
+      self.readJSONSyntaxChar(QUOTE)
+
+  def readJSONNumericChars(self):
+    numeric = []
+    while True:
+      character = self.reader.peek()
+      if self.isJSONNumeric(character) is False:
+        break
+      numeric.append(self.reader.read())
+    return ''.join(numeric)
+
+  def readJSONInteger(self):
+    self.context.read()
+    self.readJSONQuotes()
+    numeric = self.readJSONNumericChars()
+    self.readJSONQuotes()
+    try:
+      return int(numeric)
+    except ValueError:
+      raise TProtocolException(TProtocolException.INVALID_DATA,
+                               "Bad data encounted in numeric data")
+
+  def readJSONDouble(self):
+    self.context.read()
+    if self.reader.peek() == QUOTE:
+      string  = self.readJSONString(True)
+      try:
+        double = float(string)
+        if (self.context.escapeNum is False and
+            not math.isinf(double) and
+            not math.isnan(double)):
+          raise TProtocolException(TProtocolException.INVALID_DATA,
+                                   "Numeric data unexpectedly quoted")
+        return double
+      except ValueError:
+        raise TProtocolException(TProtocolException.INVALID_DATA,
+                                 "Bad data encounted in numeric data")
+    else:
+      if self.context.escapeNum() is True:
+        self.readJSONSyntaxChar(QUOTE)
+      try:
+        return float(self.readJSONNumericChars())
+      except ValueError:
+        raise TProtocolException(TProtocolException.INVALID_DATA,
+                                 "Bad data encounted in numeric data")
+
+  def readJSONBase64(self):
+    string = self.readJSONString(False)
+    return base64.b64decode(string)
+
+  def readJSONObjectStart(self):
+    self.context.read()
+    self.readJSONSyntaxChar(LBRACE)
+    self.pushContext(JSONPairContext(self))
+
+  def readJSONObjectEnd(self):
+    self.readJSONSyntaxChar(RBRACE)
+    self.popContext()
+
+  def readJSONArrayStart(self):
+    self.context.read()
+    self.readJSONSyntaxChar(LBRACKET)
+    self.pushContext(JSONListContext(self))
+
+  def readJSONArrayEnd(self):
+    self.readJSONSyntaxChar(RBRACKET)
+    self.popContext()
+
+
+class TJSONProtocol(TJSONProtocolBase):
+
+  def readMessageBegin(self):
+    self.resetReadContext()
+    self.readJSONArrayStart()
+    if self.readJSONInteger() != VERSION:
+      raise TProtocolException(TProtocolException.BAD_VERSION,
+                               "Message contained bad version.")
+    name = self.readJSONString(False)
+    typen = self.readJSONInteger()
+    seqid = self.readJSONInteger()
+    return (name, typen, seqid)
+
+  def readMessageEnd(self):
+    self.readJSONArrayEnd()
+
+  def readStructBegin(self):
+    self.readJSONObjectStart()
+
+  def readStructEnd(self):
+    self.readJSONObjectEnd()
+
+  def readFieldBegin(self):
+    character = self.reader.peek()
+    ttype = 0
+    id = 0
+    if character == RBRACE:
+      ttype = TType.STOP
+    else:
+      id = self.readJSONInteger()
+      self.readJSONObjectStart()
+      ttype = JTYPES[self.readJSONString(False)]
+    return (None, ttype, id)
+
+  def readFieldEnd(self):
+    self.readJSONObjectEnd()
+
+  def readMapBegin(self):
+    self.readJSONArrayStart()
+    keyType = JTYPES[self.readJSONString(False)]
+    valueType = JTYPES[self.readJSONString(False)]
+    size = self.readJSONInteger()
+    self.readJSONObjectStart()
+    return (keyType, valueType, size)
+
+  def readMapEnd(self):
+    self.readJSONObjectEnd()
+    self.readJSONArrayEnd()
+
+  def readCollectionBegin(self):
+    self.readJSONArrayStart()
+    elemType = JTYPES[self.readJSONString(False)]
+    size = self.readJSONInteger()
+    return (elemType, size)
+  readListBegin = readCollectionBegin
+  readSetBegin = readCollectionBegin
+
+  def readCollectionEnd(self):
+    self.readJSONArrayEnd()
+  readSetEnd = readCollectionEnd
+  readListEnd = readCollectionEnd
+
+  def readBool(self):
+    return (False if self.readJSONInteger() == 0 else True)
+
+  def readNumber(self):
+    return self.readJSONInteger()
+  readByte = readNumber
+  readI16 = readNumber
+  readI32 = readNumber
+  readI64 = readNumber
+
+  def readDouble(self):
+    return self.readJSONDouble()
+
+  def readString(self):
+    return self.readJSONString(False)
+
+  def readBinary(self):
+    return self.readJSONBase64()
+
+  def writeMessageBegin(self, name, request_type, seqid):
+    self.resetWriteContext()
+    self.writeJSONArrayStart()
+    self.writeJSONNumber(VERSION)
+    self.writeJSONString(name)
+    self.writeJSONNumber(request_type)
+    self.writeJSONNumber(seqid)
+
+  def writeMessageEnd(self):
+    self.writeJSONArrayEnd()
+
+  def writeStructBegin(self, name):
+    self.writeJSONObjectStart()
+
+  def writeStructEnd(self):
+    self.writeJSONObjectEnd()
+
+  def writeFieldBegin(self, name, ttype, id):
+    self.writeJSONNumber(id)
+    self.writeJSONObjectStart()
+    self.writeJSONString(CTYPES[ttype])
+
+  def writeFieldEnd(self):
+    self.writeJSONObjectEnd()
+
+  def writeFieldStop(self):
+    pass
+
+  def writeMapBegin(self, ktype, vtype, size):
+    self.writeJSONArrayStart()
+    self.writeJSONString(CTYPES[ktype])
+    self.writeJSONString(CTYPES[vtype])
+    self.writeJSONNumber(size)
+    self.writeJSONObjectStart()
+
+  def writeMapEnd(self):
+    self.writeJSONObjectEnd()
+    self.writeJSONArrayEnd()
+    
+  def writeListBegin(self, etype, size):
+    self.writeJSONArrayStart()
+    self.writeJSONString(CTYPES[etype])
+    self.writeJSONNumber(size)
+    
+  def writeListEnd(self):
+    self.writeJSONArrayEnd()
+
+  def writeSetBegin(self, etype, size):
+    self.writeJSONArrayStart()
+    self.writeJSONString(CTYPES[etype])
+    self.writeJSONNumber(size)
+    
+  def writeSetEnd(self):
+    self.writeJSONArrayEnd()
+
+  def writeBool(self, boolean):
+    self.writeJSONNumber(1 if boolean is True else 0)
+
+  def writeInteger(self, integer):
+    self.writeJSONNumber(integer)
+  writeByte = writeInteger
+  writeI16 = writeInteger
+  writeI32 = writeInteger
+  writeI64 = writeInteger
+
+  def writeDouble(self, dbl):
+    self.writeJSONNumber(dbl)
+
+  def writeString(self, string):
+    self.writeJSONString(string)
+    
+  def writeBinary(self, binary):
+    self.writeJSONBase64(binary)
+
+
+class TJSONProtocolFactory:
+
+  def getProtocol(self, trans):
+    return TJSONProtocol(trans)
+
+
+class TSimpleJSONProtocol(TJSONProtocolBase):
+    """Simple, readable, write-only JSON protocol.
+    
+    Useful for interacting with scripting languages.
+    """
+
+    def readMessageBegin(self):
+        raise NotImplementedError()
+    
+    def readMessageEnd(self):
+        raise NotImplementedError()
+    
+    def readStructBegin(self):
+        raise NotImplementedError()
+    
+    def readStructEnd(self):
+        raise NotImplementedError()
+    
+    def writeMessageBegin(self, name, request_type, seqid):
+        self.resetWriteContext()
+    
+    def writeMessageEnd(self):
+        pass
+    
+    def writeStructBegin(self, name):
+        self.writeJSONObjectStart()
+    
+    def writeStructEnd(self):
+        self.writeJSONObjectEnd()
+      
+    def writeFieldBegin(self, name, ttype, fid):
+        self.writeJSONString(name)
+    
+    def writeFieldEnd(self):
+        pass
+    
+    def writeMapBegin(self, ktype, vtype, size):
+        self.writeJSONObjectStart()
+    
+    def writeMapEnd(self):
+        self.writeJSONObjectEnd()
+    
+    def _writeCollectionBegin(self, etype, size):
+        self.writeJSONArrayStart()
+    
+    def _writeCollectionEnd(self):
+        self.writeJSONArrayEnd()
+    writeListBegin = _writeCollectionBegin
+    writeListEnd = _writeCollectionEnd
+    writeSetBegin = _writeCollectionBegin
+    writeSetEnd = _writeCollectionEnd
+
+    def writeInteger(self, integer):
+        self.writeJSONNumber(integer)
+    writeByte = writeInteger
+    writeI16 = writeInteger
+    writeI32 = writeInteger
+    writeI64 = writeInteger
+    
+    def writeBool(self, boolean):
+        self.writeJSONNumber(1 if boolean is True else 0)
+
+    def writeDouble(self, dbl):
+        self.writeJSONNumber(dbl)
+    
+    def writeString(self, string):
+        self.writeJSONString(string)
+      
+    def writeBinary(self, binary):
+        self.writeJSONBase64(binary)
+
+
+class TSimpleJSONProtocolFactory(object):
+
+    def getProtocol(self, trans):
+        return TSimpleJSONProtocol(trans)


[24/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/ttypes.py
new file mode 100644
index 0000000..779a25a
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/ttypes.py
@@ -0,0 +1,1035 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.scheduling.ttypes
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.status.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ExperimentType:
+  SINGLE_APPLICATION = 0
+  WORKFLOW = 1
+
+  _VALUES_TO_NAMES = {
+    0: "SINGLE_APPLICATION",
+    1: "WORKFLOW",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SINGLE_APPLICATION": 0,
+    "WORKFLOW": 1,
+  }
+
+class ExperimentSearchFields:
+  EXPERIMENT_NAME = 0
+  EXPERIMENT_DESC = 1
+  APPLICATION_ID = 2
+  FROM_DATE = 3
+  TO_DATE = 4
+  STATUS = 5
+  PROJECT_ID = 6
+
+  _VALUES_TO_NAMES = {
+    0: "EXPERIMENT_NAME",
+    1: "EXPERIMENT_DESC",
+    2: "APPLICATION_ID",
+    3: "FROM_DATE",
+    4: "TO_DATE",
+    5: "STATUS",
+    6: "PROJECT_ID",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EXPERIMENT_NAME": 0,
+    "EXPERIMENT_DESC": 1,
+    "APPLICATION_ID": 2,
+    "FROM_DATE": 3,
+    "TO_DATE": 4,
+    "STATUS": 5,
+    "PROJECT_ID": 6,
+  }
+
+
+class UserConfigurationDataModel:
+  """
+  A structure holding the experiment configuration.
+
+
+
+  Attributes:
+   - airavataAutoSchedule
+   - overrideManualScheduledParams
+   - shareExperimentPublicly
+   - computationalResourceScheduling
+   - throttleResources
+   - userDN
+   - generateCert
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'airavataAutoSchedule', None, False, ), # 1
+    (2, TType.BOOL, 'overrideManualScheduledParams', None, False, ), # 2
+    (3, TType.BOOL, 'shareExperimentPublicly', None, False, ), # 3
+    (4, TType.STRUCT, 'computationalResourceScheduling', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 4
+    (5, TType.BOOL, 'throttleResources', None, False, ), # 5
+    (6, TType.STRING, 'userDN', None, None, ), # 6
+    (7, TType.BOOL, 'generateCert', None, False, ), # 7
+  )
+
+  def __init__(self, airavataAutoSchedule=thrift_spec[1][4], overrideManualScheduledParams=thrift_spec[2][4], shareExperimentPublicly=thrift_spec[3][4], computationalResourceScheduling=None, throttleResources=thrift_spec[5][4], userDN=None, generateCert=thrift_spec[7][4],):
+    self.airavataAutoSchedule = airavataAutoSchedule
+    self.overrideManualScheduledParams = overrideManualScheduledParams
+    self.shareExperimentPublicly = shareExperimentPublicly
+    self.computationalResourceScheduling = computationalResourceScheduling
+    self.throttleResources = throttleResources
+    self.userDN = userDN
+    self.generateCert = generateCert
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.airavataAutoSchedule = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.BOOL:
+          self.overrideManualScheduledParams = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.BOOL:
+          self.shareExperimentPublicly = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.computationalResourceScheduling = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.computationalResourceScheduling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.BOOL:
+          self.throttleResources = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.userDN = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.BOOL:
+          self.generateCert = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UserConfigurationDataModel')
+    if self.airavataAutoSchedule is not None:
+      oprot.writeFieldBegin('airavataAutoSchedule', TType.BOOL, 1)
+      oprot.writeBool(self.airavataAutoSchedule)
+      oprot.writeFieldEnd()
+    if self.overrideManualScheduledParams is not None:
+      oprot.writeFieldBegin('overrideManualScheduledParams', TType.BOOL, 2)
+      oprot.writeBool(self.overrideManualScheduledParams)
+      oprot.writeFieldEnd()
+    if self.shareExperimentPublicly is not None:
+      oprot.writeFieldBegin('shareExperimentPublicly', TType.BOOL, 3)
+      oprot.writeBool(self.shareExperimentPublicly)
+      oprot.writeFieldEnd()
+    if self.computationalResourceScheduling is not None:
+      oprot.writeFieldBegin('computationalResourceScheduling', TType.STRUCT, 4)
+      self.computationalResourceScheduling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.throttleResources is not None:
+      oprot.writeFieldBegin('throttleResources', TType.BOOL, 5)
+      oprot.writeBool(self.throttleResources)
+      oprot.writeFieldEnd()
+    if self.userDN is not None:
+      oprot.writeFieldBegin('userDN', TType.STRING, 6)
+      oprot.writeString(self.userDN)
+      oprot.writeFieldEnd()
+    if self.generateCert is not None:
+      oprot.writeFieldBegin('generateCert', TType.BOOL, 7)
+      oprot.writeBool(self.generateCert)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataAutoSchedule is None:
+      raise TProtocol.TProtocolException(message='Required field airavataAutoSchedule is unset!')
+    if self.overrideManualScheduledParams is None:
+      raise TProtocol.TProtocolException(message='Required field overrideManualScheduledParams is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataAutoSchedule)
+    value = (value * 31) ^ hash(self.overrideManualScheduledParams)
+    value = (value * 31) ^ hash(self.shareExperimentPublicly)
+    value = (value * 31) ^ hash(self.computationalResourceScheduling)
+    value = (value * 31) ^ hash(self.throttleResources)
+    value = (value * 31) ^ hash(self.userDN)
+    value = (value * 31) ^ hash(self.generateCert)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ExperimentModel:
+  """
+  A structure holding the experiment metadata and its child models.
+
+  userName:
+    The user name of the targeted gateway end user on whose behalf the experiment is being created.
+      the associated gateway identity can only be inferred from the security hand-shake so as to avoid
+      authorized Airavata Clients mimicking an unauthorized request. If a gateway is not registered with
+      Airavata, an authorization exception is thrown.
+
+  experimentName:
+    The name of the experiment as defined by the user. The name need not be unique as uniqueness is enforced
+       by the generated experiment id.
+
+  experimentDescription:
+     The verbose description of the experiment. This is an optional parameter.
+
+  Attributes:
+   - experimentId
+   - projectId
+   - gatewayId
+   - experimentType
+   - userName
+   - experimentName
+   - creationTime
+   - description
+   - executionId
+   - gatewayExecutionId
+   - enableEmailNotification
+   - emailAddresses
+   - userConfigurationData
+   - experimentInputs
+   - experimentOutputs
+   - experimentStatus
+   - errors
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'experimentId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'projectId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+    (4, TType.I32, 'experimentType', None,     0, ), # 4
+    (5, TType.STRING, 'userName', None, None, ), # 5
+    (6, TType.STRING, 'experimentName', None, None, ), # 6
+    (7, TType.I64, 'creationTime', None, None, ), # 7
+    (8, TType.STRING, 'description', None, None, ), # 8
+    (9, TType.STRING, 'executionId', None, None, ), # 9
+    (10, TType.STRING, 'gatewayExecutionId', None, None, ), # 10
+    (11, TType.BOOL, 'enableEmailNotification', None, None, ), # 11
+    (12, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 12
+    (13, TType.STRUCT, 'userConfigurationData', (UserConfigurationDataModel, UserConfigurationDataModel.thrift_spec), None, ), # 13
+    (14, TType.LIST, 'experimentInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 14
+    (15, TType.LIST, 'experimentOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 15
+    (16, TType.STRUCT, 'experimentStatus', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 16
+    (17, TType.LIST, 'errors', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 17
+  )
+
+  def __init__(self, experimentId=thrift_spec[1][4], projectId=None, gatewayId=None, experimentType=thrift_spec[4][4], userName=None, experimentName=None, creationTime=None, description=None, executionId=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, userConfigurationData=None, experimentInputs=None, experimentOutputs=None, experimentStatus=None, errors=None,):
+    self.experimentId = experimentId
+    self.projectId = projectId
+    self.gatewayId = gatewayId
+    self.experimentType = experimentType
+    self.userName = userName
+    self.experimentName = experimentName
+    self.creationTime = creationTime
+    self.description = description
+    self.executionId = executionId
+    self.gatewayExecutionId = gatewayExecutionId
+    self.enableEmailNotification = enableEmailNotification
+    self.emailAddresses = emailAddresses
+    self.userConfigurationData = userConfigurationData
+    self.experimentInputs = experimentInputs
+    self.experimentOutputs = experimentOutputs
+    self.experimentStatus = experimentStatus
+    self.errors = errors
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.projectId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.experimentType = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.experimentName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.description = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.executionId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.gatewayExecutionId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.BOOL:
+          self.enableEmailNotification = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.emailAddresses = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString();
+            self.emailAddresses.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.STRUCT:
+          self.userConfigurationData = UserConfigurationDataModel()
+          self.userConfigurationData.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.LIST:
+          self.experimentInputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem11.read(iprot)
+            self.experimentInputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 15:
+        if ftype == TType.LIST:
+          self.experimentOutputs = []
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem17.read(iprot)
+            self.experimentOutputs.append(_elem17)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 16:
+        if ftype == TType.STRUCT:
+          self.experimentStatus = apache.airavata.model.status.ttypes.ExperimentStatus()
+          self.experimentStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 17:
+        if ftype == TType.LIST:
+          self.errors = []
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = apache.airavata.model.commons.ttypes.ErrorModel()
+            _elem23.read(iprot)
+            self.errors.append(_elem23)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentModel')
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 1)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.projectId is not None:
+      oprot.writeFieldBegin('projectId', TType.STRING, 2)
+      oprot.writeString(self.projectId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.experimentType is not None:
+      oprot.writeFieldBegin('experimentType', TType.I32, 4)
+      oprot.writeI32(self.experimentType)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 5)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.experimentName is not None:
+      oprot.writeFieldBegin('experimentName', TType.STRING, 6)
+      oprot.writeString(self.experimentName)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 7)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 8)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.executionId is not None:
+      oprot.writeFieldBegin('executionId', TType.STRING, 9)
+      oprot.writeString(self.executionId)
+      oprot.writeFieldEnd()
+    if self.gatewayExecutionId is not None:
+      oprot.writeFieldBegin('gatewayExecutionId', TType.STRING, 10)
+      oprot.writeString(self.gatewayExecutionId)
+      oprot.writeFieldEnd()
+    if self.enableEmailNotification is not None:
+      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 11)
+      oprot.writeBool(self.enableEmailNotification)
+      oprot.writeFieldEnd()
+    if self.emailAddresses is not None:
+      oprot.writeFieldBegin('emailAddresses', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
+      for iter24 in self.emailAddresses:
+        oprot.writeString(iter24)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.userConfigurationData is not None:
+      oprot.writeFieldBegin('userConfigurationData', TType.STRUCT, 13)
+      self.userConfigurationData.write(oprot)
+      oprot.writeFieldEnd()
+    if self.experimentInputs is not None:
+      oprot.writeFieldBegin('experimentInputs', TType.LIST, 14)
+      oprot.writeListBegin(TType.STRUCT, len(self.experimentInputs))
+      for iter25 in self.experimentInputs:
+        iter25.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.experimentOutputs is not None:
+      oprot.writeFieldBegin('experimentOutputs', TType.LIST, 15)
+      oprot.writeListBegin(TType.STRUCT, len(self.experimentOutputs))
+      for iter26 in self.experimentOutputs:
+        iter26.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.experimentStatus is not None:
+      oprot.writeFieldBegin('experimentStatus', TType.STRUCT, 16)
+      self.experimentStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.errors is not None:
+      oprot.writeFieldBegin('errors', TType.LIST, 17)
+      oprot.writeListBegin(TType.STRUCT, len(self.errors))
+      for iter27 in self.errors:
+        iter27.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.projectId is None:
+      raise TProtocol.TProtocolException(message='Required field projectId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.experimentType is None:
+      raise TProtocol.TProtocolException(message='Required field experimentType is unset!')
+    if self.userName is None:
+      raise TProtocol.TProtocolException(message='Required field userName is unset!')
+    if self.experimentName is None:
+      raise TProtocol.TProtocolException(message='Required field experimentName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.projectId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.experimentType)
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.experimentName)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.executionId)
+    value = (value * 31) ^ hash(self.gatewayExecutionId)
+    value = (value * 31) ^ hash(self.enableEmailNotification)
+    value = (value * 31) ^ hash(self.emailAddresses)
+    value = (value * 31) ^ hash(self.userConfigurationData)
+    value = (value * 31) ^ hash(self.experimentInputs)
+    value = (value * 31) ^ hash(self.experimentOutputs)
+    value = (value * 31) ^ hash(self.experimentStatus)
+    value = (value * 31) ^ hash(self.errors)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ExperimentSummaryModel:
+  """
+  Attributes:
+   - experimentId
+   - projectId
+   - gatewayId
+   - creationTime
+   - userName
+   - name
+   - description
+   - executionId
+   - resourceHostId
+   - experimentStatus
+   - statusUpdateTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'experimentId', None, None, ), # 1
+    (2, TType.STRING, 'projectId', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+    (4, TType.I64, 'creationTime', None, None, ), # 4
+    (5, TType.STRING, 'userName', None, None, ), # 5
+    (6, TType.STRING, 'name', None, None, ), # 6
+    (7, TType.STRING, 'description', None, None, ), # 7
+    (8, TType.STRING, 'executionId', None, None, ), # 8
+    (9, TType.STRING, 'resourceHostId', None, None, ), # 9
+    (10, TType.STRING, 'experimentStatus', None, None, ), # 10
+    None, # 11
+    (12, TType.I64, 'statusUpdateTime', None, None, ), # 12
+  )
+
+  def __init__(self, experimentId=None, projectId=None, gatewayId=None, creationTime=None, userName=None, name=None, description=None, executionId=None, resourceHostId=None, experimentStatus=None, statusUpdateTime=None,):
+    self.experimentId = experimentId
+    self.projectId = projectId
+    self.gatewayId = gatewayId
+    self.creationTime = creationTime
+    self.userName = userName
+    self.name = name
+    self.description = description
+    self.executionId = executionId
+    self.resourceHostId = resourceHostId
+    self.experimentStatus = experimentStatus
+    self.statusUpdateTime = statusUpdateTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.experimentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.projectId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.name = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.description = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.executionId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.resourceHostId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.experimentStatus = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.I64:
+          self.statusUpdateTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentSummaryModel')
+    if self.experimentId is not None:
+      oprot.writeFieldBegin('experimentId', TType.STRING, 1)
+      oprot.writeString(self.experimentId)
+      oprot.writeFieldEnd()
+    if self.projectId is not None:
+      oprot.writeFieldBegin('projectId', TType.STRING, 2)
+      oprot.writeString(self.projectId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 4)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 5)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 6)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 7)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.executionId is not None:
+      oprot.writeFieldBegin('executionId', TType.STRING, 8)
+      oprot.writeString(self.executionId)
+      oprot.writeFieldEnd()
+    if self.resourceHostId is not None:
+      oprot.writeFieldBegin('resourceHostId', TType.STRING, 9)
+      oprot.writeString(self.resourceHostId)
+      oprot.writeFieldEnd()
+    if self.experimentStatus is not None:
+      oprot.writeFieldBegin('experimentStatus', TType.STRING, 10)
+      oprot.writeString(self.experimentStatus)
+      oprot.writeFieldEnd()
+    if self.statusUpdateTime is not None:
+      oprot.writeFieldBegin('statusUpdateTime', TType.I64, 12)
+      oprot.writeI64(self.statusUpdateTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.experimentId is None:
+      raise TProtocol.TProtocolException(message='Required field experimentId is unset!')
+    if self.projectId is None:
+      raise TProtocol.TProtocolException(message='Required field projectId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.userName is None:
+      raise TProtocol.TProtocolException(message='Required field userName is unset!')
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.experimentId)
+    value = (value * 31) ^ hash(self.projectId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.executionId)
+    value = (value * 31) ^ hash(self.resourceHostId)
+    value = (value * 31) ^ hash(self.experimentStatus)
+    value = (value * 31) ^ hash(self.statusUpdateTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ExperimentStatistics:
+  """
+  Attributes:
+   - allExperimentCount
+   - completedExperimentCount
+   - cancelledExperimentCount
+   - failedExperimentCount
+   - createdExperimentCount
+   - runningExperimentCount
+   - allExperiments
+   - completedExperiments
+   - failedExperiments
+   - cancelledExperiments
+   - createdExperiments
+   - runningExperiments
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'allExperimentCount', None, None, ), # 1
+    (2, TType.I32, 'completedExperimentCount', None, None, ), # 2
+    (3, TType.I32, 'cancelledExperimentCount', None, None, ), # 3
+    (4, TType.I32, 'failedExperimentCount', None, None, ), # 4
+    (5, TType.I32, 'createdExperimentCount', None, None, ), # 5
+    (6, TType.I32, 'runningExperimentCount', None, None, ), # 6
+    (7, TType.LIST, 'allExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 7
+    (8, TType.LIST, 'completedExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 8
+    (9, TType.LIST, 'failedExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 9
+    (10, TType.LIST, 'cancelledExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 10
+    (11, TType.LIST, 'createdExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 11
+    (12, TType.LIST, 'runningExperiments', (TType.STRUCT,(ExperimentSummaryModel, ExperimentSummaryModel.thrift_spec)), None, ), # 12
+  )
+
+  def __init__(self, allExperimentCount=None, completedExperimentCount=None, cancelledExperimentCount=None, failedExperimentCount=None, createdExperimentCount=None, runningExperimentCount=None, allExperiments=None, completedExperiments=None, failedExperiments=None, cancelledExperiments=None, createdExperiments=None, runningExperiments=None,):
+    self.allExperimentCount = allExperimentCount
+    self.completedExperimentCount = completedExperimentCount
+    self.cancelledExperimentCount = cancelledExperimentCount
+    self.failedExperimentCount = failedExperimentCount
+    self.createdExperimentCount = createdExperimentCount
+    self.runningExperimentCount = runningExperimentCount
+    self.allExperiments = allExperiments
+    self.completedExperiments = completedExperiments
+    self.failedExperiments = failedExperiments
+    self.cancelledExperiments = cancelledExperiments
+    self.createdExperiments = createdExperiments
+    self.runningExperiments = runningExperiments
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.allExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.completedExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.cancelledExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.failedExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.createdExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.runningExperimentCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.allExperiments = []
+          (_etype31, _size28) = iprot.readListBegin()
+          for _i32 in xrange(_size28):
+            _elem33 = ExperimentSummaryModel()
+            _elem33.read(iprot)
+            self.allExperiments.append(_elem33)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.LIST:
+          self.completedExperiments = []
+          (_etype37, _size34) = iprot.readListBegin()
+          for _i38 in xrange(_size34):
+            _elem39 = ExperimentSummaryModel()
+            _elem39.read(iprot)
+            self.completedExperiments.append(_elem39)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.failedExperiments = []
+          (_etype43, _size40) = iprot.readListBegin()
+          for _i44 in xrange(_size40):
+            _elem45 = ExperimentSummaryModel()
+            _elem45.read(iprot)
+            self.failedExperiments.append(_elem45)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.cancelledExperiments = []
+          (_etype49, _size46) = iprot.readListBegin()
+          for _i50 in xrange(_size46):
+            _elem51 = ExperimentSummaryModel()
+            _elem51.read(iprot)
+            self.cancelledExperiments.append(_elem51)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.LIST:
+          self.createdExperiments = []
+          (_etype55, _size52) = iprot.readListBegin()
+          for _i56 in xrange(_size52):
+            _elem57 = ExperimentSummaryModel()
+            _elem57.read(iprot)
+            self.createdExperiments.append(_elem57)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.runningExperiments = []
+          (_etype61, _size58) = iprot.readListBegin()
+          for _i62 in xrange(_size58):
+            _elem63 = ExperimentSummaryModel()
+            _elem63.read(iprot)
+            self.runningExperiments.append(_elem63)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentStatistics')
+    if self.allExperimentCount is not None:
+      oprot.writeFieldBegin('allExperimentCount', TType.I32, 1)
+      oprot.writeI32(self.allExperimentCount)
+      oprot.writeFieldEnd()
+    if self.completedExperimentCount is not None:
+      oprot.writeFieldBegin('completedExperimentCount', TType.I32, 2)
+      oprot.writeI32(self.completedExperimentCount)
+      oprot.writeFieldEnd()
+    if self.cancelledExperimentCount is not None:
+      oprot.writeFieldBegin('cancelledExperimentCount', TType.I32, 3)
+      oprot.writeI32(self.cancelledExperimentCount)
+      oprot.writeFieldEnd()
+    if self.failedExperimentCount is not None:
+      oprot.writeFieldBegin('failedExperimentCount', TType.I32, 4)
+      oprot.writeI32(self.failedExperimentCount)
+      oprot.writeFieldEnd()
+    if self.createdExperimentCount is not None:
+      oprot.writeFieldBegin('createdExperimentCount', TType.I32, 5)
+      oprot.writeI32(self.createdExperimentCount)
+      oprot.writeFieldEnd()
+    if self.runningExperimentCount is not None:
+      oprot.writeFieldBegin('runningExperimentCount', TType.I32, 6)
+      oprot.writeI32(self.runningExperimentCount)
+      oprot.writeFieldEnd()
+    if self.allExperiments is not None:
+      oprot.writeFieldBegin('allExperiments', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.allExperiments))
+      for iter64 in self.allExperiments:
+        iter64.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.completedExperiments is not None:
+      oprot.writeFieldBegin('completedExperiments', TType.LIST, 8)
+      oprot.writeListBegin(TType.STRUCT, len(self.completedExperiments))
+      for iter65 in self.completedExperiments:
+        iter65.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.failedExperiments is not None:
+      oprot.writeFieldBegin('failedExperiments', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRUCT, len(self.failedExperiments))
+      for iter66 in self.failedExperiments:
+        iter66.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.cancelledExperiments is not None:
+      oprot.writeFieldBegin('cancelledExperiments', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.cancelledExperiments))
+      for iter67 in self.cancelledExperiments:
+        iter67.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.createdExperiments is not None:
+      oprot.writeFieldBegin('createdExperiments', TType.LIST, 11)
+      oprot.writeListBegin(TType.STRUCT, len(self.createdExperiments))
+      for iter68 in self.createdExperiments:
+        iter68.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.runningExperiments is not None:
+      oprot.writeFieldBegin('runningExperiments', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRUCT, len(self.runningExperiments))
+      for iter69 in self.runningExperiments:
+        iter69.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.allExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field allExperimentCount is unset!')
+    if self.completedExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field completedExperimentCount is unset!')
+    if self.failedExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field failedExperimentCount is unset!')
+    if self.createdExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field createdExperimentCount is unset!')
+    if self.runningExperimentCount is None:
+      raise TProtocol.TProtocolException(message='Required field runningExperimentCount is unset!')
+    if self.allExperiments is None:
+      raise TProtocol.TProtocolException(message='Required field allExperiments is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.allExperimentCount)
+    value = (value * 31) ^ hash(self.completedExperimentCount)
+    value = (value * 31) ^ hash(self.cancelledExperimentCount)
+    value = (value * 31) ^ hash(self.failedExperimentCount)
+    value = (value * 31) ^ hash(self.createdExperimentCount)
+    value = (value * 31) ^ hash(self.runningExperimentCount)
+    value = (value * 31) ^ hash(self.allExperiments)
+    value = (value * 31) ^ hash(self.completedExperiments)
+    value = (value * 31) ^ hash(self.failedExperiments)
+    value = (value * 31) ^ hash(self.cancelledExperiments)
+    value = (value * 31) ^ hash(self.createdExperiments)
+    value = (value * 31) ^ hash(self.runningExperiments)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/ttypes.pyc
new file mode 100644
index 0000000..7f70307
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/experiment/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/__init__.pyc
new file mode 100644
index 0000000..71ffe2b
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/ttypes.py
new file mode 100644
index 0000000..192fb12
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/ttypes.py
@@ -0,0 +1,237 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.status.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class JobModel:
+  """
+  Attributes:
+   - jobId
+   - taskId
+   - processId
+   - jobDescription
+   - creationTime
+   - jobStatus
+   - computeResourceConsumed
+   - jobName
+   - workingDir
+   - stdOut
+   - stdErr
+   - exitCode
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobId', None, None, ), # 1
+    (2, TType.STRING, 'taskId', None, None, ), # 2
+    (3, TType.STRING, 'processId', None, None, ), # 3
+    (4, TType.STRING, 'jobDescription', None, None, ), # 4
+    (5, TType.I64, 'creationTime', None, None, ), # 5
+    (6, TType.STRUCT, 'jobStatus', (apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec), None, ), # 6
+    (7, TType.STRING, 'computeResourceConsumed', None, None, ), # 7
+    (8, TType.STRING, 'jobName', None, None, ), # 8
+    (9, TType.STRING, 'workingDir', None, None, ), # 9
+    (10, TType.STRING, 'stdOut', None, None, ), # 10
+    (11, TType.STRING, 'stdErr', None, None, ), # 11
+    (12, TType.I32, 'exitCode', None, None, ), # 12
+  )
+
+  def __init__(self, jobId=None, taskId=None, processId=None, jobDescription=None, creationTime=None, jobStatus=None, computeResourceConsumed=None, jobName=None, workingDir=None, stdOut=None, stdErr=None, exitCode=None,):
+    self.jobId = jobId
+    self.taskId = taskId
+    self.processId = processId
+    self.jobDescription = jobDescription
+    self.creationTime = creationTime
+    self.jobStatus = jobStatus
+    self.computeResourceConsumed = computeResourceConsumed
+    self.jobName = jobName
+    self.workingDir = workingDir
+    self.stdOut = stdOut
+    self.stdErr = stdErr
+    self.exitCode = exitCode
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.taskId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.processId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.jobDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRUCT:
+          self.jobStatus = apache.airavata.model.status.ttypes.JobStatus()
+          self.jobStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.computeResourceConsumed = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.jobName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.workingDir = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.stdOut = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.stdErr = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.I32:
+          self.exitCode = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobModel')
+    if self.jobId is not None:
+      oprot.writeFieldBegin('jobId', TType.STRING, 1)
+      oprot.writeString(self.jobId)
+      oprot.writeFieldEnd()
+    if self.taskId is not None:
+      oprot.writeFieldBegin('taskId', TType.STRING, 2)
+      oprot.writeString(self.taskId)
+      oprot.writeFieldEnd()
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 3)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
+    if self.jobDescription is not None:
+      oprot.writeFieldBegin('jobDescription', TType.STRING, 4)
+      oprot.writeString(self.jobDescription)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 5)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.jobStatus is not None:
+      oprot.writeFieldBegin('jobStatus', TType.STRUCT, 6)
+      self.jobStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.computeResourceConsumed is not None:
+      oprot.writeFieldBegin('computeResourceConsumed', TType.STRING, 7)
+      oprot.writeString(self.computeResourceConsumed)
+      oprot.writeFieldEnd()
+    if self.jobName is not None:
+      oprot.writeFieldBegin('jobName', TType.STRING, 8)
+      oprot.writeString(self.jobName)
+      oprot.writeFieldEnd()
+    if self.workingDir is not None:
+      oprot.writeFieldBegin('workingDir', TType.STRING, 9)
+      oprot.writeString(self.workingDir)
+      oprot.writeFieldEnd()
+    if self.stdOut is not None:
+      oprot.writeFieldBegin('stdOut', TType.STRING, 10)
+      oprot.writeString(self.stdOut)
+      oprot.writeFieldEnd()
+    if self.stdErr is not None:
+      oprot.writeFieldBegin('stdErr', TType.STRING, 11)
+      oprot.writeString(self.stdErr)
+      oprot.writeFieldEnd()
+    if self.exitCode is not None:
+      oprot.writeFieldBegin('exitCode', TType.I32, 12)
+      oprot.writeI32(self.exitCode)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobId is None:
+      raise TProtocol.TProtocolException(message='Required field jobId is unset!')
+    if self.taskId is None:
+      raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
+    if self.jobDescription is None:
+      raise TProtocol.TProtocolException(message='Required field jobDescription is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobId)
+    value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.processId)
+    value = (value * 31) ^ hash(self.jobDescription)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.jobStatus)
+    value = (value * 31) ^ hash(self.computeResourceConsumed)
+    value = (value * 31) ^ hash(self.jobName)
+    value = (value * 31) ^ hash(self.workingDir)
+    value = (value * 31) ^ hash(self.stdOut)
+    value = (value * 31) ^ hash(self.stdErr)
+    value = (value * 31) ^ hash(self.exitCode)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/ttypes.pyc
new file mode 100644
index 0000000..608662c
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/job/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/__init__.pyc
new file mode 100644
index 0000000..fffa15d
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/__init__.pyc
new file mode 100644
index 0000000..a613669
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/messaging/event/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+


[13/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.py
new file mode 100644
index 0000000..9e58d3f
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/api/Airavata.py
@@ -0,0 +1,47815 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import logging
+from ttypes import *
+from thrift.Thrift import TProcessor
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class Iface:
+  def getAPIVersion(self, authzToken):
+    """
+    Fetch Apache Airavata API version
+
+
+    Parameters:
+     - authzToken
+    """
+    pass
+
+  def isUserExists(self, authzToken, gatewayId, userName):
+    """
+    Verify if User Exists within Airavata.
+
+    @param gatewayId
+
+     @param userName
+
+    @return true/false
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def addGateway(self, authzToken, gateway):
+    """
+    Register a Gateway with Airavata.
+
+    @param gateway
+       The gateway data model.
+
+    @return gatewayId
+      Th unique identifier of the  newly registered gateway.
+
+
+
+    Parameters:
+     - authzToken
+     - gateway
+    """
+    pass
+
+  def getAllUsersInGateway(self, authzToken, gatewayId):
+    """
+    Get all users in the gateway
+
+    @param gatewayId
+       The gateway data model.
+
+    @return users
+      list of usernames of the users in the gateway
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def updateGateway(self, authzToken, gatewayId, updatedGateway):
+    """
+    Update previously registered Gateway metadata.
+
+    @param gatewayId
+       The gateway Id of the Gateway which require an update.
+
+    @return gateway
+       Modified gateway obejct.
+
+    @exception AiravataClientException
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - updatedGateway
+    """
+    pass
+
+  def getGateway(self, authzToken, gatewayId):
+    """
+    Get Gateway details by providing gatewayId
+
+    @param gatewayId
+       The gateway Id of the Gateway.
+
+    @return gateway
+       Gateway obejct.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def deleteGateway(self, authzToken, gatewayId):
+    """
+    Delete a Gateway
+
+    @param gatewayId
+       The gateway Id of the Gateway to be deleted.
+
+    @return boolean
+       Boolean identifier for the success or failure of the deletion operation.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getAllGateways(self, authzToken):
+    """
+    Get All the Gateways Connected to Airavata.
+
+
+    Parameters:
+     - authzToken
+    """
+    pass
+
+  def isGatewayExist(self, authzToken, gatewayId):
+    """
+    Check for the Existance of a Gateway within Airavata
+
+    @param gatewayId
+      Provide the gatewayId of the gateway you want to check the existancy
+
+    @return boolean
+      Boolean idetifier for the existance or non-existane of the gatewayId
+
+    @return gatewayId
+      return the gatewayId of the existing gateway.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def createNotification(self, authzToken, notification):
+    """
+      * API methods to retrieve notifications
+    *
+
+    Parameters:
+     - authzToken
+     - notification
+    """
+    pass
+
+  def updateNotification(self, authzToken, notification):
+    """
+    Parameters:
+     - authzToken
+     - notification
+    """
+    pass
+
+  def deleteNotification(self, authzToken, gatewayId, notificationId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+     - notificationId
+    """
+    pass
+
+  def getNotification(self, authzToken, gatewayId, notificationId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+     - notificationId
+    """
+    pass
+
+  def getAllNotifications(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName):
+    """
+    Generate and Register SSH Key Pair with Airavata Credential Store.
+
+    @param gatewayId
+       The identifier for the requested Gateway.
+
+    @param userName
+       The User for which the credential should be registered. For community accounts, this user is the name of the
+       community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+    @return airavataCredStoreToken
+      An SSH Key pair is generated and stored in the credential store and associated with users or community account
+      belonging to a Gateway.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def registerPwdCredential(self, authzToken, gatewayId, portalUserName, loginUserName, password, description):
+    """
+    Generate and Register Username PWD Pair with Airavata Credential Store.
+
+    @param gatewayId
+       The identifier for the requested Gateway.
+
+    @param portalUserName
+       The User for which the credential should be registered. For community accounts, this user is the name of the
+       community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+    @param loginUserName
+
+    @param password
+
+    @return airavataCredStoreToken
+      An SSH Key pair is generated and stored in the credential store and associated with users or community account
+      belonging to a Gateway.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - portalUserName
+     - loginUserName
+     - password
+     - description
+    """
+    pass
+
+  def getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+    """
+    Get a Public Key by Providing the Token
+
+    @param CredStoreToken
+       Credential Store Token which you want to find the Public Key for.
+
+    @param gatewayId
+       This is the unique identifier of your gateway where the token and public key was generated from.
+
+    @return publicKey
+
+
+
+    Parameters:
+     - authzToken
+     - airavataCredStoreToken
+     - gatewayId
+    """
+    pass
+
+  def getAllGatewaySSHPubKeys(self, authzToken, gatewayId):
+    """
+
+    Get all Public Keys of the Gateway
+
+    @param CredStoreToken
+       Credential Store Token which you want to find the Public Key for.
+
+    @param gatewayId
+       This is the unique identifier of your gateway where the token and public key was generated from.
+
+    @return publicKey
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getAllGatewayPWDCredentials(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def deleteSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+    """
+
+    Delete a Gateway
+
+    @param gatewayId
+       The gateway Id of the Gateway to be deleted.
+
+    @return boolean
+       Boolean identifier for the success or failure of the deletion operation.
+
+
+
+    Parameters:
+     - authzToken
+     - airavataCredStoreToken
+     - gatewayId
+    """
+    pass
+
+  def deletePWDCredential(self, authzToken, airavataCredStoreToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - airavataCredStoreToken
+     - gatewayId
+    """
+    pass
+
+  def createProject(self, authzToken, gatewayId, project):
+    """
+
+    Creates a Project with basic metadata.
+       A Project is a container of experiments.
+
+    @param gatewayId
+       The identifier for the requested gateway.
+
+    @param Project
+       The Project Object described in the workspace_model.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - project
+    """
+    pass
+
+  def updateProject(self, authzToken, projectId, updatedProject):
+    """
+
+    Update an Existing Project
+
+    @param projectId
+       The projectId of the project needed an update.
+
+    @return void
+       Currently this does not return any value.
+
+
+
+    Parameters:
+     - authzToken
+     - projectId
+     - updatedProject
+    """
+    pass
+
+  def getProject(self, authzToken, projectId):
+    """
+
+    Get a Project by ID
+       This method is to obtain a project by providing a projectId.
+
+    @param projectId
+       projectId of the project you require.
+
+    @return project
+       project data model will be returned.
+
+
+
+    Parameters:
+     - authzToken
+     - projectId
+    """
+    pass
+
+  def deleteProject(self, authzToken, projectId):
+    """
+
+    Delete a Project
+       This method is used to delete an existing Project.
+
+    @param projectId
+       projectId of the project you want to delete.
+
+    @return boolean
+       Boolean identifier for the success or failure of the deletion operation.
+
+       NOTE: This method is not used within gateways connected with Airavata.
+
+
+
+    Parameters:
+     - authzToken
+     - projectId
+    """
+    pass
+
+  def getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+    """
+
+    Get All User Projects
+    Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
+
+    @param gatewayId
+       The identifier for the requested gateway.
+
+    @param userName
+       The identifier of the user.
+
+    @param limit
+       The amount results to be fetched.
+
+    @param offset
+       The starting point of the results to be fetched.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - limit
+     - offset
+    """
+    pass
+
+  def searchProjects(self, authzToken, gatewayId, userName, filters, limit, offset):
+    """
+
+    Search User Projects
+    Search and get all Projects for user by project description or/and project name  with pagination.
+    Results will be ordered based on creation time DESC.
+
+    @param gatewayId
+       The unique identifier of the gateway making the request.
+
+    @param userName
+       The identifier of the user.
+
+    @param filters
+       Map of multiple filter criteria. Currenlt search filters includes Project Name and Project Description
+
+    @param limit
+       The amount results to be fetched.
+
+    @param offset
+       The starting point of the results to be fetched.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - filters
+     - limit
+     - offset
+    """
+    pass
+
+  def searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
+    """
+    Search Experiments.
+    Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
+
+    @param gatewayId
+          Identifier of the requested gateway.
+
+    @param userName
+          Username of the user requesting the search function.
+
+    @param filters
+          Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+
+    @param limit
+          Amount of results to be fetched.
+
+    @param offset
+          The starting point of the results to be fetched.
+
+    @return ExperimentSummaryModel
+       List of experiments for the given search filter. Here only the Experiment summary will be returned.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - filters
+     - limit
+     - offset
+    """
+    pass
+
+  def getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime):
+    """
+
+    Get Experiment Statistics
+    Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+
+    @param gatewayId
+          Unique identifier of the gateway making the request to fetch statistics.
+
+    @param fromTime
+          Starting date time.
+
+    @param toTime
+          Ending data time.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - fromTime
+     - toTime
+    """
+    pass
+
+  def getExperimentsInProject(self, authzToken, projectId, limit, offset):
+    """
+
+    Get All Experiments of the Project
+    Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
+
+    @param projectId
+          Uniqie identifier of the project.
+
+    @param limit
+          Amount of results to be fetched.
+
+    @param offset
+          The starting point of the results to be fetched.
+
+
+
+    Parameters:
+     - authzToken
+     - projectId
+     - limit
+     - offset
+    """
+    pass
+
+  def getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
+    """
+
+    Get All Experiments of the User
+    Get experiments by user with pagination. Results will be sorted based on creation time DESC.
+
+    @param gatewayId
+          Identifier of the requesting gateway.
+
+    @param userName
+          Username of the requested end user.
+
+    @param limit
+          Amount of results to be fetched.
+
+    @param offset
+          The starting point of the results to be fetched.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - limit
+     - offset
+    """
+    pass
+
+  def createExperiment(self, authzToken, gatewayId, experiment):
+    """
+      *
+      * Create New Experiment
+      * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+      *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
+      *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+      *   registering the experiment in a persistent store.
+      *
+      * @param gatewayId
+      *    The unique ID of the gateway where the experiment is been created.
+      *
+      * @param ExperimentModel
+      *    The create experiment will require the basic experiment metadata like the name and description, intended user,
+      *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+      *      the ExperimentMetadata is a required field.
+      *
+      * @return
+      *   The server-side generated.airavata.registry.core.experiment.globally unique identifier.
+      *
+      * @throws org.apache.airavata.model.error.InvalidRequestException
+      *    For any incorrect forming of the request itself.
+      *
+      * @throws org.apache.airavata.model.error.AiravataClientException
+      *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+      *
+      *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+      *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+      *         gateway registration steps and retry this request.
+      *
+      *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+      *         For now this is a place holder.
+      *
+      *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+      *         is implemented, the authorization will be more substantial.
+      *
+      * @throws org.apache.airavata.model.error.AiravataSystemException
+      *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+      *       rather an Airavata Administrator will be notified to take corrective action.
+      *
+    *
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - experiment
+    """
+    pass
+
+  def deleteExperiment(self, authzToken, experimentId):
+    """
+
+    Delete an Experiment
+    If the experiment is not already launched experiment can be deleted.
+
+    @param authzToken
+
+    @param experiementId
+        Experiment ID of the experimnet you want to delete.
+
+    @return boolean
+        Identifier for the success or failure of the deletion operation.
+
+
+
+    Parameters:
+     - authzToken
+     - experimentId
+    """
+    pass
+
+  def getExperiment(self, authzToken, airavataExperimentId):
+    """
+      *
+      * Get Experiment
+      * Fetch previously created experiment metadata.
+      *
+      * @param airavataExperimentId
+      *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
+      *
+      * @return ExperimentModel
+      *   This method will return the previously stored experiment metadata.
+      *
+      * @throws org.apache.airavata.model.error.InvalidRequestException
+      *    For any incorrect forming of the request itself.
+      *
+      * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+      *    If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+      *
+      * @throws org.apache.airavata.model.error.AiravataClientException
+      *    The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+      *
+      *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+      *         step, then Airavata Registry will not have a provenance area setup. The client has to follow
+      *         gateway registration steps and retry this request.
+      *
+      *      AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+      *         For now this is a place holder.
+      *
+      *      INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+      *         is implemented, the authorization will be more substantial.
+      *
+      * @throws org.apache.airavata.model.error.AiravataSystemException
+      *    This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+      *       rather an Airavata Administrator will be notified to take corrective action.
+      *
+    *
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def getDetailedExperimentTree(self, authzToken, airavataExperimentId):
+    """
+
+    Get Complete Experiment Details
+    Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
+    tasks -> jobs information.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @return ExperimentModel
+      This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+      information, special input output handling and additional quality of service parameters.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def updateExperiment(self, authzToken, airavataExperimentId, experiment):
+    """
+
+    Update a Previously Created Experiment
+    Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+    The experiment has to be launched to make it actionable by the server.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @param ExperimentModel
+       The configuration information of the experiment with application input parameters, computational resource scheduling
+         information, special input output handling and additional quality of service parameters.
+
+    @return
+      This method call does not have a return value.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+         
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - experiment
+    """
+    pass
+
+  def updateExperimentConfiguration(self, authzToken, airavataExperimentId, userConfiguration):
+    """
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - userConfiguration
+    """
+    pass
+
+  def updateResourceScheduleing(self, authzToken, airavataExperimentId, resourceScheduling):
+    """
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - resourceScheduling
+    """
+    pass
+
+  def validateExperiment(self, authzToken, airavataExperimentId):
+    """
+     *
+     * Validate experiment configuration.
+     * A true in general indicates, the experiment is ready to be launched.
+     *
+     * @param airavataExperimentId
+     *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
+     *
+     * @return boolean
+     *      Identifier for the success or failure of the validation operation.
+     *
+    *
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
+    """
+
+    Launch a Previously Created & Configured Experiment.
+    Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+
+    @gatewayId
+       ID of the gateway which will launch the experiment.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @return
+      This method call does not have a return value.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+         
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - gatewayId
+    """
+    pass
+
+  def getExperimentStatus(self, authzToken, airavataExperimentId):
+    """
+
+    Get Experiment Status
+
+    Obtain the status of an experiment by providing the Experiment Id
+
+    @param authzToken
+
+    @param airavataExperimentId
+        Experiment ID of the experimnet you require the status.
+
+    @return ExperimentStatus
+        ExperimentStatus model with the current status will be returned.
+
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def getExperimentOutputs(self, authzToken, airavataExperimentId):
+    """
+
+    Get Experiment Outputs
+    This method to be used when need to obtain final outputs of a certain Experiment
+
+    @param authzToken
+
+    @param airavataExperimentId
+        Experiment ID of the experimnet you need the outputs.
+
+    @return list
+        List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def getIntermediateOutputs(self, authzToken, airavataExperimentId):
+    """
+
+    Get Intermediate Experiment Outputs
+    This method to be used when need to obtain intermediate outputs of a certain Experiment
+
+    @param authzToken
+
+    @param airavataExperimentId
+        Experiment ID of the experimnet you need intermediate outputs.
+
+    @return list
+        List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
+
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def getJobStatuses(self, authzToken, airavataExperimentId):
+    """
+
+    Get Job Statuses for an Experiment
+    This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
+
+    @param authzToken
+
+    @param experiementId
+        Experiment ID of the experimnet you need the job statuses.
+
+    @return JobStatus
+        Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
+
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def getJobDetails(self, authzToken, airavataExperimentId):
+    """
+
+    Get Job Details for all the jobs within an Experiment.
+    This method to be used when need to get the job details for one or many jobs of an Experiment.
+
+    @param authzToken
+
+    @param experiementId
+        Experiment ID of the experimnet you need job details.
+
+    @return list of JobDetails
+        Job details.
+
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def cloneExperiment(self, authzToken, existingExperimentID, newExperimentName):
+    """
+
+    Clone an Existing Experiment
+    Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
+      The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+    @param newExperimentName
+       experiment name that should be used in the cloned experiment
+
+    @param updatedExperiment
+       Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+         the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+         should be shared public by default.
+
+    @return
+      The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+         
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - existingExperimentID
+     - newExperimentName
+    """
+    pass
+
+  def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
+    """
+
+    Terminate a running Experiment.
+
+    @gatewayId
+       ID of the gateway which will terminate the running Experiment.
+
+    @param airavataExperimentId
+       The identifier of the experiment required termination. This ID is returned during the create experiment step.
+
+    @return status
+      This method call does not have a return value.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+         
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - gatewayId
+    """
+    pass
+
+  def registerApplicationModule(self, authzToken, gatewayId, applicationModule):
+    """
+
+    Register a Application Module.
+
+    @gatewayId
+       ID of the gateway which is registering the new Application Module.
+
+    @param applicationModule
+       Application Module Object created from the datamodel.
+
+    @return appModuleId
+      Returns the server-side generated airavata appModule globally unique identifier.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - applicationModule
+    """
+    pass
+
+  def getApplicationModule(self, authzToken, appModuleId):
+    """
+
+    Fetch a Application Module.
+
+    @param appModuleId
+      The unique identifier of the application module required
+
+    @return applicationModule
+      Returns an Application Module Object.
+
+
+    Parameters:
+     - authzToken
+     - appModuleId
+    """
+    pass
+
+  def updateApplicationModule(self, authzToken, appModuleId, applicationModule):
+    """
+
+    Update a Application Module.
+
+    @param appModuleId
+      The identifier for the requested application module to be updated.
+
+    @param applicationModule
+       Application Module Object created from the datamodel.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - appModuleId
+     - applicationModule
+    """
+    pass
+
+  def getAllAppModules(self, authzToken, gatewayId):
+    """
+
+    Fetch all Application Module Descriptions.
+
+    @param gatewayId
+       ID of the gateway which need to list all available application deployment documentation.
+
+    @return list
+       Returns the list of all Application Module Objects.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def deleteApplicationModule(self, authzToken, appModuleId):
+    """
+
+    Delete an Application Module.
+
+    @param appModuleId
+      The identifier of the Application Module to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - appModuleId
+    """
+    pass
+
+  def registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
+    """
+
+    Register an Application Deployment.
+
+    @param gatewayId
+       ID of the gateway which is registering the new Application Deployment.
+
+    @param applicationDeployment
+       Application Module Object created from the datamodel.
+
+    @return appDeploymentId
+      Returns a server-side generated airavata appDeployment globally unique identifier.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - applicationDeployment
+    """
+    pass
+
+  def getApplicationDeployment(self, authzToken, appDeploymentId):
+    """
+
+    Fetch a Application Deployment.
+
+    @param appDeploymentId
+      The identifier for the requested application module
+
+    @return applicationDeployment
+      Returns a application Deployment Object.
+
+
+    Parameters:
+     - authzToken
+     - appDeploymentId
+    """
+    pass
+
+  def updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
+    """
+
+    Update an Application Deployment.
+
+    @param appDeploymentId
+      The identifier of the requested application deployment to be updated.
+
+    @param appDeployment
+       Application Deployment Object created from the datamodel.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - appDeploymentId
+     - applicationDeployment
+    """
+    pass
+
+  def deleteApplicationDeployment(self, authzToken, appDeploymentId):
+    """
+
+    Delete an Application Deployment.
+
+    @param appDeploymentId
+      The unique identifier of application deployment to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - appDeploymentId
+    """
+    pass
+
+  def getAllApplicationDeployments(self, authzToken, gatewayId):
+    """
+
+    Fetch all Application Deployment Descriptions.
+
+    @param gatewayId
+       ID of the gateway which need to list all available application deployment documentation.
+
+    @return list<applicationDeployment.
+       Returns the list of all application Deployment Objects.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getAppModuleDeployedResources(self, authzToken, appModuleId):
+    """
+    Fetch a list of Deployed Compute Hosts.
+
+    @param appModuleId
+      The identifier for the requested application module
+
+    @return list<string>
+      Returns a list of Deployed Resources.
+
+
+    Parameters:
+     - authzToken
+     - appModuleId
+    """
+    pass
+
+  def registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
+    """
+
+    Register a Application Interface.
+
+    @param applicationInterface
+       Application Module Object created from the datamodel.
+
+    @return appInterfaceId
+      Returns a server-side generated airavata application interface globally unique identifier.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - applicationInterface
+    """
+    pass
+
+  def cloneApplicationInterface(self, authzToken, existingAppInterfaceID, newApplicationName, gatewayId):
+    """
+
+    Clone an Application Interface.
+
+    @gatewayId
+       The identifier for the gateway profile to be requested
+
+    @param existingAppInterfaceID
+       Identifier of the existing Application interface you wich to clone.
+
+    @param newApplicationName
+       Name for the new application interface.
+
+    @return appInterfaceId
+       Returns a server-side generated globally unique identifier for the newly cloned application interface.
+
+
+    Parameters:
+     - authzToken
+     - existingAppInterfaceID
+     - newApplicationName
+     - gatewayId
+    """
+    pass
+
+  def getApplicationInterface(self, authzToken, appInterfaceId):
+    """
+
+    Fetch an Application Interface.
+
+    @param appInterfaceId
+      The identifier for the requested application interface.
+
+    @return applicationInterface
+      Returns an application Interface Object.
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
+    """
+
+    Update a Application Interface.
+
+    @param appInterfaceId
+      The identifier of the requested application deployment to be updated.
+
+    @param appInterface
+       Application Interface Object created from the datamodel.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+     - applicationInterface
+    """
+    pass
+
+  def deleteApplicationInterface(self, authzToken, appInterfaceId):
+    """
+
+    Delete an Application Interface.
+
+    @param appInterfaceId
+      The identifier for the requested application interface to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def getAllApplicationInterfaceNames(self, authzToken, gatewayId):
+    """
+
+    Fetch name and ID of  Application Interface documents.
+
+
+    @return map<applicationId, applicationInterfaceNames>
+      Returns a list of application interfaces with corresponsing ID's
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getAllApplicationInterfaces(self, authzToken, gatewayId):
+    """
+
+    Fetch all Application Interface documents.
+
+
+    @return map<applicationId, applicationInterfaceNames>
+      Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getApplicationInputs(self, authzToken, appInterfaceId):
+    """
+
+    Fetch the list of Application Inputs.
+
+    @param appInterfaceId
+      The identifier of the application interface which need inputs to be fetched.
+
+    @return list<application_interface_model.InputDataObjectType>
+      Returns a list of application inputs.
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def getApplicationOutputs(self, authzToken, appInterfaceId):
+    """
+
+    Fetch list of Application Outputs.
+
+    @param appInterfaceId
+      The identifier of the application interface which need outputs to be fetched.
+
+    @return list<application_interface_model.OutputDataObjectType>
+      Returns a list of application outputs.
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
+    """
+
+    Fetch a list of all deployed Compute Hosts for a given application interfaces.
+
+    @param appInterfaceId
+      The identifier for the requested application interface.
+
+    @return map<computeResourceId, computeResourceName>
+      A map of registered compute resource id's and their corresponding hostnames.
+      Deployments of each modules listed within the interfaces will be listed.
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def registerComputeResource(self, authzToken, computeResourceDescription):
+    """
+    Register a Compute Resource.
+
+    @param computeResourceDescription
+       Compute Resource Object created from the datamodel.
+
+    @return computeResourceId
+      Returns a server-side generated airavata compute resource globally unique identifier.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceDescription
+    """
+    pass
+
+  def getComputeResource(self, authzToken, computeResourceId):
+    """
+    Fetch the given Compute Resource.
+
+    @param computeResourceId
+      The identifier for the requested compute resource
+
+    @return computeResourceDescription
+       Compute Resource Object created from the datamodel..
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+    """
+    pass
+
+  def getAllComputeResourceNames(self, authzToken):
+    """
+
+    Fetch all registered Compute Resources.
+
+    @return A map of registered compute resource id's and thier corresponding hostnames.
+       Compute Resource Object created from the datamodel..
+
+
+    Parameters:
+     - authzToken
+    """
+    pass
+
+  def updateComputeResource(self, authzToken, computeResourceId, computeResourceDescription):
+    """
+    Update a Compute Resource.
+
+    @param computeResourceId
+      The identifier for the requested compute resource to be updated.
+
+    @param computeResourceDescription
+       Compute Resource Object created from the datamodel.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - computeResourceDescription
+    """
+    pass
+
+  def deleteComputeResource(self, authzToken, computeResourceId):
+    """
+    Delete a Compute Resource.
+
+    @param computeResourceId
+      The identifier for the requested compute resource to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+    """
+    pass
+
+  def registerStorageResource(self, authzToken, storageResourceDescription):
+    """
+    Register a Storage Resource.
+
+    @param storageResourceDescription
+       Storge Resource Object created from the datamodel.
+
+    @return storageResourceId
+      Returns a server-side generated airavata storage resource globally unique identifier.
+
+
+    Parameters:
+     - authzToken
+     - storageResourceDescription
+    """
+    pass
+
+  def getStorageResource(self, authzToken, storageResourceId):
+    """
+    Fetch the given Storage Resource.
+
+    @param storageResourceId
+      The identifier for the requested storage resource
+
+    @return storageResourceDescription
+       Storage Resource Object created from the datamodel..
+
+
+    Parameters:
+     - authzToken
+     - storageResourceId
+    """
+    pass
+
+  def getAllStorageResourceNames(self, authzToken):
+    """
+    Fetch all registered Storage Resources.
+
+    @return A map of registered compute resource id's and thier corresponding hostnames.
+       Compute Resource Object created from the datamodel..
+
+
+    Parameters:
+     - authzToken
+    """
+    pass
+
+  def updateStorageResource(self, authzToken, storageResourceId, storageResourceDescription):
+    """
+    Update a Storage Resource.
+
+    @param storageResourceId
+      The identifier for the requested compute resource to be updated.
+
+    @param storageResourceDescription
+       Storage Resource Object created from the datamodel.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - storageResourceId
+     - storageResourceDescription
+    """
+    pass
+
+  def deleteStorageResource(self, authzToken, storageResourceId):
+    """
+    Delete a Storage Resource.
+
+    @param storageResourceId
+      The identifier of the requested compute resource to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - storageResourceId
+    """
+    pass
+
+  def addLocalSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, localSubmission):
+    """
+    Add a Local Job Submission details to a compute resource
+     App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param localSubmission
+      The LOCALSubmission object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - localSubmission
+    """
+    pass
+
+  def updateLocalSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, localSubmission):
+    """
+    Update the given Local Job Submission details
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be updated.
+
+    @param localSubmission
+      The LOCALSubmission object to be updated.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - localSubmission
+    """
+    pass
+
+  def getLocalJobSubmission(self, authzToken, jobSubmissionId):
+    """
+    This method returns localJobSubmission object
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be retrieved.
+     @return LOCALSubmission instance
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionId
+    """
+    pass
+
+  def addSSHJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+    """
+    Add a SSH Job Submission details to a compute resource
+     App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param sshJobSubmission
+      The SSHJobSubmission object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - sshJobSubmission
+    """
+    pass
+
+  def addSSHForkJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+    """
+    Add a SSH_FORK Job Submission details to a compute resource
+     App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param sshJobSubmission
+      The SSHJobSubmission object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - sshJobSubmission
+    """
+    pass
+
+  def getSSHJobSubmission(self, authzToken, jobSubmissionId):
+    """
+    This method returns SSHJobSubmission object
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be retrieved.
+     @return SSHJobSubmission instance
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionId
+    """
+    pass
+
+  def addUNICOREJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, unicoreJobSubmission):
+    """
+
+    Add a UNICORE Job Submission details to a compute resource
+     App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param unicoreJobSubmission
+      The UnicoreJobSubmission object to be added to the resource.
+
+    @return status
+     Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - unicoreJobSubmission
+    """
+    pass
+
+  def getUnicoreJobSubmission(self, authzToken, jobSubmissionId):
+    """
+      *
+      * This method returns UnicoreJobSubmission object
+      *
+      * @param jobSubmissionInterfaceId
+      *   The identifier of the JobSubmission Interface to be retrieved.
+      *  @return UnicoreJobSubmission instance
+      *
+    *
+
+    Parameters:
+     - authzToken
+     - jobSubmissionId
+    """
+    pass
+
+  def addCloudJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, cloudSubmission):
+    """
+       *
+       * Add a Cloud Job Submission details to a compute resource
+       *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+       *
+       * @param computeResourceId
+       *   The identifier of the compute resource to which JobSubmission protocol to be added
+       *
+       * @param priorityOrder
+       *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+       *
+       * @param sshJobSubmission
+       *   The SSHJobSubmission object to be added to the resource.
+       *
+       * @return status
+       *   Returns the unique job submission id.
+       *
+    *
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - cloudSubmission
+    """
+    pass
+
+  def getCloudJobSubmission(self, authzToken, jobSubmissionId):
+    """
+       *
+       * This method returns cloudJobSubmission object
+       * @param jobSubmissionInterfaceI
+           *   The identifier of the JobSubmission Interface to be retrieved.
+       *  @return CloudJobSubmission instance
+    *
+
+    Parameters:
+     - authzToken
+     - jobSubmissionId
+    """
+    pass
+
+  def updateSSHJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
+    """
+
+    Update the given SSH Job Submission details
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be updated.
+
+    @param sshJobSubmission
+      The SSHJobSubmission object to be updated.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - sshJobSubmission
+    """
+    pass
+
+  def updateCloudJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
+    """
+
+    Update the cloud Job Submission details
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be updated.
+
+    @param cloudJobSubmission
+      The CloudJobSubmission object to be updated.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - sshJobSubmission
+    """
+    pass
+
+  def updateUnicoreJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, unicoreJobSubmission):
+    """
+
+    Update the UNIOCRE Job Submission details
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be updated.
+
+    @param UnicoreJobSubmission
+      The UnicoreJobSubmission object to be updated.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - unicoreJobSubmission
+    """
+    pass
+
+  def addLocalDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, localDataMovement):
+    """
+
+    Add a Local data movement details to a compute resource
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param productUri
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param DMType
+      DMType object to be added to the resource.
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param localDataMovement
+      The LOCALDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+
+    Parameters:
+     - authzToken
+     - productUri
+     - dataMoveType
+     - priorityOrder
+     - localDataMovement
+    """
+    pass
+
+  def updateLocalDataMovementDetails(self, authzToken, dataMovementInterfaceId, localDataMovement):
+    """
+
+    Update the given Local data movement details
+
+    @param dataMovementInterfaceId
+      The identifier of the data movement Interface to be updated.
+
+    @param localDataMovement
+      The LOCALDataMovement object to be updated.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - localDataMovement
+    """
+    pass
+
+  def getLocalDataMovement(self, authzToken, dataMovementId):
+    """
+
+    This method returns local datamovement object.
+
+    @param dataMovementId
+      The identifier of the datamovement Interface to be retrieved.
+
+     @return LOCALDataMovement instance
+
+
+
+    Parameters:
+     - authzToken
+     - dataMovementId
+    """
+    pass
+
+  def addSCPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, scpDataMovement):
+    """
+
+    Add a SCP data movement details to a compute resource
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param productUri
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param scpDataMovement
+      The SCPDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - productUri
+     - dataMoveType
+     - priorityOrder
+     - scpDataMovement
+    """
+    pass
+
+  def updateSCPDataMovementDetails(self, authzToken, dataMovementInterfaceId, scpDataMovement):
+    """
+
+    Update the given scp data movement details
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param dataMovementInterfaceId
+      The identifier of the data movement Interface to be updated.
+
+    @param scpDataMovement
+      The SCPDataMovement object to be updated.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - scpDataMovement
+    """
+    pass
+
+  def getSCPDataMovement(self, authzToken, dataMovementId):
+    """
+    This method returns SCP datamovement object
+
+    @param dataMovementId
+      The identifier of the datamovement Interface to be retrieved.
+
+    @return SCPDataMovement instance
+
+
+
+    Parameters:
+     - authzToken
+     - dataMovementId
+    """
+    pass
+
+  def addUnicoreDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, unicoreDataMovement):
+    """
+
+    Add a UNICORE data movement details to a compute resource
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param productUri
+      The identifier of the compute resource to which data movement protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param UnicoreDataMovement
+      The UnicoreDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique data movement id.
+
+
+    Parameters:
+     - authzToken
+     - productUri
+     - dataMoveType
+     - priorityOrder
+     - unicoreDataMovement
+    """
+    pass
+
+  def updateUnicoreDataMovementDetails(self, authzToken, dataMovementInterfaceId, unicoreDataMovement):
+    """
+
+    Update a selected UNICORE data movement details
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param dataMovementInterfaceId
+      The identifier of the data movement Interface to be updated.
+
+    @param UnicoreDataMovement
+      The UnicoreDataMovement object to be updated.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - unicoreDataMovement
+    """
+    pass
+
+  def getUnicoreDataMovement(self, authzToken, dataMovementId):
+    """
+
+    This method returns UNICORE datamovement object
+
+    @param dataMovementId
+      The identifier of the datamovement Interface to be retrieved.
+
+    @return UnicoreDataMovement instance
+
+
+
+    Parameters:
+     - authzToken
+     - dataMovementId
+    """
+    pass
+
+  def addGridFTPDataMovementDetails(self, authzToken, productUri, dataMoveType, priorityOrder, gridFTPDataMovement):
+    """
+
+    Add a GridFTP data movement details to a compute resource
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param productUri
+      The identifier of the compute resource to which dataMovement protocol to be added
+
+    @param DMType
+       The DMType object to be added to the resource.
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param gridFTPDataMovement
+      The GridFTPDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique data movement id.
+
+
+
+    Parameters:
+     - authzToken
+     - productUri
+     - dataMoveType
+     - priorityOrder
+     - gridFTPDataMovement
+    """
+    pass
+
+  def updateGridFTPDataMovementDetails(self, authzToken, dataMovementInterfaceId, gridFTPDataMovement):
+    """
+    Update the given GridFTP data movement details to a compute resource
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param dataMovementInterfaceId
+      The identifier of the data movement Interface to be updated.
+
+    @param gridFTPDataMovement
+      The GridFTPDataMovement object to be updated.
+
+    @return boolean
+      Returns a success/failure of the update.
+
+
+
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - gridFTPDataMovement
+    """
+    pass
+
+  def getGridFTPDataMovement(self, authzToken, dataMovementId):
+    """
+    This method returns GridFTP datamovement object
+
+    @param dataMovementId
+      The identifier of the datamovement Interface to be retrieved.
+
+     @return GridFTPDataMovement instance
+
+
+
+    Parameters:
+     - authzToken
+     - dataMovementId
+    """
+    pass
+
+  def changeJobSubmissionPriority(self, authzToken, jobSubmissionInterfaceId, newPriorityOrder):
+    """
+    Change the priority of a given job submisison interface
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be changed
+
+    @param priorityOrder
+      The new priority of the job manager interface.
+
+    @return status
+      Returns a success/failure of the change.
+
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - newPriorityOrder
+    """
+    pass
+
+  def changeDataMovementPriority(self, authzToken, dataMovementInterfaceId, newPriorityOrder):
+    """
+    Change the priority of a given data movement interface
+
+    @param dataMovementInterfaceId
+      The identifier of the DataMovement Interface to be changed
+
+    @param priorityOrder
+      The new priority of the data movement interface.
+
+    @return status
+      Returns a success/failure of the change.
+
+
+
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - newPriorityOrder
+    """
+    pass
+
+  def changeJobSubmissionPriorities(self, authzToken, jobSubmissionPriorityMap):
+    """
+    Change the priorities of a given set of job submission interfaces
+
+    @param jobSubmissionPriorityMap
+      A Map of identifiers of the JobSubmission Interfaces and thier associated priorities to be set.
+
+    @return status
+      Returns a success/failure of the changes.
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionPriorityMap
+    """
+    pass
+
+  def changeDataMovementPriorities(self, authzToken, dataMovementPriorityMap):
+    """
+    Change the priorities of a given set of data movement interfaces
+
+    @param dataMovementPriorityMap
+      A Map of identifiers of the DataMovement Interfaces and thier associated priorities to be set.
+
+    @return status
+      Returns a success/failure of the changes.
+
+
+
+    Parameters:
+     - authzToken
+     - dataMovementPriorityMap
+    """
+    pass
+
+  def deleteJobSubmissionInterface(self, authzToken, computeResourceId, jobSubmissionInterfaceId):
+    """
+    Delete a given job submisison interface
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be changed
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - jobSubmissionInterfaceId
+    """
+    pass
+
+  def deleteDataMovementInterface(self, authzToken, productUri, dataMovementInterfaceId, dataMoveType):
+    """
+    Delete a given data movement interface
+
+    @param dataMovementInterfaceId
+      The identifier of the DataMovement Interface to be changed
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+
+    Parameters:
+     - authzToken
+     - productUri
+     - dataMovementInterfaceId
+     - dataMoveType
+    """
+    pass
+
+  def registerResourceJobManager(self, authzToken, resourceJobManager):
+    """
+    Parameters:
+     - authzToken
+     - resourceJobManager
+    """
+    pass
+
+  def updateResourceJobManager(self, authzToken, resourceJobManagerId, updatedResourceJobManager):
+    """
+    Parameters:
+     - authzToken
+     - resourceJobManagerId
+     - updatedResourceJobManager
+    """
+    pass
+
+  def getResourceJobManager(self, authzToken, resourceJobManagerId):
+    """
+    Parameters:
+     - authzToken
+     - resourceJobManagerId
+    """
+    pass
+
+  def deleteResourceJobManager(self, authzToken, resourceJobManagerId):
+    """
+    Parameters:
+     - authzToken
+     - resourceJobManagerId
+    """
+    pass
+
+  def deleteBatchQueue(self, authzToken, computeResourceId, queueName):
+    """
+    Delete a Compute Resource Queue
+
+    @param computeResourceId
+      The identifier of the compute resource which has the queue to be deleted
+
+    @param queueName
+      Name of the queue need to be deleted. Name is the uniqueue identifier for the queue within a compute resource
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - queueName
+    """
+    pass
+
+  def registerGatewayResourceProfile(self, authzToken, gatewayResourceProfile):
+    """
+    Register a Gateway Resource Profile.
+
+    @param gatewayResourceProfile
+       Gateway Resource Profile Object.
+       The GatewayID should be obtained from Airavata gateway registration and passed to register a corresponding
+         resource profile.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - gatewayResourceProfile
+    """
+    pass
+
+  def getGatewayResourceProfile(self, authzToken, gatewayID):
+    """
+    Fetch the given Gateway Resource Profile.
+
+    @param gatewayID
+      The identifier for the requested gateway resource.
+
+    @return gatewayResourceProfile
+       Gateway Resource Profile Object.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+    """
+    pass
+
+  def updateGatewayResourceProfile(self, authzToken, gatewayID, gatewayResourceProfile):
+    """
+    Update a Gateway Resource Profile.
+
+    @param gatewayID
+      The identifier for the requested gateway resource to be updated.
+
+    @param gatewayResourceProfile
+       Gateway Resource Profile Object.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - gatewayResourceProfile
+    """
+    pass
+
+  def deleteGatewayResourceProfile(self, authzToken, gatewayID):
+    """
+    Delete the given Gateway Resource Profile.
+
+    @param gatewayID
+      The identifier for the requested gateway resource to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+    """
+    pass
+
+  def addGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId, computeResourcePreference):
+    """
+    Add a Compute Resource Preference to a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be added.
+
+    @param computeResourceId
+      Preferences related to a particular compute resource
+
+    @param computeResourcePreference
+      The ComputeResourcePreference object to be added to the resource profile.
+
+    @return status
+      Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+       Instead an update should be used.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - computeResourceId
+     - computeResourcePreference
+    """
+    pass
+
+  def addGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId, storagePreference):
+    """
+    Add a Storage Resource Preference to a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to be added.
+
+    @param storageResourceId
+      Preferences related to a particular compute resource
+
+    @param computeResourcePreference
+      The ComputeResourcePreference object to be added to the resource profile.
+
+    @return status
+      Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+       Instead an update should be used.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - storageResourceId
+     - storagePreference
+    """
+    pass
+
+  def getGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
+    """
+
+    Fetch a Compute Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be requested
+
+    @param computeResourceId
+      Preferences related to a particular compute resource
+
+    @return computeResourcePreference
+      Returns the ComputeResourcePreference object.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - computeResourceId
+    """
+    pass
+
+  def getGatewayStoragePreference(self, authzToken, gatewayID, storageResourceId):
+    """
+
+    Fetch a Storage Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to request to fetch the particular storage resource preference.
+
+    @param storageResourceId
+      Identifier of the Stprage Preference required to be fetched.
+
+    @return StoragePreference
+      Returns the StoragePreference object.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - storageResourceId
+    """
+    pass
+
+  def getAllGatewayComputeResourcePreferences(self, authzToken, gatewayID):
+    """
+
+    Fetch all Compute Resource Preferences of a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be requested
+
+    @return computeResourcePreference
+      Returns the ComputeResourcePreference object.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+    """
+    pass
+
+  def getAllGatewayStoragePreferences(self, authzToken, gatewayID):
+    """
+    Fetch all Storage Resource Preferences of a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be requested
+
+    @return StoragePreference
+      Returns the StoragePreference object.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+    """
+    pass
+
+  def getAllGatewayResourceProfiles(self, authzToken):
+    """
+
+    Fetch all Gateway Profiles registered
+
+    @return GatewayResourceProfile
+      Returns all the GatewayResourcePrifle list object.
+
+
+
+    Parameters:
+     - authzToken
+    """
+    pass
+
+  def updateGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId, computeResourcePreference):
+    """
+    Update a Compute Resource Preference to a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be updated.
+
+    @param computeResourceId
+      Preferences related to a particular compute resource
+
+    @param computeResourcePreference
+      The ComputeResourcePreference object to be updated to the resource profile.
+
+    @return status
+      Returns a success/failure of the updation.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - computeResourceId
+     - computeResourcePreference
+    """
+    pass
+
+  def updateGatewayStoragePreference(self, authzToken, gatewayID, storageId, storagePreference):
+    """
+    Update a Storage Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to be updated.
+
+    @param storageId
+      The Storage resource identifier of the one that you want to update
+
+    @param storagePreference
+      The storagePreference object to be updated to the resource profile.
+
+    @return status
+      Returns a success/failure of the updation.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - storageId
+     - storagePreference
+    """
+    pass
+
+  def deleteGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
+    """
+    Delete the Compute Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be deleted.
+
+    @param computeResourceId
+      Preferences related to a particular compute resource
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - computeResourceId
+    """
+    pass
+
+  def deleteGatewayStoragePreference(self, authzToken, gatewayID, storageId):
+    """
+    Delete the Storage Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to be deleted.
+
+    @param storageId
+      ID of the storage preference you want to delete.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - storageId
+    """
+    pass
+
+  def getAllWorkflows(self, authzToken, gatewayId):
+    """
+    Delete the Storage Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier of the gateway profile to be deleted.
+
+    @param storageId
+      ID of the storage preference you want to delete.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getWorkflow(self, authzToken, workflowTemplateId):
+    """
+
+    API Methods Related for Work-Flow Submission Features.
+
+
+    Parameters:
+     - authzToken
+     - workflowTemplateId
+    """
+    pass
+
+  def deleteWorkflow(self, authzToken, workflowTemplateId):
+    """
+    Parameters:
+     - authzToken
+     - workflowTemplateId
+    """
+    pass
+
+  def registerWorkflow(self, authzToken, gatewayId, workflow):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+     - workflow
+    """
+    pass
+
+  def updateWorkflow(self, authzToken, workflowTemplateId, workflow):
+    """
+    Parameters:
+     - authzToken
+     - workflowTemplateId
+     - workflow
+    """
+    pass
+
+  def getWorkflowTemplateId(self, authzToken, workflowName):
+    """
+    Parameters:
+     - authzToken
+     - workflowName
+    """
+    pass
+
+  def isWorkflowExistWithName(self, authzToken, workflowName):
+    """
+    Parameters:
+     - authzToken
+     - workflowName
+    """
+    pass
+
+  def registerDataProduct(self, authzToken, dataProductModel):
+    """
+    API Methods related to replica catalog
+
+
+    Parameters:
+     - authzToken
+     - dataProductModel
+    """
+    pass
+
+  def getDataProduct(self, authzToken, dataProductUri):
+    """
+    Parameters:
+     - authzToken
+     - dataProductUri
+    """
+    pass
+
+  def registerReplicaLocation(self, authzToken, replicaLocationModel):
+    """
+    Parameters:
+     - authzToken
+     - replicaLocationModel
+    """
+    pass
+
+  def getParentDataProduct(self, authzToken, productUri):
+    """
+    Parameters:
+     - authzToken
+     - productUri
+    """
+    pass
+
+  def getChildDataProducts(self, authzToken, productUri):
+    """
+    Parameters:
+     - authzToken
+     - productUri
+    """
+    pass
+
+  def shareResourceWithUsers(self, authzToken, resourceId, resourceType, userPermissionList):
+    """
+    Group Manager and Data Sharing Related API methods
+
+
+    Parameters:
+     - authzToken
+     - resourceId
+     - resourceType
+     - userPermissionList
+    """
+    pass
+
+  def revokeSharingOfResourceFromUsers(self, authzToken, resourceId, resourceType, userPermissionList):
+    """
+    Parameters:
+     - authzToken
+     - resourceId
+     - resourceType
+     - userPermissionList
+    """
+    pass
+
+  def getAllAccessibleUsers(self, authzToken, resourceId, resourceType, permissionType):
+    """
+    Parameters:
+     - authzToken
+     - resourceId
+     - resourceType
+     - permissionType
+    """
+    pass
+
+  def createGroup(self, authzToken, groupModel):
+    """
+    Parameters:
+     - authzToken
+     - groupModel
+    """
+    pass
+
+  def updateGroup(self, authzToken, groupModel):
+    """
+    Parameters:
+     - authzToken
+     - groupModel
+    """
+    pass
+
+  def deleteGroup(self, authzToken, groupId, ownerId, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - groupId
+     - ownerId
+     - gatewayId
+    """
+    pass
+
+  def getGroup(self, authzToken, groupId):
+    """
+    Parameters:
+     - authzToken
+     - groupId
+    """
+    pass
+
+  def getAllGroupsUserBelongs(self, authzToken, userName, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - userName
+     - gatewayId
+    """
+    pass
+
+
+class Client(Iface):
+  def __init__(self, iprot, oprot=None):
+    self._iprot = self._oprot = iprot
+    if oprot is not None:
+      self._oprot = oprot
+    self._seqid = 0
+
+  def getAPIVersion(self, authzToken):
+    """
+    Fetch Apache Airavata API version
+
+
+    Parameters:
+     - authzToken
+    """
+    self.send_getAPIVersion(authzToken)
+    return self.recv_getAPIVersion()
+
+  def send_getAPIVersion(self, authzToken):
+    self._oprot.writeMessageBegin('getAPIVersion', TMessageType.CALL, self._seqid)
+    args = getAPIVersion_args()
+    args.authzToken = authzToken
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAPIVersion(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getAPIVersion_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAPIVersion failed: unknown result")
+
+  def isUserExists(self, authzToken, gatewayId, userName):
+    """
+    Verify if User Exists within Airavata.
+
+    @param gatewayId
+
+     @param userName
+
+    @return true/false
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+    """
+    self.send_isUserExists(authzToken, gatewayId, userName)
+    return self.recv_isUserExists()
+
+  def send_isUserExists(self, authzToken, gatewayId, userName):
+    self._oprot.writeMessageBegin('isUserExists', TMessageType.CALL, self._seqid)
+    args = isUserExists_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_isUserExists(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = isUserExists_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "isUserExists failed: unknown result")
+
+  def addGateway(self, authzToken, gateway):
+    """
+    Register a Gateway with Airavata.
+
+    @param gateway
+       The gateway data model.
+
+    @return gatewayId
+      Th unique identifier of the  newly registered gateway.
+
+
+
+    Parameters:
+     - authzToken
+     - gateway
+    """
+    self.send_addGateway(authzToken, gateway)
+    return self.recv_addGateway()
+
+  def send_addGateway(self, authzToken, gateway):
+    self._oprot.writeMessageBegin('addGateway', TMessageType.CALL, self._seqid)
+    args = addGateway_args()
+    args.authzToken = authzToken
+    args.gateway = gateway
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_addGateway(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = addGateway_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "addGateway failed: unknown result")
+
+  def getAllUsersInGateway(self, authzToken, gatewayId):
+    """
+    Get all users in the gateway
+
+    @param gatewayId
+       The gateway data model.
+
+    @return users
+      list of usernames of the users in the gateway
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    self.send_getAllUsersInGateway(authzToken, gatewayId)
+    return self.recv_getAllUsersInGateway()
+
+  def send_getAllUsersInGateway(self, authzToken, gatewayId):
+    self._oprot.writeMessageBegin('getAllUsersInGateway', TMessageType.CALL, self._seqid)
+    args = getAllUsersInGateway_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAllUsersInGateway(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getAllUsersInGateway_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUsersInGateway failed: unknown result")
+
+  def updateGateway(self, authzToken, gatewayId, updatedGateway):
+    """
+    Update previously registered Gateway metadata.
+
+    @param gatewayId
+       The gateway Id of the Gateway which require an update.
+
+    @return gateway
+       Modified gateway obejct.
+
+    @exception AiravataClientException
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - updatedGateway
+    """
+    self.send_updateGateway(authzToken, gatewayId, updatedGateway)
+    return self.recv_updateGateway()
+
+  def send_updateGateway(self, authzToken, gatewayId, updatedGateway):
+    self._oprot.writeMessageBegin('updateGateway', TMessageType.CALL, self._seqid)
+    args = updateGateway_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.updatedGateway = updatedGateway
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updateGateway(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = updateGateway_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "updateGateway failed: unknown result")
+
+  def getGateway(self, authzToken, gatewayId):
+    """
+    Get Gateway details by providing gatewayId
+
+    @param gatewayId
+       The gateway Id of the Gateway.
+
+    @return gateway
+       Gateway obejct.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    self.send_getGateway(authzToken, gatewayId)
+    return self.recv_getGateway()
+
+  def send_getGateway(self, authzToken, gatewayId):
+    self._oprot.writeMessageBegin('getGateway', TMessageType.CALL, self._seqid)
+    args = getGateway_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getGateway(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getGateway_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getGateway failed: unknown result")
+
+  def deleteGateway(self, authzToken, gatewayId):
+    """
+    Delete a Gateway
+
+    @param gatewayId
+       The gateway Id of the Gateway to be deleted.
+
+    @return boolean
+       Boolean identifier for the success or failure of the deletion operation.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    self.send_deleteGateway(authzToken, gatewayId)
+    return self.recv_deleteGateway()
+
+  def send_deleteGateway(self, authzToken, gatewayId):
+    self._oprot.writeMessageBegin('deleteGateway', TMessageType.CALL, self._seqid)
+    args = deleteGateway_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteGateway(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deleteGateway_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not 

<TRUNCATED>

[32/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
Added_Apache


Project: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/commit/2352c0ff
Tree: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/tree/2352c0ff
Diff: http://git-wip-us.apache.org/repos/asf/airavata-sandbox/diff/2352c0ff

Branch: refs/heads/master
Commit: 2352c0ffa843b0cb6c05a3280e422826babc5999
Parents: 69c259d
Author: Pradyut Madhavaram <pr...@gmail.com>
Authored: Fri Aug 5 15:11:59 2016 -0400
Committer: Pradyut Madhavaram <pr...@gmail.com>
Committed: Fri Aug 5 15:11:59 2016 -0400

----------------------------------------------------------------------
 .../Admin User-checkpoint.ipynb                 |   852 +
 .../Admin-User/Admin User.ipynb                 |   147 +-
 .../Admin-User/airavata_cli.py                  |   134 +
 .../Admin-User/airavata_cli.pyc                 |   Bin 0 -> 4846 bytes
 .../Admin-User/apache/__init__.py               |     0
 .../Admin-User/apache/__init__.pyc              |   Bin 0 -> 105 bytes
 .../apache/__pycache__/__init__.cpython-35.pyc  |   Bin 0 -> 136 bytes
 .../Admin-User/apache/airavata/__init__.py      |     0
 .../Admin-User/apache/airavata/__init__.pyc     |   Bin 0 -> 114 bytes
 .../__pycache__/__init__.cpython-35.pyc         |   Bin 0 -> 145 bytes
 .../apache/airavata/api/Airavata-remote         |   955 +
 .../Admin-User/apache/airavata/api/Airavata.py  | 38230 +++++++++++++++++
 .../Admin-User/apache/airavata/api/Airavata.pyc |   Bin 0 -> 1235837 bytes
 .../Admin-User/apache/airavata/api/__init__.py  |     1 +
 .../Admin-User/apache/airavata/api/__init__.pyc |   Bin 0 -> 183 bytes
 .../Admin-User/apache/airavata/api/constants.py |    12 +
 .../apache/airavata/api/error/__init__.py       |     1 +
 .../apache/airavata/api/error/__init__.pyc      |   Bin 0 -> 173 bytes
 .../apache/airavata/api/error/constants.py      |    11 +
 .../apache/airavata/api/error/ttypes.py         |   940 +
 .../apache/airavata/api/error/ttypes.pyc        |   Bin 0 -> 34083 bytes
 .../Admin-User/apache/airavata/api/ttypes.py    |    33 +
 .../Admin-User/apache/airavata/api/ttypes.pyc   |   Bin 0 -> 1352 bytes
 .../apache/airavata/model/__init__.py           |     1 +
 .../apache/airavata/model/__init__.pyc          |   Bin 0 -> 169 bytes
 .../model/__pycache__/__init__.cpython-35.pyc   |   Bin 0 -> 188 bytes
 .../airavata/model/appcatalog/__init__.py       |     0
 .../airavata/model/appcatalog/__init__.pyc      |   Bin 0 -> 131 bytes
 .../__pycache__/__init__.cpython-35.pyc         |   Bin 0 -> 162 bytes
 .../model/appcatalog/appdeployment/__init__.py  |     1 +
 .../model/appcatalog/appdeployment/__init__.pyc |   Bin 0 -> 194 bytes
 .../model/appcatalog/appdeployment/constants.py |    11 +
 .../model/appcatalog/appdeployment/ttypes.py    |   675 +
 .../model/appcatalog/appdeployment/ttypes.pyc   |   Bin 0 -> 21134 bytes
 .../model/appcatalog/appinterface/__init__.py   |     1 +
 .../model/appcatalog/appinterface/__init__.pyc  |   Bin 0 -> 193 bytes
 .../model/appcatalog/appinterface/constants.py  |    11 +
 .../model/appcatalog/appinterface/ttypes.py     |   193 +
 .../model/appcatalog/appinterface/ttypes.pyc    |   Bin 0 -> 6740 bytes
 .../appcatalog/computeresource/__init__.py      |     1 +
 .../appcatalog/computeresource/__init__.pyc     |   Bin 0 -> 196 bytes
 .../__pycache__/__init__.cpython-35.pyc         |   Bin 0 -> 215 bytes
 .../__pycache__/ttypes.cpython-35.pyc           |   Bin 0 -> 63920 bytes
 .../appcatalog/computeresource/constants.py     |    11 +
 .../model/appcatalog/computeresource/ttypes.py  |  2155 +
 .../model/appcatalog/computeresource/ttypes.pyc |   Bin 0 -> 68459 bytes
 .../model/appcatalog/gatewayprofile/__init__.py |     1 +
 .../appcatalog/gatewayprofile/__init__.pyc      |   Bin 0 -> 195 bytes
 .../appcatalog/gatewayprofile/constants.py      |    11 +
 .../model/appcatalog/gatewayprofile/ttypes.py   |   468 +
 .../model/appcatalog/gatewayprofile/ttypes.pyc  |   Bin 0 -> 15890 bytes
 .../airavata/model/application/__init__.py      |     0
 .../airavata/model/application/__init__.pyc     |   Bin 0 -> 132 bytes
 .../__pycache__/__init__.cpython-35.pyc         |   Bin 0 -> 163 bytes
 .../airavata/model/application/io/__init__.py   |     1 +
 .../airavata/model/application/io/__init__.pyc  |   Bin 0 -> 184 bytes
 .../io/__pycache__/__init__.cpython-35.pyc      |   Bin 0 -> 203 bytes
 .../io/__pycache__/ttypes.cpython-35.pyc        |   Bin 0 -> 13067 bytes
 .../airavata/model/application/io/constants.py  |    11 +
 .../airavata/model/application/io/ttypes.py     |   481 +
 .../airavata/model/application/io/ttypes.pyc    |   Bin 0 -> 13629 bytes
 .../apache/airavata/model/commons/__init__.py   |     1 +
 .../apache/airavata/model/commons/__init__.pyc  |   Bin 0 -> 177 bytes
 .../commons/__pycache__/__init__.cpython-35.pyc |   Bin 0 -> 196 bytes
 .../commons/__pycache__/ttypes.cpython-35.pyc   |   Bin 0 -> 11069 bytes
 .../apache/airavata/model/commons/constants.py  |    12 +
 .../apache/airavata/model/commons/ttypes.py     |   335 +
 .../apache/airavata/model/commons/ttypes.pyc    |   Bin 0 -> 11641 bytes
 .../apache/airavata/model/constants.py          |    11 +
 .../airavata/model/experiment/__init__.py       |     1 +
 .../airavata/model/experiment/__init__.pyc      |   Bin 0 -> 180 bytes
 .../__pycache__/__init__.cpython-35.pyc         |   Bin 0 -> 199 bytes
 .../__pycache__/ttypes.cpython-35.pyc           |   Bin 0 -> 29237 bytes
 .../airavata/model/experiment/constants.py      |    11 +
 .../apache/airavata/model/experiment/ttypes.py  |  1035 +
 .../apache/airavata/model/experiment/ttypes.pyc |   Bin 0 -> 30318 bytes
 .../apache/airavata/model/job/__init__.py       |     1 +
 .../apache/airavata/model/job/__init__.pyc      |   Bin 0 -> 173 bytes
 .../apache/airavata/model/job/constants.py      |    11 +
 .../apache/airavata/model/job/ttypes.py         |   237 +
 .../apache/airavata/model/job/ttypes.pyc        |   Bin 0 -> 7071 bytes
 .../apache/airavata/model/messaging/__init__.py |     0
 .../airavata/model/messaging/__init__.pyc       |   Bin 0 -> 130 bytes
 .../airavata/model/messaging/event/__init__.py  |     1 +
 .../airavata/model/messaging/event/__init__.pyc |   Bin 0 -> 185 bytes
 .../airavata/model/messaging/event/constants.py |    11 +
 .../airavata/model/messaging/event/ttypes.py    |  1426 +
 .../airavata/model/messaging/event/ttypes.pyc   |   Bin 0 -> 48557 bytes
 .../apache/airavata/model/process/__init__.py   |     1 +
 .../apache/airavata/model/process/__init__.pyc  |   Bin 0 -> 177 bytes
 .../apache/airavata/model/process/constants.py  |    11 +
 .../apache/airavata/model/process/ttypes.py     |   360 +
 .../apache/airavata/model/process/ttypes.pyc    |   Bin 0 -> 10922 bytes
 .../airavata/model/scheduling/__init__.py       |     1 +
 .../airavata/model/scheduling/__init__.pyc      |   Bin 0 -> 180 bytes
 .../__pycache__/__init__.cpython-35.pyc         |   Bin 0 -> 199 bytes
 .../__pycache__/ttypes.cpython-35.pyc           |   Bin 0 -> 5645 bytes
 .../airavata/model/scheduling/constants.py      |    11 +
 .../apache/airavata/model/scheduling/ttypes.py  |   191 +
 .../apache/airavata/model/scheduling/ttypes.pyc |   Bin 0 -> 5765 bytes
 .../apache/airavata/model/security/__init__.py  |     1 +
 .../apache/airavata/model/security/__init__.pyc |   Bin 0 -> 178 bytes
 .../apache/airavata/model/security/constants.py |    11 +
 .../apache/airavata/model/security/ttypes.py    |   108 +
 .../apache/airavata/model/security/ttypes.pyc   |   Bin 0 -> 4142 bytes
 .../apache/airavata/model/status/__init__.py    |     1 +
 .../apache/airavata/model/status/__init__.pyc   |   Bin 0 -> 176 bytes
 .../status/__pycache__/__init__.cpython-35.pyc  |   Bin 0 -> 195 bytes
 .../status/__pycache__/ttypes.cpython-35.pyc    |   Bin 0 -> 15087 bytes
 .../apache/airavata/model/status/constants.py   |    11 +
 .../apache/airavata/model/status/ttypes.py      |   542 +
 .../apache/airavata/model/status/ttypes.pyc     |   Bin 0 -> 15977 bytes
 .../apache/airavata/model/task/__init__.py      |     1 +
 .../apache/airavata/model/task/__init__.pyc     |   Bin 0 -> 174 bytes
 .../apache/airavata/model/task/constants.py     |    11 +
 .../apache/airavata/model/task/ttypes.py        |   673 +
 .../apache/airavata/model/task/ttypes.pyc       |   Bin 0 -> 21817 bytes
 .../Admin-User/apache/airavata/model/ttypes.py  |    30 +
 .../Admin-User/apache/airavata/model/ttypes.pyc |   Bin 0 -> 1124 bytes
 .../apache/airavata/model/workflow/__init__.py  |     1 +
 .../apache/airavata/model/workflow/__init__.pyc |   Bin 0 -> 178 bytes
 .../apache/airavata/model/workflow/constants.py |    11 +
 .../apache/airavata/model/workflow/ttypes.py    |   173 +
 .../apache/airavata/model/workflow/ttypes.pyc   |   Bin 0 -> 5938 bytes
 .../apache/airavata/model/workspace/__init__.py |     1 +
 .../airavata/model/workspace/__init__.pyc       |   Bin 0 -> 179 bytes
 .../__pycache__/__init__.cpython-35.pyc         |   Bin 0 -> 198 bytes
 .../workspace/__pycache__/ttypes.cpython-35.pyc |   Bin 0 -> 14112 bytes
 .../airavata/model/workspace/constants.py       |    11 +
 .../model/workspace/experiment/__init__.py      |     1 +
 .../model/workspace/experiment/constants.py     |    14 +
 .../model/workspace/experiment/ttypes.py        |  3474 ++
 .../apache/airavata/model/workspace/ttypes.py   |   460 +
 .../apache/airavata/model/workspace/ttypes.pyc  |   Bin 0 -> 15179 bytes
 .../Admin-User/appcatalog/__init__.pyc          |   Bin 142 -> 142 bytes
 .../Admin-User/appcatalog/appcatalog.py         |     4 +-
 .../Admin-User/appcatalog/appcatalog.pyc        |   Bin 3353 -> 3353 bytes
 .../Admin-User/expcatalog/__init__.pyc          |   Bin 142 -> 142 bytes
 .../Admin-User/expcatalog/expcatalog.pyc        |   Bin 7932 -> 7932 bytes
 .../Admin-User/thrift/Thrift.pyc                |   Bin 4886 -> 4886 bytes
 .../Admin-User/thrift/__init__.pyc              |   Bin 151 -> 151 bytes
 .../thrift/protocol/TBinaryProtocol.pyc         |   Bin 10448 -> 10448 bytes
 .../Admin-User/thrift/protocol/TProtocol.pyc    |   Bin 13517 -> 13517 bytes
 .../Admin-User/thrift/protocol/__init__.pyc     |   Bin 248 -> 248 bytes
 .../Admin-User/thrift/transport/TSocket.pyc     |   Bin 5512 -> 5512 bytes
 .../Admin-User/thrift/transport/TTransport.pyc  |   Bin 12858 -> 12858 bytes
 .../Admin-User/thrift/transport/__init__.pyc    |   Bin 207 -> 207 bytes
 .../create-experiment/apache/__init__.pyc       |   Bin 105 -> 105 bytes
 .../apache/airavata/__init__.pyc                |   Bin 114 -> 114 bytes
 .../apache/airavata/api/Airavata.pyc            |   Bin 1517997 -> 1517997 bytes
 .../apache/airavata/api/__init__.pyc            |   Bin 183 -> 183 bytes
 .../apache/airavata/api/error/__init__.pyc      |   Bin 173 -> 173 bytes
 .../apache/airavata/api/error/ttypes.pyc        |   Bin 34089 -> 34089 bytes
 .../apache/airavata/api/ttypes.pyc              |   Bin 1600 -> 1600 bytes
 .../apache/airavata/model/__init__.pyc          |   Bin 169 -> 169 bytes
 .../airavata/model/appcatalog/__init__.pyc      |   Bin 131 -> 131 bytes
 .../model/appcatalog/appdeployment/__init__.pyc |   Bin 194 -> 194 bytes
 .../model/appcatalog/appdeployment/ttypes.pyc   |   Bin 20381 -> 20381 bytes
 .../model/appcatalog/appinterface/__init__.pyc  |   Bin 193 -> 193 bytes
 .../model/appcatalog/appinterface/ttypes.pyc    |   Bin 7414 -> 7414 bytes
 .../appcatalog/computeresource/__init__.pyc     |   Bin 196 -> 196 bytes
 .../model/appcatalog/computeresource/ttypes.pyc |   Bin 50576 -> 50576 bytes
 .../appcatalog/gatewayprofile/__init__.pyc      |   Bin 195 -> 195 bytes
 .../model/appcatalog/gatewayprofile/ttypes.pyc  |   Bin 16903 -> 16903 bytes
 .../model/appcatalog/parallelism/__init__.pyc   |   Bin 192 -> 192 bytes
 .../model/appcatalog/parallelism/ttypes.pyc     |   Bin 1372 -> 1372 bytes
 .../appcatalog/storageresource/__init__.pyc     |   Bin 196 -> 196 bytes
 .../model/appcatalog/storageresource/ttypes.pyc |   Bin 6028 -> 6028 bytes
 .../airavata/model/application/__init__.pyc     |   Bin 132 -> 132 bytes
 .../airavata/model/application/io/__init__.pyc  |   Bin 184 -> 184 bytes
 .../airavata/model/application/io/ttypes.pyc    |   Bin 14257 -> 14257 bytes
 .../apache/airavata/model/commons/__init__.pyc  |   Bin 177 -> 177 bytes
 .../apache/airavata/model/commons/ttypes.pyc    |   Bin 11641 -> 11641 bytes
 .../apache/airavata/model/data/__init__.pyc     |   Bin 125 -> 125 bytes
 .../airavata/model/data/movement/__init__.pyc   |   Bin 183 -> 183 bytes
 .../airavata/model/data/movement/ttypes.pyc     |   Bin 20859 -> 20859 bytes
 .../airavata/model/data/replica/__init__.pyc    |   Bin 182 -> 182 bytes
 .../airavata/model/data/replica/ttypes.pyc      |   Bin 14489 -> 14489 bytes
 .../airavata/model/experiment/__init__.pyc      |   Bin 180 -> 180 bytes
 .../apache/airavata/model/experiment/ttypes.pyc |   Bin 32151 -> 32151 bytes
 .../apache/airavata/model/group/__init__.pyc    |   Bin 175 -> 175 bytes
 .../apache/airavata/model/group/ttypes.pyc      |   Bin 5482 -> 5482 bytes
 .../apache/airavata/model/job/__init__.pyc      |   Bin 173 -> 173 bytes
 .../apache/airavata/model/job/ttypes.pyc        |   Bin 7071 -> 7071 bytes
 .../airavata/model/messaging/__init__.pyc       |   Bin 130 -> 130 bytes
 .../airavata/model/messaging/event/__init__.pyc |   Bin 185 -> 185 bytes
 .../airavata/model/messaging/event/ttypes.pyc   |   Bin 48557 -> 48557 bytes
 .../apache/airavata/model/process/__init__.pyc  |   Bin 177 -> 177 bytes
 .../apache/airavata/model/process/ttypes.pyc    |   Bin 12365 -> 12365 bytes
 .../airavata/model/scheduling/__init__.pyc      |   Bin 180 -> 180 bytes
 .../apache/airavata/model/scheduling/ttypes.pyc |   Bin 6698 -> 6698 bytes
 .../apache/airavata/model/security/__init__.pyc |   Bin 178 -> 178 bytes
 .../apache/airavata/model/security/ttypes.pyc   |   Bin 4142 -> 4142 bytes
 .../apache/airavata/model/status/__init__.pyc   |   Bin 176 -> 176 bytes
 .../apache/airavata/model/status/ttypes.pyc     |   Bin 15977 -> 15977 bytes
 .../apache/airavata/model/task/__init__.pyc     |   Bin 174 -> 174 bytes
 .../apache/airavata/model/task/ttypes.pyc       |   Bin 22730 -> 22730 bytes
 .../apache/airavata/model/ttypes.pyc            |   Bin 1350 -> 1350 bytes
 .../apache/airavata/model/user/__init__.pyc     |   Bin 174 -> 174 bytes
 .../apache/airavata/model/user/ttypes.pyc       |   Bin 20353 -> 20353 bytes
 .../apache/airavata/model/workflow/__init__.pyc |   Bin 178 -> 178 bytes
 .../apache/airavata/model/workflow/ttypes.pyc   |   Bin 25348 -> 25348 bytes
 .../airavata/model/workspace/__init__.pyc       |   Bin 179 -> 179 bytes
 .../apache/airavata/model/workspace/ttypes.pyc  |   Bin 25091 -> 25091 bytes
 .../create-experiment/thrift/Thrift.pyc         |   Bin 4886 -> 4886 bytes
 .../create-experiment/thrift/__init__.pyc       |   Bin 151 -> 151 bytes
 .../thrift/protocol/TBinaryProtocol.pyc         |   Bin 10448 -> 10448 bytes
 .../thrift/protocol/TProtocol.pyc               |   Bin 13517 -> 13517 bytes
 .../thrift/protocol/__init__.pyc                |   Bin 248 -> 248 bytes
 .../thrift/transport/TSSLSocket.pyc             |   Bin 6546 -> 6546 bytes
 .../thrift/transport/TSocket.pyc                |   Bin 5512 -> 5512 bytes
 .../thrift/transport/TTransport.pyc             |   Bin 12858 -> 12858 bytes
 .../thrift/transport/__init__.pyc               |   Bin 207 -> 207 bytes
 213 files changed, 54507 insertions(+), 49 deletions(-)
----------------------------------------------------------------------



[22/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/ttypes.py
new file mode 100644
index 0000000..e9945f6
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/ttypes.py
@@ -0,0 +1,542 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ExperimentState:
+  CREATED = 0
+  VALIDATED = 1
+  SCHEDULED = 2
+  LAUNCHED = 3
+  EXECUTING = 4
+  CANCELING = 5
+  CANCELED = 6
+  COMPLETED = 7
+  FAILED = 8
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "VALIDATED",
+    2: "SCHEDULED",
+    3: "LAUNCHED",
+    4: "EXECUTING",
+    5: "CANCELING",
+    6: "CANCELED",
+    7: "COMPLETED",
+    8: "FAILED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "VALIDATED": 1,
+    "SCHEDULED": 2,
+    "LAUNCHED": 3,
+    "EXECUTING": 4,
+    "CANCELING": 5,
+    "CANCELED": 6,
+    "COMPLETED": 7,
+    "FAILED": 8,
+  }
+
+class TaskState:
+  CREATED = 0
+  EXECUTING = 1
+  COMPLETED = 2
+  FAILED = 3
+  CANCELED = 4
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "EXECUTING",
+    2: "COMPLETED",
+    3: "FAILED",
+    4: "CANCELED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "EXECUTING": 1,
+    "COMPLETED": 2,
+    "FAILED": 3,
+    "CANCELED": 4,
+  }
+
+class ProcessState:
+  CREATED = 0
+  VALIDATED = 1
+  STARTED = 2
+  PRE_PROCESSING = 3
+  CONFIGURING_WORKSPACE = 4
+  INPUT_DATA_STAGING = 5
+  EXECUTING = 6
+  MONITORING = 7
+  OUTPUT_DATA_STAGING = 8
+  POST_PROCESSING = 9
+  COMPLETED = 10
+  FAILED = 11
+  CANCELLING = 12
+  CANCELED = 13
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "VALIDATED",
+    2: "STARTED",
+    3: "PRE_PROCESSING",
+    4: "CONFIGURING_WORKSPACE",
+    5: "INPUT_DATA_STAGING",
+    6: "EXECUTING",
+    7: "MONITORING",
+    8: "OUTPUT_DATA_STAGING",
+    9: "POST_PROCESSING",
+    10: "COMPLETED",
+    11: "FAILED",
+    12: "CANCELLING",
+    13: "CANCELED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "VALIDATED": 1,
+    "STARTED": 2,
+    "PRE_PROCESSING": 3,
+    "CONFIGURING_WORKSPACE": 4,
+    "INPUT_DATA_STAGING": 5,
+    "EXECUTING": 6,
+    "MONITORING": 7,
+    "OUTPUT_DATA_STAGING": 8,
+    "POST_PROCESSING": 9,
+    "COMPLETED": 10,
+    "FAILED": 11,
+    "CANCELLING": 12,
+    "CANCELED": 13,
+  }
+
+class JobState:
+  SUBMITTED = 0
+  QUEUED = 1
+  ACTIVE = 2
+  COMPLETE = 3
+  CANCELED = 4
+  FAILED = 5
+  SUSPENDED = 6
+  UNKNOWN = 7
+
+  _VALUES_TO_NAMES = {
+    0: "SUBMITTED",
+    1: "QUEUED",
+    2: "ACTIVE",
+    3: "COMPLETE",
+    4: "CANCELED",
+    5: "FAILED",
+    6: "SUSPENDED",
+    7: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SUBMITTED": 0,
+    "QUEUED": 1,
+    "ACTIVE": 2,
+    "COMPLETE": 3,
+    "CANCELED": 4,
+    "FAILED": 5,
+    "SUSPENDED": 6,
+    "UNKNOWN": 7,
+  }
+
+
+class ExperimentStatus:
+  """
+  Status: A generic status object.
+
+  state:
+    State .
+
+  timeOfStateChange:
+    time the status was last updated.
+
+  reason:
+    User friendly reason on how the state is inferred.
+
+
+  Attributes:
+   - state
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, timeOfStateChange=None, reason=None,):
+    self.state = state
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ProcessStatus:
+  """
+  Attributes:
+   - state
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, timeOfStateChange=None, reason=None,):
+    self.state = state
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ProcessStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskStatus:
+  """
+  Attributes:
+   - state
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, timeOfStateChange=None, reason=None,):
+    self.state = state
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobStatus:
+  """
+  Attributes:
+   - jobState
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'jobState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, jobState=None, timeOfStateChange=None, reason=None,):
+    self.jobState = jobState
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.jobState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobStatus')
+    if self.jobState is not None:
+      oprot.writeFieldBegin('jobState', TType.I32, 1)
+      oprot.writeI32(self.jobState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobState is None:
+      raise TProtocol.TProtocolException(message='Required field jobState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/ttypes.pyc
new file mode 100644
index 0000000..bd0815f
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/status/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/__init__.pyc
new file mode 100644
index 0000000..2fa7d44
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/ttypes.py
new file mode 100644
index 0000000..9ac820f
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/ttypes.py
@@ -0,0 +1,673 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.status.ttypes
+import apache.airavata.model.appcatalog.computeresource.ttypes
+import apache.airavata.model.application.io.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class TaskTypes:
+  """
+  TaskTypes: An enumerated list of TaskTypes. Task being generic, the task type will provide the concrete interpretation.
+
+  """
+  ENV_SETUP = 0
+  DATA_STAGING = 1
+  JOB_SUBMISSION = 2
+  ENV_CLEANUP = 3
+  MONITORING = 4
+
+  _VALUES_TO_NAMES = {
+    0: "ENV_SETUP",
+    1: "DATA_STAGING",
+    2: "JOB_SUBMISSION",
+    3: "ENV_CLEANUP",
+    4: "MONITORING",
+  }
+
+  _NAMES_TO_VALUES = {
+    "ENV_SETUP": 0,
+    "DATA_STAGING": 1,
+    "JOB_SUBMISSION": 2,
+    "ENV_CLEANUP": 3,
+    "MONITORING": 4,
+  }
+
+class DataStageType:
+  """
+  DataStagingTaskModel: A structure holding the data staging task details.
+
+  Source and Destination locations includes standard representation of protocol, host, port and path
+    A friendly description of the task, usally used to communicate information to users.
+
+  """
+  INPUT = 0
+  OUPUT = 1
+
+  _VALUES_TO_NAMES = {
+    0: "INPUT",
+    1: "OUPUT",
+  }
+
+  _NAMES_TO_VALUES = {
+    "INPUT": 0,
+    "OUPUT": 1,
+  }
+
+
+class TaskModel:
+  """
+  TaskModel: A structure holding the generic task details.
+
+  taskDetail:
+    A friendly description of the task, usally used to communicate information to users.
+
+  subTaskModel:
+    A generic byte object for the Task developer to store internal serialized data into registry catalogs.
+
+  Attributes:
+   - taskId
+   - taskType
+   - parentProcessId
+   - creationTime
+   - lastUpdateTime
+   - taskStatus
+   - taskDetail
+   - subTaskModel
+   - taskError
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'taskId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I32, 'taskType', None, None, ), # 2
+    (3, TType.STRING, 'parentProcessId', None, None, ), # 3
+    (4, TType.I64, 'creationTime', None, None, ), # 4
+    (5, TType.I64, 'lastUpdateTime', None, None, ), # 5
+    (6, TType.STRUCT, 'taskStatus', (apache.airavata.model.status.ttypes.TaskStatus, apache.airavata.model.status.ttypes.TaskStatus.thrift_spec), None, ), # 6
+    (7, TType.STRING, 'taskDetail', None, None, ), # 7
+    (8, TType.STRING, 'subTaskModel', None, None, ), # 8
+    (9, TType.STRUCT, 'taskError', (apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec), None, ), # 9
+  )
+
+  def __init__(self, taskId=thrift_spec[1][4], taskType=None, parentProcessId=None, creationTime=None, lastUpdateTime=None, taskStatus=None, taskDetail=None, subTaskModel=None, taskError=None,):
+    self.taskId = taskId
+    self.taskType = taskType
+    self.parentProcessId = parentProcessId
+    self.creationTime = creationTime
+    self.lastUpdateTime = lastUpdateTime
+    self.taskStatus = taskStatus
+    self.taskDetail = taskDetail
+    self.subTaskModel = subTaskModel
+    self.taskError = taskError
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.taskId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.taskType = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.parentProcessId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.lastUpdateTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRUCT:
+          self.taskStatus = apache.airavata.model.status.ttypes.TaskStatus()
+          self.taskStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.taskDetail = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.subTaskModel = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRUCT:
+          self.taskError = apache.airavata.model.commons.ttypes.ErrorModel()
+          self.taskError.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskModel')
+    if self.taskId is not None:
+      oprot.writeFieldBegin('taskId', TType.STRING, 1)
+      oprot.writeString(self.taskId)
+      oprot.writeFieldEnd()
+    if self.taskType is not None:
+      oprot.writeFieldBegin('taskType', TType.I32, 2)
+      oprot.writeI32(self.taskType)
+      oprot.writeFieldEnd()
+    if self.parentProcessId is not None:
+      oprot.writeFieldBegin('parentProcessId', TType.STRING, 3)
+      oprot.writeString(self.parentProcessId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 4)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.lastUpdateTime is not None:
+      oprot.writeFieldBegin('lastUpdateTime', TType.I64, 5)
+      oprot.writeI64(self.lastUpdateTime)
+      oprot.writeFieldEnd()
+    if self.taskStatus is not None:
+      oprot.writeFieldBegin('taskStatus', TType.STRUCT, 6)
+      self.taskStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.taskDetail is not None:
+      oprot.writeFieldBegin('taskDetail', TType.STRING, 7)
+      oprot.writeString(self.taskDetail)
+      oprot.writeFieldEnd()
+    if self.subTaskModel is not None:
+      oprot.writeFieldBegin('subTaskModel', TType.STRING, 8)
+      oprot.writeString(self.subTaskModel)
+      oprot.writeFieldEnd()
+    if self.taskError is not None:
+      oprot.writeFieldBegin('taskError', TType.STRUCT, 9)
+      self.taskError.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.taskId is None:
+      raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.taskType is None:
+      raise TProtocol.TProtocolException(message='Required field taskType is unset!')
+    if self.parentProcessId is None:
+      raise TProtocol.TProtocolException(message='Required field parentProcessId is unset!')
+    if self.creationTime is None:
+      raise TProtocol.TProtocolException(message='Required field creationTime is unset!')
+    if self.lastUpdateTime is None:
+      raise TProtocol.TProtocolException(message='Required field lastUpdateTime is unset!')
+    if self.taskStatus is None:
+      raise TProtocol.TProtocolException(message='Required field taskStatus is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.taskType)
+    value = (value * 31) ^ hash(self.parentProcessId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.lastUpdateTime)
+    value = (value * 31) ^ hash(self.taskStatus)
+    value = (value * 31) ^ hash(self.taskDetail)
+    value = (value * 31) ^ hash(self.subTaskModel)
+    value = (value * 31) ^ hash(self.taskError)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataStagingTaskModel:
+  """
+  Attributes:
+   - source
+   - destination
+   - type
+   - transferStartTime
+   - transferEndTime
+   - transferRate
+   - processInput
+   - processOutput
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'source', None, None, ), # 1
+    (2, TType.STRING, 'destination', None, None, ), # 2
+    (3, TType.I32, 'type', None, None, ), # 3
+    (4, TType.I64, 'transferStartTime', None, None, ), # 4
+    (5, TType.I64, 'transferEndTime', None, None, ), # 5
+    (6, TType.STRING, 'transferRate', None, None, ), # 6
+    (7, TType.STRUCT, 'processInput', (apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec), None, ), # 7
+    (8, TType.STRUCT, 'processOutput', (apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec), None, ), # 8
+  )
+
+  def __init__(self, source=None, destination=None, type=None, transferStartTime=None, transferEndTime=None, transferRate=None, processInput=None, processOutput=None,):
+    self.source = source
+    self.destination = destination
+    self.type = type
+    self.transferStartTime = transferStartTime
+    self.transferEndTime = transferEndTime
+    self.transferRate = transferRate
+    self.processInput = processInput
+    self.processOutput = processOutput
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.source = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.destination = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.type = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.transferStartTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.transferEndTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.transferRate = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRUCT:
+          self.processInput = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+          self.processInput.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRUCT:
+          self.processOutput = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+          self.processOutput.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataStagingTaskModel')
+    if self.source is not None:
+      oprot.writeFieldBegin('source', TType.STRING, 1)
+      oprot.writeString(self.source)
+      oprot.writeFieldEnd()
+    if self.destination is not None:
+      oprot.writeFieldBegin('destination', TType.STRING, 2)
+      oprot.writeString(self.destination)
+      oprot.writeFieldEnd()
+    if self.type is not None:
+      oprot.writeFieldBegin('type', TType.I32, 3)
+      oprot.writeI32(self.type)
+      oprot.writeFieldEnd()
+    if self.transferStartTime is not None:
+      oprot.writeFieldBegin('transferStartTime', TType.I64, 4)
+      oprot.writeI64(self.transferStartTime)
+      oprot.writeFieldEnd()
+    if self.transferEndTime is not None:
+      oprot.writeFieldBegin('transferEndTime', TType.I64, 5)
+      oprot.writeI64(self.transferEndTime)
+      oprot.writeFieldEnd()
+    if self.transferRate is not None:
+      oprot.writeFieldBegin('transferRate', TType.STRING, 6)
+      oprot.writeString(self.transferRate)
+      oprot.writeFieldEnd()
+    if self.processInput is not None:
+      oprot.writeFieldBegin('processInput', TType.STRUCT, 7)
+      self.processInput.write(oprot)
+      oprot.writeFieldEnd()
+    if self.processOutput is not None:
+      oprot.writeFieldBegin('processOutput', TType.STRUCT, 8)
+      self.processOutput.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.source is None:
+      raise TProtocol.TProtocolException(message='Required field source is unset!')
+    if self.destination is None:
+      raise TProtocol.TProtocolException(message='Required field destination is unset!')
+    if self.type is None:
+      raise TProtocol.TProtocolException(message='Required field type is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.source)
+    value = (value * 31) ^ hash(self.destination)
+    value = (value * 31) ^ hash(self.type)
+    value = (value * 31) ^ hash(self.transferStartTime)
+    value = (value * 31) ^ hash(self.transferEndTime)
+    value = (value * 31) ^ hash(self.transferRate)
+    value = (value * 31) ^ hash(self.processInput)
+    value = (value * 31) ^ hash(self.processOutput)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class EnvironmentSetupTaskModel:
+  """
+  EnvironmentSetupTaskModel: A structure holding the environment creation task details
+
+
+  Attributes:
+   - location
+   - protocol
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'location', None, None, ), # 1
+    (2, TType.I32, 'protocol', None, None, ), # 2
+  )
+
+  def __init__(self, location=None, protocol=None,):
+    self.location = location
+    self.protocol = protocol
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.location = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.protocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('EnvironmentSetupTaskModel')
+    if self.location is not None:
+      oprot.writeFieldBegin('location', TType.STRING, 1)
+      oprot.writeString(self.location)
+      oprot.writeFieldEnd()
+    if self.protocol is not None:
+      oprot.writeFieldBegin('protocol', TType.I32, 2)
+      oprot.writeI32(self.protocol)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.location is None:
+      raise TProtocol.TProtocolException(message='Required field location is unset!')
+    if self.protocol is None:
+      raise TProtocol.TProtocolException(message='Required field protocol is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.location)
+    value = (value * 31) ^ hash(self.protocol)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobSubmissionTaskModel:
+  """
+  Attributes:
+   - jobSubmissionProtocol
+   - monitorMode
+   - wallTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'jobSubmissionProtocol', None, None, ), # 1
+    (2, TType.I32, 'monitorMode', None, None, ), # 2
+    (3, TType.I32, 'wallTime', None, None, ), # 3
+  )
+
+  def __init__(self, jobSubmissionProtocol=None, monitorMode=None, wallTime=None,):
+    self.jobSubmissionProtocol = jobSubmissionProtocol
+    self.monitorMode = monitorMode
+    self.wallTime = wallTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.jobSubmissionProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.monitorMode = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.wallTime = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobSubmissionTaskModel')
+    if self.jobSubmissionProtocol is not None:
+      oprot.writeFieldBegin('jobSubmissionProtocol', TType.I32, 1)
+      oprot.writeI32(self.jobSubmissionProtocol)
+      oprot.writeFieldEnd()
+    if self.monitorMode is not None:
+      oprot.writeFieldBegin('monitorMode', TType.I32, 2)
+      oprot.writeI32(self.monitorMode)
+      oprot.writeFieldEnd()
+    if self.wallTime is not None:
+      oprot.writeFieldBegin('wallTime', TType.I32, 3)
+      oprot.writeI32(self.wallTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobSubmissionProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field jobSubmissionProtocol is unset!')
+    if self.monitorMode is None:
+      raise TProtocol.TProtocolException(message='Required field monitorMode is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobSubmissionProtocol)
+    value = (value * 31) ^ hash(self.monitorMode)
+    value = (value * 31) ^ hash(self.wallTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class MonitorTaskModel:
+  """
+  Attributes:
+   - monitorMode
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'monitorMode', None, None, ), # 1
+  )
+
+  def __init__(self, monitorMode=None,):
+    self.monitorMode = monitorMode
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.monitorMode = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('MonitorTaskModel')
+    if self.monitorMode is not None:
+      oprot.writeFieldBegin('monitorMode', TType.I32, 1)
+      oprot.writeI32(self.monitorMode)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.monitorMode is None:
+      raise TProtocol.TProtocolException(message='Required field monitorMode is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.monitorMode)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/ttypes.pyc
new file mode 100644
index 0000000..4015179
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/task/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/ttypes.py
new file mode 100644
index 0000000..b88a91b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/ttypes.py
@@ -0,0 +1,30 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+import apache.airavata.model.workspace.ttypes
+import apache.airavata.api.error.ttypes
+import apache.airavata.model.messaging.event.ttypes
+import apache.airavata.model.security.ttypes
+import apache.airavata.model.experiment.ttypes
+import apache.airavata.model.job.ttypes
+import apache.airavata.model.task.ttypes
+import apache.airavata.model.process.ttypes
+import apache.airavata.model.scheduling.ttypes
+import apache.airavata.model.status.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/ttypes.pyc
new file mode 100644
index 0000000..06be530
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/__init__.pyc
new file mode 100644
index 0000000..a817720
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/ttypes.py
new file mode 100644
index 0000000..20ce908
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/ttypes.py
@@ -0,0 +1,173 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+
+class Workflow:
+  """
+  Attributes:
+   - templateId
+   - name
+   - graph
+   - image
+   - workflowInputs
+   - workflowOutputs
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'templateId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRING, 'graph', None, None, ), # 3
+    (4, TType.STRING, 'image', None, None, ), # 4
+    (5, TType.LIST, 'workflowInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 5
+    (6, TType.LIST, 'workflowOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 6
+  )
+
+  def __init__(self, templateId=thrift_spec[1][4], name=None, graph=None, image=None, workflowInputs=None, workflowOutputs=None,):
+    self.templateId = templateId
+    self.name = name
+    self.graph = graph
+    self.image = image
+    self.workflowInputs = workflowInputs
+    self.workflowOutputs = workflowOutputs
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.templateId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.graph = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.image = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.LIST:
+          self.workflowInputs = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem5.read(iprot)
+            self.workflowInputs.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.workflowOutputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem11.read(iprot)
+            self.workflowOutputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Workflow')
+    if self.templateId is not None:
+      oprot.writeFieldBegin('templateId', TType.STRING, 1)
+      oprot.writeString(self.templateId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.graph is not None:
+      oprot.writeFieldBegin('graph', TType.STRING, 3)
+      oprot.writeString(self.graph)
+      oprot.writeFieldEnd()
+    if self.image is not None:
+      oprot.writeFieldBegin('image', TType.STRING, 4)
+      oprot.writeString(self.image)
+      oprot.writeFieldEnd()
+    if self.workflowInputs is not None:
+      oprot.writeFieldBegin('workflowInputs', TType.LIST, 5)
+      oprot.writeListBegin(TType.STRUCT, len(self.workflowInputs))
+      for iter12 in self.workflowInputs:
+        iter12.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.workflowOutputs is not None:
+      oprot.writeFieldBegin('workflowOutputs', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.workflowOutputs))
+      for iter13 in self.workflowOutputs:
+        iter13.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.templateId is None:
+      raise TProtocol.TProtocolException(message='Required field templateId is unset!')
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.templateId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.graph)
+    value = (value * 31) ^ hash(self.image)
+    value = (value * 31) ^ hash(self.workflowInputs)
+    value = (value * 31) ^ hash(self.workflowOutputs)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/ttypes.pyc
new file mode 100644
index 0000000..72e12f1
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workflow/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__init__.pyc
new file mode 100644
index 0000000..61ccf23
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__pycache__/__init__.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__pycache__/__init__.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__pycache__/__init__.cpython-35.pyc
new file mode 100644
index 0000000..9cca49b
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__pycache__/__init__.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__pycache__/ttypes.cpython-35.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__pycache__/ttypes.cpython-35.pyc b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__pycache__/ttypes.cpython-35.pyc
new file mode 100644
index 0000000..d29cedd
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/__pycache__/ttypes.cpython-35.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/constants.py
new file mode 100644
index 0000000..99717a9
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/constants.py
new file mode 100644
index 0000000..f9a3855
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/constants.py
@@ -0,0 +1,14 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+
+DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+DEFAULT_PROJECT_NAME = "DEFAULT"
+SINGLE_APP_NODE_NAME = "SINGLE_APP_NODE"


[21/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/ttypes.py
new file mode 100644
index 0000000..d227f3f
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/model/workspace/experiment/ttypes.py
@@ -0,0 +1,3474 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.appcatalog.computeresource.ttypes
+import apache.airavata.model.appcatalog.appinterface.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class ExperimentState:
+  CREATED = 0
+  VALIDATED = 1
+  SCHEDULED = 2
+  LAUNCHED = 3
+  EXECUTING = 4
+  CANCELING = 5
+  CANCELED = 6
+  SUSPENDED = 7
+  COMPLETED = 8
+  FAILED = 9
+  UNKNOWN = 10
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "VALIDATED",
+    2: "SCHEDULED",
+    3: "LAUNCHED",
+    4: "EXECUTING",
+    5: "CANCELING",
+    6: "CANCELED",
+    7: "SUSPENDED",
+    8: "COMPLETED",
+    9: "FAILED",
+    10: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "VALIDATED": 1,
+    "SCHEDULED": 2,
+    "LAUNCHED": 3,
+    "EXECUTING": 4,
+    "CANCELING": 5,
+    "CANCELED": 6,
+    "SUSPENDED": 7,
+    "COMPLETED": 8,
+    "FAILED": 9,
+    "UNKNOWN": 10,
+  }
+
+class ExperimentSearchFields:
+  EXPERIMENT_NAME = 0
+  EXPERIMENT_DESC = 1
+  APPLICATION_ID = 2
+  FROM_DATE = 3
+  TO_DATE = 4
+  STATUS = 5
+
+  _VALUES_TO_NAMES = {
+    0: "EXPERIMENT_NAME",
+    1: "EXPERIMENT_DESC",
+    2: "APPLICATION_ID",
+    3: "FROM_DATE",
+    4: "TO_DATE",
+    5: "STATUS",
+  }
+
+  _NAMES_TO_VALUES = {
+    "EXPERIMENT_NAME": 0,
+    "EXPERIMENT_DESC": 1,
+    "APPLICATION_ID": 2,
+    "FROM_DATE": 3,
+    "TO_DATE": 4,
+    "STATUS": 5,
+  }
+
+class WorkflowNodeState:
+  INVOKED = 0
+  EXECUTING = 1
+  CANCELING = 2
+  CANCELED = 3
+  SUSPENDED = 4
+  COMPLETED = 5
+  FAILED = 6
+  UNKNOWN = 7
+
+  _VALUES_TO_NAMES = {
+    0: "INVOKED",
+    1: "EXECUTING",
+    2: "CANCELING",
+    3: "CANCELED",
+    4: "SUSPENDED",
+    5: "COMPLETED",
+    6: "FAILED",
+    7: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "INVOKED": 0,
+    "EXECUTING": 1,
+    "CANCELING": 2,
+    "CANCELED": 3,
+    "SUSPENDED": 4,
+    "COMPLETED": 5,
+    "FAILED": 6,
+    "UNKNOWN": 7,
+  }
+
+class TaskState:
+  WAITING = 0
+  STARTED = 1
+  PRE_PROCESSING = 2
+  CONFIGURING_WORKSPACE = 3
+  INPUT_DATA_STAGING = 4
+  OUTPUT_DATA_STAGING = 5
+  POST_PROCESSING = 6
+  EXECUTING = 7
+  CANCELING = 8
+  CANCELED = 9
+  COMPLETED = 10
+  FAILED = 11
+  UNKNOWN = 12
+
+  _VALUES_TO_NAMES = {
+    0: "WAITING",
+    1: "STARTED",
+    2: "PRE_PROCESSING",
+    3: "CONFIGURING_WORKSPACE",
+    4: "INPUT_DATA_STAGING",
+    5: "OUTPUT_DATA_STAGING",
+    6: "POST_PROCESSING",
+    7: "EXECUTING",
+    8: "CANCELING",
+    9: "CANCELED",
+    10: "COMPLETED",
+    11: "FAILED",
+    12: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "WAITING": 0,
+    "STARTED": 1,
+    "PRE_PROCESSING": 2,
+    "CONFIGURING_WORKSPACE": 3,
+    "INPUT_DATA_STAGING": 4,
+    "OUTPUT_DATA_STAGING": 5,
+    "POST_PROCESSING": 6,
+    "EXECUTING": 7,
+    "CANCELING": 8,
+    "CANCELED": 9,
+    "COMPLETED": 10,
+    "FAILED": 11,
+    "UNKNOWN": 12,
+  }
+
+class JobState:
+  SUBMITTED = 0
+  UN_SUBMITTED = 1
+  SETUP = 2
+  QUEUED = 3
+  ACTIVE = 4
+  COMPLETE = 5
+  CANCELING = 6
+  CANCELED = 7
+  FAILED = 8
+  HELD = 9
+  SUSPENDED = 10
+  UNKNOWN = 11
+
+  _VALUES_TO_NAMES = {
+    0: "SUBMITTED",
+    1: "UN_SUBMITTED",
+    2: "SETUP",
+    3: "QUEUED",
+    4: "ACTIVE",
+    5: "COMPLETE",
+    6: "CANCELING",
+    7: "CANCELED",
+    8: "FAILED",
+    9: "HELD",
+    10: "SUSPENDED",
+    11: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "SUBMITTED": 0,
+    "UN_SUBMITTED": 1,
+    "SETUP": 2,
+    "QUEUED": 3,
+    "ACTIVE": 4,
+    "COMPLETE": 5,
+    "CANCELING": 6,
+    "CANCELED": 7,
+    "FAILED": 8,
+    "HELD": 9,
+    "SUSPENDED": 10,
+    "UNKNOWN": 11,
+  }
+
+class TransferState:
+  DIRECTORY_SETUP = 0
+  UPLOAD = 1
+  DOWNLOAD = 2
+  ACTIVE = 3
+  COMPLETE = 4
+  STDOUT_DOWNLOAD = 5
+  STDERROR_DOWNLOAD = 6
+  CANCELING = 7
+  CANCELED = 8
+  FAILED = 9
+  HELD = 10
+  SUSPENDED = 11
+  UNKNOWN = 12
+
+  _VALUES_TO_NAMES = {
+    0: "DIRECTORY_SETUP",
+    1: "UPLOAD",
+    2: "DOWNLOAD",
+    3: "ACTIVE",
+    4: "COMPLETE",
+    5: "STDOUT_DOWNLOAD",
+    6: "STDERROR_DOWNLOAD",
+    7: "CANCELING",
+    8: "CANCELED",
+    9: "FAILED",
+    10: "HELD",
+    11: "SUSPENDED",
+    12: "UNKNOWN",
+  }
+
+  _NAMES_TO_VALUES = {
+    "DIRECTORY_SETUP": 0,
+    "UPLOAD": 1,
+    "DOWNLOAD": 2,
+    "ACTIVE": 3,
+    "COMPLETE": 4,
+    "STDOUT_DOWNLOAD": 5,
+    "STDERROR_DOWNLOAD": 6,
+    "CANCELING": 7,
+    "CANCELED": 8,
+    "FAILED": 9,
+    "HELD": 10,
+    "SUSPENDED": 11,
+    "UNKNOWN": 12,
+  }
+
+class ActionableGroup:
+  RESOURCE_ADMINS = 0
+  AIRAVATA_ADMINS = 1
+  GATEWAYS_ADMINS = 2
+  USER = 3
+  CANNOT_BE_DETERMINED = 4
+
+  _VALUES_TO_NAMES = {
+    0: "RESOURCE_ADMINS",
+    1: "AIRAVATA_ADMINS",
+    2: "GATEWAYS_ADMINS",
+    3: "USER",
+    4: "CANNOT_BE_DETERMINED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "RESOURCE_ADMINS": 0,
+    "AIRAVATA_ADMINS": 1,
+    "GATEWAYS_ADMINS": 2,
+    "USER": 3,
+    "CANNOT_BE_DETERMINED": 4,
+  }
+
+class ErrorCategory:
+  FILE_SYSTEM_FAILURE = 0
+  APPLICATION_FAILURE = 1
+  RESOURCE_NODE_FAILURE = 2
+  DISK_FULL = 3
+  INSUFFICIENT_ALLOCATION = 4
+  SYSTEM_MAINTENANCE = 5
+  AIRAVATA_INTERNAL_ERROR = 6
+  CANNOT_BE_DETERMINED = 7
+
+  _VALUES_TO_NAMES = {
+    0: "FILE_SYSTEM_FAILURE",
+    1: "APPLICATION_FAILURE",
+    2: "RESOURCE_NODE_FAILURE",
+    3: "DISK_FULL",
+    4: "INSUFFICIENT_ALLOCATION",
+    5: "SYSTEM_MAINTENANCE",
+    6: "AIRAVATA_INTERNAL_ERROR",
+    7: "CANNOT_BE_DETERMINED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "FILE_SYSTEM_FAILURE": 0,
+    "APPLICATION_FAILURE": 1,
+    "RESOURCE_NODE_FAILURE": 2,
+    "DISK_FULL": 3,
+    "INSUFFICIENT_ALLOCATION": 4,
+    "SYSTEM_MAINTENANCE": 5,
+    "AIRAVATA_INTERNAL_ERROR": 6,
+    "CANNOT_BE_DETERMINED": 7,
+  }
+
+class CorrectiveAction:
+  RETRY_SUBMISSION = 0
+  CONTACT_SUPPORT = 1
+  CANNOT_BE_DETERMINED = 2
+
+  _VALUES_TO_NAMES = {
+    0: "RETRY_SUBMISSION",
+    1: "CONTACT_SUPPORT",
+    2: "CANNOT_BE_DETERMINED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "RETRY_SUBMISSION": 0,
+    "CONTACT_SUPPORT": 1,
+    "CANNOT_BE_DETERMINED": 2,
+  }
+
+class ExecutionUnit:
+  INPUT = 0
+  APPLICATION = 1
+  OUTPUT = 2
+  OTHER = 3
+
+  _VALUES_TO_NAMES = {
+    0: "INPUT",
+    1: "APPLICATION",
+    2: "OUTPUT",
+    3: "OTHER",
+  }
+
+  _NAMES_TO_VALUES = {
+    "INPUT": 0,
+    "APPLICATION": 1,
+    "OUTPUT": 2,
+    "OTHER": 3,
+  }
+
+
+class ExperimentStatus:
+  """
+  Attributes:
+   - experimentState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'experimentState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, experimentState=None, timeOfStateChange=None,):
+    self.experimentState = experimentState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.experimentState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ExperimentStatus')
+    if self.experimentState is not None:
+      oprot.writeFieldBegin('experimentState', TType.I32, 1)
+      oprot.writeI32(self.experimentState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.experimentState is None:
+      raise TProtocol.TProtocolException(message='Required field experimentState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.experimentState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class WorkflowNodeStatus:
+  """
+  Attributes:
+   - workflowNodeState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'workflowNodeState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, workflowNodeState=None, timeOfStateChange=None,):
+    self.workflowNodeState = workflowNodeState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.workflowNodeState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('WorkflowNodeStatus')
+    if self.workflowNodeState is not None:
+      oprot.writeFieldBegin('workflowNodeState', TType.I32, 1)
+      oprot.writeI32(self.workflowNodeState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.workflowNodeState is None:
+      raise TProtocol.TProtocolException(message='Required field workflowNodeState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.workflowNodeState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskStatus:
+  """
+  Attributes:
+   - executionState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'executionState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, executionState=None, timeOfStateChange=None,):
+    self.executionState = executionState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.executionState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskStatus')
+    if self.executionState is not None:
+      oprot.writeFieldBegin('executionState', TType.I32, 1)
+      oprot.writeI32(self.executionState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.executionState is None:
+      raise TProtocol.TProtocolException(message='Required field executionState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.executionState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobStatus:
+  """
+  Attributes:
+   - jobState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'jobState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, jobState=None, timeOfStateChange=None,):
+    self.jobState = jobState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.jobState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobStatus')
+    if self.jobState is not None:
+      oprot.writeFieldBegin('jobState', TType.I32, 1)
+      oprot.writeI32(self.jobState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobState is None:
+      raise TProtocol.TProtocolException(message='Required field jobState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TransferStatus:
+  """
+  Attributes:
+   - transferState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'transferState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, transferState=None, timeOfStateChange=None,):
+    self.transferState = transferState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.transferState = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TransferStatus')
+    if self.transferState is not None:
+      oprot.writeFieldBegin('transferState', TType.I32, 1)
+      oprot.writeI32(self.transferState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.transferState is None:
+      raise TProtocol.TProtocolException(message='Required field transferState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.transferState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ApplicationStatus:
+  """
+  Attributes:
+   - applicationState
+   - timeOfStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'applicationState', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+  )
+
+  def __init__(self, applicationState=None, timeOfStateChange=None,):
+    self.applicationState = applicationState
+    self.timeOfStateChange = timeOfStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.applicationState = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ApplicationStatus')
+    if self.applicationState is not None:
+      oprot.writeFieldBegin('applicationState', TType.STRING, 1)
+      oprot.writeString(self.applicationState)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.applicationState is None:
+      raise TProtocol.TProtocolException(message='Required field applicationState is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.applicationState)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ComputationalResourceScheduling:
+  """
+  A structure holding the Computational Resource Scheduling.
+
+
+  Attributes:
+   - resourceHostId
+   - totalCPUCount
+   - nodeCount
+   - numberOfThreads
+   - queueName
+   - wallTimeLimit
+   - jobStartTime
+   - totalPhysicalMemory
+   - computationalProjectAccount
+   - chassisName
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'resourceHostId', None, None, ), # 1
+    (2, TType.I32, 'totalCPUCount', None, None, ), # 2
+    (3, TType.I32, 'nodeCount', None, None, ), # 3
+    (4, TType.I32, 'numberOfThreads', None, None, ), # 4
+    (5, TType.STRING, 'queueName', None, None, ), # 5
+    (6, TType.I32, 'wallTimeLimit', None, None, ), # 6
+    (7, TType.I32, 'jobStartTime', None, None, ), # 7
+    (8, TType.I32, 'totalPhysicalMemory', None, None, ), # 8
+    (9, TType.STRING, 'computationalProjectAccount', None, None, ), # 9
+    (10, TType.STRING, 'chassisName', None, None, ), # 10
+  )
+
+  def __init__(self, resourceHostId=None, totalCPUCount=None, nodeCount=None, numberOfThreads=None, queueName=None, wallTimeLimit=None, jobStartTime=None, totalPhysicalMemory=None, computationalProjectAccount=None, chassisName=None,):
+    self.resourceHostId = resourceHostId
+    self.totalCPUCount = totalCPUCount
+    self.nodeCount = nodeCount
+    self.numberOfThreads = numberOfThreads
+    self.queueName = queueName
+    self.wallTimeLimit = wallTimeLimit
+    self.jobStartTime = jobStartTime
+    self.totalPhysicalMemory = totalPhysicalMemory
+    self.computationalProjectAccount = computationalProjectAccount
+    self.chassisName = chassisName
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.resourceHostId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.totalCPUCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.nodeCount = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.numberOfThreads = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.queueName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.wallTimeLimit = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.jobStartTime = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.totalPhysicalMemory = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.computationalProjectAccount = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.chassisName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComputationalResourceScheduling')
+    if self.resourceHostId is not None:
+      oprot.writeFieldBegin('resourceHostId', TType.STRING, 1)
+      oprot.writeString(self.resourceHostId)
+      oprot.writeFieldEnd()
+    if self.totalCPUCount is not None:
+      oprot.writeFieldBegin('totalCPUCount', TType.I32, 2)
+      oprot.writeI32(self.totalCPUCount)
+      oprot.writeFieldEnd()
+    if self.nodeCount is not None:
+      oprot.writeFieldBegin('nodeCount', TType.I32, 3)
+      oprot.writeI32(self.nodeCount)
+      oprot.writeFieldEnd()
+    if self.numberOfThreads is not None:
+      oprot.writeFieldBegin('numberOfThreads', TType.I32, 4)
+      oprot.writeI32(self.numberOfThreads)
+      oprot.writeFieldEnd()
+    if self.queueName is not None:
+      oprot.writeFieldBegin('queueName', TType.STRING, 5)
+      oprot.writeString(self.queueName)
+      oprot.writeFieldEnd()
+    if self.wallTimeLimit is not None:
+      oprot.writeFieldBegin('wallTimeLimit', TType.I32, 6)
+      oprot.writeI32(self.wallTimeLimit)
+      oprot.writeFieldEnd()
+    if self.jobStartTime is not None:
+      oprot.writeFieldBegin('jobStartTime', TType.I32, 7)
+      oprot.writeI32(self.jobStartTime)
+      oprot.writeFieldEnd()
+    if self.totalPhysicalMemory is not None:
+      oprot.writeFieldBegin('totalPhysicalMemory', TType.I32, 8)
+      oprot.writeI32(self.totalPhysicalMemory)
+      oprot.writeFieldEnd()
+    if self.computationalProjectAccount is not None:
+      oprot.writeFieldBegin('computationalProjectAccount', TType.STRING, 9)
+      oprot.writeString(self.computationalProjectAccount)
+      oprot.writeFieldEnd()
+    if self.chassisName is not None:
+      oprot.writeFieldBegin('chassisName', TType.STRING, 10)
+      oprot.writeString(self.chassisName)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.resourceHostId)
+    value = (value * 31) ^ hash(self.totalCPUCount)
+    value = (value * 31) ^ hash(self.nodeCount)
+    value = (value * 31) ^ hash(self.numberOfThreads)
+    value = (value * 31) ^ hash(self.queueName)
+    value = (value * 31) ^ hash(self.wallTimeLimit)
+    value = (value * 31) ^ hash(self.jobStartTime)
+    value = (value * 31) ^ hash(self.totalPhysicalMemory)
+    value = (value * 31) ^ hash(self.computationalProjectAccount)
+    value = (value * 31) ^ hash(self.chassisName)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AdvancedInputDataHandling:
+  """
+  A structure holding specified input data handling.
+
+
+  Attributes:
+   - stageInputFilesToWorkingDir
+   - parentWorkingDirectory
+   - uniqueWorkingDirectory
+   - cleanUpWorkingDirAfterJob
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'stageInputFilesToWorkingDir', None, False, ), # 1
+    (2, TType.STRING, 'parentWorkingDirectory', None, None, ), # 2
+    (3, TType.STRING, 'uniqueWorkingDirectory', None, None, ), # 3
+    (4, TType.BOOL, 'cleanUpWorkingDirAfterJob', None, False, ), # 4
+  )
+
+  def __init__(self, stageInputFilesToWorkingDir=thrift_spec[1][4], parentWorkingDirectory=None, uniqueWorkingDirectory=None, cleanUpWorkingDirAfterJob=thrift_spec[4][4],):
+    self.stageInputFilesToWorkingDir = stageInputFilesToWorkingDir
+    self.parentWorkingDirectory = parentWorkingDirectory
+    self.uniqueWorkingDirectory = uniqueWorkingDirectory
+    self.cleanUpWorkingDirAfterJob = cleanUpWorkingDirAfterJob
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.stageInputFilesToWorkingDir = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.parentWorkingDirectory = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.uniqueWorkingDirectory = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.BOOL:
+          self.cleanUpWorkingDirAfterJob = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AdvancedInputDataHandling')
+    if self.stageInputFilesToWorkingDir is not None:
+      oprot.writeFieldBegin('stageInputFilesToWorkingDir', TType.BOOL, 1)
+      oprot.writeBool(self.stageInputFilesToWorkingDir)
+      oprot.writeFieldEnd()
+    if self.parentWorkingDirectory is not None:
+      oprot.writeFieldBegin('parentWorkingDirectory', TType.STRING, 2)
+      oprot.writeString(self.parentWorkingDirectory)
+      oprot.writeFieldEnd()
+    if self.uniqueWorkingDirectory is not None:
+      oprot.writeFieldBegin('uniqueWorkingDirectory', TType.STRING, 3)
+      oprot.writeString(self.uniqueWorkingDirectory)
+      oprot.writeFieldEnd()
+    if self.cleanUpWorkingDirAfterJob is not None:
+      oprot.writeFieldBegin('cleanUpWorkingDirAfterJob', TType.BOOL, 4)
+      oprot.writeBool(self.cleanUpWorkingDirAfterJob)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.stageInputFilesToWorkingDir)
+    value = (value * 31) ^ hash(self.parentWorkingDirectory)
+    value = (value * 31) ^ hash(self.uniqueWorkingDirectory)
+    value = (value * 31) ^ hash(self.cleanUpWorkingDirAfterJob)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class AdvancedOutputDataHandling:
+  """
+  A structure holding specified output data handling.
+
+
+  Attributes:
+   - outputDataDir
+   - dataRegistryURL
+   - persistOutputData
+  """
+
+  thrift_spec = (
+    None, # 0
+    None, # 1
+    (2, TType.STRING, 'outputDataDir', None, None, ), # 2
+    (3, TType.STRING, 'dataRegistryURL', None, None, ), # 3
+    (4, TType.BOOL, 'persistOutputData', None, True, ), # 4
+  )
+
+  def __init__(self, outputDataDir=None, dataRegistryURL=None, persistOutputData=thrift_spec[4][4],):
+    self.outputDataDir = outputDataDir
+    self.dataRegistryURL = dataRegistryURL
+    self.persistOutputData = persistOutputData
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 2:
+        if ftype == TType.STRING:
+          self.outputDataDir = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.dataRegistryURL = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.BOOL:
+          self.persistOutputData = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('AdvancedOutputDataHandling')
+    if self.outputDataDir is not None:
+      oprot.writeFieldBegin('outputDataDir', TType.STRING, 2)
+      oprot.writeString(self.outputDataDir)
+      oprot.writeFieldEnd()
+    if self.dataRegistryURL is not None:
+      oprot.writeFieldBegin('dataRegistryURL', TType.STRING, 3)
+      oprot.writeString(self.dataRegistryURL)
+      oprot.writeFieldEnd()
+    if self.persistOutputData is not None:
+      oprot.writeFieldBegin('persistOutputData', TType.BOOL, 4)
+      oprot.writeBool(self.persistOutputData)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.outputDataDir)
+    value = (value * 31) ^ hash(self.dataRegistryURL)
+    value = (value * 31) ^ hash(self.persistOutputData)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class QualityOfServiceParams:
+  """
+  A structure holding Quality of Service Parameters.
+
+
+  Attributes:
+   - startExecutionAt
+   - executeBefore
+   - numberofRetries
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'startExecutionAt', None, None, ), # 1
+    (2, TType.STRING, 'executeBefore', None, None, ), # 2
+    (3, TType.I32, 'numberofRetries', None, None, ), # 3
+  )
+
+  def __init__(self, startExecutionAt=None, executeBefore=None, numberofRetries=None,):
+    self.startExecutionAt = startExecutionAt
+    self.executeBefore = executeBefore
+    self.numberofRetries = numberofRetries
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.startExecutionAt = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.executeBefore = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.numberofRetries = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('QualityOfServiceParams')
+    if self.startExecutionAt is not None:
+      oprot.writeFieldBegin('startExecutionAt', TType.STRING, 1)
+      oprot.writeString(self.startExecutionAt)
+      oprot.writeFieldEnd()
+    if self.executeBefore is not None:
+      oprot.writeFieldBegin('executeBefore', TType.STRING, 2)
+      oprot.writeString(self.executeBefore)
+      oprot.writeFieldEnd()
+    if self.numberofRetries is not None:
+      oprot.writeFieldBegin('numberofRetries', TType.I32, 3)
+      oprot.writeI32(self.numberofRetries)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.startExecutionAt)
+    value = (value * 31) ^ hash(self.executeBefore)
+    value = (value * 31) ^ hash(self.numberofRetries)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class UserConfigurationData:
+  """
+  A structure holding the experiment configuration.
+
+
+
+  Attributes:
+   - airavataAutoSchedule
+   - overrideManualScheduledParams
+   - shareExperimentPublicly
+   - computationalResourceScheduling
+   - advanceInputDataHandling
+   - advanceOutputDataHandling
+   - qosParams
+   - throttleResources
+   - userDN
+   - generateCert
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.BOOL, 'airavataAutoSchedule', None, False, ), # 1
+    (2, TType.BOOL, 'overrideManualScheduledParams', None, False, ), # 2
+    (3, TType.BOOL, 'shareExperimentPublicly', None, False, ), # 3
+    (4, TType.STRUCT, 'computationalResourceScheduling', (ComputationalResourceScheduling, ComputationalResourceScheduling.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'advanceInputDataHandling', (AdvancedInputDataHandling, AdvancedInputDataHandling.thrift_spec), None, ), # 5
+    (6, TType.STRUCT, 'advanceOutputDataHandling', (AdvancedOutputDataHandling, AdvancedOutputDataHandling.thrift_spec), None, ), # 6
+    (7, TType.STRUCT, 'qosParams', (QualityOfServiceParams, QualityOfServiceParams.thrift_spec), None, ), # 7
+    (8, TType.BOOL, 'throttleResources', None, False, ), # 8
+    (9, TType.STRING, 'userDN', None, None, ), # 9
+    (10, TType.BOOL, 'generateCert', None, False, ), # 10
+  )
+
+  def __init__(self, airavataAutoSchedule=thrift_spec[1][4], overrideManualScheduledParams=thrift_spec[2][4], shareExperimentPublicly=thrift_spec[3][4], computationalResourceScheduling=None, advanceInputDataHandling=None, advanceOutputDataHandling=None, qosParams=None, throttleResources=thrift_spec[8][4], userDN=None, generateCert=thrift_spec[10][4],):
+    self.airavataAutoSchedule = airavataAutoSchedule
+    self.overrideManualScheduledParams = overrideManualScheduledParams
+    self.shareExperimentPublicly = shareExperimentPublicly
+    self.computationalResourceScheduling = computationalResourceScheduling
+    self.advanceInputDataHandling = advanceInputDataHandling
+    self.advanceOutputDataHandling = advanceOutputDataHandling
+    self.qosParams = qosParams
+    self.throttleResources = throttleResources
+    self.userDN = userDN
+    self.generateCert = generateCert
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.BOOL:
+          self.airavataAutoSchedule = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.BOOL:
+          self.overrideManualScheduledParams = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.BOOL:
+          self.shareExperimentPublicly = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.computationalResourceScheduling = ComputationalResourceScheduling()
+          self.computationalResourceScheduling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.advanceInputDataHandling = AdvancedInputDataHandling()
+          self.advanceInputDataHandling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRUCT:
+          self.advanceOutputDataHandling = AdvancedOutputDataHandling()
+          self.advanceOutputDataHandling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRUCT:
+          self.qosParams = QualityOfServiceParams()
+          self.qosParams.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.BOOL:
+          self.throttleResources = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.userDN = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.BOOL:
+          self.generateCert = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('UserConfigurationData')
+    if self.airavataAutoSchedule is not None:
+      oprot.writeFieldBegin('airavataAutoSchedule', TType.BOOL, 1)
+      oprot.writeBool(self.airavataAutoSchedule)
+      oprot.writeFieldEnd()
+    if self.overrideManualScheduledParams is not None:
+      oprot.writeFieldBegin('overrideManualScheduledParams', TType.BOOL, 2)
+      oprot.writeBool(self.overrideManualScheduledParams)
+      oprot.writeFieldEnd()
+    if self.shareExperimentPublicly is not None:
+      oprot.writeFieldBegin('shareExperimentPublicly', TType.BOOL, 3)
+      oprot.writeBool(self.shareExperimentPublicly)
+      oprot.writeFieldEnd()
+    if self.computationalResourceScheduling is not None:
+      oprot.writeFieldBegin('computationalResourceScheduling', TType.STRUCT, 4)
+      self.computationalResourceScheduling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.advanceInputDataHandling is not None:
+      oprot.writeFieldBegin('advanceInputDataHandling', TType.STRUCT, 5)
+      self.advanceInputDataHandling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.advanceOutputDataHandling is not None:
+      oprot.writeFieldBegin('advanceOutputDataHandling', TType.STRUCT, 6)
+      self.advanceOutputDataHandling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.qosParams is not None:
+      oprot.writeFieldBegin('qosParams', TType.STRUCT, 7)
+      self.qosParams.write(oprot)
+      oprot.writeFieldEnd()
+    if self.throttleResources is not None:
+      oprot.writeFieldBegin('throttleResources', TType.BOOL, 8)
+      oprot.writeBool(self.throttleResources)
+      oprot.writeFieldEnd()
+    if self.userDN is not None:
+      oprot.writeFieldBegin('userDN', TType.STRING, 9)
+      oprot.writeString(self.userDN)
+      oprot.writeFieldEnd()
+    if self.generateCert is not None:
+      oprot.writeFieldBegin('generateCert', TType.BOOL, 10)
+      oprot.writeBool(self.generateCert)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataAutoSchedule is None:
+      raise TProtocol.TProtocolException(message='Required field airavataAutoSchedule is unset!')
+    if self.overrideManualScheduledParams is None:
+      raise TProtocol.TProtocolException(message='Required field overrideManualScheduledParams is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataAutoSchedule)
+    value = (value * 31) ^ hash(self.overrideManualScheduledParams)
+    value = (value * 31) ^ hash(self.shareExperimentPublicly)
+    value = (value * 31) ^ hash(self.computationalResourceScheduling)
+    value = (value * 31) ^ hash(self.advanceInputDataHandling)
+    value = (value * 31) ^ hash(self.advanceOutputDataHandling)
+    value = (value * 31) ^ hash(self.qosParams)
+    value = (value * 31) ^ hash(self.throttleResources)
+    value = (value * 31) ^ hash(self.userDN)
+    value = (value * 31) ^ hash(self.generateCert)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ErrorDetails:
+  """
+  Attributes:
+   - errorID
+   - creationTime
+   - actualErrorMessage
+   - userFriendlyMessage
+   - errorCategory
+   - transientOrPersistent
+   - correctiveAction
+   - actionableGroup
+   - rootCauseErrorIdList
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'errorID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'actualErrorMessage', None, None, ), # 3
+    (4, TType.STRING, 'userFriendlyMessage', None, None, ), # 4
+    (5, TType.I32, 'errorCategory', None, None, ), # 5
+    (6, TType.BOOL, 'transientOrPersistent', None, False, ), # 6
+    (7, TType.I32, 'correctiveAction', None, None, ), # 7
+    (8, TType.I32, 'actionableGroup', None, None, ), # 8
+    (9, TType.LIST, 'rootCauseErrorIdList', (TType.STRING,None), None, ), # 9
+  )
+
+  def __init__(self, errorID=thrift_spec[1][4], creationTime=None, actualErrorMessage=None, userFriendlyMessage=None, errorCategory=None, transientOrPersistent=thrift_spec[6][4], correctiveAction=None, actionableGroup=None, rootCauseErrorIdList=None,):
+    self.errorID = errorID
+    self.creationTime = creationTime
+    self.actualErrorMessage = actualErrorMessage
+    self.userFriendlyMessage = userFriendlyMessage
+    self.errorCategory = errorCategory
+    self.transientOrPersistent = transientOrPersistent
+    self.correctiveAction = correctiveAction
+    self.actionableGroup = actionableGroup
+    self.rootCauseErrorIdList = rootCauseErrorIdList
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.errorID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.actualErrorMessage = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.userFriendlyMessage = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.errorCategory = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.BOOL:
+          self.transientOrPersistent = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I32:
+          self.correctiveAction = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.actionableGroup = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.rootCauseErrorIdList = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString();
+            self.rootCauseErrorIdList.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ErrorDetails')
+    if self.errorID is not None:
+      oprot.writeFieldBegin('errorID', TType.STRING, 1)
+      oprot.writeString(self.errorID)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.actualErrorMessage is not None:
+      oprot.writeFieldBegin('actualErrorMessage', TType.STRING, 3)
+      oprot.writeString(self.actualErrorMessage)
+      oprot.writeFieldEnd()
+    if self.userFriendlyMessage is not None:
+      oprot.writeFieldBegin('userFriendlyMessage', TType.STRING, 4)
+      oprot.writeString(self.userFriendlyMessage)
+      oprot.writeFieldEnd()
+    if self.errorCategory is not None:
+      oprot.writeFieldBegin('errorCategory', TType.I32, 5)
+      oprot.writeI32(self.errorCategory)
+      oprot.writeFieldEnd()
+    if self.transientOrPersistent is not None:
+      oprot.writeFieldBegin('transientOrPersistent', TType.BOOL, 6)
+      oprot.writeBool(self.transientOrPersistent)
+      oprot.writeFieldEnd()
+    if self.correctiveAction is not None:
+      oprot.writeFieldBegin('correctiveAction', TType.I32, 7)
+      oprot.writeI32(self.correctiveAction)
+      oprot.writeFieldEnd()
+    if self.actionableGroup is not None:
+      oprot.writeFieldBegin('actionableGroup', TType.I32, 8)
+      oprot.writeI32(self.actionableGroup)
+      oprot.writeFieldEnd()
+    if self.rootCauseErrorIdList is not None:
+      oprot.writeFieldBegin('rootCauseErrorIdList', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRING, len(self.rootCauseErrorIdList))
+      for iter6 in self.rootCauseErrorIdList:
+        oprot.writeString(iter6)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.errorID is None:
+      raise TProtocol.TProtocolException(message='Required field errorID is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.errorID)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.actualErrorMessage)
+    value = (value * 31) ^ hash(self.userFriendlyMessage)
+    value = (value * 31) ^ hash(self.errorCategory)
+    value = (value * 31) ^ hash(self.transientOrPersistent)
+    value = (value * 31) ^ hash(self.correctiveAction)
+    value = (value * 31) ^ hash(self.actionableGroup)
+    value = (value * 31) ^ hash(self.rootCauseErrorIdList)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class JobDetails:
+  """
+  Attributes:
+   - jobID
+   - jobDescription
+   - creationTime
+   - jobStatus
+   - applicationStatus
+   - errors
+   - computeResourceConsumed
+   - jobName
+   - workingDir
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'jobID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'jobDescription', None, None, ), # 2
+    (3, TType.I64, 'creationTime', None, None, ), # 3
+    (4, TType.STRUCT, 'jobStatus', (JobStatus, JobStatus.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'applicationStatus', (ApplicationStatus, ApplicationStatus.thrift_spec), None, ), # 5
+    (6, TType.LIST, 'errors', (TType.STRUCT,(ErrorDetails, ErrorDetails.thrift_spec)), None, ), # 6
+    (7, TType.STRING, 'computeResourceConsumed', None, None, ), # 7
+    (8, TType.STRING, 'jobName', None, None, ), # 8
+    (9, TType.STRING, 'workingDir', None, None, ), # 9
+  )
+
+  def __init__(self, jobID=thrift_spec[1][4], jobDescription=None, creationTime=None, jobStatus=None, applicationStatus=None, errors=None, computeResourceConsumed=None, jobName=None, workingDir=None,):
+    self.jobID = jobID
+    self.jobDescription = jobDescription
+    self.creationTime = creationTime
+    self.jobStatus = jobStatus
+    self.applicationStatus = applicationStatus
+    self.errors = errors
+    self.computeResourceConsumed = computeResourceConsumed
+    self.jobName = jobName
+    self.workingDir = workingDir
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.jobID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.jobDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.jobStatus = JobStatus()
+          self.jobStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.applicationStatus = ApplicationStatus()
+          self.applicationStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.errors = []
+          (_etype10, _size7) = iprot.readListBegin()
+          for _i11 in xrange(_size7):
+            _elem12 = ErrorDetails()
+            _elem12.read(iprot)
+            self.errors.append(_elem12)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.computeResourceConsumed = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.jobName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.workingDir = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('JobDetails')
+    if self.jobID is not None:
+      oprot.writeFieldBegin('jobID', TType.STRING, 1)
+      oprot.writeString(self.jobID)
+      oprot.writeFieldEnd()
+    if self.jobDescription is not None:
+      oprot.writeFieldBegin('jobDescription', TType.STRING, 2)
+      oprot.writeString(self.jobDescription)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 3)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.jobStatus is not None:
+      oprot.writeFieldBegin('jobStatus', TType.STRUCT, 4)
+      self.jobStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.applicationStatus is not None:
+      oprot.writeFieldBegin('applicationStatus', TType.STRUCT, 5)
+      self.applicationStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.errors is not None:
+      oprot.writeFieldBegin('errors', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.errors))
+      for iter13 in self.errors:
+        iter13.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.computeResourceConsumed is not None:
+      oprot.writeFieldBegin('computeResourceConsumed', TType.STRING, 7)
+      oprot.writeString(self.computeResourceConsumed)
+      oprot.writeFieldEnd()
+    if self.jobName is not None:
+      oprot.writeFieldBegin('jobName', TType.STRING, 8)
+      oprot.writeString(self.jobName)
+      oprot.writeFieldEnd()
+    if self.workingDir is not None:
+      oprot.writeFieldBegin('workingDir', TType.STRING, 9)
+      oprot.writeString(self.workingDir)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.jobID is None:
+      raise TProtocol.TProtocolException(message='Required field jobID is unset!')
+    if self.jobDescription is None:
+      raise TProtocol.TProtocolException(message='Required field jobDescription is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.jobID)
+    value = (value * 31) ^ hash(self.jobDescription)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.jobStatus)
+    value = (value * 31) ^ hash(self.applicationStatus)
+    value = (value * 31) ^ hash(self.errors)
+    value = (value * 31) ^ hash(self.computeResourceConsumed)
+    value = (value * 31) ^ hash(self.jobName)
+    value = (value * 31) ^ hash(self.workingDir)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class DataTransferDetails:
+  """
+  Attributes:
+   - transferID
+   - creationTime
+   - transferDescription
+   - transferStatus
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'transferID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'transferDescription', None, None, ), # 3
+    (4, TType.STRUCT, 'transferStatus', (TransferStatus, TransferStatus.thrift_spec), None, ), # 4
+  )
+
+  def __init__(self, transferID=thrift_spec[1][4], creationTime=None, transferDescription=None, transferStatus=None,):
+    self.transferID = transferID
+    self.creationTime = creationTime
+    self.transferDescription = transferDescription
+    self.transferStatus = transferStatus
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.transferID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.transferDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.transferStatus = TransferStatus()
+          self.transferStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('DataTransferDetails')
+    if self.transferID is not None:
+      oprot.writeFieldBegin('transferID', TType.STRING, 1)
+      oprot.writeString(self.transferID)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.transferDescription is not None:
+      oprot.writeFieldBegin('transferDescription', TType.STRING, 3)
+      oprot.writeString(self.transferDescription)
+      oprot.writeFieldEnd()
+    if self.transferStatus is not None:
+      oprot.writeFieldBegin('transferStatus', TType.STRUCT, 4)
+      self.transferStatus.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.transferID is None:
+      raise TProtocol.TProtocolException(message='Required field transferID is unset!')
+    if self.transferDescription is None:
+      raise TProtocol.TProtocolException(message='Required field transferDescription is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.transferID)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.transferDescription)
+    value = (value * 31) ^ hash(self.transferStatus)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class TaskDetails:
+  """
+  A structure holding the actual execution context decided based on user provided configuration data or system inferred
+    information from scheduling and QoS parameters. One experiment can have multiple tasks. Each tasks results in
+    data transfers and jobs
+
+
+  Attributes:
+   - taskID
+   - creationTime
+   - applicationId
+   - applicationVersion
+   - applicationDeploymentId
+   - applicationInputs
+   - applicationOutputs
+   - taskScheduling
+   - advancedInputDataHandling
+   - advancedOutputDataHandling
+   - taskStatus
+   - jobDetailsList
+   - dataTransferDetailsList
+   - errors
+   - enableEmailNotification
+   - emailAddresses
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'taskID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'applicationId', None, None, ), # 3
+    (4, TType.STRING, 'applicationVersion', None, None, ), # 4
+    (5, TType.STRING, 'applicationDeploymentId', None, None, ), # 5
+    (6, TType.LIST, 'applicationInputs', (TType.STRUCT,(apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType, apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType.thrift_spec)), None, ), # 6
+    (7, TType.LIST, 'applicationOutputs', (TType.STRUCT,(apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType, apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 7
+    (8, TType.STRUCT, 'taskScheduling', (ComputationalResourceScheduling, ComputationalResourceScheduling.thrift_spec), None, ), # 8
+    (9, TType.STRUCT, 'advancedInputDataHandling', (AdvancedInputDataHandling, AdvancedInputDataHandling.thrift_spec), None, ), # 9
+    (10, TType.STRUCT, 'advancedOutputDataHandling', (AdvancedOutputDataHandling, AdvancedOutputDataHandling.thrift_spec), None, ), # 10
+    (11, TType.STRUCT, 'taskStatus', (TaskStatus, TaskStatus.thrift_spec), None, ), # 11
+    (12, TType.LIST, 'jobDetailsList', (TType.STRUCT,(JobDetails, JobDetails.thrift_spec)), None, ), # 12
+    (13, TType.LIST, 'dataTransferDetailsList', (TType.STRUCT,(DataTransferDetails, DataTransferDetails.thrift_spec)), None, ), # 13
+    (14, TType.LIST, 'errors', (TType.STRUCT,(ErrorDetails, ErrorDetails.thrift_spec)), None, ), # 14
+    (15, TType.BOOL, 'enableEmailNotification', None, None, ), # 15
+    (16, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 16
+  )
+
+  def __init__(self, taskID=thrift_spec[1][4], creationTime=None, applicationId=None, applicationVersion=None, applicationDeploymentId=None, applicationInputs=None, applicationOutputs=None, taskScheduling=None, advancedInputDataHandling=None, advancedOutputDataHandling=None, taskStatus=None, jobDetailsList=None, dataTransferDetailsList=None, errors=None, enableEmailNotification=None, emailAddresses=None,):
+    self.taskID = taskID
+    self.creationTime = creationTime
+    self.applicationId = applicationId
+    self.applicationVersion = applicationVersion
+    self.applicationDeploymentId = applicationDeploymentId
+    self.applicationInputs = applicationInputs
+    self.applicationOutputs = applicationOutputs
+    self.taskScheduling = taskScheduling
+    self.advancedInputDataHandling = advancedInputDataHandling
+    self.advancedOutputDataHandling = advancedOutputDataHandling
+    self.taskStatus = taskStatus
+    self.jobDetailsList = jobDetailsList
+    self.dataTransferDetailsList = dataTransferDetailsList
+    self.errors = errors
+    self.enableEmailNotification = enableEmailNotification
+    self.emailAddresses = emailAddresses
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.taskID = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.applicationId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.applicationVersion = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.applicationDeploymentId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.applicationInputs = []
+          (_etype17, _size14) = iprot.readListBegin()
+          for _i18 in xrange(_size14):
+            _elem19 = apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType()
+            _elem19.read(iprot)
+            self.applicationInputs.append(_elem19)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.applicationOutputs = []
+          (_etype23, _size20) = iprot.readListBegin()
+          for _i24 in xrange(_size20):
+            _elem25 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
+            _elem25.read(iprot)
+            self.applicationOutputs.append(_elem25)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRUCT:
+          self.taskScheduling = ComputationalResourceScheduling()
+          self.taskScheduling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRUCT:
+          self.advancedInputDataHandling = AdvancedInputDataHandling()
+          self.advancedInputDataHandling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRUCT:
+          self.advancedOutputDataHandling = AdvancedOutputDataHandling()
+          self.advancedOutputDataHandling.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRUCT:
+          self.taskStatus = TaskStatus()
+          self.taskStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.LIST:
+          self.jobDetailsList = []
+          (_etype29, _size26) = iprot.readListBegin()
+          for _i30 in xrange(_size26):
+            _elem31 = JobDetails()
+            _elem31.read(iprot)
+            self.jobDetailsList.append(_elem31)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.LIST:
+          self.dataTransferDetailsList = []
+          (_etype35, _size32) = iprot.readListBegin()
+          for _i36 in xrange(_size32):
+            _elem37 = DataTransferDetails()
+            _elem37.read(iprot)
+            self.dataTransferDetailsList.append(_elem37)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.LIST:
+          self.errors = []
+          (_etype41, _size38) = iprot.readListBegin()
+          for _i42 in xrange(_size38):
+            _elem43 = ErrorDetails()
+            _elem43.read(iprot)
+            self.errors.append(_elem43)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 15:
+        if ftype == TType.BOOL:
+          self.enableEmailNotification = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      elif fid == 16:
+        if ftype == TType.LIST:
+          self.emailAddresses = []
+          (_etype47, _size44) = iprot.readListBegin()
+          for _i48 in xrange(_size44):
+            _elem49 = iprot.readString();
+            self.emailAddresses.append(_elem49)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('TaskDetails')
+    if self.taskID is not None:
+      oprot.writeFieldBegin('taskID', TType.STRING, 1)
+      oprot.writeString(self.taskID)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.applicationId is not None:
+      oprot.writeFieldBegin('applicationId', TType.STRING, 3)
+      oprot.writeString(self.applicationId)
+      oprot.writeFieldEnd()
+    if self.applicationVersion is not None:
+      oprot.writeFieldBegin('applicationVersion', TType.STRING, 4)
+      oprot.writeString(self.applicationVersion)
+      oprot.writeFieldEnd()
+    if self.applicationDeploymentId is not None:
+      oprot.writeFieldBegin('applicationDeploymentId', TType.STRING, 5)
+      oprot.writeString(self.applicationDeploymentId)
+      oprot.writeFieldEnd()
+    if self.applicationInputs is not None:
+      oprot.writeFieldBegin('applicationInputs', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.applicationInputs))
+      for iter50 in self.applicationInputs:
+        iter50.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.applicationOutputs is not None:
+      oprot.writeFieldBegin('applicationOutputs', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.applicationOutputs))
+      for iter51 in self.applicationOutputs:
+        iter51.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.taskScheduling is not None:
+      oprot.writeFieldBegin('taskScheduling', TType.STRUCT, 8)
+      self.taskScheduling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.advancedInputDataHandling is not None:
+      oprot.writeFieldBegin('advancedInputDataHandling', TType.STRUCT, 9)
+      self.advancedInputDataHandling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.advancedOutputDataHandling is not None:
+      oprot.writeFieldBegin('advancedOutputDataHandling', TType.STRUCT, 10)
+      self.advancedOutputDataHandling.write(oprot)
+      oprot.writeFieldEnd()
+    if self.taskStatus is not None:
+      oprot.writeFieldBegin('taskStatus', TType.STRUCT, 11)
+      self.taskStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.jobDetailsList is not None:
+      oprot.writeFieldBegin('jobDetailsList', TType.LIST, 12)
+      oprot.writeListBegin(TType.STRUCT, len(self.jobDetailsList))
+      for iter52 in self.jobDetailsList:
+        iter52.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.dataTransferDetailsList is not None:
+      oprot.writeFieldBegin('dataTransferDetailsList', TType.LIST, 13)
+      oprot.writeListBegin(TType.STRUCT, len(self.dataTransferDetailsList))
+      for iter53 in self.dataTransferDetailsList:
+        iter53.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.errors is not None:
+      oprot.writeFieldBegin('errors', TType.LIST, 14)
+      oprot.writeListBegin(TType.STRUCT, len(self.errors))
+      for iter54 in self.errors:
+        iter54.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.enableEmailNotification is not None:
+      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 15)
+      oprot.writeBool(self.enableEmailNotification)
+      oprot.writeFieldEnd()
+    if self.emailAddresses is not None:
+      oprot.writeFieldBegin('emailAddresses', TType.LIST, 16)
+      oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
+      for iter55 in self.emailAddresses:
+        oprot.writeString(iter55)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.taskID is None:
+      raise TProtocol.TProtocolException(message='Required field taskID is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.taskID)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.applicationId)
+    value = (value * 31) ^ hash(self.applicationVersion)
+    value = (value * 31) ^ hash(self.applicationDeploymentId)
+    value = (value * 31) ^ hash(self.applicationInputs)
+    value = (value * 31) ^ hash(self.applicationOutputs)
+    value = (value * 31) ^ hash(self.taskScheduling)
+    value = (value * 31) ^ hash(self.advancedInputDataHandling)
+    value = (value * 31) ^ hash(self.advancedOutputDataHandling)
+    value = (value * 31) ^ hash(self.taskStatus)
+    value = (value * 31) ^ hash(self.jobDetailsList)
+    value = (value * 31) ^ hash(self.dataTransferDetailsList)
+    value = (value * 31) ^ hash(self.errors)
+    value = (value * 31) ^ hash(self.enableEmailNotification)
+    value = (value * 31) ^ hash(self.emailAddresses)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class WorkflowNodeDetails:
+  """
+  A structure holding the node data.
+  nodeInstanceId - unique node identifier for each run
+
+  Attributes:
+   - nodeInstanceId
+   - creationTime
+   - nodeName
+   - executionUnit
+   - executionUnitData
+   - nodeInputs
+   - nodeOutputs
+   - workflowNodeStatus
+   - taskDetailsList
+   - errors
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'nodeInstanceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.I64, 'creationTime', None, None, ), # 2
+    (3, TType.STRING, 'nodeName', None, "SINGLE_APP_NODE", ), # 3
+    (4, TType.I32, 'executionUnit', None,     1, ), # 4
+    (5, TType.STRING, 'executionUnitData', None, None, ), # 5
+    (6, TType.LIST, 'nodeInputs', (TType.STRUCT,(apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType, apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType.thrift_spec)), None, ), # 6
+    (7, TType.LIST, 'nodeOutputs', (TType.STRUCT,(apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType, apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 7
+    (8, TType.STRUCT, 'workflowNodeStatus', (WorkflowNodeStatus, WorkflowNodeStatus.thrift_spec), None, ), # 8
+    (9, TType.LIST, 'taskDetailsList', (TType.STRUCT,(TaskDetails, TaskDetails.thrift_spec)), None, ), # 9
+    (10, TType.LIST, 'errors', (TType.STRUCT,(ErrorDetails, ErrorDetails.thrift_spec)), None, ), # 10
+  )
+
+  def __init__(self, nodeInstanceId=thrift_spec[1][4], creationTime=None, nodeName=thrift_spec[3][4], executionUnit=thrift_spec[4][4], executionUnitData=None, nodeInputs=None, nodeOutputs=None, workflowNodeStatus=None, taskDetailsList=None, errors=None,):
+    self.nodeInstanceId = nodeInstanceId
+    self.creationTime = creationTime
+    self.nodeName = nodeName
+    self.executionUnit = executionUnit
+    self.executionUnitData = executionUnitData
+    self.nodeInputs = nodeInputs
+    self.nodeOutputs = nodeOutputs
+    self.workflowNodeStatus = workflowNodeStatus
+    self.taskDetailsList = taskDetailsList
+    self.errors = errors
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.nodeInstanceId = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.nodeName = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.executionUnit = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.executionUnitData = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.LIST:
+          self.nodeInputs = []
+          (_etype59, _size56) = iprot.readListBegin()
+          for _i60 in xrange(_size56):
+            _elem61 = apache.airavata.model.appcatalog.appinterface.ttypes.InputDataObjectType()
+            _elem61.read(iprot)
+            self.nodeInputs.append(_elem61)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.nodeOutputs = []
+          (_etype65, _size62) = iprot.readListBegin()
+          for _i66 in xrange(_size62):
+            _elem67 = apache.airavata.model.appcatalog.appinterface.ttypes.OutputDataObjectType()
+            _elem67.read(iprot)
+            self.nodeOutputs.append(_elem67)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRUCT:
+          self.workflowNodeStatus = WorkflowNodeStatus()
+          self.workflowNodeStatus.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.LIST:
+          self.taskDetailsList = []
+          (_etype71, _size68) = iprot.readListBegin()
+          for _i72 in xrange(_size68):
+            _elem73 = TaskDetails()
+            _elem73.read(iprot)
+            self.taskDetailsList.append(_elem73)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.LIST:
+          self.errors = []
+          (_etype77, _size74) = iprot.readListBegin()
+          for _i78 in xrange(_size74):
+            _elem79 = ErrorDetails()
+            _elem79.read(iprot)
+            self.errors.append(_elem79)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('WorkflowNodeDetails')
+    if self.nodeInstanceId is not None:
+      oprot.writeFieldBegin('nodeInstanceId', TType.STRING, 1)
+      oprot.writeString(self.nodeInstanceId)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 2)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.nodeName is not None:
+      oprot.writeFieldBegin('nodeName', TType.STRING, 3)
+      oprot.writeString(self.nodeName)
+      oprot.writeFieldEnd()
+    if self.executionUnit is not None:
+      oprot.writeFieldBegin('executionUnit', TType.I32, 4)
+      oprot.writeI32(self.executionUnit)
+      oprot.writeFieldEnd()
+    if self.executionUnitData is not None:
+      oprot.writeFieldBegin('executionUnitData', TType.STRING, 5)
+      oprot.writeString(self.executionUnitData)
+      oprot.writeFieldEnd()
+    if self.nodeInputs is not None:
+      oprot.writeFieldBegin('nodeInputs', TType.LIST, 6)
+      oprot.writeListBegin(TType.STRUCT, len(self.nodeInputs))
+      for iter80 in self.nodeInputs:
+        iter80.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.nodeOutputs is not None:
+      oprot.writeFieldBegin('nodeOutputs', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.nodeOutputs))
+      for iter81 in self.nodeOutputs:
+        iter81.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.workflowNodeStatus is not None:
+      oprot.writeFieldBegin('workflowNodeStatus', TType.STRUCT, 8)
+      self.workflowNodeStatus.write(oprot)
+      oprot.writeFieldEnd()
+    if self.taskDetailsList is not None:
+      oprot.writeFieldBegin('taskDetailsList', TType.LIST, 9)
+      oprot.writeListBegin(TType.STRUCT, len(self.taskDetailsList))
+      for iter82 in self.taskDetailsList:
+        iter82.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.errors is not None:
+      oprot.writeFieldBegin('errors', TType.LIST, 10)
+      oprot.writeListBegin(TType.STRUCT, len(self.errors))
+      for iter83 in self.errors:
+        iter83.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.nodeInstanceId is None:
+      raise TProtocol.TProtocolException(message='Required field nodeInstanceId is unset!')
+    if self.nodeName is None:
+      raise TProtocol.TProtocolException(message='Required field nodeName is unset!')
+    if self.executionUnit is None:
+      raise TProtocol.TProtocolException(message='Required field executionUnit is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.nodeInstanceId)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.nodeName)
+    value = (value * 31) ^ hash(self.executionUnit)
+    value = (value * 31) ^ hash(self.executionUnitData)
+    value = (value * 31) ^ hash(self.nodeInputs)
+    value = (value * 31) ^ hash(self.nodeOutputs)
+    value = (value * 31) ^ hash(self.workflowNodeStatus)
+    value = (value * 31) ^ hash(self.taskDetailsList)
+    value = (value * 31) ^ hash(self.errors)

<TRUNCATED>

[03/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.py
new file mode 100644
index 0000000..1395950
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.py
@@ -0,0 +1,851 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class GatewayApprovalStatus:
+  REQUESTED = 0
+  APPROVED = 1
+  ACTIVE = 2
+  DEACTIVATED = 3
+
+  _VALUES_TO_NAMES = {
+    0: "REQUESTED",
+    1: "APPROVED",
+    2: "ACTIVE",
+    3: "DEACTIVATED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "REQUESTED": 0,
+    "APPROVED": 1,
+    "ACTIVE": 2,
+    "DEACTIVATED": 3,
+  }
+
+class NotificationPriority:
+  LOW = 0
+  NORMAL = 1
+  HIGH = 2
+
+  _VALUES_TO_NAMES = {
+    0: "LOW",
+    1: "NORMAL",
+    2: "HIGH",
+  }
+
+  _NAMES_TO_VALUES = {
+    "LOW": 0,
+    "NORMAL": 1,
+    "HIGH": 2,
+  }
+
+
+class Group:
+  """
+  Attributes:
+   - groupName
+   - description
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'groupName', None, None, ), # 1
+    (2, TType.STRING, 'description', None, None, ), # 2
+  )
+
+  def __init__(self, groupName=None, description=None,):
+    self.groupName = groupName
+    self.description = description
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.groupName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Group')
+    if self.groupName is not None:
+      oprot.writeFieldBegin('groupName', TType.STRING, 1)
+      oprot.writeString(self.groupName)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 2)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.groupName is None:
+      raise TProtocol.TProtocolException(message='Required field groupName is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.groupName)
+    value = (value * 31) ^ hash(self.description)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class Project:
+  """
+  Attributes:
+   - projectID
+   - owner
+   - gatewayId
+   - name
+   - description
+   - creationTime
+   - sharedUsers
+   - sharedGroups
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'projectID', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'owner', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+    (4, TType.STRING, 'name', None, None, ), # 4
+    (5, TType.STRING, 'description', None, None, ), # 5
+    (6, TType.I64, 'creationTime', None, None, ), # 6
+    (7, TType.LIST, 'sharedUsers', (TType.STRING,None), None, ), # 7
+    (8, TType.LIST, 'sharedGroups', (TType.STRING,None), None, ), # 8
+  )
+
+  def __init__(self, projectID=thrift_spec[1][4], owner=None, gatewayId=None, name=None, description=None, creationTime=None, sharedUsers=None, sharedGroups=None,):
+    self.projectID = projectID
+    self.owner = owner
+    self.gatewayId = gatewayId
+    self.name = name
+    self.description = description
+    self.creationTime = creationTime
+    self.sharedUsers = sharedUsers
+    self.sharedGroups = sharedGroups
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.projectID = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.owner = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.sharedUsers = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = iprot.readString()
+            self.sharedUsers.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.LIST:
+          self.sharedGroups = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = iprot.readString()
+            self.sharedGroups.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Project')
+    if self.projectID is not None:
+      oprot.writeFieldBegin('projectID', TType.STRING, 1)
+      oprot.writeString(self.projectID)
+      oprot.writeFieldEnd()
+    if self.owner is not None:
+      oprot.writeFieldBegin('owner', TType.STRING, 2)
+      oprot.writeString(self.owner)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 4)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 5)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 6)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.sharedUsers is not None:
+      oprot.writeFieldBegin('sharedUsers', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRING, len(self.sharedUsers))
+      for iter12 in self.sharedUsers:
+        oprot.writeString(iter12)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.sharedGroups is not None:
+      oprot.writeFieldBegin('sharedGroups', TType.LIST, 8)
+      oprot.writeListBegin(TType.STRING, len(self.sharedGroups))
+      for iter13 in self.sharedGroups:
+        oprot.writeString(iter13)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.projectID is None:
+      raise TProtocol.TProtocolException(message='Required field projectID is unset!')
+    if self.owner is None:
+      raise TProtocol.TProtocolException(message='Required field owner is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.projectID)
+    value = (value * 31) ^ hash(self.owner)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.description)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.sharedUsers)
+    value = (value * 31) ^ hash(self.sharedGroups)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class User:
+  """
+  Attributes:
+   - airavataInternalUserId
+   - userName
+   - gatewayId
+   - firstName
+   - lastName
+   - email
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'airavataInternalUserId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'userName', None, None, ), # 2
+    (3, TType.STRING, 'gatewayId', None, None, ), # 3
+    (4, TType.STRING, 'firstName', None, None, ), # 4
+    (5, TType.STRING, 'lastName', None, None, ), # 5
+    (6, TType.STRING, 'email', None, None, ), # 6
+  )
+
+  def __init__(self, airavataInternalUserId=thrift_spec[1][4], userName=None, gatewayId=None, firstName=None, lastName=None, email=None,):
+    self.airavataInternalUserId = airavataInternalUserId
+    self.userName = userName
+    self.gatewayId = gatewayId
+    self.firstName = firstName
+    self.lastName = lastName
+    self.email = email
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.airavataInternalUserId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.userName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.firstName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.lastName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.email = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('User')
+    if self.airavataInternalUserId is not None:
+      oprot.writeFieldBegin('airavataInternalUserId', TType.STRING, 1)
+      oprot.writeString(self.airavataInternalUserId)
+      oprot.writeFieldEnd()
+    if self.userName is not None:
+      oprot.writeFieldBegin('userName', TType.STRING, 2)
+      oprot.writeString(self.userName)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 3)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.firstName is not None:
+      oprot.writeFieldBegin('firstName', TType.STRING, 4)
+      oprot.writeString(self.firstName)
+      oprot.writeFieldEnd()
+    if self.lastName is not None:
+      oprot.writeFieldBegin('lastName', TType.STRING, 5)
+      oprot.writeString(self.lastName)
+      oprot.writeFieldEnd()
+    if self.email is not None:
+      oprot.writeFieldBegin('email', TType.STRING, 6)
+      oprot.writeString(self.email)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.airavataInternalUserId is None:
+      raise TProtocol.TProtocolException(message='Required field airavataInternalUserId is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.airavataInternalUserId)
+    value = (value * 31) ^ hash(self.userName)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.firstName)
+    value = (value * 31) ^ hash(self.lastName)
+    value = (value * 31) ^ hash(self.email)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class Gateway:
+  """
+  Attributes:
+   - gatewayId
+   - gatewayApprovalStatus
+   - gatewayName
+   - domain
+   - emailAddress
+   - gatewayAcronym
+   - gatewayURL
+   - gatewayPublicAbstract
+   - reviewProposalDescription
+   - gatewayAdminFirstName
+   - gatewayAdminLastName
+   - gatewayAdminEmail
+   - identityServerUserName
+   - identityServerPasswordToken
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'gatewayId', None, None, ), # 1
+    (2, TType.I32, 'gatewayApprovalStatus', None, None, ), # 2
+    (3, TType.STRING, 'gatewayName', None, None, ), # 3
+    (4, TType.STRING, 'domain', None, None, ), # 4
+    (5, TType.STRING, 'emailAddress', None, None, ), # 5
+    (6, TType.STRING, 'gatewayAcronym', None, None, ), # 6
+    (7, TType.STRING, 'gatewayURL', None, None, ), # 7
+    (8, TType.STRING, 'gatewayPublicAbstract', None, None, ), # 8
+    (9, TType.STRING, 'reviewProposalDescription', None, None, ), # 9
+    (10, TType.STRING, 'gatewayAdminFirstName', None, None, ), # 10
+    (11, TType.STRING, 'gatewayAdminLastName', None, None, ), # 11
+    (12, TType.STRING, 'gatewayAdminEmail', None, None, ), # 12
+    (13, TType.STRING, 'identityServerUserName', None, None, ), # 13
+    (14, TType.STRING, 'identityServerPasswordToken', None, None, ), # 14
+  )
+
+  def __init__(self, gatewayId=None, gatewayApprovalStatus=None, gatewayName=None, domain=None, emailAddress=None, gatewayAcronym=None, gatewayURL=None, gatewayPublicAbstract=None, reviewProposalDescription=None, gatewayAdminFirstName=None, gatewayAdminLastName=None, gatewayAdminEmail=None, identityServerUserName=None, identityServerPasswordToken=None,):
+    self.gatewayId = gatewayId
+    self.gatewayApprovalStatus = gatewayApprovalStatus
+    self.gatewayName = gatewayName
+    self.domain = domain
+    self.emailAddress = emailAddress
+    self.gatewayAcronym = gatewayAcronym
+    self.gatewayURL = gatewayURL
+    self.gatewayPublicAbstract = gatewayPublicAbstract
+    self.reviewProposalDescription = reviewProposalDescription
+    self.gatewayAdminFirstName = gatewayAdminFirstName
+    self.gatewayAdminLastName = gatewayAdminLastName
+    self.gatewayAdminEmail = gatewayAdminEmail
+    self.identityServerUserName = identityServerUserName
+    self.identityServerPasswordToken = identityServerPasswordToken
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.gatewayApprovalStatus = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.gatewayName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.domain = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.emailAddress = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.gatewayAcronym = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRING:
+          self.gatewayURL = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRING:
+          self.gatewayPublicAbstract = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.reviewProposalDescription = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.gatewayAdminFirstName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.gatewayAdminLastName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRING:
+          self.gatewayAdminEmail = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.STRING:
+          self.identityServerUserName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.STRING:
+          self.identityServerPasswordToken = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Gateway')
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 1)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.gatewayApprovalStatus is not None:
+      oprot.writeFieldBegin('gatewayApprovalStatus', TType.I32, 2)
+      oprot.writeI32(self.gatewayApprovalStatus)
+      oprot.writeFieldEnd()
+    if self.gatewayName is not None:
+      oprot.writeFieldBegin('gatewayName', TType.STRING, 3)
+      oprot.writeString(self.gatewayName)
+      oprot.writeFieldEnd()
+    if self.domain is not None:
+      oprot.writeFieldBegin('domain', TType.STRING, 4)
+      oprot.writeString(self.domain)
+      oprot.writeFieldEnd()
+    if self.emailAddress is not None:
+      oprot.writeFieldBegin('emailAddress', TType.STRING, 5)
+      oprot.writeString(self.emailAddress)
+      oprot.writeFieldEnd()
+    if self.gatewayAcronym is not None:
+      oprot.writeFieldBegin('gatewayAcronym', TType.STRING, 6)
+      oprot.writeString(self.gatewayAcronym)
+      oprot.writeFieldEnd()
+    if self.gatewayURL is not None:
+      oprot.writeFieldBegin('gatewayURL', TType.STRING, 7)
+      oprot.writeString(self.gatewayURL)
+      oprot.writeFieldEnd()
+    if self.gatewayPublicAbstract is not None:
+      oprot.writeFieldBegin('gatewayPublicAbstract', TType.STRING, 8)
+      oprot.writeString(self.gatewayPublicAbstract)
+      oprot.writeFieldEnd()
+    if self.reviewProposalDescription is not None:
+      oprot.writeFieldBegin('reviewProposalDescription', TType.STRING, 9)
+      oprot.writeString(self.reviewProposalDescription)
+      oprot.writeFieldEnd()
+    if self.gatewayAdminFirstName is not None:
+      oprot.writeFieldBegin('gatewayAdminFirstName', TType.STRING, 10)
+      oprot.writeString(self.gatewayAdminFirstName)
+      oprot.writeFieldEnd()
+    if self.gatewayAdminLastName is not None:
+      oprot.writeFieldBegin('gatewayAdminLastName', TType.STRING, 11)
+      oprot.writeString(self.gatewayAdminLastName)
+      oprot.writeFieldEnd()
+    if self.gatewayAdminEmail is not None:
+      oprot.writeFieldBegin('gatewayAdminEmail', TType.STRING, 12)
+      oprot.writeString(self.gatewayAdminEmail)
+      oprot.writeFieldEnd()
+    if self.identityServerUserName is not None:
+      oprot.writeFieldBegin('identityServerUserName', TType.STRING, 13)
+      oprot.writeString(self.identityServerUserName)
+      oprot.writeFieldEnd()
+    if self.identityServerPasswordToken is not None:
+      oprot.writeFieldBegin('identityServerPasswordToken', TType.STRING, 14)
+      oprot.writeString(self.identityServerPasswordToken)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.gatewayApprovalStatus is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayApprovalStatus is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.gatewayApprovalStatus)
+    value = (value * 31) ^ hash(self.gatewayName)
+    value = (value * 31) ^ hash(self.domain)
+    value = (value * 31) ^ hash(self.emailAddress)
+    value = (value * 31) ^ hash(self.gatewayAcronym)
+    value = (value * 31) ^ hash(self.gatewayURL)
+    value = (value * 31) ^ hash(self.gatewayPublicAbstract)
+    value = (value * 31) ^ hash(self.reviewProposalDescription)
+    value = (value * 31) ^ hash(self.gatewayAdminFirstName)
+    value = (value * 31) ^ hash(self.gatewayAdminLastName)
+    value = (value * 31) ^ hash(self.gatewayAdminEmail)
+    value = (value * 31) ^ hash(self.identityServerUserName)
+    value = (value * 31) ^ hash(self.identityServerPasswordToken)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class Notification:
+  """
+  Attributes:
+   - notificationId
+   - gatewayId
+   - title
+   - notificationMessage
+   - creationTime
+   - publishedTime
+   - expirationTime
+   - priority
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'notificationId', None, None, ), # 1
+    (2, TType.STRING, 'gatewayId', None, None, ), # 2
+    (3, TType.STRING, 'title', None, None, ), # 3
+    (4, TType.STRING, 'notificationMessage', None, None, ), # 4
+    (5, TType.I64, 'creationTime', None, None, ), # 5
+    (6, TType.I64, 'publishedTime', None, None, ), # 6
+    (7, TType.I64, 'expirationTime', None, None, ), # 7
+    (8, TType.I32, 'priority', None, None, ), # 8
+  )
+
+  def __init__(self, notificationId=None, gatewayId=None, title=None, notificationMessage=None, creationTime=None, publishedTime=None, expirationTime=None, priority=None,):
+    self.notificationId = notificationId
+    self.gatewayId = gatewayId
+    self.title = title
+    self.notificationMessage = notificationMessage
+    self.creationTime = creationTime
+    self.publishedTime = publishedTime
+    self.expirationTime = expirationTime
+    self.priority = priority
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.notificationId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.title = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.notificationMessage = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I64:
+          self.publishedTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.I64:
+          self.expirationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.I32:
+          self.priority = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('Notification')
+    if self.notificationId is not None:
+      oprot.writeFieldBegin('notificationId', TType.STRING, 1)
+      oprot.writeString(self.notificationId)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 2)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.title is not None:
+      oprot.writeFieldBegin('title', TType.STRING, 3)
+      oprot.writeString(self.title)
+      oprot.writeFieldEnd()
+    if self.notificationMessage is not None:
+      oprot.writeFieldBegin('notificationMessage', TType.STRING, 4)
+      oprot.writeString(self.notificationMessage)
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 5)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    if self.publishedTime is not None:
+      oprot.writeFieldBegin('publishedTime', TType.I64, 6)
+      oprot.writeI64(self.publishedTime)
+      oprot.writeFieldEnd()
+    if self.expirationTime is not None:
+      oprot.writeFieldBegin('expirationTime', TType.I64, 7)
+      oprot.writeI64(self.expirationTime)
+      oprot.writeFieldEnd()
+    if self.priority is not None:
+      oprot.writeFieldBegin('priority', TType.I32, 8)
+      oprot.writeI32(self.priority)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.title is None:
+      raise TProtocol.TProtocolException(message='Required field title is unset!')
+    if self.notificationMessage is None:
+      raise TProtocol.TProtocolException(message='Required field notificationMessage is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.notificationId)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.title)
+    value = (value * 31) ^ hash(self.notificationMessage)
+    value = (value * 31) ^ hash(self.creationTime)
+    value = (value * 31) ^ hash(self.publishedTime)
+    value = (value * 31) ^ hash(self.expirationTime)
+    value = (value * 31) ^ hash(self.priority)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.pyc
new file mode 100644
index 0000000..c9050e3
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/create-experiment.ipynb
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/create-experiment.ipynb b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/create-experiment.ipynb
new file mode 100644
index 0000000..3523a80
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/create-experiment.ipynb
@@ -0,0 +1,449 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "import sys\n",
+    "import random\n",
+    "\n",
+    "from thrift.protocol import TBinaryProtocol\n",
+    "from thrift.transport import TSocket, TTransport, TSSLSocket\n",
+    "\n",
+    "from apache.airavata.api import Airavata\n",
+    "from apache.airavata.model.experiment.ttypes import ExperimentModel\n",
+    "from apache.airavata.model.scheduling.ttypes import ComputationalResourceSchedulingModel\n",
+    "from apache.airavata.model.experiment.ttypes import UserConfigurationDataModel\n",
+    "from apache.airavata.model.status.ttypes import ExperimentState\n",
+    "from apache.airavata.model.security.ttypes import AuthzToken\n",
+    "from apache.airavata.model.application.io.ttypes import InputDataObjectType, OutputDataObjectType\n",
+    "\n",
+    "from oauthlib.oauth2 import LegacyApplicationClient\n",
+    "from requests_oauthlib import OAuth2Session\n",
+    "from oauthlib.oauth2 import BackendApplicationClient"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Getting OAuth Access Code from IDP"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "client_id = r'XXXXXXXXXXX'\n",
+    "client_secret = r'XXXXXXXXXXXX'\n",
+    "\n",
+    "client = BackendApplicationClient(client_id=client_id)\n",
+    "oauth = OAuth2Session(client=client)\n",
+    "token = oauth.fetch_token(token_url='https://idp.scigap.org:9443/oauth2/token', client_id=client_id, client_secret=client_secret)\n",
+    "authzToken = AuthzToken(token[\"access_token\"])\n",
+    "\n",
+    "claimsMap = {\"userName\":\"admin\",\"gatewayID\": \"seagrid\"}\n",
+    "authzToken.claimsMap = claimsMap\n",
+    "\n",
+    "userName = \"admin\"\n",
+    "gatewayId = \"seagrid\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Creating Airavata Client"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'0.16.0'"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "transport = TSSLSocket.TSSLSocket(\"gw56.iu.xsede.org\",9930, validate=False)\n",
+    "transport = TTransport.TBufferedTransport(transport)\n",
+    "protocol = TBinaryProtocol.TBinaryProtocol(transport)\n",
+    "airavataClient = Airavata.Client(protocol)\n",
+    "transport.open()\n",
+    "\n",
+    "#Testing the Airavata Client\n",
+    "airavataClient.getAPIVersion(authzToken)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## List User Projects"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "TestProject487543_b6ba13ff-4af5-4cf1-a5d4-9a7908cd338e\n",
+      "TestProject0398576_bb39d722-e136-41d2-89fd-a2e60e15c841\n",
+      "TestProject984752_9d011ce9-24ea-41a7-a40c-0192cbdb475f\n",
+      "TestProject81724_f4dde490-2e23-4308-b2c7-0cc2454520f0\n",
+      "TestProj5_e8b872d9-17ed-4f13-9007-40cd71df6450\n",
+      "TestProj4_ca7b95df-dd56-41b5-b112-d58b2748fc46\n",
+      "TestProj3_3ff3b1fc-70e0-4cfc-8581-b915209786a5\n",
+      "TheTestProj_397ccd77-0cb3-4c86-ba74-fb1954548085\n",
+      "TestProj_733ada60-2e88-4f52-a4f4-789c2795fc3e\n",
+      "testeroonius_61d70e07-78fc-4b82-a26b-24d37b2bd294\n",
+      "testeroonius_0e20b332-c694-4b90-9443-8403d46a1fcc\n",
+      "testeroonius_21e5f9aa-9fef-406d-9ff2-315ed7312efe\n",
+      "testeroonius_b31b789e-c61a-4eeb-828d-35edc2fcaa4b\n",
+      "testerooni_4a655ef7-b04b-4f6f-8481-216ebdb8437b\n",
+      "DefaultProject_9f56c72c-51ef-461e-bad8-6595af42b8de\n"
+     ]
+    }
+   ],
+   "source": [
+    "projects = airavataClient.getUserProjects(authzToken, gatewayId, userName, -1, 0)\n",
+    "for p in projects:\n",
+    "        print(p.projectID)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "selectedProjId = \"TestProj3_3ff3b1fc-70e0-4cfc-8581-b915209786a5\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## List of Applications Available in the Gateway"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Echo_3f480d1f-ea86-4018-94bb-015423d66a1c\n",
+      "Amber_Sander_27b68571-b9c0-4bd5-bd70-e29435fa81bd\n",
+      "Gaussian_377feede-4d67-4065-984f-284d05c7d32d\n",
+      "Gromacs_c56857f1-c5d5-491b-b5ac-3f8165fdfc7a\n",
+      "Abinit_69939a97-17b8-472c-bdf3-81a41de57b74\n",
+      "AutoDock_6140eb97-af55-458d-a610-0e6cfee82487\n",
+      "CP2K_e9f82e52-dd78-4733-81ef-e163443efae5\n",
+      "CPMD_2038f63a-42a2-45df-b5fb-8916c1df8fc8\n",
+      "DDSCat_7911e731-2a8f-47fa-9ec2-e97f94ddbe7a\n",
+      "DFTB+_3b6232a4-3584-42bd-a0fb-452e56fc1c97\n",
+      "Gamess_9014bed7-f6a9-4bf6-8903-3531fce6adfe\n",
+      "Gamess_BR2_4a9a65dd-d9ea-45ff-a752-44614cf78dce\n",
+      "Gamess_Stampede_b8e90ce5-81ab-42ab-be57-304f2cdeb69e\n",
+      "Gromacs_CrayMPI_579f6463-10bb-4f06-9b6c-2e43589aaed3\n",
+      "Lammps_09de4f61-45b8-4c24-90c6-ebe718958728\n",
+      "Lammps_BR2_090f5f20-bb8e-4b96-a0fa-85cea7aec2f1\n",
+      "Molcas_89d5feb0-b1f1-437a-baef-9f353debd145\n",
+      "NWChem_e21df4ce-0c8e-422b-9e79-e0e7d56fad1f\n",
+      "Qchem_5e2f490a-25da-4631-a96d-d6f428e77ad5\n",
+      "Quantum_Espresso_fa1c5f04-bc52-4e91-8fd7-dbd1bcb1e39b\n",
+      "Tinker_Monte_1afae7f3-7c02-4fc6-8c67-8378c65a88b3\n",
+      "Abaqus_dcf7df79-5564-46db-88c4-837207882fdb\n",
+      "NEK5000_8ca957b3-6037-4535-9e02-005eb7dafd2d\n",
+      "Test-Application-Interface_39f9229d-c3b6-4251-90ec-c76265aafde8\n",
+      "Tes-App-Int_3efc89dc-d03a-4abb-af33-d7f242e9c656\n",
+      "TestAppInt1_2776c902-3200-4363-ab1e-ff99adc643cf\n",
+      "Test1_9c82fb1e-54da-42e8-87ae-6e3e1b1b8951\n",
+      "AutoDock_Vina_dcb6a898-fef3-4bed-b2d3-9aad45b42131\n",
+      "TestAppInt2_458c30d2-5f29-45b9-acd8-953315c6a730\n",
+      "Phasta_P_61030007-7243-4c6c-b13c-e7287670a847\n",
+      "Vina_Multiple_85771219-f188-48da-8dfe-422eea72c1ff\n",
+      "Vina_Optional_Ligands_a32ee927-f205-49a1-9a6f-c03e4a24aefc\n",
+      "Trinity_33a4a5ab-8d69-4477-a72d-0bd0cd7f3926\n"
+     ]
+    }
+   ],
+   "source": [
+    "appInterfaces = airavataClient.getAllApplicationInterfaces(authzToken, gatewayId)\n",
+    "for interface in appInterfaces:\n",
+    "    print(interface.applicationInterfaceId)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Listing all Compute Resource with Echo App Enabled"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "selectedInterfaceId = \"Echo_3f480d1f-ea86-4018-94bb-015423d66a1c\"\n",
+    "availableCompRes = airavataClient.getAvailableAppInterfaceComputeResources(authzToken, selectedInterfaceId)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "bigred2.uits.iu.edu_ac140dca-3c88-46d8-b9ed-875d96ea6908 bigred2.uits.iu.edu\n"
+     ]
+    }
+   ],
+   "source": [
+    "for k in availableCompRes:\n",
+    "    print(k + \" \" + availableCompRes[k])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "selectedCompResId = \"bigred2.uits.iu.edu_ac140dca-3c88-46d8-b9ed-875d96ea6908\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Creating the Experiment Object"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "experiment = ExperimentModel()\n",
+    "experiment.experimentName = \"Simple Echo Experiment \" + str(random.random())\n",
+    "experiment.projectId = selectedProjId\n",
+    "experiment.gatewayId = gatewayId\n",
+    "experiment.userName = userName\n",
+    "experiment.description = \"Simple Echo Experiment\"\n",
+    "experiment.executionId = selectedInterfaceId"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "echoInterface = airavataClient.getApplicationInterface(authzToken, selectedInterfaceId)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "inputs = echoInterface.applicationInputs\n",
+    "inputs[0].value = \"Hello World\"\n",
+    "\n",
+    "experiment.experimentInputs = inputs\n",
+    "experiment.experimentOutputs = echoInterface.applicationOutputs"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "compResource = airavataClient.getComputeResource(authzToken, selectedCompResId)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[BatchQueue(maxJobsInQueue=0, maxNodes=128, maxRunTime=2880, maxMemory=0, queueDescription='The routing queue for all \"production\" jobs; each job is routed, based on its resource requirements, to one of the execution queues (normal, serial, or long)', maxProcessors=4096, queueName='cpu'),\n",
+       " BatchQueue(maxJobsInQueue=0, maxNodes=21824, maxRunTime=0, maxMemory=0, queueDescription='GPU queue', maxProcessors=1364, queueName='gpu')]"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "compResource.batchQueues"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "queueName = \"cpu\"\n",
+    "\n",
+    "computationalRS = ComputationalResourceSchedulingModel()\n",
+    "computationalRS.resourceHostId = selectedCompResId\n",
+    "computationalRS.totalCPUCount = 16\n",
+    "computationalRS.nodeCount = 1\n",
+    "computationalRS.numberOfThreads = 1\n",
+    "computationalRS.queueName = queueName\n",
+    "computationalRS.wallTimeLimit = 10\n",
+    "computationalRS.totalPhysicalMemory = 1\n",
+    "\n",
+    "userConfig = UserConfigurationDataModel()\n",
+    "userConfig.airavataAutoSchedule = True\n",
+    "userConfig.overrideManualScheduledParams = False\n",
+    "userConfig.computationalResourceScheduling = computationalRS\n",
+    "\n",
+    "experiment.userConfigurationData = userConfig"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Create & Launch Experiment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Experiment Id is SimpleEchoExperiment0.666940363066_ed483ef9-f87f-402d-a25c-881b1d6cc6ac\n"
+     ]
+    }
+   ],
+   "source": [
+    "transport.open()\n",
+    "expId = airavataClient.createExperiment(authzToken, gatewayId, experiment)\n",
+    "print (\"Experiment Id is \" + expId)\n",
+    "airavataClient.launchExperiment(authzToken, expId, gatewayId)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Retreiving Experiment Status"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "LAUNCHED\n"
+     ]
+    }
+   ],
+   "source": [
+    "transport.open()\n",
+    "status = airavataClient.getExperimentStatus(authzToken, expId)\n",
+    "print(ExperimentState._VALUES_TO_NAMES[status.state])"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "language": "python",
+   "name": "python2"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 2
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython2",
+   "version": "2.7.12"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TSCons.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TSCons.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TSCons.py
new file mode 100644
index 0000000..da8d283
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TSCons.py
@@ -0,0 +1,35 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+from os import path
+from SCons.Builder import Builder
+
+
+def scons_env(env, add=''):
+  opath = path.dirname(path.abspath('$TARGET'))
+  lstr = 'thrift --gen cpp -o ' + opath + ' ' + add + ' $SOURCE'
+  cppbuild = Builder(action=lstr)
+  env.Append(BUILDERS={'ThriftCpp': cppbuild})
+
+
+def gen_cpp(env, dir, file):
+  scons_env(env)
+  suffixes = ['_types.h', '_types.cpp']
+  targets = map(lambda s: 'gen-cpp/' + file + s, suffixes)
+  return env.ThriftCpp(targets, dir + file + '.thrift')

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TSerialization.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TSerialization.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TSerialization.py
new file mode 100644
index 0000000..54f10e2
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TSerialization.py
@@ -0,0 +1,38 @@
+#
+# 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.
+#
+
+from lib.thrift.protocol import TBinaryProtocol
+from lib.thrift.transport import TTransport
+
+
+def serialize(thrift_object,
+              protocol_factory=TBinaryProtocol.TBinaryProtocolFactory()):
+    transport = TTransport.TMemoryBuffer()
+    protocol = protocol_factory.getProtocol(transport)
+    thrift_object.write(protocol)
+    return transport.getvalue()
+
+
+def deserialize(base,
+                buf,
+                protocol_factory=TBinaryProtocol.TBinaryProtocolFactory()):
+    transport = TTransport.TMemoryBuffer(buf)
+    protocol = protocol_factory.getProtocol(transport)
+    base.read(protocol)
+    return base

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TTornado.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TTornado.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TTornado.py
new file mode 100644
index 0000000..af309c3
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/TTornado.py
@@ -0,0 +1,153 @@
+#
+# 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.
+#
+
+from cStringIO import StringIO
+import logging
+import socket
+import struct
+
+from thrift.transport import TTransport
+from thrift.transport.TTransport import TTransportException
+
+from tornado import gen
+from tornado import iostream
+from tornado import netutil
+
+
+class TTornadoStreamTransport(TTransport.TTransportBase):
+    """a framed, buffered transport over a Tornado stream"""
+    def __init__(self, host, port, stream=None):
+        self.host = host
+        self.port = port
+        self.is_queuing_reads = False
+        self.read_queue = []
+        self.__wbuf = StringIO()
+
+        # servers provide a ready-to-go stream
+        self.stream = stream
+        if self.stream is not None:
+            self._set_close_callback()
+
+    # not the same number of parameters as TTransportBase.open
+    def open(self, callback):
+        logging.debug('socket connecting')
+        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
+        self.stream = iostream.IOStream(sock)
+
+        def on_close_in_connect(*_):
+            message = 'could not connect to {}:{}'.format(self.host, self.port)
+            raise TTransportException(
+                type=TTransportException.NOT_OPEN,
+                message=message)
+        self.stream.set_close_callback(on_close_in_connect)
+
+        def finish(*_):
+            self._set_close_callback()
+            callback()
+
+        self.stream.connect((self.host, self.port), callback=finish)
+
+    def _set_close_callback(self):
+        def on_close():
+            raise TTransportException(
+                type=TTransportException.END_OF_FILE,
+                message='socket closed')
+        self.stream.set_close_callback(self.close)
+
+    def close(self):
+        # don't raise if we intend to close
+        self.stream.set_close_callback(None)
+        self.stream.close()
+
+    def read(self, _):
+        # The generated code for Tornado shouldn't do individual reads -- only
+        # frames at a time
+        assert "you're doing it wrong" is True
+
+    @gen.engine
+    def readFrame(self, callback):
+        self.read_queue.append(callback)
+        logging.debug('read queue: %s', self.read_queue)
+
+        if self.is_queuing_reads:
+            # If a read is already in flight, then the while loop below should
+            # pull it from self.read_queue
+            return
+
+        self.is_queuing_reads = True
+        while self.read_queue:
+            next_callback = self.read_queue.pop()
+            result = yield gen.Task(self._readFrameFromStream)
+            next_callback(result)
+        self.is_queuing_reads = False
+
+    @gen.engine
+    def _readFrameFromStream(self, callback):
+        logging.debug('_readFrameFromStream')
+        frame_header = yield gen.Task(self.stream.read_bytes, 4)
+        frame_length, = struct.unpack('!i', frame_header)
+        logging.debug('received frame header, frame length = %i', frame_length)
+        frame = yield gen.Task(self.stream.read_bytes, frame_length)
+        logging.debug('received frame payload')
+        callback(frame)
+
+    def write(self, buf):
+        self.__wbuf.write(buf)
+
+    def flush(self, callback=None):
+        wout = self.__wbuf.getvalue()
+        wsz = len(wout)
+        # reset wbuf before write/flush to preserve state on underlying failure
+        self.__wbuf = StringIO()
+        # N.B.: Doing this string concatenation is WAY cheaper than making
+        # two separate calls to the underlying socket object. Socket writes in
+        # Python turn out to be REALLY expensive, but it seems to do a pretty
+        # good job of managing string buffer operations without excessive copies
+        buf = struct.pack("!i", wsz) + wout
+
+        logging.debug('writing frame length = %i', wsz)
+        self.stream.write(buf, callback)
+
+
+class TTornadoServer(netutil.TCPServer):
+    def __init__(self, processor, iprot_factory, oprot_factory=None,
+                 *args, **kwargs):
+        super(TTornadoServer, self).__init__(*args, **kwargs)
+
+        self._processor = processor
+        self._iprot_factory = iprot_factory
+        self._oprot_factory = (oprot_factory if oprot_factory is not None
+                               else iprot_factory)
+
+    def handle_stream(self, stream, address):
+        try:
+            host, port = address
+            trans = TTornadoStreamTransport(host=host, port=port, stream=stream)
+            oprot = self._oprot_factory.getProtocol(trans)
+
+            def next_pass():
+                if not trans.stream.closed():
+                    self._processor.process(trans, self._iprot_factory, oprot,
+                                            callback=next_pass)
+
+            next_pass()
+
+        except Exception:
+            logging.exception('thrift exception in handle_stream')
+            trans.close()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.py
new file mode 100644
index 0000000..9890af7
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.py
@@ -0,0 +1,170 @@
+#
+# 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.
+#
+
+import sys
+
+
+class TType:
+  STOP   = 0
+  VOID   = 1
+  BOOL   = 2
+  BYTE   = 3
+  I08    = 3
+  DOUBLE = 4
+  I16    = 6
+  I32    = 8
+  I64    = 10
+  STRING = 11
+  UTF7   = 11
+  STRUCT = 12
+  MAP    = 13
+  SET    = 14
+  LIST   = 15
+  UTF8   = 16
+  UTF16  = 17
+
+  _VALUES_TO_NAMES = ('STOP',
+                      'VOID',
+                      'BOOL',
+                      'BYTE',
+                      'DOUBLE',
+                      None,
+                      'I16',
+                      None,
+                      'I32',
+                      None,
+                     'I64',
+                     'STRING',
+                     'STRUCT',
+                     'MAP',
+                     'SET',
+                     'LIST',
+                     'UTF8',
+                     'UTF16')
+
+
+class TMessageType:
+  CALL = 1
+  REPLY = 2
+  EXCEPTION = 3
+  ONEWAY = 4
+
+
+class TProcessor:
+  """Base class for procsessor, which works on two streams."""
+
+  def process(iprot, oprot):
+    pass
+
+
+class TException(Exception):
+  """Base class for all thrift exceptions."""
+
+  # BaseException.message is deprecated in Python v[2.6,3.0)
+  if (2, 6, 0) <= sys.version_info < (3, 0):
+    def _get_message(self):
+      return self._message
+
+    def _set_message(self, message):
+      self._message = message
+    message = property(_get_message, _set_message)
+
+  def __init__(self, message=None):
+    Exception.__init__(self, message)
+    self.message = message
+
+
+class TApplicationException(TException):
+  """Application level thrift exceptions."""
+
+  UNKNOWN = 0
+  UNKNOWN_METHOD = 1
+  INVALID_MESSAGE_TYPE = 2
+  WRONG_METHOD_NAME = 3
+  BAD_SEQUENCE_ID = 4
+  MISSING_RESULT = 5
+  INTERNAL_ERROR = 6
+  PROTOCOL_ERROR = 7
+  INVALID_TRANSFORM = 8
+  INVALID_PROTOCOL = 9
+  UNSUPPORTED_CLIENT_TYPE = 10
+
+  def __init__(self, type=UNKNOWN, message=None):
+    TException.__init__(self, message)
+    self.type = type
+
+  def __str__(self):
+    if self.message:
+      return self.message
+    elif self.type == self.UNKNOWN_METHOD:
+      return 'Unknown method'
+    elif self.type == self.INVALID_MESSAGE_TYPE:
+      return 'Invalid message type'
+    elif self.type == self.WRONG_METHOD_NAME:
+      return 'Wrong method name'
+    elif self.type == self.BAD_SEQUENCE_ID:
+      return 'Bad sequence ID'
+    elif self.type == self.MISSING_RESULT:
+      return 'Missing result'
+    elif self.type == self.INTERNAL_ERROR:
+      return 'Internal error'
+    elif self.type == self.PROTOCOL_ERROR:
+      return 'Protocol error'
+    elif self.type == self.INVALID_TRANSFORM:
+      return 'Invalid transform'
+    elif self.type == self.INVALID_PROTOCOL:
+      return 'Invalid protocol'
+    elif self.type == self.UNSUPPORTED_CLIENT_TYPE:
+      return 'Unsupported client type'
+    else:
+      return 'Default (unknown) TApplicationException'
+
+  def read(self, iprot):
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.message = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.type = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    oprot.writeStructBegin('TApplicationException')
+    if self.message is not None:
+      oprot.writeFieldBegin('message', TType.STRING, 1)
+      oprot.writeString(self.message)
+      oprot.writeFieldEnd()
+    if self.type is not None:
+      oprot.writeFieldBegin('type', TType.I32, 2)
+      oprot.writeI32(self.type)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.pyc
new file mode 100644
index 0000000..829e502
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/Thrift.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.py
new file mode 100644
index 0000000..48d659c
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.py
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+__all__ = ['Thrift', 'TSCons']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.pyc
new file mode 100644
index 0000000..f8f5649
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBase.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBase.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBase.py
new file mode 100644
index 0000000..6cbd5f3
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBase.py
@@ -0,0 +1,81 @@
+#
+# 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.
+#
+
+from thrift.Thrift import *
+from thrift.protocol import TBinaryProtocol
+from thrift.transport import TTransport
+
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class TBase(object):
+  __slots__ = []
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, getattr(self, key))
+              for key in self.__slots__]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    if not isinstance(other, self.__class__):
+      return False
+    for attr in self.__slots__:
+      my_val = getattr(self, attr)
+      other_val = getattr(other, attr)
+      if my_val != other_val:
+        return False
+    return True
+
+  def __ne__(self, other):
+    return not (self == other)
+
+  def read(self, iprot):
+    if (iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and
+        isinstance(iprot.trans, TTransport.CReadableTransport) and
+        self.thrift_spec is not None and
+        fastbinary is not None):
+      fastbinary.decode_binary(self,
+                               iprot.trans,
+                               (self.__class__, self.thrift_spec))
+      return
+    iprot.readStruct(self, self.thrift_spec)
+
+  def write(self, oprot):
+    if (oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and
+        self.thrift_spec is not None and
+        fastbinary is not None):
+      oprot.trans.write(
+        fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStruct(self, self.thrift_spec)
+
+
+class TExceptionBase(Exception):
+  # old style class so python2.4 can raise exceptions derived from this
+  #  This can't inherit from TBase because of that limitation.
+  __slots__ = []
+
+  __repr__ = TBase.__repr__.im_func
+  __eq__ = TBase.__eq__.im_func
+  __ne__ = TBase.__ne__.im_func
+  read = TBase.read.im_func
+  write = TBase.write.im_func

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.py
new file mode 100644
index 0000000..17a600f
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.py
@@ -0,0 +1,261 @@
+#
+# 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.
+#
+
+from struct import pack, unpack
+
+from thrift.protocol.TProtocol import *
+
+
+class TBinaryProtocol(TProtocolBase):
+  """Binary implementation of the Thrift protocol driver."""
+
+  # NastyHaxx. Python 2.4+ on 32-bit machines forces hex constants to be
+  # positive, converting this into a long. If we hardcode the int value
+  # instead it'll stay in 32 bit-land.
+
+  # VERSION_MASK = 0xffff0000
+  VERSION_MASK = -65536
+
+  # VERSION_1 = 0x80010000
+  VERSION_1 = -2147418112
+
+  TYPE_MASK = 0x000000ff
+
+  def __init__(self, trans, strictRead=False, strictWrite=True):
+    TProtocolBase.__init__(self, trans)
+    self.strictRead = strictRead
+    self.strictWrite = strictWrite
+
+  def writeMessageBegin(self, name, type, seqid):
+    if self.strictWrite:
+      self.writeI32(TBinaryProtocol.VERSION_1 | type)
+      self.writeString(name)
+      self.writeI32(seqid)
+    else:
+      self.writeString(name)
+      self.writeByte(type)
+      self.writeI32(seqid)
+
+  def writeMessageEnd(self):
+    pass
+
+  def writeStructBegin(self, name):
+    pass
+
+  def writeStructEnd(self):
+    pass
+
+  def writeFieldBegin(self, name, type, id):
+    self.writeByte(type)
+    self.writeI16(id)
+
+  def writeFieldEnd(self):
+    pass
+
+  def writeFieldStop(self):
+    self.writeByte(TType.STOP)
+
+  def writeMapBegin(self, ktype, vtype, size):
+    self.writeByte(ktype)
+    self.writeByte(vtype)
+    self.writeI32(size)
+
+  def writeMapEnd(self):
+    pass
+
+  def writeListBegin(self, etype, size):
+    self.writeByte(etype)
+    self.writeI32(size)
+
+  def writeListEnd(self):
+    pass
+
+  def writeSetBegin(self, etype, size):
+    self.writeByte(etype)
+    self.writeI32(size)
+
+  def writeSetEnd(self):
+    pass
+
+  def writeBool(self, bool):
+    if bool:
+      self.writeByte(1)
+    else:
+      self.writeByte(0)
+
+  def writeByte(self, byte):
+    buff = pack("!b", byte)
+    self.trans.write(buff)
+
+  def writeI16(self, i16):
+    buff = pack("!h", i16)
+    self.trans.write(buff)
+
+  def writeI32(self, i32):
+    buff = pack("!i", i32)
+    self.trans.write(buff)
+
+  def writeI64(self, i64):
+    buff = pack("!q", i64)
+    self.trans.write(buff)
+
+  def writeDouble(self, dub):
+    buff = pack("!d", dub)
+    self.trans.write(buff)
+
+  def writeString(self, str):
+    self.writeI32(len(str))
+    self.trans.write(str)
+
+  def readMessageBegin(self):
+    sz = self.readI32()
+    if sz < 0:
+      version = sz & TBinaryProtocol.VERSION_MASK
+      if version != TBinaryProtocol.VERSION_1:
+        raise TProtocolException(
+          type=TProtocolException.BAD_VERSION,
+          message='Bad version in readMessageBegin: %d' % (sz))
+      type = sz & TBinaryProtocol.TYPE_MASK
+      name = self.readString()
+      seqid = self.readI32()
+    else:
+      if self.strictRead:
+        raise TProtocolException(type=TProtocolException.BAD_VERSION,
+                                 message='No protocol version header')
+      name = self.trans.readAll(sz)
+      type = self.readByte()
+      seqid = self.readI32()
+    return (name, type, seqid)
+
+  def readMessageEnd(self):
+    pass
+
+  def readStructBegin(self):
+    pass
+
+  def readStructEnd(self):
+    pass
+
+  def readFieldBegin(self):
+    type = self.readByte()
+    if type == TType.STOP:
+      return (None, type, 0)
+    id = self.readI16()
+    return (None, type, id)
+
+  def readFieldEnd(self):
+    pass
+
+  def readMapBegin(self):
+    ktype = self.readByte()
+    vtype = self.readByte()
+    size = self.readI32()
+    return (ktype, vtype, size)
+
+  def readMapEnd(self):
+    pass
+
+  def readListBegin(self):
+    etype = self.readByte()
+    size = self.readI32()
+    return (etype, size)
+
+  def readListEnd(self):
+    pass
+
+  def readSetBegin(self):
+    etype = self.readByte()
+    size = self.readI32()
+    return (etype, size)
+
+  def readSetEnd(self):
+    pass
+
+  def readBool(self):
+    byte = self.readByte()
+    if byte == 0:
+      return False
+    return True
+
+  def readByte(self):
+    buff = self.trans.readAll(1)
+    val, = unpack('!b', buff)
+    return val
+
+  def readI16(self):
+    buff = self.trans.readAll(2)
+    val, = unpack('!h', buff)
+    return val
+
+  def readI32(self):
+    buff = self.trans.readAll(4)
+    val, = unpack('!i', buff)
+    return val
+
+  def readI64(self):
+    buff = self.trans.readAll(8)
+    val, = unpack('!q', buff)
+    return val
+
+  def readDouble(self):
+    buff = self.trans.readAll(8)
+    val, = unpack('!d', buff)
+    return val
+
+  def readString(self):
+    len = self.readI32()
+    str = self.trans.readAll(len)
+    return str
+
+
+class TBinaryProtocolFactory:
+  def __init__(self, strictRead=False, strictWrite=True):
+    self.strictRead = strictRead
+    self.strictWrite = strictWrite
+
+  def getProtocol(self, trans):
+    prot = TBinaryProtocol(trans, self.strictRead, self.strictWrite)
+    return prot
+
+
+class TBinaryProtocolAccelerated(TBinaryProtocol):
+  """C-Accelerated version of TBinaryProtocol.
+
+  This class does not override any of TBinaryProtocol's methods,
+  but the generated code recognizes it directly and will call into
+  our C module to do the encoding, bypassing this object entirely.
+  We inherit from TBinaryProtocol so that the normal TBinaryProtocol
+  encoding can happen if the fastbinary module doesn't work for some
+  reason.  (TODO(dreiss): Make this happen sanely in more cases.)
+
+  In order to take advantage of the C module, just use
+  TBinaryProtocolAccelerated instead of TBinaryProtocol.
+
+  NOTE:  This code was contributed by an external developer.
+         The internal Thrift team has reviewed and tested it,
+         but we cannot guarantee that it is production-ready.
+         Please feel free to report bugs and/or success stories
+         to the public mailing list.
+  """
+  pass
+
+
+class TBinaryProtocolAcceleratedFactory:
+  def getProtocol(self, trans):
+    return TBinaryProtocolAccelerated(trans)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.pyc
new file mode 100644
index 0000000..85a6486
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TBinaryProtocol.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TCompactProtocol.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TCompactProtocol.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TCompactProtocol.py
new file mode 100644
index 0000000..fcf8e62
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/thrift/protocol/TCompactProtocol.py
@@ -0,0 +1,405 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+from struct import pack, unpack
+
+from thrift.protocol.TProtocol import *
+
+
+__all__ = ['TCompactProtocol', 'TCompactProtocolFactory']
+
+CLEAR = 0
+FIELD_WRITE = 1
+VALUE_WRITE = 2
+CONTAINER_WRITE = 3
+BOOL_WRITE = 4
+FIELD_READ = 5
+CONTAINER_READ = 6
+VALUE_READ = 7
+BOOL_READ = 8
+
+
+def make_helper(v_from, container):
+  def helper(func):
+    def nested(self, *args, **kwargs):
+      assert self.state in (v_from, container), (self.state, v_from, container)
+      return func(self, *args, **kwargs)
+    return nested
+  return helper
+writer = make_helper(VALUE_WRITE, CONTAINER_WRITE)
+reader = make_helper(VALUE_READ, CONTAINER_READ)
+
+
+def makeZigZag(n, bits):
+  return (n << 1) ^ (n >> (bits - 1))
+
+
+def fromZigZag(n):
+  return (n >> 1) ^ -(n & 1)
+
+
+def writeVarint(trans, n):
+  out = []
+  while True:
+    if n & ~0x7f == 0:
+      out.append(n)
+      break
+    else:
+      out.append((n & 0xff) | 0x80)
+      n = n >> 7
+  trans.write(''.join(map(chr, out)))
+
+
+def readVarint(trans):
+  result = 0
+  shift = 0
+  while True:
+    x = trans.readAll(1)
+    byte = ord(x)
+    result |= (byte & 0x7f) << shift
+    if byte >> 7 == 0:
+      return result
+    shift += 7
+
+
+class CompactType:
+  STOP = 0x00
+  TRUE = 0x01
+  FALSE = 0x02
+  BYTE = 0x03
+  I16 = 0x04
+  I32 = 0x05
+  I64 = 0x06
+  DOUBLE = 0x07
+  BINARY = 0x08
+  LIST = 0x09
+  SET = 0x0A
+  MAP = 0x0B
+  STRUCT = 0x0C
+
+CTYPES = {TType.STOP: CompactType.STOP,
+          TType.BOOL: CompactType.TRUE,  # used for collection
+          TType.BYTE: CompactType.BYTE,
+          TType.I16: CompactType.I16,
+          TType.I32: CompactType.I32,
+          TType.I64: CompactType.I64,
+          TType.DOUBLE: CompactType.DOUBLE,
+          TType.STRING: CompactType.BINARY,
+          TType.STRUCT: CompactType.STRUCT,
+          TType.LIST: CompactType.LIST,
+          TType.SET: CompactType.SET,
+          TType.MAP: CompactType.MAP
+          }
+
+TTYPES = {}
+for k, v in CTYPES.items():
+  TTYPES[v] = k
+TTYPES[CompactType.FALSE] = TType.BOOL
+del k
+del v
+
+
+class TCompactProtocol(TProtocolBase):
+  """Compact implementation of the Thrift protocol driver."""
+
+  PROTOCOL_ID = 0x82
+  VERSION = 1
+  VERSION_MASK = 0x1f
+  TYPE_MASK = 0xe0
+  TYPE_SHIFT_AMOUNT = 5
+
+  def __init__(self, trans):
+    TProtocolBase.__init__(self, trans)
+    self.state = CLEAR
+    self.__last_fid = 0
+    self.__bool_fid = None
+    self.__bool_value = None
+    self.__structs = []
+    self.__containers = []
+
+  def __writeVarint(self, n):
+    writeVarint(self.trans, n)
+
+  def writeMessageBegin(self, name, type, seqid):
+    assert self.state == CLEAR
+    self.__writeUByte(self.PROTOCOL_ID)
+    self.__writeUByte(self.VERSION | (type << self.TYPE_SHIFT_AMOUNT))
+    self.__writeVarint(seqid)
+    self.__writeString(name)
+    self.state = VALUE_WRITE
+
+  def writeMessageEnd(self):
+    assert self.state == VALUE_WRITE
+    self.state = CLEAR
+
+  def writeStructBegin(self, name):
+    assert self.state in (CLEAR, CONTAINER_WRITE, VALUE_WRITE), self.state
+    self.__structs.append((self.state, self.__last_fid))
+    self.state = FIELD_WRITE
+    self.__last_fid = 0
+
+  def writeStructEnd(self):
+    assert self.state == FIELD_WRITE
+    self.state, self.__last_fid = self.__structs.pop()
+
+  def writeFieldStop(self):
+    self.__writeByte(0)
+
+  def __writeFieldHeader(self, type, fid):
+    delta = fid - self.__last_fid
+    if 0 < delta <= 15:
+      self.__writeUByte(delta << 4 | type)
+    else:
+      self.__writeByte(type)
+      self.__writeI16(fid)
+    self.__last_fid = fid
+
+  def writeFieldBegin(self, name, type, fid):
+    assert self.state == FIELD_WRITE, self.state
+    if type == TType.BOOL:
+      self.state = BOOL_WRITE
+      self.__bool_fid = fid
+    else:
+      self.state = VALUE_WRITE
+      self.__writeFieldHeader(CTYPES[type], fid)
+
+  def writeFieldEnd(self):
+    assert self.state in (VALUE_WRITE, BOOL_WRITE), self.state
+    self.state = FIELD_WRITE
+
+  def __writeUByte(self, byte):
+    self.trans.write(pack('!B', byte))
+
+  def __writeByte(self, byte):
+    self.trans.write(pack('!b', byte))
+
+  def __writeI16(self, i16):
+    self.__writeVarint(makeZigZag(i16, 16))
+
+  def __writeSize(self, i32):
+    self.__writeVarint(i32)
+
+  def writeCollectionBegin(self, etype, size):
+    assert self.state in (VALUE_WRITE, CONTAINER_WRITE), self.state
+    if size <= 14:
+      self.__writeUByte(size << 4 | CTYPES[etype])
+    else:
+      self.__writeUByte(0xf0 | CTYPES[etype])
+      self.__writeSize(size)
+    self.__containers.append(self.state)
+    self.state = CONTAINER_WRITE
+  writeSetBegin = writeCollectionBegin
+  writeListBegin = writeCollectionBegin
+
+  def writeMapBegin(self, ktype, vtype, size):
+    assert self.state in (VALUE_WRITE, CONTAINER_WRITE), self.state
+    if size == 0:
+      self.__writeByte(0)
+    else:
+      self.__writeSize(size)
+      self.__writeUByte(CTYPES[ktype] << 4 | CTYPES[vtype])
+    self.__containers.append(self.state)
+    self.state = CONTAINER_WRITE
+
+  def writeCollectionEnd(self):
+    assert self.state == CONTAINER_WRITE, self.state
+    self.state = self.__containers.pop()
+  writeMapEnd = writeCollectionEnd
+  writeSetEnd = writeCollectionEnd
+  writeListEnd = writeCollectionEnd
+
+  def writeBool(self, bool):
+    if self.state == BOOL_WRITE:
+      if bool:
+        ctype = CompactType.TRUE
+      else:
+        ctype = CompactType.FALSE
+      self.__writeFieldHeader(ctype, self.__bool_fid)
+    elif self.state == CONTAINER_WRITE:
+      if bool:
+        self.__writeByte(CompactType.TRUE)
+      else:
+        self.__writeByte(CompactType.FALSE)
+    else:
+      raise AssertionError("Invalid state in compact protocol")
+
+  writeByte = writer(__writeByte)
+  writeI16 = writer(__writeI16)
+
+  @writer
+  def writeI32(self, i32):
+    self.__writeVarint(makeZigZag(i32, 32))
+
+  @writer
+  def writeI64(self, i64):
+    self.__writeVarint(makeZigZag(i64, 64))
+
+  @writer
+  def writeDouble(self, dub):
+    self.trans.write(pack('!d', dub))
+
+  def __writeString(self, s):
+    self.__writeSize(len(s))
+    self.trans.write(s)
+  writeString = writer(__writeString)
+
+  def readFieldBegin(self):
+    assert self.state == FIELD_READ, self.state
+    type = self.__readUByte()
+    if type & 0x0f == TType.STOP:
+      return (None, 0, 0)
+    delta = type >> 4
+    if delta == 0:
+      fid = self.__readI16()
+    else:
+      fid = self.__last_fid + delta
+    self.__last_fid = fid
+    type = type & 0x0f
+    if type == CompactType.TRUE:
+      self.state = BOOL_READ
+      self.__bool_value = True
+    elif type == CompactType.FALSE:
+      self.state = BOOL_READ
+      self.__bool_value = False
+    else:
+      self.state = VALUE_READ
+    return (None, self.__getTType(type), fid)
+
+  def readFieldEnd(self):
+    assert self.state in (VALUE_READ, BOOL_READ), self.state
+    self.state = FIELD_READ
+
+  def __readUByte(self):
+    result, = unpack('!B', self.trans.readAll(1))
+    return result
+
+  def __readByte(self):
+    result, = unpack('!b', self.trans.readAll(1))
+    return result
+
+  def __readVarint(self):
+    return readVarint(self.trans)
+
+  def __readZigZag(self):
+    return fromZigZag(self.__readVarint())
+
+  def __readSize(self):
+    result = self.__readVarint()
+    if result < 0:
+      raise TException("Length < 0")
+    return result
+
+  def readMessageBegin(self):
+    assert self.state == CLEAR
+    proto_id = self.__readUByte()
+    if proto_id != self.PROTOCOL_ID:
+      raise TProtocolException(TProtocolException.BAD_VERSION,
+          'Bad protocol id in the message: %d' % proto_id)
+    ver_type = self.__readUByte()
+    type = (ver_type & self.TYPE_MASK) >> self.TYPE_SHIFT_AMOUNT
+    version = ver_type & self.VERSION_MASK
+    if version != self.VERSION:
+      raise TProtocolException(TProtocolException.BAD_VERSION,
+          'Bad version: %d (expect %d)' % (version, self.VERSION))
+    seqid = self.__readVarint()
+    name = self.__readString()
+    return (name, type, seqid)
+
+  def readMessageEnd(self):
+    assert self.state == CLEAR
+    assert len(self.__structs) == 0
+
+  def readStructBegin(self):
+    assert self.state in (CLEAR, CONTAINER_READ, VALUE_READ), self.state
+    self.__structs.append((self.state, self.__last_fid))
+    self.state = FIELD_READ
+    self.__last_fid = 0
+
+  def readStructEnd(self):
+    assert self.state == FIELD_READ
+    self.state, self.__last_fid = self.__structs.pop()
+
+  def readCollectionBegin(self):
+    assert self.state in (VALUE_READ, CONTAINER_READ), self.state
+    size_type = self.__readUByte()
+    size = size_type >> 4
+    type = self.__getTType(size_type)
+    if size == 15:
+      size = self.__readSize()
+    self.__containers.append(self.state)
+    self.state = CONTAINER_READ
+    return type, size
+  readSetBegin = readCollectionBegin
+  readListBegin = readCollectionBegin
+
+  def readMapBegin(self):
+    assert self.state in (VALUE_READ, CONTAINER_READ), self.state
+    size = self.__readSize()
+    types = 0
+    if size > 0:
+      types = self.__readUByte()
+    vtype = self.__getTType(types)
+    ktype = self.__getTType(types >> 4)
+    self.__containers.append(self.state)
+    self.state = CONTAINER_READ
+    return (ktype, vtype, size)
+
+  def readCollectionEnd(self):
+    assert self.state == CONTAINER_READ, self.state
+    self.state = self.__containers.pop()
+  readSetEnd = readCollectionEnd
+  readListEnd = readCollectionEnd
+  readMapEnd = readCollectionEnd
+
+  def readBool(self):
+    if self.state == BOOL_READ:
+      return self.__bool_value == CompactType.TRUE
+    elif self.state == CONTAINER_READ:
+      return self.__readByte() == CompactType.TRUE
+    else:
+      raise AssertionError("Invalid state in compact protocol: %d" %
+                           self.state)
+
+  readByte = reader(__readByte)
+  __readI16 = __readZigZag
+  readI16 = reader(__readZigZag)
+  readI32 = reader(__readZigZag)
+  readI64 = reader(__readZigZag)
+
+  @reader
+  def readDouble(self):
+    buff = self.trans.readAll(8)
+    val, = unpack('!d', buff)
+    return val
+
+  def __readString(self):
+    len = self.__readSize()
+    return self.trans.readAll(len)
+  readString = reader(__readString)
+
+  def __getTType(self, byte):
+    return TTYPES[byte & 0x0f]
+
+
+class TCompactProtocolFactory:
+  def __init__(self):
+    pass
+
+  def getProtocol(self, trans):
+    return TCompactProtocol(trans)


[05/32] airavata-sandbox git commit: adding jupyter note books for Airavata

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.py
new file mode 100644
index 0000000..a18a061
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.py
@@ -0,0 +1,822 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+import apache.airavata.model.application.io.ttypes
+import apache.airavata.model.commons.ttypes
+
+
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class WorkflowState:
+  CREATED = 0
+  STARTED = 1
+  EXECUTING = 2
+  COMPLETED = 3
+  FAILED = 4
+  CANCELLING = 5
+  CANCELED = 6
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "STARTED",
+    2: "EXECUTING",
+    3: "COMPLETED",
+    4: "FAILED",
+    5: "CANCELLING",
+    6: "CANCELED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "STARTED": 1,
+    "EXECUTING": 2,
+    "COMPLETED": 3,
+    "FAILED": 4,
+    "CANCELLING": 5,
+    "CANCELED": 6,
+  }
+
+class ComponentState:
+  CREATED = 0
+  WAITING = 1
+  READY = 2
+  RUNNING = 3
+  COMPLETED = 4
+  FAILED = 5
+  CANCELED = 6
+
+  _VALUES_TO_NAMES = {
+    0: "CREATED",
+    1: "WAITING",
+    2: "READY",
+    3: "RUNNING",
+    4: "COMPLETED",
+    5: "FAILED",
+    6: "CANCELED",
+  }
+
+  _NAMES_TO_VALUES = {
+    "CREATED": 0,
+    "WAITING": 1,
+    "READY": 2,
+    "RUNNING": 3,
+    "COMPLETED": 4,
+    "FAILED": 5,
+    "CANCELED": 6,
+  }
+
+
+class WorkflowModel:
+  """
+  Attributes:
+   - templateId
+   - name
+   - graph
+   - gatewayId
+   - createdUser
+   - image
+   - workflowInputs
+   - workflowOutputs
+   - creationTime
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'templateId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRING, 'graph', None, None, ), # 3
+    (4, TType.STRING, 'gatewayId', None, None, ), # 4
+    (5, TType.STRING, 'createdUser', None, None, ), # 5
+    (6, TType.STRING, 'image', None, None, ), # 6
+    (7, TType.LIST, 'workflowInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 7
+    (8, TType.LIST, 'workflowOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 8
+    (9, TType.I64, 'creationTime', None, None, ), # 9
+  )
+
+  def __init__(self, templateId=thrift_spec[1][4], name=None, graph=None, gatewayId=None, createdUser=None, image=None, workflowInputs=None, workflowOutputs=None, creationTime=None,):
+    self.templateId = templateId
+    self.name = name
+    self.graph = graph
+    self.gatewayId = gatewayId
+    self.createdUser = createdUser
+    self.image = image
+    self.workflowInputs = workflowInputs
+    self.workflowOutputs = workflowOutputs
+    self.creationTime = creationTime
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.templateId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.graph = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.gatewayId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.createdUser = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.image = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.LIST:
+          self.workflowInputs = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem5.read(iprot)
+            self.workflowInputs.append(_elem5)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.LIST:
+          self.workflowOutputs = []
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem11.read(iprot)
+            self.workflowOutputs.append(_elem11)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.I64:
+          self.creationTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('WorkflowModel')
+    if self.templateId is not None:
+      oprot.writeFieldBegin('templateId', TType.STRING, 1)
+      oprot.writeString(self.templateId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.graph is not None:
+      oprot.writeFieldBegin('graph', TType.STRING, 3)
+      oprot.writeString(self.graph)
+      oprot.writeFieldEnd()
+    if self.gatewayId is not None:
+      oprot.writeFieldBegin('gatewayId', TType.STRING, 4)
+      oprot.writeString(self.gatewayId)
+      oprot.writeFieldEnd()
+    if self.createdUser is not None:
+      oprot.writeFieldBegin('createdUser', TType.STRING, 5)
+      oprot.writeString(self.createdUser)
+      oprot.writeFieldEnd()
+    if self.image is not None:
+      oprot.writeFieldBegin('image', TType.STRING, 6)
+      oprot.writeString(self.image)
+      oprot.writeFieldEnd()
+    if self.workflowInputs is not None:
+      oprot.writeFieldBegin('workflowInputs', TType.LIST, 7)
+      oprot.writeListBegin(TType.STRUCT, len(self.workflowInputs))
+      for iter12 in self.workflowInputs:
+        iter12.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.workflowOutputs is not None:
+      oprot.writeFieldBegin('workflowOutputs', TType.LIST, 8)
+      oprot.writeListBegin(TType.STRUCT, len(self.workflowOutputs))
+      for iter13 in self.workflowOutputs:
+        iter13.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.creationTime is not None:
+      oprot.writeFieldBegin('creationTime', TType.I64, 9)
+      oprot.writeI64(self.creationTime)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.templateId is None:
+      raise TProtocol.TProtocolException(message='Required field templateId is unset!')
+    if self.name is None:
+      raise TProtocol.TProtocolException(message='Required field name is unset!')
+    if self.graph is None:
+      raise TProtocol.TProtocolException(message='Required field graph is unset!')
+    if self.gatewayId is None:
+      raise TProtocol.TProtocolException(message='Required field gatewayId is unset!')
+    if self.createdUser is None:
+      raise TProtocol.TProtocolException(message='Required field createdUser is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.templateId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.graph)
+    value = (value * 31) ^ hash(self.gatewayId)
+    value = (value * 31) ^ hash(self.createdUser)
+    value = (value * 31) ^ hash(self.image)
+    value = (value * 31) ^ hash(self.workflowInputs)
+    value = (value * 31) ^ hash(self.workflowOutputs)
+    value = (value * 31) ^ hash(self.creationTime)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class ComponentStatus:
+  """
+  Attributes:
+   - state
+   - reason
+   - timeofStateChange
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None,     0, ), # 1
+    (2, TType.STRING, 'reason', None, None, ), # 2
+    (3, TType.I64, 'timeofStateChange', None, None, ), # 3
+  )
+
+  def __init__(self, state=thrift_spec[1][4], reason=None, timeofStateChange=None,):
+    self.state = state
+    self.reason = reason
+    self.timeofStateChange = timeofStateChange
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I64:
+          self.timeofStateChange = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('ComponentStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 2)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    if self.timeofStateChange is not None:
+      oprot.writeFieldBegin('timeofStateChange', TType.I64, 3)
+      oprot.writeI64(self.timeofStateChange)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.reason)
+    value = (value * 31) ^ hash(self.timeofStateChange)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class WorkflowStatus:
+  """
+  Attributes:
+   - state
+   - timeOfStateChange
+   - reason
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.I32, 'state', None, None, ), # 1
+    (2, TType.I64, 'timeOfStateChange', None, None, ), # 2
+    (3, TType.STRING, 'reason', None, None, ), # 3
+  )
+
+  def __init__(self, state=None, timeOfStateChange=None, reason=None,):
+    self.state = state
+    self.timeOfStateChange = timeOfStateChange
+    self.reason = reason
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.I32:
+          self.state = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I64:
+          self.timeOfStateChange = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.reason = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('WorkflowStatus')
+    if self.state is not None:
+      oprot.writeFieldBegin('state', TType.I32, 1)
+      oprot.writeI32(self.state)
+      oprot.writeFieldEnd()
+    if self.timeOfStateChange is not None:
+      oprot.writeFieldBegin('timeOfStateChange', TType.I64, 2)
+      oprot.writeI64(self.timeOfStateChange)
+      oprot.writeFieldEnd()
+    if self.reason is not None:
+      oprot.writeFieldBegin('reason', TType.STRING, 3)
+      oprot.writeString(self.reason)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.state is None:
+      raise TProtocol.TProtocolException(message='Required field state is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.state)
+    value = (value * 31) ^ hash(self.timeOfStateChange)
+    value = (value * 31) ^ hash(self.reason)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class EdgeModel:
+  """
+  Attributes:
+   - edgeId
+   - name
+   - status
+   - description
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'edgeId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRUCT, 'status', (ComponentStatus, ComponentStatus.thrift_spec), None, ), # 3
+    (4, TType.STRING, 'description', None, None, ), # 4
+  )
+
+  def __init__(self, edgeId=thrift_spec[1][4], name=None, status=None, description=None,):
+    self.edgeId = edgeId
+    self.name = name
+    self.status = status
+    self.description = description
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.edgeId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.status = ComponentStatus()
+          self.status.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('EdgeModel')
+    if self.edgeId is not None:
+      oprot.writeFieldBegin('edgeId', TType.STRING, 1)
+      oprot.writeString(self.edgeId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.status is not None:
+      oprot.writeFieldBegin('status', TType.STRUCT, 3)
+      self.status.write(oprot)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 4)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.edgeId is None:
+      raise TProtocol.TProtocolException(message='Required field edgeId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.edgeId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.status)
+    value = (value * 31) ^ hash(self.description)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class PortModel:
+  """
+  Attributes:
+   - portId
+   - name
+   - status
+   - value
+   - description
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'portId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRUCT, 'status', (ComponentStatus, ComponentStatus.thrift_spec), None, ), # 3
+    (4, TType.STRING, 'value', None, None, ), # 4
+    (5, TType.STRING, 'description', None, None, ), # 5
+  )
+
+  def __init__(self, portId=thrift_spec[1][4], name=None, status=None, value=None, description=None,):
+    self.portId = portId
+    self.name = name
+    self.status = status
+    self.value = value
+    self.description = description
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.portId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.status = ComponentStatus()
+          self.status.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.value = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('PortModel')
+    if self.portId is not None:
+      oprot.writeFieldBegin('portId', TType.STRING, 1)
+      oprot.writeString(self.portId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.status is not None:
+      oprot.writeFieldBegin('status', TType.STRUCT, 3)
+      self.status.write(oprot)
+      oprot.writeFieldEnd()
+    if self.value is not None:
+      oprot.writeFieldBegin('value', TType.STRING, 4)
+      oprot.writeString(self.value)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 5)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.portId is None:
+      raise TProtocol.TProtocolException(message='Required field portId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.portId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.status)
+    value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.description)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class NodeModel:
+  """
+  Attributes:
+   - nodeId
+   - name
+   - applicationId
+   - applicationName
+   - status
+   - description
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'nodeId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
+    (2, TType.STRING, 'name', None, None, ), # 2
+    (3, TType.STRING, 'applicationId', None, None, ), # 3
+    (4, TType.STRING, 'applicationName', None, None, ), # 4
+    (5, TType.STRUCT, 'status', (ComponentStatus, ComponentStatus.thrift_spec), None, ), # 5
+    (6, TType.STRING, 'description', None, None, ), # 6
+  )
+
+  def __init__(self, nodeId=thrift_spec[1][4], name=None, applicationId=None, applicationName=None, status=None, description=None,):
+    self.nodeId = nodeId
+    self.name = name
+    self.applicationId = applicationId
+    self.applicationName = applicationName
+    self.status = status
+    self.description = description
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.nodeId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.name = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.applicationId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.applicationName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.status = ComponentStatus()
+          self.status.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.description = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('NodeModel')
+    if self.nodeId is not None:
+      oprot.writeFieldBegin('nodeId', TType.STRING, 1)
+      oprot.writeString(self.nodeId)
+      oprot.writeFieldEnd()
+    if self.name is not None:
+      oprot.writeFieldBegin('name', TType.STRING, 2)
+      oprot.writeString(self.name)
+      oprot.writeFieldEnd()
+    if self.applicationId is not None:
+      oprot.writeFieldBegin('applicationId', TType.STRING, 3)
+      oprot.writeString(self.applicationId)
+      oprot.writeFieldEnd()
+    if self.applicationName is not None:
+      oprot.writeFieldBegin('applicationName', TType.STRING, 4)
+      oprot.writeString(self.applicationName)
+      oprot.writeFieldEnd()
+    if self.status is not None:
+      oprot.writeFieldBegin('status', TType.STRUCT, 5)
+      self.status.write(oprot)
+      oprot.writeFieldEnd()
+    if self.description is not None:
+      oprot.writeFieldBegin('description', TType.STRING, 6)
+      oprot.writeString(self.description)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.nodeId is None:
+      raise TProtocol.TProtocolException(message='Required field nodeId is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.nodeId)
+    value = (value * 31) ^ hash(self.name)
+    value = (value * 31) ^ hash(self.applicationId)
+    value = (value * 31) ^ hash(self.applicationName)
+    value = (value * 31) ^ hash(self.status)
+    value = (value * 31) ^ hash(self.description)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.pyc
new file mode 100644
index 0000000..518db0a
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workflow/ttypes.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.pyc
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.pyc b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.pyc
new file mode 100644
index 0000000..5b238c6
Binary files /dev/null and b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/constants.py
new file mode 100644
index 0000000..4a6492b
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/constants.py
@@ -0,0 +1,11 @@
+#
+# Autogenerated by Thrift Compiler (0.9.3)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/__init__.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/__init__.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/__init__.py
new file mode 100644
index 0000000..adefd8e
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/__init__.py
@@ -0,0 +1 @@
+__all__ = ['ttypes', 'constants']

http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/75eb96c2/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/constants.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/constants.py b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/constants.py
new file mode 100644
index 0000000..f9a3855
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/create-experiment/apache/airavata/model/workspace/experiment/constants.py
@@ -0,0 +1,14 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+
+DEFAULT_ID = "DO_NOT_SET_AT_CLIENTS"
+DEFAULT_PROJECT_NAME = "DEFAULT"
+SINGLE_APP_NODE_NAME = "SINGLE_APP_NODE"


[30/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/Admin User.ipynb
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/Admin User.ipynb b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/Admin User.ipynb
index f04ad19..748fc23 100644
--- a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/Admin User.ipynb	
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/Admin User.ipynb	
@@ -55,7 +55,7 @@
     "collapsed": false
    },
    "source": [
-    "##Making Sure we are connected to the right Gateway"
+    "## Making Sure we are connected to the right Gateway"
    ]
   },
   {
@@ -120,10 +120,74 @@
    ]
   },
   {
-   "cell_type": "markdown",
+   "cell_type": "code",
+   "execution_count": 5,
    "metadata": {
     "collapsed": false
    },
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Id</th>\n",
+       "      <th>Name</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-1716...</td>\n",
+       "      <td>alamo.uthscsa.edu</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>Jureca_32098185-4396-4c11-afb7-26e991a03476</td>\n",
+       "      <td>Jureca</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975e...</td>\n",
+       "      <td>comet.sdsc.edu</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>gordon.sdsc.edu_f9363997-4614-477f-847e-79d262...</td>\n",
+       "      <td>gordon.sdsc.edu</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...</td>\n",
+       "      <td>ls5.tacc.utexas.edu</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5</th>\n",
+       "      <td>stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b14...</td>\n",
+       "      <td>stampede.tacc.xsede.org</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "                                                  Id                     Name\n",
+       "0  alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-1716...        alamo.uthscsa.edu\n",
+       "1        Jureca_32098185-4396-4c11-afb7-26e991a03476                   Jureca\n",
+       "2  comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975e...           comet.sdsc.edu\n",
+       "3  gordon.sdsc.edu_f9363997-4614-477f-847e-79d262...          gordon.sdsc.edu\n",
+       "4  ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aa...      ls5.tacc.utexas.edu\n",
+       "5  stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b14...  stampede.tacc.xsede.org"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "compute_resources = pd.DataFrame(list(airavata_cli.computer_resources().items()), columns=[\"Id\", \"Name\"])\n",
     "compute_resources"
@@ -140,7 +204,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 6,
    "metadata": {
     "collapsed": false,
     "scrolled": false
@@ -153,7 +217,7 @@
        " ApplicationInterfaceDescription(applicationName='Ultrascan_Unicore', applicationInputs=[InputDataObjectType(userFriendlyDescription='', name='Input', dataStaged=False, value='', applicationArgument='', isRequired=True, standardInput=False, requiredToAddedToCommandLine=False, type=3, inputOrder=1, metaData=''), InputDataObjectType(userFriendlyDescription='', name='mgroupcount', dataStaged=False, value='-mgroupcount 1', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=2, metaData=''), InputDataObjectType(userFriendlyDescription='', name='US3INPUTARG', dataStaged=False, value='', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True, type=0, inputOrder=4, metaData=''), InputDataObjectType(userFriendlyDescription='', name='walltime', dataStaged=False, value='-walltime 60', applicationArgument='', isRequired=False, standardInput=False, requiredToAddedToCommandLine=True,
  type=0, inputOrder=3, metaData='')], applicationInterfaceId='Ultrascan_Unicore_0e7f8522-6d75-41ba-8b09-0021e728679a', applicationDescription='Unicore Service', applicationOutputs=[OutputDataObjectType(dataMovement=True, name='Ultrascan-Unicore-Standard-Error', value='', applicationArgument='', isRequired=False, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=5), OutputDataObjectType(dataMovement=True, name='Ultrascan-Unicore-Standard-Out', value='', applicationArgument='', isRequired=False, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=4), OutputDataObjectType(dataMovement=True, name='US3OUT', value='analysis-results.tar', applicationArgument='', isRequired=True, searchQuery='', location='', requiredToAddedToCommandLine=False, outputStreaming=False, type=0)], applicationModules=['Ultrascan_Unicore_2471953d-5d87-4ffc-b0e6-b06c86c6206d'])]"
       ]
      },
-     "execution_count": 5,
+     "execution_count": 6,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -164,7 +228,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 7,
    "metadata": {
     "collapsed": false,
     "scrolled": true
@@ -177,7 +241,7 @@
        " ApplicationModule(appModuleName='Ultrascan_Unicore', appModuleVersion='', appModuleId='Ultrascan_Unicore_2471953d-5d87-4ffc-b0e6-b06c86c6206d', appModuleDescription='Ultrascan Unicore Application')]"
       ]
      },
-     "execution_count": 6,
+     "execution_count": 7,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -197,7 +261,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": 8,
    "metadata": {
     "collapsed": true
    },
@@ -220,30 +284,19 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": 9,
    "metadata": {
     "collapsed": false
    },
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "ExperimentStatistics(failedExperiments=[ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610916000L, experimentId='US3-AIRA_bfe0ab01-db1f-4ccc-b3a0-e4e3e4224b29', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924612000L, experimentId='US3-AIRA_a51470cc-5f0c-4c45-a116-5fa711345522', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Prod
 uction', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924600000L, experimentId='US3-AIRA_9756a388-3852-4a8c-9bdb-301077047bb0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924593000L, experimentId='US3-AIRA_1f52b8ac-a8b9-43c8-b384-b5bee596155a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='U
 ltrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924588000L, experimentId='US3-AIRA_060ad115-36b1-468d-a794-992987493daf', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924575000L, experimentId='US3-AIRA_2c06f10a-b7be-4424-950c-3cb39aaa2bf0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46',
  gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924566000L, experimentId='US3-AIRA_36f421e3-8903-4736-b9a4-57e6d02decf4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1465924558000L, experimentId='US3-AIRA_a438405d-7269-470c-b2d9-8deda405b48e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3
 be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Francesca_Mattiroli_ae62c051-bc52-d0e4-f939-42b618137445', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_ae79215b-e5e2-45c7-bf9b-c7f196396c02', creationTime=1463341562000L, experimentId='US3-AIRA_f685a836-18bb-4404-a40a-528fb2e83d29', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1462970130000L, experimentId='US3-AIRA_60c739dd-12da-4731-a883-a6fa8c070467', executionId='Ultrascan_0ed937f6-26af-4c54-8064
 -3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Shaoxiong_Tian_f3c15677-e1d3-c894-7539-005f6df5e1b6', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_ca187139-f813-411d-9d0e-9ee5350f1a35', creationTime=1462922274000L, experimentId='US3-AIRA_6b2016fb-a2b5-43fb-a123-a756df9db348', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Shaoxiong_Tian_f3c15677-e1d3-c894-7539-005f6df5e1b6', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_ca187139-f813-411d-9d0e-9ee5350f1a35', creationTime=1462916575000L, experimentId='US3-AIRA_5971eb9a-03a8-4846-84e9-b99c4cd483fd', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be0
 82411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1462496689000L, experimentId='US3-AIRA_79d8b7b6-55e6-4822-8573-2ac67e1a20e2', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Ero2016', name='Clone of Clone of Clone of Clone of U1', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='May_04_Experiments_91d005c6-e13b-40d0-9c61-a6d66dec8e93', creationTime=1462393184000L, experimentId='CloneofCloneofCloneofCloneofU1_c37f11bf-bc0a-4ab8-9d56-64fbea0fa6ee', executionId='Ultrascan_0ed937f6-26a
 f-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=''), ExperimentSummaryModel(userName='Ero2016', name='Clone of U1', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='May_04_Experiments_91d005c6-e13b-40d0-9c61-a6d66dec8e93', creationTime=1462390867000L, experimentId='CloneofU1_954250be-e631-43be-b8e6-a6cbec286242', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=''), ExperimentSummaryModel(userName='Ero2016', name='U1', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='May_04_Experiments_91d005c6-e13b-40d0-9c61-a6d66dec8e93', creationTime=1462388494000L, experimentId='U1_386304ea-6d85-4dd7-8744-3867ca750cbf', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED
 ', description=' '), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1459545884000L, experimentId='US3-AIRA_59ba02e1-29b5-4267-b70b-4b1cc5d9ee04', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Akash_Bhattacharya_65724131-4b32-bec4-5974-aa29b945deaf', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_68d470e1-a74d-4cea-ab2f-5a87eed9ff6b', creationTime=1459544795000L, experimentId='US3-AIRA_0e989684-49f5-462c-b6eb-2db1740b61c7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentSt
 atus='FAILED', description=None), ExperimentSummaryModel(userName='Uma_Muthurajan_912a2d20-e858-a4b4-fdbf-6cdf8ec8e182', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_3bbbc30b-4936-4371-bbaa-7b7901f46b48', creationTime=1459503200000L, experimentId='US3-AIRA_875a91d9-b752-45c7-a6a7-93b2901dfd6c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459451669000L, experimentId='US3-AIRA_84f7b4b5-5dc6-4370-9321-2aa3db57bb31', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), E
 xperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459450891000L, experimentId='US3-AIRA_91ea15ef-e237-4926-a840-b4234bbe5cb4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459450662000L, experimentId='US3-AIRA_0660e466-5d99-4e0e-9aa2-ed3358eebd8d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusU
 pdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459450589000L, experimentId='US3-AIRA_c7c1a4c2-2b3b-4fc9-996b-2da987c28436', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a975ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459447657000L, experimentId='US3-AIRA_9c9348e1-763c-48f7-b69e-b78d58c165fa', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_1234', name='US3-AIRA', statusUpdateTime=None, resourceHostId='comet.sdsc.edu_f24b0bba-5230-498d-97e2-46a9
 75ee035b', projectId='Default_Project_49a64632-b918-4223-b9f7-b4e76a68973d', creationTime=1459447398000L, experimentId='US3-AIRA_a226ec5d-f0c9-4c43-8ddc-7c53749a5f8c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458670372000L, experimentId='US3-Test_f861d80f-f252-40e9-b50e-e96b731af8e7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Suresh_Marru_a5115922-f317-d754-9d72-8654071a5b59', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_649c
 553e-ebb3-460d-8891-0854d8c99135', creationTime=1458658752000L, experimentId='US3-ADEV_6922cf63-034f-4bea-b842-267e98ca4d8a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_84f540d7-3276-8894-a544-fae60062b41c', name='US3-ADEV', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='Default_Project_d8841361-30e0-4f66-8310-ca642c426d76', creationTime=1458580364000L, experimentId='US3-ADEV_5edf1006-0482-4fa2-8d99-89a0dffee4f5', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_84f540d7-3276-8894-a544-fae60062b41c', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_d88
 41361-30e0-4f66-8310-ca642c426d76', creationTime=1458580336000L, experimentId='US3-ADEV_84f329cf-6c17-41ef-bff5-1793fba4e41a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_84f540d7-3276-8894-a544-fae60062b41c', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_d8841361-30e0-4f66-8310-ca642c426d76', creationTime=1458580315000L, experimentId='US3-ADEV_40d796f4-005e-49ec-8b5e-9f459ccb5c5c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Ero2016', name='Clone of Test_Exp1', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='03/20/2016_ab65c93a-6bc4-4673-9388-4fa24e242245
 ', creationTime=1458571200000L, experimentId='CloneofTest_Exp1_89cf18ed-a990-4ce1-b777-5123181464a2', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=''), ExperimentSummaryModel(userName='Ero2016', name='Test_Exp1', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='03/20/2016_ab65c93a-6bc4-4673-9388-4fa24e242245', creationTime=1458571065000L, experimentId='Test_Exp1_4bd1f42f-37d6-4a99-9cf3-7b250aba37f6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=' '), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='stampede.tacc.xsede.org_bf7958ae-f9d4-468b-b146-a201fb89bf12', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458427226000L, experimentId='US3-Test_907959e1-ee18-4efc-
 ae33-c85e60c5efed', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458427119000L, experimentId='US3-Test_8a1b01ca-f06f-4d99-8469-2a8c7cfad31a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458427003000L, experimentId='US3-Test_1c439038-378a-47bc-ab48-0ade6829bb95', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gat
 ewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458411616000L, experimentId='US3-Test_ba9411a0-09db-4a72-afdc-97ee1513a9ab', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_84f540d7-3276-8894-a544-fae60062b41c', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_d8841361-30e0-4f66-8310-ca642c426d76', creationTime=1458333932000L, experimentId='US3-ADEV_bc0e1edf-fbb6-4852-bcdb-dcafd0f51193', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStat
 us='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321712000L, experimentId='US3-Test_3616a162-9b9d-4a15-bff5-8b939a8b5e0f', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321710000L, experimentId='US3-Test_a1ebe37b-e20e-4e52-b023-24e13cbbf4ba', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-T
 est', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321707000L, experimentId='US3-Test_2e2568c4-cba4-478e-aadf-38ae977f37b6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321704000L, experimentId='US3-Test_bcfbfd7b-24e1-40ac-84e2-799b9aae4fce', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-b
 dd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321702000L, experimentId='US3-Test_45510860-3a0c-46ea-bdaf-11041286b69e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321698000L, experimentId='US3-Test_be111960-d779-4bdd-aca2-39e37173a8a8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', 
 creationTime=1458321695000L, experimentId='US3-Test_78b700b7-f4d4-4271-9e6e-b0c7644e4d41', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321693000L, experimentId='US3-Test_12e9a448-45f7-43e5-b5ac-aac3dd3568f4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321690000L, experimentId='US3-Test_b9ceb01a-b051-43a6-9bd7-5dda71e30
 6b9', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321687000L, experimentId='US3-Test_1208cfb3-e35c-4292-baed-4144e0bd8c7e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458321684000L, experimentId='US3-Test_52d19085-2561-4d16-a7d0-fbcae7bde02b', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultras
 can_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458307861000L, experimentId='US3-Test_4c9a9b91-c981-4991-93fd-6e443122ede4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458266120000L, experimentId='US3-ADEV_18729c6f-71b9-4f9e-9cf1-cdbf870ad7cf', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED',
  description=None), ExperimentSummaryModel(userName='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458255972000L, experimentId='US3-Test_f381b939-4457-4085-bc50-6956bc9e0b88', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458253080000L, experimentId='US3-ADEV_fc7a0840-11ac-47e2-acf9-de3545718279', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(
 userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458248599000L, experimentId='US3-ADEV_aff13af2-91cf-4f52-b692-9abf403f6c2a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458247957000L, experimentId='US3-ADEV_fd8c9fbd-1ad8-4ceb-bc0c-d38772da42a4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(use
 rName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458246583000L, experimentId='US3-ADEV_97562db9-6837-4ba5-8ece-0c947402b946', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName='Gary_Gorbet_b7351760-f666-dac4-5554-1c4c9bdf4f83', name='US3-ADEV', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_af7ca9ff-ce79-46d3-af11-93b6b254e73c', creationTime=1458246010000L, experimentId='US3-ADEV_a0a3189d-5343-4f2b-a493-8de237d792ad', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None), ExperimentSummaryModel(userName
 ='smarru', name='US3-Test', statusUpdateTime=None, resourceHostId='alamo.uthscsa.edu_4793b5cc-b991-4e43-b82d-17163b64ef29', projectId='Default_Project_7e2208a8-ba23-405e-b4e8-ec4b595c0320', creationTime=1458228228000L, experimentId='US3-Test_b21c5c21-5374-4b4b-9a65-a380927957f5', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='FAILED', description=None)], completedExperiments=[ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468618483000L, experimentId='US3-AIRA_36f4788f-240b-4119-aaed-18926be8165c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_
 098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468616186000L, experimentId='US3-AIRA_408946e3-6104-48b3-a9dc-27ec03f45cb2', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468615898000L, experimentId='US3-AIRA_270ed9fe-f0f9-4c00-936f-72c994cb2125', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel
 _Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468612459000L, experimentId='US3-AIRA_c23effff-bf70-4d77-968a-5982919eb3a0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468612433000L, experimentId='US3-AIRA_2e65cd86-b4f2-4514-99c2-68c6cec880f4', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(use
 rName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468612337000L, experimentId='US3-AIRA_22795aa0-20fe-43f9-9b1e-846c86b6cdb7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610911000L, experimentId='US3-AIRA_7e7faabc-405d-423f-8ed8-86015eff4cec', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummar
 yModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610906000L, experimentId='US3-AIRA_d6cba9b9-4d47-400a-acda-dbe34497bc33', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610902000L, experimentId='US3-AIRA_35fd35da-9928-4640-8409-b0bb5d7ea9c9', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), Experimen
 tSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610412000L, experimentId='US3-AIRA_689af84c-f35a-4794-8d93-374dbf04495a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610407000L, experimentId='US3-AIRA_70ed5d21-06d4-4b14-9644-a617b29d1a37', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), Ex
 perimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610400000L, experimentId='US3-AIRA_fe34c64d-98ad-4234-bdc9-58912ecc8b96', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610396000L, experimentId='US3-AIRA_f62adf04-433a-4dee-9c0e-238ea9bfbe66', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=No
 ne), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468610205000L, experimentId='US3-AIRA_07bcc317-9d7c-462c-8345-5106f4b1af9c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468609413000L, experimentId='US3-AIRA_1431a2d9-2eec-41f3-9fcd-c6d4308dd3bb', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', descrip
 tion=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468609364000L, experimentId='US3-AIRA_44938538-4755-4fb8-b381-1ac57e238cbf', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604424000L, experimentId='US3-AIRA_689ed852-d66f-4113-b96f-c80144ec19a5', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED
 ', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604255000L, experimentId='US3-AIRA_d321187a-3261-4c88-b0db-e893c122f071', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604226000L, experimentId='US3-AIRA_4f26c65d-10e7-4992-a6cb-c203e858fdef', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStat
 us='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604193000L, experimentId='US3-AIRA_19e20c84-b955-40c6-a2e3-0397757fd645', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468604151000L, experimentId='US3-AIRA_bb1807df-d9bf-42b1-bd9e-6eaf4349eed0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', e
 xperimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468601894000L, experimentId='US3-AIRA_06f41a25-dbfa-4d65-b5cf-9fde477ef8fe', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599454000L, experimentId='US3-AIRA_400516b8-9168-44f9-8b66-9b061b230744', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_P
 roduction', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599449000L, experimentId='US3-AIRA_8c295d53-9882-4d6e-940f-5d22032d8d5d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599444000L, experimentId='US3-AIRA_9c09c0f0-46f6-4373-b1a0-d9d1f98f2598', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId
 ='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599440000L, experimentId='US3-AIRA_14981e50-3231-4082-b75e-d08d5c0a72d6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468599436000L, experimentId='US3-AIRA_9dd660c4-7336-40f2-9332-2d607723e1a8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e4
 6', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598408000L, experimentId='US3-AIRA_95d6556c-85ab-44ae-9e0c-24fd2d3c3b3d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598403000L, experimentId='US3-AIRA_361f0b66-631b-4944-aeaa-cad18e4c0318', executionId='Ultrascan_0ed937f6-26af-4c54-806
 4-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598397000L, experimentId='US3-AIRA_a743552d-a24b-4155-a2b7-ece3ecd07496', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598393000L, experimentId='US3-AIRA_e22ef29a-3e66-47b6-9565-9b3a3a0c93eb', executionId='Ultrascan_0ed937f6-
 26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598390000L, experimentId='US3-AIRA_cc16161a-dc74-4afa-8394-178f8f78a330', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598204000L, experimentId='US3-AIRA_b922331e-bfea-4a0f-8bb1-89ac05f43444', executionId='Ultras
 can_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598199000L, experimentId='US3-AIRA_b2a709e3-cb76-4571-a3ac-7c3c31fb7e38', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598195000L, experimentId='US3-AIRA_f33153a2-a2af-42df-8950-c409bd816ef3', execut
 ionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598191000L, experimentId='US3-AIRA_b5dbf59c-e59b-47cd-9dec-eebfaaeaf481', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468598188000L, experimentId='US3-AIRA_0df1e1aa-c0ed-4618-bd0b-34745c98
 4e21', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468597273000L, experimentId='US3-AIRA_0b5dc791-eb6b-435e-9934-ee5d08f3c645', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468597270000L, experimentId='US3-AIRA_02424cbc-c198-4ddd-af2b-9
 f418e3d485d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468597266000L, experimentId='US3-AIRA_b8cdfe35-a61b-4858-9e08-61b49c0b5c8e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468597261000L, experimentId='US3-AIRA_dfece700-f27f-42be
 -aaf1-7b793f79e2df', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468540422000L, experimentId='US3-AIRA_a05e51be-8652-4dc6-aac9-03de2b417c82', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468540385000L, experimentId='US3-AIRA_e3dfb
 d4b-4f4f-43c1-b3a8-e440aa9f926b', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468540346000L, experimentId='US3-AIRA_bcda009f-0d3d-40d6-af64-d2e7fd1560db', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468528060000L, experimentId='U
 S3-AIRA_dc95f385-9c85-4bb6-8a43-c8d5c669f72d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468527995000L, experimentId='US3-AIRA_1d89633e-6f12-4f99-bbe4-67826d375573', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468527960000L, ex
 perimentId='US3-AIRA_8a15af51-4165-4b05-a133-195bcbd7b2fa', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468527896000L, experimentId='US3-AIRA_e7015598-43a6-491e-a885-33be47e70ee5', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=14685
 27856000L, experimentId='US3-AIRA_57f479ac-8216-4c0c-9456-d1558003b6c7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468527576000L, experimentId='US3-AIRA_49dc66bf-8686-4b00-b19e-ffaf3d41e3e7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTim
 e=1468527571000L, experimentId='US3-AIRA_e19886fd-bb39-410d-8fdb-cc7a260af49f', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468527567000L, experimentId='US3-AIRA_95fcafec-92d1-464f-9626-94aed161c4d9', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', crea
 tionTime=1468527564000L, experimentId='US3-AIRA_448d3a53-57e4-4d07-8168-bbc3a5a310f2', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468525461000L, experimentId='US3-AIRA_5832682b-b83f-48df-bf20-11145b40b81c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76
 ', creationTime=1468525456000L, experimentId='US3-AIRA_67681ac9-a675-44a2-8d83-5dfb86ccf43e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468525451000L, experimentId='US3-AIRA_3ca2543c-c4f8-4623-a603-d4dd138ea598', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366d
 b32bd76', creationTime=1468525448000L, experimentId='US3-AIRA_f5a2c105-d8f9-4835-aefe-bca5b8548af9', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468522640000L, experimentId='US3-AIRA_79e9255d-d448-4a2a-9c90-d89ce11af845', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae7
 6-8366db32bd76', creationTime=1468522630000L, experimentId='US3-AIRA_7ee94d4c-c64a-4e1c-a560-0221732d5d6c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468522618000L, experimentId='US3-AIRA_674fdf44-b88e-46a8-bc82-02e453978ff8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4
 532-ae76-8366db32bd76', creationTime=1468522603000L, experimentId='US3-AIRA_150d91d6-9dbd-429f-825e-3ec98fd8df73', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468522282000L, experimentId='US3-AIRA_ebdd4299-8adb-4792-8843-8e037ab97ef8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e
 1dede8-0925-47e6-b61c-966051287d37', creationTime=1468521671000L, experimentId='US3-AIRA_02308b49-bc1a-4956-8d69-65edc8f33d14', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468521477000L, experimentId='US3-AIRA_191cb1dd-cef4-4767-8093-525fc2a37667', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Defau
 lt_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468520547000L, experimentId='US3-AIRA_bc7ac81d-adce-4912-ba4f-e4bd84ae830c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468520459000L, experimentId='US3-AIRA_ae4e1a1f-c7c3-4918-b927-94c0b9f60f92', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', pro
 jectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468520359000L, experimentId='US3-AIRA_fd2c3457-1c1f-4545-a5f9-90454264f9da', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519283000L, experimentId='US3-AIRA_ec100087-9407-4960-9a0b-5cd77139fbe6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f
 8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519147000L, experimentId='US3-AIRA_cb6512e5-b4fd-43a8-9b5b-3afa37eba212', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519115000L, experimentId='US3-AIRA_a7f62d62-82b6-49bb-9456-b3ff5899f91c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f
 74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519041000L, experimentId='US3-AIRA_66f121ee-5a48-45c1-a962-105d5307683e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468519014000L, experimentId='US3-AIRA_a00ddc5e-49a6-459c-8a3d-18a1a061fded', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd
 67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468512271000L, experimentId='US3-AIRA_c3a8cd3f-a120-4c9c-9f21-91aa13665416', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468512244000L, experimentId='US3-AIRA_18295d19-5e3c-47c1-aeeb-5b1a31b903aa', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.u
 texas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468512001000L, experimentId='US3-AIRA_daf97da2-8772-4567-96be-3bac3793bbae', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511997000L, experimentId='US3-AIRA_b7e642b0-419e-46a5-a231-f995747ba8d1', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostI
 d='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511769000L, experimentId='US3-AIRA_06afba20-0c36-4344-919c-8fe43de5e2a6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511728000L, experimentId='US3-AIRA_9b396838-7893-4844-a569-f247f67fae65', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, 
 resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511692000L, experimentId='US3-AIRA_1b1806f9-2513-440d-9b36-c1fe00cd965a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511657000L, experimentId='US3-AIRA_fbb618da-23f5-4c86-9898-866feeea621c', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpda
 teTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468511625000L, experimentId='US3-AIRA_cb618df0-f0ce-42f6-862c-636b9979003e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468511287000L, experimentId='US3-AIRA_9e76ea93-db46-4ece-9e43-22490541f7de', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', sta
 tusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468511282000L, experimentId='US3-AIRA_e3959aad-ce01-4ce2-9c35-afae4edc12f8', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468511278000L, experimentId='US3-AIRA_ac88b8af-5359-4d2c-8e74-9c0a122c351a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIR
 A', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468511274000L, experimentId='US3-AIRA_3cfbad94-b7d9-4a9d-b819-1809fabd9c73', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510422000L, experimentId='US3-AIRA_1feea8ed-45f0-40f5-9a67-5e67a840bbb0', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', 
 name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510416000L, experimentId='US3-AIRA_e3bc8bce-e854-4b0a-9ca2-b5dc513736a6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510411000L, experimentId='US3-AIRA_7b76426c-f994-4bed-8e04-eb048b8e3266', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-11
 47783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510407000L, experimentId='US3-AIRA_c7061d63-4e37-4fd4-b132-f2294a6417aa', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468510402000L, experimentId='US3-AIRA_63d73ec8-59fc-426e-80f0-b4eb56018bd3', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4
 -5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509534000L, experimentId='US3-AIRA_da2ceb24-b48b-4e65-9798-346c9662e1c6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509528000L, experimentId='US3-AIRA_b655a9b4-21a5-4737-ad9f-61300fbe63fb', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_
 550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509522000L, experimentId='US3-AIRA_e512726d-838a-4f24-952f-a1c7df75c031', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509519000L, experimentId='US3-AIRA_97ca0744-2889-4811-aa74-0cc498827056', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Dan
 iel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509514000L, experimentId='US3-AIRA_92fc260f-802f-4bde-b1a1-231a72949a06', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509298000L, experimentId='US3-AIRA_20566854-0426-47c0-94a2-2900b6b32512', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(
 userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509292000L, experimentId='US3-AIRA_acfefd54-25f8-409b-aef0-1b6439cc38d6', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509287000L, experimentId='US3-AIRA_b6695bd8-c812-42a4-99cf-abbaace99b9e', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), Experiment
 SummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509283000L, experimentId='US3-AIRA_607411fc-e47a-44d5-a6e1-d9124a2813cb', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Daniel_Krzizike_550162c5-88f4-5624-cd19-1147783ec5ed', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_4e1dede8-0925-47e6-b61c-966051287d37', creationTime=1468509279000L, experimentId='US3-AIRA_269487a0-d9ab-47df-b702-3033e4fd55ed', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None
 ), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507580000L, experimentId='US3-AIRA_9c680c60-a955-46cc-8765-e7153402800a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507569000L, experimentId='US3-AIRA_f0f564e4-d7ec-44b8-90a1-536edf0fc2a7', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', descripti
 on=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507564000L, experimentId='US3-AIRA_b0c2ca2e-6a81-4547-b78e-e921b0edd789', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507559000L, experimentId='US3-AIRA_f17f6449-634b-415b-8143-2896ba66b29d', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', de
 scription=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507142000L, experimentId='US3-AIRA_8d5e9a54-c9fe-4081-b26f-6798a930faed', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507136000L, experimentId='US3-AIRA_7a3860e3-ca17-413c-aa3c-c10ee8c7819a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLET
 ED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507131000L, experimentId='US3-AIRA_99fcff92-3a19-41b0-a741-2497bc81f893', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468507126000L, experimentId='US3-AIRA_9448e030-8cb3-4dbc-99ec-b5ff257d39e3', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='
 COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468506776000L, experimentId='US3-AIRA_e2a99554-5673-4226-a124-0cad1fa5401a', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentStatus='COMPLETED', description=None), ExperimentSummaryModel(userName='Paul_Willard_098ba7b6-274c-9fb4-4915-f7ecc0c7cc1f', name='US3-AIRA', statusUpdateTime=None, resourceHostId='ls5.tacc.utexas.edu_6dd67b08-30e5-4f74-bdd6-aad1f8310ecf', projectId='Default_Project_b884d629-32bf-4532-ae76-8366db32bd76', creationTime=1468506769000L, experimentId='US3-AIRA_1e3d3cb7-5223-4ef2-9275-8b06c518c443', executionId='Ultrascan_0ed937f6-26af-4c54-8064-3be082411e46', gatewayId='Ultrascan_Production', experimentS
 tatus='COMPLETED', d

<TRUNCATED>

[28/32] airavata-sandbox git commit: Added_Apache

Posted by sm...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata-sandbox/blob/2352c0ff/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata.py
----------------------------------------------------------------------
diff --git a/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata.py b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata.py
new file mode 100644
index 0000000..b7813c6
--- /dev/null
+++ b/Interacting_with_Airavata_using_ipython_Notebook/Admin-User/apache/airavata/api/Airavata.py
@@ -0,0 +1,38230 @@
+#
+# Autogenerated by Thrift Compiler (0.9.2)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from ttypes import *
+from thrift.Thrift import TProcessor
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol, TProtocol
+try:
+  from thrift.protocol import fastbinary
+except:
+  fastbinary = None
+
+
+class Iface:
+  def getAPIVersion(self, authzToken):
+    """
+    Fetch Apache Airavata API version
+
+    Parameters:
+     - authzToken
+    """
+    pass
+
+  def addGateway(self, authzToken, gateway):
+    """
+    Parameters:
+     - authzToken
+     - gateway
+    """
+    pass
+
+  def updateGateway(self, authzToken, gatewayId, updatedGateway):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+     - updatedGateway
+    """
+    pass
+
+  def getGateway(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def deleteGateway(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getAllGateways(self, authzToken):
+    """
+    Parameters:
+     - authzToken
+    """
+    pass
+
+  def isGatewayExist(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName):
+    """
+    Generate and Register SSH Key Pair with Airavata Credential Store.
+
+    @param gatewayId
+       The identifier for the requested gateway.
+
+    @param userName
+       The User for which the credential should be registered. For community accounts, this user is the name of the
+       community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+    @return airavataCredStoreToken
+      An SSH Key pair is generated and stored in the credential store and associated with users or community account
+      belonging to a gateway.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+    """
+    pass
+
+  def getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - airavataCredStoreToken
+     - gatewayId
+    """
+    pass
+
+  def getAllUserSSHPubKeys(self, authzToken, userName):
+    """
+    Parameters:
+     - authzToken
+     - userName
+    """
+    pass
+
+  def createProject(self, authzToken, gatewayId, project):
+    """
+    Creates a Project with basic metadata.
+       A Project is a container of experiments.
+
+    @param gatewayId
+       The identifier for the requested gateway.
+
+    @param Project
+       The Project Object described in the workspace_model
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - project
+    """
+    pass
+
+  def updateProject(self, authzToken, projectId, updatedProject):
+    """
+    Update a Project
+
+
+    Parameters:
+     - authzToken
+     - projectId
+     - updatedProject
+    """
+    pass
+
+  def getProject(self, authzToken, projectId):
+    """
+    Get a Project by ID
+
+
+    Parameters:
+     - authzToken
+     - projectId
+    """
+    pass
+
+  def deleteProject(self, authzToken, projectId):
+    """
+    Parameters:
+     - authzToken
+     - projectId
+    """
+    pass
+
+  def getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+    """
+      * Get all Project by user with pagination. Results will be ordered based
+      * on creation time DESC
+      *
+      * @param gatewayId
+      *    The identifier for the requested gateway.
+      * @param userName
+      *    The identifier of the user
+      * @param limit
+      *    The amount results to be fetched
+      * @param offset
+      *    The starting point of the results to be fetched
+    *
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - limit
+     - offset
+    """
+    pass
+
+  def searchProjectsByProjectName(self, authzToken, gatewayId, userName, projectName, limit, offset):
+    """
+    Get all Project for user by project name with pagination.Results will be ordered based
+    on creation time DESC
+
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - projectName
+     - limit
+     - offset
+    """
+    pass
+
+  def searchProjectsByProjectDesc(self, authzToken, gatewayId, userName, description, limit, offset):
+    """
+    Search and get all Projects for user by project description with pagination. Results
+    will be ordered based on creation time DESC
+
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - description
+     - limit
+     - offset
+    """
+    pass
+
+  def searchExperimentsByName(self, authzToken, gatewayId, userName, expName, limit, offset):
+    """
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - expName
+     - limit
+     - offset
+    """
+    pass
+
+  def searchExperimentsByDesc(self, authzToken, gatewayId, userName, description, limit, offset):
+    """
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param description
+          Experiment description to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - description
+     - limit
+     - offset
+    """
+    pass
+
+  def searchExperimentsByApplication(self, authzToken, gatewayId, userName, applicationId, limit, offset):
+    """
+    Search Experiments by application id with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param applicationId
+          Application id to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - applicationId
+     - limit
+     - offset
+    """
+    pass
+
+  def searchExperimentsByStatus(self, authzToken, gatewayId, userName, experimentState, limit, offset):
+    """
+    Search Experiments by experiment status with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param experimentState
+          Experiement state to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - experimentState
+     - limit
+     - offset
+    """
+    pass
+
+  def searchExperimentsByCreationTime(self, authzToken, gatewayId, userName, fromTime, toTime, limit, offset):
+    """
+    Search Experiments by experiment creation time with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param fromTime
+          Start time of the experiments creation time
+    @param toTime
+          End time of the  experiement creation time
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - fromTime
+     - toTime
+     - limit
+     - offset
+    """
+    pass
+
+  def searchExperiments(self, authzToken, gatewayId, userName, filters, limit, offset):
+    """
+    Search Experiments by using multiple filter criteria with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param filters
+          map of multiple filter criteria.
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - filters
+     - limit
+     - offset
+    """
+    pass
+
+  def getExperimentStatistics(self, authzToken, gatewayId, fromTime, toTime):
+    """
+    Get Experiment Statisitics for the given gateway for a specific time period
+    @param gatewayId
+          Identifier of the requested gateway
+    @param fromTime
+          Starting date time
+    @param toTime
+          Ending data time
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - fromTime
+     - toTime
+    """
+    pass
+
+  def getExperimentsInProject(self, authzToken, projectId, limit, offset):
+    """
+    Get Experiments within project with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param projectId
+          Identifier of the project
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - projectId
+     - limit
+     - offset
+    """
+    pass
+
+  def getUserExperiments(self, authzToken, gatewayId, userName, limit, offset):
+    """
+    Get experiments by user with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requesting gateway
+    @param userName
+          Username of the requested user
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - limit
+     - offset
+    """
+    pass
+
+  def createExperiment(self, authzToken, gatewayId, experiment):
+    """
+    Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+      but inferred from the authentication header. This experiment is just a persistent place holder. The client
+      has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+      registering the experiment in a persistent store.
+
+    @param basicExperimentMetadata
+       The create experiment will require the basic experiment metadata like the name and description, intended user,
+         the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+         the ExperimentMetadata is a required field.
+
+    @return
+      The server-side generated.airavata.registry.core.experiment.globally unique identifier.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - experiment
+    """
+    pass
+
+  def deleteExperiment(self, authzToken, experimentId):
+    """
+    If the experiment is not already launched experiment can be deleted.
+
+    @param authzToken
+    @param experiementId
+
+    @return boolean identifier for the success or failure of the deletion operation
+
+
+    Parameters:
+     - authzToken
+     - experimentId
+    """
+    pass
+
+  def getExperiment(self, authzToken, airavataExperimentId):
+    """
+    Fetch previously created experiment metadata.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @return experimentMetada
+      This method will return the previously stored experiment metadata.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+         
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def updateExperiment(self, authzToken, airavataExperimentId, experiment):
+    """
+    Configure a previously created experiment with required inputs, scheduling and other quality of service
+      parameters. This method only updates the experiment object within the registry. The experiment has to be launched
+      to make it actionable by the server.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @param experimentConfigurationData
+       The configuration information of the experiment with application input parameters, computational resource scheduling
+         information, special input output handling and additional quality of service parameters.
+
+    @return
+      This method call does not have a return value.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+         
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - experiment
+    """
+    pass
+
+  def updateExperimentConfiguration(self, authzToken, airavataExperimentId, userConfiguration):
+    """
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - userConfiguration
+    """
+    pass
+
+  def updateResourceScheduleing(self, authzToken, airavataExperimentId, resourceScheduling):
+    """
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - resourceScheduling
+    """
+    pass
+
+  def validateExperiment(self, authzToken, airavataExperimentId):
+    """
+     *
+     * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
+     *
+     * @param experimentID
+     * @return sucess/failure
+     *
+    *
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def launchExperiment(self, authzToken, airavataExperimentId, gatewayId):
+    """
+    Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
+      notifications and intermediate and output data will be subsequently available for this experiment.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @return
+      This method call does not have a return value.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+         
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - gatewayId
+    """
+    pass
+
+  def getExperimentStatus(self, authzToken, airavataExperimentId):
+    """
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def getExperimentOutputs(self, authzToken, airavataExperimentId):
+    """
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def getIntermediateOutputs(self, authzToken, airavataExperimentId):
+    """
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def getJobStatuses(self, authzToken, airavataExperimentId):
+    """
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def getJobDetails(self, authzToken, airavataExperimentId):
+    """
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+    """
+    pass
+
+  def cloneExperiment(self, authzToken, existingExperimentID, newExperimentName):
+    """
+    Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+      The client has to subsequently update this configuration if needed and launch the cloned experiment.
+
+    @param newExperimentName
+       experiment name that should be used in the cloned experiment
+
+    @param updatedExperiment
+       Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+         the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+         should be shared public by default.
+
+    @return
+      The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+         
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - existingExperimentID
+     - newExperimentName
+    """
+    pass
+
+  def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId):
+    """
+    Terminate a running experiment.
+
+    @param airavataExperimentId
+       The identifier for the requested experiment. This is returned during the create experiment step.
+
+    @return
+      This method call does not have a return value.
+
+    @throws org.apache.airavata.model.error.InvalidRequestException
+       For any incorrect forming of the request itself.
+
+    @throws org.apache.airavata.model.error.ExperimentNotFoundException
+       If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+
+    @throws org.apache.airavata.model.error.AiravataClientException
+       The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+         
+         UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+            step, then Airavata Registry will not have a provenance area setup. The client has to follow
+            gateway registration steps and retry this request.
+
+         AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+            For now this is a place holder.
+
+         INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+            is implemented, the authorization will be more substantial.
+
+    @throws org.apache.airavata.model.error.AiravataSystemException
+       This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+          rather an Airavata Administrator will be notified to take corrective action.
+
+
+    Parameters:
+     - authzToken
+     - airavataExperimentId
+     - gatewayId
+    """
+    pass
+
+  def registerApplicationModule(self, authzToken, gatewayId, applicationModule):
+    """
+    Register a Application Module.
+
+    @param applicationModule
+       Application Module Object created from the datamodel.
+
+    @return appModuleId
+      Returns a server-side generated airavata appModule globally unique identifier.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - applicationModule
+    """
+    pass
+
+  def getApplicationModule(self, authzToken, appModuleId):
+    """
+    Fetch a Application Module.
+
+    @param appModuleId
+      The identifier for the requested application module
+
+    @return applicationModule
+      Returns a application Module Object.
+
+
+    Parameters:
+     - authzToken
+     - appModuleId
+    """
+    pass
+
+  def updateApplicationModule(self, authzToken, appModuleId, applicationModule):
+    """
+    Update a Application Module.
+
+    @param appModuleId
+      The identifier for the requested application module to be updated.
+
+    @param applicationModule
+       Application Module Object created from the datamodel.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - appModuleId
+     - applicationModule
+    """
+    pass
+
+  def getAllAppModules(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def deleteApplicationModule(self, authzToken, appModuleId):
+    """
+    Delete a Application Module.
+
+    @param appModuleId
+      The identifier for the requested application module to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - appModuleId
+    """
+    pass
+
+  def registerApplicationDeployment(self, authzToken, gatewayId, applicationDeployment):
+    """
+    Register a Application Deployment.
+
+    @param applicationModule
+       Application Module Object created from the datamodel.
+
+    @return appDeploymentId
+      Returns a server-side generated airavata appDeployment globally unique identifier.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - applicationDeployment
+    """
+    pass
+
+  def getApplicationDeployment(self, authzToken, appDeploymentId):
+    """
+    Fetch a Application Deployment.
+
+    @param appDeploymentId
+      The identifier for the requested application module
+
+    @return applicationDeployment
+      Returns a application Deployment Object.
+
+
+    Parameters:
+     - authzToken
+     - appDeploymentId
+    """
+    pass
+
+  def updateApplicationDeployment(self, authzToken, appDeploymentId, applicationDeployment):
+    """
+    Update a Application Deployment.
+
+    @param appDeploymentId
+      The identifier for the requested application deployment to be updated.
+
+    @param appDeployment
+       Application Deployment Object created from the datamodel.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - appDeploymentId
+     - applicationDeployment
+    """
+    pass
+
+  def deleteApplicationDeployment(self, authzToken, appDeploymentId):
+    """
+    Delete a Application deployment.
+
+    @param appDeploymentId
+      The identifier for the requested application deployment to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - appDeploymentId
+    """
+    pass
+
+  def getAllApplicationDeployments(self, authzToken, gatewayId):
+    """
+    Fetch all Application Deployment Descriptions.
+
+    @return list<applicationDeployment.
+      Returns the list of all application Deployment Objects.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getAppModuleDeployedResources(self, authzToken, appModuleId):
+    """
+    Fetch a list of Deployed Compute Hosts.
+
+    @param appModuleId
+      The identifier for the requested application module
+
+    @return list<string>
+      Returns a list of Deployed Resources.
+
+
+    Parameters:
+     - authzToken
+     - appModuleId
+    """
+    pass
+
+  def registerApplicationInterface(self, authzToken, gatewayId, applicationInterface):
+    """
+    Register a Application Interface.
+
+    @param applicationModule
+       Application Module Object created from the datamodel.
+
+    @return appInterfaceId
+      Returns a server-side generated airavata application interface globally unique identifier.
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - applicationInterface
+    """
+    pass
+
+  def getApplicationInterface(self, authzToken, appInterfaceId):
+    """
+    Fetch a Application Interface.
+
+    @param appInterfaceId
+      The identifier for the requested application module
+
+    @return applicationInterface
+      Returns a application Interface Object.
+
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def updateApplicationInterface(self, authzToken, appInterfaceId, applicationInterface):
+    """
+    Update a Application Interface.
+
+    @param appInterfaceId
+      The identifier for the requested application deployment to be updated.
+
+    @param appInterface
+       Application Interface Object created from the datamodel.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+     - applicationInterface
+    """
+    pass
+
+  def deleteApplicationInterface(self, authzToken, appInterfaceId):
+    """
+    Delete a Application Interface.
+
+    @param appInterfaceId
+      The identifier for the requested application interface to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def getAllApplicationInterfaceNames(self, authzToken, gatewayId):
+    """
+    Fetch name and id of  Application Interface documents.
+
+
+    @return map<applicationId, applicationInterfaceNames>
+      Returns a list of application interfaces with corresponsing id's
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getAllApplicationInterfaces(self, authzToken, gatewayId):
+    """
+    Fetch all Application Interface documents.
+
+
+    @return map<applicationId, applicationInterfaceNames>
+      Returns a list of application interfaces documents
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getApplicationInputs(self, authzToken, appInterfaceId):
+    """
+    Fetch the list of Application Inputs.
+
+    @param appInterfaceId
+      The identifier for the requested application interface
+
+    @return list<application_interface_model.InputDataObjectType>
+      Returns a list of application inputs.
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def getApplicationOutputs(self, authzToken, appInterfaceId):
+    """
+    Fetch the list of Application Outputs.
+
+    @param appInterfaceId
+      The identifier for the requested application interface
+
+    @return list<application_interface_model.OutputDataObjectType>
+      Returns a list of application outputs.
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def getAvailableAppInterfaceComputeResources(self, authzToken, appInterfaceId):
+    """
+    Fetch a list of all deployed Compute Hosts for a given application interfaces.
+
+    @param appInterfaceId
+      The identifier for the requested application interface
+
+    @return map<computeResourceId, computeResourceName>
+      A map of registered compute resource id's and their corresponding hostnames.
+       Deployments of each modules listed within the interfaces will be listed.
+
+
+    Parameters:
+     - authzToken
+     - appInterfaceId
+    """
+    pass
+
+  def registerComputeResource(self, authzToken, computeResourceDescription):
+    """
+    Register a Compute Resource.
+
+    @param computeResourceDescription
+       Compute Resource Object created from the datamodel.
+
+    @return computeResourceId
+      Returns a server-side generated airavata compute resource globally unique identifier.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceDescription
+    """
+    pass
+
+  def getComputeResource(self, authzToken, computeResourceId):
+    """
+    Fetch the given Compute Resource.
+
+    @param computeResourceId
+      The identifier for the requested compute resource
+
+    @return computeResourceDescription
+       Compute Resource Object created from the datamodel..
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+    """
+    pass
+
+  def getAllComputeResourceNames(self, authzToken):
+    """
+    Fetch all registered Compute Resources.
+
+    @return A map of registered compute resource id's and thier corresponding hostnames.
+       Compute Resource Object created from the datamodel..
+
+
+    Parameters:
+     - authzToken
+    """
+    pass
+
+  def updateComputeResource(self, authzToken, computeResourceId, computeResourceDescription):
+    """
+    Update a Compute Resource.
+
+    @param computeResourceId
+      The identifier for the requested compute resource to be updated.
+
+    @param computeResourceDescription
+       Compute Resource Object created from the datamodel.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - computeResourceDescription
+    """
+    pass
+
+  def deleteComputeResource(self, authzToken, computeResourceId):
+    """
+    Delete a Compute Resource.
+
+    @param computeResourceId
+      The identifier for the requested compute resource to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+    """
+    pass
+
+  def addLocalSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, localSubmission):
+    """
+    Add a Local Job Submission details to a compute resource
+     App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param localSubmission
+      The LOCALSubmission object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - localSubmission
+    """
+    pass
+
+  def updateLocalSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, localSubmission):
+    """
+    Update the given Local Job Submission details
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be updated.
+
+    @param localSubmission
+      The LOCALSubmission object to be updated.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - localSubmission
+    """
+    pass
+
+  def getLocalJobSubmission(self, authzToken, jobSubmissionId):
+    """
+    This method returns localJobSubmission object
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be retrieved.
+     @return LOCALSubmission instance
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionId
+    """
+    pass
+
+  def addSSHJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+    """
+    Add a SSH Job Submission details to a compute resource
+     App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param sshJobSubmission
+      The SSHJobSubmission object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - sshJobSubmission
+    """
+    pass
+
+  def addSSHForkJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, sshJobSubmission):
+    """
+    Add a SSH_FORK Job Submission details to a compute resource
+     App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param sshJobSubmission
+      The SSHJobSubmission object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - sshJobSubmission
+    """
+    pass
+
+  def getSSHJobSubmission(self, authzToken, jobSubmissionId):
+    """
+    This method returns SSHJobSubmission object
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be retrieved.
+     @return SSHJobSubmission instance
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionId
+    """
+    pass
+
+  def addUNICOREJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, unicoreJobSubmission):
+    """
+    Add a UNICORE Job Submission details to a compute resource
+     App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param unicoreJobSubmission
+      The UnicoreJobSubmission object to be added to the resource.
+
+    @return status
+     Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - unicoreJobSubmission
+    """
+    pass
+
+  def getUnicoreJobSubmission(self, authzToken, jobSubmissionId):
+    """
+      * This method returns UnicoreJobSubmission object
+      * @param jobSubmissionInterfaceId
+      *   The identifier of the JobSubmission Interface to be retrieved.
+      *  @return UnicoreJobSubmission instance
+    *
+
+    Parameters:
+     - authzToken
+     - jobSubmissionId
+    """
+    pass
+
+  def addCloudJobSubmissionDetails(self, authzToken, computeResourceId, priorityOrder, cloudSubmission):
+    """
+       * Add a Cloud Job Submission details to a compute resource
+       *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
+       *
+       * @param computeResourceId
+       *   The identifier of the compute resource to which JobSubmission protocol to be added
+       *
+       * @param priorityOrder
+       *   Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+       *
+       * @param sshJobSubmission
+       *   The SSHJobSubmission object to be added to the resource.
+       *
+       * @return status
+       *   Returns the unique job submission id.
+    *
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - cloudSubmission
+    """
+    pass
+
+  def getCloudJobSubmission(self, authzToken, jobSubmissionId):
+    """
+       * This method returns cloudJobSubmission object
+       * @param jobSubmissionInterfaceI
+           *   The identifier of the JobSubmission Interface to be retrieved.
+       *  @return CloudJobSubmission instance
+    *
+
+    Parameters:
+     - authzToken
+     - jobSubmissionId
+    """
+    pass
+
+  def updateSSHJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
+    """
+    Update the given SSH Job Submission details
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be updated.
+
+    @param sshJobSubmission
+      The SSHJobSubmission object to be updated.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - sshJobSubmission
+    """
+    pass
+
+  def updateCloudJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, sshJobSubmission):
+    """
+    Update the cloud Job Submission details
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be updated.
+
+    @param cloudJobSubmission
+      The CloudJobSubmission object to be updated.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - sshJobSubmission
+    """
+    pass
+
+  def updateUnicoreJobSubmissionDetails(self, authzToken, jobSubmissionInterfaceId, unicoreJobSubmission):
+    """
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - unicoreJobSubmission
+    """
+    pass
+
+  def addLocalDataMovementDetails(self, authzToken, computeResourceId, priorityOrder, localDataMovement):
+    """
+    Add a Local data movement details to a compute resource
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param localDataMovement
+      The LOCALDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - localDataMovement
+    """
+    pass
+
+  def updateLocalDataMovementDetails(self, authzToken, dataMovementInterfaceId, localDataMovement):
+    """
+    Update the given Local data movement details
+
+    @param dataMovementInterfaceId
+      The identifier of the data movement Interface to be updated.
+
+    @param localDataMovement
+      The LOCALDataMovement object to be updated.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - localDataMovement
+    """
+    pass
+
+  def getLocalDataMovement(self, authzToken, dataMovementId):
+    """
+            * This method returns local datamovement object
+            * @param dataMovementId
+            *   The identifier of the datamovement Interface to be retrieved.
+            *  @return LOCALDataMovement instance
+    *
+
+    Parameters:
+     - authzToken
+     - dataMovementId
+    """
+    pass
+
+  def addSCPDataMovementDetails(self, authzToken, computeResourceId, priorityOrder, scpDataMovement):
+    """
+    Add a SCP data movement details to a compute resource
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param scpDataMovement
+      The SCPDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - scpDataMovement
+    """
+    pass
+
+  def updateSCPDataMovementDetails(self, authzToken, dataMovementInterfaceId, scpDataMovement):
+    """
+    Update the given scp data movement details
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param dataMovementInterfaceId
+      The identifier of the data movement Interface to be updated.
+
+    @param scpDataMovement
+      The SCPDataMovement object to be updated.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - scpDataMovement
+    """
+    pass
+
+  def getSCPDataMovement(self, authzToken, dataMovementId):
+    """
+      * This method returns SCP datamovement object
+      * @param dataMovementId
+         *   The identifier of the datamovement Interface to be retrieved.
+         *  @return SCPDataMovement instance
+    *
+
+    Parameters:
+     - authzToken
+     - dataMovementId
+    """
+    pass
+
+  def addUnicoreDataMovementDetails(self, authzToken, computeResourceId, priorityOrder, unicoreDataMovement):
+    """
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - unicoreDataMovement
+    """
+    pass
+
+  def updateUnicoreDataMovementDetails(self, authzToken, dataMovementInterfaceId, unicoreDataMovement):
+    """
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - unicoreDataMovement
+    """
+    pass
+
+  def getUnicoreDataMovement(self, authzToken, dataMovementId):
+    """
+    Parameters:
+     - authzToken
+     - dataMovementId
+    """
+    pass
+
+  def addGridFTPDataMovementDetails(self, authzToken, computeResourceId, priorityOrder, gridFTPDataMovement):
+    """
+    Add a GridFTP data movement details to a compute resource
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param computeResourceId
+      The identifier of the compute resource to which JobSubmission protocol to be added
+
+    @param priorityOrder
+      Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero.
+
+    @param gridFTPDataMovement
+      The GridFTPDataMovement object to be added to the resource.
+
+    @return status
+      Returns the unique job submission id.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - priorityOrder
+     - gridFTPDataMovement
+    """
+    pass
+
+  def updateGridFTPDataMovementDetails(self, authzToken, dataMovementInterfaceId, gridFTPDataMovement):
+    """
+    Update the given GridFTP data movement details to a compute resource
+     App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
+
+    @param dataMovementInterfaceId
+      The identifier of the data movement Interface to be updated.
+
+    @param gridFTPDataMovement
+      The GridFTPDataMovement object to be updated.
+
+    @return status
+      Returns a success/failure of the updation.
+
+
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - gridFTPDataMovement
+    """
+    pass
+
+  def getGridFTPDataMovement(self, authzToken, dataMovementId):
+    """
+      * This method returns GridFTP datamovement object
+      * @param dataMovementId
+         *   The identifier of the datamovement Interface to be retrieved.
+      *  @return GridFTPDataMovement instance
+    *
+
+    Parameters:
+     - authzToken
+     - dataMovementId
+    """
+    pass
+
+  def changeJobSubmissionPriority(self, authzToken, jobSubmissionInterfaceId, newPriorityOrder):
+    """
+    Change the priority of a given job submisison interface
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be changed
+
+    @param priorityOrder
+      The new priority of the job manager interface.
+
+    @return status
+      Returns a success/failure of the change.
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionInterfaceId
+     - newPriorityOrder
+    """
+    pass
+
+  def changeDataMovementPriority(self, authzToken, dataMovementInterfaceId, newPriorityOrder):
+    """
+    Change the priority of a given data movement interface
+
+    @param dataMovementInterfaceId
+      The identifier of the DataMovement Interface to be changed
+
+    @param priorityOrder
+      The new priority of the data movement interface.
+
+    @return status
+      Returns a success/failure of the change.
+
+
+    Parameters:
+     - authzToken
+     - dataMovementInterfaceId
+     - newPriorityOrder
+    """
+    pass
+
+  def changeJobSubmissionPriorities(self, authzToken, jobSubmissionPriorityMap):
+    """
+    Change the priorities of a given set of job submission interfaces
+
+    @param jobSubmissionPriorityMap
+      A Map of identifiers of the JobSubmission Interfaces and thier associated priorities to be set.
+
+    @return status
+      Returns a success/failure of the changes.
+
+
+    Parameters:
+     - authzToken
+     - jobSubmissionPriorityMap
+    """
+    pass
+
+  def changeDataMovementPriorities(self, authzToken, dataMovementPriorityMap):
+    """
+    Change the priorities of a given set of data movement interfaces
+
+    @param dataMovementPriorityMap
+      A Map of identifiers of the DataMovement Interfaces and thier associated priorities to be set.
+
+    @return status
+      Returns a success/failure of the changes.
+
+
+    Parameters:
+     - authzToken
+     - dataMovementPriorityMap
+    """
+    pass
+
+  def deleteJobSubmissionInterface(self, authzToken, computeResourceId, jobSubmissionInterfaceId):
+    """
+    Delete a given job submisison interface
+
+    @param jobSubmissionInterfaceId
+      The identifier of the JobSubmission Interface to be changed
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - jobSubmissionInterfaceId
+    """
+    pass
+
+  def deleteDataMovementInterface(self, authzToken, computeResourceId, dataMovementInterfaceId):
+    """
+    Delete a given data movement interface
+
+    @param dataMovementInterfaceId
+      The identifier of the DataMovement Interface to be changed
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - dataMovementInterfaceId
+    """
+    pass
+
+  def registerResourceJobManager(self, authzToken, resourceJobManager):
+    """
+    Parameters:
+     - authzToken
+     - resourceJobManager
+    """
+    pass
+
+  def updateResourceJobManager(self, authzToken, resourceJobManagerId, updatedResourceJobManager):
+    """
+    Parameters:
+     - authzToken
+     - resourceJobManagerId
+     - updatedResourceJobManager
+    """
+    pass
+
+  def getResourceJobManager(self, authzToken, resourceJobManagerId):
+    """
+    Parameters:
+     - authzToken
+     - resourceJobManagerId
+    """
+    pass
+
+  def deleteResourceJobManager(self, authzToken, resourceJobManagerId):
+    """
+    Parameters:
+     - authzToken
+     - resourceJobManagerId
+    """
+    pass
+
+  def deleteBatchQueue(self, authzToken, computeResourceId, queueName):
+    """
+    Parameters:
+     - authzToken
+     - computeResourceId
+     - queueName
+    """
+    pass
+
+  def registerGatewayResourceProfile(self, authzToken, gatewayResourceProfile):
+    """
+    Register a Gateway Resource Profile.
+
+    @param gatewayResourceProfile
+       Gateway Resource Profile Object.
+       The GatewayID should be obtained from Airavata gateway registration and passed to register a corresponding
+         resource profile.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - gatewayResourceProfile
+    """
+    pass
+
+  def getGatewayResourceProfile(self, authzToken, gatewayID):
+    """
+    Fetch the given Gateway Resource Profile.
+
+    @param gatewayID
+      The identifier for the requested gateway resource
+
+    @return gatewayResourceProfile
+       Gateway Resource Profile Object.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+    """
+    pass
+
+  def updateGatewayResourceProfile(self, authzToken, gatewayID, gatewayResourceProfile):
+    """
+    Update a Gateway Resource Profile.
+
+    @param gatewayID
+      The identifier for the requested gateway resource to be updated.
+
+    @param gatewayResourceProfile
+       Gateway Resource Profile Object.
+
+    @return status
+      Returns a success/failure of the update.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - gatewayResourceProfile
+    """
+    pass
+
+  def deleteGatewayResourceProfile(self, authzToken, gatewayID):
+    """
+    Delete the given Gateway Resource Profile.
+
+    @param gatewayID
+      The identifier for the requested gateway resource to be deleted.
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+    """
+    pass
+
+  def addGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId, computeResourcePreference):
+    """
+    Add a Compute Resource Preference to a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be added.
+
+    @param computeResourceId
+      Preferences related to a particular compute resource
+
+    @param computeResourcePreference
+      The ComputeResourcePreference object to be added to the resource profile.
+
+    @return status
+      Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+       Instead an update should be used.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - computeResourceId
+     - computeResourcePreference
+    """
+    pass
+
+  def addGatewayDataStoragePreference(self, authzToken, gatewayID, dataMoveId, dataStoragePreference):
+    """
+    Parameters:
+     - authzToken
+     - gatewayID
+     - dataMoveId
+     - dataStoragePreference
+    """
+    pass
+
+  def getGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
+    """
+    Fetch a Compute Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be requested
+
+    @param computeResourceId
+      Preferences related to a particular compute resource
+
+    @return computeResourcePreference
+      Returns the ComputeResourcePreference object.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - computeResourceId
+    """
+    pass
+
+  def getGatewayDataStoragePreference(self, authzToken, gatewayID, dataMoveId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayID
+     - dataMoveId
+    """
+    pass
+
+  def getAllGatewayComputeResourcePreferences(self, authzToken, gatewayID):
+    """
+    Fetch all Compute Resource Preferences of a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be requested
+
+    @return computeResourcePreference
+      Returns the ComputeResourcePreference object.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+    """
+    pass
+
+  def getAllGatewayDataStoragePreferences(self, authzToken, gatewayID):
+    """
+    Parameters:
+     - authzToken
+     - gatewayID
+    """
+    pass
+
+  def getAllGatewayResourceProfiles(self, authzToken):
+    """
+    Fetch all gateway profiles registered
+
+
+    Parameters:
+     - authzToken
+    """
+    pass
+
+  def updateGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId, computeResourcePreference):
+    """
+    Update a Compute Resource Preference to a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be updated.
+
+    @param computeResourceId
+      Preferences related to a particular compute resource
+
+    @param computeResourcePreference
+      The ComputeResourcePreference object to be updated to the resource profile.
+
+    @return status
+      Returns a success/failure of the updation.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - computeResourceId
+     - computeResourcePreference
+    """
+    pass
+
+  def updateGatewayDataStoragePreference(self, authzToken, gatewayID, dataMoveId, dataStoragePreference):
+    """
+    Parameters:
+     - authzToken
+     - gatewayID
+     - dataMoveId
+     - dataStoragePreference
+    """
+    pass
+
+  def deleteGatewayComputeResourcePreference(self, authzToken, gatewayID, computeResourceId):
+    """
+    Delete the Compute Resource Preference of a registered gateway profile.
+
+    @param gatewayID
+      The identifier for the gateway profile to be deleted.
+
+    @param computeResourceId
+      Preferences related to a particular compute resource
+
+    @return status
+      Returns a success/failure of the deletion.
+
+
+    Parameters:
+     - authzToken
+     - gatewayID
+     - computeResourceId
+    """
+    pass
+
+  def deleteGatewayDataStoragePreference(self, authzToken, gatewayID, dataMoveId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayID
+     - dataMoveId
+    """
+    pass
+
+  def getAllWorkflows(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    pass
+
+  def getWorkflow(self, authzToken, workflowTemplateId):
+    """
+    Parameters:
+     - authzToken
+     - workflowTemplateId
+    """
+    pass
+
+  def deleteWorkflow(self, authzToken, workflowTemplateId):
+    """
+    Parameters:
+     - authzToken
+     - workflowTemplateId
+    """
+    pass
+
+  def registerWorkflow(self, authzToken, gatewayId, workflow):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+     - workflow
+    """
+    pass
+
+  def updateWorkflow(self, authzToken, workflowTemplateId, workflow):
+    """
+    Parameters:
+     - authzToken
+     - workflowTemplateId
+     - workflow
+    """
+    pass
+
+  def getWorkflowTemplateId(self, authzToken, workflowName):
+    """
+    Parameters:
+     - authzToken
+     - workflowName
+    """
+    pass
+
+  def isWorkflowExistWithName(self, authzToken, workflowName):
+    """
+    Parameters:
+     - authzToken
+     - workflowName
+    """
+    pass
+
+
+class Client(Iface):
+  def __init__(self, iprot, oprot=None):
+    self._iprot = self._oprot = iprot
+    if oprot is not None:
+      self._oprot = oprot
+    self._seqid = 0
+
+  def getAPIVersion(self, authzToken):
+    """
+    Fetch Apache Airavata API version
+
+    Parameters:
+     - authzToken
+    """
+    self.send_getAPIVersion(authzToken)
+    return self.recv_getAPIVersion()
+
+  def send_getAPIVersion(self, authzToken):
+    self._oprot.writeMessageBegin('getAPIVersion', TMessageType.CALL, self._seqid)
+    args = getAPIVersion_args()
+    args.authzToken = authzToken
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAPIVersion(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getAPIVersion_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAPIVersion failed: unknown result");
+
+  def addGateway(self, authzToken, gateway):
+    """
+    Parameters:
+     - authzToken
+     - gateway
+    """
+    self.send_addGateway(authzToken, gateway)
+    return self.recv_addGateway()
+
+  def send_addGateway(self, authzToken, gateway):
+    self._oprot.writeMessageBegin('addGateway', TMessageType.CALL, self._seqid)
+    args = addGateway_args()
+    args.authzToken = authzToken
+    args.gateway = gateway
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_addGateway(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = addGateway_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "addGateway failed: unknown result");
+
+  def updateGateway(self, authzToken, gatewayId, updatedGateway):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+     - updatedGateway
+    """
+    self.send_updateGateway(authzToken, gatewayId, updatedGateway)
+    self.recv_updateGateway()
+
+  def send_updateGateway(self, authzToken, gatewayId, updatedGateway):
+    self._oprot.writeMessageBegin('updateGateway', TMessageType.CALL, self._seqid)
+    args = updateGateway_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.updatedGateway = updatedGateway
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updateGateway(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = updateGateway_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    return
+
+  def getGateway(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    self.send_getGateway(authzToken, gatewayId)
+    return self.recv_getGateway()
+
+  def send_getGateway(self, authzToken, gatewayId):
+    self._oprot.writeMessageBegin('getGateway', TMessageType.CALL, self._seqid)
+    args = getGateway_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getGateway(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getGateway_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getGateway failed: unknown result");
+
+  def deleteGateway(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    self.send_deleteGateway(authzToken, gatewayId)
+    return self.recv_deleteGateway()
+
+  def send_deleteGateway(self, authzToken, gatewayId):
+    self._oprot.writeMessageBegin('deleteGateway', TMessageType.CALL, self._seqid)
+    args = deleteGateway_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteGateway(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deleteGateway_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteGateway failed: unknown result");
+
+  def getAllGateways(self, authzToken):
+    """
+    Parameters:
+     - authzToken
+    """
+    self.send_getAllGateways(authzToken)
+    return self.recv_getAllGateways()
+
+  def send_getAllGateways(self, authzToken):
+    self._oprot.writeMessageBegin('getAllGateways', TMessageType.CALL, self._seqid)
+    args = getAllGateways_args()
+    args.authzToken = authzToken
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAllGateways(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getAllGateways_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllGateways failed: unknown result");
+
+  def isGatewayExist(self, authzToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - gatewayId
+    """
+    self.send_isGatewayExist(authzToken, gatewayId)
+    return self.recv_isGatewayExist()
+
+  def send_isGatewayExist(self, authzToken, gatewayId):
+    self._oprot.writeMessageBegin('isGatewayExist', TMessageType.CALL, self._seqid)
+    args = isGatewayExist_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_isGatewayExist(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = isGatewayExist_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "isGatewayExist failed: unknown result");
+
+  def generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName):
+    """
+    Generate and Register SSH Key Pair with Airavata Credential Store.
+
+    @param gatewayId
+       The identifier for the requested gateway.
+
+    @param userName
+       The User for which the credential should be registered. For community accounts, this user is the name of the
+       community user name. For computational resources, this user name need not be the same user name on resoruces.
+
+    @return airavataCredStoreToken
+      An SSH Key pair is generated and stored in the credential store and associated with users or community account
+      belonging to a gateway.
+
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+    """
+    self.send_generateAndRegisterSSHKeys(authzToken, gatewayId, userName)
+    return self.recv_generateAndRegisterSSHKeys()
+
+  def send_generateAndRegisterSSHKeys(self, authzToken, gatewayId, userName):
+    self._oprot.writeMessageBegin('generateAndRegisterSSHKeys', TMessageType.CALL, self._seqid)
+    args = generateAndRegisterSSHKeys_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_generateAndRegisterSSHKeys(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = generateAndRegisterSSHKeys_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "generateAndRegisterSSHKeys failed: unknown result");
+
+  def getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+    """
+    Parameters:
+     - authzToken
+     - airavataCredStoreToken
+     - gatewayId
+    """
+    self.send_getSSHPubKey(authzToken, airavataCredStoreToken, gatewayId)
+    return self.recv_getSSHPubKey()
+
+  def send_getSSHPubKey(self, authzToken, airavataCredStoreToken, gatewayId):
+    self._oprot.writeMessageBegin('getSSHPubKey', TMessageType.CALL, self._seqid)
+    args = getSSHPubKey_args()
+    args.authzToken = authzToken
+    args.airavataCredStoreToken = airavataCredStoreToken
+    args.gatewayId = gatewayId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getSSHPubKey(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getSSHPubKey_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getSSHPubKey failed: unknown result");
+
+  def getAllUserSSHPubKeys(self, authzToken, userName):
+    """
+    Parameters:
+     - authzToken
+     - userName
+    """
+    self.send_getAllUserSSHPubKeys(authzToken, userName)
+    return self.recv_getAllUserSSHPubKeys()
+
+  def send_getAllUserSSHPubKeys(self, authzToken, userName):
+    self._oprot.writeMessageBegin('getAllUserSSHPubKeys', TMessageType.CALL, self._seqid)
+    args = getAllUserSSHPubKeys_args()
+    args.authzToken = authzToken
+    args.userName = userName
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getAllUserSSHPubKeys(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getAllUserSSHPubKeys_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllUserSSHPubKeys failed: unknown result");
+
+  def createProject(self, authzToken, gatewayId, project):
+    """
+    Creates a Project with basic metadata.
+       A Project is a container of experiments.
+
+    @param gatewayId
+       The identifier for the requested gateway.
+
+    @param Project
+       The Project Object described in the workspace_model
+
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - project
+    """
+    self.send_createProject(authzToken, gatewayId, project)
+    return self.recv_createProject()
+
+  def send_createProject(self, authzToken, gatewayId, project):
+    self._oprot.writeMessageBegin('createProject', TMessageType.CALL, self._seqid)
+    args = createProject_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.project = project
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_createProject(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = createProject_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "createProject failed: unknown result");
+
+  def updateProject(self, authzToken, projectId, updatedProject):
+    """
+    Update a Project
+
+
+    Parameters:
+     - authzToken
+     - projectId
+     - updatedProject
+    """
+    self.send_updateProject(authzToken, projectId, updatedProject)
+    self.recv_updateProject()
+
+  def send_updateProject(self, authzToken, projectId, updatedProject):
+    self._oprot.writeMessageBegin('updateProject', TMessageType.CALL, self._seqid)
+    args = updateProject_args()
+    args.authzToken = authzToken
+    args.projectId = projectId
+    args.updatedProject = updatedProject
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_updateProject(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = updateProject_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.pnfe is not None:
+      raise result.pnfe
+    if result.ae is not None:
+      raise result.ae
+    return
+
+  def getProject(self, authzToken, projectId):
+    """
+    Get a Project by ID
+
+
+    Parameters:
+     - authzToken
+     - projectId
+    """
+    self.send_getProject(authzToken, projectId)
+    return self.recv_getProject()
+
+  def send_getProject(self, authzToken, projectId):
+    self._oprot.writeMessageBegin('getProject', TMessageType.CALL, self._seqid)
+    args = getProject_args()
+    args.authzToken = authzToken
+    args.projectId = projectId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getProject(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getProject_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.pnfe is not None:
+      raise result.pnfe
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getProject failed: unknown result");
+
+  def deleteProject(self, authzToken, projectId):
+    """
+    Parameters:
+     - authzToken
+     - projectId
+    """
+    self.send_deleteProject(authzToken, projectId)
+    return self.recv_deleteProject()
+
+  def send_deleteProject(self, authzToken, projectId):
+    self._oprot.writeMessageBegin('deleteProject', TMessageType.CALL, self._seqid)
+    args = deleteProject_args()
+    args.authzToken = authzToken
+    args.projectId = projectId
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_deleteProject(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = deleteProject_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.pnfe is not None:
+      raise result.pnfe
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "deleteProject failed: unknown result");
+
+  def getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+    """
+      * Get all Project by user with pagination. Results will be ordered based
+      * on creation time DESC
+      *
+      * @param gatewayId
+      *    The identifier for the requested gateway.
+      * @param userName
+      *    The identifier of the user
+      * @param limit
+      *    The amount results to be fetched
+      * @param offset
+      *    The starting point of the results to be fetched
+    *
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - limit
+     - offset
+    """
+    self.send_getUserProjects(authzToken, gatewayId, userName, limit, offset)
+    return self.recv_getUserProjects()
+
+  def send_getUserProjects(self, authzToken, gatewayId, userName, limit, offset):
+    self._oprot.writeMessageBegin('getUserProjects', TMessageType.CALL, self._seqid)
+    args = getUserProjects_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.limit = limit
+    args.offset = offset
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getUserProjects(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getUserProjects_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getUserProjects failed: unknown result");
+
+  def searchProjectsByProjectName(self, authzToken, gatewayId, userName, projectName, limit, offset):
+    """
+    Get all Project for user by project name with pagination.Results will be ordered based
+    on creation time DESC
+
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param projectName
+       The name of the project on which the results to be fetched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - projectName
+     - limit
+     - offset
+    """
+    self.send_searchProjectsByProjectName(authzToken, gatewayId, userName, projectName, limit, offset)
+    return self.recv_searchProjectsByProjectName()
+
+  def send_searchProjectsByProjectName(self, authzToken, gatewayId, userName, projectName, limit, offset):
+    self._oprot.writeMessageBegin('searchProjectsByProjectName', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectName_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.projectName = projectName
+    args.limit = limit
+    args.offset = offset
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchProjectsByProjectName(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = searchProjectsByProjectName_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectName failed: unknown result");
+
+  def searchProjectsByProjectDesc(self, authzToken, gatewayId, userName, description, limit, offset):
+    """
+    Search and get all Projects for user by project description with pagination. Results
+    will be ordered based on creation time DESC
+
+    @param gatewayId
+       The identifier for the requested gateway.
+    @param userName
+       The identifier of the user
+    @param description
+       The description to be matched
+    @param limit
+       The amount results to be fetched
+    @param offset
+       The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - description
+     - limit
+     - offset
+    """
+    self.send_searchProjectsByProjectDesc(authzToken, gatewayId, userName, description, limit, offset)
+    return self.recv_searchProjectsByProjectDesc()
+
+  def send_searchProjectsByProjectDesc(self, authzToken, gatewayId, userName, description, limit, offset):
+    self._oprot.writeMessageBegin('searchProjectsByProjectDesc', TMessageType.CALL, self._seqid)
+    args = searchProjectsByProjectDesc_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.description = description
+    args.limit = limit
+    args.offset = offset
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchProjectsByProjectDesc(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = searchProjectsByProjectDesc_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchProjectsByProjectDesc failed: unknown result");
+
+  def searchExperimentsByName(self, authzToken, gatewayId, userName, expName, limit, offset):
+    """
+    Search Experiments by experiment name with pagination. Results will be sorted
+    based on creation time DESC
+
+    @param gatewayId
+          Identifier of the requested gateway
+    @param userName
+          Username of the requested user
+    @param expName
+          Experiment name to be matched
+    @param limit
+          Amount of results to be fetched
+    @param offset
+          The starting point of the results to be fetched
+
+    Parameters:
+     - authzToken
+     - gatewayId
+     - userName
+     - expName
+     - limit
+     - offset
+    """
+    self.send_searchExperimentsByName(authzToken, gatewayId, userName, expName, limit, offset)
+    return self.recv_searchExperimentsByName()
+
+  def send_searchExperimentsByName(self, authzToken, gatewayId, userName, expName, limit, offset):
+    self._oprot.writeMessageBegin('searchExperimentsByName', TMessageType.CALL, self._seqid)
+    args = searchExperimentsByName_args()
+    args.authzToken = authzToken
+    args.gatewayId = gatewayId
+    args.userName = userName
+    args.expName = expName
+    args.limit = limit
+    args.offset = offset
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_searchExperimentsByName(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = searchExperimentsByName_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.ire is not None:
+      raise result.ire
+    if result.ace is not None:
+      raise result.ace
+    if result.ase is not None:
+      raise result.ase
+    if result.ae is not None:
+      raise result.ae
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "searchExperimentsByName failed: unknown result");
+
+  def searchExperimentsByDesc(self, authzToken, gatewayId, userName, description, limit, offset):
+    """
+    Search Experiments by experiment name with pagi

<TRUNCATED>