app/libraries/CRUtilities.php (541 lines of code) (raw):

<?php //Airavata classes - loaded from app/libraries/Airavata //Compute Resource classes use Airavata\Model\AppCatalog\ComputeResource\BatchQueue; use Airavata\Model\AppCatalog\ComputeResource\ComputeResourceDescription; use Airavata\Model\Data\Movement\DataMovementProtocol; use Airavata\Model\AppCatalog\ComputeResource\FileSystems; use Airavata\Model\Data\Movement\GridFTPDataMovement; use Airavata\Model\AppCatalog\ComputeResource\JobManagerCommand; use Airavata\Model\AppCatalog\ComputeResource\JobSubmissionProtocol; use Airavata\Model\Data\Movement\LOCALDataMovement; use Airavata\Model\Data\Movement\DMType; use Airavata\Model\AppCatalog\ComputeResource\LOCALSubmission; use Airavata\Model\AppCatalog\ComputeResource\MonitorMode; use Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager; use Airavata\Model\AppCatalog\ComputeResource\ResourceJobManagerType; use Airavata\Model\Data\Movement\SCPDataMovement; use Airavata\Model\Data\Movement\SecurityProtocol; use Airavata\Model\AppCatalog\ComputeResource\SSHJobSubmission; use Airavata\Model\Data\Movement\UnicoreDataMovement; use Airavata\Model\AppCatalog\ComputeResource\UnicoreJobSubmission; use Airavata\Model\AppCatalog\ComputeResource\CloudJobSubmission; use Airavata\Model\AppCatalog\ComputeResource\ProviderName; use Airavata\Model\AppCatalog\GatewayProfile\ComputeResourcePreference; use Airavata\Model\AppCatalog\GatewayProfile\GatewayResourceProfile; use Airavata\Model\AppCatalog\Parallelism\ApplicationParallelismType; //Gateway Classes class CRUtilities { /** * Basic utility functions */ //define('ROOT_DIR', __DIR__); /** * Define configuration constants */ public static function register_or_update_compute_resource($computeDescription, $update = false) { if ($update) { $computeResourceId = $computeDescription->computeResourceId; if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { if (Cache::has('CR-' . $computeResourceId)) { Cache::forget('CR-' . $computeResourceId); } } if (Airavata::updateComputeResource(Session::get('authz-token'), $computeResourceId, $computeDescription)) { $computeResource = Airavata::getComputeResource(Session::get('authz-token'), $computeResourceId); return $computeResource; } else print_r("Something went wrong while updating!"); exit; } else { /* $fileSystems = new FileSystems(); foreach( $fileSystems as $fileSystem) $computeDescription["fileSystems"][$fileSystem] = ""; */ $cd = new ComputeResourceDescription($computeDescription); $computeResourceId = Airavata::registerComputeResource(Session::get('authz-token'), $cd); } $computeResource = Airavata::getComputeResource(Session::get('authz-token'), $computeResourceId); return $computeResource; } /* * Getting data for Compute resource inputs */ public static function getEditCRData() { $files = new FileSystems(); $jsp = new JobSubmissionProtocol(); $rjmt = new ResourceJobManagerType(); $sp = new SecurityProtocol(); $dmp = new DataMovementProtocol(); $jmc = new JobManagerCommand(); $mm = new MonitorMode(); $pt = new ApplicationParallelismType(); $pn = new ProviderName(); return array( "fileSystemsObject" => $files, "fileSystems" => $files::$__names, "jobSubmissionProtocolsObject" => $jsp, "jobSubmissionProtocols" => $jsp::$__names, "resourceJobManagerTypesObject" => $rjmt, "resourceJobManagerTypes" => $rjmt::$__names, "securityProtocolsObject" => $sp, "securityProtocols" => $sp::$__names, "dataMovementProtocolsObject" => $dmp, "dataMovementProtocols" => $dmp::$__names, "jobManagerCommands" => $jmc::$__names, "monitorModes" => $mm::$__names, "parallelismTypes" => $pt::$__names, "providerNames" => $pn::$__names ); } public static function createQueueObject($queue) { $queueObject = new BatchQueue($queue); return $queueObject; } public static function deleteQueue($computeResourceId, $queueName) { if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { if (Cache::has('CR-' . $computeResourceId)) { Cache::forget('CR-' . $computeResourceId); } } Airavata::deleteBatchQueue(Session::get('authz-token'), $computeResourceId, $queueName); } /* * Creating Job Submission Interface. */ public static function create_or_update_JSIObject($inputs, $update = false) { $computeResource = CRUtilities::get_compute_resource($inputs["crId"]); if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { if (Cache::has('CR-' . $inputs["crId"])) { Cache::forget('CR-' . $inputs["crId"]); } } $jsiId = null; if (isset($inputs["jsiId"])) $jsiId = $inputs["jsiId"]; if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::LOCAL) { //print_r( $jsiObject->resourceJobManager->resourceJobManagerId); $resourceManager = new ResourceJobManager(array( "resourceJobManagerType" => $inputs["resourceJobManagerType"], "pushMonitoringEndpoint" => $inputs["pushMonitoringEndpoint"], "jobManagerBinPath" => $inputs["jobManagerBinPath"], "jobManagerCommands" => $inputs["jobManagerCommands"], "parallelismPrefix" => $inputs["parallelismPrefix"] )); //$rmId = $jsiObject->resourceJobManager->resourceJobManagerId; //$rm = $airavataclient->updateResourceJobManager($rmId, $resourceManager); //print_r( $rm); exit; $localJobSubmission = new LOCALSubmission(array( "securityProtocol" => SecurityProtocol::LOCAL, "resourceJobManager" => $resourceManager ) ); if ($update) //update Local JSP { $jsiObject = Airavata::getLocalJobSubmission(Session::get('authz-token'), $jsiId); $localSub = Airavata::updateResourceJobManager(Session::get('authz-token'), $jsiObject->resourceJobManager->resourceJobManagerId, $resourceManager); //$localSub = $airavataclient->updateLocalSubmissionDetails( $jsiId, $localJobSubmission); } else // create Local JSP { $localSub = Airavata::addLocalSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $localJobSubmission); return $localSub; } } else if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::SSH) { $resourceManager = new ResourceJobManager(array( "resourceJobManagerType" => $inputs["resourceJobManagerType"], "pushMonitoringEndpoint" => $inputs["pushMonitoringEndpoint"], "jobManagerBinPath" => $inputs["jobManagerBinPath"], "jobManagerCommands" => $inputs["jobManagerCommands"], "parallelismPrefix" => $inputs["parallelismPrefix"] )); $sshJobSubmission = new SSHJobSubmission(array ( "securityProtocol" => intval($inputs["securityProtocol"]), "resourceJobManager" => $resourceManager, "alternativeSSHHostName" => $inputs["alternativeSSHHostName"], "sshPort" => intval($inputs["sshPort"]), "monitorMode" => MonitorMode::JOB_EMAIL_NOTIFICATION_MONITOR ) ); //var_dump( $sshJobSubmission); exit; if ($update) //update Local JSP { $jsiObject = Airavata::getSSHJobSubmission(Session::get('authz-token'), $jsiId); //first update resource job manager $rmjId = $jsiObject->resourceJobManager->resourceJobManagerId; Airavata::updateResourceJobManager(Session::get('authz-token'), $rmjId, $resourceManager); $jsiObject = Airavata::getSSHJobSubmission(Session::get('authz-token'), $jsiId); $jsiObject->securityProtocol = intval($inputs["securityProtocol"]); $jsiObject->alternativeSSHHostName = $inputs["alternativeSSHHostName"]; $jsiObject->sshPort = intval($inputs["sshPort"]); $jsiObject->monitorMode = intval($inputs["monitorMode"]); $jsiObject->resourceJobManager = Airavata::getresourceJobManager(Session::get('authz-token'), $rmjId); //var_dump( $jsiObject); exit; //add updated resource job manager to ssh job submission object. //$sshJobSubmission->resourceJobManager->resourceJobManagerId = $rmjId; $localSub = Airavata::updateSSHJobSubmissionDetails(Session::get('authz-token'), $jsiId, $jsiObject); } else { $sshSub = Airavata::addSSHJobSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $sshJobSubmission); } return; } else if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::SSH_FORK) { $resourceManager = new ResourceJobManager(array( "resourceJobManagerType" => $inputs["resourceJobManagerType"], "pushMonitoringEndpoint" => $inputs["pushMonitoringEndpoint"], "jobManagerBinPath" => $inputs["jobManagerBinPath"], "jobManagerCommands" => $inputs["jobManagerCommands"], "parallelismPrefix" => $inputs["parallelismPrefix"] )); $sshJobSubmission = new SSHJobSubmission(array ( "securityProtocol" => intval($inputs["securityProtocol"]), "resourceJobManager" => $resourceManager, "alternativeSSHHostName" => $inputs["alternativeSSHHostName"], "sshPort" => intval($inputs["sshPort"]), "monitorMode" => MonitorMode::FORK ) ); //var_dump( $sshJobSubmission); exit; if ($update) //update Local JSP { $jsiObject = Airavata::getSSHJobSubmission(Session::get('authz-token'), $jsiId); //first update resource job manager $rmjId = $jsiObject->resourceJobManager->resourceJobManagerId; Airavata::updateResourceJobManager(Session::get('authz-token'), $rmjId, $resourceManager); $jsiObject = Airavata::getSSHJobSubmission(Session::get('authz-token'), $jsiId); $jsiObject->securityProtocol = intval($inputs["securityProtocol"]); $jsiObject->alternativeSSHHostName = $inputs["alternativeSSHHostName"]; $jsiObject->sshPort = intval($inputs["sshPort"]); $jsiObject->monitorMode = intval($inputs["monitorMode"]); $jsiObject->resourceJobManager = Airavata::getresourceJobManager(Session::get('authz-token'), $rmjId); //var_dump( $jsiObject); exit; //add updated resource job manager to ssh job submission object. //$sshJobSubmission->resourceJobManager->resourceJobManagerId = $rmjId; $localSub = Airavata::updateSSHJobSubmissionDetails(Session::get('authz-token'), $jsiId, $jsiObject); } else { $sshSub = Airavata::addSSHForkJobSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $sshJobSubmission); } return; } else if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::UNICORE) { $unicoreJobSubmission = new UnicoreJobSubmission(array ( "securityProtocol" => intval($inputs["securityProtocol"]), "unicoreEndPointURL" => $inputs["unicoreEndPointURL"] ) ); if ($update) { $jsiObject = Airavata::getUnicoreJobSubmission(Session::get('authz-token'), $jsiId); $jsiObject->securityProtocol = intval($inputs["securityProtocol"]); $jsiObject->unicoreEndPointURL = $inputs["unicoreEndPointURL"]; $unicoreSub = Airavata::updateUnicoreJobSubmissionDetails(Session::get('authz-token'), $jsiId, $jsiObject); } else { $unicoreSub = Airavata::addUNICOREJobSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $unicoreJobSubmission); } return; } else if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::CLOUD) { $cloudJobSubmission = new CloudJobSubmission(array ( "securityProtocol" => intval($inputs["securityProtocol"]), "nodeId" => $inputs["nodeId"], "executableType" => $inputs["executableType"], "providerName" => intval( $inputs["providerName"]), "userAccountName" => $inputs["userAccountName"] ) ); if ($update) { $jsiObject = Airavata::getCloudJobSubmission(Session::get('authz-token'), $jsiId); $jsiObject->securityProtocol = intval($inputs["securityProtocol"]); $jsiObject->nodeId = $inputs["nodeId"]; $jsiObject->executableType = $inputs["executableType"]; $jsiObject->providerName = intval( $inputs["providerName"]); $jsiObject->userAccountName = $inputs["userAccountName"]; $cloudSub = Airavata::updateCloudJobSubmissionDetails(Session::get('authz-token'), $jsiId, $jsiObject); } else { $cloudSub = Airavata::addCloudJobSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $cloudJobSubmission); } return; } else /* Globus does not work currently */ { print_r("Whoops! We haven't coded for this Job Submission Protocol yet. Still working on it. Please click <a href='" . URL::to('/') . "/cr/edit'>here</a> to go back to edit page for compute resource."); } } /* * Creating Data Movement Interface Object. */ public static function create_or_update_DMIObject($inputs, $update = false) { $computeResource = CRUtilities::get_compute_resource($inputs["crId"]); if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { if (Cache::has('CR-' . $inputs["crId"])) { Cache::forget('CR-' . $inputs["crId"]); } } if ($inputs["dataMovementProtocol"] == DataMovementProtocol::LOCAL) /* LOCAL */ { $localDataMovement = new LOCALDataMovement(); $localdmp = Airavata::addLocalDataMovementDetails(Session::get('authz-token'), $computeResource->computeResourceId, DMType::COMPUTE_RESOURCE, 0, $localDataMovement); if ($localdmp) print_r("The Local Data Movement has been added. Edit UI for the Local Data Movement Interface is yet to be made. Please click <a href='" . URL::to('/') . "/cr/edit'>here</a> to go back to edit page for compute resource."); } else if ($inputs["dataMovementProtocol"] == DataMovementProtocol::SCP) /* SCP */ { //var_dump( $inputs); exit; $scpDataMovement = new SCPDataMovement(array( "securityProtocol" => intval($inputs["securityProtocol"]), "alternativeSCPHostName" => $inputs["alternativeSSHHostName"], "sshPort" => intval($inputs["sshPort"]) ) ); if ($update) $scpdmp = Airavata::updateSCPDataMovementDetails(Session::get('authz-token'), $inputs["dmiId"], $scpDataMovement); else $scpdmp = Airavata::addSCPDataMovementDetails(Session::get('authz-token'), $computeResource->computeResourceId, DMType::COMPUTE_RESOURCE, 0, $scpDataMovement); } else if ($inputs["dataMovementProtocol"] == DataMovementProtocol::GridFTP) /* GridFTP */ { $gridFTPDataMovement = new GridFTPDataMovement(array( "securityProtocol" => $inputs["securityProtocol"], "gridFTPEndPoints" => $inputs["gridFTPEndPoints"] )); if ($update) $gridftpdmp = Airavata::updateGridFTPDataMovementDetails(Session::get('authz-token'), $inputs["dmiId"], $gridFTPDataMovement); else $gridftpdmp = Airavata::addGridFTPDataMovementDetails(Session::get('authz-token'), $computeResource->computeResourceId, DMType::COMPUTE_RESOURCE, 0, $gridFTPDataMovement); } else if ($inputs["dataMovementProtocol"] == DataMovementProtocol::UNICORE_STORAGE_SERVICE) /* Unicore Storage Service */ { $unicoreDataMovement = new UnicoreDataMovement(array ( "securityProtocol" => intval($inputs["securityProtocol"]), "unicoreEndPointURL" => $inputs["unicoreEndPointURL"] ) ); if ($update) $unicoredmp = Airavata::updateUnicoreDataMovementDetails(Session::get('authz-token'), $inputs["dmiId"], $unicoreDataMovement); else $unicoredmp = Airavata::addUnicoreDataMovementDetails(Session::get('authz-token'), $computeResource->computeResourceId, DMType::COMPUTE_RESOURCE, 0, $unicoreDataMovement); } else /* other data movement protocols */ { print_r("Whoops! We haven't coded for this Data Movement Protocol yet. Still working on it. Please click <a href='" . URL::to('/') . "/cr/edit'>here</a> to go back to edit page for compute resource."); } } public static function getAllCRObjects($onlyName = false) { $crNames = Airavata::getAllComputeResourceNames(Session::get('authz-token')); if ($onlyName) return $crNames; else { $crObjects = array(); foreach ($crNames as $id => $crName) { array_push($crObjects, Airavata::getComputeResource(Session::get('authz-token'), $id)); } return $crObjects; } } public static function getBrowseCRData($onlyNames) { $appDeployments = Airavata::getAllApplicationDeployments(Session::get('authz-token'), Session::get("gateway_id")); return array('crObjects' => CRUtilities::getAllCRObjects($onlyNames), 'appDeployments' => $appDeployments ); } public static function getJobSubmissionDetails($jobSubmissionInterfaceId, $jsp) { //jsp = job submission protocol type if ($jsp == JobSubmissionProtocol::LOCAL) return Airavata::getLocalJobSubmission(Session::get('authz-token'), $jobSubmissionInterfaceId); else if ($jsp == JobSubmissionProtocol::SSH || $jsp == JobSubmissionProtocol::SSH_FORK) return Airavata::getSSHJobSubmission(Session::get('authz-token'), $jobSubmissionInterfaceId); else if ($jsp == JobSubmissionProtocol::UNICORE) return Airavata::getUnicoreJobSubmission(Session::get('authz-token'), $jobSubmissionInterfaceId); else if ($jsp == JobSubmissionProtocol::CLOUD) return Airavata::getCloudJobSubmission(Session::get('authz-token'), $jobSubmissionInterfaceId); //globus get function not present ?? } public static function getDataMovementDetails($dataMovementInterfaceId, $dmi) { //jsp = job submission protocol type if ($dmi == DataMovementProtocol::LOCAL) return Airavata::getLocalDataMovement(Session::get('authz-token'), $dataMovementInterfaceId); else if ($dmi == DataMovementProtocol::SCP) return Airavata::getSCPDataMovement(Session::get('authz-token'), $dataMovementInterfaceId); else if ($dmi == DataMovementProtocol::GridFTP) return Airavata::getGridFTPDataMovement(Session::get('authz-token'), $dataMovementInterfaceId); else if ($dmi == DataMovementProtocol::UNICORE_STORAGE_SERVICE) return Airavata::getUnicoreDataMovement(Session::get('authz-token'), $dataMovementInterfaceId); /* else if( $dmi == JobSubmissionProtocol::CLOUD) return $airavataclient->getCloudJobSubmission( $dataMovementInterfaceId); */ //globus get function not present ?? } public static function deleteActions($inputs) { if (isset($inputs["crId"])) { if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { if (Cache::has('CR-' . $inputs["crId"])) { Cache::forget('CR-' . $inputs["crId"]); } } } elseif (isset($inputs["del-crId"])) { if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { if (Cache::has('CR-' . $inputs["del-crId"])) { Cache::forget('CR-' . $inputs["del-crId"]); } } } if (isset($inputs["jsiId"])) if (Airavata::deleteJobSubmissionInterface(Session::get('authz-token'), $inputs["crId"], $inputs["jsiId"])) return 1; else return 0; else if (isset($inputs["dmiId"])) if (Airavata::deleteDataMovementInterface(Session::get('authz-token'), $inputs["crId"], $inputs["dmiId"], 0)) return 1; else return 0; elseif (isset($inputs["del-crId"])) if (Airavata::deleteComputeResource(Session::get('authz-token'), $inputs["del-crId"])) return 1; else return 0; } public static function create_or_update_gateway_profile($inputs, $update = false) { $computeResourcePreferences = array(); if (isset($input["crPreferences"])) $computeResourcePreferences = $input["crPreferences"]; $gatewayProfile = new GatewayResourceProfile(array( "gatewayName" => $inputs["gatewayName"], "gatewayDescription" => $inputs["gatewayDescription"], "computeResourcePreferences" => $computeResourcePreferences ) ); if ($update) { $gatewayProfile = new GatewayResourceProfile(array( "gatewayName" => $inputs["gatewayName"], "gatewayDescription" => $inputs["gatewayDescription"] ) ); $gatewayProfileId = Airavata::updateGatewayResourceProfile(Session::get('authz-token'), $inputs["edit-gpId"], $gatewayProfile); } else $gatewayProfileId = Airavata::registerGatewayResourceProfile(Session::get('authz-token'), $gatewayProfile); } public static function getAllGatewayProfilesData() { $selectedCRs = array(); $selectedSRs = array(); $allCRs = CRUtilities::getAllCRObjects(); $allSRs = SRUtilities::getAllSRObjects(); $allCRArray = array(); $allSRArray = array(); $gateways = CRUtilities::getAllGateways(); 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"); foreach ($gateways as $key => $gw) { $gateways[$key]->profile = array(); foreach ((array)$gatewayProfiles as $index => $gp) { if ($gw->gatewayId == $gp->gatewayID) { foreach ((array)$gp->computeResourcePreferences as $i => $crp) { $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 = $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")) $selectedSRs[] = $srp->storageResourceId; } $gateways[$key]->profile = $gatewayProfiles[$index]; } } } //var_dump( $gatewayProfiles[0]->computeResourcePreferences[0]->crDetails); exit; $gatewaysInfo = array( "gateways" =>$gateways, "selectedCRs" => $selectedCRs, "selectedSRs" => $selectedSRs, "allCRs" => $allCRs, "allSRs" => $allSRs, "gatewayApprovalStatuses" => AdminUtilities::get_gateway_approval_statuses() ); return $gatewaysInfo; } public static function getAllGateways() { if (Session::has("super-admin")){ $gateways = TenantProfileService::getAllGateways(Session::get('authz-token')); //sort with creation time usort($gateways, CommonUtilities::arrSortObjsByKey('requestCreationTime', 'ASC')); } else { $gateways[0] = Airavata::getGateway(Session::get('authz-token'), Session::get("gateway_id")); } return $gateways; } public static function getGatewayResourceProfile() { return Airavata::getGatewayResourceProfile( Session::get('authz-token'), Session::get("gateway_id")); } public static function updateGatewayProfile( $data){ $gatewayResourceProfile = Airavata::getGatewayResourceProfile( Session::get('authz-token'), $data["gateway_id"]); $gatewayResourceProfile->credentialStoreToken = $data["cst"]; return Airavata::updateGatewayResourceProfile( Session::get('authz-token'), $data["gateway_id"], $gatewayResourceProfile); } public static function add_or_update_CRP($inputs) { $inputs = Input::all(); if( $inputs["reservationStartTime"] != "") $inputs["reservationStartTime"] = CommonUtilities::convertLocalToUTC(strtotime($inputs["reservationStartTime"])) * 1000; if( $inputs["reservationEndTime"] != "") $inputs["reservationEndTime"] = CommonUtilities::convertLocalToUTC(strtotime($inputs["reservationEndTime"])) * 1000; $computeResourcePreferences = new computeResourcePreference($inputs); if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { if (Cache::has('CR-' . $inputs["computeResourceId"])) { Cache::forget('CR-' . $inputs["computeResourceId"]); } } return Airavata::addGatewayComputeResourcePreference(Session::get('authz-token'), $inputs["gatewayId"], $inputs["computeResourceId"], $computeResourcePreferences); } public static function deleteGP($gpId) { return Airavata::deleteGatewayResourceProfile(Session::get('authz-token'), $gpId); } public static function deleteCR($inputs) { if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { $id = $inputs["rem-crId"]; if (Cache::has('CR-' . $id)) { Cache::forget('CR-' . $id); } } return Airavata::deleteGatewayComputeResourcePreference(Session::get('authz-token'), $inputs["gpId"], $inputs["rem-crId"]); } public static function deleteSR($inputs) { if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { $id = $inputs["rem-srId"]; if (Cache::has('SR-' . $id)) { Cache::forget('SR-' . $id); } } return Airavata::deleteGatewayStoragePreference(Session::get('authz-token'), $inputs["gpId"], $inputs["rem-srId"]); } /** * Get the ComputeResourceDescription with the given ID * @param $id * @return null */ public static function get_compute_resource($id) { $computeResource = null; try { if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { if (Cache::has('CR-' . $id)) { return Cache::get('CR-' . $id); } else { $computeResource = Airavata::getComputeResource(Session::get('authz-token'), $id); Cache::put('CR-' . $id, $computeResource, Config::get('pga_config.airavata')['app-catalog-cache-duration']); return $computeResource; } } else { return $computeResource = Airavata::getComputeResource(Session::get('authz-token'), $id); } } catch (InvalidRequestException $ire) { CommonUtilities::print_error_message('<p>There was a problem getting the compute resource. Please try again later or submit a bug report using the link in the Help menu.</p>' . '<p>InvalidRequestException: ' . $ire->getMessage() . '</p>'); } catch (AiravataClientException $ace) { CommonUtilities::print_error_message('<p>There was a problem getting the compute resource. Please try again later or submit a bug report using the link in the Help menu.</p>' . '<p>Airavata Client Exception: ' . $ace->getMessage() . '</p>'); } catch (AiravataSystemException $ase) { CommonUtilities::print_error_message('<p>There was a problem getting the compute resource. Please try again later or submit a bug report using the link in the Help menu.</p>' . '<p>Airavata System Exception: ' . $ase->getMessage() . '</p>'); } } /** * Create a select input and populate it with compute resources * available for the given application ID * @param $applicationId * @param $resourceHostId */ public static function create_compute_resources_select($applicationId, $resourceHostId) { return CRUtilities::get_available_app_interface_compute_resources($applicationId); } /** * Get a list of compute resources available for the given application ID * @param $id * @return null */ public static function get_available_app_interface_compute_resources($id) { $computeResources = null; try { $computeResources = Airavata::getAvailableAppInterfaceComputeResources(Session::get('authz-token'), $id); } catch (InvalidRequestException $ire) { CommonUtilities::print_error_message('<p>There was a problem getting compute resources. Please try again later or submit a bug report using the link in the Help menu.</p>' . '<p>InvalidRequestException: ' . $ire->getMessage() . '</p>'); } catch (AiravataClientException $ace) { CommonUtilities::print_error_message('<p>There was a problem getting compute resources. Please try again later or submit a bug report using the link in the Help menu.</p>' . '<p>Airavata Client Exception: ' . $ace->getMessage() . '</p>'); } catch (AiravataSystemException $ase) { CommonUtilities::print_error_message('<p>There was a problem getting compute resources. Please try again later or submit a bug report using the link in the Help menu.</p>' . '<p>Airavata System Exception: ' . $ase->getMessage() . '</p>'); } return $computeResources; } /** * Get a list of all Data Storages available * @param null * @return **/ public static function getAllDataStoragePreferences( $gateways){ $dspArray = array(); foreach( $gateways as $gateway){ $dspArray[] = Airavata::getAllGatewayDataStoragePreferences( Session::get('authz-token'), $gateway->gatewayId); } return $dspArray; } } ?>