You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/12/13 22:15:27 UTC

[1/5] airavata-php-gateway git commit: AIRAVATA-1792 Username filtering in exp stats

Repository: airavata-php-gateway
Updated Branches:
  refs/heads/develop 838ca7c9c -> a895abedf


AIRAVATA-1792 Username filtering in exp stats


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/84032b41
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/84032b41
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/84032b41

Branch: refs/heads/develop
Commit: 84032b41ac436aea785e7fdd1beaf23f8902bbbe
Parents: 8522381
Author: Marcus Christie <ma...@iu.edu>
Authored: Mon Dec 12 16:09:08 2016 -0500
Committer: Marcus Christie <ma...@iu.edu>
Committed: Mon Dec 12 16:09:08 2016 -0500

----------------------------------------------------------------------
 app/controllers/AdminController.php             |   5 +-
 app/libraries/AdminUtilities.php                |  11 +-
 app/libraries/Airavata/API/Airavata.php         |  84 ++++++++-
 app/views/admin/experiment-statistics.blade.php |   8 +-
 app/views/admin/manage-experiments.blade.php    | 184 +++++++++++++++----
 5 files changed, 248 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/84032b41/app/controllers/AdminController.php
----------------------------------------------------------------------
diff --git a/app/controllers/AdminController.php b/app/controllers/AdminController.php
index 6439b4b..7babeca 100644
--- a/app/controllers/AdminController.php
+++ b/app/controllers/AdminController.php
@@ -324,9 +324,10 @@ class AdminController extends BaseController {
     {
         if (Request::ajax()) {
             $inputs = Input::all();
+            $username = Input::get('username');
             $expStatistics = AdminUtilities::get_experiment_execution_statistics(strtotime($inputs['fromTime']) * 1000
-                , strtotime($inputs['toTime']) * 1000);
-            return View::make("admin/experiment-statistics", array("expStatistics" => $expStatistics));
+                , strtotime($inputs['toTime']) * 1000, $username);
+            return View::make("admin/experiment-statistics", array("expStatistics" => $expStatistics, "username" => $username));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/84032b41/app/libraries/AdminUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/AdminUtilities.php b/app/libraries/AdminUtilities.php
index b2637a0..a5ee37f 100644
--- a/app/libraries/AdminUtilities.php
+++ b/app/libraries/AdminUtilities.php
@@ -125,10 +125,14 @@ class AdminUtilities
      * @param $toTime
      * @return \Airavata\Model\Experiment\ExperimentStatistics
      */
-    public static function get_experiment_execution_statistics($fromTime, $toTime)
+    public static function get_experiment_execution_statistics($fromTime, $toTime, $username)
     {
+        if (trim($username) == '') {
+            $username = null;
+        }
+        Log::debug("get_experiment_execution_statistics", array($fromTime, $toTime, $username));
         return Airavata::getExperimentStatistics(Session::get('authz-token'),
-            Config::get('pga_config.airavata')['gateway-id'], $fromTime, $toTime);
+            Config::get('pga_config.airavata')['gateway-id'], $fromTime, $toTime, $username, null, null);
     }
 
     /**
@@ -140,7 +144,8 @@ class AdminUtilities
     {
         $experimentStatistics = AdminUtilities::get_experiment_execution_statistics(
             strtotime($inputs["from-date"]) * 1000,
-            strtotime($inputs["to-date"]) * 1000
+            strtotime($inputs["to-date"]) * 1000,
+            $inputs['username']
         );
         $experiments = array();
         if ($inputs["status-type"] == "ALL") {

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/84032b41/app/libraries/Airavata/API/Airavata.php
----------------------------------------------------------------------
diff --git a/app/libraries/Airavata/API/Airavata.php b/app/libraries/Airavata/API/Airavata.php
index f235e48..cc90cc6 100644
--- a/app/libraries/Airavata/API/Airavata.php
+++ b/app/libraries/Airavata/API/Airavata.php
@@ -651,19 +651,23 @@ interface AiravataIf {
    * @param toTime
    *       Ending data time.
    * 
+   * TODO update docs
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $gatewayId
    * @param int $fromTime
    * @param int $toTime
+   * @param string $userName
+   * @param string $applicationName
+   * @param string $resourceHostName
    * @return \Airavata\Model\Experiment\ExperimentStatistics
    * @throws \Airavata\API\Error\InvalidRequestException
    * @throws \Airavata\API\Error\AiravataClientException
    * @throws \Airavata\API\Error\AiravataSystemException
    * @throws \Airavata\API\Error\AuthorizationException
    */
-  public function getExperimentStatistics(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $fromTime, $toTime);
+  public function getExperimentStatistics(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $fromTime, $toTime, $userName, $applicationName, $resourceHostName);
   /**
    * 
    * Get All Experiments of the Project
@@ -6013,19 +6017,22 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("searchExperiments failed: unknown result");
   }
 
-  public function getExperimentStatistics(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $fromTime, $toTime)
+  public function getExperimentStatistics(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $fromTime, $toTime, $userName, $applicationName, $resourceHostName)
   {
-    $this->send_getExperimentStatistics($authzToken, $gatewayId, $fromTime, $toTime);
+    $this->send_getExperimentStatistics($authzToken, $gatewayId, $fromTime, $toTime, $userName, $applicationName, $resourceHostName);
     return $this->recv_getExperimentStatistics();
   }
 
-  public function send_getExperimentStatistics(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $fromTime, $toTime)
+  public function send_getExperimentStatistics(\Airavata\Model\Security\AuthzToken $authzToken, $gatewayId, $fromTime, $toTime, $userName, $applicationName, $resourceHostName)
   {
     $args = new \Airavata\API\Airavata_getExperimentStatistics_args();
     $args->authzToken = $authzToken;
     $args->gatewayId = $gatewayId;
     $args->fromTime = $fromTime;
     $args->toTime = $toTime;
+    $args->userName = $userName;
+    $args->applicationName = $applicationName;
+    $args->resourceHostName = $resourceHostName;
     $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
     if ($bin_accel)
     {
@@ -24221,6 +24228,18 @@ class Airavata_getExperimentStatistics_args {
    * @var int
    */
   public $toTime = null;
+  /**
+   * @var string
+   */
+  public $userName = null;
+  /**
+   * @var string
+   */
+  public $applicationName = null;
+  /**
+   * @var string
+   */
+  public $resourceHostName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -24242,6 +24261,18 @@ class Airavata_getExperimentStatistics_args {
           'var' => 'toTime',
           'type' => TType::I64,
           ),
+        5 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'applicationName',
+          'type' => TType::STRING,
+          ),
+        7 => array(
+          'var' => 'resourceHostName',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -24257,6 +24288,15 @@ class Airavata_getExperimentStatistics_args {
       if (isset($vals['toTime'])) {
         $this->toTime = $vals['toTime'];
       }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+      if (isset($vals['applicationName'])) {
+        $this->applicationName = $vals['applicationName'];
+      }
+      if (isset($vals['resourceHostName'])) {
+        $this->resourceHostName = $vals['resourceHostName'];
+      }
     }
   }
 
@@ -24308,6 +24348,27 @@ class Airavata_getExperimentStatistics_args {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->applicationName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->resourceHostName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -24344,6 +24405,21 @@ class Airavata_getExperimentStatistics_args {
       $xfer += $output->writeI64($this->toTime);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 5);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->applicationName !== null) {
+      $xfer += $output->writeFieldBegin('applicationName', TType::STRING, 6);
+      $xfer += $output->writeString($this->applicationName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->resourceHostName !== null) {
+      $xfer += $output->writeFieldBegin('resourceHostName', TType::STRING, 7);
+      $xfer += $output->writeString($this->resourceHostName);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/84032b41/app/views/admin/experiment-statistics.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/experiment-statistics.blade.php b/app/views/admin/experiment-statistics.blade.php
index 7727057..8339193 100644
--- a/app/views/admin/experiment-statistics.blade.php
+++ b/app/views/admin/experiment-statistics.blade.php
@@ -145,6 +145,11 @@
 <div id="experiment-container" style="margin: 20px" class="experiment-container"></div>
 
 <script>
+    @if ($username)
+    var username = "{{ $username }}";
+    @else
+    var username = null;
+    @endif
 
     $("#getAllExperiments").click(function () {
         getExperimentsOfStatus( 'ALL');
@@ -188,7 +193,8 @@
                     'status-type': status,
                     'search-key': 'creation-time',
                     'from-date': $fromTime,
-                    'to-date': $toTime
+                    'to-date': $toTime,
+                    'username': username
                 },
                 async: false,
                 success: function (data) {

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/84032b41/app/views/admin/manage-experiments.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-experiments.blade.php b/app/views/admin/manage-experiments.blade.php
index fa708d6..e3fd4e6 100644
--- a/app/views/admin/manage-experiments.blade.php
+++ b/app/views/admin/manage-experiments.blade.php
@@ -41,45 +41,109 @@
     <div role="tabpanel" class="tab-pane active" id="overview">
     <div class="well col-md-12">
         <div class="col-md-10">
-            <div class='col-md-5'>
-                <div class="form-group">
+            <div class="row">
+                <div class='col-md-5'>
+                    <div class="form-group">
                         <input type='button' class="oneDayExp form-control btn-primary" value="Get Experiments from Last 24 hours"/>
+                    </div>
                 </div>
-            </div>
-            <div class='col-md-5'>
-                <div class="form-group">
+                <div class='col-md-5'>
+                    <div class="form-group">
                         <input type='button' class="oneWeekExp form-control btn-primary" value="Get Experiments from Last Week"/>
+                    </div>
                 </div>
             </div>
 
-            <div class="col-md-12">
-                <h4>Select dates between which you want to review experiment statistics.</h4>
+            <div class="row">
+                <div class="col-md-12">
+                    <h4>Select dates between which you want to review experiment statistics.</h4>
+                </div>
             </div>
-            <div class='col-md-5'>
-                <div class="form-group">
-                    <div class='input-group date' id='datetimepicker9'>
-                        <input type='text' class="form-control" placeholder="From Date" name="from-date"/>
-                        <span class="input-group-addon">
-                            <span class="glyphicon glyphicon-calendar"></span>
-                        </span>
+            <div class="row">
+                <div class='col-md-5'>
+                    <div class="form-group">
+                        <div class='input-group date' id='datetimepicker9'>
+                            <input type='text' class="form-control" placeholder="From Date" name="from-date"/>
+                            <span class="input-group-addon">
+                                <span class="glyphicon glyphicon-calendar"></span>
+                            </span>
+                        </div>
                     </div>
                 </div>
+                <div class='col-md-5'>
+                    <div class="form-group">
+                        <div class='input-group date' id='datetimepicker10'>
+                            <input type='text' class="form-control" placeholder="To Date" name="to-date"/>
+                            <span class="input-group-addon">
+                                <span class="glyphicon glyphicon-calendar"></span>
+                            </span>
+                        </div>
+                    </div>
+                </div>
+                <div class="col-md-2">
+                    <button name="getStatistics" id="getStatistics" type="submit" class="btn btn-primary"
+                    value="GetStatistics"><span
+                    class="glyphicon glyphicon-search"></span> Get Statistics
+                    </button>
+                </div>
             </div>
-            <div class='col-md-5'>
-                <div class="form-group">
-                    <div class='input-group date' id='datetimepicker10'>
-                        <input type='text' class="form-control" placeholder="To Date" name="to-date"/>
-                        <span class="input-group-addon">
-                            <span class="glyphicon glyphicon-calendar"></span>
-                        </span>
+            <div class="row">
+                <div class="col-md-12">
+                    <div class="form-group">
+                        <div class="btn-group">
+                            <button id="add-filter-dropdown" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+                                Add Filter <span class="caret"></span>
+                            </button>
+                            <ul class="dropdown-menu" role="menu">
+                                <li><a id="add-username-filter" href="#">Username</a></li>
+                                <li><a id="add-appname-filter" href="#">Application Name</a></li>
+                                <li><a id="add-hostname-filter" href="#">Hostname</a></li>
+                            </ul>
+                        </div>
                     </div>
                 </div>
             </div>
-            <div class="col-md-2">
-                <button name="getStatistics" id="getStatistics" type="submit" class="btn btn-primary"
-                        value="GetStatistics"><span
-                        class="glyphicon glyphicon-search"></span> Get Statistics
-                </button>
+            <div class="row">
+                <div class="col-md-5 hide" id="username-filter-row">
+                    <div class="form-group">
+                        <div class='input-group'>
+                            <input type='text' class="form-control" placeholder="Username" id="username" name="username"/>
+                            <div class="input-group-btn">
+                                <button id="remove-username-filter" class="btn btn-default" type="button">
+                                    <span class="glyphicon glyphicon-remove"></span>
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-5 hide" id="appname-filter-row">
+                    <div class="form-group">
+                        <div class='input-group'>
+                            <input type='text' class="form-control" placeholder="Application name" id="appname" name="appname"/>
+                            <div class="input-group-btn">
+                                <button id="remove-appname-filter" class="btn btn-default" type="button">
+                                    <span class="glyphicon glyphicon-remove"></span>
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-5 hide" id="hostname-filter-row">
+                    <div class="form-group">
+                        <div class='input-group'>
+                            <input type='text' class="form-control" placeholder="Hostname" id="hostname" name="hostname"/>
+                            <div class="input-group-btn">
+                                <button id="remove-hostname-filter" class="btn btn-default" type="button">
+                                    <span class="glyphicon glyphicon-remove"></span>
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
             </div>
         </div>
     </div>
@@ -376,9 +440,9 @@ to be uncommented when actually in use.
                     $("#myTabs").append('<li role="presentation"><a href="#' + expId + '" aria-controls="' + expId + '" role="tab" data-toggle="tab">' + expId + '<button type="button" style="margin-left:10px;" class="close pull-right close-tab" aria-label="Close"><span aria-hidden="true">&times;</span></button></a></li>');
                     $(".tab-content").append('<div role="tabpanel" class="tab-pane" id="' + expId + '">' + data + '</div>');
                     $('#myTabs a[href="#' + expId + '"]').tab('show') // Select tab by name
-                    
+
                     //$('#myTabs a[href="#expsummary"]').tab('show') // Select tab by name
-                    
+
                     //from time-conversion.js
                     updateTime();
                 }
@@ -433,7 +497,7 @@ to be uncommented when actually in use.
         todayDate = moment(todayDate).utc().format('MM/DD/YYYY hh:mm a');
         ydayDate = moment(ydayDate).utc().format('MM/DD/YYYY hh:mm a');
         var msg = "Experiments statistics from last 24 hours";
-        getExperiments( ydayDate, todayDate, msg);
+        getExperiments( ydayDate, todayDate, null, msg);
     });
 
     $(".oneWeekExp").click( function(){
@@ -444,7 +508,7 @@ to be uncommented when actually in use.
         todayDate = moment(todayDate).utc().format('MM/DD/YYYY hh:mm a');
         ydayDate = moment(ydayDate).utc().format('MM/DD/YYYY hh:mm a');
         var msg = "Experiments statistics from last week";
-        getExperiments( ydayDate, todayDate, msg);
+        getExperiments( ydayDate, todayDate, null, msg);
     })
 
     $("#getStatistics").click(function () {
@@ -452,22 +516,74 @@ to be uncommented when actually in use.
         $fromTime = moment($fromTime).utc().format('MM/DD/YYYY hh:mm A');
         $toTime = $("#datetimepicker10").find("input").val();
         $toTime = moment($toTime).utc().format('MM/DD/YYYY hh:mm A');
+        var username = $('#username').val().trim();
+        console.log("username", username);
         if ($fromTime == '' || $toTime == '') {
             alert("Please Select Valid Date Inputs!");
         } else {
-            getExperiments( $fromTime, $toTime);
+            getExperiments( $fromTime, $toTime, username);
+        }
+    });
+
+    $("#add-username-filter").click(function() {
+        $("#username-filter-row").removeClass("hide");
+        $("#username-filter-row input").focus();
+        $("#add-filter-dropdown").dropdown('toggle');
+        $("#add-username-filter").addClass("hide");
+        return false;
+    });
+
+    $("#remove-username-filter").click(function() {
+        $("#username-filter-row").addClass("hide");
+        $("#username-filter-row input").val('');
+        $("#add-username-filter").removeClass("hide");
+    });
+
+    $("#add-appname-filter").click(function() {
+        $("#appname-filter-row").removeClass("hide");
+        $("#appname-filter-row input").focus();
+        $("#add-filter-dropdown").dropdown('toggle');
+        $("#add-appname-filter").addClass("hide");
+        return false;
+    });
+
+    $("#remove-appname-filter").click(function() {
+        $("#appname-filter-row").addClass("hide");
+        $("#appname-filter-row input").val('');
+        $("#add-appname-filter").removeClass("hide");
+    });
+
+    $("#add-hostname-filter").click(function() {
+        $("#hostname-filter-row").removeClass("hide");
+        $("#hostname-filter-row input").focus();
+        $("#add-filter-dropdown").dropdown('toggle');
+        $("#add-hostname-filter").addClass("hide");
+        return false;
+    });
+
+    $("#remove-hostname-filter").click(function() {
+        $("#hostname-filter-row").addClass("hide");
+        $("#hostname-filter-row input").val('');
+        $("#add-hostname-filter").removeClass("hide");
+    });
+
+    // submit request if user presses ENTER key
+    $("#username, #appname, #hostname").keydown(function(e) {
+        if (e.which === 13) {
+            $('#getStatistics').click();
+            return false;
         }
     });
 
     // Load experiments from the last 24 hours on page load.
     $(".oneDayExp").click();
 
-    function getExperiments( startTime, endTime, msg){
+    function getExperiments( startTime, endTime, username, msg){
 
         $(".experiment-statistics").html("");
         $(".loading-img-statistics").removeClass("hide");
             $.ajax({
-                url: 'experimentStatistics?fromTime=' + startTime + '&' + 'toTime=' + endTime,
+                url: 'experimentStatistics?fromTime=' + startTime + '&' + 'toTime=' + endTime + '&username=' + encodeURIComponent(username),
                 type: 'get',
                 success: function (data) {
                     if( msg == null){
@@ -498,7 +614,7 @@ to be uncommented when actually in use.
                 hours = hours - 12;
         }
         var date = cd.getDate();
-        
+
         var todayDate = month + "/" + date + "/" + cd.getFullYear() + " " + hours + ":" + cd.getUTCMinutes() + " " + timeOfDay;
         return todayDate;
     }


[2/5] airavata-php-gateway git commit: AIRAVATA-1792 App name and hostname filtering

Posted by sc...@apache.org.
AIRAVATA-1792 App name and hostname filtering


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/60a8b48e
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/60a8b48e
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/60a8b48e

Branch: refs/heads/develop
Commit: 60a8b48e2716237f8a47a7f815352932987051bb
Parents: 84032b4
Author: Marcus Christie <ma...@iu.edu>
Authored: Tue Dec 13 10:27:10 2016 -0500
Committer: Marcus Christie <ma...@iu.edu>
Committed: Tue Dec 13 10:27:10 2016 -0500

----------------------------------------------------------------------
 app/controllers/AdminController.php             |  7 +++++--
 app/libraries/AdminUtilities.php                | 15 +++++++++++----
 app/views/admin/experiment-statistics.blade.php | 12 ++++++------
 app/views/admin/manage-experiments.blade.php    | 17 +++++++++++------
 4 files changed, 33 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/60a8b48e/app/controllers/AdminController.php
----------------------------------------------------------------------
diff --git a/app/controllers/AdminController.php b/app/controllers/AdminController.php
index 7babeca..c2b547d 100644
--- a/app/controllers/AdminController.php
+++ b/app/controllers/AdminController.php
@@ -325,9 +325,12 @@ class AdminController extends BaseController {
         if (Request::ajax()) {
             $inputs = Input::all();
             $username = Input::get('username');
+            $appname = Input::get('appname');
+            $hostname = Input::get('hostname');
             $expStatistics = AdminUtilities::get_experiment_execution_statistics(strtotime($inputs['fromTime']) * 1000
-                , strtotime($inputs['toTime']) * 1000, $username);
-            return View::make("admin/experiment-statistics", array("expStatistics" => $expStatistics, "username" => $username));
+                , strtotime($inputs['toTime']) * 1000, $username, $appname, $hostname);
+            return View::make("admin/experiment-statistics", array("expStatistics" => $expStatistics,
+                      "username" => $username, "appname" => $appname, "hostname" => $hostname));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/60a8b48e/app/libraries/AdminUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/AdminUtilities.php b/app/libraries/AdminUtilities.php
index a5ee37f..03d168b 100644
--- a/app/libraries/AdminUtilities.php
+++ b/app/libraries/AdminUtilities.php
@@ -125,14 +125,19 @@ class AdminUtilities
      * @param $toTime
      * @return \Airavata\Model\Experiment\ExperimentStatistics
      */
-    public static function get_experiment_execution_statistics($fromTime, $toTime, $username)
+    public static function get_experiment_execution_statistics($fromTime, $toTime, $username, $appname, $hostname)
     {
         if (trim($username) == '') {
             $username = null;
         }
-        Log::debug("get_experiment_execution_statistics", array($fromTime, $toTime, $username));
+        if (trim($appname) == '') {
+            $appname = null;
+        }
+        if (trim($hostname) == '') {
+            $hostname = null;
+        }
         return Airavata::getExperimentStatistics(Session::get('authz-token'),
-            Config::get('pga_config.airavata')['gateway-id'], $fromTime, $toTime, $username, null, null);
+            Config::get('pga_config.airavata')['gateway-id'], $fromTime, $toTime, $username, $appname, $hostname);
     }
 
     /**
@@ -145,7 +150,9 @@ class AdminUtilities
         $experimentStatistics = AdminUtilities::get_experiment_execution_statistics(
             strtotime($inputs["from-date"]) * 1000,
             strtotime($inputs["to-date"]) * 1000,
-            $inputs['username']
+            $inputs['username'],
+            $inputs['appname'],
+            $inputs['hostname']
         );
         $experiments = array();
         if ($inputs["status-type"] == "ALL") {

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/60a8b48e/app/views/admin/experiment-statistics.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/experiment-statistics.blade.php b/app/views/admin/experiment-statistics.blade.php
index 8339193..e4a5c86 100644
--- a/app/views/admin/experiment-statistics.blade.php
+++ b/app/views/admin/experiment-statistics.blade.php
@@ -145,11 +145,9 @@
 <div id="experiment-container" style="margin: 20px" class="experiment-container"></div>
 
 <script>
-    @if ($username)
-    var username = "{{ $username }}";
-    @else
-    var username = null;
-    @endif
+    var username = @if ($username) "{{ $username }}" @else null @endif;
+    var appname = @if ($appname) "{{ $appname }}" @else null @endif;
+    var hostname = @if ($hostname) "{{ $hostname }}" @else null @endif;
 
     $("#getAllExperiments").click(function () {
         getExperimentsOfStatus( 'ALL');
@@ -194,7 +192,9 @@
                     'search-key': 'creation-time',
                     'from-date': $fromTime,
                     'to-date': $toTime,
-                    'username': username
+                    'username': username,
+                    'appname': appname,
+                    'hostname': hostname
                 },
                 async: false,
                 success: function (data) {

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/60a8b48e/app/views/admin/manage-experiments.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-experiments.blade.php b/app/views/admin/manage-experiments.blade.php
index e3fd4e6..09c0e4e 100644
--- a/app/views/admin/manage-experiments.blade.php
+++ b/app/views/admin/manage-experiments.blade.php
@@ -497,7 +497,7 @@ to be uncommented when actually in use.
         todayDate = moment(todayDate).utc().format('MM/DD/YYYY hh:mm a');
         ydayDate = moment(ydayDate).utc().format('MM/DD/YYYY hh:mm a');
         var msg = "Experiments statistics from last 24 hours";
-        getExperiments( ydayDate, todayDate, null, msg);
+        getExperiments( ydayDate, todayDate, null, null, null, msg);
     });
 
     $(".oneWeekExp").click( function(){
@@ -508,7 +508,7 @@ to be uncommented when actually in use.
         todayDate = moment(todayDate).utc().format('MM/DD/YYYY hh:mm a');
         ydayDate = moment(ydayDate).utc().format('MM/DD/YYYY hh:mm a');
         var msg = "Experiments statistics from last week";
-        getExperiments( ydayDate, todayDate, null, msg);
+        getExperiments( ydayDate, todayDate, null, null, null, msg);
     })
 
     $("#getStatistics").click(function () {
@@ -517,11 +517,12 @@ to be uncommented when actually in use.
         $toTime = $("#datetimepicker10").find("input").val();
         $toTime = moment($toTime).utc().format('MM/DD/YYYY hh:mm A');
         var username = $('#username').val().trim();
-        console.log("username", username);
+        var appname = $('#appname').val().trim();
+        var hostname = $('#hostname').val().trim();
         if ($fromTime == '' || $toTime == '') {
             alert("Please Select Valid Date Inputs!");
         } else {
-            getExperiments( $fromTime, $toTime, username);
+            getExperiments( $fromTime, $toTime, username, appname, hostname);
         }
     });
 
@@ -578,12 +579,15 @@ to be uncommented when actually in use.
     // Load experiments from the last 24 hours on page load.
     $(".oneDayExp").click();
 
-    function getExperiments( startTime, endTime, username, msg){
+    function getExperiments( startTime, endTime, username, appname, hostname, msg){
 
         $(".experiment-statistics").html("");
         $(".loading-img-statistics").removeClass("hide");
             $.ajax({
-                url: 'experimentStatistics?fromTime=' + startTime + '&' + 'toTime=' + endTime + '&username=' + encodeURIComponent(username),
+                url: 'experimentStatistics?fromTime=' + startTime + '&' + 'toTime=' + endTime
+                    + '&username=' + encodeURIComponent(username)
+                    + '&appname=' + encodeURIComponent(appname)
+                    + '&hostname=' + encodeURIComponent(hostname),
                 type: 'get',
                 success: function (data) {
                     if( msg == null){
@@ -591,6 +595,7 @@ to be uncommented when actually in use.
                         end  = new Date(endTime + ' UTC');
                         msg = "Experiment Statistics from " + start.toLocaleTimeString() + " to " + end.toLocaleTimeString();
                     }
+                    // TODO: update message to include username, appname and hostname?
                     $(".experiment-statistics").html( "<h2 class='text-center'>" + msg + "</h2><hr/>" + data);
                 }
             }).complete(function () {


[3/5] airavata-php-gateway git commit: AIRAVATA-1792 App/hostname filters are select controls

Posted by sc...@apache.org.
AIRAVATA-1792 App/hostname filters are select controls


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/8fee1f78
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/8fee1f78
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/8fee1f78

Branch: refs/heads/develop
Commit: 8fee1f7845678bab5fbb3eafdbc9309c4c897663
Parents: 60a8b48
Author: Marcus Christie <ma...@iu.edu>
Authored: Tue Dec 13 10:51:53 2016 -0500
Committer: Marcus Christie <ma...@iu.edu>
Committed: Tue Dec 13 10:51:53 2016 -0500

----------------------------------------------------------------------
 app/controllers/AdminController.php          |  7 +++++-
 app/views/admin/manage-experiments.blade.php | 26 ++++++++++++++++-------
 2 files changed, 24 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/8fee1f78/app/controllers/AdminController.php
----------------------------------------------------------------------
diff --git a/app/controllers/AdminController.php b/app/controllers/AdminController.php
index c2b547d..ec6af5d 100644
--- a/app/controllers/AdminController.php
+++ b/app/controllers/AdminController.php
@@ -185,7 +185,12 @@ class AdminController extends BaseController {
 
 	public function experimentsView(){
         Session::put("admin-nav", "exp-statistics");
-		return View::make("admin/manage-experiments" );
+
+        $applications = AppUtilities::get_all_applications();
+        uksort($applications, 'strcasecmp');
+        $hostnames = CRUtilities::getAllCRObjects(true);
+        uksort($hostnames, 'strcasecmp');
+        return View::make("admin/manage-experiments", array("applications" => $applications, "hostnames" => $hostnames));
 	}
 
 	public function resourcesView(){

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/8fee1f78/app/views/admin/manage-experiments.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-experiments.blade.php b/app/views/admin/manage-experiments.blade.php
index 09c0e4e..54ff414 100644
--- a/app/views/admin/manage-experiments.blade.php
+++ b/app/views/admin/manage-experiments.blade.php
@@ -121,7 +121,12 @@
                 <div class="col-md-5 hide" id="appname-filter-row">
                     <div class="form-group">
                         <div class='input-group'>
-                            <input type='text' class="form-control" placeholder="Application name" id="appname" name="appname"/>
+                            <select id="appname" name="appname" class="form-control">
+                                <option value="">Select Application</option>
+                                @foreach ($applications as $applicationId => $applicationName)
+                                <option value="{{ $applicationId }}">{{{ $applicationName }}}</option>
+                                @endforeach
+                            </select>
                             <div class="input-group-btn">
                                 <button id="remove-appname-filter" class="btn btn-default" type="button">
                                     <span class="glyphicon glyphicon-remove"></span>
@@ -135,7 +140,12 @@
                 <div class="col-md-5 hide" id="hostname-filter-row">
                     <div class="form-group">
                         <div class='input-group'>
-                            <input type='text' class="form-control" placeholder="Hostname" id="hostname" name="hostname"/>
+                            <select id="hostname" name="hostname" class="form-control">
+                                <option value="">Select Hostname</option>
+                                @foreach ($hostnames as $hostnameId => $hostname)
+                                <option value="{{ $hostnameId }}">{{{ $hostname }}}</option>
+                                @endforeach
+                            </select>
                             <div class="input-group-btn">
                                 <button id="remove-hostname-filter" class="btn btn-default" type="button">
                                     <span class="glyphicon glyphicon-remove"></span>
@@ -542,7 +552,7 @@ to be uncommented when actually in use.
 
     $("#add-appname-filter").click(function() {
         $("#appname-filter-row").removeClass("hide");
-        $("#appname-filter-row input").focus();
+        $("#appname-filter-row select").focus();
         $("#add-filter-dropdown").dropdown('toggle');
         $("#add-appname-filter").addClass("hide");
         return false;
@@ -550,13 +560,13 @@ to be uncommented when actually in use.
 
     $("#remove-appname-filter").click(function() {
         $("#appname-filter-row").addClass("hide");
-        $("#appname-filter-row input").val('');
+        $("#appname-filter-row select").val('');
         $("#add-appname-filter").removeClass("hide");
     });
 
     $("#add-hostname-filter").click(function() {
         $("#hostname-filter-row").removeClass("hide");
-        $("#hostname-filter-row input").focus();
+        $("#hostname-filter-row select").focus();
         $("#add-filter-dropdown").dropdown('toggle');
         $("#add-hostname-filter").addClass("hide");
         return false;
@@ -564,12 +574,12 @@ to be uncommented when actually in use.
 
     $("#remove-hostname-filter").click(function() {
         $("#hostname-filter-row").addClass("hide");
-        $("#hostname-filter-row input").val('');
+        $("#hostname-filter-row select").val('');
         $("#add-hostname-filter").removeClass("hide");
     });
 
-    // submit request if user presses ENTER key
-    $("#username, #appname, #hostname").keydown(function(e) {
+    // get statistics if user presses ENTER key in username filter field
+    $("#username").keydown(function(e) {
         if (e.which === 13) {
             $('#getStatistics').click();
             return false;


[4/5] airavata-php-gateway git commit: AIRAVATA-1792 Updating Thrift stubs

Posted by sc...@apache.org.
AIRAVATA-1792 Updating Thrift 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/dc4a638c
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/dc4a638c
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/dc4a638c

Branch: refs/heads/develop
Commit: dc4a638c092649fa789c8031e29e12ea2a1c7b34
Parents: 8fee1f7
Author: Marcus Christie <ma...@iu.edu>
Authored: Tue Dec 13 11:16:49 2016 -0500
Committer: Marcus Christie <ma...@iu.edu>
Committed: Tue Dec 13 11:16:49 2016 -0500

----------------------------------------------------------------------
 app/libraries/Airavata/API/Airavata.php | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/dc4a638c/app/libraries/Airavata/API/Airavata.php
----------------------------------------------------------------------
diff --git a/app/libraries/Airavata/API/Airavata.php b/app/libraries/Airavata/API/Airavata.php
index cc90cc6..37c76dd 100644
--- a/app/libraries/Airavata/API/Airavata.php
+++ b/app/libraries/Airavata/API/Airavata.php
@@ -651,7 +651,15 @@ interface AiravataIf {
    * @param toTime
    *       Ending data time.
    * 
-   * TODO update docs
+   * @param userName
+   *       Gateway username substring with which to further filter statistics.
+   * 
+   * @param applicationName
+   *       Application id substring with which to further filter statistics.
+   * 
+   * @param resourceHostName
+   *       Hostname id substring with which to further filter statistics.
+   * 
    * 
    * 
    * @param \Airavata\Model\Security\AuthzToken $authzToken


[5/5] airavata-php-gateway git commit: merging pull request 52

Posted by sc...@apache.org.
merging pull request 52


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/a895abed
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/a895abed
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/a895abed

Branch: refs/heads/develop
Commit: a895abedff656f9745654b12bf645bcd3af4e737
Parents: 838ca7c dc4a638
Author: scnakandala <su...@gmail.com>
Authored: Tue Dec 13 17:15:21 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Tue Dec 13 17:15:21 2016 -0500

----------------------------------------------------------------------
 app/controllers/AdminController.php             |  15 +-
 app/libraries/AdminUtilities.php                |  18 +-
 app/libraries/Airavata/API/Airavata.php         |  92 ++++++++-
 app/views/admin/experiment-statistics.blade.php |   8 +-
 app/views/admin/manage-experiments.blade.php    | 199 +++++++++++++++----
 5 files changed, 287 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a895abed/app/controllers/AdminController.php
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a895abed/app/libraries/Airavata/API/Airavata.php
----------------------------------------------------------------------