| <?php |
| |
| |
| //Airavata classes - loaded from app/libraries/Airavata |
| //Compute Resource classes |
| use Airavata\Model\Data\Movement\DataMovementProtocol; |
| use Airavata\Model\AppCatalog\StorageResource\StorageResourceDescription; |
| use Airavata\Model\AppCatalog\GatewayProfile\StoragePreference; |
| use Airavata\Model\AppCatalog\GatewayProfile\GatewayResourceProfile; |
| |
| use Airavata\Model\AppCatalog\ComputeResource\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\MonitorMode; |
| use Airavata\Model\AppCatalog\ComputeResource\ResourceJobManagerType; |
| use Airavata\Model\Data\Movement\SCPDataMovement; |
| use Airavata\Model\Data\Movement\SecurityProtocol; |
| use Airavata\Model\Data\Movement\UnicoreDataMovement; |
| //Gateway Classes |
| |
| |
| class SRUtilities |
| { |
| /** |
| * Basic utility functions |
| */ |
| |
| //define('ROOT_DIR', __DIR__); |
| |
| /** |
| * Define configuration constants |
| */ |
| public static function register_or_update_storage_resource($storageResourceDesc, $update = false) |
| { |
| if ($update) { |
| $storageResourceId = $storageResourceDesc->storageResourceId; |
| |
| if (Airavata::updateStorageResource(Session::get('authz-token'), $storageResourceId, $storageResourceDesc)) { |
| $storageResource = Airavata::getStorageResource(Session::get('authz-token'), $storageResourceId); |
| return $storageResource; |
| } else |
| print_r("Something went wrong while updating!"); |
| exit; |
| } else { |
| $sr = new StorageResourceDescription( $storageResourceDesc); |
| $storageResourceId = Airavata::registerStorageResource(Session::get('authz-token'), $sr); |
| } |
| $storageResource = Airavata::getStorageResource(Session::get('authz-token'), $storageResourceId); |
| return $storageResource; |
| |
| } |
| |
| /* |
| * Getting data for Compute resource inputs |
| */ |
| |
| public static function getEditSRData() |
| { |
| $rjmt = new ResourceJobManagerType(); |
| $sp = new SecurityProtocol(); |
| $dmp = new DataMovementProtocol(); |
| $jmc = new JobManagerCommand(); |
| $mm = new MonitorMode(); |
| return array( |
| "resourceJobManagerTypesObject" => $rjmt, |
| "resourceJobManagerTypes" => $rjmt::$__names, |
| "securityProtocolsObject" => $sp, |
| "securityProtocols" => $sp::$__names, |
| "dataMovementProtocolsObject" => $dmp, |
| "dataMovementProtocols" => $dmp::$__names, |
| "jobManagerCommands" => $jmc::$__names, |
| "monitorModes" => $mm::$__names |
| ); |
| } |
| |
| /* |
| * Creating Data Movement Interface Object. |
| */ |
| public static function create_or_update_DMIObject($inputs, $update = false) |
| { |
| |
| $storageResource = SRUtilities::get_storage_resource($inputs["srId"]); |
| |
| if ($inputs["dataMovementProtocol"] == DataMovementProtocol::LOCAL) /* LOCAL */ { |
| $localDataMovement = new LOCALDataMovement(); |
| $localdmp = Airavata::addLocalDataMovementDetails(Session::get('authz-token'), $storageResource->storageResourceId, DMType::STORAGE_RESOURCE, 0, $localDataMovement); |
| |
| } else if ($inputs["dataMovementProtocol"] == DataMovementProtocol::SCP) /* SCP */ { |
| $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'), $storageResource->storageResourceId, DMType::STORAGE_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'), $storageResource->storageResourceId, DMType::STORAGE_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'), $storageResource->storageResourceId, DMType::STORAGE_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 getAllSRObjects($onlyName = false) |
| { |
| $srNames = Airavata::getAllStorageResourceNames(Session::get('authz-token')); |
| if ($onlyName) |
| return $srNames; |
| else { |
| $srObjects = array(); |
| foreach ($srNames as $id => $srName) { |
| array_push($srObjects, Airavata::getStorageResource(Session::get('authz-token'), $id)); |
| } |
| return $srObjects; |
| } |
| |
| } |
| |
| public static function getBrowseSRData($onlyNames) |
| { /* |
| $appDeployments = Airavata::getAllApplicationDeployments(Session::get('authz-token'), |
| Session::get("gateway_id")); |
| */ |
| return array('srObjects' => SRUtilities::getAllSRObjects($onlyNames) ); |
| } |
| |
| 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["srId"])) { |
| if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { |
| if (Cache::has('SR-' . $inputs["srId"])) { |
| Cache::forget('SR-' . $inputs["srId"]); |
| } |
| } |
| } elseif (isset($inputs["del-srId"])) { |
| if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { |
| if (Cache::has('SR-' . $inputs["del-srId"])) { |
| Cache::forget('SR-' . $inputs["del-srId"]); |
| } |
| } |
| } |
| if (isset($inputs["jsiId"])) |
| if (Airavata::deleteJobSubmissionInterface(Session::get('authz-token'), $inputs["srId"], $inputs["jsiId"])) |
| return 1; |
| else |
| return 0; |
| else if (isset($inputs["dmiId"])) |
| if (Airavata::deleteDataMovementInterface(Session::get('authz-token'), $inputs["srId"], $inputs["dmiId"], 1)) |
| return 1; |
| else |
| return 0; |
| elseif (isset($inputs["del-srId"])) |
| if (Airavata::deleteStorageResource(Session::get('authz-token'), $inputs["del-srId"])) |
| 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 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_SRP($inputs) |
| { |
| $storagePreference = new StoragePreference($inputs); |
| |
| if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) { |
| if (Cache::has('SR-' . $inputs["storageResourceId"])) { |
| Cache::forget('SR-' . $inputs["storageResourceId"]); |
| } |
| } |
| return Airavata::addGatewayStoragePreference( Session::get('authz-token'), |
| $inputs["gatewayId"], |
| $inputs["storageResourceId"], |
| $storagePreference |
| ); |
| } |
| |
| 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"]); |
| } |
| |
| /** |
| * Get the ComputeResourceDescription with the given ID |
| * @param $id |
| * @return null |
| */ |
| public static function get_storage_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 Airavata::getStorageResource(Session::get('authz-token'), $id); |
| /* |
| } |
| */ |
| |
| } catch (InvalidRequestException $ire) { |
| CommonUtilities::print_error_message('<p>There was a problem getting the storage 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 storage 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 storage 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){ |
| $srpArray = array(); |
| foreach( $gateways as $gateway){ |
| $srpArray[] = Airavata::getAllGatewayDataStoragePreferences( Session::get('authz-token'), $gateway->gatewayId); |
| } |
| return $srpArray; |
| } |
| |
| } |
| |
| ?> |