Improving Gateway Preferences performance by decreasing number of API calls
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/7e14dd6c Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/7e14dd6c Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/7e14dd6c Branch: refs/heads/master Commit: 7e14dd6cfc802c2a6c59a5d8ca9d4d6113ed0cc8 Parents: 7f73aeb Author: Nipurn Doshi <[email protected]> Authored: Fri Feb 5 13:34:28 2016 -0500 Committer: Nipurn Doshi <[email protected]> Committed: Fri Feb 5 13:34:28 2016 -0500 ---------------------------------------------------------------------- app/controllers/AdminController.php | 12 +++---- app/libraries/CRUtilities.php | 25 +++++++++++--- app/views/admin/manage-gateway.blade.php | 49 ++++++++++++++------------- public/js/gateway.js | 12 +++++-- 4 files changed, 61 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/7e14dd6c/app/controllers/AdminController.php ---------------------------------------------------------------------- diff --git a/app/controllers/AdminController.php b/app/controllers/AdminController.php index 10f5e20..c4278d9 100644 --- a/app/controllers/AdminController.php +++ b/app/controllers/AdminController.php @@ -60,16 +60,16 @@ class AdminController extends BaseController { $gatewaysInfo = CRUtilities::getAllGatewayProfilesData(); $gateways = $gatewaysInfo["gateways"]; $tokens = AdminUtilities::get_all_ssh_tokens(); + $srData = SRUtilities::getEditSRData(); - $allCRs = CRUtilities::getAllCRObjects(); - $allSRs = SRUtilities::getAllSRObjects(); + $crData = CRUtilities::getEditCRData(); - foreach( (array)$allCRs as $index => $cr){ + foreach( (array)$gatewaysInfo["allCRs"] as $crId => $cr){ if( ! in_array($cr->computeResourceId, $gatewaysInfo["selectedCRs"]) ) $unselectedCRs[] = $cr; } - foreach( (array)$allSRs as $index => $sr){ + foreach( (array)$gatewaysInfo["allSRs"] as $index => $sr){ if( ! in_array($sr->storageResourceId, $gatewaysInfo["selectedSRs"]) ) $unselectedSRs[] = $sr; } @@ -77,9 +77,9 @@ class AdminController extends BaseController { //$dsData = CRUtilities::getAllDataStoragePreferences( $gateways); $gatewayData = array( "gateways" => $gateways, - "computeResources" => $allCRs, + "computeResources" => $gatewaysInfo["allCRs"], "crData" => $crData, - "storageResources" => $allSRs, + "storageResources" => $gatewaysInfo["allSRs"], "srData" => $srData, "tokens" => $tokens, "unselectedCRs" => $unselectedCRs, http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/7e14dd6c/app/libraries/CRUtilities.php ---------------------------------------------------------------------- diff --git a/app/libraries/CRUtilities.php b/app/libraries/CRUtilities.php index e38a475..e2ee6e5 100755 --- a/app/libraries/CRUtilities.php +++ b/app/libraries/CRUtilities.php @@ -449,6 +449,19 @@ class CRUtilities } $selectedCRs = array(); $selectedSRs = array(); + $allCRs = CRUtilities::getAllCRObjects(); + $allSRs = SRUtilities::getAllSRObjects(); + $allCRArray = array(); + $allSRArray = array(); + foreach( $allCRs as $index => $crObject) + { + $allCRArray[$crObject->computeResourceId] = $crObject; + } + foreach( $allSRs as $index => $srObject) + { + $allSRArray[$srObject->storageResourceId] = $srObject; + } + $gatewayProfiles = Airavata::getAllGatewayResourceProfiles(Session::get('authz-token')); //var_dump( $gatewayProfiles); exit; //$gatewayProfileIds = array("GatewayTest3_57726e98-313f-4e7c-87a5-18e69928afb5", "GatewayTest4_4fd9fb28-4ced-4149-bdbd-1f276077dad8"); @@ -458,14 +471,14 @@ class CRUtilities if ($gw->gatewayId == $gp->gatewayID) { foreach ((array)$gp->computeResourcePreferences as $i => $crp) { - $gatewayProfiles[$index]->computeResourcePreferences[$i]->crDetails = Airavata::getComputeResource(Session::get('authz-token'), $crp->computeResourceId); + $gatewayProfiles[$index]->computeResourcePreferences[$i]->crDetails = $allCRArray[ $crp->computeResourceId]; //had to add this condition since for super admin it takes CRs selected in all gateways. if( $gp->gatewayID == Session::get("gateway_id")) $selectedCRs[] = $crp->computeResourceId; } foreach( (array)$gp->storagePreferences as $j => $srp){ - $gatewayProfiles[$index]->storagePreferences[$j]->srDetails = Airavata::getStorageResource( Session::get('authz-token'), $srp->storageResourceId); + $gatewayProfiles[$index]->storagePreferences[$j]->srDetails = $allSRArray[ $srp->storageResourceId]; //had to add this condition since for super admin it takes SRs selected in all gateways. if( $gp->gatewayID == Session::get("gateway_id")) @@ -476,8 +489,12 @@ class CRUtilities } } //var_dump( $gatewayProfiles[0]->computeResourcePreferences[0]->crDetails); exit; - - $gatewaysInfo = array( "gateways" =>$gateways, "selectedCRs" => $selectedCRs, "selectedSRs" => $selectedSRs); + $gatewaysInfo = array( "gateways" =>$gateways, + "selectedCRs" => $selectedCRs, + "selectedSRs" => $selectedSRs, + "allCRs" => $allCRs, + "allSRs" => $allSRs + ); return $gatewaysInfo; } http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/7e14dd6c/app/views/admin/manage-gateway.blade.php ---------------------------------------------------------------------- diff --git a/app/views/admin/manage-gateway.blade.php b/app/views/admin/manage-gateway.blade.php index a648845..2c9d143 100644 --- a/app/views/admin/manage-gateway.blade.php +++ b/app/views/admin/manage-gateway.blade.php @@ -7,6 +7,18 @@ @section('content') + + +<!-- contains all compute resource choices that might get selected on adding a new one to a gateway --> +@foreach( (array)$computeResources as $index => $cr) +@include('partials/compute-resource-preferences', array('computeResource' => $cr, 'crData' => $crData)) +@endforeach + +<!-- contains all storage resource choices that might get selected on adding a new one to a gateway --> +@foreach( (array)$storageResources as $index => $sr) + @include('partials/storage-resource-preferences', array('storageResource' => $sr, 'srData' => $srData)) +@endforeach + <div id="wrapper"> <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens --> @include( 'partials/dashboard-block') @@ -91,11 +103,10 @@ </div> <div class="panel-group" id="accordion1"> - @foreach( $gateways as $indexGP => $gp ) - <div class='super-admin-gateways-view'> - @include('partials/gateway-preferences-block', array("gp" => $gp, "accName" => "accordion1")) - </div> - @endforeach + <div class='super-admin-gateways-view'> + @foreach( $gateways as $indexGP => $gp ) + @include('partials/gateway-preferences-block', array("gp" => $gp, "accName" => "accordion1")) + @endforeach </div> </div> @endif @@ -123,7 +134,7 @@ </select> <span class="input-group-addon remove-cr" style="cursor:pointer;">x</span> </div> - <div class="pref-space form-horizontal"></div> + <div class="cr-pref-space form-horizontal"></div> </form> </div> </div> @@ -142,7 +153,7 @@ </select> <span class="input-group-addon remove-cr" style="cursor:pointer;">x</span> </div> - <div class="pref-space form-horizontal"></div> + <div class="sr-pref-space form-horizontal"></div> </form> </div> </div> @@ -208,7 +219,7 @@ <!-- Add a Gateway --> <div class="modal fade" id="add-gateway-loading" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true" data-backdrop="static"> -<div class="modal-dialog"> + <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h3 class="text-center">Registering the gateway</h3> @@ -221,16 +232,6 @@ </div> </div> -<!-- contains all compute resource choices that might get selected on adding a new one to a gateway --> -@foreach( (array)$computeResources as $index => $cr) -@include('partials/compute-resource-preferences', array('computeResource' => $cr, 'crData' => $crData)) -@endforeach - -<!-- contains all storage resource choices that might get selected on adding a new one to a gateway --> -@foreach( (array)$storageResources as $index => $sr) - @include('partials/storage-resource-preferences', array('storageResource' => $sr, 'srData' => $srData)) -@endforeach - @stop @@ -318,12 +319,12 @@ $(e).attr("disabled", "true"); else $(e).prop("readonly", "true"); - }); - elem.find("textarea").prop("readonly", "true"); - elem.find("select").attr("disabled", "true"); - elem.find(".hide").prop("readonly", "true"); - elem.find("button").attr("disabled", "true"); - elem.find(".glyphicon").hide(); + }); + elem.find("textarea").prop("readonly", "true"); + elem.find("select").attr("disabled", "true"); + elem.find(".hide").prop("readonly", "true"); + elem.find("button").attr("disabled", "true"); + elem.find(".glyphicon").hide(); } </script> http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/7e14dd6c/public/js/gateway.js ---------------------------------------------------------------------- diff --git a/public/js/gateway.js b/public/js/gateway.js index 1a53f85..d60326a 100644 --- a/public/js/gateway.js +++ b/public/js/gateway.js @@ -30,7 +30,13 @@ $(document).ready(function () { //remove Compute Resource $("body").on("click", ".remove-cr", function(){ $(this).parent().parent().parent().remove(); - $(this).parent().parent().parent().find(".pref-space").html(""); + $(this).parent().parent().parent().find(".cr-pref-space").html(""); + }); + + //remove Storage Resource + $("body").on("click", ".remove-cr", function(){ + $(this).parent().parent().parent().remove(); + $(this).parent().parent().parent().find(".sr-pref-space").html(""); }); @@ -50,14 +56,14 @@ $(document).ready(function () { crId = $(this).val(); //This is done as Jquery creates problems when using period(.) in id or class. crId = crId.replace(/\./g,"_"); - $(".pref-space").html($("#cr-" + crId).html()); + $(".cr-pref-space").html($("#cr-" + crId).html()); }); $("body").on("change", ".sr-select", function(){ srId = $(this).val(); //This is done as Jquery creates problems when using period(.) in id or class. srId = srId.replace(/\./g,"_"); - $(".pref-space").html($("#sr-" + srId).html()); + $(".sr-pref-space").html($("#sr-" + srId).html()); }); $(".edit-gateway").click( function(){
