blob: 8a815a13185c963513b33885b41aaed8f40ed59d [file] [log] [blame]
<?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;
}
}
?>