You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2017/05/23 14:21:35 UTC

[1/2] airavata-php-gateway git commit: Updating Thrift client stubs

Repository: airavata-php-gateway
Updated Branches:
  refs/heads/keycloak-integration 1a3956711 -> c62cb173c


Updating Thrift client stubs


Project: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/commit/5e50b51d
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/5e50b51d
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/5e50b51d

Branch: refs/heads/keycloak-integration
Commit: 5e50b51d89602e3bb0dea4cf8856613b5deba2d7
Parents: 1a39567
Author: Marcus Christie <ma...@iu.edu>
Authored: Mon May 22 16:27:06 2017 -0400
Committer: Marcus Christie <ma...@iu.edu>
Committed: Mon May 22 16:27:06 2017 -0400

----------------------------------------------------------------------
 app/libraries/Airavata/API/Airavata.php         | 466 +------------------
 .../Model/AppCatalog/AppDeployment/Types.php    |  25 +-
 .../Model/AppCatalog/ComputeResource/Types.php  | 140 +++++-
 app/libraries/Airavata/Model/User/Types.php     | 109 ++---
 .../Iam/Admin/Services/CPI/IamAdminServices.php |  70 ++-
 5 files changed, 250 insertions(+), 560 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e50b51d/app/libraries/Airavata/API/Airavata.php
----------------------------------------------------------------------
diff --git a/app/libraries/Airavata/API/Airavata.php b/app/libraries/Airavata/API/Airavata.php
index 23df7a4..9c20f39 100644
--- a/app/libraries/Airavata/API/Airavata.php
+++ b/app/libraries/Airavata/API/Airavata.php
@@ -4206,74 +4206,7 @@ interface AiravataIf {
   public function getAllUserProfilesInGateway(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $offset, $limit);
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param string $userName
-   * @param string $gatewayId
-   * @return \Airavata\Model\User\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.
-   * *
-   * * firstName, middleName, lastName:
-   * *  First and Last names as assertede by the user
-   * *
-   * * namePrefix, nameSuffix:
-   * *  prefix and suffix to the users name as asserted by the user
-   * *
-   * * 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
-   * *
-   * * timeZone:
-   * *  User’s preferred timezone - IANA Timezone Databases - http://www.iana.org/time-zones.
-   * *
-   * 
-   * @throws \Airavata\API\Error\InvalidRequestException
-   * @throws \Airavata\API\Error\AiravataClientException
-   * @throws \Airavata\API\Error\AiravataSystemException
-   * @throws \Airavata\API\Error\AuthorizationException
-   */
-  public function getUserProfileByName(\Airavata\Model\Security\AuthzToken $authzToken, $userName, $gatewayId);
-  /**
-   * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param string $userName
+   * @param string $userId
    * @param string $gatewayId
    * @return bool
    * @throws \Airavata\API\Error\InvalidRequestException
@@ -4281,7 +4214,7 @@ interface AiravataIf {
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function doesUserProfileExist(\Airavata\Model\Security\AuthzToken $authzToken, $userName, $gatewayId);
+  public function doesUserProfileExist(\Airavata\Model\Security\AuthzToken $authzToken, $userId, $gatewayId);
 }
 
 class AiravataClient implements \Airavata\API\AiravataIf {
@@ -15565,82 +15498,17 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getAllUserProfilesInGateway failed: unknown result");
   }
 
-  public function getUserProfileByName(\Airavata\Model\Security\AuthzToken $authzToken, $userName, $gatewayId)
-  {
-    $this->send_getUserProfileByName($authzToken, $userName, $gatewayId);
-    return $this->recv_getUserProfileByName();
-  }
-
-  public function send_getUserProfileByName(\Airavata\Model\Security\AuthzToken $authzToken, $userName, $gatewayId)
-  {
-    $args = new \Airavata\API\Airavata_getUserProfileByName_args();
-    $args->authzToken = $authzToken;
-    $args->userName = $userName;
-    $args->gatewayId = $gatewayId;
-    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
-    if ($bin_accel)
-    {
-      thrift_protocol_write_binary($this->output_, 'getUserProfileByName', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
-    }
-    else
-    {
-      $this->output_->writeMessageBegin('getUserProfileByName', TMessageType::CALL, $this->seqid_);
-      $args->write($this->output_);
-      $this->output_->writeMessageEnd();
-      $this->output_->getTransport()->flush();
-    }
-  }
-
-  public function recv_getUserProfileByName()
-  {
-    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
-    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_getUserProfileByName_result', $this->input_->isStrictRead());
-    else
-    {
-      $rseqid = 0;
-      $fname = null;
-      $mtype = 0;
-
-      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
-      if ($mtype == TMessageType::EXCEPTION) {
-        $x = new TApplicationException();
-        $x->read($this->input_);
-        $this->input_->readMessageEnd();
-        throw $x;
-      }
-      $result = new \Airavata\API\Airavata_getUserProfileByName_result();
-      $result->read($this->input_);
-      $this->input_->readMessageEnd();
-    }
-    if ($result->success !== null) {
-      return $result->success;
-    }
-    if ($result->ire !== null) {
-      throw $result->ire;
-    }
-    if ($result->ace !== null) {
-      throw $result->ace;
-    }
-    if ($result->ase !== null) {
-      throw $result->ase;
-    }
-    if ($result->ae !== null) {
-      throw $result->ae;
-    }
-    throw new \Exception("getUserProfileByName failed: unknown result");
-  }
-
-  public function doesUserProfileExist(\Airavata\Model\Security\AuthzToken $authzToken, $userName, $gatewayId)
+  public function doesUserProfileExist(\Airavata\Model\Security\AuthzToken $authzToken, $userId, $gatewayId)
   {
-    $this->send_doesUserProfileExist($authzToken, $userName, $gatewayId);
+    $this->send_doesUserProfileExist($authzToken, $userId, $gatewayId);
     return $this->recv_doesUserProfileExist();
   }
 
-  public function send_doesUserProfileExist(\Airavata\Model\Security\AuthzToken $authzToken, $userName, $gatewayId)
+  public function send_doesUserProfileExist(\Airavata\Model\Security\AuthzToken $authzToken, $userId, $gatewayId)
   {
     $args = new \Airavata\API\Airavata_doesUserProfileExist_args();
     $args->authzToken = $authzToken;
-    $args->userName = $userName;
+    $args->userId = $userId;
     $args->gatewayId = $gatewayId;
     $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
     if ($bin_accel)
@@ -69065,312 +68933,6 @@ class Airavata_getAllUserProfilesInGateway_result {
 
 }
 
-class Airavata_getUserProfileByName_args {
-  static $_TSPEC;
-
-  /**
-   * @var \Airavata\Model\Security\AuthzToken
-   */
-  public $authzToken = null;
-  /**
-   * @var string
-   */
-  public $userName = null;
-  /**
-   * @var string
-   */
-  public $gatewayId = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'authzToken',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Security\AuthzToken',
-          ),
-        2 => array(
-          'var' => 'userName',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['authzToken'])) {
-        $this->authzToken = $vals['authzToken'];
-      }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
-      }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'Airavata_getUserProfileByName_args';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
-            $xfer += $this->authzToken->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getUserProfileByName_args');
-    if ($this->authzToken !== null) {
-      if (!is_object($this->authzToken)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
-      $xfer += $this->authzToken->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
-      $xfer += $output->writeString($this->userName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class Airavata_getUserProfileByName_result {
-  static $_TSPEC;
-
-  /**
-   * @var \Airavata\Model\User\UserProfile
-   */
-  public $success = null;
-  /**
-   * @var \Airavata\API\Error\InvalidRequestException
-   */
-  public $ire = null;
-  /**
-   * @var \Airavata\API\Error\AiravataClientException
-   */
-  public $ace = null;
-  /**
-   * @var \Airavata\API\Error\AiravataSystemException
-   */
-  public $ase = null;
-  /**
-   * @var \Airavata\API\Error\AuthorizationException
-   */
-  public $ae = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\User\UserProfile',
-          ),
-        1 => array(
-          'var' => 'ire',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\InvalidRequestException',
-          ),
-        2 => array(
-          'var' => 'ace',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataClientException',
-          ),
-        3 => array(
-          'var' => 'ase',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AiravataSystemException',
-          ),
-        4 => array(
-          'var' => 'ae',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AuthorizationException',
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
-      if (isset($vals['ire'])) {
-        $this->ire = $vals['ire'];
-      }
-      if (isset($vals['ace'])) {
-        $this->ace = $vals['ace'];
-      }
-      if (isset($vals['ase'])) {
-        $this->ase = $vals['ase'];
-      }
-      if (isset($vals['ae'])) {
-        $this->ae = $vals['ae'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'Airavata_getUserProfileByName_result';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 0:
-          if ($ftype == TType::STRUCT) {
-            $this->success = new \Airavata\Model\User\UserProfile();
-            $xfer += $this->success->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->ire = new \Airavata\API\Error\InvalidRequestException();
-            $xfer += $this->ire->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->ace = new \Airavata\API\Error\AiravataClientException();
-            $xfer += $this->ace->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->ase = new \Airavata\API\Error\AiravataSystemException();
-            $xfer += $this->ase->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRUCT) {
-            $this->ae = new \Airavata\API\Error\AuthorizationException();
-            $xfer += $this->ae->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Airavata_getUserProfileByName_result');
-    if ($this->success !== null) {
-      if (!is_object($this->success)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
-      $xfer += $this->success->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ire !== null) {
-      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
-      $xfer += $this->ire->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ace !== null) {
-      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
-      $xfer += $this->ace->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ase !== null) {
-      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
-      $xfer += $this->ase->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ae !== null) {
-      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 4);
-      $xfer += $this->ae->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
 class Airavata_doesUserProfileExist_args {
   static $_TSPEC;
 
@@ -69381,7 +68943,7 @@ class Airavata_doesUserProfileExist_args {
   /**
    * @var string
    */
-  public $userName = null;
+  public $userId = null;
   /**
    * @var string
    */
@@ -69396,7 +68958,7 @@ class Airavata_doesUserProfileExist_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'userName',
+          'var' => 'userId',
           'type' => TType::STRING,
           ),
         3 => array(
@@ -69409,8 +68971,8 @@ class Airavata_doesUserProfileExist_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
+      if (isset($vals['userId'])) {
+        $this->userId = $vals['userId'];
       }
       if (isset($vals['gatewayId'])) {
         $this->gatewayId = $vals['gatewayId'];
@@ -69447,7 +69009,7 @@ class Airavata_doesUserProfileExist_args {
           break;
         case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
+            $xfer += $input->readString($this->userId);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -69480,9 +69042,9 @@ class Airavata_doesUserProfileExist_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
-      $xfer += $output->writeString($this->userName);
+    if ($this->userId !== null) {
+      $xfer += $output->writeFieldBegin('userId', TType::STRING, 2);
+      $xfer += $output->writeString($this->userId);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->gatewayId !== null) {

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e50b51d/app/libraries/Airavata/Model/AppCatalog/AppDeployment/Types.php
----------------------------------------------------------------------
diff --git a/app/libraries/Airavata/Model/AppCatalog/AppDeployment/Types.php b/app/libraries/Airavata/Model/AppCatalog/AppDeployment/Types.php
index 03d1121..abcb322 100644
--- a/app/libraries/Airavata/Model/AppCatalog/AppDeployment/Types.php
+++ b/app/libraries/Airavata/Model/AppCatalog/AppDeployment/Types.php
@@ -506,6 +506,10 @@ class ApplicationDeploymentDescription {
    */
   public $defaultCPUCount = null;
   /**
+   * @var int
+   */
+  public $defaultWalltime = null;
+  /**
    * @var bool
    */
   public $editableByUser = null;
@@ -604,6 +608,10 @@ class ApplicationDeploymentDescription {
           'type' => TType::I32,
           ),
         16 => array(
+          'var' => 'defaultWalltime',
+          'type' => TType::I32,
+          ),
+        17 => array(
           'var' => 'editableByUser',
           'type' => TType::BOOL,
           ),
@@ -655,6 +663,9 @@ class ApplicationDeploymentDescription {
       if (isset($vals['defaultCPUCount'])) {
         $this->defaultCPUCount = $vals['defaultCPUCount'];
       }
+      if (isset($vals['defaultWalltime'])) {
+        $this->defaultWalltime = $vals['defaultWalltime'];
+      }
       if (isset($vals['editableByUser'])) {
         $this->editableByUser = $vals['editableByUser'];
       }
@@ -852,6 +863,13 @@ class ApplicationDeploymentDescription {
           }
           break;
         case 16:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultWalltime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 17:
           if ($ftype == TType::BOOL) {
             $xfer += $input->readBool($this->editableByUser);
           } else {
@@ -1018,8 +1036,13 @@ class ApplicationDeploymentDescription {
       $xfer += $output->writeI32($this->defaultCPUCount);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->defaultWalltime !== null) {
+      $xfer += $output->writeFieldBegin('defaultWalltime', TType::I32, 16);
+      $xfer += $output->writeI32($this->defaultWalltime);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->editableByUser !== null) {
-      $xfer += $output->writeFieldBegin('editableByUser', TType::BOOL, 16);
+      $xfer += $output->writeFieldBegin('editableByUser', TType::BOOL, 17);
       $xfer += $output->writeBool($this->editableByUser);
       $xfer += $output->writeFieldEnd();
     }

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e50b51d/app/libraries/Airavata/Model/AppCatalog/ComputeResource/Types.php
----------------------------------------------------------------------
diff --git a/app/libraries/Airavata/Model/AppCatalog/ComputeResource/Types.php b/app/libraries/Airavata/Model/AppCatalog/ComputeResource/Types.php
index 86e6c5d..47e6e24 100644
--- a/app/libraries/Airavata/Model/AppCatalog/ComputeResource/Types.php
+++ b/app/libraries/Airavata/Model/AppCatalog/ComputeResource/Types.php
@@ -539,6 +539,14 @@ class BatchQueue {
    */
   public $defaultCPUCount = null;
   /**
+   * @var int
+   */
+  public $defaultWalltime = null;
+  /**
+   * @var string
+   */
+  public $queueSpecificMacros = null;
+  /**
    * @var bool
    */
   public $isDefaultQueue = null;
@@ -587,6 +595,14 @@ class BatchQueue {
           'type' => TType::I32,
           ),
         11 => array(
+          'var' => 'defaultWalltime',
+          'type' => TType::I32,
+          ),
+        12 => array(
+          'var' => 'queueSpecificMacros',
+          'type' => TType::STRING,
+          ),
+        13 => array(
           'var' => 'isDefaultQueue',
           'type' => TType::BOOL,
           ),
@@ -623,6 +639,12 @@ class BatchQueue {
       if (isset($vals['defaultCPUCount'])) {
         $this->defaultCPUCount = $vals['defaultCPUCount'];
       }
+      if (isset($vals['defaultWalltime'])) {
+        $this->defaultWalltime = $vals['defaultWalltime'];
+      }
+      if (isset($vals['queueSpecificMacros'])) {
+        $this->queueSpecificMacros = $vals['queueSpecificMacros'];
+      }
       if (isset($vals['isDefaultQueue'])) {
         $this->isDefaultQueue = $vals['isDefaultQueue'];
       }
@@ -719,6 +741,20 @@ class BatchQueue {
           }
           break;
         case 11:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultWalltime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->queueSpecificMacros);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
           if ($ftype == TType::BOOL) {
             $xfer += $input->readBool($this->isDefaultQueue);
           } else {
@@ -788,8 +824,18 @@ class BatchQueue {
       $xfer += $output->writeI32($this->defaultCPUCount);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->defaultWalltime !== null) {
+      $xfer += $output->writeFieldBegin('defaultWalltime', TType::I32, 11);
+      $xfer += $output->writeI32($this->defaultWalltime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->queueSpecificMacros !== null) {
+      $xfer += $output->writeFieldBegin('queueSpecificMacros', TType::STRING, 12);
+      $xfer += $output->writeString($this->queueSpecificMacros);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->isDefaultQueue !== null) {
-      $xfer += $output->writeFieldBegin('isDefaultQueue', TType::BOOL, 11);
+      $xfer += $output->writeFieldBegin('isDefaultQueue', TType::BOOL, 13);
       $xfer += $output->writeBool($this->isDefaultQueue);
       $xfer += $output->writeFieldEnd();
     }
@@ -1885,6 +1931,22 @@ class ComputeResourceDescription {
    * @var string
    */
   public $gatewayUsageExecutable = null;
+  /**
+   * @var int
+   */
+  public $cpusPerNode = null;
+  /**
+   * @var int
+   */
+  public $defaultNodeCount = null;
+  /**
+   * @var int
+   */
+  public $defaultCPUCount = null;
+  /**
+   * @var int
+   */
+  public $defaultWalltime = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -1976,6 +2038,22 @@ class ComputeResourceDescription {
           'var' => 'gatewayUsageExecutable',
           'type' => TType::STRING,
           ),
+        15 => array(
+          'var' => 'cpusPerNode',
+          'type' => TType::I32,
+          ),
+        16 => array(
+          'var' => 'defaultNodeCount',
+          'type' => TType::I32,
+          ),
+        17 => array(
+          'var' => 'defaultCPUCount',
+          'type' => TType::I32,
+          ),
+        18 => array(
+          'var' => 'defaultWalltime',
+          'type' => TType::I32,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -2021,6 +2099,18 @@ class ComputeResourceDescription {
       if (isset($vals['gatewayUsageExecutable'])) {
         $this->gatewayUsageExecutable = $vals['gatewayUsageExecutable'];
       }
+      if (isset($vals['cpusPerNode'])) {
+        $this->cpusPerNode = $vals['cpusPerNode'];
+      }
+      if (isset($vals['defaultNodeCount'])) {
+        $this->defaultNodeCount = $vals['defaultNodeCount'];
+      }
+      if (isset($vals['defaultCPUCount'])) {
+        $this->defaultCPUCount = $vals['defaultCPUCount'];
+      }
+      if (isset($vals['defaultWalltime'])) {
+        $this->defaultWalltime = $vals['defaultWalltime'];
+      }
     }
   }
 
@@ -2207,6 +2297,34 @@ class ComputeResourceDescription {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 15:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->cpusPerNode);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 16:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultNodeCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 17:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultCPUCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 18:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultWalltime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -2363,6 +2481,26 @@ class ComputeResourceDescription {
       $xfer += $output->writeString($this->gatewayUsageExecutable);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->cpusPerNode !== null) {
+      $xfer += $output->writeFieldBegin('cpusPerNode', TType::I32, 15);
+      $xfer += $output->writeI32($this->cpusPerNode);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->defaultNodeCount !== null) {
+      $xfer += $output->writeFieldBegin('defaultNodeCount', TType::I32, 16);
+      $xfer += $output->writeI32($this->defaultNodeCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->defaultCPUCount !== null) {
+      $xfer += $output->writeFieldBegin('defaultCPUCount', TType::I32, 17);
+      $xfer += $output->writeI32($this->defaultCPUCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->defaultWalltime !== null) {
+      $xfer += $output->writeFieldBegin('defaultWalltime', TType::I32, 18);
+      $xfer += $output->writeI32($this->defaultWalltime);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e50b51d/app/libraries/Airavata/Model/User/Types.php
----------------------------------------------------------------------
diff --git a/app/libraries/Airavata/Model/User/Types.php b/app/libraries/Airavata/Model/User/Types.php
index 1ebd5db..493b615 100644
--- a/app/libraries/Airavata/Model/User/Types.php
+++ b/app/libraries/Airavata/Model/User/Types.php
@@ -499,10 +499,6 @@ class UserProfile {
   /**
    * @var string
    */
-  public $userName = null;
-  /**
-   * @var string
-   */
   public $orcidId = null;
   /**
    * @var string[]
@@ -609,14 +605,10 @@ class UserProfile {
           'type' => TType::STRING,
           ),
         11 => array(
-          'var' => 'userName',
-          'type' => TType::STRING,
-          ),
-        12 => array(
           'var' => 'orcidId',
           'type' => TType::STRING,
           ),
-        13 => array(
+        12 => array(
           'var' => 'phones',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -624,11 +616,11 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        14 => array(
+        13 => array(
           'var' => 'country',
           'type' => TType::STRING,
           ),
-        15 => array(
+        14 => array(
           'var' => 'nationality',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -636,35 +628,35 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        16 => array(
+        15 => array(
           'var' => 'homeOrganization',
           'type' => TType::STRING,
           ),
-        17 => array(
+        16 => array(
           'var' => 'orginationAffiliation',
           'type' => TType::STRING,
           ),
-        18 => array(
+        17 => array(
           'var' => 'creationTime',
           'type' => TType::I64,
           ),
-        19 => array(
+        18 => array(
           'var' => 'lastAccessTime',
           'type' => TType::I64,
           ),
-        20 => array(
+        19 => array(
           'var' => 'validUntil',
           'type' => TType::I64,
           ),
-        21 => array(
+        20 => array(
           'var' => 'State',
           'type' => TType::I32,
           ),
-        22 => array(
+        21 => array(
           'var' => 'comments',
           'type' => TType::STRING,
           ),
-        23 => array(
+        22 => array(
           'var' => 'labeledURI',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -672,15 +664,15 @@ class UserProfile {
             'type' => TType::STRING,
             ),
           ),
-        24 => array(
+        23 => array(
           'var' => 'gpgKey',
           'type' => TType::STRING,
           ),
-        25 => array(
+        24 => array(
           'var' => 'timeZone',
           'type' => TType::STRING,
           ),
-        26 => array(
+        25 => array(
           'var' => 'nsfDemographics',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\User\NSFDemographics',
@@ -718,9 +710,6 @@ class UserProfile {
       if (isset($vals['nameSuffix'])) {
         $this->nameSuffix = $vals['nameSuffix'];
       }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
-      }
       if (isset($vals['orcidId'])) {
         $this->orcidId = $vals['orcidId'];
       }
@@ -870,19 +859,12 @@ class UserProfile {
           break;
         case 11:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 12:
-          if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->orcidId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 13:
+        case 12:
           if ($ftype == TType::LST) {
             $this->phones = array();
             $_size27 = 0;
@@ -899,14 +881,14 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 14:
+        case 13:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->country);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 15:
+        case 14:
           if ($ftype == TType::LST) {
             $this->nationality = array();
             $_size33 = 0;
@@ -923,56 +905,56 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 16:
+        case 15:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->homeOrganization);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 17:
+        case 16:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->orginationAffiliation);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 18:
+        case 17:
           if ($ftype == TType::I64) {
             $xfer += $input->readI64($this->creationTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 19:
+        case 18:
           if ($ftype == TType::I64) {
             $xfer += $input->readI64($this->lastAccessTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 20:
+        case 19:
           if ($ftype == TType::I64) {
             $xfer += $input->readI64($this->validUntil);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 21:
+        case 20:
           if ($ftype == TType::I32) {
             $xfer += $input->readI32($this->State);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 22:
+        case 21:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->comments);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 23:
+        case 22:
           if ($ftype == TType::LST) {
             $this->labeledURI = array();
             $_size39 = 0;
@@ -989,21 +971,21 @@ class UserProfile {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 24:
+        case 23:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->gpgKey);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 25:
+        case 24:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->timeZone);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 26:
+        case 25:
           if ($ftype == TType::STRUCT) {
             $this->nsfDemographics = new \Airavata\Model\User\NSFDemographics();
             $xfer += $this->nsfDemographics->read($input);
@@ -1086,13 +1068,8 @@ class UserProfile {
       $xfer += $output->writeString($this->nameSuffix);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 11);
-      $xfer += $output->writeString($this->userName);
-      $xfer += $output->writeFieldEnd();
-    }
     if ($this->orcidId !== null) {
-      $xfer += $output->writeFieldBegin('orcidId', TType::STRING, 12);
+      $xfer += $output->writeFieldBegin('orcidId', TType::STRING, 11);
       $xfer += $output->writeString($this->orcidId);
       $xfer += $output->writeFieldEnd();
     }
@@ -1100,7 +1077,7 @@ class UserProfile {
       if (!is_array($this->phones)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('phones', TType::LST, 13);
+      $xfer += $output->writeFieldBegin('phones', TType::LST, 12);
       {
         $output->writeListBegin(TType::STRING, count($this->phones));
         {
@@ -1114,7 +1091,7 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->country !== null) {
-      $xfer += $output->writeFieldBegin('country', TType::STRING, 14);
+      $xfer += $output->writeFieldBegin('country', TType::STRING, 13);
       $xfer += $output->writeString($this->country);
       $xfer += $output->writeFieldEnd();
     }
@@ -1122,7 +1099,7 @@ class UserProfile {
       if (!is_array($this->nationality)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('nationality', TType::LST, 15);
+      $xfer += $output->writeFieldBegin('nationality', TType::LST, 14);
       {
         $output->writeListBegin(TType::STRING, count($this->nationality));
         {
@@ -1136,37 +1113,37 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->homeOrganization !== null) {
-      $xfer += $output->writeFieldBegin('homeOrganization', TType::STRING, 16);
+      $xfer += $output->writeFieldBegin('homeOrganization', TType::STRING, 15);
       $xfer += $output->writeString($this->homeOrganization);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->orginationAffiliation !== null) {
-      $xfer += $output->writeFieldBegin('orginationAffiliation', TType::STRING, 17);
+      $xfer += $output->writeFieldBegin('orginationAffiliation', TType::STRING, 16);
       $xfer += $output->writeString($this->orginationAffiliation);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->creationTime !== null) {
-      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 18);
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 17);
       $xfer += $output->writeI64($this->creationTime);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->lastAccessTime !== null) {
-      $xfer += $output->writeFieldBegin('lastAccessTime', TType::I64, 19);
+      $xfer += $output->writeFieldBegin('lastAccessTime', TType::I64, 18);
       $xfer += $output->writeI64($this->lastAccessTime);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->validUntil !== null) {
-      $xfer += $output->writeFieldBegin('validUntil', TType::I64, 20);
+      $xfer += $output->writeFieldBegin('validUntil', TType::I64, 19);
       $xfer += $output->writeI64($this->validUntil);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->State !== null) {
-      $xfer += $output->writeFieldBegin('State', TType::I32, 21);
+      $xfer += $output->writeFieldBegin('State', TType::I32, 20);
       $xfer += $output->writeI32($this->State);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->comments !== null) {
-      $xfer += $output->writeFieldBegin('comments', TType::STRING, 22);
+      $xfer += $output->writeFieldBegin('comments', TType::STRING, 21);
       $xfer += $output->writeString($this->comments);
       $xfer += $output->writeFieldEnd();
     }
@@ -1174,7 +1151,7 @@ class UserProfile {
       if (!is_array($this->labeledURI)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('labeledURI', TType::LST, 23);
+      $xfer += $output->writeFieldBegin('labeledURI', TType::LST, 22);
       {
         $output->writeListBegin(TType::STRING, count($this->labeledURI));
         {
@@ -1188,12 +1165,12 @@ class UserProfile {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->gpgKey !== null) {
-      $xfer += $output->writeFieldBegin('gpgKey', TType::STRING, 24);
+      $xfer += $output->writeFieldBegin('gpgKey', TType::STRING, 23);
       $xfer += $output->writeString($this->gpgKey);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->timeZone !== null) {
-      $xfer += $output->writeFieldBegin('timeZone', TType::STRING, 25);
+      $xfer += $output->writeFieldBegin('timeZone', TType::STRING, 24);
       $xfer += $output->writeString($this->timeZone);
       $xfer += $output->writeFieldEnd();
     }
@@ -1201,7 +1178,7 @@ class UserProfile {
       if (!is_object($this->nsfDemographics)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('nsfDemographics', TType::STRUCT, 26);
+      $xfer += $output->writeFieldBegin('nsfDemographics', TType::STRUCT, 25);
       $xfer += $this->nsfDemographics->write($output);
       $xfer += $output->writeFieldEnd();
     }

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e50b51d/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
----------------------------------------------------------------------
diff --git a/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php b/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
index 9bf9a83..a6cb9ff 100644
--- a/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
+++ b/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
@@ -54,14 +54,14 @@ interface IamAdminServicesIf {
   public function enableUser(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\User\UserProfile $userDetails, \Airavata\Model\Credential\Store\PasswordCredential $isRealmAdminCredentials);
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param \Airavata\Model\User\UserProfile $userDetails
-   * @param \Airavata\Model\Credential\Store\PasswordCredential $isRealmAdminCredentials
+   * @param string $tenantId
+   * @param string $username
    * @param string $newPassword
    * @return bool
    * @throws \Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function resetUserPassword(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\User\UserProfile $userDetails, \Airavata\Model\Credential\Store\PasswordCredential $isRealmAdminCredentials, $newPassword);
+  public function resetUserPassword(\Airavata\Model\Security\AuthzToken $authzToken, $tenantId, $username, $newPassword);
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayID
@@ -321,18 +321,18 @@ class IamAdminServicesClient implements \Airavata\Service\Iam\Admin\Services\CPI
     throw new \Exception("enableUser failed: unknown result");
   }
 
-  public function resetUserPassword(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\User\UserProfile $userDetails, \Airavata\Model\Credential\Store\PasswordCredential $isRealmAdminCredentials, $newPassword)
+  public function resetUserPassword(\Airavata\Model\Security\AuthzToken $authzToken, $tenantId, $username, $newPassword)
   {
-    $this->send_resetUserPassword($authzToken, $userDetails, $isRealmAdminCredentials, $newPassword);
+    $this->send_resetUserPassword($authzToken, $tenantId, $username, $newPassword);
     return $this->recv_resetUserPassword();
   }
 
-  public function send_resetUserPassword(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\User\UserProfile $userDetails, \Airavata\Model\Credential\Store\PasswordCredential $isRealmAdminCredentials, $newPassword)
+  public function send_resetUserPassword(\Airavata\Model\Security\AuthzToken $authzToken, $tenantId, $username, $newPassword)
   {
     $args = new \Airavata\Service\Iam\Admin\Services\CPI\IamAdminServices_resetUserPassword_args();
     $args->authzToken = $authzToken;
-    $args->userDetails = $userDetails;
-    $args->isRealmAdminCredentials = $isRealmAdminCredentials;
+    $args->tenantId = $tenantId;
+    $args->username = $username;
     $args->newPassword = $newPassword;
     $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
     if ($bin_accel)
@@ -1470,13 +1470,13 @@ class IamAdminServices_resetUserPassword_args {
    */
   public $authzToken = null;
   /**
-   * @var \Airavata\Model\User\UserProfile
+   * @var string
    */
-  public $userDetails = null;
+  public $tenantId = null;
   /**
-   * @var \Airavata\Model\Credential\Store\PasswordCredential
+   * @var string
    */
-  public $isRealmAdminCredentials = null;
+  public $username = null;
   /**
    * @var string
    */
@@ -1491,14 +1491,12 @@ class IamAdminServices_resetUserPassword_args {
           'class' => '\Airavata\Model\Security\AuthzToken',
           ),
         2 => array(
-          'var' => 'userDetails',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\User\UserProfile',
+          'var' => 'tenantId',
+          'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'isRealmAdminCredentials',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Credential\Store\PasswordCredential',
+          'var' => 'username',
+          'type' => TType::STRING,
           ),
         4 => array(
           'var' => 'newPassword',
@@ -1510,11 +1508,11 @@ class IamAdminServices_resetUserPassword_args {
       if (isset($vals['authzToken'])) {
         $this->authzToken = $vals['authzToken'];
       }
-      if (isset($vals['userDetails'])) {
-        $this->userDetails = $vals['userDetails'];
+      if (isset($vals['tenantId'])) {
+        $this->tenantId = $vals['tenantId'];
       }
-      if (isset($vals['isRealmAdminCredentials'])) {
-        $this->isRealmAdminCredentials = $vals['isRealmAdminCredentials'];
+      if (isset($vals['username'])) {
+        $this->username = $vals['username'];
       }
       if (isset($vals['newPassword'])) {
         $this->newPassword = $vals['newPassword'];
@@ -1550,17 +1548,15 @@ class IamAdminServices_resetUserPassword_args {
           }
           break;
         case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->userDetails = new \Airavata\Model\User\UserProfile();
-            $xfer += $this->userDetails->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->tenantId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->isRealmAdminCredentials = new \Airavata\Model\Credential\Store\PasswordCredential();
-            $xfer += $this->isRealmAdminCredentials->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->username);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -1593,20 +1589,14 @@ class IamAdminServices_resetUserPassword_args {
       $xfer += $this->authzToken->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userDetails !== null) {
-      if (!is_object($this->userDetails)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('userDetails', TType::STRUCT, 2);
-      $xfer += $this->userDetails->write($output);
+    if ($this->tenantId !== null) {
+      $xfer += $output->writeFieldBegin('tenantId', TType::STRING, 2);
+      $xfer += $output->writeString($this->tenantId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->isRealmAdminCredentials !== null) {
-      if (!is_object($this->isRealmAdminCredentials)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('isRealmAdminCredentials', TType::STRUCT, 3);
-      $xfer += $this->isRealmAdminCredentials->write($output);
+    if ($this->username !== null) {
+      $xfer += $output->writeFieldBegin('username', TType::STRING, 3);
+      $xfer += $output->writeString($this->username);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->newPassword !== null) {


[2/2] airavata-php-gateway git commit: AIRAVATA-2342 implement reset password

Posted by ma...@apache.org.
AIRAVATA-2342 implement reset password


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

Branch: refs/heads/keycloak-integration
Commit: c62cb173c00e6c5cec1a4fad75f3fc13478e1f03
Parents: 5e50b51
Author: Marcus Christie <ma...@iu.edu>
Authored: Mon May 22 16:31:49 2017 -0400
Committer: Marcus Christie <ma...@iu.edu>
Committed: Mon May 22 16:31:49 2017 -0400

----------------------------------------------------------------------
 app/controllers/AccountController.php           | 86 +++++++++-----------
 app/libraries/EmailUtilities.php                | 12 ++-
 app/libraries/Keycloak/Keycloak.php             |  6 +-
 .../Keycloak/KeycloakServiceProvider.php        |  4 +-
 app/views/account/reset-password.blade.php      |  2 +-
 5 files changed, 53 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/c62cb173/app/controllers/AccountController.php
----------------------------------------------------------------------
diff --git a/app/controllers/AccountController.php b/app/controllers/AccountController.php
index 8e54d42..7698ad3 100644
--- a/app/controllers/AccountController.php
+++ b/app/controllers/AccountController.php
@@ -2,6 +2,8 @@
 
 class AccountController extends BaseController
 {
+    const PASSWORD_VALIDATION = "required|min:6|max:48|regex:/^.*(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@!$#*]).*$/";
+    const PASSWORD_VALIDATION_MESSAGE = "Password needs to contain at least (a) One lower case letter (b) One Upper case letter and (c) One number (d) One of the following special characters - !@#$&*";
 
     public function __construct()
     {
@@ -17,13 +19,13 @@ class AccountController extends BaseController
     {
         $rules = array(
             "username" => "required|min:6",
-            "password" => "required|min:6|max:48|regex:/^.*(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@!$#*]).*$/",
+            "password" => self::PASSWORD_VALIDATION,
             "confirm_password" => "required|same:password",
             "email" => "required|email",
         );
 
         $messages = array(
-            'password.regex' => 'Password needs to contain at least (a) One lower case letter (b) One Upper case letter and (c) One number (d) One of the following special characters - !@#$&*',
+            'password.regex' => self::PASSWORD_VALIDATION_MESSAGE,
         );
 
         $validator = Validator::make(Input::all(), $rules, $messages);
@@ -273,27 +275,13 @@ class AccountController extends BaseController
             CommonUtilities::print_error_message("Please provide a valid username");
             return View::make("account/forgot-password");
         }else{
-            $wsisConfig = Config::get('pga_config.wsis');
-            if( $wsisConfig['tenant-domain'] == "")
-                $username = $username;
-            else
-                $username = $username . "@" . $wsisConfig['tenant-domain'];
             try{
-                $key = WSIS::validateUser(Input::get("userAnswer"),Input::get("imagePath"),Input::get("secretKey"), $username);
-                if(!empty($key)){
-                    $result = WSIS::sendPasswordResetNotification($username, $key);
-                    if($result===true){
-                        CommonUtilities::print_success_message("Password reset notification was sent to your email account");
-                        return View::make("home");
-                    }else{
-                        CommonUtilities::print_error_message("Failed to send password reset notification email");
-                        return View::make("home");
-                    }
-                }else{
-                    CommonUtilities::print_error_message("Failed to validate the given username");
-                    return View::make("account/forgot-password");
-                }
+                $user_profile = Keycloak::getUserProfile($username);
+                EmailUtilities::sendPasswordResetEmail($username, $user_profile["firstname"], $user_profile["lastname"], $user_profile["email"]);
+                CommonUtilities::print_success_message("Password reset notification was sent to your email account");
+                return View::make("home");
             }catch (Exception $ex){
+                Log::error($ex);
                 CommonUtilities::print_error_message("Password reset operation failed");
                 return View::make("home");
             }
@@ -328,28 +316,13 @@ class AccountController extends BaseController
 
     public function resetPassword()
     {
-        $confirmation = Input::get("confirmation");
-        $username = Input::get("username");
-        if(empty($username) || empty($confirmation)){
+        $code = Input::get("code", Input::old("code"));
+        $username = Input::get("username", Input::old("username"));
+        if(empty($username) || empty($code)){
             return View::make("home");
         }else{
-            $wsisConfig = Config::get('pga_config.wsis');
-            if( $wsisConfig['tenant-domain'] == "")
-                $username = $username;
-            else
-                $username = $username . "@" . $wsisConfig['tenant-domain'];
-            try{
-                $key = WSIS::validateConfirmationCode($username, $confirmation);
-                if(!empty($key)){
-                    return View::make("account/reset-password", array("key" => $key, "username"=>$username));
-                }else{
-                    return View::make("home");
-                }
-            }catch (Exception $e){
-                return View::make("home");
-            }
+            return View::make("account/reset-password", array("code" => $code, "username"=>$username));
         }
-
     }
 
     public function confirmAccountCreation()
@@ -393,7 +366,9 @@ class AccountController extends BaseController
         $mail = new PHPMailer;
 
         $mail->isSMTP();
-        $mail->SMTPDebug = 3;
+        // Note: setting SMTPDebug will cause output to be dumped into the
+        // response, so only enable for testing purposes
+        // $mail->SMTPDebug = 3;
         $mail->Host = Config::get('pga_config.portal')['portal-smtp-server-host'];
 
         $mail->SMTPAuth = true;
@@ -434,33 +409,46 @@ class AccountController extends BaseController
     public function resetPasswordSubmit()
     {
         $rules = array(
-            "new_password" => "required|min:6",
+            "new_password" => self::PASSWORD_VALIDATION,
             "confirm_new_password" => "required|same:new_password",
         );
+        $messages = array(
+            'password.regex' => self::PASSWORD_VALIDATION_MESSAGE,
+        );
 
-        $validator = Validator::make(Input::all(), $rules);
+        $validator = Validator::make(Input::all(), $rules, $messages);
         if ($validator->fails()) {
+            Log::debug("validation failed", array($validator->messages()));
             return Redirect::to("reset-password")
-                ->withInput(Input::except('new_password', 'confirm)new_password'))
+                ->withInput(Input::except('new_password', 'confirm_new_password'))
                 ->withErrors($validator);
         }
 
-        $key =  $_POST['key'];
+        $code =  $_POST['code'];
         $username =  $_POST['username'];
         $new_password =  $_POST['new_password'];
 
         try{
-            $result = WSIS::resetPassword($username, $new_password, $key);
+            $verified = EmailUtilities::verifyPasswordResetCode($username, $code);
+            if (!$verified){
+                CommonUtilities::print_error_message("Resetting user password operation failed. Please request to reset user password again.");
+                return View::make("home");
+            }
+
+            $admin_authz_token = Keycloak::getAdminAuthzToken();
+            $tenant_id = Config::get('pga_config.wsis')['tenant-domain'];
+
+            $result = IamAdminServices::resetUserPassword($admin_authz_token, $tenant_id, $username, $new_password);
             if($result){
                 CommonUtilities::print_success_message("User password was reset successfully");
-                return View::make("account/login");
+                return View::make("login");
             }else{
                 CommonUtilities::print_error_message("Resetting user password operation failed");
-                return View::make("account/home");
+                return View::make("home");
             }
         }catch (Exception $e){
             CommonUtilities::print_error_message("Resetting user password operation failed");
-            return View::make("account/home");
+            return View::make("home");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/c62cb173/app/libraries/EmailUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/EmailUtilities.php b/app/libraries/EmailUtilities.php
index c2d6741..541d9f2 100644
--- a/app/libraries/EmailUtilities.php
+++ b/app/libraries/EmailUtilities.php
@@ -5,7 +5,8 @@ class EmailUtilities
 {
 
     public static function sendVerifyEmailAccount($username, $firstName, $lastName, $email){
-        $validTime = Config::get('pga_config.portal')['mail-verify-code-valid-time'];
+        $portalConfig = Config::get('pga_config.portal');
+        $validTime = isset($portalConfig['mail-verify-code-valid-time']) ? $portalConfig['mail-verify-code-valid-time'] : 30;
         $code = uniqid();
         Cache::put('PGA-VERIFY-EMAIL-' . $username, $code, $validTime);
 
@@ -32,7 +33,8 @@ class EmailUtilities
     }
 
     public static function sendPasswordResetEmail($username, $firstName, $lastName, $email){
-        $validTime = Config::get('pga_config.portal')['mail-verify-code-valid-time'];
+        $portalConfig = Config::get('pga_config.portal');
+        $validTime = isset($portalConfig['mail-verify-code-valid-time']) ? $portalConfig['mail-verify-code-valid-time'] : 30;
         $code = uniqid();
         Cache::put('PGA-RESET-PASSWORD-' . $username, $code, $validTime);
 
@@ -40,7 +42,7 @@ class EmailUtilities
         $subject = $emailTemplates->password_reset->subject;
         $body = trim(implode($emailTemplates->password_reset->body));
 
-        $body = str_replace("\$url", URL::to('/'). '/resetPassword?username=' . $username . '&code='.$code, $body);
+        $body = str_replace("\$url", URL::to('/'). '/reset-password?username=' . urlencode($username) . '&code='.urlencode($code), $body);
         $body = str_replace("\$firstName", $firstName, $body);
         $body = str_replace("\$lastName", $lastName, $body);
         $body = str_replace("\$validTime", $validTime, $body);
@@ -63,7 +65,9 @@ class EmailUtilities
         $mail = new PHPMailer();
 
         $mail->isSMTP();
-        $mail->SMTPDebug = 3;
+        // Note: setting SMTPDebug will cause output to be dumped into the
+        // response, so only enable for testing purposes
+        // $mail->SMTPDebug = 3;
         $mail->Host = Config::get('pga_config.portal')['portal-smtp-server-host'];
 
         $mail->SMTPAuth = true;

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/c62cb173/app/libraries/Keycloak/Keycloak.php
----------------------------------------------------------------------
diff --git a/app/libraries/Keycloak/Keycloak.php b/app/libraries/Keycloak/Keycloak.php
index dfa8f0c..6a7ecad 100644
--- a/app/libraries/Keycloak/Keycloak.php
+++ b/app/libraries/Keycloak/Keycloak.php
@@ -24,6 +24,7 @@ class Keycloak {
     private $base_endpoint_url;
     private $admin_username;
     private $admin_password;
+    private $gateway_id;
 
     // API clients
     private $role_mapper;
@@ -34,7 +35,7 @@ class Keycloak {
      * Constructor
      *
      */
-    public function __construct($realm, $openid_connect_discovery_url, $client_id, $client_secret, $callback_url, $cafile_path, $verify_peer, $base_endpoint_url, $admin_username, $admin_password) {
+    public function __construct($realm, $openid_connect_discovery_url, $client_id, $client_secret, $callback_url, $cafile_path, $verify_peer, $base_endpoint_url, $admin_username, $admin_password, $gateway_id) {
 
         $this->realm = $realm;
         $this->openid_connect_discovery_url = $openid_connect_discovery_url;
@@ -46,6 +47,7 @@ class Keycloak {
         $this->base_endpoint_url = $base_endpoint_url;
         $this->admin_username = $admin_username;
         $this->admin_password = $admin_password;
+        $this->gateway_id = $gateway_id;
 
         $this->role_mapper = new RoleMapper($base_endpoint_url, $admin_username, $admin_password, $verify_peer);
         $this->roles = new Roles($base_endpoint_url, $admin_username, $admin_password, $verify_peer);
@@ -402,7 +404,7 @@ class Keycloak {
         $access_token = KeycloakUtil::getAPIAccessToken($this->base_endpoint_url, $this->realm, $this->admin_username, $this->admin_password, $this->verify_peer);
         $authzToken = new \Airavata\Model\Security\AuthzToken();
         $authzToken->accessToken = $access_token;
-        $authzToken->claimsMap['gatewayID'] = $this->realm;
+        $authzToken->claimsMap['gatewayID'] = $this->gateway_id;
         $authzToken->claimsMap['userName'] = $this->admin_username;
         return $authzToken;
     }

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/c62cb173/app/libraries/Keycloak/KeycloakServiceProvider.php
----------------------------------------------------------------------
diff --git a/app/libraries/Keycloak/KeycloakServiceProvider.php b/app/libraries/Keycloak/KeycloakServiceProvider.php
index 530d446..14971fd 100644
--- a/app/libraries/Keycloak/KeycloakServiceProvider.php
+++ b/app/libraries/Keycloak/KeycloakServiceProvider.php
@@ -33,6 +33,7 @@ class KeycloakServiceProvider extends ServiceProvider {
         $this->app['keycloak'] = $this->app->share(function($app)
         {
             $identityServerConfig = Config::get('pga_config.wsis');
+            $airavataConfig = Config::get('pga_config.airavata');
             return new Keycloak(
                 $identityServerConfig['tenant-domain'],
                 // TODO: we can derive this from tenant-domain and service-url
@@ -44,7 +45,8 @@ class KeycloakServiceProvider extends ServiceProvider {
                 $identityServerConfig['verify-peer'],
                 $identityServerConfig['service-url'],
                 $identityServerConfig['admin-username'],
-                $identityServerConfig['admin-password']
+                $identityServerConfig['admin-password'],
+                $airavataConfig['gateway-id']
             );
         });
 

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/c62cb173/app/views/account/reset-password.blade.php
----------------------------------------------------------------------
diff --git a/app/views/account/reset-password.blade.php b/app/views/account/reset-password.blade.php
index c830f06..7bc07e0 100644
--- a/app/views/account/reset-password.blade.php
+++ b/app/views/account/reset-password.blade.php
@@ -17,7 +17,7 @@
     <form role="form" method="POST" action="{{ URL::to('/') }}/reset-password">
         <div class="form-group form-horizontal">
             <input name="username" type="hidden" value="{{$username}}" class="form-control"/>
-            <input name="key" type="hidden" value="{{$key}}" class="form-control"/>
+            <input name="code" type="hidden" value="{{{$code}}}" class="form-control"/>
             <div class="form-group required"><label class="control-label">Password</label>
 
                 <div><input class="form-control" id="new_password" minlength="6" name="new_password" placeholder="New Password"