Repository: airavata-php-gateway Updated Branches: refs/heads/master ec01a6427 -> 844ce86ca
making CR view read only 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/844ce86c Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/844ce86c Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/844ce86c Branch: refs/heads/master Commit: 844ce86ca561303e52e02367c6956a6dec1a5bfd Parents: ec01a64 Author: Supun Nakandala <[email protected]> Authored: Wed Jun 10 00:43:43 2015 +0530 Committer: Supun Nakandala <[email protected]> Committed: Wed Jun 10 00:43:43 2015 +0530 ---------------------------------------------------------------------- app/controllers/ComputeResource.php | 47 +++- app/routes.php | 2 + app/views/partials/queue-block.blade.php | 20 +- app/views/resource/browse.blade.php | 7 +- app/views/resource/view.blade.php | 371 ++++++++++++++++++++++++++ 5 files changed, 434 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/844ce86c/app/controllers/ComputeResource.php ---------------------------------------------------------------------- diff --git a/app/controllers/ComputeResource.php b/app/controllers/ComputeResource.php index e3295bb..79a2305 100755 --- a/app/controllers/ComputeResource.php +++ b/app/controllers/ComputeResource.php @@ -48,7 +48,7 @@ class ComputeResource extends BaseController } if ($computeResourceId != "") { - $computeResource = AppUtilities::get_compute_resource($computeResourceId); + $computeResource = CRUtilities::get_compute_resource($computeResourceId); $jobSubmissionInterfaces = array(); $dataMovementInterfaces = array(); $addedJSP = array(); @@ -169,6 +169,51 @@ class ComputeResource extends BaseController return Redirect::to("cr/edit?crId=" . Input::get("crId") . $tabName); } + public function viewView() + { + + $data = CRUtilities::getEditCRData(); + $computeResourceId = ""; + if (Input::has("crId")) + $computeResourceId = Input::get("crId"); + else if (Session::has("computeResource")) { + $computeResource = Session::get("computeResource"); + $computeResourceId = $computeResource->computeResourceId; + } + + if ($computeResourceId != "") { + $computeResource = CRUtilities::get_compute_resource($computeResourceId); + $jobSubmissionInterfaces = array(); + $dataMovementInterfaces = array(); + $addedJSP = array(); + $addedDMI = array(); + //var_dump( $computeResource->jobSubmissionInterfaces); exit; + if (count($computeResource->jobSubmissionInterfaces)) { + foreach ($computeResource->jobSubmissionInterfaces as $JSI) { + $jobSubmissionInterfaces[] = CRUtilities::getJobSubmissionDetails($JSI->jobSubmissionInterfaceId, $JSI->jobSubmissionProtocol); + $addedJSP[] = $JSI->jobSubmissionProtocol; + } + } + //var_dump( CRUtilities::getJobSubmissionDetails( $data["computeResource"]->jobSubmissionInterfaces[0]->jobSubmissionInterfaceId, 1) ); exit; + if (count($computeResource->dataMovementInterfaces)) { + foreach ($computeResource->dataMovementInterfaces as $DMI) { + $dataMovementInterfaces[] = CRUtilities::getDataMovementDetails($DMI->dataMovementInterfaceId, $DMI->dataMovementProtocol); + $addedDMI[] = $DMI->dataMovementProtocol; + } + } + + $data["computeResource"] = $computeResource; + $data["jobSubmissionInterfaces"] = $jobSubmissionInterfaces; + $data["dataMovementInterfaces"] = $dataMovementInterfaces; + $data["addedJSP"] = $addedJSP; + $data["addedDMI"] = $addedDMI; + //var_dump($data["jobSubmissionInterfaces"]); exit; + return View::make("resource/view", $data); + } else + return View::make("resource/browse")->with("login-alert", "Unable to retrieve this Compute Resource. Please report this error to devs."); + + } + public function deleteActions() { http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/844ce86c/app/routes.php ---------------------------------------------------------------------- diff --git a/app/routes.php b/app/routes.php index 7104b5e..d6cb53e 100755 --- a/app/routes.php +++ b/app/routes.php @@ -101,6 +101,8 @@ Route::get("cr/edit", "ComputeResource@editView"); Route::post("cr/edit", "ComputeResource@editSubmit"); +Route::get("cr/view", "ComputeResource@viewView"); + Route::get("cr/browse", "ComputeResource@browseView"); Route::post("cr/delete-jsi", "ComputeResource@deleteActions"); http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/844ce86c/app/views/partials/queue-block.blade.php ---------------------------------------------------------------------- diff --git a/app/views/partials/queue-block.blade.php b/app/views/partials/queue-block.blade.php index e805b1e..ac0008a 100644 --- a/app/views/partials/queue-block.blade.php +++ b/app/views/partials/queue-block.blade.php @@ -1,7 +1,8 @@ <div class="form-group"> <label class="control-label">Queue Description</label> - <textarea class="form-control" maxlength="255" name="qdesc" placeholder="Queue Description">@if( isset( $queueData) - ){{ $queueData->queueDescription }}@endif</textarea> + <textarea class="form-control" maxlength="255" name="qdesc" placeholder="Queue Description" + @if( isset( $readOnly)){{ "readOnly" }}@endif>@if( isset( $queueData) + ){{ $queueData->queueDescription }}@endif</textarea> </div> <div class="form-group"> <label class="control-label">Queue Max Run Time @@ -9,27 +10,32 @@ </label> <input type="number" min="0" class="form-control" value="@if( isset( $queueData) ){{ $queueData->maxRunTime }}@endif" maxlength="30" name="qmaxruntime" - placeholder="Queue Max Run Time"/> + placeholder="Queue Max Run Time" + @if( isset( $readOnly)){{ "readOnly" }}@endif/> </div> <div class="form-group"> <label class="control-label">Queue Max Nodes</label> <input type="number" min="0" class="form-control" value="@if( isset( $queueData) ){{ $queueData->maxNodes }}@endif" - maxlength="30" name="qmaxnodes" placeholder="Queue Max Nodes"/> + maxlength="30" name="qmaxnodes" placeholder="Queue Max Nodes" + @if( isset( $readOnly)){{ "readOnly" }}@endif/> </div> <div class="form-group"> <label class="control-label">Queue Max Processors</label> <input type="number" min="0" class="form-control" value="@if( isset( $queueData) ){{ $queueData->maxProcessors }}@endif" maxlength="30" name="qmaxprocessors" - placeholder="Queue Max Processors"/> + placeholder="Queue Max Processors" + @if( isset( $readOnly)){{ "readOnly" }}@endif/> </div> <div class="form-group"> <label class="control-label">Max Jobs in Queue</label> <input type="number" min="0" class="form-control" value="@if( isset( $queueData) ){{ $queueData->maxJobsInQueue }}@endif" maxlength="30" name="qmaxjobsinqueue" - placeholder="Max Jobs In Queue"/> + placeholder="Max Jobs In Queue" + @if( isset( $readOnly)){{ "readOnly" }}@endif/> </div> <div class="form-group"> <label class="control-label">Max Memory For Queue( In MB )</label> <input type="number" min="0" class="form-control" value="@if( isset( $queueData) ){{ $queueData->maxMemory }}@endif" - maxlength="30" name="qmaxmemoryinqueue" placeholder="Max Memory For Queue"/> + maxlength="30" name="qmaxmemoryinqueue" placeholder="Max Memory For Queue" + @if( isset( $readOnly)){{ "readOnly" }}@endif/> </div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/844ce86c/app/views/resource/browse.blade.php ---------------------------------------------------------------------- diff --git a/app/views/resource/browse.blade.php b/app/views/resource/browse.blade.php index d50e359..d163490 100644 --- a/app/views/resource/browse.blade.php +++ b/app/views/resource/browse.blade.php @@ -50,8 +50,8 @@ </a> </td> <td> - <a class="view-cr" href="#"> <!-- {{URL::to('/')}}/cr/summary?crId={{ $crId }}"> --> - <span class="glyphicon glyphicon-list"></span> + <a href="{{URL::to('/')}}/cr/view?crId={{ $crId }}" title="Edit"> + <span class="glyphicon glyphicon-list"></span> </a> </td> <td> @@ -104,9 +104,6 @@ @section('scripts') @parent <script type="text/javascript"> - $(".view-cr").click(function () { - alert("The functionality to view a Compute Resource is under construction."); - }); $('.filterinput').keyup(function () { var value = $(this).val(); if (value.length > 0) { http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/844ce86c/app/views/resource/view.blade.php ---------------------------------------------------------------------- diff --git a/app/views/resource/view.blade.php b/app/views/resource/view.blade.php new file mode 100644 index 0000000..cb1e5f9 --- /dev/null +++ b/app/views/resource/view.blade.php @@ -0,0 +1,371 @@ +@extends('layout.basic') + +@section('page-header') +@parent +{{ HTML::style('css/style.css') }} +@stop + +@section('content') + +<div class="container"> +<div class="col-md-offset-2 col-md-8"> + +<input type="hidden" class="base-url" value="{{URL::to('/')}}"/> + +<div class="well"> + <h4>Compute Resource : {{ $computeResource->hostName }} + <div class="pull-right"> + <a href="{{URL::to('/')}}/cr/edit?crId={{Input::get('crId') }}" title="Edit"> + <span class="glyphicon glyphicon-pencil"></span> + </a> + </div> + </h4> +</div> +@if( Session::has("message")) +<span class="alert alert-success col-md-12">{{Session::get("message")}}</span> +{{Session::forget("message") }} +@endif + +<div class="col-md-12"> + <ul class="nav nav-tabs nav-justified" id="tabs" role="tablist"> + <li class="active"><a href="#tab-desc" data-toggle="tab">Description</a></li> + <li><a href="#tab-queues" data-toggle="tab">Queues</a></a></li> + <li><a href="#tab-filesystem" data-toggle="tab">FileSystem</a></li> + <li><a href="#tab-jobSubmission" data-toggle="tab">Job Submission Interfaces</a></li> + <li><a href="#tab-dataMovement" data-toggle="tab">Data Movement Interfaces</a></li> + </ul> +</div> + +<div class="tab-content"> + +<div class="tab-pane active" id="tab-desc"> + + <form> + <input type="hidden" name="crId" value="{{Input::get('crId') }}"/> + <input type="hidden" name="cr-edit" value="resDesc"/> + + <div class="form-group required"> + <label>Host Name</label> + <input readonly class="form-control hostName" value="{{ $computeResource->hostName }}"/> + </div> + <div class="form-group"> + @if( count( $computeResource->hostAliases) ) + <label>Host Aliases</label> + @foreach( $computeResource->hostAliases as $hostAlias ) + <input readonly class="form-control" value="{{$hostAlias}}" maxlength="30" name="hostaliases[]"/> + @endforeach + @endif + </div> + <div class="form-group"> + @if( count( $computeResource->ipAddresses)) + <label class="control-label">IP Addresses</label> + @foreach( $computeResource->ipAddresses as $ip ) + <input readonly class="form-control" value="{{ $ip }}" maxlength="30" name="ips[]"/> + @endforeach + @endif + </div> + <div class="form-group"> + <label class="control-label">Resource Description</label> + <textarea readonly class="form-control" maxlength="255" name="description">{{ + $computeResource->resourceDescription + }}</textarea> + </div> + <div class="form-group"> + <label class="control-label">Maximum Memory Per Node ( In MB )</label> + <input readonly type="number" min="0" class="form-control" value="{{ $computeResource->maxMemoryPerNode }}" + maxlength="30" name="maxMemoryPerNode"/> + </div> + </form> + +</div> + +<div class="tab-pane" id="tab-queues"> + + @if( is_array( $computeResource->batchQueues) ) + <h3>Existing Queues :</h3> + + <div class="panel-group" id="accordion"> + @foreach( $computeResource->batchQueues as $index => $queue) + <div class="panel panel-default"> + <div class="panel-heading"> + <h4 class="panel-title"> + <a class="accordion-toggle collapsed existing-queue-name" data-toggle="collapse" + data-parent="#accordion" href="#collapse-{{$index}}">{{ $queue->queueName }}</a> + </h4> + </div> + <div id="collapse-{{$index}}" class="panel-collapse collapse"> + <div class="panel-body"> + <form> + <div class="queue"> + <div class="form-group required"> + <label>Queue Name + <small> ( cannot be changed.)</small> + </label> + <input class="form-control" value="{{ $queue->queueName }}" maxlength="30" name="qname" + placeholder="Queue Name" readonly/> + </div> + @include('partials/queue-block', array('queueData'=>$queue, 'readOnly'=>true)) + </div> + </form> + </div> + </div> + </div> + @endforeach + </div> + @endif + +</div> + +<div class="tab-pane" id="tab-filesystem"> + + <form role="form"> + <div class="form-group"> + <h3>FileSystem</h3> + @foreach( $fileSystems as $index => $fileSystem) + <label>{{ $fileSystem }}</label> + <input readonly class="form-control" name="fileSystems[{{ $index }}]" placeholder="{{ $fileSystem }}" + value="@if( isset( $computeResource->fileSystems[ $index]) ){{ $computeResource->fileSystems[ $index] }} @endif"/> + @endforeach + </select> + </div> + </form> + +</div> + +<div class="tab-pane" id="tab-jobSubmission"> + <br/><br/><br/><br/> + @if( count( $jobSubmissionInterfaces ) ) + <div class="job-edit-info"> + @foreach( $jobSubmissionInterfaces as $index => $JSI ) + + <div class="job-protocol-block"> + <form role="form"> + <?php $selectedJspIndex = $computeResource->jobSubmissionInterfaces[$index]->jobSubmissionProtocol; ?> + + <h4>Job Submission Protocol : {{ $jobSubmissionProtocols[ $selectedJspIndex] }}</h4> + @if( $selectedJspIndex == $jobSubmissionProtocolsObject::LOCAL) + <div class="select-resource-manager-type"> + <div class="form-group required"> + <label>Selected resource manager type</label> + <select disabled="true" name="resourceJobManagerType" + class="form-control selected-resource-manager" + required="required"> + @foreach( $resourceJobManagerTypes as $index => $rJmT) + <option value="{{ $index }}" + @if( $JSI->resourceJobManager->resourceJobManagerType == $index ) selected @endif >{{ $rJmT + }}</option> + @endforeach + </select> + </div> + <div class="form-group"> + <label class="control-label">Push Monitoring End Point</label> + <input disabled type="text" class="form-control" name="pushMonitoringEndpoint" + value="{{ $JSI->resourceJobManager->pushMonitoringEndpoint }}"/> + </div> + <div class="form-group"> + <label class="control-label">Job Manager Bin Path</label> + <input disabled type="text" class="form-control" name="jobManagerBinPath" + value="{{ $JSI->resourceJobManager->jobManagerBinPath }}"/> + </div> + <div class="form-group"> + <h3>Job Manager Commands</h3> + @foreach( $jobManagerCommands as $index => $jmc) + <label class="control-label">{{ $jmc }}</label> + <input disabled class="form-control" name="jobManagerCommands[{{ $index }}]" + placeholder="{{ $jmc }}" + value="@if( isset( $JSI->resourceJobManager->jobManagerCommands[$index] ) ) {{ $JSI->resourceJobManager->jobManagerCommands[$index] }} @endif"/> + @endforeach + </select> + </div> + </div> + @elseif( $selectedJspIndex == $jobSubmissionProtocolsObject::SSH) + <div class="form-group required"> + <label>Selected Security Protocol</label> + <select disabled="true" name="securityProtocol" required="required"> + @foreach( $securityProtocols as $index => $sp) + <option value="{{ $index }}" + @if( $JSI->securityProtocol == $index ) selected @endif>{{ $sp }}</option> + @endforeach + </select> + </div> + + <div class="form-group"> + <label class="control-label">Alternate SSH Host Name</label> + <input readonly class='form-control' name='alternativeSSHHostName' + value="{{ $JSI->alternativeSSHHostName}}"/> + </div> + <div class="form-group"> + <label class="control-label">SSH Port</label> + <input readonly class='form-control' name='sshPort' value="{{ $JSI->sshPort }}"/> + </div> + + <div class="form-group required"> + <label>Selected Monitoring Mode</label> + <select disabled="true" name="monitorMode" required> + @foreach( $monitorModes as $index => $mode) + <option value="{{ $index }}" + @if( $JSI->monitorMode == $index ) selected @endif>{{ $mode}}</option> + @endforeach + </select> + </div> + + <div class="form-group"> + <div class="select-resource-manager-type"> + <div class="form-group required"> + <label>Selected resource manager type</label> + <select disabled="true" name="resourceJobManagerType" + class="form-control selected-resource-manager" + required="required"> + @foreach( $resourceJobManagerTypes as $index => $rJmT) + <option value="{{ $index }}" + @if( $JSI->resourceJobManager->resourceJobManagerType == $index ) selected @endif >{{ + $rJmT }}</option> + @endforeach + </select> + </div> + <div class="form-group"> + <label class="control-label">Push Monitoring End Point</label> + <input disabled type="text" class="form-control" name="pushMonitoringEndpoint" + value="{{ $JSI->resourceJobManager->pushMonitoringEndpoint }}"/> + </div> + <div class="form-group"> + <label class="control-label">Job Manager Bin Path</label> + <input disabled type="text" class="form-control" name="jobManagerBinPath" + value="{{ $JSI->resourceJobManager->jobManagerBinPath }}"/> + </div> + <div class="form-group"> + <h3>Job Manager Commands</h3> + @foreach( $jobManagerCommands as $index => $jmc) + <label class="control-label">{{ $jmc }}</label> + <input disabled class="form-control" name="jobManagerCommands[{{ $index }}]" + placeholder="{{ $jmc }}" + value="@if( isset( $JSI->resourceJobManager->jobManagerCommands[$index] ) ) {{ $JSI->resourceJobManager->jobManagerCommands[$index] }} @endif"/> + @endforeach + </div> + </div> + </div> + + @elseif( $selectedJspIndex == $jobSubmissionProtocolsObject::UNICORE) + <div class="form-group required"> + <label>Selected Security Protocol</label> + <select disabled="true" name="securityProtocol" required="required"> + @foreach( $securityProtocols as $index => $sp) + <option value="{{ $index }}" + @if( $JSI->securityProtocol == $index ) selected @endif>{{ $sp }}</option> + @endforeach + </select> + </div> + <div class="form-group"> + <label class="form-label">Unicore End Point URL</label> + <input readonly class='form-control' name='unicoreEndPointURL' + value="{{ $JSI->unicoreEndPointURL }}"/> + </div> + @endif + </form> + + </div> + @endforeach + </div> + @endif + + <div class="select-job-protocol hide"> + <form> + <div class="form-group"> + <label class="control-label">Job Submission Protocol:</label> + <select disabled="true" name="jobSubmissionProtocol" class="form-control selected-job-protocol" + required="required"> + <option></option> + @foreach( $jobSubmissionProtocols as $index => $jobSubmissionProtocol) + @if( ! in_array( $index, $addedJSP)) + <option value="{{ $index }}">{{ $jobSubmissionProtocol }}</option> + @endif + @endforeach + </select> + </div> + </form> + </div> + +</div> + +<div class="tab-pane" id="tab-dataMovement"> + @if( count( $dataMovementInterfaces ) ) + <div class="job-edit-info"> + <br/><br/><br/> + @foreach( $dataMovementInterfaces as $index => $DMI ) + <div class="data-movement-block"> + <form> + <?php $selectedDMIIndex = $computeResource->dataMovementInterfaces[$index]->dataMovementProtocol; ?> + <h4>Data Movement Protocol : {{ $dataMovementProtocols[ $selectedDMIIndex] }}</h4> + @if( $selectedDMIIndex == $dataMovementProtocolsObject::LOCAL) + <!-- Nothing here on local UI --> + @elseif( $selectedDMIIndex == $dataMovementProtocolsObject::SCP) + <div class="form-group"> + <label class="control-label">Selected Security Protocol</label> + <select disabled="true" name="securityProtocol"> + @foreach( $securityProtocols as $index => $sp) + <option value="{{ $index }}" + @if( $DMI->securityProtocol == $index ) selected @endif>{{ $sp }}</option> + @endforeach + </select> + </div> + <div class="form-group"> + <label class="control-label">Alternate SSH Host Name</label> + <input readonly class='form-control' name='alternativeSSHHostName' + value="{{ $DMI->alternativeSCPHostName }}"/> + </div> + <div class="form-group"> + <label class="control-label">SSH Port</label> + <input readonly class='form-control' name='sshPort' value="{{ $DMI->sshPort }}"/> + </div> + @elseif( $selectedDMIIndex == $dataMovementProtocolsObject::GridFTP) + <div class="form-group"> + <label class="control-label">Select Security Protocol</label> + <select disabled="true" name="securityProtocol"> + @foreach( $securityProtocols as $index => $sp) + <option value="{{ $index }}" + @if( $DMI->securityProtocol == $index ) selected @endif>{{ $sp }}</option> + @endforeach + </select> + + <div> + <div class="form-group required"> + <label class="control-label">Grid FTP End Points</label> + @foreach( $DMI->gridFTPEndPoints as $endPoint) + <input readonly class="form-control" maxlength="30" name="gridFTPEndPoints[]" + required="required" + value="{{$endPoint}}"/> + @endforeach + </div> + </div> + </div> + @elseif( $selectedDMIIndex == $dataMovementProtocolsObject::UNICORE_STORAGE_SERVICE) + <div class="form-group"> + <label class="control-label">Select Security Protocol</label> + <select disabled="true" name="securityProtocol"> + @foreach( $securityProtocols as $index => $sp) + <option value="{{ $index }}" + @if( $DMI->securityProtocol == $index ) selected @endif>{{ $sp }}</option> + @endforeach + </select> + + <div> + <div class="form-group required"> + <label class="control-label">Unicore End Point URL</label> + <input readonly class="form-control" maxlength="30" name="unicoreEndPointURL" + required="required" + value="{{ $DMI->unicoreEndPointURL }}"/> + </div> + </div> + </div> + @endif + </form> + </div> + @endforeach + </div> + @endif +</div> + +</div> +</div> + +@stop \ No newline at end of file
