airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shame...@apache.org
Subject [05/11] airavata git commit: adding more fields to the gateway Model
Date Tue, 12 Jul 2016 18:54:50 GMT
adding more fields to the gateway Model


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

Branch: refs/heads/master
Commit: 034de76cf6a41bc44aa5ce0aeb92b3890bf455c8
Parents: f85d41a
Author: scnakandala <supun.nakandala@gmail.com>
Authored: Mon Jul 11 13:19:35 2016 -0400
Committer: scnakandala <supun.nakandala@gmail.com>
Committed: Mon Jul 11 13:19:35 2016 -0400

----------------------------------------------------------------------
 .../java/org/apache/airavata/api/Airavata.java  |   2 +-
 .../lib/airavata/user_profile_model_types.cpp   |  80 +--
 .../lib/airavata/user_profile_model_types.h     |  12 +-
 .../lib/airavata/workspace_model_types.cpp      | 183 +++++-
 .../lib/airavata/workspace_model_types.h        |  52 +-
 .../resources/lib/Airavata/Model/User/Types.php | 109 ++--
 .../lib/Airavata/Model/Workspace/Types.php      | 142 ++++-
 .../lib/apache/airavata/model/user/ttypes.py    | 103 ++--
 .../apache/airavata/model/workspace/ttypes.py   | 105 +++-
 .../apache/airavata/model/ComponentStatus.java  |   2 +-
 .../org/apache/airavata/model/EdgeModel.java    |   2 +-
 .../org/apache/airavata/model/NodeModel.java    |   2 +-
 .../org/apache/airavata/model/PortModel.java    |   2 +-
 .../apache/airavata/model/WorkflowModel.java    |   2 +-
 .../apache/airavata/model/WorkflowStatus.java   |   2 +-
 .../ApplicationDeploymentDescription.java       |   2 +-
 .../appdeployment/ApplicationModule.java        |   2 +-
 .../appcatalog/appdeployment/CommandObject.java |   2 +-
 .../appcatalog/appdeployment/SetEnvPaths.java   |   2 +-
 .../ApplicationInterfaceDescription.java        |   2 +-
 .../appcatalog/computeresource/BatchQueue.java  |   2 +-
 .../computeresource/CloudJobSubmission.java     |   2 +-
 .../ComputeResourceDescription.java             |   2 +-
 .../computeresource/GlobusJobSubmission.java    |   2 +-
 .../computeresource/JobSubmissionInterface.java |   2 +-
 .../computeresource/LOCALSubmission.java        |   2 +-
 .../computeresource/ResourceJobManager.java     |   2 +-
 .../computeresource/SSHJobSubmission.java       |   2 +-
 .../computeresource/UnicoreJobSubmission.java   |   2 +-
 .../ComputeResourcePreference.java              |   2 +-
 .../gatewayprofile/GatewayResourceProfile.java  |   2 +-
 .../gatewayprofile/StoragePreference.java       |   2 +-
 .../StorageResourceDescription.java             |   2 +-
 .../application/io/InputDataObjectType.java     |   2 +-
 .../application/io/OutputDataObjectType.java    |   2 +-
 .../airavata/model/commons/ErrorModel.java      |   2 +-
 .../model/commons/ValidationResults.java        |   2 +-
 .../airavata/model/commons/ValidatorResult.java |   2 +-
 .../data/movement/DataMovementInterface.java    |   2 +-
 .../data/movement/GridFTPDataMovement.java      |   2 +-
 .../model/data/movement/LOCALDataMovement.java  |   2 +-
 .../model/data/movement/SCPDataMovement.java    |   2 +-
 .../data/movement/UnicoreDataMovement.java      |   2 +-
 .../model/data/replica/DataProductModel.java    |   2 +-
 .../data/replica/DataReplicaLocationModel.java  |   2 +-
 .../model/error/AiravataClientException.java    |   2 +-
 .../model/error/AiravataSystemException.java    |   2 +-
 .../model/error/AuthenticationException.java    |   2 +-
 .../model/error/AuthorizationException.java     |   2 +-
 .../error/ExperimentNotFoundException.java      |   2 +-
 .../model/error/InvalidRequestException.java    |   2 +-
 .../model/error/LaunchValidationException.java  |   2 +-
 .../model/error/ProjectNotFoundException.java   |   2 +-
 .../airavata/model/error/TimedOutException.java |   2 +-
 .../airavata/model/error/ValidationResults.java |   2 +-
 .../airavata/model/error/ValidatorResult.java   |   2 +-
 .../model/experiment/ExperimentModel.java       |   2 +-
 .../model/experiment/ExperimentStatistics.java  |   2 +-
 .../experiment/ExperimentSummaryModel.java      |   2 +-
 .../experiment/UserConfigurationDataModel.java  |   2 +-
 .../org/apache/airavata/model/job/JobModel.java |   2 +-
 .../event/ExperimentStatusChangeEvent.java      |   2 +-
 .../model/messaging/event/JobIdentifier.java    |   2 +-
 .../messaging/event/JobStatusChangeEvent.java   |   2 +-
 .../event/JobStatusChangeRequestEvent.java      |   2 +-
 .../airavata/model/messaging/event/Message.java |   2 +-
 .../messaging/event/ProcessIdentifier.java      |   2 +-
 .../event/ProcessStatusChangeEvent.java         |   2 +-
 .../event/ProcessStatusChangeRequestEvent.java  |   2 +-
 .../messaging/event/ProcessSubmitEvent.java     |   2 +-
 .../messaging/event/ProcessTerminateEvent.java  |   2 +-
 .../model/messaging/event/TaskIdentifier.java   |   2 +-
 .../messaging/event/TaskOutputChangeEvent.java  |   2 +-
 .../messaging/event/TaskStatusChangeEvent.java  |   2 +-
 .../event/TaskStatusChangeRequestEvent.java     |   2 +-
 .../airavata/model/process/ProcessModel.java    |   2 +-
 .../ComputationalResourceSchedulingModel.java   |   2 +-
 .../airavata/model/security/AuthzToken.java     |   2 +-
 .../airavata/model/status/ExperimentStatus.java |   2 +-
 .../apache/airavata/model/status/JobStatus.java |   2 +-
 .../airavata/model/status/ProcessStatus.java    |   2 +-
 .../airavata/model/status/TaskStatus.java       |   2 +-
 .../model/task/DataStagingTaskModel.java        |   2 +-
 .../model/task/EnvironmentSetupTaskModel.java   |   2 +-
 .../model/task/JobSubmissionTaskModel.java      |   2 +-
 .../airavata/model/task/MonitorTaskModel.java   |   2 +-
 .../apache/airavata/model/task/TaskModel.java   |   2 +-
 .../airavata/model/user/NSFDemographics.java    |   2 +-
 .../apache/airavata/model/user/UserProfile.java | 276 +++------
 .../airavata/model/workspace/Gateway.java       | 571 ++++++++++++++++++-
 .../apache/airavata/model/workspace/Group.java  |   2 +-
 .../airavata/model/workspace/Notification.java  |   2 +-
 .../airavata/model/workspace/Project.java       |   2 +-
 .../apache/airavata/model/workspace/User.java   |   2 +-
 .../catalog/impl/GatewayRegistry.java           |  14 +-
 .../utils/ThriftDataModelConversion.java        |   4 +
 .../workspace_model.thrift                      |   1 -
 97 files changed, 1290 insertions(+), 530 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
index eb378eb..e24bb46 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-11")
 public class Airavata {
 
   public interface Iface {

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp
index 466013d..f89e46f 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.cpp
@@ -386,11 +386,6 @@ void UserProfile::__set_userName(const std::string& val) {
 __isset.userName = true;
 }
 
-void UserProfile::__set_gatewayId(const std::string& val) {
-  this->gatewayId = val;
-__isset.gatewayId = true;
-}
-
 void UserProfile::__set_orcidId(const std::string& val) {
   this->orcidId = val;
 __isset.orcidId = true;
@@ -545,21 +540,13 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
         break;
       case 6:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->gatewayId);
-          this->__isset.gatewayId = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      case 7:
-        if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->orcidId);
           this->__isset.orcidId = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 8:
+      case 7:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->phones.clear();
@@ -579,7 +566,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 9:
+      case 8:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->country);
           this->__isset.country = true;
@@ -587,7 +574,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 10:
+      case 9:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->nationality.clear();
@@ -607,7 +594,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 11:
+      case 10:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->homeOrganization);
           this->__isset.homeOrganization = true;
@@ -615,7 +602,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 12:
+      case 11:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->orginationAffiliation);
           this->__isset.orginationAffiliation = true;
@@ -623,7 +610,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 13:
+      case 12:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->creationTime);
           isset_creationTime = true;
@@ -631,7 +618,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 14:
+      case 13:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->lastAccessTime);
           isset_lastAccessTime = true;
@@ -639,7 +626,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 15:
+      case 14:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->validUntil);
           isset_validUntil = true;
@@ -647,7 +634,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 16:
+      case 15:
         if (ftype == ::apache::thrift::protocol::T_I32) {
           int32_t ecast39;
           xfer += iprot->readI32(ecast39);
@@ -657,7 +644,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 17:
+      case 16:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->comments);
           this->__isset.comments = true;
@@ -665,7 +652,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 18:
+      case 17:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->labeledURI.clear();
@@ -685,7 +672,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 19:
+      case 18:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->gpgKey);
           this->__isset.gpgKey = true;
@@ -693,7 +680,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 20:
+      case 19:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->timeZone);
           this->__isset.timeZone = true;
@@ -701,7 +688,7 @@ uint32_t UserProfile::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 21:
+      case 20:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
           xfer += this->nsfDemographics.read(iprot);
           this->__isset.nsfDemographics = true;
@@ -771,18 +758,13 @@ uint32_t UserProfile::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeString(this->userName);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.gatewayId) {
-    xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 6);
-    xfer += oprot->writeString(this->gatewayId);
-    xfer += oprot->writeFieldEnd();
-  }
   if (this->__isset.orcidId) {
-    xfer += oprot->writeFieldBegin("orcidId", ::apache::thrift::protocol::T_STRING, 7);
+    xfer += oprot->writeFieldBegin("orcidId", ::apache::thrift::protocol::T_STRING, 6);
     xfer += oprot->writeString(this->orcidId);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.phones) {
-    xfer += oprot->writeFieldBegin("phones", ::apache::thrift::protocol::T_LIST, 8);
+    xfer += oprot->writeFieldBegin("phones", ::apache::thrift::protocol::T_LIST, 7);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->phones.size()));
       std::vector<std::string> ::const_iterator _iter46;
@@ -795,12 +777,12 @@ uint32_t UserProfile::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.country) {
-    xfer += oprot->writeFieldBegin("country", ::apache::thrift::protocol::T_STRING, 9);
+    xfer += oprot->writeFieldBegin("country", ::apache::thrift::protocol::T_STRING, 8);
     xfer += oprot->writeString(this->country);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.nationality) {
-    xfer += oprot->writeFieldBegin("nationality", ::apache::thrift::protocol::T_LIST, 10);
+    xfer += oprot->writeFieldBegin("nationality", ::apache::thrift::protocol::T_LIST, 9);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->nationality.size()));
       std::vector<std::string> ::const_iterator _iter47;
@@ -813,38 +795,38 @@ uint32_t UserProfile::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.homeOrganization) {
-    xfer += oprot->writeFieldBegin("homeOrganization", ::apache::thrift::protocol::T_STRING, 11);
+    xfer += oprot->writeFieldBegin("homeOrganization", ::apache::thrift::protocol::T_STRING, 10);
     xfer += oprot->writeString(this->homeOrganization);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.orginationAffiliation) {
-    xfer += oprot->writeFieldBegin("orginationAffiliation", ::apache::thrift::protocol::T_STRING, 12);
+    xfer += oprot->writeFieldBegin("orginationAffiliation", ::apache::thrift::protocol::T_STRING, 11);
     xfer += oprot->writeString(this->orginationAffiliation);
     xfer += oprot->writeFieldEnd();
   }
-  xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_STRING, 13);
+  xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_STRING, 12);
   xfer += oprot->writeString(this->creationTime);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("lastAccessTime", ::apache::thrift::protocol::T_STRING, 14);
+  xfer += oprot->writeFieldBegin("lastAccessTime", ::apache::thrift::protocol::T_STRING, 13);
   xfer += oprot->writeString(this->lastAccessTime);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("validUntil", ::apache::thrift::protocol::T_STRING, 15);
+  xfer += oprot->writeFieldBegin("validUntil", ::apache::thrift::protocol::T_STRING, 14);
   xfer += oprot->writeString(this->validUntil);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("State", ::apache::thrift::protocol::T_I32, 16);
+  xfer += oprot->writeFieldBegin("State", ::apache::thrift::protocol::T_I32, 15);
   xfer += oprot->writeI32((int32_t)this->State);
   xfer += oprot->writeFieldEnd();
 
   if (this->__isset.comments) {
-    xfer += oprot->writeFieldBegin("comments", ::apache::thrift::protocol::T_STRING, 17);
+    xfer += oprot->writeFieldBegin("comments", ::apache::thrift::protocol::T_STRING, 16);
     xfer += oprot->writeString(this->comments);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.labeledURI) {
-    xfer += oprot->writeFieldBegin("labeledURI", ::apache::thrift::protocol::T_LIST, 18);
+    xfer += oprot->writeFieldBegin("labeledURI", ::apache::thrift::protocol::T_LIST, 17);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->labeledURI.size()));
       std::vector<std::string> ::const_iterator _iter48;
@@ -857,17 +839,17 @@ uint32_t UserProfile::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.gpgKey) {
-    xfer += oprot->writeFieldBegin("gpgKey", ::apache::thrift::protocol::T_STRING, 19);
+    xfer += oprot->writeFieldBegin("gpgKey", ::apache::thrift::protocol::T_STRING, 18);
     xfer += oprot->writeString(this->gpgKey);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.timeZone) {
-    xfer += oprot->writeFieldBegin("timeZone", ::apache::thrift::protocol::T_STRING, 20);
+    xfer += oprot->writeFieldBegin("timeZone", ::apache::thrift::protocol::T_STRING, 19);
     xfer += oprot->writeString(this->timeZone);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.nsfDemographics) {
-    xfer += oprot->writeFieldBegin("nsfDemographics", ::apache::thrift::protocol::T_STRUCT, 21);
+    xfer += oprot->writeFieldBegin("nsfDemographics", ::apache::thrift::protocol::T_STRUCT, 20);
     xfer += this->nsfDemographics.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
@@ -883,7 +865,6 @@ void swap(UserProfile &a, UserProfile &b) {
   swap(a.userId, b.userId);
   swap(a.emails, b.emails);
   swap(a.userName, b.userName);
-  swap(a.gatewayId, b.gatewayId);
   swap(a.orcidId, b.orcidId);
   swap(a.phones, b.phones);
   swap(a.country, b.country);
@@ -908,7 +889,6 @@ UserProfile::UserProfile(const UserProfile& other49) {
   userId = other49.userId;
   emails = other49.emails;
   userName = other49.userName;
-  gatewayId = other49.gatewayId;
   orcidId = other49.orcidId;
   phones = other49.phones;
   country = other49.country;
@@ -932,7 +912,6 @@ UserProfile& UserProfile::operator=(const UserProfile& other50) {
   userId = other50.userId;
   emails = other50.emails;
   userName = other50.userName;
-  gatewayId = other50.gatewayId;
   orcidId = other50.orcidId;
   phones = other50.phones;
   country = other50.country;
@@ -959,7 +938,6 @@ void UserProfile::printTo(std::ostream& out) const {
   out << ", " << "userId=" << to_string(userId);
   out << ", " << "emails=" << to_string(emails);
   out << ", " << "userName="; (__isset.userName ? (out << to_string(userName)) : (out << "<null>"));
-  out << ", " << "gatewayId="; (__isset.gatewayId ? (out << to_string(gatewayId)) : (out << "<null>"));
   out << ", " << "orcidId="; (__isset.orcidId ? (out << to_string(orcidId)) : (out << "<null>"));
   out << ", " << "phones="; (__isset.phones ? (out << to_string(phones)) : (out << "<null>"));
   out << ", " << "country="; (__isset.country ? (out << to_string(country)) : (out << "<null>"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h
index 0881287..4ae9bad 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/user_profile_model_types.h
@@ -185,9 +185,8 @@ inline std::ostream& operator<<(std::ostream& out, const NSFDemographics& obj)
 }
 
 typedef struct _UserProfile__isset {
-  _UserProfile__isset() : userName(false), gatewayId(false), orcidId(false), phones(false), country(false), nationality(false), homeOrganization(false), orginationAffiliation(false), comments(false), labeledURI(false), gpgKey(false), timeZone(false), nsfDemographics(false) {}
+  _UserProfile__isset() : userName(false), orcidId(false), phones(false), country(false), nationality(false), homeOrganization(false), orginationAffiliation(false), comments(false), labeledURI(false), gpgKey(false), timeZone(false), nsfDemographics(false) {}
   bool userName :1;
-  bool gatewayId :1;
   bool orcidId :1;
   bool phones :1;
   bool country :1;
@@ -206,7 +205,7 @@ class UserProfile {
 
   UserProfile(const UserProfile&);
   UserProfile& operator=(const UserProfile&);
-  UserProfile() : userModelVersion("1.0"), airavataInternalUserId("DO_NOT_SET_AT_CLIENTS"), userId(), userName(), gatewayId(), orcidId(), country(), homeOrganization(), orginationAffiliation(), creationTime(), lastAccessTime(), validUntil(), State((Status::type)0), comments(), gpgKey(), timeZone() {
+  UserProfile() : userModelVersion("1.0"), airavataInternalUserId("DO_NOT_SET_AT_CLIENTS"), userId(), userName(), orcidId(), country(), homeOrganization(), orginationAffiliation(), creationTime(), lastAccessTime(), validUntil(), State((Status::type)0), comments(), gpgKey(), timeZone() {
   }
 
   virtual ~UserProfile() throw();
@@ -215,7 +214,6 @@ class UserProfile {
   std::string userId;
   std::vector<std::string>  emails;
   std::string userName;
-  std::string gatewayId;
   std::string orcidId;
   std::vector<std::string>  phones;
   std::string country;
@@ -244,8 +242,6 @@ class UserProfile {
 
   void __set_userName(const std::string& val);
 
-  void __set_gatewayId(const std::string& val);
-
   void __set_orcidId(const std::string& val);
 
   void __set_phones(const std::vector<std::string> & val);
@@ -290,10 +286,6 @@ class UserProfile {
       return false;
     else if (__isset.userName && !(userName == rhs.userName))
       return false;
-    if (__isset.gatewayId != rhs.__isset.gatewayId)
-      return false;
-    else if (__isset.gatewayId && !(gatewayId == rhs.gatewayId))
-      return false;
     if (__isset.orcidId != rhs.__isset.orcidId)
       return false;
     else if (__isset.orcidId && !(orcidId == rhs.orcidId))

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.cpp
index 2229493..272c3a8 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.cpp
@@ -30,6 +30,20 @@
 
 namespace apache { namespace airavata { namespace model { namespace workspace {
 
+int _kGatewayApprovalStatusValues[] = {
+  GatewayApprovalStatus::REQUESTED,
+  GatewayApprovalStatus::APPROVED,
+  GatewayApprovalStatus::ACTIVE,
+  GatewayApprovalStatus::DEACTIVATED
+};
+const char* _kGatewayApprovalStatusNames[] = {
+  "REQUESTED",
+  "APPROVED",
+  "ACTIVE",
+  "DEACTIVATED"
+};
+const std::map<int, const char*> _GatewayApprovalStatus_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(4, _kGatewayApprovalStatusValues, _kGatewayApprovalStatusNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
 int _kNotificationPriorityValues[] = {
   NotificationPriority::LOW,
   NotificationPriority::NORMAL,
@@ -556,6 +570,10 @@ void Gateway::__set_gatewayId(const std::string& val) {
   this->gatewayId = val;
 }
 
+void Gateway::__set_gatewayApprovalStatus(const GatewayApprovalStatus::type val) {
+  this->gatewayApprovalStatus = val;
+}
+
 void Gateway::__set_gatewayName(const std::string& val) {
   this->gatewayName = val;
 __isset.gatewayName = true;
@@ -571,6 +589,26 @@ void Gateway::__set_emailAddress(const std::string& val) {
 __isset.emailAddress = true;
 }
 
+void Gateway::__set_gatewayAcronym(const std::string& val) {
+  this->gatewayAcronym = val;
+__isset.gatewayAcronym = true;
+}
+
+void Gateway::__set_gatewayURL(const std::string& val) {
+  this->gatewayURL = val;
+__isset.gatewayURL = true;
+}
+
+void Gateway::__set_gatewayPublicAbstract(const std::string& val) {
+  this->gatewayPublicAbstract = val;
+__isset.gatewayPublicAbstract = true;
+}
+
+void Gateway::__set_reviewProposalDescription(const std::string& val) {
+  this->reviewProposalDescription = val;
+__isset.reviewProposalDescription = true;
+}
+
 uint32_t Gateway::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -584,6 +622,7 @@ uint32_t Gateway::read(::apache::thrift::protocol::TProtocol* iprot) {
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_gatewayId = false;
+  bool isset_gatewayApprovalStatus = false;
 
   while (true)
   {
@@ -602,6 +641,16 @@ uint32_t Gateway::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 2:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast24;
+          xfer += iprot->readI32(ecast24);
+          this->gatewayApprovalStatus = (GatewayApprovalStatus::type)ecast24;
+          isset_gatewayApprovalStatus = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->gatewayName);
           this->__isset.gatewayName = true;
@@ -609,7 +658,7 @@ uint32_t Gateway::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 3:
+      case 4:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->domain);
           this->__isset.domain = true;
@@ -617,7 +666,7 @@ uint32_t Gateway::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 4:
+      case 5:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->emailAddress);
           this->__isset.emailAddress = true;
@@ -625,6 +674,38 @@ uint32_t Gateway::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->gatewayAcronym);
+          this->__isset.gatewayAcronym = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 7:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->gatewayURL);
+          this->__isset.gatewayURL = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 8:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->gatewayPublicAbstract);
+          this->__isset.gatewayPublicAbstract = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->reviewProposalDescription);
+          this->__isset.reviewProposalDescription = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -636,6 +717,8 @@ uint32_t Gateway::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   if (!isset_gatewayId)
     throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_gatewayApprovalStatus)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
@@ -648,21 +731,45 @@ uint32_t Gateway::write(::apache::thrift::protocol::TProtocol* oprot) const {
   xfer += oprot->writeString(this->gatewayId);
   xfer += oprot->writeFieldEnd();
 
+  xfer += oprot->writeFieldBegin("gatewayApprovalStatus", ::apache::thrift::protocol::T_I32, 2);
+  xfer += oprot->writeI32((int32_t)this->gatewayApprovalStatus);
+  xfer += oprot->writeFieldEnd();
+
   if (this->__isset.gatewayName) {
-    xfer += oprot->writeFieldBegin("gatewayName", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeFieldBegin("gatewayName", ::apache::thrift::protocol::T_STRING, 3);
     xfer += oprot->writeString(this->gatewayName);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.domain) {
-    xfer += oprot->writeFieldBegin("domain", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeFieldBegin("domain", ::apache::thrift::protocol::T_STRING, 4);
     xfer += oprot->writeString(this->domain);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.emailAddress) {
-    xfer += oprot->writeFieldBegin("emailAddress", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeFieldBegin("emailAddress", ::apache::thrift::protocol::T_STRING, 5);
     xfer += oprot->writeString(this->emailAddress);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.gatewayAcronym) {
+    xfer += oprot->writeFieldBegin("gatewayAcronym", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeString(this->gatewayAcronym);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.gatewayURL) {
+    xfer += oprot->writeFieldBegin("gatewayURL", ::apache::thrift::protocol::T_STRING, 7);
+    xfer += oprot->writeString(this->gatewayURL);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.gatewayPublicAbstract) {
+    xfer += oprot->writeFieldBegin("gatewayPublicAbstract", ::apache::thrift::protocol::T_STRING, 8);
+    xfer += oprot->writeString(this->gatewayPublicAbstract);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.reviewProposalDescription) {
+    xfer += oprot->writeFieldBegin("reviewProposalDescription", ::apache::thrift::protocol::T_STRING, 9);
+    xfer += oprot->writeString(this->reviewProposalDescription);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -671,34 +778,54 @@ uint32_t Gateway::write(::apache::thrift::protocol::TProtocol* oprot) const {
 void swap(Gateway &a, Gateway &b) {
   using ::std::swap;
   swap(a.gatewayId, b.gatewayId);
+  swap(a.gatewayApprovalStatus, b.gatewayApprovalStatus);
   swap(a.gatewayName, b.gatewayName);
   swap(a.domain, b.domain);
   swap(a.emailAddress, b.emailAddress);
+  swap(a.gatewayAcronym, b.gatewayAcronym);
+  swap(a.gatewayURL, b.gatewayURL);
+  swap(a.gatewayPublicAbstract, b.gatewayPublicAbstract);
+  swap(a.reviewProposalDescription, b.reviewProposalDescription);
   swap(a.__isset, b.__isset);
 }
 
-Gateway::Gateway(const Gateway& other24) {
-  gatewayId = other24.gatewayId;
-  gatewayName = other24.gatewayName;
-  domain = other24.domain;
-  emailAddress = other24.emailAddress;
-  __isset = other24.__isset;
-}
-Gateway& Gateway::operator=(const Gateway& other25) {
+Gateway::Gateway(const Gateway& other25) {
   gatewayId = other25.gatewayId;
+  gatewayApprovalStatus = other25.gatewayApprovalStatus;
   gatewayName = other25.gatewayName;
   domain = other25.domain;
   emailAddress = other25.emailAddress;
+  gatewayAcronym = other25.gatewayAcronym;
+  gatewayURL = other25.gatewayURL;
+  gatewayPublicAbstract = other25.gatewayPublicAbstract;
+  reviewProposalDescription = other25.reviewProposalDescription;
   __isset = other25.__isset;
+}
+Gateway& Gateway::operator=(const Gateway& other26) {
+  gatewayId = other26.gatewayId;
+  gatewayApprovalStatus = other26.gatewayApprovalStatus;
+  gatewayName = other26.gatewayName;
+  domain = other26.domain;
+  emailAddress = other26.emailAddress;
+  gatewayAcronym = other26.gatewayAcronym;
+  gatewayURL = other26.gatewayURL;
+  gatewayPublicAbstract = other26.gatewayPublicAbstract;
+  reviewProposalDescription = other26.reviewProposalDescription;
+  __isset = other26.__isset;
   return *this;
 }
 void Gateway::printTo(std::ostream& out) const {
   using ::apache::thrift::to_string;
   out << "Gateway(";
   out << "gatewayId=" << to_string(gatewayId);
+  out << ", " << "gatewayApprovalStatus=" << to_string(gatewayApprovalStatus);
   out << ", " << "gatewayName="; (__isset.gatewayName ? (out << to_string(gatewayName)) : (out << "<null>"));
   out << ", " << "domain="; (__isset.domain ? (out << to_string(domain)) : (out << "<null>"));
   out << ", " << "emailAddress="; (__isset.emailAddress ? (out << to_string(emailAddress)) : (out << "<null>"));
+  out << ", " << "gatewayAcronym="; (__isset.gatewayAcronym ? (out << to_string(gatewayAcronym)) : (out << "<null>"));
+  out << ", " << "gatewayURL="; (__isset.gatewayURL ? (out << to_string(gatewayURL)) : (out << "<null>"));
+  out << ", " << "gatewayPublicAbstract="; (__isset.gatewayPublicAbstract ? (out << to_string(gatewayPublicAbstract)) : (out << "<null>"));
+  out << ", " << "reviewProposalDescription="; (__isset.reviewProposalDescription ? (out << to_string(reviewProposalDescription)) : (out << "<null>"));
   out << ")";
 }
 
@@ -826,9 +953,9 @@ uint32_t Notification::read(::apache::thrift::protocol::TProtocol* iprot) {
         break;
       case 8:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast26;
-          xfer += iprot->readI32(ecast26);
-          this->priority = (NotificationPriority::type)ecast26;
+          int32_t ecast27;
+          xfer += iprot->readI32(ecast27);
+          this->priority = (NotificationPriority::type)ecast27;
           this->__isset.priority = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -912,18 +1039,7 @@ void swap(Notification &a, Notification &b) {
   swap(a.__isset, b.__isset);
 }
 
-Notification::Notification(const Notification& other27) {
-  notificationId = other27.notificationId;
-  gatewayId = other27.gatewayId;
-  title = other27.title;
-  notificationMessage = other27.notificationMessage;
-  creationTime = other27.creationTime;
-  publishedTime = other27.publishedTime;
-  expirationTime = other27.expirationTime;
-  priority = other27.priority;
-  __isset = other27.__isset;
-}
-Notification& Notification::operator=(const Notification& other28) {
+Notification::Notification(const Notification& other28) {
   notificationId = other28.notificationId;
   gatewayId = other28.gatewayId;
   title = other28.title;
@@ -933,6 +1049,17 @@ Notification& Notification::operator=(const Notification& other28) {
   expirationTime = other28.expirationTime;
   priority = other28.priority;
   __isset = other28.__isset;
+}
+Notification& Notification::operator=(const Notification& other29) {
+  notificationId = other29.notificationId;
+  gatewayId = other29.gatewayId;
+  title = other29.title;
+  notificationMessage = other29.notificationMessage;
+  creationTime = other29.creationTime;
+  publishedTime = other29.publishedTime;
+  expirationTime = other29.expirationTime;
+  priority = other29.priority;
+  __isset = other29.__isset;
   return *this;
 }
 void Notification::printTo(std::ostream& out) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.h
index 7502186..1485baf 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workspace_model_types.h
@@ -37,6 +37,17 @@
 
 namespace apache { namespace airavata { namespace model { namespace workspace {
 
+struct GatewayApprovalStatus {
+  enum type {
+    REQUESTED = 0,
+    APPROVED = 1,
+    ACTIVE = 2,
+    DEACTIVATED = 3
+  };
+};
+
+extern const std::map<int, const char*> _GatewayApprovalStatus_VALUES_TO_NAMES;
+
 struct NotificationPriority {
   enum type {
     LOW = 0,
@@ -251,10 +262,14 @@ inline std::ostream& operator<<(std::ostream& out, const User& obj)
 }
 
 typedef struct _Gateway__isset {
-  _Gateway__isset() : gatewayName(false), domain(false), emailAddress(false) {}
+  _Gateway__isset() : gatewayName(false), domain(false), emailAddress(false), gatewayAcronym(false), gatewayURL(false), gatewayPublicAbstract(false), reviewProposalDescription(false) {}
   bool gatewayName :1;
   bool domain :1;
   bool emailAddress :1;
+  bool gatewayAcronym :1;
+  bool gatewayURL :1;
+  bool gatewayPublicAbstract :1;
+  bool reviewProposalDescription :1;
 } _Gateway__isset;
 
 class Gateway {
@@ -262,29 +277,46 @@ class Gateway {
 
   Gateway(const Gateway&);
   Gateway& operator=(const Gateway&);
-  Gateway() : gatewayId(), gatewayName(), domain(), emailAddress() {
+  Gateway() : gatewayId(), gatewayApprovalStatus((GatewayApprovalStatus::type)0), gatewayName(), domain(), emailAddress(), gatewayAcronym(), gatewayURL(), gatewayPublicAbstract(), reviewProposalDescription() {
   }
 
   virtual ~Gateway() throw();
   std::string gatewayId;
+  GatewayApprovalStatus::type gatewayApprovalStatus;
   std::string gatewayName;
   std::string domain;
   std::string emailAddress;
+  std::string gatewayAcronym;
+  std::string gatewayURL;
+  std::string gatewayPublicAbstract;
+  std::string reviewProposalDescription;
 
   _Gateway__isset __isset;
 
   void __set_gatewayId(const std::string& val);
 
+  void __set_gatewayApprovalStatus(const GatewayApprovalStatus::type val);
+
   void __set_gatewayName(const std::string& val);
 
   void __set_domain(const std::string& val);
 
   void __set_emailAddress(const std::string& val);
 
+  void __set_gatewayAcronym(const std::string& val);
+
+  void __set_gatewayURL(const std::string& val);
+
+  void __set_gatewayPublicAbstract(const std::string& val);
+
+  void __set_reviewProposalDescription(const std::string& val);
+
   bool operator == (const Gateway & rhs) const
   {
     if (!(gatewayId == rhs.gatewayId))
       return false;
+    if (!(gatewayApprovalStatus == rhs.gatewayApprovalStatus))
+      return false;
     if (__isset.gatewayName != rhs.__isset.gatewayName)
       return false;
     else if (__isset.gatewayName && !(gatewayName == rhs.gatewayName))
@@ -297,6 +329,22 @@ class Gateway {
       return false;
     else if (__isset.emailAddress && !(emailAddress == rhs.emailAddress))
       return false;
+    if (__isset.gatewayAcronym != rhs.__isset.gatewayAcronym)
+      return false;
+    else if (__isset.gatewayAcronym && !(gatewayAcronym == rhs.gatewayAcronym))
+      return false;
+    if (__isset.gatewayURL != rhs.__isset.gatewayURL)
+      return false;
+    else if (__isset.gatewayURL && !(gatewayURL == rhs.gatewayURL))
+      return false;
+    if (__isset.gatewayPublicAbstract != rhs.__isset.gatewayPublicAbstract)
+      return false;
+    else if (__isset.gatewayPublicAbstract && !(gatewayPublicAbstract == rhs.gatewayPublicAbstract))
+      return false;
+    if (__isset.reviewProposalDescription != rhs.__isset.reviewProposalDescription)
+      return false;
+    else if (__isset.reviewProposalDescription && !(reviewProposalDescription == rhs.reviewProposalDescription))
+      return false;
     return true;
   }
   bool operator != (const Gateway &rhs) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php
index 56e889b..250ef09 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/User/Types.php
@@ -450,10 +450,6 @@ class UserProfile {
   /**
    * @var string
    */
-  public $gatewayId = null;
-  /**
-   * @var string
-   */
   public $orcidId = null;
   /**
    * @var string[]
@@ -540,14 +536,10 @@ class UserProfile {
           'type' => TType::STRING,
           ),
         6 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        7 => array(
           'var' => 'orcidId',
           'type' => TType::STRING,
           ),
-        8 => array(
+        7 => array(
           'var' => 'phones',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -555,11 +547,11 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        9 => array(
+        8 => array(
           'var' => 'country',
           'type' => TType::STRING,
           ),
-        10 => array(
+        9 => array(
           'var' => 'nationality',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -567,35 +559,35 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        11 => array(
+        10 => array(
           'var' => 'homeOrganization',
           'type' => TType::STRING,
           ),
-        12 => array(
+        11 => array(
           'var' => 'orginationAffiliation',
           'type' => TType::STRING,
           ),
-        13 => array(
+        12 => array(
           'var' => 'creationTime',
           'type' => TType::STRING,
           ),
-        14 => array(
+        13 => array(
           'var' => 'lastAccessTime',
           'type' => TType::STRING,
           ),
-        15 => array(
+        14 => array(
           'var' => 'validUntil',
           'type' => TType::STRING,
           ),
-        16 => array(
+        15 => array(
           'var' => 'State',
           'type' => TType::I32,
           ),
-        17 => array(
+        16 => array(
           'var' => 'comments',
           'type' => TType::STRING,
           ),
-        18 => array(
+        17 => array(
           'var' => 'labeledURI',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -603,15 +595,15 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        19 => array(
+        18 => array(
           'var' => 'gpgKey',
           'type' => TType::STRING,
           ),
-        20 => array(
+        19 => array(
           'var' => 'timeZone',
           'type' => TType::STRING,
           ),
-        21 => array(
+        20 => array(
           'var' => 'nsfDemographics',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\User\NSFDemographics',
@@ -634,9 +626,6 @@ class UserProfile {
       if (isset($vals['userName'])) {
         $this->userName = $vals['userName'];
       }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
       if (isset($vals['orcidId'])) {
         $this->orcidId = $vals['orcidId'];
       }
@@ -751,19 +740,12 @@ class UserProfile {
           break;
         case 6:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 7:
-          if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->orcidId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 8:
+        case 7:
           if ($ftype == TType::LST) {
             $this->phones = array();
             $_size27 = 0;
@@ -780,14 +762,14 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 9:
+        case 8:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->country);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 10:
+        case 9:
           if ($ftype == TType::LST) {
             $this->nationality = array();
             $_size33 = 0;
@@ -804,56 +786,56 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 11:
+        case 10:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->homeOrganization);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 12:
+        case 11:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->orginationAffiliation);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 13:
+        case 12:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->creationTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 14:
+        case 13:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->lastAccessTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 15:
+        case 14:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->validUntil);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 16:
+        case 15:
           if ($ftype == TType::I32) {
             $xfer += $input->readI32($this->State);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 17:
+        case 16:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->comments);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 18:
+        case 17:
           if ($ftype == TType::LST) {
             $this->labeledURI = array();
             $_size39 = 0;
@@ -870,21 +852,21 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 19:
+        case 18:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->gpgKey);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 20:
+        case 19:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->timeZone);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 21:
+        case 20:
           if ($ftype == TType::STRUCT) {
             $this->nsfDemographics = new \Airavata\Model\User\NSFDemographics();
             $xfer += $this->nsfDemographics->read($input);
@@ -942,13 +924,8 @@ class UserProfile {
       $xfer += $output->writeString($this->userName);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 6);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
     if ($this->orcidId !== null) {
-      $xfer += $output->writeFieldBegin('orcidId', TType::STRING, 7);
+      $xfer += $output->writeFieldBegin('orcidId', TType::STRING, 6);
       $xfer += $output->writeString($this->orcidId);
       $xfer += $output->writeFieldEnd();
     }
@@ -956,7 +933,7 @@ class UserProfile {
       if (!is_array($this->phones)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('phones', TType::LST, 8);
+      $xfer += $output->writeFieldBegin('phones', TType::LST, 7);
       {
         $output->writeListBegin(TType::STRING, count($this->phones));
         {
@@ -970,7 +947,7 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->country !== null) {
-      $xfer += $output->writeFieldBegin('country', TType::STRING, 9);
+      $xfer += $output->writeFieldBegin('country', TType::STRING, 8);
       $xfer += $output->writeString($this->country);
       $xfer += $output->writeFieldEnd();
     }
@@ -978,7 +955,7 @@ class UserProfile {
       if (!is_array($this->nationality)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('nationality', TType::LST, 10);
+      $xfer += $output->writeFieldBegin('nationality', TType::LST, 9);
       {
         $output->writeListBegin(TType::STRING, count($this->nationality));
         {
@@ -992,37 +969,37 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->homeOrganization !== null) {
-      $xfer += $output->writeFieldBegin('homeOrganization', TType::STRING, 11);
+      $xfer += $output->writeFieldBegin('homeOrganization', TType::STRING, 10);
       $xfer += $output->writeString($this->homeOrganization);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->orginationAffiliation !== null) {
-      $xfer += $output->writeFieldBegin('orginationAffiliation', TType::STRING, 12);
+      $xfer += $output->writeFieldBegin('orginationAffiliation', TType::STRING, 11);
       $xfer += $output->writeString($this->orginationAffiliation);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->creationTime !== null) {
-      $xfer += $output->writeFieldBegin('creationTime', TType::STRING, 13);
+      $xfer += $output->writeFieldBegin('creationTime', TType::STRING, 12);
       $xfer += $output->writeString($this->creationTime);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->lastAccessTime !== null) {
-      $xfer += $output->writeFieldBegin('lastAccessTime', TType::STRING, 14);
+      $xfer += $output->writeFieldBegin('lastAccessTime', TType::STRING, 13);
       $xfer += $output->writeString($this->lastAccessTime);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->validUntil !== null) {
-      $xfer += $output->writeFieldBegin('validUntil', TType::STRING, 15);
+      $xfer += $output->writeFieldBegin('validUntil', TType::STRING, 14);
       $xfer += $output->writeString($this->validUntil);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->State !== null) {
-      $xfer += $output->writeFieldBegin('State', TType::I32, 16);
+      $xfer += $output->writeFieldBegin('State', TType::I32, 15);
       $xfer += $output->writeI32($this->State);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->comments !== null) {
-      $xfer += $output->writeFieldBegin('comments', TType::STRING, 17);
+      $xfer += $output->writeFieldBegin('comments', TType::STRING, 16);
       $xfer += $output->writeString($this->comments);
       $xfer += $output->writeFieldEnd();
     }
@@ -1030,7 +1007,7 @@ class UserProfile {
       if (!is_array($this->labeledURI)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('labeledURI', TType::LST, 18);
+      $xfer += $output->writeFieldBegin('labeledURI', TType::LST, 17);
       {
         $output->writeListBegin(TType::STRING, count($this->labeledURI));
         {
@@ -1044,12 +1021,12 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->gpgKey !== null) {
-      $xfer += $output->writeFieldBegin('gpgKey', TType::STRING, 19);
+      $xfer += $output->writeFieldBegin('gpgKey', TType::STRING, 18);
       $xfer += $output->writeString($this->gpgKey);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->timeZone !== null) {
-      $xfer += $output->writeFieldBegin('timeZone', TType::STRING, 20);
+      $xfer += $output->writeFieldBegin('timeZone', TType::STRING, 19);
       $xfer += $output->writeString($this->timeZone);
       $xfer += $output->writeFieldEnd();
     }
@@ -1057,7 +1034,7 @@ class UserProfile {
       if (!is_object($this->nsfDemographics)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('nsfDemographics', TType::STRUCT, 21);
+      $xfer += $output->writeFieldBegin('nsfDemographics', TType::STRUCT, 20);
       $xfer += $this->nsfDemographics->write($output);
       $xfer += $output->writeFieldEnd();
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Types.php
index 61355c2..b16d03c 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Types.php
@@ -17,6 +17,19 @@ use Thrift\Protocol\TBinaryProtocolAccelerated;
 use Thrift\Exception\TApplicationException;
 
 
+final class GatewayApprovalStatus {
+  const REQUESTED = 0;
+  const APPROVED = 1;
+  const ACTIVE = 2;
+  const DEACTIVATED = 3;
+  static public $__names = array(
+    0 => 'REQUESTED',
+    1 => 'APPROVED',
+    2 => 'ACTIVE',
+    3 => 'DEACTIVATED',
+  );
+}
+
 final class NotificationPriority {
   const LOW = 0;
   const NORMAL = 1;
@@ -525,6 +538,10 @@ class Gateway {
    */
   public $gatewayId = null;
   /**
+   * @var int
+   */
+  public $gatewayApprovalStatus = null;
+  /**
    * @var string
    */
   public $gatewayName = null;
@@ -536,6 +553,22 @@ class Gateway {
    * @var string
    */
   public $emailAddress = null;
+  /**
+   * @var string
+   */
+  public $gatewayAcronym = null;
+  /**
+   * @var string
+   */
+  public $gatewayURL = null;
+  /**
+   * @var string
+   */
+  public $gatewayPublicAbstract = null;
+  /**
+   * @var string
+   */
+  public $reviewProposalDescription = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -545,23 +578,46 @@ class Gateway {
           'type' => TType::STRING,
           ),
         2 => array(
+          'var' => 'gatewayApprovalStatus',
+          'type' => TType::I32,
+          ),
+        3 => array(
           'var' => 'gatewayName',
           'type' => TType::STRING,
           ),
-        3 => array(
+        4 => array(
           'var' => 'domain',
           'type' => TType::STRING,
           ),
-        4 => array(
+        5 => array(
           'var' => 'emailAddress',
           'type' => TType::STRING,
           ),
+        6 => array(
+          'var' => 'gatewayAcronym',
+          'type' => TType::STRING,
+          ),
+        7 => array(
+          'var' => 'gatewayURL',
+          'type' => TType::STRING,
+          ),
+        8 => array(
+          'var' => 'gatewayPublicAbstract',
+          'type' => TType::STRING,
+          ),
+        9 => array(
+          'var' => 'reviewProposalDescription',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
       }
+      if (isset($vals['gatewayApprovalStatus'])) {
+        $this->gatewayApprovalStatus = $vals['gatewayApprovalStatus'];
+      }
       if (isset($vals['gatewayName'])) {
         $this->gatewayName = $vals['gatewayName'];
       }
@@ -571,6 +627,18 @@ class Gateway {
       if (isset($vals['emailAddress'])) {
         $this->emailAddress = $vals['emailAddress'];
       }
+      if (isset($vals['gatewayAcronym'])) {
+        $this->gatewayAcronym = $vals['gatewayAcronym'];
+      }
+      if (isset($vals['gatewayURL'])) {
+        $this->gatewayURL = $vals['gatewayURL'];
+      }
+      if (isset($vals['gatewayPublicAbstract'])) {
+        $this->gatewayPublicAbstract = $vals['gatewayPublicAbstract'];
+      }
+      if (isset($vals['reviewProposalDescription'])) {
+        $this->reviewProposalDescription = $vals['reviewProposalDescription'];
+      }
     }
   }
 
@@ -601,26 +669,61 @@ class Gateway {
           }
           break;
         case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->gatewayApprovalStatus);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->gatewayName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 3:
+        case 4:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->domain);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 4:
+        case 5:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->emailAddress);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayAcronym);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayURL);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayPublicAbstract);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->reviewProposalDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -639,21 +742,46 @@ class Gateway {
       $xfer += $output->writeString($this->gatewayId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->gatewayApprovalStatus !== null) {
+      $xfer += $output->writeFieldBegin('gatewayApprovalStatus', TType::I32, 2);
+      $xfer += $output->writeI32($this->gatewayApprovalStatus);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->gatewayName !== null) {
-      $xfer += $output->writeFieldBegin('gatewayName', TType::STRING, 2);
+      $xfer += $output->writeFieldBegin('gatewayName', TType::STRING, 3);
       $xfer += $output->writeString($this->gatewayName);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->domain !== null) {
-      $xfer += $output->writeFieldBegin('domain', TType::STRING, 3);
+      $xfer += $output->writeFieldBegin('domain', TType::STRING, 4);
       $xfer += $output->writeString($this->domain);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->emailAddress !== null) {
-      $xfer += $output->writeFieldBegin('emailAddress', TType::STRING, 4);
+      $xfer += $output->writeFieldBegin('emailAddress', TType::STRING, 5);
       $xfer += $output->writeString($this->emailAddress);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->gatewayAcronym !== null) {
+      $xfer += $output->writeFieldBegin('gatewayAcronym', TType::STRING, 6);
+      $xfer += $output->writeString($this->gatewayAcronym);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayURL !== null) {
+      $xfer += $output->writeFieldBegin('gatewayURL', TType::STRING, 7);
+      $xfer += $output->writeString($this->gatewayURL);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayPublicAbstract !== null) {
+      $xfer += $output->writeFieldBegin('gatewayPublicAbstract', TType::STRING, 8);
+      $xfer += $output->writeString($this->gatewayPublicAbstract);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->reviewProposalDescription !== null) {
+      $xfer += $output->writeFieldBegin('reviewProposalDescription', TType::STRING, 9);
+      $xfer += $output->writeString($this->reviewProposalDescription);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py
index 9c3468c..fd7d4b8 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/user/ttypes.py
@@ -371,7 +371,6 @@ class UserProfile:
    - userId
    - emails
    - userName
-   - gatewayId
    - orcidId
    - phones
    - country
@@ -396,31 +395,29 @@ class UserProfile:
     (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, 'gatewayId', None, None, ), # 6
-    (7, TType.STRING, 'orcidId', None, None, ), # 7
-    (8, TType.LIST, 'phones', (TType.STRING,None), None, ), # 8
-    (9, TType.STRING, 'country', None, None, ), # 9
-    (10, TType.LIST, 'nationality', (TType.STRING,None), None, ), # 10
-    (11, TType.STRING, 'homeOrganization', None, None, ), # 11
-    (12, TType.STRING, 'orginationAffiliation', None, None, ), # 12
-    (13, TType.STRING, 'creationTime', None, None, ), # 13
-    (14, TType.STRING, 'lastAccessTime', None, None, ), # 14
-    (15, TType.STRING, 'validUntil', None, None, ), # 15
-    (16, TType.I32, 'State', None, None, ), # 16
-    (17, TType.STRING, 'comments', None, None, ), # 17
-    (18, TType.LIST, 'labeledURI', (TType.STRING,None), None, ), # 18
-    (19, TType.STRING, 'gpgKey', None, None, ), # 19
-    (20, TType.STRING, 'timeZone', None, None, ), # 20
-    (21, TType.STRUCT, 'nsfDemographics', (NSFDemographics, NSFDemographics.thrift_spec), None, ), # 21
+    (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, gatewayId=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,):
+  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.gatewayId = gatewayId
     self.orcidId = orcidId
     self.phones = phones
     self.country = country
@@ -478,15 +475,10 @@ class UserProfile:
           iprot.skip(ftype)
       elif fid == 6:
         if ftype == TType.STRING:
-          self.gatewayId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 7:
-        if ftype == TType.STRING:
           self.orcidId = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 8:
+      elif fid == 7:
         if ftype == TType.LIST:
           self.phones = []
           (_etype30, _size27) = iprot.readListBegin()
@@ -496,12 +488,12 @@ class UserProfile:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 9:
+      elif fid == 8:
         if ftype == TType.STRING:
           self.country = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 10:
+      elif fid == 9:
         if ftype == TType.LIST:
           self.nationality = []
           (_etype36, _size33) = iprot.readListBegin()
@@ -511,42 +503,42 @@ class UserProfile:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 11:
+      elif fid == 10:
         if ftype == TType.STRING:
           self.homeOrganization = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 12:
+      elif fid == 11:
         if ftype == TType.STRING:
           self.orginationAffiliation = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 13:
+      elif fid == 12:
         if ftype == TType.STRING:
           self.creationTime = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 14:
+      elif fid == 13:
         if ftype == TType.STRING:
           self.lastAccessTime = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 15:
+      elif fid == 14:
         if ftype == TType.STRING:
           self.validUntil = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 16:
+      elif fid == 15:
         if ftype == TType.I32:
           self.State = iprot.readI32()
         else:
           iprot.skip(ftype)
-      elif fid == 17:
+      elif fid == 16:
         if ftype == TType.STRING:
           self.comments = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 18:
+      elif fid == 17:
         if ftype == TType.LIST:
           self.labeledURI = []
           (_etype42, _size39) = iprot.readListBegin()
@@ -556,17 +548,17 @@ class UserProfile:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 19:
+      elif fid == 18:
         if ftype == TType.STRING:
           self.gpgKey = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 20:
+      elif fid == 19:
         if ftype == TType.STRING:
           self.timeZone = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 21:
+      elif fid == 20:
         if ftype == TType.STRUCT:
           self.nsfDemographics = NSFDemographics()
           self.nsfDemographics.read(iprot)
@@ -605,77 +597,73 @@ class UserProfile:
       oprot.writeFieldBegin('userName', TType.STRING, 5)
       oprot.writeString(self.userName)
       oprot.writeFieldEnd()
-    if self.gatewayId is not None:
-      oprot.writeFieldBegin('gatewayId', TType.STRING, 6)
-      oprot.writeString(self.gatewayId)
-      oprot.writeFieldEnd()
     if self.orcidId is not None:
-      oprot.writeFieldBegin('orcidId', TType.STRING, 7)
+      oprot.writeFieldBegin('orcidId', TType.STRING, 6)
       oprot.writeString(self.orcidId)
       oprot.writeFieldEnd()
     if self.phones is not None:
-      oprot.writeFieldBegin('phones', TType.LIST, 8)
+      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, 9)
+      oprot.writeFieldBegin('country', TType.STRING, 8)
       oprot.writeString(self.country)
       oprot.writeFieldEnd()
     if self.nationality is not None:
-      oprot.writeFieldBegin('nationality', TType.LIST, 10)
+      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, 11)
+      oprot.writeFieldBegin('homeOrganization', TType.STRING, 10)
       oprot.writeString(self.homeOrganization)
       oprot.writeFieldEnd()
     if self.orginationAffiliation is not None:
-      oprot.writeFieldBegin('orginationAffiliation', TType.STRING, 12)
+      oprot.writeFieldBegin('orginationAffiliation', TType.STRING, 11)
       oprot.writeString(self.orginationAffiliation)
       oprot.writeFieldEnd()
     if self.creationTime is not None:
-      oprot.writeFieldBegin('creationTime', TType.STRING, 13)
+      oprot.writeFieldBegin('creationTime', TType.STRING, 12)
       oprot.writeString(self.creationTime)
       oprot.writeFieldEnd()
     if self.lastAccessTime is not None:
-      oprot.writeFieldBegin('lastAccessTime', TType.STRING, 14)
+      oprot.writeFieldBegin('lastAccessTime', TType.STRING, 13)
       oprot.writeString(self.lastAccessTime)
       oprot.writeFieldEnd()
     if self.validUntil is not None:
-      oprot.writeFieldBegin('validUntil', TType.STRING, 15)
+      oprot.writeFieldBegin('validUntil', TType.STRING, 14)
       oprot.writeString(self.validUntil)
       oprot.writeFieldEnd()
     if self.State is not None:
-      oprot.writeFieldBegin('State', TType.I32, 16)
+      oprot.writeFieldBegin('State', TType.I32, 15)
       oprot.writeI32(self.State)
       oprot.writeFieldEnd()
     if self.comments is not None:
-      oprot.writeFieldBegin('comments', TType.STRING, 17)
+      oprot.writeFieldBegin('comments', TType.STRING, 16)
       oprot.writeString(self.comments)
       oprot.writeFieldEnd()
     if self.labeledURI is not None:
-      oprot.writeFieldBegin('labeledURI', TType.LIST, 18)
+      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, 19)
+      oprot.writeFieldBegin('gpgKey', TType.STRING, 18)
       oprot.writeString(self.gpgKey)
       oprot.writeFieldEnd()
     if self.timeZone is not None:
-      oprot.writeFieldBegin('timeZone', TType.STRING, 20)
+      oprot.writeFieldBegin('timeZone', TType.STRING, 19)
       oprot.writeString(self.timeZone)
       oprot.writeFieldEnd()
     if self.nsfDemographics is not None:
-      oprot.writeFieldBegin('nsfDemographics', TType.STRUCT, 21)
+      oprot.writeFieldBegin('nsfDemographics', TType.STRUCT, 20)
       self.nsfDemographics.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -708,7 +696,6 @@ class UserProfile:
     value = (value * 31) ^ hash(self.userId)
     value = (value * 31) ^ hash(self.emails)
     value = (value * 31) ^ hash(self.userName)
-    value = (value * 31) ^ hash(self.gatewayId)
     value = (value * 31) ^ hash(self.orcidId)
     value = (value * 31) ^ hash(self.phones)
     value = (value * 31) ^ hash(self.country)

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/ttypes.py
index 74678df..14e2d91 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/workspace/ttypes.py
@@ -18,6 +18,26 @@ 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
@@ -374,24 +394,39 @@ class Gateway:
   """
   Attributes:
    - gatewayId
+   - gatewayApprovalStatus
    - gatewayName
    - domain
    - emailAddress
+   - gatewayAcronym
+   - gatewayURL
+   - gatewayPublicAbstract
+   - reviewProposalDescription
   """
 
   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
+    (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
   )
 
-  def __init__(self, gatewayId=None, gatewayName=None, domain=None, emailAddress=None,):
+  def __init__(self, gatewayId=None, gatewayApprovalStatus=None, gatewayName=None, domain=None, emailAddress=None, gatewayAcronym=None, gatewayURL=None, gatewayPublicAbstract=None, reviewProposalDescription=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
 
   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:
@@ -408,20 +443,45 @@ class Gateway:
         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 == 3:
+      elif fid == 4:
         if ftype == TType.STRING:
           self.domain = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 4:
+      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)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -436,33 +496,60 @@ class Gateway:
       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, 2)
+      oprot.writeFieldBegin('gatewayName', TType.STRING, 3)
       oprot.writeString(self.gatewayName)
       oprot.writeFieldEnd()
     if self.domain is not None:
-      oprot.writeFieldBegin('domain', TType.STRING, 3)
+      oprot.writeFieldBegin('domain', TType.STRING, 4)
       oprot.writeString(self.domain)
       oprot.writeFieldEnd()
     if self.emailAddress is not None:
-      oprot.writeFieldBegin('emailAddress', TType.STRING, 4)
+      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()
     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)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
index 67f4495..ca0b765 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/ComponentStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-11")
 public class ComponentStatus implements org.apache.thrift.TBase<ComponentStatus, ComponentStatus._Fields>, java.io.Serializable, Cloneable, Comparable<ComponentStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComponentStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
index c0e2c31..b3ea9e9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/EdgeModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-11")
 public class EdgeModel implements org.apache.thrift.TBase<EdgeModel, EdgeModel._Fields>, java.io.Serializable, Cloneable, Comparable<EdgeModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("EdgeModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
index 2909325..be0ba4c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/NodeModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-11")
 public class NodeModel implements org.apache.thrift.TBase<NodeModel, NodeModel._Fields>, java.io.Serializable, Cloneable, Comparable<NodeModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("NodeModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
index ad292ab..8a06823 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/PortModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-11")
 public class PortModel implements org.apache.thrift.TBase<PortModel, PortModel._Fields>, java.io.Serializable, Cloneable, Comparable<PortModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PortModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
index 62de7a7..5d6655e 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-11")
 public class WorkflowModel implements org.apache.thrift.TBase<WorkflowModel, WorkflowModel._Fields>, java.io.Serializable, Cloneable, Comparable<WorkflowModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("WorkflowModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/034de76c/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
index 43830b2..e2332a3 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/WorkflowStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-06")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-11")
 public class WorkflowStatus implements org.apache.thrift.TBase<WorkflowStatus, WorkflowStatus._Fields>, java.io.Serializable, Cloneable, Comparable<WorkflowStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("WorkflowStatus");
 


Mime
View raw message